diff --git a/go.mod b/go.mod index 6eaca49cbf..c336c71529 100644 --- a/go.mod +++ b/go.mod @@ -2,114 +2,70 @@ module github.com/GoogleContainerTools/kaniko go 1.13 +replace ( + github.com/containerd/containerd v1.4.0-0.20191014053712-acdcf13d5eaf => github.com/containerd/containerd v0.0.0-20191014053712-acdcf13d5eaf + github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker v0.0.0-20190319215453-e7b5f7dbe98c + github.com/tonistiigi/fsutil v0.0.0-20190819224149-3d2716dd0a4d => github.com/tonistiigi/fsutil v0.0.0-20191018213012-0f039a052ca1 +) + require ( - cloud.google.com/go v0.25.0 + cloud.google.com/go v0.26.0 github.com/Azure/azure-pipeline-go v0.2.2 // indirect - github.com/Azure/azure-sdk-for-go v19.1.0+incompatible // indirect github.com/Azure/azure-storage-blob-go v0.8.0 - github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect - github.com/Azure/go-autorest v10.15.0+incompatible // indirect - github.com/Microsoft/go-winio v0.4.9 // indirect - github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 // indirect github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 // indirect github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 // indirect github.com/aws/aws-sdk-go v1.25.19 github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 // indirect - github.com/boltdb/bolt v1.3.1 // indirect - github.com/containerd/containerd v1.1.2 // indirect - github.com/containerd/continuity v0.0.0-20180712174259-0377f7d76720 // indirect - github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260 // indirect - github.com/coreos/etcd v3.3.9+incompatible // indirect - github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect - github.com/docker/distribution v2.6.0-rc.1.0.20180720172123-0dae0957e5fe+incompatible // indirect - github.com/docker/docker v1.4.2-0.20180531152204-71cd53e4a197 - github.com/docker/go-connections v0.4.0 // indirect - github.com/docker/go-events v0.0.0-20170721190031-9461782956ad // indirect + github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916 // indirect - github.com/docker/go-units v0.3.3 // indirect github.com/docker/swarmkit v1.12.1-0.20180726190244-7567d47988d8 // indirect github.com/emirpasic/gods v1.9.0 // indirect github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 // indirect - github.com/fsnotify/fsnotify v1.4.7 // indirect github.com/genuinetools/amicontained v0.4.3 - github.com/ghodss/yaml v1.0.0 // indirect github.com/gliderlabs/ssh v0.2.2 // indirect - github.com/gogo/protobuf v1.1.1 // indirect - github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect github.com/golang/mock v1.3.1 - github.com/golang/protobuf v1.1.0 // indirect - github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a // indirect - github.com/google/go-cmp v0.2.0 - github.com/google/go-containerregistry v0.0.0-20190820205713-31e00cede111 + github.com/google/go-cmp v0.3.0 + github.com/google/go-containerregistry v0.0.0-20191218175032-34fb8ff33bed github.com/google/go-github v17.0.0+incompatible github.com/google/go-querystring v1.0.0 // indirect - github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf // indirect github.com/google/martian v2.1.0+incompatible // indirect + github.com/google/uuid v1.0.0 // indirect github.com/googleapis/gax-go v2.0.0+incompatible // indirect - github.com/googleapis/gnostic v0.2.0 // indirect - github.com/gotestyourself/gotestyourself v2.2.0+incompatible // indirect - github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect - github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect - github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa // indirect github.com/hashicorp/go-memdb v0.0.0-20180223233045-1289e7fffe71 // indirect github.com/hashicorp/go-uuid v1.0.1 // indirect - github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect - github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be // indirect github.com/karrick/godirwalk v1.7.7 github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e // indirect github.com/mattn/go-ieproxy v0.0.0-20190805055040-f9202b1cfdeb // indirect github.com/mattn/go-shellwords v1.0.3 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/minio/highwayhash v1.0.0 - github.com/mitchellh/go-homedir v1.0.0 // indirect - github.com/moby/buildkit v0.0.0-20180731175856-e57eed420c75 - github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 // indirect - github.com/opencontainers/go-digest v1.0.0-rc1 // indirect - github.com/opencontainers/image-spec v1.0.1 // indirect - github.com/opencontainers/runc v1.0.0-rc5 // indirect + github.com/moby/buildkit v0.0.0-20191111154543-00bfbab0390c github.com/opencontainers/runtime-spec v1.0.1 // indirect github.com/opencontainers/selinux v1.0.0-rc1 // indirect github.com/opentracing/opentracing-go v1.0.2 // indirect github.com/otiai10/copy v1.0.2 - github.com/pborman/uuid v1.2.0 // indirect github.com/pelletier/go-buffruneio v0.2.0 // indirect - github.com/peterbourgon/diskv v2.0.1+incompatible // indirect - github.com/pkg/errors v0.8.0 + github.com/pkg/errors v0.8.1 github.com/prometheus/client_golang v0.9.0-pre1.0.20180210140205-a40133b69fbd // indirect github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 // indirect github.com/prometheus/common v0.0.0-20180518154759-7600349dcfe1 // indirect - github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273 // indirect github.com/sergi/go-diff v1.0.0 // indirect github.com/sirupsen/logrus v1.4.2 github.com/spf13/afero v1.2.1 - github.com/spf13/cobra v0.0.3 - github.com/spf13/pflag v1.0.1 + github.com/spf13/cobra v0.0.5 + github.com/spf13/pflag v1.0.5 github.com/src-d/gcfg v1.3.0 // indirect - github.com/stretchr/testify v1.4.0 // indirect - github.com/syndtr/gocapability v0.0.0-20180223013746-33e07d32887e // indirect - github.com/tonistiigi/fsutil v0.0.0-20180725061210-b19464cd1b6a // indirect + github.com/tonistiigi/fsutil v0.0.0-20191018213012-0f039a052ca1 // indirect github.com/vbatts/tar-split v0.10.2 // indirect github.com/xanzy/ssh-agent v0.2.0 // indirect go.opencensus.io v0.14.0 // indirect - golang.org/x/net v0.0.0-20190311183353-d8887717615a - golang.org/x/oauth2 v0.0.0-20180724155351-3d292e4d0cdc + golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 + golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be golang.org/x/sync v0.0.0-20190423024810-112230192c58 - golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2 // indirect google.golang.org/api v0.0.0-20180730000901-31ca0e01cd79 // indirect - google.golang.org/appengine v1.1.0 // indirect - google.golang.org/genproto v0.0.0-20180731170733-daca94659cb5 // indirect - google.golang.org/grpc v1.2.1-0.20180320012744-8124abf74e76 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/src-d/go-billy.v4 v4.2.0 // indirect gopkg.in/src-d/go-git-fixtures.v3 v3.5.0 // indirect gopkg.in/src-d/go-git.v4 v4.6.0 gopkg.in/warnings.v0 v0.1.2 // indirect - gotest.tools v2.2.0+incompatible // indirect - k8s.io/api v0.0.0-20180711052118-183f3326a935 // indirect - k8s.io/apimachinery v0.0.0-20180621070125-103fd098999d // indirect - k8s.io/client-go v0.0.0-20180910083459-2cefa64ff137 // indirect - k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a // indirect - k8s.io/kubernetes v1.11.1 // indirect ) diff --git a/go.sum b/go.sum index de01172fbc..294d94fc74 100644 --- a/go.sum +++ b/go.sum @@ -1,62 +1,97 @@ -cloud.google.com/go v0.25.0 h1:6vD6xZTc8Jo6To8gHxFDRVsMvWFDgY3rugNszcDalN8= -cloud.google.com/go v0.25.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.26.0 h1:e0WKqKTd5BnrG8aKH3J3h+QvEIQtSUcf2n5UZ5ZgLtQ= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= github.com/Azure/azure-pipeline-go v0.2.2 h1:6oiIS9yaG6XCCzhgAgKFfIWyo4LLCiDhZot6ltoThhY= github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= -github.com/Azure/azure-sdk-for-go v19.1.0+incompatible h1:ysqLW+tqZjJWOTE74heH/pDRbr4vlN3yV+dqQYgpyxw= -github.com/Azure/azure-sdk-for-go v19.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v19.1.1+incompatible h1:0nNLU6QNN8FGd3FCQa2e8LAtB3THCJ24aOZ4KbA4Jtk= +github.com/Azure/azure-sdk-for-go v19.1.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-storage-blob-go v0.8.0 h1:53qhf0Oxa0nOjgbDeeYPUeyiNmafAFEY95rZLK0Tj6o= github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest v10.15.0+incompatible h1:GqDO/9r+7tmkU8HI/DNLVkeucncU8jCul1DLeTaA3GI= -github.com/Azure/go-autorest v10.15.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Microsoft/go-winio v0.4.9 h1:3RbgqgGVqmcpbOiwrjbVtDHLlJBGF6aE+yHmNtBNsFQ= -github.com/Microsoft/go-winio v0.4.9/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Azure/go-autorest v10.15.5+incompatible h1:vdxx6wM1rVkKt/3niByPVjguoLWkWImOcJNvEykgBzY= +github.com/Azure/go-autorest v10.15.5+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/go-winio v0.4.14 h1:+hMXMk01us9KgxGb7ftKQt2Xpf5hH/yky+TDA+qxleU= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/hcsshim v0.8.5/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7 h1:uSoVVbwJiQipAclBbw+8quDsfcvFjOpI5iCf4p/cqCs= github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs= 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/apache/thrift v0.0.0-20161221203622-b2a4d4ae21c7/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/aws/aws-sdk-go v1.15.90/go.mod h1:es1KtYUFs7le0xQ3rOihkuoVD90z7D0fR2Qm4S00/gU= github.com/aws/aws-sdk-go v1.25.19 h1:sp3xP91qIAVhWufyn9qM6Zhhn6kX06WJQcmhRj7QTXc= github.com/aws/aws-sdk-go v1.25.19/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/containerd/containerd v1.1.2 h1:gojrlFOL/4A5zP4BPgK3YrCaVIgAIHZfqGco/+mfJOs= -github.com/containerd/containerd v1.1.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/continuity v0.0.0-20180712174259-0377f7d76720 h1:T5LkgEMACPq7+VPRnkh51WhyV+Q0waOGGtp37Y82org= -github.com/containerd/continuity v0.0.0-20180712174259-0377f7d76720/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260 h1:XGyg7oTtD0DoRFhbpV6x1WfV0flKC4UxXU7ab1zC08U= -github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/coreos/etcd v3.3.9+incompatible h1:iKSVPXGNGqroBx4+RmUXv8emeU7y+ucRZSzTYgzLZwM= -github.com/coreos/etcd v3.3.9+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/codahale/hdrhistogram v0.0.0-20160425231609-f8ad88b59a58/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/containerd v0.0.0-20191014053712-acdcf13d5eaf h1:juYsQtzJOxIaX5TW/3IU7qlvYU/nALKULBOEdiydFd0= +github.com/containerd/containerd v0.0.0-20191014053712-acdcf13d5eaf/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.2.4/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/continuity v0.0.0-20181001140422-bd77b46c8352/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6 h1:NmTXa/uVnDyp0TY5MKi197+3HWcnYWfnHGyaFthlnGw= +github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/fifo v0.0.0-20190816180239-bda0ff6ed73c h1:KFbqHhDeaHM7IfFtXHfUHMDaUStpM2YwBR+iJCIOsKk= +github.com/containerd/fifo v0.0.0-20190816180239-bda0ff6ed73c/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/go-cni v0.0.0-20190813230227-49fbd9b210f3/go.mod h1:2wlRxCQdiBY+OcjNg5x8kI+5mEL1fGt25L4IzQHYJsM= +github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/coreos/etcd v3.3.10+incompatible h1:jFneRYjIvLMLhDLCzuTuU4rSJUjRplcJQ7pD7MnhC04= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/docker/distribution v2.6.0-rc.1.0.20180720172123-0dae0957e5fe+incompatible h1:8hsJ081BmnqE+fkFjgasY9S8+otMhlWxHcKSYcKzrpk= -github.com/docker/distribution v2.6.0-rc.1.0.20180720172123-0dae0957e5fe+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v1.4.2-0.20180531152204-71cd53e4a197 h1:7X3lPJrEEhoUt1UnISqyUB4phKf9aAKVMdFXD63DJO8= -github.com/docker/docker v1.4.2-0.20180531152204-71cd53e4a197/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/cli v0.0.0-20190321234815-f40f9c240ab0/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017 h1:2HQmlpI3yI9deH18Q6xiSOIjXD4sLI55Y/gfpa8/558= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v2.6.0-rc.1.0.20180327202408-83389a148052+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible h1:dvc1KSkIYTVjZgHf/CTC2diTYC8PzhaA5sFISRfNVrE= +github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v0.0.0-20180531152204-71cd53e4a197/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v0.0.0-20190319215453-e7b5f7dbe98c h1:1Pev8v0EhB6Fbu9FHCLzZD74gJdJk+QVmlbezI6OToM= +github.com/docker/docker v0.0.0-20190319215453-e7b5f7dbe98c/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.0/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/docker-credential-helpers v0.6.3 h1:zI2p9+1NQYdnG6sMU26EX4aVGlqbInSQxQXLvzJ4RPQ= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-events v0.0.0-20170721190031-9461782956ad h1:VXIse57M5C6ezDuCPyq6QmMvEJ2xclYKZ35SfkXdm3E= github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916 h1:yWHOI+vFjEsAakUTSrtqc/SAHrhSkmn48pqjidZX3QA= github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= -github.com/docker/go-units v0.3.3 h1:Xk8S3Xj5sLGlG5g67hJmYMmUgXv5N4PhkjJHHqrwnTk= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.3.1/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libnetwork v0.8.0-dev.2.0.20190604151032-3c26b4e7495e/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8= github.com/docker/swarmkit v1.12.1-0.20180726190244-7567d47988d8 h1:ASmFyV8Sc6XrH1ng0TBPpYLspA8b7qRT84IbrQY1jSY= github.com/docker/swarmkit v1.12.1-0.20180726190244-7567d47988d8/go.mod h1:n3Z4lIEl7g261ptkGDBcYi/3qBMDl9csaAhwi2MPejs= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.9.0 h1:rUF4PuzEjMChMiNsVjdI+SyLu7rEqpQ5reNFnhC7oFo= github.com/emirpasic/gods v1.9.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= @@ -70,76 +105,119 @@ github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/gogo/protobuf v1.1.1 h1:72R+M5VuhED/KujmZVcIquuo8mBgX4oVda//DQb3PXo= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/godbus/dbus v0.0.0-20181101234600-2ff6f7ffd60f/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/flock v0.7.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.1.0 h1:0iH4Ffd/meGoXqF2lSAhZHt8X+cPgkfn/cb6Cce5Vpc= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a h1:ZJu5NB1Bk5ms4vw0Xu4i+jD32SE9jQXyfnOvwhHqlT0= github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-containerregistry v0.0.0-20190820205713-31e00cede111 h1:5F39eE4QsUnAd6iGzt1/zBs3dhX877U2hJyOJHFmQF0= -github.com/google/go-containerregistry v0.0.0-20190820205713-31e00cede111/go.mod h1:yZAFP63pRshzrEYLXLGPmUt0Ay+2zdjmMN1loCnRLUk= +github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-containerregistry v0.0.0-20191218175032-34fb8ff33bed h1:0AwV9UBwwKPKrfpTYLOKr8ymevanUxrsSEkAo0uU9aA= +github.com/google/go-containerregistry v0.0.0-20191218175032-34fb8ff33bed/go.mod h1:rodaC7jYStJ2mjR8Y+5a/jCzcRPFRH74KmqSnJC88co= github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf h1:+RRA9JqSOZFfKrOeqr2z77+8R2RKyh8PG66dcu1V0ck= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/shlex v0.0.0-20150127133951-6f45313302b9/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE= github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.2.0 h1:l6N3VoaVzTncYYW+9yOz2LJJammFZGBO13sqgEhpy9g= -github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.2.2 h1:DcFegQ7+ECdmkJMfVwWlC+89I4esJ7p8nkGt9ainGDk= +github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gotestyourself/gotestyourself v2.2.0+incompatible h1:AQwinXlbQR2HvPjQZOmDhRqsv5mZf+Jb1RnSLxcqZcI= github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= -github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa h1:0nA8i+6Rwqaq9xlpmVxxTwk6rxiEhX+E6Wh4vPNHiS8= -github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa/go.mod h1:6ij3Z20p+OhOkCSrA0gImAWoHYQRGbnlcuk6XYTiaRw= +github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-memdb v0.0.0-20180223233045-1289e7fffe71 h1:yxxFgVz31vFoKKTtRUNbXLNe4GFnbLKqg+0N7yG42L8= github.com/hashicorp/go-memdb v0.0.0-20180223233045-1289e7fffe71/go.mod h1:kbfItVoBJwCfKXDXN4YoAXjxcFVZ7MRrJzyTX6H4giE= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47 h1:UnszMmmmm5vLwWzDjTFVIkfhvWF1NdrmChl8L2NUDCw= -github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.0.0-20160207214719-a0d98a5f2880/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/uuid v0.0.0-20160311170451-ebb0a03e909c/go.mod h1:fHzc09UnyJyqyW+bFuq864eh+wC7dj65aXmXLRe5to0= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/ishidawataru/sctp v0.0.0-20180213033435-07191f837fed/go.mod h1:DM4VvS+hD/kDi1U1QsX2fnZowwBhqD0Dk3bRPKF/Oc8= +github.com/jaguilar/vt100 v0.0.0-20150826170717-2703a27b14ea/go.mod h1:QMdK4dGB3YhEW2BmA1wgGpPYI3HZy/5gD705PXKUVSg= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be h1:AHimNtVIpiBjPUhEF5KNCkrUyqTSA5zWUl8sQ2bfGBE= -github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/karrick/godirwalk v1.7.7 h1:lLkPCA+C0u1pI4fLFseaupvh5/THlPJIqSPmnGGViKs= github.com/karrick/godirwalk v1.7.7/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e h1:RgQk53JHp/Cjunrr1WlsXSZpqXn+uREuHvUVcK82CV8= github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-ieproxy v0.0.0-20190805055040-f9202b1cfdeb h1:hXqqXzQtJbENrsb+rsIqkVqcg4FUJL0SQFGw08Dgivw= @@ -148,50 +226,72 @@ github.com/mattn/go-shellwords v1.0.3 h1:K/VxK7SZ+cvuPgFSLKi5QPI9Vr/ipOf4C1gN+nt github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/minio/highwayhash v1.0.0 h1:iMSDhgUILCr0TNm8LWlSjF8N0ZIj2qbO8WHp6Q/J2BA= github.com/minio/highwayhash v1.0.0/go.mod h1:xQboMTeM9nY9v/LlAOxFctujiv5+Aq2hR5dxBpaMbdc= -github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/moby/buildkit v0.0.0-20180731175856-e57eed420c75 h1:xlqeydzXCHEsRtsDyT0rvOBF7t3iTxNSG8gTQk2rfms= -github.com/moby/buildkit v0.0.0-20180731175856-e57eed420c75/go.mod h1:nnELdKPRkUAQR6pAB3mRU3+IlbqL3SSaAWqQL8k/K+4= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/hashstructure v0.0.0-20170609045927-2bca23e0e452/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/moby/buildkit v0.0.0-20191111154543-00bfbab0390c h1:QsHXQZ/5EQsj9IIXVVmTWaeEM0VAhZIrEMJ7XKB1Qu0= +github.com/moby/buildkit v0.0.0-20191111154543-00bfbab0390c/go.mod h1:UjmFBX/gZo+/+B1YEiH9Or4s7wBgwvOHhidh3rOtCXw= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c h1:Hww8mOyEKTeON4bZn7FrlLismspbPc1teNRUVH7wLQ8= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c h1:eSfnfIuwhxZyULg1NNuZycJcYkjYVGYe7FczwQReM6U= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v1.0.0-rc5 h1:rYjdzMDXVly2Av0RLs3nf/iVkaWh2UrDhuTdTT2KggQ= -github.com/opencontainers/runc v1.0.0-rc5/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc6/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runc v1.0.0-rc8.0.20190621203724-f4982d86f7fd h1:w9DJ/JL7fK4VjMoGo4e9gsq2xRhZThNI4PFuAwN8dJ0= +github.com/opencontainers/runc v1.0.0-rc8.0.20190621203724-f4982d86f7fd/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runtime-spec v0.0.0-20180909173843-eba862dc2470/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.1 h1:wY4pOY8fBdSIvs9+IDHC55thBuEulhzfSgKeC1yFvzQ= github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.0.0-rc1 h1:Q70KvmpJSrYzryl/d0tC3vWUiTn23cSdStKodlokEPs= github.com/opencontainers/selinux v1.0.0-rc1/go.mod h1:+BLncwf63G4dgOzykXAxcmnFlUaOlkDdmw/CqsW6pjs= +github.com/opentracing-contrib/go-stdlib v0.0.0-20171029140428-b1a47cfbdd75/go.mod h1:PLldrQSroqzH70Xl+1DQcGnefIbqsKR7UDaiux3zV+w= +github.com/opentracing/opentracing-go v0.0.0-20171003133519-1361b9cd60be/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.0.2 h1:3jA2P6O1F9UOrWVpwrIo17pu01KWvNWg4X946/Y5Zwg= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/otiai10/copy v0.0.0-20180813032824-7e9a647135a1 h1:A7kMXwDPBTfIVRv2l6XV3U6Su3SzLUzZjxnDDQVZDIY= -github.com/otiai10/copy v0.0.0-20180813032824-7e9a647135a1/go.mod h1:pXzZSDlN+HPzSdyIBnKNN9ptD9Hx7iZMWIJPTwo4FPE= github.com/otiai10/copy v1.0.2 h1:DDNipYy6RkIkjMwy+AWzgKiNTyj2RUI9yEMeETEpVyc= github.com/otiai10/copy v1.0.2/go.mod h1:c7RpqBkwMom4bYTSkLSym4VSJz/XtncWRAj/J4PEIMY= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95 h1:+OLn68pqasWca0z5ryit9KGfp3sUsW4Lqg32iRMJyzs= github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= github.com/otiai10/mint v1.3.0 h1:Ady6MKVezQwHBkGzLFbrsywyp09Ah7rkmfjV3Bcr5uc= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= -github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-buffruneio v0.2.0 h1:U4t4R6YkofJ5xHm3dJzuRpPZ0mr5MMCoAWooScCR7aA= github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -201,74 +301,156 @@ github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/common v0.0.0-20180518154759-7600349dcfe1 h1:osmNoEW2SCW3L7EX0km2LYM8HKpNWRiouxjE3XHkyGc= github.com/prometheus/common v0.0.0-20180518154759-7600349dcfe1/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273 h1:agujYaXJSxSo18YNX3jzl+4G6Bstwt+kqv47GS12uL0= -github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.3 h1:CTwfnzjQ+8dS6MhHHu4YswVAD99sL2wjPqP+VkURmKE= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/serialx/hashring v0.0.0-20190422032157-8b2912629002/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc= +github.com/sirupsen/logrus v1.0.3/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.1 h1:qgMbHoJbPbw579P+1zVY+6n4nIFuIchaIjzZ/I/Yq8M= github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1 h1:aCvUg6QPl3ibpQUxyLkrEkCHtPqYJL4x9AuhqVqFis4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/src-d/gcfg v1.3.0 h1:2BEDr8r0I0b8h/fOqwtxCEiq2HJu8n2JGZJQFGXWLjg= github.com/src-d/gcfg v1.3.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/syndtr/gocapability v0.0.0-20180223013746-33e07d32887e h1:QjF5rxNgRSLHJDwKUvfYP3qOx1vTDzUi/+oSC8FXnCI= -github.com/syndtr/gocapability v0.0.0-20180223013746-33e07d32887e/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tonistiigi/fsutil v0.0.0-20180725061210-b19464cd1b6a h1:qd/ItJwqOuirA+l39OBtUOLokgzKyqKsHMTdzHpoWFk= -github.com/tonistiigi/fsutil v0.0.0-20180725061210-b19464cd1b6a/go.mod h1:eden9dLzAAuNQ0L7whFr6/Mzgz6btsvQpUnxOOI+CCE= +github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2 h1:b6uOv7YOFK0TYG7HtkIgExQo+2RdLuwRft63jn2HWj8= +github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/tonistiigi/fsutil v0.0.0-20191018213012-0f039a052ca1 h1:WRlNtJ2whFMKo95/e6uaNuAnn5TxLcMzczqMcfbIDxo= +github.com/tonistiigi/fsutil v0.0.0-20191018213012-0f039a052ca1/go.mod h1:hP47OZfgT1aNVDJj28EnEKaKg6mjPEoS5Tb4BsWCTPs= +github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= +github.com/uber/jaeger-client-go v0.0.0-20180103221425-e02c85f9069e/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-lib v1.2.1/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/vbatts/tar-split v0.10.2 h1:CXd7HEKGkTLjBMinpObcJZU5Hm8EKlor2a1JtX6msXQ= github.com/vbatts/tar-split v0.10.2/go.mod h1:LEuURwDEiWjRjwu46yU3KVGuUdVv/dcnpcEPSzR8z6g= +github.com/vishvananda/netlink v1.0.0/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= +github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/xanzy/ssh-agent v0.2.0 h1:Adglfbi5p9Z0BmK2oKU9nTG+zKfniSfnaMYB+ULd+Ro= github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.14.0 h1:1eTLxqxSIAylcKoxnNkdhvvBNZDA8JwkKNXxgyma0IA= go.opencensus.io v0.14.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 h1:1wopBVtVdWnn03fZelqdXTqk7U7zPQCb+T4rbU9ZEoU= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/oauth2 v0.0.0-20180724155351-3d292e4d0cdc h1:3ElrZeO6IBP+M8kgu5YFwRo92Gqr+zBg3aooYQ6ziqU= -golang.org/x/oauth2 v0.0.0-20180724155351-3d292e4d0cdc/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 h1:rjwSpXsdiK0dV8/Naq3kAw9ymfAeJIyd0upUIElB+lI= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564 h1:o6ENHFwwr1TZ9CUPQcfo1HGvLP1OPsPOTB7xCIOPNmU= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894 h1:Cz4ceDQGXuKRnVBDTS23GTn/pU5OE2C0WrNTOYK1Uuc= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191010194322-b09406accb47 h1:/XfQ9z7ib8eEJX2hdgFTZJ/ntt0swNk5oYBziWeTCvY= +golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2 h1:+DCIGbF/swA92ohVg0//6X2IVY3KZs6p9mix0ziNYJM= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262 h1:qsl9y/CJx34tuA7QCPNp86JNJe4spst6Ff8MjvPUdPg= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191205215504-7b8c8591a921/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= google.golang.org/api v0.0.0-20180730000901-31ca0e01cd79 h1:wCy2/9bhO1JeP2zZUALrj7ZdZuZoR4mRV57kTxjqRpo= google.golang.org/api v0.0.0-20180730000901-31ca0e01cd79/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/appengine v1.1.0 h1:igQkv0AAhEIvTEpD5LIpAfav2eeVO9HBTjvKHVJPRSs= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/genproto v0.0.0-20180731170733-daca94659cb5 h1:2PjFmwzH/sxgW9CRJDlEiwMHO8rOk1eMDzVL14HC1e4= -google.golang.org/genproto v0.0.0-20180731170733-daca94659cb5/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/grpc v1.2.1-0.20180320012744-8124abf74e76 h1:vTe0EiECbrLSj5+6SXMi+eWwYW/bjmd26LE5lv52YVs= -google.golang.org/grpc v1.2.1-0.20180320012744-8124abf74e76/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0 h1:vb/1TCsVn3DcJlQ0Gs1yB1pKI6Do2/QNwxdKqmc/b0s= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/src-d/go-billy.v4 v4.2.0 h1:VGbrP1EsYxtvVPEiHui+4//imr4E5MGEFLx66bQtusg= @@ -277,25 +459,40 @@ gopkg.in/src-d/go-git-fixtures.v3 v3.5.0 h1:ivZFOIltbce2Mo8IjzUHAFoq/IylO9WHhNOA gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= gopkg.in/src-d/go-git.v4 v4.6.0 h1:3XrA9Qxiwfj7Iusd7dVYUqxMjJYPsLuBdUeQbwnL/NQ= gopkg.in/src-d/go-git.v4 v4.6.0/go.mod h1:CzbUWqMn4pvmvndg3gnh5iZFmSsbhyhUWdI0IQ60AQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -k8s.io/api v0.0.0-20180711052118-183f3326a935 h1:K2hsi4kfw1BvCEKX5J1A51pQtXjico7lOEmSiIHQ3/E= -k8s.io/api v0.0.0-20180711052118-183f3326a935/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= -k8s.io/apimachinery v0.0.0-20180621070125-103fd098999d h1:MZjlsu9igBoVPZkXpIGoxI6EonqNsXXZU7hhvfQLkd4= -k8s.io/apimachinery v0.0.0-20180621070125-103fd098999d/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +k8s.io/api v0.0.0-20180904230853-4e7be11eab3f h1:DLRkv8Ps4Sdx8Srj+UtGisj4whV7v/HezlHx6QqiZqE= +k8s.io/api v0.0.0-20180904230853-4e7be11eab3f/go.mod h1:iuAfoD4hCxJ8Onx9kaTIt30j7jUFS00AXQi6QMi99vA= +k8s.io/apimachinery v0.0.0-20180904193909-def12e63c512 h1:/Z1m/6oEN6hE2SzWP4BHW2yATeUrBRr+1GxNf1Ny58Y= +k8s.io/apimachinery v0.0.0-20180904193909-def12e63c512/go.mod h1:ccL7Eh7zubPUSh9A3USN90/OzHNSVN6zxzde07TDCL0= k8s.io/client-go v0.0.0-20180910083459-2cefa64ff137 h1:4DIWGqvAjLME47asVwjb14H+6bDRu+4h43Ssw6tMAHc= k8s.io/client-go v0.0.0-20180910083459-2cefa64ff137/go.mod h1:7vJpHMYJwNQCWgzmNV+VYUl1zCObLyodBc8nIyt8L5s= +k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a h1:UcxjrRMyNx/i/y8G7kPvLyy7rfbeuf1PYyBf973pgyU= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kubernetes v1.11.1 h1:wHOPX+teuYaSlUWfL/b24jMH0n7HECbj4Xt8i7kSZIw= -k8s.io/kubernetes v1.11.1/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/kubernetes v1.11.10 h1:wCo67+wmguioiYv0ipIiTaXbVPfFBBjOTgIngeGGG+A= +k8s.io/kubernetes v1.11.10/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= +modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= +modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= +modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= +modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/pkg/executor/build.go b/pkg/executor/build.go index d1c17cf1d2..da74bc0a7c 100644 --- a/pkg/executor/build.go +++ b/pkg/executor/build.go @@ -684,7 +684,7 @@ func getHasher(snapshotMode string) (func(string) (string, error), error) { } func resolveOnBuild(stage *config.KanikoStage, config *v1.Config) error { - if config.OnBuild == nil { + if config.OnBuild == nil || len(config.OnBuild) == 0 { return nil } // Otherwise, parse into commands diff --git a/pkg/util/image_util.go b/pkg/util/image_util.go index a214528f49..3948b18379 100644 --- a/pkg/util/image_util.go +++ b/pkg/util/image_util.go @@ -49,12 +49,12 @@ var ( func RetrieveSourceImage(stage config.KanikoStage, opts *config.KanikoOptions) (v1.Image, error) { t := timing.Start("Retrieving Source Image") defer timing.DefaultRun.Stop(t) - buildArgs := opts.BuildArgs - var metaArgsString []string + var buildArgs []string + for _, arg := range stage.MetaArgs { - metaArgsString = append(metaArgsString, fmt.Sprintf("%s=%s", arg.Key, arg.ValueString())) + buildArgs = append(buildArgs, fmt.Sprintf("%s=%s", arg.Key, arg.ValueString())) } - buildArgs = append(buildArgs, metaArgsString...) + buildArgs = append(buildArgs, opts.BuildArgs...) currentBaseName, err := ResolveEnvironmentReplacement(stage.BaseName, buildArgs, false) if err != nil { return nil, err diff --git a/vendor/cloud.google.com/go/storage/acl.go b/vendor/cloud.google.com/go/storage/acl.go index d56795c714..0cfc96ee61 100644 --- a/vendor/cloud.google.com/go/storage/acl.go +++ b/vendor/cloud.google.com/go/storage/acl.go @@ -48,10 +48,21 @@ const ( AllAuthenticatedUsers ACLEntity = "allAuthenticatedUsers" ) -// ACLRule represents a grant for a role to an entity (user, group or team) for a Google Cloud Storage object or bucket. +// ACLRule represents a grant for a role to an entity (user, group or team) for a +// Google Cloud Storage object or bucket. type ACLRule struct { - Entity ACLEntity - Role ACLRole + Entity ACLEntity + EntityID string + Role ACLRole + Domain string + Email string + ProjectTeam *ProjectTeam +} + +// ProjectTeam is the project team associated with the entity, if any. +type ProjectTeam struct { + ProjectNumber string + Team string } // ACLHandle provides operations on an access control list for a Google Cloud Storage bucket or object. @@ -77,7 +88,7 @@ func (a *ACLHandle) Delete(ctx context.Context, entity ACLEntity) (err error) { return a.bucketDelete(ctx, entity) } -// Set sets the permission level for the given entity. +// Set sets the role for the given entity. func (a *ACLHandle) Set(ctx context.Context, entity ACLEntity, role ACLRole) (err error) { ctx = trace.StartSpan(ctx, "cloud.google.com/go/storage.ACL.Set") defer func() { trace.EndSpan(ctx, err) }() @@ -117,7 +128,7 @@ func (a *ACLHandle) bucketDefaultList(ctx context.Context) ([]ACLRule, error) { if err != nil { return nil, err } - return toACLRules(acls.Items), nil + return toObjectACLRules(acls.Items), nil } func (a *ACLHandle) bucketDefaultDelete(ctx context.Context, entity ACLEntity) error { @@ -140,12 +151,7 @@ func (a *ACLHandle) bucketList(ctx context.Context) ([]ACLRule, error) { if err != nil { return nil, err } - r := make([]ACLRule, len(acls.Items)) - for i, v := range acls.Items { - r[i].Entity = ACLEntity(v.Entity) - r[i].Role = ACLRole(v.Role) - } - return r, nil + return toBucketACLRules(acls.Items), nil } func (a *ACLHandle) bucketSet(ctx context.Context, entity ACLEntity, role ACLRole) error { @@ -167,15 +173,11 @@ func (a *ACLHandle) bucketSet(ctx context.Context, entity ACLEntity, role ACLRol } func (a *ACLHandle) bucketDelete(ctx context.Context, entity ACLEntity) error { - err := runWithRetry(ctx, func() error { + return runWithRetry(ctx, func() error { req := a.c.raw.BucketAccessControls.Delete(a.bucket, string(entity)) a.configureCall(req, ctx) return req.Do() }) - if err != nil { - return err - } - return nil } func (a *ACLHandle) objectList(ctx context.Context) ([]ACLRule, error) { @@ -190,7 +192,7 @@ func (a *ACLHandle) objectList(ctx context.Context) ([]ACLRule, error) { if err != nil { return nil, err } - return toACLRules(acls.Items), nil + return toObjectACLRules(acls.Items), nil } func (a *ACLHandle) objectSet(ctx context.Context, entity ACLEntity, role ACLRole, isBucketDefault bool) error { @@ -225,9 +227,7 @@ func (a *ACLHandle) objectDelete(ctx context.Context, entity ACLEntity) error { }) } -func (a *ACLHandle) configureCall(call interface { - Header() http.Header -}, ctx context.Context) { +func (a *ACLHandle) configureCall(call interface{ Header() http.Header }, ctx context.Context) { vc := reflect.ValueOf(call) vc.MethodByName("Context").Call([]reflect.Value{reflect.ValueOf(ctx)}) if a.userProject != "" { @@ -236,10 +236,100 @@ func (a *ACLHandle) configureCall(call interface { setClientHeader(call.Header()) } -func toACLRules(items []*raw.ObjectAccessControl) []ACLRule { - r := make([]ACLRule, 0, len(items)) +func toObjectACLRules(items []*raw.ObjectAccessControl) []ACLRule { + var rs []ACLRule for _, item := range items { - r = append(r, ACLRule{Entity: ACLEntity(item.Entity), Role: ACLRole(item.Role)}) + rs = append(rs, toObjectACLRule(item)) + } + return rs +} + +func toBucketACLRules(items []*raw.BucketAccessControl) []ACLRule { + var rs []ACLRule + for _, item := range items { + rs = append(rs, toBucketACLRule(item)) + } + return rs +} + +func toObjectACLRule(a *raw.ObjectAccessControl) ACLRule { + return ACLRule{ + Entity: ACLEntity(a.Entity), + EntityID: a.EntityId, + Role: ACLRole(a.Role), + Domain: a.Domain, + Email: a.Email, + ProjectTeam: toObjectProjectTeam(a.ProjectTeam), + } +} + +func toBucketACLRule(a *raw.BucketAccessControl) ACLRule { + return ACLRule{ + Entity: ACLEntity(a.Entity), + EntityID: a.EntityId, + Role: ACLRole(a.Role), + Domain: a.Domain, + Email: a.Email, + ProjectTeam: toBucketProjectTeam(a.ProjectTeam), + } +} + +func toRawObjectACL(rules []ACLRule) []*raw.ObjectAccessControl { + if len(rules) == 0 { + return nil + } + r := make([]*raw.ObjectAccessControl, 0, len(rules)) + for _, rule := range rules { + r = append(r, rule.toRawObjectAccessControl("")) // bucket name unnecessary } return r } + +func toRawBucketACL(rules []ACLRule) []*raw.BucketAccessControl { + if len(rules) == 0 { + return nil + } + r := make([]*raw.BucketAccessControl, 0, len(rules)) + for _, rule := range rules { + r = append(r, rule.toRawBucketAccessControl("")) // bucket name unnecessary + } + return r +} + +func (r ACLRule) toRawBucketAccessControl(bucket string) *raw.BucketAccessControl { + return &raw.BucketAccessControl{ + Bucket: bucket, + Entity: string(r.Entity), + Role: string(r.Role), + // The other fields are not settable. + } +} + +func (r ACLRule) toRawObjectAccessControl(bucket string) *raw.ObjectAccessControl { + return &raw.ObjectAccessControl{ + Bucket: bucket, + Entity: string(r.Entity), + Role: string(r.Role), + // The other fields are not settable. + } +} + +func toBucketProjectTeam(p *raw.BucketAccessControlProjectTeam) *ProjectTeam { + if p == nil { + return nil + } + return &ProjectTeam{ + ProjectNumber: p.ProjectNumber, + Team: p.Team, + } +} + +func toObjectProjectTeam(p *raw.ObjectAccessControlProjectTeam) *ProjectTeam { + if p == nil { + return nil + } + return &ProjectTeam{ + ProjectNumber: p.ProjectNumber, + Team: p.Team, + } +} diff --git a/vendor/cloud.google.com/go/storage/bucket.go b/vendor/cloud.google.com/go/storage/bucket.go index 74e7ba3be4..1c23979bc6 100644 --- a/vendor/cloud.google.com/go/storage/bucket.go +++ b/vendor/cloud.google.com/go/storage/bucket.go @@ -82,6 +82,12 @@ func (b *BucketHandle) Create(ctx context.Context, projectID string, attrs *Buck } req := b.c.raw.Buckets.Insert(projectID, bkt) setClientHeader(req.Header()) + if attrs != nil && attrs.PredefinedACL != "" { + req.PredefinedAcl(attrs.PredefinedACL) + } + if attrs != nil && attrs.PredefinedDefaultObjectACL != "" { + req.PredefinedDefaultObjectAcl(attrs.PredefinedDefaultObjectACL) + } return runWithRetry(ctx, func() error { _, err := req.Context(ctx).Do(); return err }) } @@ -188,6 +194,12 @@ func (b *BucketHandle) Update(ctx context.Context, uattrs BucketAttrsToUpdate) ( if err != nil { return nil, err } + if uattrs.PredefinedACL != "" { + req.PredefinedAcl(uattrs.PredefinedACL) + } + if uattrs.PredefinedDefaultObjectACL != "" { + req.PredefinedDefaultObjectAcl(uattrs.PredefinedDefaultObjectACL) + } // TODO(jba): retry iff metagen is set? rb, err := req.Context(ctx).Do() if err != nil { @@ -223,6 +235,20 @@ type BucketAttrs struct { // apply to new objects when no object ACL is provided. DefaultObjectACL []ACLRule + // If not empty, applies a predefined set of access controls. It should be set + // only when creating a bucket. + // It is always empty for BucketAttrs returned from the service. + // See https://cloud.google.com/storage/docs/json_api/v1/buckets/insert + // for valid values. + PredefinedACL string + + // If not empty, applies a predefined set of default object access controls. + // It should be set only when creating a bucket. + // It is always empty for BucketAttrs returned from the service. + // See https://cloud.google.com/storage/docs/json_api/v1/buckets/insert + // for valid values. + PredefinedDefaultObjectACL string + // Location is the location of the bucket. It defaults to "US". Location string @@ -272,6 +298,12 @@ type BucketAttrs struct { // The encryption configuration used by default for newly inserted objects. Encryption *BucketEncryption + + // The logging configuration. + Logging *BucketLogging + + // The website configuration. + Website *BucketWebsite } // Lifecycle is the lifecycle configuration for objects in the bucket. @@ -389,6 +421,34 @@ type LifecycleCondition struct { NumNewerVersions int64 } +// BucketLogging holds the bucket's logging configuration, which defines the +// destination bucket and optional name prefix for the current bucket's +// logs. +type BucketLogging struct { + // The destination bucket where the current bucket's logs + // should be placed. + LogBucket string + + // A prefix for log object names. + LogObjectPrefix string +} + +// Website holds the bucket's website configuration, controlling how the +// service behaves when accessing bucket contents as a web site. See +// https://cloud.google.com/storage/docs/static-website for more information. +type BucketWebsite struct { + // If the requested object path is missing, the service will ensure the path has + // a trailing '/', append this suffix, and attempt to retrieve the resulting + // object. This allows the creation of index.html objects to represent directory + // pages. + MainPageSuffix string + + // If the requested object path is missing, and any mainPageSuffix object is + // missing, if applicable, the service will return the named object from this + // bucket as the content for a 404 Not Found result. + NotFoundPage string +} + func newBucket(b *raw.Bucket) (*BucketAttrs, error) { if b == nil { return nil, nil @@ -397,52 +457,28 @@ func newBucket(b *raw.Bucket) (*BucketAttrs, error) { if err != nil { return nil, err } - bucket := &BucketAttrs{ + return &BucketAttrs{ Name: b.Name, Location: b.Location, MetaGeneration: b.Metageneration, StorageClass: b.StorageClass, Created: convertTime(b.TimeCreated), VersioningEnabled: b.Versioning != nil && b.Versioning.Enabled, + ACL: toBucketACLRules(b.Acl), + DefaultObjectACL: toObjectACLRules(b.DefaultObjectAcl), Labels: b.Labels, RequesterPays: b.Billing != nil && b.Billing.RequesterPays, Lifecycle: toLifecycle(b.Lifecycle), RetentionPolicy: rp, CORS: toCORS(b.Cors), Encryption: toBucketEncryption(b.Encryption), - } - acl := make([]ACLRule, len(b.Acl)) - for i, rule := range b.Acl { - acl[i] = ACLRule{ - Entity: ACLEntity(rule.Entity), - Role: ACLRole(rule.Role), - } - } - bucket.ACL = acl - objACL := make([]ACLRule, len(b.DefaultObjectAcl)) - for i, rule := range b.DefaultObjectAcl { - objACL[i] = ACLRule{ - Entity: ACLEntity(rule.Entity), - Role: ACLRole(rule.Role), - } - } - bucket.DefaultObjectACL = objACL - return bucket, nil + Logging: toBucketLogging(b.Logging), + Website: toBucketWebsite(b.Website), + }, nil } // toRawBucket copies the editable attribute from b to the raw library's Bucket type. func (b *BucketAttrs) toRawBucket() *raw.Bucket { - var acl []*raw.BucketAccessControl - if len(b.ACL) > 0 { - acl = make([]*raw.BucketAccessControl, len(b.ACL)) - for i, rule := range b.ACL { - acl[i] = &raw.BucketAccessControl{ - Entity: string(rule.Entity), - Role: string(rule.Role), - } - } - } - dACL := toRawObjectACL(b.DefaultObjectACL) // Copy label map. var labels map[string]string if len(b.Labels) > 0 { @@ -464,10 +500,10 @@ func (b *BucketAttrs) toRawBucket() *raw.Bucket { } return &raw.Bucket{ Name: b.Name, - DefaultObjectAcl: dACL, Location: b.Location, StorageClass: b.StorageClass, - Acl: acl, + Acl: toRawBucketACL(b.ACL), + DefaultObjectAcl: toRawObjectACL(b.DefaultObjectACL), Versioning: v, Labels: labels, Billing: bb, @@ -475,6 +511,8 @@ func (b *BucketAttrs) toRawBucket() *raw.Bucket { RetentionPolicy: b.RetentionPolicy.toRawRetentionPolicy(), Cors: toRawCORS(b.CORS), Encryption: b.Encryption.toRawBucketEncryption(), + Logging: b.Logging.toRawBucketLogging(), + Website: b.Website.toRawBucketWebsite(), } } @@ -536,6 +574,20 @@ type BucketAttrsToUpdate struct { // If set, replaces the lifecycle configuration of the bucket. Lifecycle *Lifecycle + // If set, replaces the logging configuration of the bucket. + Logging *BucketLogging + + // If set, replaces the website configuration of the bucket. + Website *BucketWebsite + + // If not empty, applies a predefined set of access controls. + // See https://cloud.google.com/storage/docs/json_api/v1/buckets/patch. + PredefinedACL string + + // If not empty, applies a predefined set of default object access controls. + // See https://cloud.google.com/storage/docs/json_api/v1/buckets/patch. + PredefinedDefaultObjectACL string + setLabels map[string]string deleteLabels map[string]bool } @@ -595,6 +647,32 @@ func (ua *BucketAttrsToUpdate) toRawBucket() *raw.Bucket { if ua.Lifecycle != nil { rb.Lifecycle = toRawLifecycle(*ua.Lifecycle) } + if ua.Logging != nil { + if *ua.Logging == (BucketLogging{}) { + rb.NullFields = append(rb.NullFields, "Logging") + rb.Logging = nil + } else { + rb.Logging = ua.Logging.toRawBucketLogging() + } + } + if ua.Website != nil { + if *ua.Website == (BucketWebsite{}) { + rb.NullFields = append(rb.NullFields, "Website") + rb.Website = nil + } else { + rb.Website = ua.Website.toRawBucketWebsite() + } + } + if ua.PredefinedACL != "" { + // Clear ACL or the call will fail. + rb.Acl = nil + rb.ForceSendFields = append(rb.ForceSendFields, "Acl") + } + if ua.PredefinedDefaultObjectACL != "" { + // Clear ACLs or the call will fail. + rb.DefaultObjectAcl = nil + rb.ForceSendFields = append(rb.ForceSendFields, "DefaultObjectAcl") + } if ua.setLabels != nil || ua.deleteLabels != nil { rb.Labels = map[string]string{} for k, v := range ua.setLabels { @@ -836,6 +914,46 @@ func toBucketEncryption(e *raw.BucketEncryption) *BucketEncryption { return &BucketEncryption{DefaultKMSKeyName: e.DefaultKmsKeyName} } +func (b *BucketLogging) toRawBucketLogging() *raw.BucketLogging { + if b == nil { + return nil + } + return &raw.BucketLogging{ + LogBucket: b.LogBucket, + LogObjectPrefix: b.LogObjectPrefix, + } +} + +func toBucketLogging(b *raw.BucketLogging) *BucketLogging { + if b == nil { + return nil + } + return &BucketLogging{ + LogBucket: b.LogBucket, + LogObjectPrefix: b.LogObjectPrefix, + } +} + +func (w *BucketWebsite) toRawBucketWebsite() *raw.BucketWebsite { + if w == nil { + return nil + } + return &raw.BucketWebsite{ + MainPageSuffix: w.MainPageSuffix, + NotFoundPage: w.NotFoundPage, + } +} + +func toBucketWebsite(w *raw.BucketWebsite) *BucketWebsite { + if w == nil { + return nil + } + return &BucketWebsite{ + MainPageSuffix: w.MainPageSuffix, + NotFoundPage: w.NotFoundPage, + } +} + // Objects returns an iterator over the objects in the bucket that match the Query q. // If q is nil, no filtering is done. func (b *BucketHandle) Objects(ctx context.Context, q *Query) *ObjectIterator { diff --git a/vendor/cloud.google.com/go/storage/copy.go b/vendor/cloud.google.com/go/storage/copy.go index 98ca5bd7c8..39da383533 100644 --- a/vendor/cloud.google.com/go/storage/copy.go +++ b/vendor/cloud.google.com/go/storage/copy.go @@ -115,6 +115,9 @@ func (c *Copier) callRewrite(ctx context.Context, rawObj *raw.Object) (*raw.Rewr if c.DestinationKMSKeyName != "" { call.DestinationKmsKeyName(c.DestinationKMSKeyName) } + if c.PredefinedACL != "" { + call.DestinationPredefinedAcl(c.PredefinedACL) + } if err := applyConds("Copy destination", c.dst.gen, c.dst.conds, call); err != nil { return nil, err } @@ -209,6 +212,9 @@ func (c *Composer) Run(ctx context.Context) (attrs *ObjectAttrs, err error) { if c.dst.userProject != "" { call.UserProject(c.dst.userProject) } + if c.PredefinedACL != "" { + call.DestinationPredefinedAcl(c.PredefinedACL) + } if err := setEncryptionHeaders(call.Header(), c.dst.encryptionKey, false); err != nil { return nil, err } diff --git a/vendor/cloud.google.com/go/storage/doc.go b/vendor/cloud.google.com/go/storage/doc.go index 5bd7708e53..3ea1e2f94b 100644 --- a/vendor/cloud.google.com/go/storage/doc.go +++ b/vendor/cloud.google.com/go/storage/doc.go @@ -22,9 +22,11 @@ https://cloud.google.com/storage/docs. See https://godoc.org/cloud.google.com/go for authentication, timeouts, connection pooling and similar aspects of this package. -All of the methods of this package use exponential backoff to retry calls -that fail with certain errors, as described in -https://cloud.google.com/storage/docs/exponential-backoff. +All of the methods of this package use exponential backoff to retry calls that fail +with certain errors, as described in +https://cloud.google.com/storage/docs/exponential-backoff. Retrying continues +indefinitely unless the controlling context is canceled or the client is closed. See +context.WithTimeout and context.WithCancel. Creating a Client diff --git a/vendor/cloud.google.com/go/storage/go110.go b/vendor/cloud.google.com/go/storage/go110.go index 75be3cbb5d..206813f0ce 100644 --- a/vendor/cloud.google.com/go/storage/go110.go +++ b/vendor/cloud.google.com/go/storage/go110.go @@ -24,6 +24,8 @@ func shouldRetry(err error) bool { // Retry on 429 and 5xx, according to // https://cloud.google.com/storage/docs/exponential-backoff. return e.Code == 429 || (e.Code >= 500 && e.Code < 600) + case interface{ Temporary() bool }: + return e.Temporary() default: return false } diff --git a/vendor/cloud.google.com/go/storage/not_go110.go b/vendor/cloud.google.com/go/storage/not_go110.go index 700fde1ccb..66fa45bea2 100644 --- a/vendor/cloud.google.com/go/storage/not_go110.go +++ b/vendor/cloud.google.com/go/storage/not_go110.go @@ -34,6 +34,8 @@ func shouldRetry(err error) bool { // Unfortunately the error type is unexported, so we resort to string // matching. return strings.Contains(e.Error(), "REFUSED_STREAM") + case interface{ Temporary() bool }: + return e.Temporary() default: return false } diff --git a/vendor/cloud.google.com/go/storage/storage.go b/vendor/cloud.google.com/go/storage/storage.go index dbf286d689..d710f3dfd3 100644 --- a/vendor/cloud.google.com/go/storage/storage.go +++ b/vendor/cloud.google.com/go/storage/storage.go @@ -467,6 +467,9 @@ func (o *ObjectHandle) Update(ctx context.Context, uattrs ObjectAttrsToUpdate) ( if o.userProject != "" { call.UserProject(o.userProject) } + if uattrs.PredefinedACL != "" { + call.PredefinedAcl(uattrs.PredefinedACL) + } if err := setEncryptionHeaders(call.Header(), o.encryptionKey, false); err != nil { return nil, err } @@ -501,6 +504,10 @@ type ObjectAttrsToUpdate struct { CacheControl optional.String Metadata map[string]string // set to map[string]string{} to delete ACL []ACLRule + + // If not empty, applies a predefined set of access controls. ACL must be nil. + // See https://cloud.google.com/storage/docs/json_api/v1/objects/patch. + PredefinedACL string } // Delete deletes the single specified object. @@ -595,23 +602,8 @@ func parseKey(key []byte) (*rsa.PrivateKey, error) { return parsed, nil } -func toRawObjectACL(oldACL []ACLRule) []*raw.ObjectAccessControl { - var acl []*raw.ObjectAccessControl - if len(oldACL) > 0 { - acl = make([]*raw.ObjectAccessControl, len(oldACL)) - for i, rule := range oldACL { - acl[i] = &raw.ObjectAccessControl{ - Entity: string(rule.Entity), - Role: string(rule.Role), - } - } - } - return acl -} - // toRawObject copies the editable attributes from o to the raw library's Object type. func (o *ObjectAttrs) toRawObject(bucket string) *raw.Object { - acl := toRawObjectACL(o.ACL) return &raw.Object{ Bucket: bucket, Name: o.Name, @@ -621,7 +613,7 @@ func (o *ObjectAttrs) toRawObject(bucket string) *raw.Object { CacheControl: o.CacheControl, ContentDisposition: o.ContentDisposition, StorageClass: o.StorageClass, - Acl: acl, + Acl: toRawObjectACL(o.ACL), Metadata: o.Metadata, } } @@ -649,6 +641,14 @@ type ObjectAttrs struct { // ACL is the list of access control rules for the object. ACL []ACLRule + // If not empty, applies a predefined set of access controls. It should be set + // only when writing, copying or composing an object. When copying or composing, + // it acts as the destinationPredefinedAcl parameter. + // PredefinedACL is always empty for ObjectAttrs returned from the service. + // See https://cloud.google.com/storage/docs/json_api/v1/objects/insert + // for valid values. + PredefinedACL string + // Owner is the owner of the object. This field is read-only. // // If non-zero, it is in the form of "user-". @@ -751,13 +751,6 @@ func newObject(o *raw.Object) *ObjectAttrs { if o == nil { return nil } - acl := make([]ACLRule, len(o.Acl)) - for i, rule := range o.Acl { - acl[i] = ACLRule{ - Entity: ACLEntity(rule.Entity), - Role: ACLRole(rule.Role), - } - } owner := "" if o.Owner != nil { owner = o.Owner.Entity @@ -774,7 +767,7 @@ func newObject(o *raw.Object) *ObjectAttrs { ContentType: o.ContentType, ContentLanguage: o.ContentLanguage, CacheControl: o.CacheControl, - ACL: acl, + ACL: toObjectACLRules(o.Acl), Owner: owner, ContentEncoding: o.ContentEncoding, ContentDisposition: o.ContentDisposition, diff --git a/vendor/cloud.google.com/go/storage/storage.replay b/vendor/cloud.google.com/go/storage/storage.replay index c96b950a95..4bac15ea9e 100644 --- a/vendor/cloud.google.com/go/storage/storage.replay +++ b/vendor/cloud.google.com/go/storage/storage.replay @@ -1,9 +1,9 @@ { - "Initial": "IjIwMTgtMDYtMjhUMjE6MDk6MTUuMjMyOTM1MzM5WiI=", + "Initial": "IjIwMTgtMDctMjVUMTg6MjI6NTQuMDA5NjI4NjI4WiI=", "Version": "0.1", "Entries": [ { - "ID": "4894bcbf1ad88b2b", + "ID": "995489b78c4d7f4a", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -25,13 +25,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "aac95449e98a5cc1066ea485caef4af6/15239871814941585171;o=0" + "5600f0fe5749e0dd4c451c8a13e48e12/16945114725680895320;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -46,14 +46,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIn0K" + "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIn0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -65,7 +67,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:16 GMT" + "Wed, 25 Jul 2018 18:22:55 GMT" ], "Etag": [ "CAE=" @@ -84,7 +86,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220455000" + "1532543274000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -93,16 +95,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrii75:4136,/bns/yw/borg/yw/bns/blobstore2/bitpusher/293.scotty,acatli15:443" + "xiiadcau12:4238,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=e041W4XfNISchwS8k4SIAw" + "eid=_r9YW_D4Hoaxswa5pbcI" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/293.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -111,13 +113,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/293:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/5:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWGpuQklBYXBFMzRVRmRLMW51MmNiZUh2Y0lGX3k4MG51TlhVekVhMEkwcnVua1ZkNHhneUdEaV9FWEdKWjlIZjhJcmhxRF9oeW1SbGlWRXAydE11RUM4ZUpMODAwQ0htM1N3WHMwaExndXFUQzkzakhOX1gwWWhlaHVSVDhqaEtmU2lLd21pRTVsWU1kVGZFMThMN0t5M1ZFQVQzMThQb0pPSkhfV0Ewa3RRMmZCQU9xWm5mOWNKT2swBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WnFEWUxBY0M5Wk5EWlJxemprZmh6Q1pIWjE3U1VqOWxjcXd0aUxmakRsOFk5RTRFZGxMZzA3SUZ3RzNLdXhxYW9oT1J5VHdtNmNhSS1tM2Fnb1V3WFdTZWZNN3NvRUNCV0RnMldoU0R6YU9seGRBZGZKRFBKSWRtbGl1ZU5SdUZQN1RfWkJBWVQ0bWsySGFDZEpkb2VVaUpwY0E5Q1N2RmFobi1lcEpMYlQ4cm1Fd19CMFZPd0k5TEkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -132,14 +134,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrK2IAJDmKkNI-9ObBn-8E92Fm8LsvzMfJPyOhYw_Co97AW_NveRZhNKIvDoSFnhH024bWZ8Zk0mhSPdUHW42D2cqJCFmnE8kkK1euWBhSKUf9z3mc" + "AEnB2Urqfg76Y1YZDSpvVITupScS1ibu6nNvZqgWcU293giOAQIFxews7OG4nFnwXBRNaAkHIvJ1GYHtTiPggqmHXlAoRyCI4g" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTYuMzYzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjE2LjM2M1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTUuMDg0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIyOjU1LjA4NFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "f96e58868b85f56a", + "ID": "1de49a660b2417a4", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -161,13 +163,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "cc56170cde109f4d124a507da781b103/17590376030333694786;o=0" + "b9c0a8bb92d2406546b8a1ed07390987/17636946334912976927;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -182,14 +184,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAxIn0K" + "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAxIn0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -201,7 +205,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:17 GMT" + "Wed, 25 Jul 2018 18:22:56 GMT" ], "Etag": [ "CAE=" @@ -220,7 +224,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220456000" + "1532543275000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -229,16 +233,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrnt4:4443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "xiiadcae12:4379,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=fE41W4ujK8PdhQTRkIzQBQ" + "eid=_79YW772Goaxswa5pbcI" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -247,13 +251,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/178:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/5:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVnRsUmwycmRKZGpOcHhwZXdydnFpcGlDX2hnVEdraUJaTFRWZ1AzaGQ3Ql9hVGM4N25MS1lKMThsOHpFT1I5SkdjZm9qWDlMZ3JZc09sNW8yb0ljOGlaZ3J3dHdLVDN1R3FSdlAyMDI5SW1Pam11RTRnUC02c3U1VlRQbTFQVnEyN1diU2FET28wSmtwYkVub3hlWGt1TXIwbTNCdThITkF0LXhMVk1EMnc4WVNHZGw5UGlFWHZHOVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WkVfc2lCWmxya2NVUXdCMmZNYmxfRTE3MkRrTFl5djgxY2ZqNy01b1FpSXc1UW5jTVFEUFV1dnFvMXB4YXNOdGVsMFZvSjNlY3MwVDJ2X0FsRU5RX1o2enpxZ3lQdjByeGNCSnZlMEY1QjlwWFVaVG1sdGdxY1ZINnlXUGZsWHBDRkh5eXBVdjhIMnhldml4bjVORkJGUW5hUzl6OTFNWURvY3FkbmhDZHc3ZXhpSnZtZVk4cTU4WUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -268,17 +272,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrRur57V19DVfTY_UxEG3Jdcj_krvWCUsvVcom2X15_Fi8hbSwJt3nw6mPzjwLa8OyMRPzx-o52FRIZX-I4Ql3HA2XizQSRKlgClyv-4MJMdAcCsUg" + "AEnB2UrB3n7WJ55z6h-ma5vJIMPr6y3GJ8XI5aGcPMJmLVVTrjI3Kmj4zc8skLWqlPOCaeyHRt9QLgsXL5lIGJxrbc-UQdgVQQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTcuMDQ2WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjE3LjA0NloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTUuODM3WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIyOjU1LjgzN1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "702889255ceab095", + "ID": "53bf8cf3c3008d2b", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0001?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0001?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -291,13 +295,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "34b1144f74f525381ceaea60a2264736/759047364799723106;o=0" + "c0f4ec74810b6ab38cb4bab724a63721/6831446857834371388;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -306,7 +310,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0001?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0001?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -317,9 +321,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -331,13 +337,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:17 GMT" + "Wed, 25 Jul 2018 18:22:56 GMT" ], "Etag": [ "CAE=" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:17 GMT" + "Wed, 25 Jul 2018 18:22:56 GMT" ], "Server": [ "UploadServer" @@ -347,7 +353,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220457000" + "1532543276000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -356,16 +362,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrkx25:4469,/bns/yw/borg/yw/bns/blobstore2/bitpusher/627.scotty,acatli15:443" + "xgiadaaa9:4028,/bns/xi/borg/xi/bns/blobstore2/bitpusher/108.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=fU41W4zWDsfQhASqvYj4Bg" + "eid=AMBYW4fwAqu_swaTlJmwBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/627.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/108.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -374,13 +380,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/627:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/108:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVnRsUmwycmRKZGpOcHhwZXdydnFpcGlDX2hnVEdraUJaTFRWZ1AzaGQ3Ql9hVGM4N25MS1lKMThsOHpFT1I5SkdjZm9qWDlMZ3JZc09sNW8yb0ljOGlaZ3J3dHdLVDN1R3FSdlAyMDI5SW1Pam11RTRnUC02c3U1VlRQbTFQVnEyN1diU2FET28wSmtwYkVub3hlWGt1TXIwbTNCdThITkF0LXhMVk1EMnc4WVNHZGw5UGlFWHZHOVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WkVfc2lCWmxya2NVUXdCMmZNYmxfRTE3MkRrTFl5djgxY2ZqNy01b1FpSXc1UW5jTVFEUFV1dnFvMXB4YXNOdGVsMFZvSjNlY3MwVDJ2X0FsRU5RX1o2enpxZ3lQdjByeGNCSnZlMEY1QjlwWFVaVG1sdGdxY1ZINnlXUGZsWHBDRkh5eXBVdjhIMnhldml4bjVORkJGUW5hUzl6OTFNWURvY3FkbmhDZHc3ZXhpSnZtZVk4cTU4WUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -395,17 +401,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq1kRg5SkX0QMVUY976lJzdFr9Z_E8r68kePRaQJ6hkrySXPTpXglq91dx2bFy9vDf4dRWxk3cESeWhk8WmYBYhz3HowJwT1EKtGVo5oCa5TNnARC4" + "AEnB2UreINK7pJVCM0s_e5kC5MuHSg9MwliX904D0KYvcJzc7fduY74BuImHy8a5kStAInZ2-2Td97S5Isb8Ljprq24Uicp4Lg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTcuMDQ2WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjE3LjA0NloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDEiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDEiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTUuODM3WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIyOjU1LjgzN1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDEiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDEiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUU9Igp9Cg==" } }, { - "ID": "0594eaa98b455f85", + "ID": "5ccd6c9835c627fd", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0001?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0001?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -418,13 +424,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "570035b7298f18843cc671a911c30762/2374181297998657921;o=0" + "ff10dc1b83007e287be3ca4148d13632/14472408875698920024;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -433,7 +439,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0001?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0001?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -444,9 +450,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -458,7 +466,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:18 GMT" + "Wed, 25 Jul 2018 18:22:56 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -474,7 +482,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220457000" + "1532543276000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -483,16 +491,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrmm2:4409,/bns/yw/borg/yw/bns/blobstore2/bitpusher/623.scotty,acatli15:443" + "xhiadbad13:4405,/bns/xi/borg/xi/bns/blobstore2/bitpusher/86.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=fU41W5fYH4yihwS80rTIBg" + "eid=AMBYW5CeFK-1swbWtbjQDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/623.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/86.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -501,13 +509,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/623:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/86:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVnRsUmwycmRKZGpOcHhwZXdydnFpcGlDX2hnVEdraUJaTFRWZ1AzaGQ3Ql9hVGM4N25MS1lKMThsOHpFT1I5SkdjZm9qWDlMZ3JZc09sNW8yb0ljOGlaZ3J3dHdLVDN1R3FSdlAyMDI5SW1Pam11RTRnUC02c3U1VlRQbTFQVnEyN1diU2FET28wSmtwYkVub3hlWGt1TXIwbTNCdThITkF0LXhMVk1EMnc4WVNHZGw5UGlFWHZHOVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WkVfc2lCWmxya2NVUXdCMmZNYmxfRTE3MkRrTFl5djgxY2ZqNy01b1FpSXc1UW5jTVFEUFV1dnFvMXB4YXNOdGVsMFZvSjNlY3MwVDJ2X0FsRU5RX1o2enpxZ3lQdjByeGNCSnZlMEY1QjlwWFVaVG1sdGdxY1ZINnlXUGZsWHBDRkh5eXBVdjhIMnhldml4bjVORkJGUW5hUzl6OTFNWURvY3FkbmhDZHc3ZXhpSnZtZVk4cTU4WUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -522,14 +530,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqIYrHJ8DVSh6gqz0oxMZdpr3g2ob8k4gvBAsbLtYhbDyfv83sYyDWAWPmXjeVVZxqhAfjLHE-Wb11uc3RBtmLX4DI6aJICdAhJ8L-GNTQjJpbK0vo" + "AEnB2Uq4pYFBLd1Qs68nqfHZyNdcLxcKLzgdmfOfB6t6csamQBFtlWRwPrdieaDhbce2ZXbhbPb5BzWhHvCMLN_4PMJ8N5bWHw" ] }, "Body": "" } }, { - "ID": "a6b92d918142a520", + "ID": "d7fc86dbeaf709a3", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -551,13 +559,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "81e8e0333cc2c4eb7d144f976f500fee/3917258732376325281;o=0" + "67c4d3a8a81f260d4f918f39d1a35a4a/3666909394325412725;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -572,14 +580,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJsYWJlbHMiOnsiZW1wdHkiOiIiLCJsMSI6InYxIn0sImxpZmVjeWNsZSI6eyJydWxlIjpbeyJhY3Rpb24iOnsic3RvcmFnZUNsYXNzIjoiTkVBUkxJTkUiLCJ0eXBlIjoiU2V0U3RvcmFnZUNsYXNzIn0sImNvbmRpdGlvbiI6eyJhZ2UiOjEwLCJjcmVhdGVkQmVmb3JlIjoiMjAxNy0wMS0wMSIsImlzTGl2ZSI6ZmFsc2UsIm1hdGNoZXNTdG9yYWdlQ2xhc3MiOlsiTVVMVElfUkVHSU9OQUwiLCJTVEFOREFSRCJdLCJudW1OZXdlclZlcnNpb25zIjozfX0seyJhY3Rpb24iOnsidHlwZSI6IkRlbGV0ZSJ9LCJjb25kaXRpb24iOnsiYWdlIjozMCwiY3JlYXRlZEJlZm9yZSI6IjIwMTctMDEtMDEiLCJpc0xpdmUiOnRydWUsIm1hdGNoZXNTdG9yYWdlQ2xhc3MiOlsiTkVBUkxJTkUiXSwibnVtTmV3ZXJWZXJzaW9ucyI6MTB9fV19LCJsb2NhdGlvbiI6IlVTIiwibmFtZSI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMSIsInN0b3JhZ2VDbGFzcyI6Ik5FQVJMSU5FIiwidmVyc2lvbmluZyI6eyJlbmFibGVkIjp0cnVlfX0K" + "Body": "eyJsYWJlbHMiOnsiZW1wdHkiOiIiLCJsMSI6InYxIn0sImxpZmVjeWNsZSI6eyJydWxlIjpbeyJhY3Rpb24iOnsic3RvcmFnZUNsYXNzIjoiTkVBUkxJTkUiLCJ0eXBlIjoiU2V0U3RvcmFnZUNsYXNzIn0sImNvbmRpdGlvbiI6eyJhZ2UiOjEwLCJjcmVhdGVkQmVmb3JlIjoiMjAxNy0wMS0wMSIsImlzTGl2ZSI6ZmFsc2UsIm1hdGNoZXNTdG9yYWdlQ2xhc3MiOlsiTVVMVElfUkVHSU9OQUwiLCJTVEFOREFSRCJdLCJudW1OZXdlclZlcnNpb25zIjozfX0seyJhY3Rpb24iOnsidHlwZSI6IkRlbGV0ZSJ9LCJjb25kaXRpb24iOnsiYWdlIjozMCwiY3JlYXRlZEJlZm9yZSI6IjIwMTctMDEtMDEiLCJpc0xpdmUiOnRydWUsIm1hdGNoZXNTdG9yYWdlQ2xhc3MiOlsiTkVBUkxJTkUiXSwibnVtTmV3ZXJWZXJzaW9ucyI6MTB9fV19LCJsb2NhdGlvbiI6IlVTIiwibmFtZSI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMSIsInN0b3JhZ2VDbGFzcyI6Ik5FQVJMSU5FIiwidmVyc2lvbmluZyI6eyJlbmFibGVkIjp0cnVlfX0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -591,7 +601,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:18 GMT" + "Wed, 25 Jul 2018 18:22:57 GMT" ], "Etag": [ "CAE=" @@ -610,7 +620,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220457000" + "1532543275000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -619,16 +629,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrmm15:4085,/bns/yw/borg/yw/bns/blobstore2/bitpusher/138.scotty,acatli15:443" + "xgiadaau9:4168,/bns/xi/borg/xi/bns/blobstore2/bitpusher/61.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=fk41W5iWBYq-hQT_maLIAg" + "eid=AMBYW7bFLI24swa_vo3gCg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/138.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/61.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -637,13 +647,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/138:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/61:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVnRsUmwycmRKZGpOcHhwZXdydnFpcGlDX2hnVEdraUJaTFRWZ1AzaGQ3Ql9hVGM4N25MS1lKMThsOHpFT1I5SkdjZm9qWDlMZ3JZc09sNW8yb0ljOGlaZ3J3dHdLVDN1R3FSdlAyMDI5SW1Pam11RTRnUC02c3U1VlRQbTFQVnEyN1diU2FET28wSmtwYkVub3hlWGt1TXIwbTNCdThITkF0LXhMVk1EMnc4WVNHZGw5UGlFWHZHOVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WkVfc2lCWmxya2NVUXdCMmZNYmxfRTE3MkRrTFl5djgxY2ZqNy01b1FpSXc1UW5jTVFEUFV1dnFvMXB4YXNOdGVsMFZvSjNlY3MwVDJ2X0FsRU5RX1o2enpxZ3lQdjByeGNCSnZlMEY1QjlwWFVaVG1sdGdxY1ZINnlXUGZsWHBDRkh5eXBVdjhIMnhldml4bjVORkJGUW5hUzl6OTFNWURvY3FkbmhDZHc3ZXhpSnZtZVk4cTU4WUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -658,17 +668,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Upar5flAB4LbTgR4lpyZwBaf9dg7cs2MI3wdCsSMMogcFgj4nklYLLdN5s74qzcPVguCBXABHAb_tvPnWSk_k47APH-zsptB4asG6ANNpoR7J6RFKE" + "AEnB2UqEBTQUGhFZHeNRb66t2-3ZJyRac4_B6jr4W8ae-MBvso6bhr8TfdUZ_pXAgKXUzDwq7nglUjGu9YkHB-A8-ph_JvnQdQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTguNjg4WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjE4LjY4OFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJ2ZXJzaW9uaW5nIjogewogICJlbmFibGVkIjogdHJ1ZQogfSwKICJsaWZlY3ljbGUiOiB7CiAgInJ1bGUiOiBbCiAgIHsKICAgICJhY3Rpb24iOiB7CiAgICAgInR5cGUiOiAiU2V0U3RvcmFnZUNsYXNzIiwKICAgICAic3RvcmFnZUNsYXNzIjogIk5FQVJMSU5FIgogICAgfSwKICAgICJjb25kaXRpb24iOiB7CiAgICAgImFnZSI6IDEwLAogICAgICJjcmVhdGVkQmVmb3JlIjogIjIwMTctMDEtMDEiLAogICAgICJpc0xpdmUiOiBmYWxzZSwKICAgICAibWF0Y2hlc1N0b3JhZ2VDbGFzcyI6IFsKICAgICAgIk1VTFRJX1JFR0lPTkFMIiwKICAgICAgIlNUQU5EQVJEIgogICAgIF0sCiAgICAgIm51bU5ld2VyVmVyc2lvbnMiOiAzCiAgICB9CiAgIH0sCiAgIHsKICAgICJhY3Rpb24iOiB7CiAgICAgInR5cGUiOiAiRGVsZXRlIgogICAgfSwKICAgICJjb25kaXRpb24iOiB7CiAgICAgImFnZSI6IDMwLAogICAgICJjcmVhdGVkQmVmb3JlIjogIjIwMTctMDEtMDEiLAogICAgICJpc0xpdmUiOiB0cnVlLAogICAgICJtYXRjaGVzU3RvcmFnZUNsYXNzIjogWwogICAgICAiTkVBUkxJTkUiCiAgICAgXSwKICAgICAibnVtTmV3ZXJWZXJzaW9ucyI6IDEwCiAgICB9CiAgIH0KICBdCiB9LAogImxhYmVscyI6IHsKICAiZW1wdHkiOiAiIiwKICAibDEiOiAidjEiCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJORUFSTElORSIsCiAiZXRhZyI6ICJDQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTcuMjU0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIyOjU3LjI1NFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJ2ZXJzaW9uaW5nIjogewogICJlbmFibGVkIjogdHJ1ZQogfSwKICJsaWZlY3ljbGUiOiB7CiAgInJ1bGUiOiBbCiAgIHsKICAgICJhY3Rpb24iOiB7CiAgICAgInR5cGUiOiAiU2V0U3RvcmFnZUNsYXNzIiwKICAgICAic3RvcmFnZUNsYXNzIjogIk5FQVJMSU5FIgogICAgfSwKICAgICJjb25kaXRpb24iOiB7CiAgICAgImFnZSI6IDEwLAogICAgICJjcmVhdGVkQmVmb3JlIjogIjIwMTctMDEtMDEiLAogICAgICJpc0xpdmUiOiBmYWxzZSwKICAgICAibWF0Y2hlc1N0b3JhZ2VDbGFzcyI6IFsKICAgICAgIk1VTFRJX1JFR0lPTkFMIiwKICAgICAgIlNUQU5EQVJEIgogICAgIF0sCiAgICAgIm51bU5ld2VyVmVyc2lvbnMiOiAzCiAgICB9CiAgIH0sCiAgIHsKICAgICJhY3Rpb24iOiB7CiAgICAgInR5cGUiOiAiRGVsZXRlIgogICAgfSwKICAgICJjb25kaXRpb24iOiB7CiAgICAgImFnZSI6IDMwLAogICAgICJjcmVhdGVkQmVmb3JlIjogIjIwMTctMDEtMDEiLAogICAgICJpc0xpdmUiOiB0cnVlLAogICAgICJtYXRjaGVzU3RvcmFnZUNsYXNzIjogWwogICAgICAiTkVBUkxJTkUiCiAgICAgXSwKICAgICAibnVtTmV3ZXJWZXJzaW9ucyI6IDEwCiAgICB9CiAgIH0KICBdCiB9LAogImxhYmVscyI6IHsKICAibDEiOiAidjEiLAogICJlbXB0eSI6ICIiCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJORUFSTElORSIsCiAiZXRhZyI6ICJDQUU9Igp9Cg==" } }, { - "ID": "e4eee42f13bf4757", + "ID": "13f9c95dbd69ed1f", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0001?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0001?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -681,13 +691,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "6a77decf8644571905d0fbd5139b674a/5532112294388367296;o=0" + "10ed1448a1837388ead397213204dc1f/11307871412189961361;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -696,7 +706,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0001?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0001?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -707,9 +717,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -721,13 +733,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:19 GMT" + "Wed, 25 Jul 2018 18:22:57 GMT" ], "Etag": [ "CAE=" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:19 GMT" + "Wed, 25 Jul 2018 18:22:57 GMT" ], "Server": [ "UploadServer" @@ -737,7 +749,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220457000" + "1532543276000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -746,16 +758,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrlc6:4325,/bns/yw/borg/yw/bns/blobstore2/bitpusher/635.scotty,acatli15:443" + "xgiadaaw12:4143,/bns/xi/borg/xi/bns/blobstore2/bitpusher/95.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=fk41W8jVNsPrhAT61qjACQ" + "eid=AcBYW_PmGqy0swbR3ovADQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/635.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/95.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -764,13 +776,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/635:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/95:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVnRsUmwycmRKZGpOcHhwZXdydnFpcGlDX2hnVEdraUJaTFRWZ1AzaGQ3Ql9hVGM4N25MS1lKMThsOHpFT1I5SkdjZm9qWDlMZ3JZc09sNW8yb0ljOGlaZ3J3dHdLVDN1R3FSdlAyMDI5SW1Pam11RTRnUC02c3U1VlRQbTFQVnEyN1diU2FET28wSmtwYkVub3hlWGt1TXIwbTNCdThITkF0LXhMVk1EMnc4WVNHZGw5UGlFWHZHOVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WkVfc2lCWmxya2NVUXdCMmZNYmxfRTE3MkRrTFl5djgxY2ZqNy01b1FpSXc1UW5jTVFEUFV1dnFvMXB4YXNOdGVsMFZvSjNlY3MwVDJ2X0FsRU5RX1o2enpxZ3lQdjByeGNCSnZlMEY1QjlwWFVaVG1sdGdxY1ZINnlXUGZsWHBDRkh5eXBVdjhIMnhldml4bjVORkJGUW5hUzl6OTFNWURvY3FkbmhDZHc3ZXhpSnZtZVk4cTU4WUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -785,17 +797,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo8xe2oZZ6Sr9gc4Lya8AML2vB-PGV8KSkTlBm8Gd70bXS5y14RwgCLDqFAURG9CjSocSnp1_8BdMSGA6FzfS3va0nILzRa-bmchhQqzkJ_oLXEhMM" + "AEnB2UqekkAkoWYCmbKcL-3l3yUvk9FClHt1syqek0Zx_5vF1mzqci3PdW_bDTuwxdTvWehuNlYmPU575-KwpGhNMcqo0oHRKQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTguNjg4WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjE4LjY4OFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDEiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDEiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiB0cnVlCiB9LAogImxpZmVjeWNsZSI6IHsKICAicnVsZSI6IFsKICAgewogICAgImFjdGlvbiI6IHsKICAgICAidHlwZSI6ICJTZXRTdG9yYWdlQ2xhc3MiLAogICAgICJzdG9yYWdlQ2xhc3MiOiAiTkVBUkxJTkUiCiAgICB9LAogICAgImNvbmRpdGlvbiI6IHsKICAgICAiYWdlIjogMTAsCiAgICAgImNyZWF0ZWRCZWZvcmUiOiAiMjAxNy0wMS0wMSIsCiAgICAgImlzTGl2ZSI6IGZhbHNlLAogICAgICJtYXRjaGVzU3RvcmFnZUNsYXNzIjogWwogICAgICAiTVVMVElfUkVHSU9OQUwiLAogICAgICAiU1RBTkRBUkQiCiAgICAgXSwKICAgICAibnVtTmV3ZXJWZXJzaW9ucyI6IDMKICAgIH0KICAgfSwKICAgewogICAgImFjdGlvbiI6IHsKICAgICAidHlwZSI6ICJEZWxldGUiCiAgICB9LAogICAgImNvbmRpdGlvbiI6IHsKICAgICAiYWdlIjogMzAsCiAgICAgImNyZWF0ZWRCZWZvcmUiOiAiMjAxNy0wMS0wMSIsCiAgICAgImlzTGl2ZSI6IHRydWUsCiAgICAgIm1hdGNoZXNTdG9yYWdlQ2xhc3MiOiBbCiAgICAgICJORUFSTElORSIKICAgICBdLAogICAgICJudW1OZXdlclZlcnNpb25zIjogMTAKICAgIH0KICAgfQogIF0KIH0sCiAibGFiZWxzIjogewogICJsMSI6ICJ2MSIsCiAgImVtcHR5IjogIiIKIH0sCiAic3RvcmFnZUNsYXNzIjogIk5FQVJMSU5FIiwKICJldGFnIjogIkNBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTcuMjU0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIyOjU3LjI1NFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDEiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDEiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiB0cnVlCiB9LAogImxpZmVjeWNsZSI6IHsKICAicnVsZSI6IFsKICAgewogICAgImFjdGlvbiI6IHsKICAgICAidHlwZSI6ICJTZXRTdG9yYWdlQ2xhc3MiLAogICAgICJzdG9yYWdlQ2xhc3MiOiAiTkVBUkxJTkUiCiAgICB9LAogICAgImNvbmRpdGlvbiI6IHsKICAgICAiYWdlIjogMTAsCiAgICAgImNyZWF0ZWRCZWZvcmUiOiAiMjAxNy0wMS0wMSIsCiAgICAgImlzTGl2ZSI6IGZhbHNlLAogICAgICJtYXRjaGVzU3RvcmFnZUNsYXNzIjogWwogICAgICAiTVVMVElfUkVHSU9OQUwiLAogICAgICAiU1RBTkRBUkQiCiAgICAgXSwKICAgICAibnVtTmV3ZXJWZXJzaW9ucyI6IDMKICAgIH0KICAgfSwKICAgewogICAgImFjdGlvbiI6IHsKICAgICAidHlwZSI6ICJEZWxldGUiCiAgICB9LAogICAgImNvbmRpdGlvbiI6IHsKICAgICAiYWdlIjogMzAsCiAgICAgImNyZWF0ZWRCZWZvcmUiOiAiMjAxNy0wMS0wMSIsCiAgICAgImlzTGl2ZSI6IHRydWUsCiAgICAgIm1hdGNoZXNTdG9yYWdlQ2xhc3MiOiBbCiAgICAgICJORUFSTElORSIKICAgICBdLAogICAgICJudW1OZXdlclZlcnNpb25zIjogMTAKICAgIH0KICAgfQogIF0KIH0sCiAibGFiZWxzIjogewogICJsMSI6ICJ2MSIsCiAgImVtcHR5IjogIiIKIH0sCiAic3RvcmFnZUNsYXNzIjogIk5FQVJMSU5FIiwKICJldGFnIjogIkNBRT0iCn0K" } }, { - "ID": "d4561802dfb38485", + "ID": "5b957bdde178e6b7", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0001?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0001?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -808,13 +820,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "64744c8459ac15555a4ae98065fa6ecf/7075189733060936416;o=0" + "c7baa50c53056207ddce3e31cf985bdd/502371930816454062;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -823,7 +835,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0001?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0001?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -834,9 +846,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -848,7 +862,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:19 GMT" + "Wed, 25 Jul 2018 18:22:58 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -864,7 +878,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220457000" + "1532543275000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -873,16 +887,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrea13:4108,/bns/yw/borg/yw/bns/blobstore2/bitpusher/159.scotty,acatli15:443" + "xiiadcbj15:4375,/bns/xi/borg/xi/bns/blobstore2/bitpusher/7.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=f041W9G-DYbJN_DHnpAH" + "eid=AcBYW5uJK8GEygODroiYBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/159.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/7.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -891,13 +905,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/159:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/7:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVnRsUmwycmRKZGpOcHhwZXdydnFpcGlDX2hnVEdraUJaTFRWZ1AzaGQ3Ql9hVGM4N25MS1lKMThsOHpFT1I5SkdjZm9qWDlMZ3JZc09sNW8yb0ljOGlaZ3J3dHdLVDN1R3FSdlAyMDI5SW1Pam11RTRnUC02c3U1VlRQbTFQVnEyN1diU2FET28wSmtwYkVub3hlWGt1TXIwbTNCdThITkF0LXhMVk1EMnc4WVNHZGw5UGlFWHZHOVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WkVfc2lCWmxya2NVUXdCMmZNYmxfRTE3MkRrTFl5djgxY2ZqNy01b1FpSXc1UW5jTVFEUFV1dnFvMXB4YXNOdGVsMFZvSjNlY3MwVDJ2X0FsRU5RX1o2enpxZ3lQdjByeGNCSnZlMEY1QjlwWFVaVG1sdGdxY1ZINnlXUGZsWHBDRkh5eXBVdjhIMnhldml4bjVORkJGUW5hUzl6OTFNWURvY3FkbmhDZHc3ZXhpSnZtZVk4cTU4WUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -912,17 +926,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo0dUn-HtjyWUGeprKWaSAC9bVjvcK6KQbMto5d0Yn_o3FATKEYaaWyXVO49TLHK2HMfNydIOtlpwO6XUgtCBN2lN5w6N_r5hjWdq-Gg760GUah73M" + "AEnB2Uq6HfB-Ap7f0ZNVNiSbqyM7RddIfUm_H6R-Ujgs_voNIKsVzQTVYFR-DPZuKTyGsRLEnaS7cJhLMhAo5CSQqsrmzxfXHQ" ] }, "Body": "" } }, { - "ID": "ce9f8a7c7eabd607", + "ID": "8ef7059e09937a2f", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -935,13 +949,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "4776e7d2e5f109be406e23610b94c34c/8690323666259805440;o=0" + "ea2d385ffec5f59f94cc31d07de73ac4/8071277458449604298;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -950,7 +964,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -961,9 +975,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -975,13 +991,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:19 GMT" + "Wed, 25 Jul 2018 18:22:58 GMT" ], "Etag": [ "CAE=" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:19 GMT" + "Wed, 25 Jul 2018 18:22:58 GMT" ], "Server": [ "UploadServer" @@ -991,7 +1007,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220459000" + "1532543278000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -1000,16 +1016,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrcg4:4086,/bns/yw/borg/yw/bns/blobstore2/bitpusher/485.scotty,acatli15:443" + "xgiadabn9:4397,/bns/xi/borg/xi/bns/blobstore2/bitpusher/134.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=f041W4TaLNPFhgTc2byYBg" + "eid=AsBYW7LsC8q9swamsaLwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/485.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/134.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -1018,13 +1034,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/485:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/134:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVS1SZ1BGU1hJenM2V2NvXzlwTWlBcEwtQ1FpcUFZQk10ZE5HbG9SM2R2aGNFZjVEbTkwb2dmcHA4Q0ZwekhoS0p2UzZsbWRrSnk0cDdLTVRuWERNRWRuakVOVmt1WUctd1JuclgxZDJqNGtVMlhkMWpYR2kybUloTXpPVU9acEhRZllxRzczV2t2TUhBMVBHSzB6UUVrTXBGZ25fUmxadFNhQ3ZtTS1IUTJsOUFZQnRqM19IQ2o0M2MwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YWM5aWdTT2J2Q1Q5WVdBcjV4cmhvWUI0WmM3RXcxcFBXNUlwYTlnZ043VUJRMlRnZXpOOWF5d3c2Wmxxc25DVk50R0s1Z0RHZXQyZW9rTG9SVkxsTG1DLTM2b3RtQ3FpQ2JVUGRWUzdvTFN0T1Q5cjZRa1hSbFF6Ulc1LTN5QVRpNllNZEIyNVh6S2FzTWFVS1BEcHZPdTJIcUpUVHJ3dzBQMkNfek5ScHNZdGZ4QS1xenBvZm1uMU0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -1039,17 +1055,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urk67ktnXpE8GX9HoNpP-qT3FJ12_nPkWFUTNCnuIatUmr4CyWOvtvdRbGwAirnOnZjPVAFV3Cx_kIGTANjMVme0d_1YxzPU_oTyny_NlgSVWfnz6E" + "AEnB2UpTXNjLeGhcjCwi6QVHtwXOpN0GVBXgTkd__qZL58TII-4vOmDqpU7g8TrgwA2K6paygK9FqBlN6zIbK86ojYmTaaQBeA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTYuMzYzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjE2LjM2M1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTUuMDg0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIyOjU1LjA4NFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUU9Igp9Cg==" } }, { - "ID": "885192582708de64", + "ID": "04ff9054794c645a", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -1068,13 +1084,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3a71b0149d98b7864bc75c21dd6814db/10233401100637538335;o=0" + "82f51b269c16d363e16b7a82f9f5e091/15711959105127194599;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -1083,7 +1099,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -1094,9 +1110,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -1108,7 +1126,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:21 GMT" + "Wed, 25 Jul 2018 18:23:00 GMT" ], "Etag": [ "CAI=" @@ -1127,7 +1145,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220460000" + "1532543278000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -1136,16 +1154,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrir7:4320,/bns/yw/borg/yw/bns/blobstore2/bitpusher/66.scotty,acatli15:443" + "xiiadccb5:4366,/bns/xi/borg/xi/bns/blobstore2/bitpusher/18.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=gE41W5CVAYbUhQSJtoaQBA" + "eid=AsBYW-G5H-K8swbW8bjYCA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/66.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/18.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -1154,13 +1172,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/66:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/18:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVS1SZ1BGU1hJenM2V2NvXzlwTWlBcEwtQ1FpcUFZQk10ZE5HbG9SM2R2aGNFZjVEbTkwb2dmcHA4Q0ZwekhoS0p2UzZsbWRrSnk0cDdLTVRuWERNRWRuakVOVmt1WUctd1JuclgxZDJqNGtVMlhkMWpYR2kybUloTXpPVU9acEhRZllxRzczV2t2TUhBMVBHSzB6UUVrTXBGZ25fUmxadFNhQ3ZtTS1IUTJsOUFZQnRqM19IQ2o0M2MwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YWM5aWdTT2J2Q1Q5WVdBcjV4cmhvWUI0WmM3RXcxcFBXNUlwYTlnZ043VUJRMlRnZXpOOWF5d3c2Wmxxc25DVk50R0s1Z0RHZXQyZW9rTG9SVkxsTG1DLTM2b3RtQ3FpQ2JVUGRWUzdvTFN0T1Q5cjZRa1hSbFF6Ulc1LTN5QVRpNllNZEIyNVh6S2FzTWFVS1BEcHZPdTJIcUpUVHJ3dzBQMkNfek5ScHNZdGZ4QS1xenBvZm1uMU0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -1175,17 +1193,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur9ftxiajem1HYhAdYDKJwu6OHkBBk26Y2IclyxT_eh9LxtvMtiuUqE458QxNyHhXtv_WuRSfsORRqZTaXnwmZfE4Jx2w8y-luVpG2CQxN8WQskKb0" + "AEnB2UoKTHX-9MDM6QE2C8ISfPtUdOAV2c7fZbC9QF3CT_brFjz3tkOUkraUQ5V89ptzaqbYeNOScEZsDp3luRk4oLYTe8tvdw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTYuMzYzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjIxLjQyM1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTUuMDg0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjAwLjAzMFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "02c4837deb455fa0", + "ID": "2051f2e91a7fd4db", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -1204,13 +1222,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9f2c73a1f1c087566791d44d4d8a56a9/11848536133331258175;o=0" + "4f25fe138eb9bd2ea50934dfdd6174b5/4906458524258902019;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -1219,7 +1237,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -1230,9 +1248,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -1244,7 +1264,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:23 GMT" + "Wed, 25 Jul 2018 18:23:01 GMT" ], "Etag": [ "CAM=" @@ -1263,7 +1283,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220461000" + "1532543278000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -1272,16 +1292,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqq22:4024,/bns/yw/borg/yw/bns/blobstore2/bitpusher/129.scotty,acatli15:443" + "xgiadacd12:4335,/bns/xi/borg/xi/bns/blobstore2/bitpusher/56.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=gU41W8XOJtDXN_6_oYgI" + "eid=BMBYW9vuDa2yswaCrJ3IBA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/129.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/56.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -1290,13 +1310,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/129:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/56:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVS1SZ1BGU1hJenM2V2NvXzlwTWlBcEwtQ1FpcUFZQk10ZE5HbG9SM2R2aGNFZjVEbTkwb2dmcHA4Q0ZwekhoS0p2UzZsbWRrSnk0cDdLTVRuWERNRWRuakVOVmt1WUctd1JuclgxZDJqNGtVMlhkMWpYR2kybUloTXpPVU9acEhRZllxRzczV2t2TUhBMVBHSzB6UUVrTXBGZ25fUmxadFNhQ3ZtTS1IUTJsOUFZQnRqM19IQ2o0M2MwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YWM5aWdTT2J2Q1Q5WVdBcjV4cmhvWUI0WmM3RXcxcFBXNUlwYTlnZ043VUJRMlRnZXpOOWF5d3c2Wmxxc25DVk50R0s1Z0RHZXQyZW9rTG9SVkxsTG1DLTM2b3RtQ3FpQ2JVUGRWUzdvTFN0T1Q5cjZRa1hSbFF6Ulc1LTN5QVRpNllNZEIyNVh6S2FzTWFVS1BEcHZPdTJIcUpUVHJ3dzBQMkNfek5ScHNZdGZ4QS1xenBvZm1uMU0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -1311,17 +1331,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrKvUxRc_c9zaIsEAWtRuMMsEUQsO-5NxB5GSLP1Glk3ZIiz4DoDWmVKIxN9UhxwEn55wzfghL260iBjLTxTkBIQTCcUzyGxRYaK8tv867gYxKDSRU" + "AEnB2Uo6iofDM-ll3yT2tM4L5n4nfwmL38MpguL1YZVa9r0uaSCY2uP_9Izyeqv36VOYUzFSs8Inyd0Ws1yY65zA1JplMxFK7Q" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTYuMzYzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjIzLjEyNVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjMiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiB0cnVlCiB9LAogImxhYmVscyI6IHsKICAiZW1wdHkiOiAiIiwKICAibDEiOiAidjEiCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQU09Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTUuMDg0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjAxLjQyMloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjMiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiB0cnVlCiB9LAogImxhYmVscyI6IHsKICAibDEiOiAidjEiLAogICJlbXB0eSI6ICIiCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQU09Igp9Cg==" } }, { - "ID": "e446bf2316497466", + "ID": "5e8df13dfc8e224b", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -1340,13 +1360,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d4cf567837277835fa4308f895248b89/13463670066530192990;o=0" + "a6c178130b0518b4ded369bf47ff5743/12547421641618235680;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -1355,7 +1375,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -1366,9 +1386,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -1380,7 +1402,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:25 GMT" + "Wed, 25 Jul 2018 18:23:03 GMT" ], "Etag": [ "CAQ=" @@ -1399,7 +1421,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220460000" + "1532543281000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -1408,16 +1430,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrlx13:4318,/bns/yw/borg/yw/bns/blobstore2/bitpusher/615.scotty,acatli15:443" + "xhiadbbl15:4013,/bns/xi/borg/xi/bns/blobstore2/bitpusher/22.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=g041W-7DFMuGhASj3anICg" + "eid=BcBYW-OxJs24swaRxZCoAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/615.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/22.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -1426,13 +1448,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/615:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/22:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVS1SZ1BGU1hJenM2V2NvXzlwTWlBcEwtQ1FpcUFZQk10ZE5HbG9SM2R2aGNFZjVEbTkwb2dmcHA4Q0ZwekhoS0p2UzZsbWRrSnk0cDdLTVRuWERNRWRuakVOVmt1WUctd1JuclgxZDJqNGtVMlhkMWpYR2kybUloTXpPVU9acEhRZllxRzczV2t2TUhBMVBHSzB6UUVrTXBGZ25fUmxadFNhQ3ZtTS1IUTJsOUFZQnRqM19IQ2o0M2MwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YWM5aWdTT2J2Q1Q5WVdBcjV4cmhvWUI0WmM3RXcxcFBXNUlwYTlnZ043VUJRMlRnZXpOOWF5d3c2Wmxxc25DVk50R0s1Z0RHZXQyZW9rTG9SVkxsTG1DLTM2b3RtQ3FpQ2JVUGRWUzdvTFN0T1Q5cjZRa1hSbFF6Ulc1LTN5QVRpNllNZEIyNVh6S2FzTWFVS1BEcHZPdTJIcUpUVHJ3dzBQMkNfek5ScHNZdGZ4QS1xenBvZm1uMU0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -1447,17 +1469,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uoj6FYhYkhLWm0Klxd-dTzNZjQVaXPN10dz23hwG9zOFNfURAc05lNLOS2asdbcnhKzVMwVXRdoYcU5PIm7ImSIdy56G2IQoOWofcDDI7Tta6bJ0L8" + "AEnB2UrSszCGooybiZ2xpL-g0HvR8qg5WtbmtmhVC4JtHIOUdQKb073FTmB_TrAPb1b5DHlRwg7oJhhG2IGg10_yFBFpwsG51A" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTYuMzYzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI0LjgxOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjQiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FRPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FRPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBUT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVE9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FRPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVE9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiBmYWxzZQogfSwKICJsYWJlbHMiOiB7CiAgImwxIjogInYyIiwKICAibmV3IjogIm5ldyIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBUT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTUuMDg0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjAzLjEyM1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjQiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FRPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FRPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBUT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVE9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FRPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVE9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiBmYWxzZQogfSwKICJsYWJlbHMiOiB7CiAgImwxIjogInYyIiwKICAibmV3IjogIm5ldyIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBUT0iCn0K" } }, { - "ID": "7293d6ac37b9323f", + "ID": "34105e43f12b0b98", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -1476,13 +1498,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "def5710b438326c09f7de66f4c6f41d0/15006747505202762110;o=0" + "184e0ba4f8220422d9590b96a85d4532/1741922164539695676;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -1491,7 +1513,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -1502,9 +1524,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -1516,7 +1540,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:26 GMT" + "Wed, 25 Jul 2018 18:23:04 GMT" ], "Etag": [ "CAU=" @@ -1535,7 +1559,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220460000" + "1532543278000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -1544,16 +1568,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrb66:4113,/bns/yw/borg/yw/bns/blobstore2/bitpusher/211.scotty,acatli15:443" + "xgiadaao15:4469,/bns/xi/borg/xi/bns/blobstore2/bitpusher/149.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=hU41W8imAsKVN86YjeAJ" + "eid=B8BYW_3cE8y8swbYrr3oAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/211.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/149.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -1562,13 +1586,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/211:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/149:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVS1SZ1BGU1hJenM2V2NvXzlwTWlBcEwtQ1FpcUFZQk10ZE5HbG9SM2R2aGNFZjVEbTkwb2dmcHA4Q0ZwekhoS0p2UzZsbWRrSnk0cDdLTVRuWERNRWRuakVOVmt1WUctd1JuclgxZDJqNGtVMlhkMWpYR2kybUloTXpPVU9acEhRZllxRzczV2t2TUhBMVBHSzB6UUVrTXBGZ25fUmxadFNhQ3ZtTS1IUTJsOUFZQnRqM19IQ2o0M2MwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YWM5aWdTT2J2Q1Q5WVdBcjV4cmhvWUI0WmM3RXcxcFBXNUlwYTlnZ043VUJRMlRnZXpOOWF5d3c2Wmxxc25DVk50R0s1Z0RHZXQyZW9rTG9SVkxsTG1DLTM2b3RtQ3FpQ2JVUGRWUzdvTFN0T1Q5cjZRa1hSbFF6Ulc1LTN5QVRpNllNZEIyNVh6S2FzTWFVS1BEcHZPdTJIcUpUVHJ3dzBQMkNfek5ScHNZdGZ4QS1xenBvZm1uMU0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -1583,17 +1607,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoauiUoJ_ibIazo0pv_4PrjGN2IoAGcMHzq0zGJWy0TmKxyO9ElwzPb0mpEyuusjqtGr6p4zN8il0uKuJhdBoIu9D_VaA2OGlMZVPdjMrld_GhvCoE" + "AEnB2Uq_7gb_hAU1_dVXGeK-VdjvcL5uSv9NaD1PLOeWkMpjdw02DM3UpZC86t4iy3n_Bca76HjdjVoT9sspvsVJu5NklI4XJg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTYuMzYzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI2LjMyNVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjUiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiBmYWxzZQogfSwKICJsaWZlY3ljbGUiOiB7CiAgInJ1bGUiOiBbCiAgIHsKICAgICJhY3Rpb24iOiB7CiAgICAgInR5cGUiOiAiRGVsZXRlIgogICAgfSwKICAgICJjb25kaXRpb24iOiB7CiAgICAgImFnZSI6IDMwCiAgICB9CiAgIH0KICBdCiB9LAogImxhYmVscyI6IHsKICAibDEiOiAidjIiLAogICJuZXciOiAibmV3IgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FVPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTUuMDg0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA0LjYyNVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjUiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiBmYWxzZQogfSwKICJsaWZlY3ljbGUiOiB7CiAgInJ1bGUiOiBbCiAgIHsKICAgICJhY3Rpb24iOiB7CiAgICAgInR5cGUiOiAiRGVsZXRlIgogICAgfSwKICAgICJjb25kaXRpb24iOiB7CiAgICAgImFnZSI6IDMwCiAgICB9CiAgIH0KICBdCiB9LAogImxhYmVscyI6IHsKICAibDEiOiAidjIiLAogICJuZXciOiAibmV3IgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FVPSIKfQo=" } }, { - "ID": "fc1b1a45e393a465", + "ID": "276c43b1ffa1bd12", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -1603,19 +1627,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=cbbe4d535e9909e8273e811bca7bac1e632704a165a724f2f2a1c376ba31" + "multipart/related; boundary=c1ef58858cb7e8a18a17831e2d5ad00897c407b4ee60c4f58cafe2d1c780" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "467d045eca34aa94febc6bd512de5dee/15814174286200427405;o=0" + "2b6d53621406806ec1c910d65ec94c5d/5598290133490983882;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -1624,20 +1648,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1jYmJlNGQ1MzVlOTkwOWU4MjczZTgxMWJjYTdiYWMxZTYzMjcwNGExNjVhNzI0ZjJmMmExYzM3NmJhMzENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJjb25kZGVsIn0KDQotLWNiYmU0ZDUzNWU5OTA5ZTgyNzNlODExYmNhN2JhYzFlNjMyNzA0YTE2NWE3MjRmMmYyYTFjMzc2YmEzMQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQoNCmZvbw0KLS1jYmJlNGQ1MzVlOTkwOWU4MjczZTgxMWJjYTdiYWMxZTYzMjcwNGExNjVhNzI0ZjJmMmExYzM3NmJhMzEtLQ0K" + "Body": "LS1jMWVmNTg4NThjYjdlOGExOGExNzgzMWUyZDVhZDAwODk3YzQwN2I0ZWU2MGM0ZjU4Y2FmZTJkMWM3ODANCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJjb25kZGVsIn0KDQotLWMxZWY1ODg1OGNiN2U4YTE4YTE3ODMxZTJkNWFkMDA4OTdjNDA3YjRlZTYwYzRmNThjYWZlMmQxYzc4MA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQoNCmZvbw0KLS1jMWVmNTg4NThjYjdlOGExOGExNzgzMWUyZDVhZDAwODk3YzQwN2I0ZWU2MGM0ZjU4Y2FmZTJkMWM3ODAtLQ0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -1649,10 +1675,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:27 GMT" + "Wed, 25 Jul 2018 18:23:05 GMT" ], "Etag": [ - "CN3l7aui99sCEAE=" + "CIHA88HvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -1668,7 +1694,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220466000" + "1532543284000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -1677,19 +1703,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrbp63:4350,/bns/yw/borg/yw/bns/blobstore2/bitpusher/169.scotty,acatli15:443" + "xgiadabj12:4211,/bns/xi/borg/xi/bns/blobstore2/bitpusher/140.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=hk41W-HsJcjPhASU8bPwBw" + "eid=CMBYW_rNNoa9swbN3qfoAg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/169.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/140.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -1698,13 +1724,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/169:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/140:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBV0lpMk9IOEN4aGlpRmlNTldxV1ZiTDZtX0l4X19KUnJZQWhWTWJzME94M1RMM29kRDVnbk9oYnBRUFFzSXJfUlRsVVJmM3VRdEdOY3ZjNThyLTJZcUpSYWtCVVRWMXdyM2I5a0dJQ3lpX3ZPT1F3SHNIdFdKbzZ2VmtfeVJEZTZVMlFQdHduRTg0NzZOSmVISFlCLVVwT29JbTVLX29kRi1DaEdTbkR0anQ0WG10N0xCSDBJbTFzejQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YmwtYmZlSmtWb2M5WDNYcnVKaG5pUFpSNjNSbHFoR0dxcGkyQ3RUd3pJa0FDZXpkMkw1SnZLOW90MEgxTzlxbjNPZXRxRzJRd092Z1pVQm9CTHZvSmx0Zm9YVzVDVDZPZ0tPbzBJUy0zbjZBY3ZQc1lKRDhJN3dLVE9NNzJYSXplVExuYjNzVWdEdlM2c1NiV1hrY0tOb0ZfNm9fNXhVNW1YRFhuNko4Z1lQTkVPb3JJY0U1Wi1ScGswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -1719,17 +1745,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoEmCj35ggazuw8SVr1-0vMX7JUNgyWYvX0psNeA-OFShP8W4gMOPFFKgabnmRLoZdCdOIdxVuluiGzdekR0lKPm7_id2NYu2M_OiYYVfo5-47OxWw" + "AEnB2UqMON_zWKNvRxbt0O7jbsSGPTS4No0qGChbeBdI8yOPLG99F6O892998qlcsFVmckAE_rZ5kiJIwseo9kgadsTUk_s9Kw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb25kZGVsLzE1MzAyMjAxNjcwMDA3OTciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb25kZGVsIiwKICJuYW1lIjogImNvbmRkZWwiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2NzAwMDc5NyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyNy4wMDBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjcuMDAwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI3LjAwMFoiLAogInNpemUiOiAiMyIsCiAibWQ1SGFzaCI6ICJyTDBZMjB6QytGenQ3MlZQek1TazJBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29uZGRlbD9nZW5lcmF0aW9uPTE1MzAyMjAxNjcwMDA3OTcmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbmRkZWwvMTUzMDIyMDE2NzAwMDc5Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29uZGRlbC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY29uZGRlbCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjcwMDA3OTciLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNOM2w3YXVpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29uZGRlbC8xNTMwMjIwMTY3MDAwNzk3L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29uZGRlbC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbmRkZWwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY3MDAwNzk3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNOM2w3YXVpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29uZGRlbC8xNTMwMjIwMTY3MDAwNzk3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29uZGRlbC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbmRkZWwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY3MDAwNzk3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTjNsN2F1aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbmRkZWwvMTUzMDIyMDE2NzAwMDc5Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb25kZGVsL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbmRkZWwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY3MDAwNzk3IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTjNsN2F1aTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiejhTdUhRPT0iLAogImV0YWciOiAiQ04zbDdhdWk5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb25kZGVsLzE1MzI1NDI5ODUyMzIzODUiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb25kZGVsIiwKICJuYW1lIjogImNvbmRkZWwiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NTIzMjM4NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNS4yMzJaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDUuMjMyWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA1LjIzMloiLAogInNpemUiOiAiMyIsCiAibWQ1SGFzaCI6ICJyTDBZMjB6QytGenQ3MlZQek1TazJBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29uZGRlbD9nZW5lcmF0aW9uPTE1MzI1NDI5ODUyMzIzODUmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbmRkZWwvMTUzMjU0Mjk4NTIzMjM4NS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29uZGRlbC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY29uZGRlbCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODUyMzIzODUiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJSEE4OEh2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29uZGRlbC8xNTMyNTQyOTg1MjMyMzg1L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29uZGRlbC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbmRkZWwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg1MjMyMzg1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJSEE4OEh2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29uZGRlbC8xNTMyNTQyOTg1MjMyMzg1L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29uZGRlbC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbmRkZWwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg1MjMyMzg1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSUhBODhIdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbmRkZWwvMTUzMjU0Mjk4NTIzMjM4NS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb25kZGVsL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbmRkZWwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg1MjMyMzg1IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSUhBODhIdnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiejhTdUhRPT0iLAogImV0YWciOiAiQ0lIQTg4SHZ1dHdDRUFFPSIKfQo=" } }, { - "ID": "95afcb6c55a5f426", + "ID": "0553c8baa877e6eb", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/conddel?alt=json\u0026generation=1530220167000796", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/conddel?alt=json\u0026generation=1532542985232384", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -1742,13 +1768,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "97870c9e0f14a660a1f0da2aa9af4e21/16621881434106795165;o=0" + "d7025d22c7bddde31b785da565b7c9a5/9382884182404178777;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -1757,7 +1783,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/conddel?alt=json\u0026generation=1530220167000796" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/conddel?alt=json\u0026generation=1532542985232384" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -1768,9 +1794,11 @@ "Response": { "StatusCode": 404, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -1782,10 +1810,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:27 GMT" + "Wed, 25 Jul 2018 18:23:05 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:27 GMT" + "Wed, 25 Jul 2018 18:23:05 GMT" ], "Server": [ "UploadServer" @@ -1795,7 +1823,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220467000" + "1532543284000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -1804,16 +1832,16 @@ "998958384336" ], "X-Google-Backends": [ - "vryy6:4071,/bns/yw/borg/yw/bns/blobstore2/bitpusher/574.scotty,acatli15:443" + "xgiadacc2:4342,/bns/xi/borg/xi/bns/blobstore2/bitpusher/114.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=h041W_eYCMqfhQTz8pv4CA" + "eid=CcBYW5vRGay9swbny6vAAQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/574.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/114.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -1822,13 +1850,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/574:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/114:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBV0lpMk9IOEN4aGlpRmlNTldxV1ZiTDZtX0l4X19KUnJZQWhWTWJzME94M1RMM29kRDVnbk9oYnBRUFFzSXJfUlRsVVJmM3VRdEdOY3ZjNThyLTJZcUpSYWtCVVRWMXdyM2I5a0dJQ3lpX3ZPT1F3SHNIdFdKbzZ2VmtfeVJEZTZVMlFQdHduRTg0NzZOSmVISFlCLVVwT29JbTVLX29kRi1DaEdTbkR0anQ0WG10N0xCSDBJbTFzejQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YmwtYmZlSmtWb2M5WDNYcnVKaG5pUFpSNjNSbHFoR0dxcGkyQ3RUd3pJa0FDZXpkMkw1SnZLOW90MEgxTzlxbjNPZXRxRzJRd092Z1pVQm9CTHZvSmx0Zm9YVzVDVDZPZ0tPbzBJUy0zbjZBY3ZQc1lKRDhJN3dLVE9NNzJYSXplVExuYjNzVWdEdlM2c1NiV1hrY0tOb0ZfNm9fNXhVNW1YRFhuNko4Z1lQTkVPb3JJY0U1Wi1ScGswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -1843,17 +1871,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UocakxQExr0ez25XP0QcxcWsQst5f4MKbbjJ3b8fdbRFHTzkbuVFHmgt92HWZ33mj4lKZQ9v6S6CPoHiSf1AXj4P4aJ5NLgBLoF-JNwz2bZiA9Vyn0" + "AEnB2UrdyksvyvVGB9rEhOrCTdx5NXUKXdTqwPJdbNvlSdRMwcZL2bYMT6eiuIE3MbS2XiVlOmMQIs2d8OyE2-XBC7Or3h7rHg" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb25kZGVsIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6Ok9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29uZGRlbFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YTo4NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6MjcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmRlbGV0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTEzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb25kZGVsXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1OT1RfRk9VTkQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb25kZGVsXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbmRkZWxcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPW5vdEZvdW5kLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5OT1RfRk9VTkQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbmRkZWxcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29uZGRlbFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLm5hbWUsIG1lc3NhZ2U9Tm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb25kZGVsLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLm5hbWUsIG1lc3NhZ2U9Tm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb25kZGVsLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbmRkZWw6IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbmRkZWxcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29uZGRlbFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwNCwKICAibWVzc2FnZSI6ICJObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbmRkZWwiCiB9Cn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb25kZGVsIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6Ok9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29uZGRlbFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YTo4NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6MjcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmRlbGV0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTEzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb25kZGVsXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1OT1RfRk9VTkQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb25kZGVsXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbmRkZWxcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPW5vdEZvdW5kLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5OT1RfRk9VTkQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbmRkZWxcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29uZGRlbFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLm5hbWUsIG1lc3NhZ2U9Tm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb25kZGVsLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLm5hbWUsIG1lc3NhZ2U9Tm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb25kZGVsLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbmRkZWw6IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbmRkZWxcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29uZGRlbFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwNCwKICAibWVzc2FnZSI6ICJObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbmRkZWwiCiB9Cn0K" } }, { - "ID": "f489902c46dca10a", + "ID": "65476a6e19536095", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/conddel?alt=json\u0026ifMetagenerationMatch=2", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/conddel?alt=json\u0026ifMetagenerationMatch=2", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -1866,13 +1894,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "151d42a830b2c6d206add0167878d246/17429308215104394925;o=0" + "b502294055b3fa5ddff80a0cc98fa6dd/13239253255145219303;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -1881,7 +1909,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/conddel?alt=json\u0026ifMetagenerationMatch=2" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/conddel?alt=json\u0026ifMetagenerationMatch=2" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -1892,9 +1920,11 @@ "Response": { "StatusCode": 412, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -1906,10 +1936,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:27 GMT" + "Wed, 25 Jul 2018 18:23:05 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:27 GMT" + "Wed, 25 Jul 2018 18:23:05 GMT" ], "Server": [ "UploadServer" @@ -1919,7 +1949,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220466000" + "1532543284000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -1928,16 +1958,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrgg74:4491,/bns/yw/borg/yw/bns/blobstore2/bitpusher/94.scotty,acatli15:443" + "xiiadcbh13:4060,/bns/xi/borg/xi/bns/blobstore2/bitpusher/110.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=h041W_HnDsKKhATFuJ7wBw" + "eid=CcBYW7aeH6i9swbA1rXICg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/94.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/110.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -1946,13 +1976,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/94:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/110:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBV0lpMk9IOEN4aGlpRmlNTldxV1ZiTDZtX0l4X19KUnJZQWhWTWJzME94M1RMM29kRDVnbk9oYnBRUFFzSXJfUlRsVVJmM3VRdEdOY3ZjNThyLTJZcUpSYWtCVVRWMXdyM2I5a0dJQ3lpX3ZPT1F3SHNIdFdKbzZ2VmtfeVJEZTZVMlFQdHduRTg0NzZOSmVISFlCLVVwT29JbTVLX29kRi1DaEdTbkR0anQ0WG10N0xCSDBJbTFzejQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YmwtYmZlSmtWb2M5WDNYcnVKaG5pUFpSNjNSbHFoR0dxcGkyQ3RUd3pJa0FDZXpkMkw1SnZLOW90MEgxTzlxbjNPZXRxRzJRd092Z1pVQm9CTHZvSmx0Zm9YVzVDVDZPZ0tPbzBJUy0zbjZBY3ZQc1lKRDhJN3dLVE9NNzJYSXplVExuYjNzVWdEdlM2c1NiV1hrY0tOb0ZfNm9fNXhVNW1YRFhuNko4Z1lQTkVPb3JJY0U1Wi1ScGswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -1967,17 +1997,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UrtreDvscPIkTzKfF3LvYgOS-N4flSvGTYqwv9ESVC19wMSdNSYv9sfGF3_LATmvSC_zGpJ0qYB-1pO9S8ZsHlcNCEGuHWr3ujFt20bmFaMro614EM" + "AEnB2Uq1RBBlaxBOsxNmkwxs8tPKKQedfZoeRuY_lfqC7n03_MsisBYh75aySgYyfsIXyb57W3DmBl_bPzw8h7vcu6WUU9w8cg" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiY29uZGl0aW9uTm90TWV0IiwKICAgICJtZXNzYWdlIjogIlByZWNvbmRpdGlvbiBGYWlsZWQiLAogICAgImxvY2F0aW9uVHlwZSI6ICJoZWFkZXIiLAogICAgImxvY2F0aW9uIjogIklmLU1hdGNoIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OklOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IEV4cGVjdGVkIG1ldGFkYXRhIGdlbmVyYXRpb24gdG8gbWF0Y2ggMiwgYnV0IGFjdHVhbCB2YWx1ZSB3YXMgMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IElOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogRXhwZWN0ZWQgbWV0YWRhdGEgZ2VuZXJhdGlvbiB0byBtYXRjaCAyLCBidXQgYWN0dWFsIHZhbHVlIHdhcyAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UFJFQ09ORElUSU9OX0ZBSUxFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IElOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBFeHBlY3RlZCBtZXRhZGF0YSBnZW5lcmF0aW9uIHRvIG1hdGNoIDIsIGJ1dCBhY3R1YWwgdmFsdWUgd2FzIDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IEV4cGVjdGVkIG1ldGFkYXRhIGdlbmVyYXRpb24gdG8gbWF0Y2ggMiwgYnV0IGFjdHVhbCB2YWx1ZSB3YXMgMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPXByZWNvbmRpdGlvbkZhaWxlZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uQ09ORElUSU9OX05PVF9NRVQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IElOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBFeHBlY3RlZCBtZXRhZGF0YSBnZW5lcmF0aW9uIHRvIG1hdGNoIDIsIGJ1dCBhY3R1YWwgdmFsdWUgd2FzIDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IEV4cGVjdGVkIG1ldGFkYXRhIGdlbmVyYXRpb24gdG8gbWF0Y2ggMiwgYnV0IGFjdHVhbCB2YWx1ZSB3YXMgMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Q09ORElUSU9OX05PVF9NRVQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1udWxsLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249aGVhZGVycy5JZi1NYXRjaCwgbWVzc2FnZT1QcmVjb25kaXRpb24gRmFpbGVkLCByZWFzb249Y29uZGl0aW9uTm90TWV0LCBycGNDb2RlPTQxMn0gUHJlY29uZGl0aW9uIEZhaWxlZDogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OklOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IEV4cGVjdGVkIG1ldGFkYXRhIGdlbmVyYXRpb24gdG8gbWF0Y2ggMiwgYnV0IGFjdHVhbCB2YWx1ZSB3YXMgMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IElOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogRXhwZWN0ZWQgbWV0YWRhdGEgZ2VuZXJhdGlvbiB0byBtYXRjaCAyLCBidXQgYWN0dWFsIHZhbHVlIHdhcyAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQxMiwKICAibWVzc2FnZSI6ICJQcmVjb25kaXRpb24gRmFpbGVkIgogfQp9Cg==" } }, { - "ID": "77e7d2a8cd026dbf", + "ID": "c759910945a5e883", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/conddel?alt=json\u0026ifMetagenerationNotMatch=1", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/conddel?alt=json\u0026ifMetagenerationNotMatch=1", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -1990,13 +2020,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "88c2e0fe30fdb1ace690e681b05eb39f/18164959972274214845;o=0" + "f641fe2dc94d90815c2e7379537eb49f/17023847299763577973;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -2005,7 +2035,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/conddel?alt=json\u0026ifMetagenerationNotMatch=1" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/conddel?alt=json\u0026ifMetagenerationNotMatch=1" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -2016,9 +2046,11 @@ "Response": { "StatusCode": 304, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -2030,10 +2062,10 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:27 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:27 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" @@ -2043,7 +2075,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220467000" + "1532543285000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -2052,16 +2084,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrad2:4118,/bns/yw/borg/yw/bns/blobstore2/bitpusher/59.scotty,acatli15:443" + "xiiadcah4:4081,/bns/xi/borg/xi/bns/blobstore2/bitpusher/13.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=h041W6fIG8LvhASL0qegBw" + "eid=CcBYW4azLqu_swbmtYzYDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/59.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/13.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -2070,13 +2102,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/59:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/13:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBV0lpMk9IOEN4aGlpRmlNTldxV1ZiTDZtX0l4X19KUnJZQWhWTWJzME94M1RMM29kRDVnbk9oYnBRUFFzSXJfUlRsVVJmM3VRdEdOY3ZjNThyLTJZcUpSYWtCVVRWMXdyM2I5a0dJQ3lpX3ZPT1F3SHNIdFdKbzZ2VmtfeVJEZTZVMlFQdHduRTg0NzZOSmVISFlCLVVwT29JbTVLX29kRi1DaEdTbkR0anQ0WG10N0xCSDBJbTFzejQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YmwtYmZlSmtWb2M5WDNYcnVKaG5pUFpSNjNSbHFoR0dxcGkyQ3RUd3pJa0FDZXpkMkw1SnZLOW90MEgxTzlxbjNPZXRxRzJRd092Z1pVQm9CTHZvSmx0Zm9YVzVDVDZPZ0tPbzBJUy0zbjZBY3ZQc1lKRDhJN3dLVE9NNzJYSXplVExuYjNzVWdEdlM2c1NiV1hrY0tOb0ZfNm9fNXhVNW1YRFhuNko4Z1lQTkVPb3JJY0U1Wi1ScGswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -2091,17 +2123,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UokO39IHexblHEShFmtez_7szpL8GJyBEYNs5ro2TJxxBgww-9zO9Edf8WLA7vTWEkgUzJgQDmEtfJg6i1fEEsmewRdK1BHBc38wnUCIlw_K2Ow5tE" + "AEnB2UokIqNirCo2Afgimb1pcehTIzCJf1XPKIHiDLHddAH2q3fxkS9AspfpO2cdQdV3URPlwuXF1FgWrvLMre0f-qlss2iB-w" ] }, "Body": "" } }, { - "ID": "32d34045587e2f4c", + "ID": "e14c71c54ea09c03", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/conddel?alt=json\u0026generation=1530220167000797", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/conddel?alt=json\u0026generation=1532542985232385", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -2114,13 +2146,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "91dbc62daaaca34c89a4a82225456109/525923055044188620;o=0" + "fcbead8575decc7a16d4594b4a4748c0/2433752674276926723;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -2129,7 +2161,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/conddel?alt=json\u0026generation=1530220167000797" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/conddel?alt=json\u0026generation=1532542985232385" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -2140,9 +2172,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -2154,7 +2188,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -2170,7 +2204,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220467000" + "1532543284000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -2179,16 +2213,16 @@ "998958384336" ], "X-Google-Backends": [ - "vro65:4092,/bns/yw/borg/yw/bns/blobstore2/bitpusher/377.scotty,acatli15:443" + "xgiadabp15:4495,/bns/xi/borg/xi/bns/blobstore2/bitpusher/48.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=h041W5r2J4TRhATJ_5PIDA" + "eid=CsBYW4i7AoS2swbxoazoAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/377.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/48.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -2197,13 +2231,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/377:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/48:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBV0lpMk9IOEN4aGlpRmlNTldxV1ZiTDZtX0l4X19KUnJZQWhWTWJzME94M1RMM29kRDVnbk9oYnBRUFFzSXJfUlRsVVJmM3VRdEdOY3ZjNThyLTJZcUpSYWtCVVRWMXdyM2I5a0dJQ3lpX3ZPT1F3SHNIdFdKbzZ2VmtfeVJEZTZVMlFQdHduRTg0NzZOSmVISFlCLVVwT29JbTVLX29kRi1DaEdTbkR0anQ0WG10N0xCSDBJbTFzejQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YmwtYmZlSmtWb2M5WDNYcnVKaG5pUFpSNjNSbHFoR0dxcGkyQ3RUd3pJa0FDZXpkMkw1SnZLOW90MEgxTzlxbjNPZXRxRzJRd092Z1pVQm9CTHZvSmx0Zm9YVzVDVDZPZ0tPbzBJUy0zbjZBY3ZQc1lKRDhJN3dLVE9NNzJYSXplVExuYjNzVWdEdlM2c1NiV1hrY0tOb0ZfNm9fNXhVNW1YRFhuNko4Z1lQTkVPb3JJY0U1Wi1ScGswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -2218,17 +2252,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrGOZDuXz0QIACs6D64x_IsTamgFc2TsmEdD75evxJf4kJjRaoSrDTJ8LuKO556KzxoKpbgPwXdc4ZfosR-scmTP2bHZRkolC2hl4nxkMjdj8zuXSI" + "AEnB2UpcEdEtdYPra2fLzZ9Zgrs_QfnL6Bp9bReyG6LPwmWoRHfuWWMSc7_Z2321rPNnVTylUGs-NOgNzLL3wjsn9QQf0Zj1HA" ] }, "Body": "" } }, { - "ID": "f5c0b62392ca2593", + "ID": "6f1a8dc57e35929f", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -2238,19 +2272,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=6a20dd68f7c979879fc0c956ef2152235c6136aa1d285146943f1bc6b0f1" + "multipart/related; boundary=4423b00a47a2b0098ebfeb1b6779787b5166a555061dc3c726cdbe872835" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "26219656612ad02743a0bcc77da1b159/1333349836058565340;o=0" + "5e6c71761e9a6f8fa4372172271107ad/6218065248213476754;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -2259,20 +2293,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS02YTIwZGQ2OGY3Yzk3OTg3OWZjMGM5NTZlZjIxNTIyMzVjNjEzNmFhMWQyODUxNDY5NDNmMWJjNmIwZjENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJvYmoxIn0KDQotLTZhMjBkZDY4ZjdjOTc5ODc5ZmMwYzk1NmVmMjE1MjIzNWM2MTM2YWExZDI4NTE0Njk0M2YxYmM2YjBmMQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQoNCrNg930V187kDew/HV3qDtUNCi0tNmEyMGRkNjhmN2M5Nzk4NzlmYzBjOTU2ZWYyMTUyMjM1YzYxMzZhYTFkMjg1MTQ2OTQzZjFiYzZiMGYxLS0NCg==" + "Body": "LS00NDIzYjAwYTQ3YTJiMDA5OGViZmViMWI2Nzc5Nzg3YjUxNjZhNTU1MDYxZGMzYzcyNmNkYmU4NzI4MzUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJvYmoxIn0KDQotLTQ0MjNiMDBhNDdhMmIwMDk4ZWJmZWIxYjY3Nzk3ODdiNTE2NmE1NTUwNjFkYzNjNzI2Y2RiZTg3MjgzNQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQoNCqJf9Feb6Zw0U1TdYzAR9lINCi0tNDQyM2IwMGE0N2EyYjAwOThlYmZlYjFiNjc3OTc4N2I1MTY2YTU1NTA2MWRjM2M3MjZjZGJlODcyODM1LS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -2284,10 +2320,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:07 GMT" ], "Etag": [ - "CLmfy6yi99sCEAE=" + "CKPZ1cLvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -2303,7 +2339,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220468000" + "1532543286000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -2312,19 +2348,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrpa10:4215,/bns/yw/borg/yw/bns/blobstore2/bitpusher/87.scotty,acatli15:443" + "xhiadbbp16:4027,/bns/xi/borg/xi/bns/blobstore2/bitpusher/76.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=iE41W8GxD8zuhATb8oXwCw" + "eid=CsBYW4P4H7C5swaK1pn4CQ" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/87.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/76.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -2333,13 +2369,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/87:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/76:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -2354,17 +2390,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqZaopDVDmx9NAOzVHM8U5DRbgLvaVZ9_2aGtwOMEMdvChrqKYt62WBsnuI6mVwRVPQxWdNo1EmnaskSykMtmPaydFdm21ekHybYgJtrT4GFh4fi_k" + "AEnB2Ur-lGeQ8Zi_SkDCI5F9Tpu8sAEjnPEVdBOPJlMcnwEuZo-c-1dWE21JSS8Ynf1RCxNou3_x2LuaD3AAgah696wtvwklVA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxIiwKICJuYW1lIjogIm9iajEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOC41MjlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajE/Z2VuZXJhdGlvbj0xNTMwMjIwMTY4NTMxODk3JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogIm9iajEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTG1meTZ5aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTG1meTZ5aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIjBTRzRpdz09IiwKICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxIiwKICJuYW1lIjogIm9iajEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNi44NDBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajE/Z2VuZXJhdGlvbj0xNTMyNTQyOTg2ODQxMjUxJmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogIm9iajEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS1BaMWNMdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDS1BaMWNMdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkZMamV3QT09IiwKICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCn0K" } }, { - "ID": "d3043714055a0788", + "ID": "2f2b86fabe8034f7", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -2374,19 +2410,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=3a91a75601edfb8d7ea7dc372b04c63fdb448d7f012ecd0d694c69c63ebe" + "multipart/related; boundary=204ac4f95ae3b5c4b9d6fe0fcdb6d2018de5dcf919fbaa32ea3ee3ebb3d1" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "6698119df266a591c646374fd2b22ffc/2141058087737908460;o=0" + "66e8df151445ccf38c8b08411179976b/10074715791636260384;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -2395,20 +2431,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0zYTkxYTc1NjAxZWRmYjhkN2VhN2RjMzcyYjA0YzYzZmRiNDQ4ZDdmMDEyZWNkMGQ2OTRjNjljNjNlYmUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJvYmoyIn0KDQotLTNhOTFhNzU2MDFlZGZiOGQ3ZWE3ZGMzNzJiMDRjNjNmZGI0NDhkN2YwMTJlY2QwZDY5NGM2OWM2M2ViZQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQoNCmKE3my2HBY1doDVv6ftYG0NCi0tM2E5MWE3NTYwMWVkZmI4ZDdlYTdkYzM3MmIwNGM2M2ZkYjQ0OGQ3ZjAxMmVjZDBkNjk0YzY5YzYzZWJlLS0NCg==" + "Body": "LS0yMDRhYzRmOTVhZTNiNWM0YjlkNmZlMGZjZGI2ZDIwMThkZTVkY2Y5MTlmYmFhMzJlYTNlZTNlYmIzZDENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJvYmoyIn0KDQotLTIwNGFjNGY5NWFlM2I1YzRiOWQ2ZmUwZmNkYjZkMjAxOGRlNWRjZjkxOWZiYWEzMmVhM2VlM2ViYjNkMQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQoNCiKwxNJmSk4fX1+sgbziNRENCi0tMjA0YWM0Zjk1YWUzYjVjNGI5ZDZmZTBmY2RiNmQyMDE4ZGU1ZGNmOTE5ZmJhYTMyZWEzZWUzZWJiM2QxLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -2420,10 +2458,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:29 GMT" + "Wed, 25 Jul 2018 18:23:07 GMT" ], "Etag": [ - "CKqT6ayi99sCEAE=" + "CNL/9MLvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -2439,7 +2477,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220468000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -2448,19 +2486,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrlg5:4422,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "xgiadaba15:4126,/bns/xi/borg/xi/bns/blobstore2/bitpusher/78.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=iE41W7OLKcPdhQTRkIzQBQ" + "eid=C8BYW4CzA622swaWrLTYDA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/78.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -2469,13 +2507,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/178:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/78:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -2490,17 +2528,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UranMFbIP9_07rN-Kaa4woBw9zgofso8N_porArA_BXrBxUnAF5nPm-4Zbebt0rH7m_iCIXAoS_ogauMfzLmyx-iG8cjzLAzxtnf91BaZs9YZym934" + "AEnB2UrGmmOKBykibCEGOWCroqaSkcRdNkYtlnHLEIRNUx0LdFE-gGNfjiOg9Wk77fxWGuxPx8y_j2mLDzx-tGs8HltRTS1RAQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyIiwKICJuYW1lIjogIm9iajIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS4wMjFaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuMDIxWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAiZFNDT0V4QTExL00wZ0xZeHU3VEFYdz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajI/Z2VuZXJhdGlvbj0xNTMwMjIwMTY5MDIxODY2JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogIm9iajIiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS3FUNmF5aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDS3FUNmF5aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIk5FeEN3dz09IiwKICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyIiwKICJuYW1lIjogIm9iajIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzM1NDA2NiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy4zNTNaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAiZytVZmFTOHVpbGp0VXpxTVpyeVY3dz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajI/Z2VuZXJhdGlvbj0xNTMyNTQyOTg3MzU0MDY2JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogIm9iajIiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTkwvOU1MdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzM1NDA2NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTkwvOU1MdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzM1NDA2NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzM1NDA2NiIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIlNxaVo3dz09IiwKICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCn0K" } }, { - "ID": "c3483029a09f8b5e", + "ID": "4f75e30940504bef", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -2510,19 +2548,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=048769566a98658173dd0ed405503d3ce2f25325dd6c089f8dbd86963c8a" + "multipart/related; boundary=d594693bb097183419f68521c5b16cd2c1811c7107b10f1d9df72ea24cd6" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "6842fad30715381571df2b7ffd703b43/2948483769257434620;o=0" + "71fab8c2023d41cb8245e5a4dc2ba739/13859028369851000750;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -2531,20 +2569,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0wNDg3Njk1NjZhOTg2NTgxNzNkZDBlZDQwNTUwM2QzY2UyZjI1MzI1ZGQ2YzA4OWY4ZGJkODY5NjNjOGENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJvYmovd2l0aC9zbGFzaGVzIn0KDQotLTA0ODc2OTU2NmE5ODY1ODE3M2RkMGVkNDA1NTAzZDNjZTJmMjUzMjVkZDZjMDg5ZjhkYmQ4Njk2M2M4YQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQoNCkQ6mVQxst+8JZcK4+P54MANCi0tMDQ4NzY5NTY2YTk4NjU4MTczZGQwZWQ0MDU1MDNkM2NlMmYyNTMyNWRkNmMwODlmOGRiZDg2OTYzYzhhLS0NCg==" + "Body": "LS1kNTk0NjkzYmIwOTcxODM0MTlmNjg1MjFjNWIxNmNkMmMxODExYzcxMDdiMTBmMWQ5ZGY3MmVhMjRjZDYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJvYmovd2l0aC9zbGFzaGVzIn0KDQotLWQ1OTQ2OTNiYjA5NzE4MzQxOWY2ODUyMWM1YjE2Y2QyYzE4MTFjNzEwN2IxMGYxZDlkZjcyZWEyNGNkNg0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQoNCjJbplp3/Ko74wnmO3d6B+gNCi0tZDU5NDY5M2JiMDk3MTgzNDE5ZjY4NTIxYzViMTZjZDJjMTgxMWM3MTA3YjEwZjFkOWRmNzJlYTI0Y2Q2LS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -2556,10 +2596,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:29 GMT" + "Wed, 25 Jul 2018 18:23:07 GMT" ], "Etag": [ - "CL2via2i99sCEAE=" + "CKzki8PvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -2575,7 +2615,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220468000" + "1532543286000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -2584,19 +2624,19 @@ "998958384336" ], "X-Google-Backends": [ - "vru67:4406,/bns/yw/borg/yw/bns/blobstore2/bitpusher/265.scotty,acatli15:443" + "xhiadbbf15:4048,/bns/xi/borg/xi/bns/blobstore2/bitpusher/74.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=iU41W9uFEIObhATkprbADg" + "eid=C8BYW7WGHM6yswafrpjYBw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/265.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/74.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -2605,13 +2645,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/265:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/74:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -2626,17 +2666,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Upg5TgkFYrQM5BMY1_baJJNRzlXFd8c-5g14i2HmOzcMO7N60LVL_ekKmpasysor13g5z3aUXCZvItDPgy2Z3xn1sFGuMcHMPX4984JqzcQkN8yl-Q" + "AEnB2UpTlgIJ5q__2_cu1ydeT2DaNKIM_KIRmyVYOwv4aglKy6nwV3z7pmsuQePWltg2Bco89kklYW3gaMuOXOF-SKJMJKqQ6Q" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcyIsCiAibmFtZSI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuNTQ5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjU0OVoiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICJzaXplIjogIjE2IiwKICJtZDVIYXNoIjogIjY1akFkdktmRzZHaGFTNVcrRXpnNEE9PSIsCiAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcz9nZW5lcmF0aW9uPTE1MzAyMjAxNjk1NDk3NTcmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTDJ2aWEyaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTDJ2aWEyaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIit6aUk4UT09IiwKICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcyIsCiAibmFtZSI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuNzI3WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjcyN1oiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICJzaXplIjogIjE2IiwKICJtZDVIYXNoIjogIk1JYlJrcStvSmZPcVY5ZDkxTHBnOHc9PSIsCiAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcz9nZW5lcmF0aW9uPTE1MzI1NDI5ODc3Mjc0MDQmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogImh5L2VwQT09IiwKICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCn0K" } }, { - "ID": "1a137acd0380ec8f", + "ID": "7e73ecc9555cb9cf", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj%2Fwith%2Fslashes?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj%2Fwith%2Fslashes?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -2649,13 +2689,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3799ccf76cec57bfc77716c897d3ca12/4491561203635167259;o=0" + "d98a0ff38be2c6fb62c77263613d055f/3053527788982642891;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -2664,7 +2704,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj%2Fwith%2Fslashes?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj%2Fwith%2Fslashes?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -2675,9 +2715,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -2689,10 +2731,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:29 GMT" + "Wed, 25 Jul 2018 18:23:07 GMT" ], "Etag": [ - "CL2via2i99sCEAE=" + "CKzki8PvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -2708,7 +2750,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -2717,16 +2759,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrih23:4317,/bns/yw/borg/yw/bns/blobstore2/bitpusher/577.scotty,acatli15:443" + "xiiadcar15:4207,/bns/xi/borg/xi/bns/blobstore2/bitpusher/142.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=iU41W_3yLsGVhgSpl5CYAw" + "eid=C8BYW7LHMoq9swbt0Y3oAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/577.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/142.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -2735,13 +2777,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/577:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/142:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -2756,17 +2798,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq_irlpSMXrwME8HWOmSkJbYFxbNe5tzle05tqH-mFvHc0T21_sCHwLPIxoljvNOnTfA7HlNAEUE-451Svlo2X9IzNmtReTJRShOhzrObjfWwbQ9qI" + "AEnB2UqImeke8QEWb46J_vyALSCRWPv9N2wYy9MJWoktJtyGwBRvPLyokO9Tw5TlofwVZrY7eiWuGJRCKEldexFeBmhGg7ScvA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcyIsCiAibmFtZSI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuNTQ5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjU0OVoiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICJzaXplIjogIjE2IiwKICJtZDVIYXNoIjogIjY1akFkdktmRzZHaGFTNVcrRXpnNEE9PSIsCiAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcz9nZW5lcmF0aW9uPTE1MzAyMjAxNjk1NDk3NTcmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTDJ2aWEyaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTDJ2aWEyaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIit6aUk4UT09IiwKICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcyIsCiAibmFtZSI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuNzI3WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjcyN1oiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICJzaXplIjogIjE2IiwKICJtZDVIYXNoIjogIk1JYlJrcStvSmZPcVY5ZDkxTHBnOHc9PSIsCiAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcz9nZW5lcmF0aW9uPTE1MzI1NDI5ODc3Mjc0MDQmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogImh5L2VwQT09IiwKICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCn0K" } }, { - "ID": "8150b68568abb1f7", + "ID": "849ca28ccda01769", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -2779,13 +2821,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "06df82a7d8328bee655373cd63173861/6106696236328887099;o=0" + "97e52f6c3e24aeb6ab43c1eb6143bf4f/10694490906342042087;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -2794,7 +2836,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -2805,9 +2847,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -2819,10 +2863,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:29 GMT" + "Wed, 25 Jul 2018 18:23:07 GMT" ], "Etag": [ - "CLmfy6yi99sCEAE=" + "CKPZ1cLvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -2838,7 +2882,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -2847,16 +2891,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrnk10:4091,/bns/yw/borg/yw/bns/blobstore2/bitpusher/488.scotty,acatli15:443" + "xiiadcby9:4035,/bns/xi/borg/xi/bns/blobstore2/bitpusher/58.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=iU41W_STNsaJN5i7i4AF" + "eid=C8BYW4riN9C3swaYoYGgCA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/488.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/58.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -2865,13 +2909,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/488:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/58:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -2886,17 +2930,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrUEnDwjRAkAVD3asS3cF5gqyVf3cLvlkvnQHvSYWiYz4_I-otRA4FaiNTUDQBpF80iBEws08QyhBKcVcVGdbIJ4gmiQxkTJhUisKS5g9KuToUsMy8" + "AEnB2UrvQUaIou2Lrvqcu6UdlxwE1fvXRG4FaITE4o3mkBhzTICwN_tYP3CJLr8GIkITg7QTpbHhQZMnN7UGWfS3u5Zt3VuDpw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxIiwKICJuYW1lIjogIm9iajEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOC41MjlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajE/Z2VuZXJhdGlvbj0xNTMwMjIwMTY4NTMxODk3JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogIm9iajEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTG1meTZ5aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTG1meTZ5aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIjBTRzRpdz09IiwKICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxIiwKICJuYW1lIjogIm9iajEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNi44NDBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajE/Z2VuZXJhdGlvbj0xNTMyNTQyOTg2ODQxMjUxJmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogIm9iajEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS1BaMWNMdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDS1BaMWNMdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkZMamV3QT09IiwKICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCn0K" } }, { - "ID": "0ec45426baa60062", + "ID": "dbe76949137497e2", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj2?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj2?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -2909,13 +2953,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "e93bbc7db8ba8527ce1f59a10685e390/7649773675001521754;o=0" + "883ad357165d9079b5a4592ca1a319c3/18335452924206524932;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -2924,7 +2968,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj2?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj2?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -2935,9 +2979,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -2949,10 +2995,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:30 GMT" + "Wed, 25 Jul 2018 18:23:08 GMT" ], "Etag": [ - "CKqT6ayi99sCEAE=" + "CNL/9MLvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -2968,7 +3014,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -2977,16 +3023,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrhm7:4367,/bns/yw/borg/yw/bns/blobstore2/bitpusher/199.scotty,acatli15:443" + "xiiadcav14:4080,/bns/xi/borg/xi/bns/blobstore2/bitpusher/82.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=iU41W5KkPMaNhQTT7aKgCA" + "eid=C8BYW-3CPNC2swaw7bzYBQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/199.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/82.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -2995,13 +3041,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/199:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/82:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -3016,17 +3062,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrLNXRfHYVaTqkQi4m5cXrPGhacpzI_nY7u2jgIypAszhu_cguWs5Zpkeo8WfDAz-yrs6cKrrdv_9lYxEjUS3ijxYrs-IH3M5Hfkm_9zF3a9xkycmo" + "AEnB2Uq-2yQrvyVtaYR35AzZGKqzl7p6NEx8mVNa4Nmu1Jz2btVLcjWojTvf_s2cUSKzha5SSGJa1dvI_InqNkrp4gclrO8NPA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyIiwKICJuYW1lIjogIm9iajIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS4wMjFaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuMDIxWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAiZFNDT0V4QTExL00wZ0xZeHU3VEFYdz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajI/Z2VuZXJhdGlvbj0xNTMwMjIwMTY5MDIxODY2JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogIm9iajIiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS3FUNmF5aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDS3FUNmF5aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIk5FeEN3dz09IiwKICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyIiwKICJuYW1lIjogIm9iajIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzM1NDA2NiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy4zNTNaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAiZytVZmFTOHVpbGp0VXpxTVpyeVY3dz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajI/Z2VuZXJhdGlvbj0xNTMyNTQyOTg3MzU0MDY2JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogIm9iajIiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTkwvOU1MdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzM1NDA2NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTkwvOU1MdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzM1NDA2NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzM1NDA2NiIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIlNxaVo3dz09IiwKICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCn0K" } }, { - "ID": "13413fd8fc205d4b", + "ID": "fa0e97573079b40b", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -3039,13 +3085,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "299e7eede79a80e59a1affa714bcfea4/8457199356504270954;o=0" + "d68fec18352a51afb0fe5531c4e4a908/3745359398231501458;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -3054,7 +3100,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -3065,9 +3111,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -3079,10 +3127,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:30 GMT" + "Wed, 25 Jul 2018 18:23:08 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:30 GMT" + "Wed, 25 Jul 2018 18:23:08 GMT" ], "Server": [ "UploadServer" @@ -3092,7 +3140,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -3101,16 +3149,16 @@ "998958384336" ], "X-Google-Backends": [ - "vriv8:4034,/bns/yw/borg/yw/bns/blobstore2/bitpusher/159.scotty,acatli15:443" + "xgiadaad3:4296,/bns/xi/borg/xi/bns/blobstore2/bitpusher/129.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=ik41W8uXCIbJN_DHnpAH" + "eid=DMBYW8etBOe8swagtYXwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/159.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/129.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -3119,13 +3167,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/159:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/129:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -3140,17 +3188,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urhzq1uFKIpx_NGYAURKAGtuMliaGFM6V3ly_6lxR9zcqy0yhvrjy_GoGtbTFaI_sv2BvGfHU7r3BhKxHOVwjpYShE6u7P5GOu4Wubvfl4EMci_eyY" + "AEnB2UqHjOOUMtcegyDU44Mt6CP604l1RVPz7wUw6bCAPL_UstJ0JSgEz5CUSeeEJPc7o7ZGsPDHmTPjqnEeYPZvOT-3x8fGBg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjU0OVoiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIjY1akFkdktmRzZHaGFTNVcrRXpnNEE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMDIyMDE2OTU0OTc1NyZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIremlJOFE9PSIsCiAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzAyMjAxNjg1MzE4OTcmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIwU0c0aXc9PSIsCiAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuMDIxWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZFNDT0V4QTExL00wZ0xZeHU3VEFYdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzAyMjAxNjkwMjE4NjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjkwMjE4NjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJORXhDd3c9PSIsCiAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjcyN1oiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIk1JYlJrcStvSmZPcVY5ZDkxTHBnOHc9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMjU0Mjk4NzcyNzQwNCZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJoeS9lcEE9PSIsCiAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzI1NDI5ODY4NDEyNTEmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJGTGpld0E9PSIsCiAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZytVZmFTOHVpbGp0VXpxTVpyeVY3dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzI1NDI5ODczNTQwNjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJTcWlaN3c9PSIsCiAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "efc8ff87eedf37c2", + "ID": "c223e6cf2ca27ed6", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -3163,13 +3211,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3f7e9055fe1d7a8ede1936c44cc185ac/9264907608200391034;o=0" + "ad98fb57942df25865eafcdbcc680ed5/7529953447127984928;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -3178,7 +3226,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -3189,9 +3237,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -3203,10 +3253,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:30 GMT" + "Wed, 25 Jul 2018 18:23:08 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:30 GMT" + "Wed, 25 Jul 2018 18:23:08 GMT" ], "Server": [ "UploadServer" @@ -3216,7 +3266,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -3225,16 +3275,16 @@ "998958384336" ], "X-Google-Backends": [ - "vraz188:4355,/bns/yw/borg/yw/bns/blobstore2/bitpusher/172.scotty,acatli15:443" + "xiiadccb5:4366,/bns/xi/borg/xi/bns/blobstore2/bitpusher/43.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=ik41W8GqIIeHhgSr9ppQ" + "eid=DMBYW-miH-65swarrY6wBw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/172.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/43.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -3243,13 +3293,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/172:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/43:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -3264,17 +3314,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqefkcYLS45rcDAHsRzngQ-TgbEGa0icRNnIrXlgO19Mivt94_f3GzOqE6KJSKjYaUPAnt0QLXig1rX9rQLPsl7W_JGrNldVDmlWuMFLxm137NrI4A" + "AEnB2UrX-2wTFCWPBuosKhmtOFf7iaUR4j9RC27QjKMo4ABB42WuNC6DYAP4J6kLEDEZc16FjttEa5v8XB1QkLetCrZfMmGrgQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNoQnZZbW92ZDJsMGFDOXpiR0Z6YUdWeiIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqL3dpdGgvc2xhc2hlcy8xNTMwMjIwMTY5NTQ5NzU3IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcyIsCiAgICJuYW1lIjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuNTQ5WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuNTQ5WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInNpemUiOiAiMTYiLAogICAibWQ1SGFzaCI6ICI2NWpBZHZLZkc2R2hhUzVXK0V6ZzRBPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcz9nZW5lcmF0aW9uPTE1MzAyMjAxNjk1NDk3NTcmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDTDJ2aWEyaTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqL3dpdGgvc2xhc2hlcy8xNTMwMjIwMTY5NTQ5NzU3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDTDJ2aWEyaTk5c0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiK3ppSThRPT0iLAogICAiZXRhZyI6ICJDTDJ2aWEyaTk5c0NFQUU9IgogIH0KIF0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNoQnZZbW92ZDJsMGFDOXpiR0Z6YUdWeiIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqL3dpdGgvc2xhc2hlcy8xNTMyNTQyOTg3NzI3NDA0IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcyIsCiAgICJuYW1lIjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuNzI3WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuNzI3WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInNpemUiOiAiMTYiLAogICAibWQ1SGFzaCI6ICJNSWJSa3Erb0pmT3FWOWQ5MUxwZzh3PT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcz9nZW5lcmF0aW9uPTE1MzI1NDI5ODc3Mjc0MDQmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqL3dpdGgvc2xhc2hlcy8xNTMyNTQyOTg3NzI3NDA0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiaHkvZXBBPT0iLAogICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogIH0KIF0KfQo=" } }, { - "ID": "8b421c5c4e2659a2", + "ID": "c83209f180dfbea5", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=ChBvYmovd2l0aC9zbGFzaGVz\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=ChBvYmovd2l0aC9zbGFzaGVz\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -3287,13 +3337,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "978fd0e80e94e81d65dc7582a3e42cf1/10072334389198056329;o=0" + "deb04d516b868a65a4dc7f35a4b11d02/11314264921569749934;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -3302,7 +3352,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=ChBvYmovd2l0aC9zbGFzaGVz\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=ChBvYmovd2l0aC9zbGFzaGVz\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -3313,9 +3363,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -3327,10 +3379,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:31 GMT" + "Wed, 25 Jul 2018 18:23:09 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:31 GMT" + "Wed, 25 Jul 2018 18:23:09 GMT" ], "Server": [ "UploadServer" @@ -3340,7 +3392,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -3349,16 +3401,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbx62:4007,/bns/yw/borg/yw/bns/blobstore2/bitpusher/271.scotty,acatli15:443" + "xgiadaax14:4175,/bns/xi/borg/xi/bns/blobstore2/bitpusher/146.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=ik41W7KgOMW6N4SVrcgJ" + "eid=DMBYW9y4N8W8swaY9Jb4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/271.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/146.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -3367,13 +3419,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/271:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/146:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -3388,17 +3440,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uosb1GWyqrVurypP2l3JC-_-N9YoWX6Kx5s2E1BA8_Jk_1nt1f2OBXoSim5AGv2L4dONKW1rHHag2v3YGIYNGNbfYw8zi8lwdeEI9a__YtkuUL8R5A" + "AEnB2UpewhC4NHsn9gM5gIJIANYQFBjd8q6YpUG_S3FwzMVt8pVKwQhbBBxM9w5XnpNMd388YnATsUMfGVj5azt3S_KW1JKQKQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNnUnZZbW94IiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzAyMjAxNjg1MzE4OTcmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIwU0c0aXc9PSIsCiAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNnUnZZbW94IiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzI1NDI5ODY4NDEyNTEmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJGTGpld0E9PSIsCiAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "d1df84046d12168f", + "ID": "4a4374ada3d35207", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -3411,13 +3463,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "826851aa6dce4c2e43f12fb815888c20/10880041537104424089;o=0" + "e089e52ffc38649260a77e90746b01ee/15170915464992468029;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -3426,7 +3478,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -3437,9 +3489,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -3451,10 +3505,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:31 GMT" + "Wed, 25 Jul 2018 18:23:09 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:31 GMT" + "Wed, 25 Jul 2018 18:23:09 GMT" ], "Server": [ "UploadServer" @@ -3464,7 +3518,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -3473,16 +3527,16 @@ "998958384336" ], "X-Google-Backends": [ - "vran64:4046,/bns/yw/borg/yw/bns/blobstore2/bitpusher/444.scotty,acatli15:443" + "xiiadcbg14:4207,/bns/xi/borg/xi/bns/blobstore2/bitpusher/84.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=i041W7DSE9WyhgSNxaeACw" + "eid=DcBYW4eNE426swaDrquQCQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/444.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/84.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -3491,13 +3545,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/444:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/84:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -3512,17 +3566,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UppX_KJTA3k09SXNfARULQUmvPmkPvkMU3opXATrCwVbJNM5zgxWAVQLd83-vrYOSSbuysBGjp4o2TYliSwhGmxVZ68ryXTQJSXES3O5JwQ0u63N5w" + "AEnB2Uprb4RUySGsgb1AjgGWVJj1UqKMjFnQ5EkpG8MoAC6X0GWCmkbvmVOp2dTQow9gc8zUP-HPNGx-7_I9xHkd8WPngB3NWA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuMDIxWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZFNDT0V4QTExL00wZ0xZeHU3VEFYdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzAyMjAxNjkwMjE4NjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjkwMjE4NjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJORXhDd3c9PSIsCiAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZytVZmFTOHVpbGp0VXpxTVpyeVY3dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzI1NDI5ODczNTQwNjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJTcWlaN3c9PSIsCiAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "04d9031f5137a5f9", + "ID": "d09b8808607cb03b", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -3535,13 +3589,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c95ec7df07c4af058438ccfac7656ae6/11615411823575723689;o=0" + "b1bd5d02f20d5b983f508feec0cd4b2b/508765444491144395;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -3550,7 +3604,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -3561,9 +3615,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -3575,10 +3631,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:32 GMT" + "Wed, 25 Jul 2018 18:23:10 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:32 GMT" + "Wed, 25 Jul 2018 18:23:10 GMT" ], "Server": [ "UploadServer" @@ -3588,7 +3644,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -3597,16 +3653,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrdp6:4183,/bns/yw/borg/yw/bns/blobstore2/bitpusher/282.scotty,acatli15:443" + "xgiadaae9:4327,/bns/xi/borg/xi/bns/blobstore2/bitpusher/91.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=i041W-iCLMytN6euonA" + "eid=DcBYW56wK8K8swaH0qagBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/282.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/91.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -3615,13 +3671,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/282:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/91:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -3636,17 +3692,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Up05VGkB7YXb2vQPGys_WfbM82yYCarFdoy9HT16O-qsXExSje-ZtosvtNy6NTY9kGsAakz-8EnBeU88lx4HqfByDYoG0jDubhXhgHWqdbu78cqdUY" + "AEnB2Uq18kThVGAgliBfWIZuWpWYI9dCynk4dfHkvH3AbhqNsPuuXR1ZoCMMNNPYdpUaSDVVsGzF5zaG5qPu6QecD4htvRSloA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNoQnZZbW92ZDJsMGFDOXpiR0Z6YUdWeiIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqL3dpdGgvc2xhc2hlcy8xNTMwMjIwMTY5NTQ5NzU3IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcyIsCiAgICJuYW1lIjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuNTQ5WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuNTQ5WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInNpemUiOiAiMTYiLAogICAibWQ1SGFzaCI6ICI2NWpBZHZLZkc2R2hhUzVXK0V6ZzRBPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcz9nZW5lcmF0aW9uPTE1MzAyMjAxNjk1NDk3NTcmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDTDJ2aWEyaTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqL3dpdGgvc2xhc2hlcy8xNTMwMjIwMTY5NTQ5NzU3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDTDJ2aWEyaTk5c0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiK3ppSThRPT0iLAogICAiZXRhZyI6ICJDTDJ2aWEyaTk5c0NFQUU9IgogIH0KIF0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNoQnZZbW92ZDJsMGFDOXpiR0Z6YUdWeiIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqL3dpdGgvc2xhc2hlcy8xNTMyNTQyOTg3NzI3NDA0IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcyIsCiAgICJuYW1lIjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuNzI3WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuNzI3WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInNpemUiOiAiMTYiLAogICAibWQ1SGFzaCI6ICJNSWJSa3Erb0pmT3FWOWQ5MUxwZzh3PT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcz9nZW5lcmF0aW9uPTE1MzI1NDI5ODc3Mjc0MDQmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqL3dpdGgvc2xhc2hlcy8xNTMyNTQyOTg3NzI3NDA0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiaHkvZXBBPT0iLAogICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogIH0KIF0KfQo=" } }, { - "ID": "592249ac20bddfcf", + "ID": "4a5e252ca7f60968", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=ChBvYmovd2l0aC9zbGFzaGVz\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=ChBvYmovd2l0aC9zbGFzaGVz\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -3659,13 +3715,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3eb980ac4d3c6cac2c713bf35bf73c96/12423120075271843769;o=0" + "bf32752c22840955895891591f8e1b2d/4365134512937282905;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -3674,7 +3730,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=ChBvYmovd2l0aC9zbGFzaGVz\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=ChBvYmovd2l0aC9zbGFzaGVz\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -3685,9 +3741,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -3699,10 +3757,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:32 GMT" + "Wed, 25 Jul 2018 18:23:10 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:32 GMT" + "Wed, 25 Jul 2018 18:23:10 GMT" ], "Server": [ "UploadServer" @@ -3712,7 +3770,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -3721,16 +3779,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrkq18:4062,/bns/yw/borg/yw/bns/blobstore2/bitpusher/372.scotty,acatli15:443" + "xgiadabe13:4160,/bns/xi/borg/xi/bns/blobstore2/bitpusher/127.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=jE41W7uQB9bshgThiaaoCQ" + "eid=DsBYW8ObB8u8swbztoroAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/372.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/127.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -3739,13 +3797,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/372:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/127:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -3760,17 +3818,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrHa8GZSUitR0i0ta1F8toS3GsZOuzYvCdEaPUuQyagvrWyajl1pBv4qRHNfGmIqY-Nh57MqdTJxjkvlGYGTxPYzUGsn5XbfxQJ4u0avNMngtglAGM" + "AEnB2UqEDS97YpUfh3Qx7ArG4CA4C04_XInTYTEIG5O3boGZKsTMBDPcIvT-IyxbwyUG69PSbJMYZurLIEA-UDy1_yeWWBSfqQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNnUnZZbW94IiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzAyMjAxNjg1MzE4OTcmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIwU0c0aXc9PSIsCiAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNnUnZZbW94IiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzI1NDI5ODY4NDEyNTEmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJGTGpld0E9PSIsCiAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "90f376028d14eb70", + "ID": "91ec5142d27af885", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -3783,13 +3841,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "ea299add47cd4c16008a35c16ca5f5d3/13230545756774658504;o=0" + "814923b27d6c1b38b9f93731dbfcaa62/8149728561850543591;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -3798,7 +3856,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=1\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -3809,9 +3867,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -3823,10 +3883,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:32 GMT" + "Wed, 25 Jul 2018 18:23:10 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:32 GMT" + "Wed, 25 Jul 2018 18:23:10 GMT" ], "Server": [ "UploadServer" @@ -3836,7 +3896,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -3845,16 +3905,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrjo78:4395,/bns/yw/borg/yw/bns/blobstore2/bitpusher/357.scotty,acatli15:443" + "xiiadcai3:4242,/bns/xi/borg/xi/bns/blobstore2/bitpusher/97.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=jE41W-PmH8rIhgS6grugDA" + "eid=DsBYW5mNH4yzswa9zLiYAQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/357.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/97.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -3863,13 +3923,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/357:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/97:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -3884,17 +3944,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqwV4y6wPcZSfrXOSH-pSph8YR3o9tZa8lbHkX4zMmbqmzASp7sUmInchtseiaMlPQKIilrTnVoiueumx2Biwj3WZGcp5eQFpQeuBSpO2DWOJE4YiQ" + "AEnB2UrMX9KerK8jH0YtikfJQuWtUJdhkcsobbmDkMVb8Ss1flTwOZ_CWHBB4-bN7LN6LysPiY8t6UdIpc42EZ5zctAxyhe4vw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuMDIxWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZFNDT0V4QTExL00wZ0xZeHU3VEFYdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzAyMjAxNjkwMjE4NjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjkwMjE4NjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJORXhDd3c9PSIsCiAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZytVZmFTOHVpbGp0VXpxTVpyeVY3dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzI1NDI5ODczNTQwNjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJTcWlaN3c9PSIsCiAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "2d51eb030b67ca32", + "ID": "5fc095833330f7e4", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -3907,13 +3967,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "82035445dbd767768e821b927095d7f3/14038254008470778584;o=0" + "2a33f78b124518fddb81897735ec0ca0/12006096530801766006;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -3922,7 +3982,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -3933,9 +3993,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -3947,10 +4009,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:33 GMT" + "Wed, 25 Jul 2018 18:23:11 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:33 GMT" + "Wed, 25 Jul 2018 18:23:11 GMT" ], "Server": [ "UploadServer" @@ -3960,7 +4022,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -3969,16 +4031,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbj6:4034,/bns/yw/borg/yw/bns/blobstore2/bitpusher/25.scotty,acatli15:443" + "xiiadcbh15:4099,/bns/xi/borg/xi/bns/blobstore2/bitpusher/71.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=jE41W62iOJLuhATIx7SoDA" + "eid=DsBYW9KDOeu5swaj8KQw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/25.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/71.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -3987,13 +4049,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/25:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/71:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -4008,17 +4070,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur1LRoBMWwTPLn3xkUa8JxLYcyL1UpOW4INLhckG6de0XC6xkX1AkoZv14C35uJ7JSMkqRvb0mRKdXQx5NCIDdOqOqi5sbqiNZmk8T-1INTCQUO_wo" + "AEnB2UpBYvDwMECKaACpJipOby_ockkdLt6RSZs_MCIC_ZVj8bKtTJgDOiDoj2XuP9AD0Uo-GGbgvp0_f2rc6SokTdRgjBrjng" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNnUnZZbW94IiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjU0OVoiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIjY1akFkdktmRzZHaGFTNVcrRXpnNEE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMDIyMDE2OTU0OTc1NyZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIremlJOFE9PSIsCiAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzAyMjAxNjg1MzE4OTcmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIwU0c0aXc9PSIsCiAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNnUnZZbW94IiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjcyN1oiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIk1JYlJrcStvSmZPcVY5ZDkxTHBnOHc9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMjU0Mjk4NzcyNzQwNCZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJoeS9lcEE9PSIsCiAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzI1NDI5ODY4NDEyNTEmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJGTGpld0E9PSIsCiAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "e6620a388569db46", + "ID": "0787b875c5bc177d", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -4031,13 +4093,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9e64e891adcfa1b5cd01bd60e0f9b99d/14773623195447227624;o=0" + "628e8715ed7891f5b690c673e653e530/15790690579698249476;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -4046,7 +4108,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -4057,9 +4119,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -4071,10 +4135,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:33 GMT" + "Wed, 25 Jul 2018 18:23:11 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:33 GMT" + "Wed, 25 Jul 2018 18:23:11 GMT" ], "Server": [ "UploadServer" @@ -4084,7 +4148,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -4093,16 +4157,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrb72:4249,/bns/yw/borg/yw/bns/blobstore2/bitpusher/4.scotty,acatli15:443" + "xiiadcba13:4101,/bns/xi/borg/xi/bns/blobstore2/bitpusher/80.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=jU41W-P3E4rvhAT60qWICA" + "eid=D8BYW4W0FOyyswbR54r4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/4.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/80.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -4111,13 +4175,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/4:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/80:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -4132,17 +4196,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur3qvOrK7pxdk8gJd0v0NuoLLifLkoqPPyKvRNgzUsqXIJwFQHL3DHgb6y8zaOFKHrjqLEHAihl2GDQPElz3vLYzqiHw1_N_SCPxZgFGdR8-413emw" + "AEnB2UpR0XxBqYMX4BYIrF9W2WixeN_osBWc0D1g9H6I2nrOo_zrFjqmVgU6QAo2MY8ou5M0rNTCPyF60Grq8mKiMogwWyGDJw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuMDIxWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZFNDT0V4QTExL00wZ0xZeHU3VEFYdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzAyMjAxNjkwMjE4NjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjkwMjE4NjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJORXhDd3c9PSIsCiAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZytVZmFTOHVpbGp0VXpxTVpyeVY3dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzI1NDI5ODczNTQwNjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJTcWlaN3c9PSIsCiAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "86becefc237bd364", + "ID": "1a4db303f96ea0a2", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -4155,13 +4219,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "baf957ec60006b74fc8e9ba81a23e8df/15581049976461604344;o=0" + "db4a8beb70e247b231ed7531c9c97ef2/1200597053723226002;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -4170,7 +4234,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -4181,9 +4245,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -4195,10 +4261,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:34 GMT" + "Wed, 25 Jul 2018 18:23:12 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:34 GMT" + "Wed, 25 Jul 2018 18:23:12 GMT" ], "Server": [ "UploadServer" @@ -4208,7 +4274,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -4217,16 +4283,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqi11:4293,/bns/yw/borg/yw/bns/blobstore2/bitpusher/129.scotty,acatli15:443" + "xiiadcby9:4035,/bns/xi/borg/xi/bns/blobstore2/bitpusher/63.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=jU41W_iLLNDXN_6_oYgI" + "eid=D8BYW9aqK86zswbii4FI" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/129.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/63.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -4235,13 +4301,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/129:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/63:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -4256,17 +4322,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UppRHDugDAdknaDx9ZuQi1hauyRY8Ors2_1_RynX5jt5pTncgR7qgy0AkMjpqKXddjaVrKAmoSP0hQkOC1OmodNqitSN9Py2kJ9BFPqfkT0ugOfeuw" + "AEnB2Uq6RdzAN4jDeo6NOIT6NnSTrgXNgsgxYl3HopVuU_vVj01WaBjM70M-I59_GaMayO8ZQpTdgibVIo-Lkm3DcgDzZNyqWA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNnUnZZbW94IiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjU0OVoiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIjY1akFkdktmRzZHaGFTNVcrRXpnNEE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMDIyMDE2OTU0OTc1NyZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIremlJOFE9PSIsCiAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzAyMjAxNjg1MzE4OTcmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIwU0c0aXc9PSIsCiAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJuZXh0UGFnZVRva2VuIjogIkNnUnZZbW94IiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjcyN1oiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIk1JYlJrcStvSmZPcVY5ZDkxTHBnOHc9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMjU0Mjk4NzcyNzQwNCZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJoeS9lcEE9PSIsCiAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzI1NDI5ODY4NDEyNTEmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJGTGpld0E9PSIsCiAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "e78229e57bf974a4", + "ID": "5d243927db122d7b", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -4279,13 +4345,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "09be85a7548e3976936076cb5f6cdced/16388758228141012743;o=0" + "a2890f9b475154d7616acd2eafe0de60/4985191098324807712;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -4294,7 +4360,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=2\u0026pageToken=CgRvYmox\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -4305,9 +4371,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -4319,10 +4387,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:34 GMT" + "Wed, 25 Jul 2018 18:23:12 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:34 GMT" + "Wed, 25 Jul 2018 18:23:12 GMT" ], "Server": [ "UploadServer" @@ -4332,7 +4400,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -4341,16 +4409,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrdx5:4442,/bns/yw/borg/yw/bns/blobstore2/bitpusher/303.scotty,acatli15:443" + "xhiadbba4:4153,/bns/xi/borg/xi/bns/blobstore2/bitpusher/69.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=jk41W-OICIn2hASxs6mIBQ" + "eid=EMBYW8KdB6O9swa9vaKYDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/303.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/69.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -4359,13 +4427,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/303:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/69:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -4380,17 +4448,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqkjDpaf7gZHMwLOk2SPlnp0_0GTRJ9eyZDvyqQcU7aoCY21T8M72EQPZ5lmpvQsES_1k7GF-I7n2tJd0vPj-ILKgEAWhLvgIeZri5K3KamLmEpEo8" + "AEnB2Ur72YZ5CGf-nH9R6zWo7QxlgclJ-9dqKKYegu6aYRu556ayNvwo28ZKtNVdlSBpOOfWOabd1xcx3_ZD0DV6-PCDOgKB5A" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuMDIxWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZFNDT0V4QTExL00wZ0xZeHU3VEFYdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzAyMjAxNjkwMjE4NjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjkwMjE4NjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJORXhDd3c9PSIsCiAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZytVZmFTOHVpbGp0VXpxTVpyeVY3dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzI1NDI5ODczNTQwNjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJTcWlaN3c9PSIsCiAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "60d80c39ecceb057", + "ID": "e63408be0eac34d7", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=3\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=3\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -4403,13 +4471,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "82715ce074809478346276b957d4fbc8/17196183905365637143;o=0" + "f81795c6bda0b7ed4644a53a5b67b84a/8841559071587709103;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -4418,7 +4486,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=3\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=3\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -4429,9 +4497,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -4443,10 +4513,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:34 GMT" + "Wed, 25 Jul 2018 18:23:12 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:34 GMT" + "Wed, 25 Jul 2018 18:23:12 GMT" ], "Server": [ "UploadServer" @@ -4456,7 +4526,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -4465,16 +4535,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrjd10:4494,/bns/yw/borg/yw/bns/blobstore2/bitpusher/461.scotty,acatli15:443" + "xhiadbcc3:4358,/bns/xi/borg/xi/bns/blobstore2/bitpusher/106.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=jk41W6TZH8aNhAT3nLboBA" + "eid=EMBYW8j1IMm9swbZ6qrAAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/461.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/106.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -4483,13 +4553,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/461:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/106:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -4504,17 +4574,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrUEQEsnXQMujKiw-fvVdfk80hrML9Q_nxq1lBctTGOsHxTLCIQVSkHfzMYGnOhu2fF00B65yrXJYUAym9PwfolQDph5Xv8TZQZaHYZY_qn6--WxoM" + "AEnB2UpnFYB9qy1Eqp-RRc08G_Ez3rjo2pb6L89KbqnjLp-w_iIRL97Pm251AmY8GL1ATcV5XQF6cbxNqbgd8NloWivPEeX6eA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjU0OVoiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIjY1akFkdktmRzZHaGFTNVcrRXpnNEE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMDIyMDE2OTU0OTc1NyZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIremlJOFE9PSIsCiAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzAyMjAxNjg1MzE4OTcmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIwU0c0aXc9PSIsCiAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuMDIxWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZFNDT0V4QTExL00wZ0xZeHU3VEFYdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzAyMjAxNjkwMjE4NjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjkwMjE4NjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJORXhDd3c9PSIsCiAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjcyN1oiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIk1JYlJrcStvSmZPcVY5ZDkxTHBnOHc9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMjU0Mjk4NzcyNzQwNCZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJoeS9lcEE9PSIsCiAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzI1NDI5ODY4NDEyNTEmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJGTGpld0E9PSIsCiAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZytVZmFTOHVpbGp0VXpxTVpyeVY3dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzI1NDI5ODczNTQwNjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJTcWlaN3c9PSIsCiAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "a04eaf3b4ae44091", + "ID": "bc997e779916ea8c", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=3\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=3\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -4527,13 +4597,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "cdef4382eea54e043aa73d55836c6321/18003892157044980263;o=0" + "cd3d566d9767758ee84d4c1d35da3360/12625871649802449213;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -4542,7 +4612,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=3\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=3\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -4553,9 +4623,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -4567,10 +4639,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:35 GMT" + "Wed, 25 Jul 2018 18:23:13 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:35 GMT" + "Wed, 25 Jul 2018 18:23:13 GMT" ], "Server": [ "UploadServer" @@ -4580,7 +4652,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -4589,16 +4661,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrrw17:4231,/bns/yw/borg/yw/bns/blobstore2/bitpusher/574.scotty,acatli15:443" + "xgiadaad9:4278,/bns/xi/borg/xi/bns/blobstore2/bitpusher/3.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=jk41W4LqOMqfhQTz8pv4CA" + "eid=EcBYW-VfooXKA6aqg-gE" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/574.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/3.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -4607,13 +4679,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/574:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/3:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -4628,17 +4700,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrbMdn-b99ajZVYCxF3REWI4Ext84-NrkzOnoblBEoY_qv5m2uDgztDa1xRFVO6a7CMoSeoAC7yIx89WHuE-DjI7-o0GOgsG2Ogypx6BqWMUBarZWQ" + "AEnB2UqG9LHiLgtluezAUcsj6Tbdr9ikg4bDD752eCj7TyO6EOKlstBa3KVNdw6R1HmJTHO29I-lqQNh7kpjvHOybaZy1axocQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjU0OVoiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIjY1akFkdktmRzZHaGFTNVcrRXpnNEE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMDIyMDE2OTU0OTc1NyZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIremlJOFE9PSIsCiAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzAyMjAxNjg1MzE4OTcmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIwU0c0aXc9PSIsCiAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuMDIxWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZFNDT0V4QTExL00wZ0xZeHU3VEFYdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzAyMjAxNjkwMjE4NjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjkwMjE4NjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJORXhDd3c9PSIsCiAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjcyN1oiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIk1JYlJrcStvSmZPcVY5ZDkxTHBnOHc9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMjU0Mjk4NzcyNzQwNCZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJoeS9lcEE9PSIsCiAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzI1NDI5ODY4NDEyNTEmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJGTGpld0E9PSIsCiAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZytVZmFTOHVpbGp0VXpxTVpyeVY3dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzI1NDI5ODczNTQwNjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJTcWlaN3c9PSIsCiAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "461bef1c57ca975b", + "ID": "b00fee0e53993c5c", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=13\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=13\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -4651,13 +4723,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "0dd9f04e40b8fae3203af922ffe24c59/292799844800215863;o=0" + "f13c59eaf450225b9ac559d293fd1804/16482522188947108299;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -4666,7 +4738,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=13\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=13\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -4677,9 +4749,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -4691,10 +4765,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:35 GMT" + "Wed, 25 Jul 2018 18:23:13 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:35 GMT" + "Wed, 25 Jul 2018 18:23:13 GMT" ], "Server": [ "UploadServer" @@ -4704,7 +4778,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -4713,16 +4787,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrrx10:4196,/bns/yw/borg/yw/bns/blobstore2/bitpusher/432.scotty,acatli15:443" + "xiiadcaq16:4442,/bns/xi/borg/xi/bns/blobstore2/bitpusher/136.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=j041W4H6E8aLhgTpw42oBw" + "eid=EcBYW66tGca8swbts4roAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/432.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/136.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -4731,13 +4805,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/432:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/136:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -4752,17 +4826,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq4nuNo9VT485tUcyHrNcqi0joLJpNTs5QiYv3Px7f11v5iu4af2GvgXSg9H293blRNKTN84zZbw-m4CTVkZNER5CjZEWvKkvoIDzyrjpwsJog2Ab4" + "AEnB2UprpCE5m5A_TepF6l_h9HK4HnMBPGkXXswa-tWIPtB-kKXkP8FDajtsCSb_Y3mQhLvwlr5wgfxT4mrM-7JbWx1kXwuU7Q" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjU0OVoiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIjY1akFkdktmRzZHaGFTNVcrRXpnNEE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMDIyMDE2OTU0OTc1NyZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIremlJOFE9PSIsCiAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzAyMjAxNjg1MzE4OTcmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIwU0c0aXc9PSIsCiAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuMDIxWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZFNDT0V4QTExL00wZ0xZeHU3VEFYdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzAyMjAxNjkwMjE4NjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjkwMjE4NjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJORXhDd3c9PSIsCiAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjcyN1oiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIk1JYlJrcStvSmZPcVY5ZDkxTHBnOHc9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMjU0Mjk4NzcyNzQwNCZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJoeS9lcEE9PSIsCiAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzI1NDI5ODY4NDEyNTEmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJGTGpld0E9PSIsCiAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZytVZmFTOHVpbGp0VXpxTVpyeVY3dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzI1NDI5ODczNTQwNjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJTcWlaN3c9PSIsCiAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "85927c2ac92f848c", + "ID": "a8d180dd423ebbfb", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=13\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=13\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -4775,13 +4849,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "515913ed2bfdf1e1056c3a2b85280c3f/1100506996984773958;o=0" + "6b50f9a4460caafe45bf62b9397f0440/1820372168429007449;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -4790,7 +4864,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026maxResults=13\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026maxResults=13\u0026pageToken=\u0026prefix=obj\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -4801,9 +4875,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -4815,10 +4891,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:35 GMT" + "Wed, 25 Jul 2018 18:23:14 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:35 GMT" + "Wed, 25 Jul 2018 18:23:14 GMT" ], "Server": [ "UploadServer" @@ -4828,7 +4904,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -4837,16 +4913,16 @@ "998958384336" ], "X-Google-Backends": [ - "vru126:4204,/bns/yw/borg/yw/bns/blobstore2/bitpusher/197.scotty,acatli15:443" + "xiiadcad8:4117,/bns/xi/borg/xi/bns/blobstore2/bitpusher/116.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=j041W-bOLIbRhQSY0oKoCQ" + "eid=EcBYW4D8Mua8swbZpa6IBQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/197.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/116.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -4855,13 +4931,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/197:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/116:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -4876,17 +4952,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrBJ22FbpCwJAxB9lZXipnXPJbVH69vaDtYFgxq61AyGNiUgfG6LM9RAeXGIajDE3J0-EtYcT_K_U21f3ezkZBuiH2fXk2sBSdmImwbgkzX1LzpBO4" + "AEnB2UredqwXxSnUxaCWZ6SEF4xxX9lWsUeCuUTcsRMQbI-MXme_Q2kbhcpO3Hb12Pn8XiIrVKa9rNJYEiTiUDICRYgKBHc8Ug" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjU0OVoiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIjY1akFkdktmRzZHaGFTNVcrRXpnNEE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMDIyMDE2OTU0OTc1NyZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIremlJOFE9PSIsCiAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzAyMjAxNjg1MzE4OTcmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIwU0c0aXc9PSIsCiAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjkuMDIxWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZFNDT0V4QTExL00wZ0xZeHU3VEFYdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzAyMjAxNjkwMjE4NjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjkwMjE4NjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0txVDZheWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajIvMTUzMDIyMDE2OTAyMTg2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJORXhDd3c9PSIsCiAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjcyN1oiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIk1JYlJrcStvSmZPcVY5ZDkxTHBnOHc9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMjU0Mjk4NzcyNzQwNCZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0t6a2k4UHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMjU0Mjk4NzcyNzQwNC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJoeS9lcEE9PSIsCiAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzI1NDI5ODY4NDEyNTEmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJGTGpld0E9PSIsCiAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIiLAogICAibmFtZSI6ICJvYmoyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA3LjM1M1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiZytVZmFTOHVpbGp0VXpxTVpyeVY3dz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMj9nZW5lcmF0aW9uPTE1MzI1NDI5ODczNTQwNjYmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoyLzE1MzI1NDI5ODczNTQwNjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3MzU0MDY2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJTcWlaN3c9PSIsCiAgICJldGFnIjogIkNOTC85TUx2dXR3Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "48b121210ad9b807", + "ID": "b29861667e66d100", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -4899,13 +4975,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d9d4cb100b4384cbe3c86b7cdbb33b94/2715640930183643238;o=0" + "a270b057a24f4e545c728d02cde51426/9461334186293490550;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -4914,7 +4990,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1" ] }, "Body": "" @@ -4922,12 +4998,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -4939,29 +5017,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:14 GMT" ], "Etag": [ - "\"d10f36dbbb1e54be8150e32c29c168f7\"" + "\"9f0517007a94409ab99f2cbacf78cd93\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:14 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:28 GMT" + "Fri, 24 Aug 2018 18:23:06 GMT" ], "X-Goog-Generation": [ - "1530220168531897" + "1532542986841251" ], "X-Goog-Hash": [ - "crc32c=0SG4iw==", - "md5=0Q8227seVL6BUOMsKcFo9w==" + "crc32c=FLjewA==", + "md5=nwUXAHqUQJq5nyy6z3jNkw==" ], "X-Goog-Metageneration": [ "1" @@ -4976,7 +5054,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/59,/bns/xg/borg/xg/bns/blobstore2/bitpusher/121.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/98,/bns/yb/borg/yb/bns/blobstore2/bitpusher/529.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -4985,13 +5063,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=j041W7fhOuS6_QSfwby4Dg" + "eid=EsBYW5SvE8TulAG407CQBg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/121.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/529.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -5000,13 +5078,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/121:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/529:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -5021,17 +5099,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uqb1opt0M-MHQO-wrQZpYCtx5nnQJrZOfLQCT0HvtbVRwvFuwNf4tfYKJ8QR56FyZZKHGMVeHXt5YUc4UZouoyppkosKw" + "AEnB2UpR_S77wMkWzkMnH_DPBOuISvTthWVcQvyapTx05mw1vLCJGD8rEK7gKfHp2kizZRqc5HLjhVfWMZ7ucP7py_6OObgXQmjTdnCe087nC1RHrUqLCEE" ] }, - "Body": "s2D3fRXXzuQN7D8dXeoO1Q==" + "Body": "ol/0V5vpnDRTVN1jMBH2Ug==" } }, { - "ID": "7829287913c9fe11", + "ID": "d683f316209d67c2", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -5044,13 +5122,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a8147feb8239640e7b1b8af62173b291/4258437997669319558;o=0" + "09e89d632c01a4430c2b98d9af39803b/17102297303652889746;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -5059,7 +5137,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1" ] }, "Body": "" @@ -5067,12 +5145,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -5084,29 +5164,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:14 GMT" ], "Etag": [ - "\"d10f36dbbb1e54be8150e32c29c168f7\"" + "\"9f0517007a94409ab99f2cbacf78cd93\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:14 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:28 GMT" + "Fri, 24 Aug 2018 18:23:06 GMT" ], "X-Goog-Generation": [ - "1530220168531897" + "1532542986841251" ], "X-Goog-Hash": [ - "crc32c=0SG4iw==", - "md5=0Q8227seVL6BUOMsKcFo9w==" + "crc32c=FLjewA==", + "md5=nwUXAHqUQJq5nyy6z3jNkw==" ], "X-Goog-Metageneration": [ "1" @@ -5121,7 +5201,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/23,/bns/xg/borg/xg/bns/blobstore2/bitpusher/47.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/459,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1139.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -5130,13 +5210,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W-voCqKw_QSj-JawBw" + "eid=EsBYW9SAHIP_lAH2iZj4Cw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/47.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1139.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -5145,13 +5225,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/47:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/1139:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -5166,17 +5246,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrwT9_0XcT8hjdaDGWZiNWSJ0LG8CbFdEhZW28FXnYMd5kxDsVp0u1O5s3pRMCLgUV8LGjRlIxcWyc73VUqAlBol6he-w" + "AEnB2UotKChitwDWgNML4IAEIZHCHHiMKlPbGVyJrb8NAOLHubUOFf9wozJO6m7ocdcWWniKAmoBQK2BdJmdCSY6VJLwrt8Fqg" ] }, - "Body": "s2D3fRXXzuQN7D8dXeoO1Q==" + "Body": "ol/0V5vpnDRTVN1jMBH2Ug==" } }, { - "ID": "9f5cfdd9997d31af", + "ID": "ec968e975c1dd9ac", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj2", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj2", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -5189,13 +5269,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "22b3ac0e98ccbbbf53f1a64098277d41/5873571926573352613;o=0" + "1ff8b71e11e18bce971d2ee0fbf500f2/6296796727079433647;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -5204,7 +5284,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj2" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj2" ] }, "Body": "" @@ -5212,12 +5292,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -5229,29 +5311,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:14 GMT" ], "Etag": [ - "\"75208e131035d7f33480b631bbb4c05f\"" + "\"83e51f692f2e8a58ed533a8c66bc95ef\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:14 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:29 GMT" + "Wed, 25 Jul 2018 18:23:07 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:29 GMT" + "Fri, 24 Aug 2018 18:23:07 GMT" ], "X-Goog-Generation": [ - "1530220169021866" + "1532542987354066" ], "X-Goog-Hash": [ - "crc32c=NExCww==", - "md5=dSCOExA11/M0gLYxu7TAXw==" + "crc32c=SqiZ7w==", + "md5=g+UfaS8uiljtUzqMZryV7w==" ], "X-Goog-Metageneration": [ "1" @@ -5266,7 +5348,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/40,/bns/xg/borg/xg/bns/blobstore2/bitpusher/149.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/565,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -5275,13 +5357,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W-3ZDcqy_QTb176YCQ" + "eid=EsBYW-iHIIuW7AL1vauwCw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/149.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -5290,13 +5372,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/149:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/1:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -5311,17 +5393,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqM18bz2itPeoojZNo52cV0pihD2B6eQ0ApscmLqKNR_ZzrfY4C6X0Jybs23qkd11PnQLHTHPmtlVZpx92MCrPLIHlKsw" + "AEnB2UoRokH3fVDLCgD7oBAUy74DEr62EoOp-xgflQkRItEhRh-eih-VkROz42Qwwb0Nufjuntic66EiirT8WCo58ahMcbpTTGN1HOQTEPYmdrSpLyhFBlA" ] }, - "Body": "YoTebLYcFjV2gNW/p+1gbQ==" + "Body": "IrDE0mZKTh9fX6yBvOI1EQ==" } }, { - "ID": "fc492c4202ecd7c5", + "ID": "90e448977a40a328", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj2", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj2", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -5334,13 +5416,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "69669d82c3f213ea7407a7d932e47323/7488705859772221893;o=0" + "68121ec63028952c28b3fc81dd973d05/13937759844438832843;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -5349,7 +5431,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj2" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj2" ] }, "Body": "" @@ -5357,12 +5439,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -5374,29 +5458,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:14 GMT" ], "Etag": [ - "\"75208e131035d7f33480b631bbb4c05f\"" + "\"83e51f692f2e8a58ed533a8c66bc95ef\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:14 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:29 GMT" + "Wed, 25 Jul 2018 18:23:07 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:29 GMT" + "Fri, 24 Aug 2018 18:23:07 GMT" ], "X-Goog-Generation": [ - "1530220169021866" + "1532542987354066" ], "X-Goog-Hash": [ - "crc32c=NExCww==", - "md5=dSCOExA11/M0gLYxu7TAXw==" + "crc32c=SqiZ7w==", + "md5=g+UfaS8uiljtUzqMZryV7w==" ], "X-Goog-Metageneration": [ "1" @@ -5411,7 +5495,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/11,/bns/xg/borg/xg/bns/blobstore2/bitpusher/131.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/551,/bns/yb/borg/yb/bns/blobstore2/bitpusher/688.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -5420,13 +5504,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W4-sFOuw_QTclaj4Bg" + "eid=EsBYW-TjKIzulgHXubXwCA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/131.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/688.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -5435,13 +5519,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/131:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/688:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -5456,17 +5540,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Upnse8HoBW-0YldZuhLl7hpJGmqSe-IV1uBrhodTGvgIG7CEOXus2bV9tAEtG3SrEKIK6Eyei4Cfg1v9AQ6EKtNJHi-jw" + "AEnB2Upgra69XRNGto16SrNhT6kEIwQ91sc41EYrMG8un5QIBqcQqDiYpIBVrhFJXR1_LnPcfp36_i_NS0Zp6Vx9pXiLggmL3w" ] }, - "Body": "YoTebLYcFjV2gNW/p+1gbQ==" + "Body": "IrDE0mZKTh9fX6yBvOI1EQ==" } }, { - "ID": "e707b62778940528", + "ID": "f061c6a2663da019", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj/with/slashes", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj/with/slashes", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -5479,13 +5563,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5b6840135aa7aaa1d01e2a9ac76eaae3/9031783298444856548;o=0" + "24aede56a29b031886c7cbe3aa207c15/3131977792888731624;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -5494,7 +5578,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj/with/slashes" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj/with/slashes" ] }, "Body": "" @@ -5502,12 +5586,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -5519,29 +5605,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:14 GMT" ], "Etag": [ - "\"eb98c076f29f1ba1a1692e56f84ce0e0\"" + "\"3086d192afa825f3aa57d77dd4ba60f3\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:14 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:29 GMT" + "Wed, 25 Jul 2018 18:23:07 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:29 GMT" + "Fri, 24 Aug 2018 18:23:07 GMT" ], "X-Goog-Generation": [ - "1530220169549757" + "1532542987727404" ], "X-Goog-Hash": [ - "crc32c=+ziI8Q==", - "md5=65jAdvKfG6GhaS5W+Ezg4A==" + "crc32c=hy/epA==", + "md5=MIbRkq+oJfOqV9d91Lpg8w==" ], "X-Goog-Metageneration": [ "1" @@ -5556,7 +5642,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/31,/bns/xg/borg/xg/bns/blobstore2/bitpusher/64.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/114,/bns/yb/borg/yb/bns/blobstore2/bitpusher/44.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -5565,13 +5651,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W6ycF-G6_QTXlpDYCA" + "eid=EsBYW5bBLIqClgHoiYPgCA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/64.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/44.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -5580,13 +5666,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/64:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/44:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -5601,17 +5687,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpKzf-53kkMXoQUtpGD6BOpmyYJ627jn_JVRYrT_KDTo7y6zlRkRdggAPZRS4voYA-NC5-zfenMRD3eENg-RTGJlQDzpA" + "AEnB2UpXH_tDR81GwNEbwI1Hj_uCOmHzbAtYnmiZqkanZzEfWxQNHwdhWWN3RHRuZZOnkvMKSlEBNpJEjOisD1iHtJV39GT3W6aVhrCWkjyshcQvT1PMFNk" ] }, - "Body": "RDqZVDGy37wllwrj4/ngwA==" + "Body": "MlumWnf8qjvjCeY7d3oH6A==" } }, { - "ID": "620b570fcaafd08e", + "ID": "37c5cf73a48c9ff2", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj/with/slashes", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj/with/slashes", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -5624,13 +5710,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f3e7e4db6c3c58dc380b06c6cf8db4d4/10646918331138576132;o=0" + "2bcc71b5d5e437acc1bd4f7b0a08ae6e/10772940910248130564;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -5639,7 +5725,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj/with/slashes" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj/with/slashes" ] }, "Body": "" @@ -5647,12 +5733,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -5664,29 +5752,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:14 GMT" ], "Etag": [ - "\"eb98c076f29f1ba1a1692e56f84ce0e0\"" + "\"3086d192afa825f3aa57d77dd4ba60f3\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:14 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:29 GMT" + "Wed, 25 Jul 2018 18:23:07 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:29 GMT" + "Fri, 24 Aug 2018 18:23:07 GMT" ], "X-Goog-Generation": [ - "1530220169549757" + "1532542987727404" ], "X-Goog-Hash": [ - "crc32c=+ziI8Q==", - "md5=65jAdvKfG6GhaS5W+Ezg4A==" + "crc32c=hy/epA==", + "md5=MIbRkq+oJfOqV9d91Lpg8w==" ], "X-Goog-Metageneration": [ "1" @@ -5701,7 +5789,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/52,/bns/xg/borg/xg/bns/blobstore2/bitpusher/30.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/573,/bns/yb/borg/yb/bns/blobstore2/bitpusher/548.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -5710,13 +5798,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W5HCHMWx_QTMs5DgCw" + "eid=EsBYW9bvNtXslQG005-QDg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/30.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/548.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -5725,13 +5813,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/30:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/548:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -5746,17 +5834,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqDZk2HckUqyCkuPESHFvxA-hnpRC85igBPKymvh0PLBv81_2wGTXb9w8w7WheC87rgs_9VRv2IB7Tw_R3gZakItErVXg" + "AEnB2Uqy9_6k_RUZrjZm-Cr_K1oKHE2hIJM_ZIDAmwD6CybBSnspxWZ5qM4FlgcY2I6JOSKqcH2Gj3JJFbkW1oaTEQBUTX8q19O4be-ESQ13YcRVz7bb2dI" ] }, - "Body": "RDqZVDGy37wllwrj4/ngwA==" + "Body": "MlumWnf8qjvjCeY7d3oH6A==" } }, { - "ID": "29b6e6f2f843c43d", + "ID": "7eae5769a840f714", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1", "Proto": "HTTP/1.1", "Header": { "Authorization": [ @@ -5769,13 +5857,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f587be6cffd48a0a576a0486cfc3be00/12189995765516309027;o=0" + "970514526b7a1a2eb2f656cebcb387dc/18413902932407515425;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -5784,7 +5872,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1" ] }, "Body": "" @@ -5792,12 +5880,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -5809,29 +5899,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:14 GMT" ], "Etag": [ - "\"d10f36dbbb1e54be8150e32c29c168f7\"" + "\"9f0517007a94409ab99f2cbacf78cd93\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:14 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:28 GMT" + "Fri, 24 Aug 2018 18:23:06 GMT" ], "X-Goog-Generation": [ - "1530220168531897" + "1532542986841251" ], "X-Goog-Hash": [ - "crc32c=0SG4iw==", - "md5=0Q8227seVL6BUOMsKcFo9w==" + "crc32c=FLjewA==", + "md5=nwUXAHqUQJq5nyy6z3jNkw==" ], "X-Goog-Metageneration": [ "1" @@ -5846,7 +5936,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/17,/bns/xg/borg/xg/bns/blobstore2/bitpusher/159.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/502,/bns/yb/borg/yb/bns/blobstore2/bitpusher/944.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -5855,13 +5945,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W9akH462_QTv9L6YCw" + "eid=EsBYW_r3OoKAlAGj9JGADA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/159.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/944.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -5870,13 +5960,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/159:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/944:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -5891,17 +5981,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur2Yeddnh9InceCCZ7DmPoKwpkPWpe14OtDUZ784oGSwsssCD4ab4cXxY0sde3ilZkZb1ruc0Gigl595wjGEWSXu7FtYA" + "AEnB2Ur8xt5raPdwIOtyLAW1QIFXWfR_iUmxZrui8xwhyFIBx2CxMp5UzzjKgPA1VqSnxlalNNjOuMDrryCcA5PXAGnDhLEKXA" ] }, - "Body": "s2D3fRXXzuQN7D8dXeoO1Q==" + "Body": "ol/0V5vpnDRTVN1jMBH2Ug==" } }, { - "ID": "c8d6a5cabc8d00bf", + "ID": "c5af2b56f9e37551", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1", "Proto": "HTTP/1.1", "Header": { "Authorization": [ @@ -5914,13 +6004,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d84eac24f0d488af979bcf8aa3dd638e/13805129698715178307;o=0" + "95ea8bbac3acf3ebc4f9eb21d3da9e1f/7608403451034073661;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -5929,7 +6019,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1" ] }, "Body": "" @@ -5937,12 +6027,14 @@ "Response": { "StatusCode": 206, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -5957,29 +6049,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:15 GMT" ], "Etag": [ - "\"d10f36dbbb1e54be8150e32c29c168f7\"" + "\"9f0517007a94409ab99f2cbacf78cd93\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:15 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:28 GMT" + "Fri, 24 Aug 2018 18:23:06 GMT" ], "X-Goog-Generation": [ - "1530220168531897" + "1532542986841251" ], "X-Goog-Hash": [ - "crc32c=0SG4iw==", - "md5=0Q8227seVL6BUOMsKcFo9w==" + "crc32c=FLjewA==", + "md5=nwUXAHqUQJq5nyy6z3jNkw==" ], "X-Goog-Metageneration": [ "1" @@ -5994,7 +6086,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/14,/bns/xg/borg/xg/bns/blobstore2/bitpusher/101.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/200,/bns/yb/borg/yb/bns/blobstore2/bitpusher/740.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -6003,13 +6095,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W7HcIau9_QTV4ZuIDA" + "eid=E8BYW_bEAYOP7AKU05WABQ" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/101.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/740.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -6018,13 +6110,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/101:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/740:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -6039,17 +6131,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrRC_wYY0I5C-35b6g5QzR6l19muTAGLTrkOz38d2HiAYn4A9Cy06B0bZXT8EhDF3B1ATbzD9SPWITUqG6LfvndqBhDLQ" + "AEnB2UqC6KsZqPg3i4r-FD_WQwHiaAGtwnrRfdEnmtKG5HI5T3vlrWsSfzkSnxWF8PI1npx12U3JcFTpdwn41RM5OoiSFoduMo4mCufjb03dmuGZ1qD4-TU" ] }, - "Body": "s2D3fRXXzuQ=" + "Body": "ol/0V5vpnDQ=" } }, { - "ID": "97a1b1b7d9db0df7", + "ID": "f13b9ccf9f9e89eb", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1", "Proto": "HTTP/1.1", "Header": { "Authorization": [ @@ -6062,13 +6154,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fc6bc92fd596da040350682b2dd27d1d/15420263631914113122;o=0" + "d74b55cf146314b35ff0038cbf13888c/15249365468898556762;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -6077,7 +6169,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1" ] }, "Body": "" @@ -6085,12 +6177,14 @@ "Response": { "StatusCode": 206, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -6105,29 +6199,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:15 GMT" ], "Etag": [ - "\"d10f36dbbb1e54be8150e32c29c168f7\"" + "\"9f0517007a94409ab99f2cbacf78cd93\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:15 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:28 GMT" + "Fri, 24 Aug 2018 18:23:06 GMT" ], "X-Goog-Generation": [ - "1530220168531897" + "1532542986841251" ], "X-Goog-Hash": [ - "crc32c=0SG4iw==", - "md5=0Q8227seVL6BUOMsKcFo9w==" + "crc32c=FLjewA==", + "md5=nwUXAHqUQJq5nyy6z3jNkw==" ], "X-Goog-Metageneration": [ "1" @@ -6142,7 +6236,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/38,/bns/xg/borg/xg/bns/blobstore2/bitpusher/67.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/428,/bns/yk/borg/yk/bns/blobstore2/bitpusher/903.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -6151,13 +6245,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W9DYJO-5_QSkq6PACQ" + "eid=E8BYW_jeBZKErAXr2rXADA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/67.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yk/borg/yk/bns/blobstore2/bitpusher/903.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -6166,13 +6260,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/67:caf3" + "/bns/yk/borg/yk/bns/blobstore2/bitpusher/903:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -6187,17 +6281,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uquu66Cg0MSbBKLvE04TCqVEkY26mdrw35Qk2-OU7sSVQr9zCbM2FgWS1HBnbzcNfTGIEVQ5zBJ2kqB5L1cDC-y3UVVuw" + "AEnB2Up64yINI2cPB09up6Cdie3JA-5Ot16qO1zB3m9mDf-t9tq_Esp6ku37I0wGlNWrWmVIHLMx7s9IsPkmAhwLn3Lx3CkupUZ-8xqfzX-3Ym_9B3miZMM" ] }, - "Body": "Dew/HV3qDtU=" + "Body": "U1TdYzAR9lI=" } }, { - "ID": "60456bd2d2c87bee", + "ID": "f794200cd11db96b", "Request": { "Method": "HEAD", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1", "Proto": "HTTP/1.1", "Header": { "Authorization": [ @@ -6207,13 +6301,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3e6f7f4f1c9dbf4e5c400d441bcc06a5/16963342170081532802;o=0" + "7b7c7922dd78fe6b1c8743ea682035bd/4443865987525114998;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -6222,7 +6316,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1" ] }, "Body": "" @@ -6230,12 +6324,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -6247,29 +6343,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:15 GMT" ], "Etag": [ - "\"d10f36dbbb1e54be8150e32c29c168f7\"" + "\"9f0517007a94409ab99f2cbacf78cd93\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:15 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:28 GMT" + "Fri, 24 Aug 2018 18:23:06 GMT" ], "X-Goog-Generation": [ - "1530220168531897" + "1532542986841251" ], "X-Goog-Hash": [ - "crc32c=0SG4iw==", - "md5=0Q8227seVL6BUOMsKcFo9w==" + "crc32c=FLjewA==", + "md5=nwUXAHqUQJq5nyy6z3jNkw==" ], "X-Goog-Metageneration": [ "1" @@ -6284,7 +6380,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/34,/bns/xg/borg/xg/bns/blobstore2/bitpusher/160.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/596,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1160.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -6293,13 +6389,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W_bVJ-u__QT7z4OgCw" + "eid=E8BYW8GLDIfVlgG49pv4Cw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/160.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1160.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -6308,13 +6404,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/160:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/1160:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -6329,17 +6425,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrxfZYPdc10vAKQrjaUhsSO4dbFIJiiRno-4bvrmywb2SjAs5WdQicMOs0tKC6gKPVreEtFGvueNbpsO4Q-Tg-Zq86KUg" + "AEnB2Uo9PAVVOQpILrWhRVthWFuHdZb0Xj69ptZCk-ucot7XVGOHyfr3MVz17SFTS_BiCp2172Y5vsqp-YwjglvNj9W58pO5vQ" ] }, "Body": "" } }, { - "ID": "6e68b0af9f2eafb2", + "ID": "e83972ff27c1433d", "Request": { "Method": "HEAD", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1", "Proto": "HTTP/1.1", "Header": { "Authorization": [ @@ -6349,13 +6445,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "0144029a94c7dcb3c1b1d65bc499f55b/131732029570981537;o=0" + "069c7ef9051522db0bc06c2640bd0b32/12084828009684499859;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -6364,7 +6460,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1" ] }, "Body": "" @@ -6372,12 +6468,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -6389,29 +6487,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:15 GMT" ], "Etag": [ - "\"d10f36dbbb1e54be8150e32c29c168f7\"" + "\"9f0517007a94409ab99f2cbacf78cd93\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:15 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:28 GMT" + "Fri, 24 Aug 2018 18:23:06 GMT" ], "X-Goog-Generation": [ - "1530220168531897" + "1532542986841251" ], "X-Goog-Hash": [ - "crc32c=0SG4iw==", - "md5=0Q8227seVL6BUOMsKcFo9w==" + "crc32c=FLjewA==", + "md5=nwUXAHqUQJq5nyy6z3jNkw==" ], "X-Goog-Metageneration": [ "1" @@ -6426,7 +6524,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/42,/bns/xg/borg/xg/bns/blobstore2/bitpusher/38.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/211,/bns/yb/borg/yb/bns/blobstore2/bitpusher/744.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -6435,13 +6533,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W4aEKuu3_QSPz4KIBw" + "eid=E8BYW7jBD4yT7AKjypCgBw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/38.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/744.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -6450,13 +6548,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/38:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/744:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -6471,17 +6569,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrnVCrUCHZbxD0JKkwA9mldooWkAAiAan_VAi4W2PM6eeBb6Zqm9TuoNRjvm5ycFuNrohJ8z_dfOGmIAeVQIP1GIwu3lg" + "AEnB2UqaNghcJUaww3_7bLlDKvZVJaFNPAN1q0TauMV_KvTSXAJq2hFvhfKJUcz2vY8KXGaSMRG5C9MdU3jII-GHISkAxS44I56jc7rG9qE_VkwxZb-jLOc" ] }, "Body": "" } }, { - "ID": "379730b7842e0e91", + "ID": "8ff36d21bbb08226", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1", "Proto": "HTTP/1.1", "Header": { "Authorization": [ @@ -6494,13 +6592,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5b218a79cbb70365843766280e596346/1674809468243550657;o=0" + "631d7e8d5b04d14285fb844accfd50e1/1279047057612537775;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -6509,7 +6607,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1" ] }, "Body": "" @@ -6517,12 +6615,14 @@ "Response": { "StatusCode": 206, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -6537,29 +6637,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:15 GMT" ], "Etag": [ - "\"d10f36dbbb1e54be8150e32c29c168f7\"" + "\"9f0517007a94409ab99f2cbacf78cd93\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:15 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:28 GMT" + "Fri, 24 Aug 2018 18:23:06 GMT" ], "X-Goog-Generation": [ - "1530220168531897" + "1532542986841251" ], "X-Goog-Hash": [ - "crc32c=0SG4iw==", - "md5=0Q8227seVL6BUOMsKcFo9w==" + "crc32c=FLjewA==", + "md5=nwUXAHqUQJq5nyy6z3jNkw==" ], "X-Goog-Metageneration": [ "1" @@ -6574,7 +6674,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/50,/bns/xg/borg/xg/bns/blobstore2/bitpusher/103.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/558,/bns/yb/borg/yb/bns/blobstore2/bitpusher/533.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -6583,13 +6683,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W_rCLOy4_QSK34WgDA" + "eid=E8BYW6TyEpCWlAGr2LDACA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/103.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/533.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -6598,13 +6698,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/103:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/533:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -6619,17 +6719,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqeRZdHlDOetIbvTn3vPdolDhBIbyzbCX_bT-Dxvyin7ZlI66tviZBBqF0W9ARTZLxZmqQDxPGTLv2u3vw7ImSfZeq_0A" + "AEnB2Upi4rHgHCBHajFOT3p_ccFHWQZVISGaKI83cVW6hH2AS45dcAYgxxFe6o502GgB_fLm77A-1JPXKCimj2I7b8nqDS9a51vFKLfM1rWzFjjf0hmnP_g" ] }, - "Body": "Dew/HV3qDtU=" + "Body": "U1TdYzAR9lI=" } }, { - "ID": "ca917a8409eca3c9", + "ID": "f61e1d41c1f0873f", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1", "Proto": "HTTP/1.1", "Header": { "Authorization": [ @@ -6642,13 +6742,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5647ecad7d379c8ec19a116413269b39/3289943401442485472;o=0" + "50ae531d7f70f95d2af7312432ecf7cc/8920010174971871436;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -6657,7 +6757,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1" ] }, "Body": "" @@ -6665,12 +6765,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -6682,29 +6784,29 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:15 GMT" ], "Etag": [ - "\"d10f36dbbb1e54be8150e32c29c168f7\"" + "\"9f0517007a94409ab99f2cbacf78cd93\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:15 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:28 GMT" + "Fri, 24 Aug 2018 18:23:06 GMT" ], "X-Goog-Generation": [ - "1530220168531897" + "1532542986841251" ], "X-Goog-Hash": [ - "crc32c=0SG4iw==", - "md5=0Q8227seVL6BUOMsKcFo9w==" + "crc32c=FLjewA==", + "md5=nwUXAHqUQJq5nyy6z3jNkw==" ], "X-Goog-Metageneration": [ "1" @@ -6719,7 +6821,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/37,/bns/xg/borg/xg/bns/blobstore2/bitpusher/74.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/232,/bns/yb/borg/yb/bns/blobstore2/bitpusher/328.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -6728,13 +6830,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W43qLu2y_QTGyoSQAg" + "eid=E8BYW9C7Fo7llAG336LgCQ" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/74.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/328.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -6743,13 +6845,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/74:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/328:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -6764,17 +6866,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqY4LMAegVwug1y4tPpL09OIpgRRok9upPxefHqakSWXIMBTEBXwPB28RwWWlg-8L4LXMnXq8lwDj9CwhJlDTmYeinrsg" + "AEnB2Uo903bVakVyM-LvLNma3rti06MEM6oOvPtw0tZvrMlshMYcFWtdjmP-DqXfKzaV7c4jEOVUKHTMvhYCN8W1Ur3NzyqWfYAX_WUjVr2UlIzS8aq_eUY" ] }, - "Body": "s2D3fRXXzuQN7D8dXeoO1Q==" + "Body": "ol/0V5vpnDRTVN1jMBH2Ug==" } }, { - "ID": "cb0965cbfc92ba76", + "ID": "3a16f2efadf5468b", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1", "Proto": "HTTP/1.1", "Header": { "Authorization": [ @@ -6787,13 +6889,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "1737a1980a90d18fda6edb3ffab3e1e8/4833021939609904896;o=0" + "3e36d43e83be177a111aa502fed3781c/16560972192836354537;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -6802,7 +6904,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1" ] }, "Body": "" @@ -6810,12 +6912,14 @@ "Response": { "StatusCode": 416, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -6827,29 +6931,29 @@ "application/xml; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:15 GMT" ], "Etag": [ - "\"d10f36dbbb1e54be8150e32c29c168f7\"" + "\"9f0517007a94409ab99f2cbacf78cd93\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:15 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:28 GMT" + "Fri, 24 Aug 2018 18:23:06 GMT" ], "X-Goog-Generation": [ - "1530220168531897" + "1532542986841251" ], "X-Goog-Hash": [ - "crc32c=0SG4iw==", - "md5=0Q8227seVL6BUOMsKcFo9w==" + "crc32c=FLjewA==", + "md5=nwUXAHqUQJq5nyy6z3jNkw==" ], "X-Goog-Metageneration": [ "1" @@ -6864,7 +6968,7 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/3,/bns/xg/borg/xg/bns/blobstore2/bitpusher/155.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/46,/bns/yb/borg/yb/bns/blobstore2/bitpusher/635.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -6873,13 +6977,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W6mnMYy4_QSw05CACg" + "eid=E8BYW8qHGsb4lQHstobgBg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/155.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/635.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -6888,13 +6992,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/155:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/635:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -6909,17 +7013,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Ur6J9bM8geC6p6R-DClohGS_2fbZZQQdnomhj-vFnmCTx0EQFBaARrociLC8gmj1jWY5ZxmjFtYRDFsyfK2EcqT7_vkIg" + "AEnB2UroulP65rugFtZfApPN0wapvhpzAKDIDZAghKvnDYXqBmW49yxKeBduHiW_Vp6aHKEsXjWvzOl1xm1oiWcjC5m31kO3QbyJbib64HPWi8HkAuJPz84" ] }, "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+SW52YWxpZFJhbmdlPC9Db2RlPjxNZXNzYWdlPlRoZSByZXF1ZXN0ZWQgcmFuZ2UgY2Fubm90IGJlIHNhdGlzZmllZC48L01lc3NhZ2U+PERldGFpbHM+Ynl0ZXM9MzItNDE8L0RldGFpbHM+PC9FcnJvcj4=" } }, { - "ID": "688ddec595938bb4", + "ID": "efbe26fef4c033d5", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -6932,13 +7036,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3797ab06b0d1274de2ceaade021977ae/6448155868513937951;o=0" + "efdf09c4b9ecfb8db6b9e8b5af5b037e/5755472715757814277;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -6947,7 +7051,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -6958,9 +7062,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -6972,10 +7078,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:36 GMT" + "Wed, 25 Jul 2018 18:23:15 GMT" ], "Etag": [ - "CLmfy6yi99sCEAE=" + "CKPZ1cLvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -6991,7 +7097,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -7000,16 +7106,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrfw21:4154,/bns/yw/borg/yw/bns/blobstore2/bitpusher/533.scotty,acatli15:443" + "xgiadaal14:4213,/bns/xi/borg/xi/bns/blobstore2/bitpusher/133.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W8WfNIS1hQSt54II" + "eid=E8BYW9XFHam9swaeo4b4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/533.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/133.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -7018,13 +7124,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/533:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/133:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -7039,17 +7145,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrsQTG9A8R97Dt1j-4A0Fwxfet7hrERRNlYuLUW_EJAEueiK5ZQhcRokbsdvieH_v8l01rQQY6JbED3YKaW6Ln7YxG0nobocofM14gnacORyuJYqsY" + "AEnB2UpxZvBxwzpz_kmQ8gO1aOH3SOQ7G7-8JIe6TxrYwcqgV5Vw5VIZdXuILJ-5iJlFk35pFYlztjDwxyxUt_cR_cfWZPoqWw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxIiwKICJuYW1lIjogIm9iajEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOC41MjlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajE/Z2VuZXJhdGlvbj0xNTMwMjIwMTY4NTMxODk3JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogIm9iajEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTG1meTZ5aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTG1meTZ5aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIjBTRzRpdz09IiwKICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxIiwKICJuYW1lIjogIm9iajEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNi44NDBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajE/Z2VuZXJhdGlvbj0xNTMyNTQyOTg2ODQxMjUxJmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogIm9iajEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS1BaMWNMdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDS1BaMWNMdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkZMamV3QT09IiwKICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBRT0iCn0K" } }, { - "ID": "a6bc0186787568ea", + "ID": "d4f61ace5cec8d02", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -7062,13 +7168,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "467e894c85a51a84e532b306fdd7f2ae/8063289801712807231;o=0" + "934d385320ae1f205d0e7acbd0d69899/13396434733622297378;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -7077,7 +7183,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -7088,9 +7194,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -7102,13 +7210,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:37 GMT" + "Wed, 25 Jul 2018 18:23:15 GMT" ], "Etag": [ "CAU=" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:37 GMT" + "Wed, 25 Jul 2018 18:23:15 GMT" ], "Server": [ "UploadServer" @@ -7118,7 +7226,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -7127,16 +7235,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrb72:4249,/bns/yw/borg/yw/bns/blobstore2/bitpusher/473.scotty,acatli15:443" + "xgiadabr1:4172,/bns/xi/borg/xi/bns/blobstore2/bitpusher/119.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kE41W4fsOJbkhASluqCQBQ" + "eid=E8BYW4zDIeGFygOT4obwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/473.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/119.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -7145,13 +7253,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/473:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/119:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -7166,17 +7274,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UprxJYbtq9DV_89EUeAxYWUcsLi3dTL4gW_J2722jCGD_fhzDqr0l5wUZ_SxdFOqxCWiLZOzKAObhoSIr9nLvkhmA1FZwKlwB_tSujZqqqbuPHLVXo" + "AEnB2UrIzFwT4khGv2qNY4F4uwKUIMdeKNpqNnjsWIFB26YuDoPpT6-WRuNdIVo7YOqwl_e25N2QSdtI83nhA_KuPE2xjXnIuA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTYuMzYzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI2LjMyNVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjUiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiBmYWxzZQogfSwKICJsaWZlY3ljbGUiOiB7CiAgInJ1bGUiOiBbCiAgIHsKICAgICJhY3Rpb24iOiB7CiAgICAgInR5cGUiOiAiRGVsZXRlIgogICAgfSwKICAgICJjb25kaXRpb24iOiB7CiAgICAgImFnZSI6IDMwCiAgICB9CiAgIH0KICBdCiB9LAogImxhYmVscyI6IHsKICAibDEiOiAidjIiLAogICJuZXciOiAibmV3IgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FVPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTUuMDg0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA0LjYyNVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjUiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FVPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiBmYWxzZQogfSwKICJsaWZlY3ljbGUiOiB7CiAgInJ1bGUiOiBbCiAgIHsKICAgICJhY3Rpb24iOiB7CiAgICAgInR5cGUiOiAiRGVsZXRlIgogICAgfSwKICAgICJjb25kaXRpb24iOiB7CiAgICAgImFnZSI6IDMwCiAgICB9CiAgIH0KICBdCiB9LAogImxhYmVscyI6IHsKICAibmV3IjogIm5ldyIsCiAgImwxIjogInYyIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FVPSIKfQo=" } }, { - "ID": "e14d6952df65c642", + "ID": "db4c731f39e11978", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/copy-obj1?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/copy-obj1?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -7195,13 +7303,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c0c20e7b9defa1952944f1201170891f/9606367240385441886;o=0" + "ce01e9a3394cf82f95cd7420aa2b3a59/2590935252248855614;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -7210,7 +7318,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/copy-obj1?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/copy-obj1?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -7221,9 +7329,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -7235,7 +7345,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:37 GMT" + "Wed, 25 Jul 2018 18:23:16 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -7251,7 +7361,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220477000" + "1532543295000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -7260,16 +7370,16 @@ "998958384336" ], "X-Google-Backends": [ - "vray64:4443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/221.scotty,acatli15:443" + "xgiadaab2:4240,/bns/xi/borg/xi/bns/blobstore2/bitpusher/11.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kU41W9SfDcLxhATkzq7YCQ" + "eid=E8BYW4WJMZC3swb1pLGIDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/221.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/11.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -7278,13 +7388,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/221:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/11:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -7299,17 +7409,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqDHX0nOIPHd8vFxRuw2Pv3VEnIpuGgUbc6KwnZYMSvxGGT_veQwvbFw0VO6UDmFnUD41Vmxbsdp11OreHm1i-sKov27EMO3lRpJqHeoUh7rIAsbo8" + "AEnB2UpIYc31DiECXoLXpFNs_97BkJWl95kKtMZDnvi16hKd_PsvW7F7zNQU6jJfq25Zn71MnMd0rcS31k_p48V8YOTQSCVVHg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTYiLAogIm9iamVjdFNpemUiOiAiMTYiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMS8xNTMwMjIwMTc3NzMyMTM4IiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvcHktb2JqMSIsCiAgIm5hbWUiOiAiY29weS1vYmoxIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE3NzczMjEzOCIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluIiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTozNy43MzFaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjM3LjczMVoiLAogICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjM3LjczMVoiLAogICJzaXplIjogIjE2IiwKICAibWQ1SGFzaCI6ICIwUTgyMjdzZVZMNkJVT01zS2NGbzl3PT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvcHktb2JqMT9nZW5lcmF0aW9uPTE1MzAyMjAxNzc3MzIxMzgmYWx0PW1lZGlhIiwKICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgImFjbCI6IFsKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxLzE1MzAyMjAxNzc3MzIxMzgvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb3B5LW9iajEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY29weS1vYmoxIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNzc3MzIxMzgiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogIm93bmVycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDS3JrL0xDaTk5c0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb3B5LW9iajEvMTUzMDIyMDE3NzczMjEzOC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb3B5LW9iajEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAib2JqZWN0IjogImNvcHktb2JqMSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc3NzMyMTM4IiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDS3JrL0xDaTk5c0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb3B5LW9iajEvMTUzMDIyMDE3NzczMjEzOC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb3B5LW9iajEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAib2JqZWN0IjogImNvcHktb2JqMSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc3NzMyMTM4IiwKICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0tyay9MQ2k5OXNDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxLzE1MzAyMjAxNzc3MzIxMzgvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvcHktb2JqMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAib2JqZWN0IjogImNvcHktb2JqMSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc3NzMyMTM4IiwKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgImV0YWciOiAiQ0tyay9MQ2k5OXNDRUFFPSIKICAgfQogIF0sCiAgIm93bmVyIjogewogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgfSwKICAiY3JjMzJjIjogIjBTRzRpdz09IiwKICAiZXRhZyI6ICJDS3JrL0xDaTk5c0NFQUU9IgogfQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTYiLAogIm9iamVjdFNpemUiOiAiMTYiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMS8xNTMyNTQyOTk2MjU1MTM5IiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvcHktb2JqMSIsCiAgIm5hbWUiOiAiY29weS1vYmoxIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5NjI1NTEzOSIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluIiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoxNi4yNTNaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjE2LjI1M1oiLAogICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjE2LjI1M1oiLAogICJzaXplIjogIjE2IiwKICAibWQ1SGFzaCI6ICJud1VYQUhxVVFKcTVueXk2ejNqTmt3PT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvcHktb2JqMT9nZW5lcmF0aW9uPTE1MzI1NDI5OTYyNTUxMzkmYWx0PW1lZGlhIiwKICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgImFjbCI6IFsKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxLzE1MzI1NDI5OTYyNTUxMzkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb3B5LW9iajEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY29weS1vYmoxIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5OTYyNTUxMzkiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogIm93bmVycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDS09qbE1mdnV0d0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb3B5LW9iajEvMTUzMjU0Mjk5NjI1NTEzOS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb3B5LW9iajEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAib2JqZWN0IjogImNvcHktb2JqMSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTk2MjU1MTM5IiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDS09qbE1mdnV0d0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb3B5LW9iajEvMTUzMjU0Mjk5NjI1NTEzOS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb3B5LW9iajEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAib2JqZWN0IjogImNvcHktb2JqMSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTk2MjU1MTM5IiwKICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0tPamxNZnZ1dHdDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxLzE1MzI1NDI5OTYyNTUxMzkvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvcHktb2JqMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAib2JqZWN0IjogImNvcHktb2JqMSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTk2MjU1MTM5IiwKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgImV0YWciOiAiQ0tPamxNZnZ1dHdDRUFFPSIKICAgfQogIF0sCiAgIm93bmVyIjogewogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgfSwKICAiY3JjMzJjIjogIkZMamV3QT09IiwKICAiZXRhZyI6ICJDS09qbE1mdnV0d0NFQUU9IgogfQp9Cg==" } }, { - "ID": "313e21219dd1c35e", + "ID": "3c8575a59df371a1", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/copy-obj1?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/copy-obj1?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -7328,13 +7438,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "630509a56d2fff1ce9dac023818b28c3/11221502268784259966;o=0" + "7b480d80b7a4154998d54f5fa943a068/10231615799431595355;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -7343,7 +7453,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/copy-obj1?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/copy-obj1?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -7354,9 +7464,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -7368,7 +7480,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:38 GMT" + "Wed, 25 Jul 2018 18:23:17 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -7384,7 +7496,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220477000" + "1532543295000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -7393,16 +7505,16 @@ "998958384336" ], "X-Google-Backends": [ - "vri10:4099,/bns/yw/borg/yw/bns/blobstore2/bitpusher/168.scotty,acatli15:443" + "xiiadcdk2:4016,/bns/xi/borg/xi/bns/blobstore2/bitpusher/88.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kU41W-GLNISPN-3XkeAI" + "eid=FMBYW-roFs62swbPnpToAQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/168.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/88.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -7411,13 +7523,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/168:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/88:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -7432,17 +7544,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo6kGByxRE4u32D8cDjVBmVxpFPWsR2OjucDWN7W7VdO7c_W-yP7jy-HzhVr2FGtjJAWvjAvdxCrw0KLJV-S4tmVFdML1WocaDbAenWN4K2E5tLUFk" + "AEnB2UrWoWjCdqYJJGHXjH2FVigRxwQYmaXWYvH0reBp5Hwr3sgI0xcxjMHAInF-e4wsNkPHOv9Fv_L93Xt-xZD8MynHGOg-RQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTYiLAogIm9iamVjdFNpemUiOiAiMTYiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMS8xNTMwMjIwMTc4MjQ2NzY1IiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvcHktb2JqMSIsCiAgIm5hbWUiOiAiY29weS1vYmoxIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE3ODI0Njc2NSIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjM4LjI0NVoiLAogICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MzguMjQ1WiIsCiAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MzguMjQ1WiIsCiAgInNpemUiOiAiMTYiLAogICJtZDVIYXNoIjogIjBRODIyN3NlVkw2QlVPTXNLY0ZvOXc9PSIsCiAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29weS1vYmoxP2dlbmVyYXRpb249MTUzMDIyMDE3ODI0Njc2NSZhbHQ9bWVkaWEiLAogICJjb250ZW50RW5jb2RpbmciOiAiaWRlbnRpdHkiLAogICJhY2wiOiBbCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMS8xNTMwMjIwMTc4MjQ2NzY1L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29weS1vYmoxL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAib2JqZWN0IjogImNvcHktb2JqMSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc4MjQ2NzY1IiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJvd25lcnMiCiAgICB9LAogICAgImV0YWciOiAiQ08yWW5MR2k5OXNDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxLzE1MzAyMjAxNzgyNDY3NjUvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29weS1vYmoxL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgIm9iamVjdCI6ICJjb3B5LW9iajEiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE3ODI0Njc2NSIsCiAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICB9LAogICAgImV0YWciOiAiQ08yWW5MR2k5OXNDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxLzE1MzAyMjAxNzgyNDY3NjUvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29weS1vYmoxL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgIm9iamVjdCI6ICJjb3B5LW9iajEiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE3ODI0Njc2NSIsCiAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJSRUFERVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgfSwKICAgICJldGFnIjogIkNPMlluTEdpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMS8xNTMwMjIwMTc4MjQ2NzY1L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb3B5LW9iajEvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgIm9iamVjdCI6ICJjb3B5LW9iajEiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE3ODI0Njc2NSIsCiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJldGFnIjogIkNPMlluTEdpOTlzQ0VBRT0iCiAgIH0KICBdLAogICJvd25lciI6IHsKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogIH0sCiAgImNyYzMyYyI6ICIwU0c0aXc9PSIsCiAgImV0YWciOiAiQ08yWW5MR2k5OXNDRUFFPSIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTYiLAogIm9iamVjdFNpemUiOiAiMTYiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMS8xNTMyNTQyOTk2OTE1NjkxIiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvcHktb2JqMSIsCiAgIm5hbWUiOiAiY29weS1vYmoxIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5NjkxNTY5MSIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjE2LjkxNVoiLAogICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MTYuOTE1WiIsCiAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MTYuOTE1WiIsCiAgInNpemUiOiAiMTYiLAogICJtZDVIYXNoIjogIm53VVhBSHFVUUpxNW55eTZ6M2pOa3c9PSIsCiAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29weS1vYmoxP2dlbmVyYXRpb249MTUzMjU0Mjk5NjkxNTY5MSZhbHQ9bWVkaWEiLAogICJjb250ZW50RW5jb2RpbmciOiAiaWRlbnRpdHkiLAogICJhY2wiOiBbCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMS8xNTMyNTQyOTk2OTE1NjkxL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29weS1vYmoxL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAib2JqZWN0IjogImNvcHktb2JqMSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTk2OTE1NjkxIiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJvd25lcnMiCiAgICB9LAogICAgImV0YWciOiAiQ092THZNZnZ1dHdDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxLzE1MzI1NDI5OTY5MTU2OTEvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29weS1vYmoxL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgIm9iamVjdCI6ICJjb3B5LW9iajEiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5NjkxNTY5MSIsCiAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICB9LAogICAgImV0YWciOiAiQ092THZNZnZ1dHdDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxLzE1MzI1NDI5OTY5MTU2OTEvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29weS1vYmoxL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgIm9iamVjdCI6ICJjb3B5LW9iajEiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5NjkxNTY5MSIsCiAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJSRUFERVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgfSwKICAgICJldGFnIjogIkNPdkx2TWZ2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMS8xNTMyNTQyOTk2OTE1NjkxL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb3B5LW9iajEvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgIm9iamVjdCI6ICJjb3B5LW9iajEiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5NjkxNTY5MSIsCiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJldGFnIjogIkNPdkx2TWZ2dXR3Q0VBRT0iCiAgIH0KICBdLAogICJvd25lciI6IHsKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogIH0sCiAgImNyYzMyYyI6ICJGTGpld0E9PSIsCiAgImV0YWciOiAiQ092THZNZnZ1dHdDRUFFPSIKIH0KfQo=" } }, { - "ID": "8663b7abbb7c6cb4", + "ID": "87b2b1bfd455ce30", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -7461,13 +7573,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "bcbda194e19cea602b94b8d06148507c/12764579707456894621;o=0" + "33d21e24a5b7feb5f37b990443e5e8da/17800522426559596151;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -7476,20 +7588,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJhY2wiOlt7ImVudGl0eSI6ImRvbWFpbi1nb29nbGUuY29tIiwicm9sZSI6IlJFQURFUiJ9XSwiYnVja2V0IjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwiY29udGVudExhbmd1YWdlIjoiZW4iLCJjb250ZW50VHlwZSI6InRleHQvaHRtbCIsIm1ldGFkYXRhIjp7ImtleSI6InZhbHVlIn19Cg==" + "Body": "eyJhY2wiOlt7ImVudGl0eSI6ImRvbWFpbi1nb29nbGUuY29tIiwicm9sZSI6IlJFQURFUiJ9XSwiYnVja2V0IjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwiY29udGVudExhbmd1YWdlIjoiZW4iLCJjb250ZW50VHlwZSI6InRleHQvaHRtbCIsIm1ldGFkYXRhIjp7ImtleSI6InZhbHVlIn19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -7501,10 +7615,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:38 GMT" + "Wed, 25 Jul 2018 18:23:17 GMT" ], "Etag": [ - "CLmfy6yi99sCEAI=" + "CKPZ1cLvutwCEAI=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -7520,7 +7634,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220478000" + "1532543297000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -7529,16 +7643,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbj127:4134,/bns/yw/borg/yw/bns/blobstore2/bitpusher/325.scotty,acatli15:443" + "xgiadabi15:4315,/bns/xi/borg/xi/bns/blobstore2/bitpusher/118.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kk41W5GbH4yXhATojpP4BQ" + "eid=FcBYW63HBuGEygPhuovwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/325.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/118.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -7547,13 +7661,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/325:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/118:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -7568,17 +7682,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UphSvHqQuG1fJP5k8TdMfWif4dSYo5aQgcWlrQItsCbrzG3SHotYpgn2OYYSoYJe3kmBr0HxryuYtASxUsI9JTRqA-q8M3kX6gkw7uRJrpUa4lofpE" + "AEnB2UryqBo4OhH9TFnxIbGlI9qZ1XijDY-TOIgwIL9vkTRCkuLwzRad1n5396S75i0xhvAWuCWxC16VjslLimoJBepVnWAMVw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxIiwKICJuYW1lIjogIm9iajEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAiY29udGVudFR5cGUiOiAidGV4dC9odG1sIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTozOC42MTBaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MjguNTI5WiIsCiAic2l6ZSI6ICIxNiIsCiAibWQ1SGFzaCI6ICIwUTgyMjdzZVZMNkJVT01zS2NGbzl3PT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzAyMjAxNjg1MzE4OTcmYWx0PW1lZGlhIiwKICJjb250ZW50TGFuZ3VhZ2UiOiAiZW4iLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogIm1ldGFkYXRhIjogewogICJrZXkiOiAidmFsdWUiCiB9LAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS8xNTMwMjIwMTY4NTMxODk3L2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC9kb21haW4tZ29vZ2xlLmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAgICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogICAicm9sZSI6ICJSRUFERVIiLAogICAiZG9tYWluIjogImdvb2dsZS5jb20iLAogICAiZXRhZyI6ICJDTG1meTZ5aTk5c0NFQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogIm9iajEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTG1meTZ5aTk5c0NFQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiMFNHNGl3PT0iLAogImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFJPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxIiwKICJuYW1lIjogIm9iajEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAiY29udGVudFR5cGUiOiAidGV4dC9odG1sIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoxNy4yMDhaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAic2l6ZSI6ICIxNiIsCiAibWQ1SGFzaCI6ICJud1VYQUhxVVFKcTVueXk2ejNqTmt3PT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMT9nZW5lcmF0aW9uPTE1MzI1NDI5ODY4NDEyNTEmYWx0PW1lZGlhIiwKICJjb250ZW50TGFuZ3VhZ2UiOiAiZW4iLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogIm1ldGFkYXRhIjogewogICJrZXkiOiAidmFsdWUiCiB9LAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS8xNTMyNTQyOTg2ODQxMjUxL2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC9kb21haW4tZ29vZ2xlLmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJvYmoxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogICAicm9sZSI6ICJSRUFERVIiLAogICAiZG9tYWluIjogImdvb2dsZS5jb20iLAogICAiZXRhZyI6ICJDS1BaMWNMdnV0d0NFQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogIm9iajEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDS1BaMWNMdnV0d0NFQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiRkxqZXdBPT0iLAogImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFJPSIKfQo=" } }, { - "ID": "d01924ee22a5e28b", + "ID": "3267a22b842f2dbf", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -7597,13 +7711,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "e7282820e82b7404aa715108087c0dad/14379432169974020541;o=0" + "ae89184153451f9d3d3af07d5b4d197c/6995021845691238292;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -7612,20 +7726,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLCJjb250ZW50TGFuZ3VhZ2UiOm51bGwsImNvbnRlbnRUeXBlIjpudWxsLCJtZXRhZGF0YSI6bnVsbH0K" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLCJjb250ZW50TGFuZ3VhZ2UiOm51bGwsImNvbnRlbnRUeXBlIjpudWxsLCJtZXRhZGF0YSI6bnVsbH0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -7637,10 +7753,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:38 GMT" + "Wed, 25 Jul 2018 18:23:17 GMT" ], "Etag": [ - "CLmfy6yi99sCEAM=" + "CKPZ1cLvutwCEAM=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -7656,7 +7772,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220478000" + "1532543297000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -7665,16 +7781,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrca6:4103,/bns/yw/borg/yw/bns/blobstore2/bitpusher/157.scotty,acatli15:443" + "xiiadcaw14:4032,/bns/xi/borg/xi/bns/blobstore2/bitpusher/29.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kk41W62_LIaIN5_KqfgH" + "eid=FcBYW-K0E4KyswbEgp2YDw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/157.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/29.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -7683,13 +7799,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/157:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/29:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -7704,17 +7820,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoyIO4lSbzcv6b9Z6ZtTiGpW4ZQPAN_XdliDqTJ_08kdxqCaFJQJMODd-XneaT913FVG2lxQwQgeqNip6z1Oz_Oail_AlWein-v_QZqpRR41Y-TEZk" + "AEnB2UqNfQatMpauXUcNKCCbU6WjxnGmN4FSK3O-vKdnUE7KhzLJFUs-d-8mCR3FsIFep5EI-iZhmzzsnLTJd1JXg-uqmsoiTA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxIiwKICJuYW1lIjogIm9iajEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMyIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOC41MjlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MzguODA0WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAiMFE4MjI3c2VWTDZCVU9Nc0tjRm85dz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajE/Z2VuZXJhdGlvbj0xNTMwMjIwMTY4NTMxODk3JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTcvZG9tYWluLWdvb2dsZS5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogIm9iajEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgImVudGl0eSI6ICJkb21haW4tZ29vZ2xlLmNvbSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS8xNTMwMjIwMTY4NTMxODk3L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAib2JqMSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNMbWZ5NnlpOTlzQ0VBTT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICIwU0c0aXc9PSIsCiAiZXRhZyI6ICJDTG1meTZ5aTk5c0NFQU09Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxIiwKICJuYW1lIjogIm9iajEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMyIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNi44NDBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MTcuNDA1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjA2Ljg0MFoiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAibndVWEFIcVVRSnE1bnl5Nnozak5rdz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajE/Z2VuZXJhdGlvbj0xNTMyNTQyOTg2ODQxMjUxJmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvZG9tYWluLWdvb2dsZS5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogIm9iajEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgImVudGl0eSI6ICJkb21haW4tZ29vZ2xlLmNvbSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS8xNTMyNTQyOTg2ODQxMjUxL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajEvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAib2JqMSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBTT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJGTGpld0E9PSIsCiAiZXRhZyI6ICJDS1BaMWNMdnV0d0NFQU09Igp9Cg==" } }, { - "ID": "6045bf7b735b0a67", + "ID": "cf918b741f8e0d73", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -7724,19 +7840,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=7e7e4a23d8ea62390b67358209339449e904e1d02dae853d0d01ee350328" + "multipart/related; boundary=58c6eb3affdfecbc50b943d1128991c4c617888fa619467af075960e39ff" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "7c82ff278ce3f89423a206bc536383a0/15187140421670206156;o=0" + "b0dbd0f6c497e771f32520ff46fc9c99/10851672384819120162;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -7745,20 +7861,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS03ZTdlNGEyM2Q4ZWE2MjM5MGI2NzM1ODIwOTMzOTQ0OWU5MDRlMWQwMmRhZTg1M2QwZDAxZWUzNTAzMjgNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm5hbWUiOiJjaGVja3N1bS1vYmplY3QifQoNCi0tN2U3ZTRhMjNkOGVhNjIzOTBiNjczNTgyMDkzMzk0NDllOTA0ZTFkMDJkYWU4NTNkMGQwMWVlMzUwMzI4DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG93b3JsZA0KLS03ZTdlNGEyM2Q4ZWE2MjM5MGI2NzM1ODIwOTMzOTQ0OWU5MDRlMWQwMmRhZTg1M2QwZDAxZWUzNTAzMjgtLQ0K" + "Body": "LS01OGM2ZWIzYWZmZGZlY2JjNTBiOTQzZDExMjg5OTFjNGM2MTc4ODhmYTYxOTQ2N2FmMDc1OTYwZTM5ZmYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm5hbWUiOiJjaGVja3N1bS1vYmplY3QifQoNCi0tNThjNmViM2FmZmRmZWNiYzUwYjk0M2QxMTI4OTkxYzRjNjE3ODg4ZmE2MTk0NjdhZjA3NTk2MGUzOWZmDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG93b3JsZA0KLS01OGM2ZWIzYWZmZGZlY2JjNTBiOTQzZDExMjg5OTFjNGM2MTc4ODhmYTYxOTQ2N2FmMDc1OTYwZTM5ZmYtLQ0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -7770,10 +7888,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:39 GMT" + "Wed, 25 Jul 2018 18:23:17 GMT" ], "Etag": [ - "CLTD2LGi99sCEAE=" + "CIqV9MfvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -7789,7 +7907,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220478000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -7798,19 +7916,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrzz3:4408,/bns/yw/borg/yw/bns/blobstore2/bitpusher/306.scotty,acatli15:443" + "xgiadabf15:4445,/bns/xi/borg/xi/bns/blobstore2/bitpusher/103.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=kk41W-7_OML7hQTg1oPgDg" + "eid=FcBYW8S4H-60swb07ZvYDA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/306.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/103.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -7819,13 +7937,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/306:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/103:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -7840,17 +7958,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoZOe2FN2pXxq3rPyGdhc-Ku4vCBxdDI2EVDUe7uV9fsAhOKfhOjrpd7Xka1oSExxpmPlluHRTD2Xec5MHJadLjDnTkNy7Ke2HsVHYzODcBQ9lAcLQ" + "AEnB2UoIgpuVbHRwuZajxHCtaIqOXkBGsZd4a7X7s8-PWmmYk8p_KYWwgUzEn2TJlIS1UNM0u0poVoTjNgyTW7is2dkrEt_vbw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jaGVja3N1bS1vYmplY3QvMTUzMDIyMDE3OTIzNTI1MiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NoZWNrc3VtLW9iamVjdCIsCiAibmFtZSI6ICJjaGVja3N1bS1vYmplY3QiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE3OTIzNTI1MiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTozOS4yMzNaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MzkuMjMzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjM5LjIzM1oiLAogInNpemUiOiAiMTAiLAogIm1kNUhhc2giOiAiL0Y0RGpUaWxjRElJVkVIbi9uQVFzQT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NoZWNrc3VtLW9iamVjdD9nZW5lcmF0aW9uPTE1MzAyMjAxNzkyMzUyNTImYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NoZWNrc3VtLW9iamVjdC8xNTMwMjIwMTc5MjM1MjUyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jaGVja3N1bS1vYmplY3QvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNoZWNrc3VtLW9iamVjdCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNzkyMzUyNTIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNMVEQyTEdpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY2hlY2tzdW0tb2JqZWN0LzE1MzAyMjAxNzkyMzUyNTIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jaGVja3N1bS1vYmplY3QvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjaGVja3N1bS1vYmplY3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc5MjM1MjUyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNMVEQyTEdpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY2hlY2tzdW0tb2JqZWN0LzE1MzAyMjAxNzkyMzUyNTIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jaGVja3N1bS1vYmplY3QvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjaGVja3N1bS1vYmplY3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc5MjM1MjUyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTFREMkxHaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NoZWNrc3VtLW9iamVjdC8xNTMwMjIwMTc5MjM1MjUyL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NoZWNrc3VtLW9iamVjdC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjaGVja3N1bS1vYmplY3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc5MjM1MjUyIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTFREMkxHaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiVnN1MGdBPT0iLAogImV0YWciOiAiQ0xURDJMR2k5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jaGVja3N1bS1vYmplY3QvMTUzMjU0Mjk5NzgyNjE4NiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NoZWNrc3VtLW9iamVjdCIsCiAibmFtZSI6ICJjaGVja3N1bS1vYmplY3QiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5NzgyNjE4NiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoxNy44MjVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MTcuODI1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjE3LjgyNVoiLAogInNpemUiOiAiMTAiLAogIm1kNUhhc2giOiAiL0Y0RGpUaWxjRElJVkVIbi9uQVFzQT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NoZWNrc3VtLW9iamVjdD9nZW5lcmF0aW9uPTE1MzI1NDI5OTc4MjYxODYmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NoZWNrc3VtLW9iamVjdC8xNTMyNTQyOTk3ODI2MTg2L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jaGVja3N1bS1vYmplY3QvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNoZWNrc3VtLW9iamVjdCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5OTc4MjYxODYiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJcVY5TWZ2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY2hlY2tzdW0tb2JqZWN0LzE1MzI1NDI5OTc4MjYxODYvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jaGVja3N1bS1vYmplY3QvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjaGVja3N1bS1vYmplY3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTk3ODI2MTg2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJcVY5TWZ2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY2hlY2tzdW0tb2JqZWN0LzE1MzI1NDI5OTc4MjYxODYvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jaGVja3N1bS1vYmplY3QvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjaGVja3N1bS1vYmplY3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTk3ODI2MTg2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSXFWOU1mdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NoZWNrc3VtLW9iamVjdC8xNTMyNTQyOTk3ODI2MTg2L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NoZWNrc3VtLW9iamVjdC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjaGVja3N1bS1vYmplY3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTk3ODI2MTg2IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSXFWOU1mdnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiVnN1MGdBPT0iLAogImV0YWciOiAiQ0lxVjlNZnZ1dHdDRUFFPSIKfQo=" } }, { - "ID": "6a283467add5f489", + "ID": "a72851302c1c94ac", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -7860,19 +7978,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=60852424d55bc5b87b6af6dabe9c44c7d8c4504630f6fa03d5fe427c7da3" + "multipart/related; boundary=ff5db1b3764364bc9f101664a923d7efce638cf789d3c9d1a5a6a217b81a" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "0c4f94386b20fa363887eb8f5addac39/15994566103172955356;o=0" + "9f2318c5dbeb957ae6ff28d2d41d1dde/14635984963050637488;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -7881,20 +7999,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS02MDg1MjQyNGQ1NWJjNWI4N2I2YWY2ZGFiZTljNDRjN2Q4YzQ1MDQ2MzBmNmZhMDNkNWZlNDI3YzdkYTMNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm5hbWUiOiJ6ZXJvLW9iamVjdCJ9Cg0KLS02MDg1MjQyNGQ1NWJjNWI4N2I2YWY2ZGFiZTljNDRjN2Q4YzQ1MDQ2MzBmNmZhMDNkNWZlNDI3YzdkYTMNCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQoNCi0tNjA4NTI0MjRkNTViYzViODdiNmFmNmRhYmU5YzQ0YzdkOGM0NTA0NjMwZjZmYTAzZDVmZTQyN2M3ZGEzLS0NCg==" + "Body": "LS1mZjVkYjFiMzc2NDM2NGJjOWYxMDE2NjRhOTIzZDdlZmNlNjM4Y2Y3ODlkM2M5ZDFhNWE2YTIxN2I4MWENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm5hbWUiOiJ6ZXJvLW9iamVjdCJ9Cg0KLS1mZjVkYjFiMzc2NDM2NGJjOWYxMDE2NjRhOTIzZDdlZmNlNjM4Y2Y3ODlkM2M5ZDFhNWE2YTIxN2I4MWENCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQoNCi0tZmY1ZGIxYjM3NjQzNjRiYzlmMTAxNjY0YTkyM2Q3ZWZjZTYzOGNmNzg5ZDNjOWQxYTVhNmEyMTdiODFhLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -7906,10 +8026,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:39 GMT" + "Wed, 25 Jul 2018 18:23:18 GMT" ], "Etag": [ - "CNGJ/7Gi99sCEAE=" + "CMKsjcjvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -7925,7 +8045,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220479000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -7934,19 +8054,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrp67:4155,/bns/yw/borg/yw/bns/blobstore2/bitpusher/617.scotty,acatli15:443" + "xgiadaba12:4191,/bns/xi/borg/xi/bns/blobstore2/bitpusher/20.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=k041W_KfH9W5hQTt_5nwBQ" + "eid=FcBYW4-ZOa6wswbUmaUY" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/617.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/20.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -7955,13 +8075,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/617:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/20:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -7976,17 +8096,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqIv15aSqR9gSjfZYLSmon21VwUAnxNkuJ2dspn0pTZxM6H3sSkW8lnoufNJeDG7JVLgxVm_dTJeYDys120LNgYkrIbFH3u2uFsNPLGmQ7WHem_-F8" + "AEnB2Uo-glncbZdul5foYk9vnHwjO9rwyTdCqUjJHPDfqaNcevVNcCsOKQ-lW7Qn9_04J5j4_TFkgApp3wx_OQ0DyW0-NKvL2w" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC96ZXJvLW9iamVjdC8xNTMwMjIwMTc5ODY2ODMzIiwKICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vemVyby1vYmplY3QiLAogIm5hbWUiOiAiemVyby1vYmplY3QiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE3OTg2NjgzMyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTozOS44NjZaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MzkuODY2WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjM5Ljg2NloiLAogInNpemUiOiAiMCIsCiAibWQ1SGFzaCI6ICIxQjJNMlk4QXNnVHBnQW1ZN1BoQ2ZnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vemVyby1vYmplY3Q/Z2VuZXJhdGlvbj0xNTMwMjIwMTc5ODY2ODMzJmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC96ZXJvLW9iamVjdC8xNTMwMjIwMTc5ODY2ODMzL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby96ZXJvLW9iamVjdC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiemVyby1vYmplY3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc5ODY2ODMzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTkdKLzdHaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3plcm8tb2JqZWN0LzE1MzAyMjAxNzk4NjY4MzMvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby96ZXJvLW9iamVjdC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInplcm8tb2JqZWN0IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE3OTg2NjgzMyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTkdKLzdHaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3plcm8tb2JqZWN0LzE1MzAyMjAxNzk4NjY4MzMvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby96ZXJvLW9iamVjdC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInplcm8tb2JqZWN0IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE3OTg2NjgzMyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ05HSi83R2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC96ZXJvLW9iamVjdC8xNTMwMjIwMTc5ODY2ODMzL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3plcm8tb2JqZWN0L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInplcm8tb2JqZWN0IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE3OTg2NjgzMyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ05HSi83R2k5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkFBQUFBQT09IiwKICJldGFnIjogIkNOR0ovN0dpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC96ZXJvLW9iamVjdC8xNTMyNTQyOTk4MjM4Nzg2IiwKICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vemVyby1vYmplY3QiLAogIm5hbWUiOiAiemVyby1vYmplY3QiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5ODIzODc4NiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoxOC4yMzhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MTguMjM4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjE4LjIzOFoiLAogInNpemUiOiAiMCIsCiAibWQ1SGFzaCI6ICIxQjJNMlk4QXNnVHBnQW1ZN1BoQ2ZnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vemVyby1vYmplY3Q/Z2VuZXJhdGlvbj0xNTMyNTQyOTk4MjM4Nzg2JmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC96ZXJvLW9iamVjdC8xNTMyNTQyOTk4MjM4Nzg2L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby96ZXJvLW9iamVjdC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiemVyby1vYmplY3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTk4MjM4Nzg2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTUtzamNqdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3plcm8tb2JqZWN0LzE1MzI1NDI5OTgyMzg3ODYvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby96ZXJvLW9iamVjdC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInplcm8tb2JqZWN0IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5ODIzODc4NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTUtzamNqdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3plcm8tb2JqZWN0LzE1MzI1NDI5OTgyMzg3ODYvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby96ZXJvLW9iamVjdC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInplcm8tb2JqZWN0IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5ODIzODc4NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ01Lc2pjanZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC96ZXJvLW9iamVjdC8xNTMyNTQyOTk4MjM4Nzg2L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL3plcm8tb2JqZWN0L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInplcm8tb2JqZWN0IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5ODIzODc4NiIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ01Lc2pjanZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkFBQUFBQT09IiwKICJldGFnIjogIkNNS3NqY2p2dXR3Q0VBRT0iCn0K" } }, { - "ID": "34ded95cec6605e7", + "ID": "c0cc51b69256be58", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1/acl/allUsers?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1/acl/allUsers?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -8005,13 +8125,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "42ab4aeb033292a5f82f50e8e701cca2/17537644637045473276;o=0" + "cc63857e097ae547f8f19b643986db4a/3830484382182279629;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -8020,20 +8140,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1/acl/allUsers?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1/acl/allUsers?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLCJlbnRpdHkiOiJhbGxVc2VycyIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLCJlbnRpdHkiOiJhbGxVc2VycyIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -8045,10 +8167,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:40 GMT" + "Wed, 25 Jul 2018 18:23:18 GMT" ], "Etag": [ - "CLmfy6yi99sCEAQ=" + "CKPZ1cLvutwCEAQ=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -8064,7 +8186,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220478000" + "1532543297000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -8073,16 +8195,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrmm15:4085,/bns/yw/borg/yw/bns/blobstore2/bitpusher/625.scotty,acatli15:443" + "xgiadaam10:4277,/bns/xi/borg/xi/bns/blobstore2/bitpusher/121.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=k041W_zZO8LdhAT6tKGwBg" + "eid=FsBYW9ijFcKFygPBwIT4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/625.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/121.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -8091,13 +8213,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/625:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/121:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -8112,17 +8234,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoY6-UW0CwaMvW5TNGFYbHsYsxRX5kagdVsCROaQ9LUo9mjKiRbzaB9Wkgc_6Og7uSGdcdJERRU7OAwdv0W3mnTNtkWESPjRRxKrNh56ZmdPxHf_8A" + "AEnB2UoOM9pN4P1pMWIGtXNiaamoRM8msPqeZgI4ofHwu7BnvrpvIJmEzk_uaUOlj_PBV1zF1nmbJWb1Rp1effWvN7VjxjaZtg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS8xNTMwMjIwMTY4NTMxODk3L2FsbFVzZXJzIiwKICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMS9hY2wvYWxsVXNlcnMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogIm9iamVjdCI6ICJvYmoxIiwKICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogImVudGl0eSI6ICJhbGxVc2VycyIsCiAicm9sZSI6ICJSRUFERVIiLAogImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFRPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS8xNTMyNTQyOTg2ODQxMjUxL2FsbFVzZXJzIiwKICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvYWxsVXNlcnMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogIm9iamVjdCI6ICJvYmoxIiwKICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogImVudGl0eSI6ICJhbGxVc2VycyIsCiAicm9sZSI6ICJSRUFERVIiLAogImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFRPSIKfQo=" } }, { - "ID": "dd1d1deff158b341", + "ID": "84c36287e6bde7e7", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -8132,13 +8254,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "991001488e8e0f5d9d251856e505a6a1/706315971511566875;o=0" + "90f9743c390dc97ed6a2f59af4c13bce/11471447503836580585;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -8147,7 +8269,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj1" ] }, "Body": "" @@ -8155,12 +8277,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=60" @@ -8172,29 +8296,29 @@ "application/octet-stream" ], "Date": [ - "Thu, 28 Jun 2018 21:09:40 GMT" + "Wed, 25 Jul 2018 18:23:18 GMT" ], "Etag": [ - "\"d10f36dbbb1e54be8150e32c29c168f7\"" + "\"9f0517007a94409ab99f2cbacf78cd93\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:40 GMT" + "Wed, 25 Jul 2018 18:24:18 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:28 GMT" + "Wed, 25 Jul 2018 18:23:06 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:28 GMT" + "Fri, 24 Aug 2018 18:23:06 GMT" ], "X-Goog-Generation": [ - "1530220168531897" + "1532542986841251" ], "X-Goog-Hash": [ - "crc32c=0SG4iw==", - "md5=0Q8227seVL6BUOMsKcFo9w==" + "crc32c=FLjewA==", + "md5=nwUXAHqUQJq5nyy6z3jNkw==" ], "X-Goog-Metageneration": [ "4" @@ -8209,19 +8333,19 @@ "16" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/31,/bns/xg/borg/xg/bns/blobstore2/bitpusher/32.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/449,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1157.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=lE41W8imFqiy_QT2gJXQCw" + "eid=FsBYW77RJcLjlAH45JagDA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/32.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1157.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -8230,13 +8354,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/32:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/1157:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -8251,36 +8375,36 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqDYIYcHuMMhijljPeEHULmbJV5oi-_oX32R-z8Ay42iJbua6fch5_nu3gWEFLUBCqAnV-I5r6z-XVVmAHIS5wfnVJK1Q" + "AEnB2Uo_7oIS7lElhqcoMkJQvtJLIIL8gQ8fyQ2nltMRpvnZmOJMYt3zJBl5R06yvE7M_gysi9cpJFPl35nn2jycAbkRL_fYBg" ] }, - "Body": "s2D3fRXXzuQN7D8dXeoO1Q==" + "Body": "ol/0V5vpnDRTVN1jMBH2Ug==" } }, { - "ID": "592f59a35e374016", + "ID": "17d25cffc7d4c994", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ "gzip" ], "Content-Type": [ - "multipart/related; boundary=b7e421b974b4ebbbddfa0abcd4140668a78f837d2e4f7bd876954117a3ba" + "multipart/related; boundary=104e3b49ee84bc055e1eb6326e2e93304791ccd2fd32747cb1ca1852e32f" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a52cd24c99a1cf37de87331b764db59c/1441966629186536235;o=0" + "e2f2b1e0dcb3febb119f0d480be107ac/15327816572282719095;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -8289,20 +8413,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1iN2U0MjFiOTc0YjRlYmJiZGRmYTBhYmNkNDE0MDY2OGE3OGY4MzdkMmU0ZjdiZDg3Njk1NDExN2EzYmENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm5hbWUiOiJvYmoxIn0KDQotLWI3ZTQyMWI5NzRiNGViYmJkZGZhMGFiY2Q0MTQwNjY4YTc4ZjgzN2QyZTRmN2JkODc2OTU0MTE3YTNiYQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmhlbGxvDQotLWI3ZTQyMWI5NzRiNGViYmJkZGZhMGFiY2Q0MTQwNjY4YTc4ZjgzN2QyZTRmN2JkODc2OTU0MTE3YTNiYS0tDQo=" + "Body": "LS0xMDRlM2I0OWVlODRiYzA1NWUxZWI2MzI2ZTJlOTMzMDQ3OTFjY2QyZmQzMjc0N2NiMWNhMTg1MmUzMmYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm5hbWUiOiJvYmoxIn0KDQotLTEwNGUzYjQ5ZWU4NGJjMDU1ZTFlYjYzMjZlMmU5MzMwNDc5MWNjZDJmZDMyNzQ3Y2IxY2ExODUyZTMyZg0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmhlbGxvDQotLTEwNGUzYjQ5ZWU4NGJjMDU1ZTFlYjYzMjZlMmU5MzMwNDc5MWNjZDJmZDMyNzQ3Y2IxY2ExODUyZTMyZi0tDQo=" }, "Response": { "StatusCode": 401, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "30747" @@ -8311,7 +8437,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:40 GMT" + "Wed, 25 Jul 2018 18:23:18 GMT" ], "Server": [ "UploadServer" @@ -8324,16 +8450,16 @@ "Bearer realm=\"https://accounts.google.com/\"" ], "X-Google-Backends": [ - "vreb3:4090,/bns/yw/borg/yw/bns/blobstore2/bitpusher/435.scotty,acatli15:443" + "xgiadabi15:4315,/bns/xi/borg/xi/bns/blobstore2/bitpusher/14.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=lE41W-OqGcfUN9mJjPgB" + "eid=FsBYW7yNK8K5swbhtJyABg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/435.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/14.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -8342,7 +8468,7 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/435:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/14:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" @@ -8363,17 +8489,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoO3vg5fVHOvIZB9vRWoUpw81y1iuz-R2La-GOOxPgz6KxEXIl6I00PflQIxCM36Cw_p6sqJEVZLGwuAY6nNVXbxavvt-znRoi8IPh_dtBhs53hidE" + "AEnB2Uro3yTa-HH-0roVuNhW9SsrhNzXokKb032d0gWYNR9TB2iQu4hrhUEPQWXdYtG7yfU6Qr8S4ctm7Zv0pPvgc8LFH1jJ4A" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLiIsCiAgICAibG9jYXRpb25UeXBlIjogImhlYWRlciIsCiAgICAibG9jYXRpb24iOiAiQXV0aG9yaXphdGlvbiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1MT0dJTl9SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9Y29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUxPR0lOX1JFUVVJUkVELCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPXVuYXV0aG9yaXplZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uUkVRVUlSRUQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFUVVJUkVELCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5hdXRoZW50aWNhdGVkX3VzZXIsIG1lc3NhZ2U9QW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLiwgdW5uYW1lZEFyZ3VtZW50cz1bXX0sIGxvY2F0aW9uPWhlYWRlcnMuQXV0aG9yaXphdGlvbiwgbWVzc2FnZT1Bbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAxfSBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXtXV1ctQXV0aGVudGljYXRlPVtCZWFyZXIgcmVhbG09XCJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vXCJdfSwgaHR0cFN0YXR1cz11bmF1dGhvcml6ZWQsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBlcnJvclByb3RvQ29kZT1SRVFVSVJFRCwgZXJyb3JQcm90b0RvbWFpbj1nZGF0YS5Db3JlRXJyb3JEb21haW4sIGZpbHRlcmVkTWVzc2FnZT1udWxsLCBsb2NhdGlvbj1lbnRpdHkuYXV0aGVudGljYXRlZF91c2VyLCBtZXNzYWdlPUFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1oZWFkZXJzLkF1dGhvcml6YXRpb24sIG1lc3NhZ2U9QW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLiwgcmVhc29uPXJlcXVpcmVkLCBycGNDb2RlPTQwMX0gQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuYXV0aC5BdXRoZW50aWNhdG9ySW50ZXJjZXB0b3IuYWRkQ2hhbGxlbmdlSGVhZGVyKEF1dGhlbnRpY2F0b3JJbnRlcmNlcHRvci5qYXZhOjI2NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmF1dGguQXV0aGVudGljYXRvckludGVyY2VwdG9yLnByb2Nlc3NFcnJvclJlc3BvbnNlKEF1dGhlbnRpY2F0b3JJbnRlcmNlcHRvci5qYXZhOjIzMSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmF1dGguR2FpYU1pbnRJbnRlcmNlcHRvci5wcm9jZXNzRXJyb3JSZXNwb25zZShHYWlhTWludEludGVyY2VwdG9yLmphdmE6NzQ3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuQXJvdW5kSW50ZXJjZXB0b3JXcmFwcGVyLnByb2Nlc3NFcnJvclJlc3BvbnNlKEFyb3VuZEludGVyY2VwdG9yV3JhcHBlci5qYXZhOjI4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc3RhdHMuU3RhdHNCb290c3RyYXAkSW50ZXJjZXB0b3JTdGF0c1JlY29yZGVyLnByb2Nlc3NFcnJvclJlc3BvbnNlKFN0YXRzQm9vdHN0cmFwLmphdmE6MzEyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24uaGFuZGxlRXJyb3JSZXNwb25zZShJbnRlcmNlcHRpb25zLmphdmE6MjAyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24uYWNjZXNzJDIwMChJbnRlcmNlcHRpb25zLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24kMS5jYWxsKEludGVyY2VwdGlvbnMuamF2YToxNDQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLmludGVyY2VwdC5JbnRlcmNlcHRpb25zJEFyb3VuZEludGVyY2VwdGlvbiQxLmNhbGwoSW50ZXJjZXB0aW9ucy5qYXZhOjEzNylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0RXhjZXB0aW9uKEFic3RyYWN0RnV0dXJlLmphdmE6NzE2KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9TE9HSU5fUkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9dW5hdXRob3JpemVkLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LmF1dGhlbnRpY2F0ZWRfdXNlciwgbWVzc2FnZT1Bbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249aGVhZGVycy5BdXRob3JpemF0aW9uLCBtZXNzYWdlPUFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS4sIHJlYXNvbj1yZXF1aXJlZCwgcnBjQ29kZT00MDF9IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdC4uLiAxOSBtb3JlXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAxLAogICJtZXNzYWdlIjogIkFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS4iCiB9Cn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLiIsCiAgICAibG9jYXRpb25UeXBlIjogImhlYWRlciIsCiAgICAibG9jYXRpb24iOiAiQXV0aG9yaXphdGlvbiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1MT0dJTl9SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9Y29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUxPR0lOX1JFUVVJUkVELCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPXVuYXV0aG9yaXplZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uUkVRVUlSRUQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFUVVJUkVELCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5hdXRoZW50aWNhdGVkX3VzZXIsIG1lc3NhZ2U9QW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLiwgdW5uYW1lZEFyZ3VtZW50cz1bXX0sIGxvY2F0aW9uPWhlYWRlcnMuQXV0aG9yaXphdGlvbiwgbWVzc2FnZT1Bbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAxfSBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXtXV1ctQXV0aGVudGljYXRlPVtCZWFyZXIgcmVhbG09XCJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vXCJdfSwgaHR0cFN0YXR1cz11bmF1dGhvcml6ZWQsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBlcnJvclByb3RvQ29kZT1SRVFVSVJFRCwgZXJyb3JQcm90b0RvbWFpbj1nZGF0YS5Db3JlRXJyb3JEb21haW4sIGZpbHRlcmVkTWVzc2FnZT1udWxsLCBsb2NhdGlvbj1lbnRpdHkuYXV0aGVudGljYXRlZF91c2VyLCBtZXNzYWdlPUFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1oZWFkZXJzLkF1dGhvcml6YXRpb24sIG1lc3NhZ2U9QW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLiwgcmVhc29uPXJlcXVpcmVkLCBycGNDb2RlPTQwMX0gQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuYXV0aC5BdXRoZW50aWNhdG9ySW50ZXJjZXB0b3IuYWRkQ2hhbGxlbmdlSGVhZGVyKEF1dGhlbnRpY2F0b3JJbnRlcmNlcHRvci5qYXZhOjI2NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmF1dGguQXV0aGVudGljYXRvckludGVyY2VwdG9yLnByb2Nlc3NFcnJvclJlc3BvbnNlKEF1dGhlbnRpY2F0b3JJbnRlcmNlcHRvci5qYXZhOjIzMSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmF1dGguR2FpYU1pbnRJbnRlcmNlcHRvci5wcm9jZXNzRXJyb3JSZXNwb25zZShHYWlhTWludEludGVyY2VwdG9yLmphdmE6NzQ1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuQXJvdW5kSW50ZXJjZXB0b3JXcmFwcGVyLnByb2Nlc3NFcnJvclJlc3BvbnNlKEFyb3VuZEludGVyY2VwdG9yV3JhcHBlci5qYXZhOjI4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc3RhdHMuU3RhdHNCb290c3RyYXAkSW50ZXJjZXB0b3JTdGF0c1JlY29yZGVyLnByb2Nlc3NFcnJvclJlc3BvbnNlKFN0YXRzQm9vdHN0cmFwLmphdmE6MzEyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24uaGFuZGxlRXJyb3JSZXNwb25zZShJbnRlcmNlcHRpb25zLmphdmE6MjAyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24uYWNjZXNzJDIwMChJbnRlcmNlcHRpb25zLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24kMS5jYWxsKEludGVyY2VwdGlvbnMuamF2YToxNDQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLmludGVyY2VwdC5JbnRlcmNlcHRpb25zJEFyb3VuZEludGVyY2VwdGlvbiQxLmNhbGwoSW50ZXJjZXB0aW9ucy5qYXZhOjEzNylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0RXhjZXB0aW9uKEFic3RyYWN0RnV0dXJlLmphdmE6NzE2KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9TE9HSU5fUkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9dW5hdXRob3JpemVkLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LmF1dGhlbnRpY2F0ZWRfdXNlciwgbWVzc2FnZT1Bbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249aGVhZGVycy5BdXRob3JpemF0aW9uLCBtZXNzYWdlPUFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS4sIHJlYXNvbj1yZXF1aXJlZCwgcnBjQ29kZT00MDF9IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdC4uLiAxOSBtb3JlXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAxLAogICJtZXNzYWdlIjogIkFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS4iCiB9Cn0K" } }, { - "ID": "c1a944df53fd8fc4", + "ID": "e48050aef4c4969c", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/copy-obj1?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/copy-obj1?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -8386,13 +8512,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "2439dc7cd39040458030bc9205c27fca/2249393410184135995;o=0" + "bd8b90422d88e9ac925994388f6c5f67/665946922968222470;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -8401,7 +8527,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/copy-obj1?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/copy-obj1?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -8412,9 +8538,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -8426,7 +8554,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:41 GMT" + "Wed, 25 Jul 2018 18:23:19 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -8442,7 +8570,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220479000" + "1532543286000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -8451,16 +8579,16 @@ "998958384336" ], "X-Google-Backends": [ - "vryy3:4212,/bns/yw/borg/yw/bns/blobstore2/bitpusher/522.scotty,acatli15:443" + "xiiadcbk13:4247,/bns/xi/borg/xi/bns/blobstore2/bitpusher/93.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=lE41W5GOLcSnhQTgoLeoCQ" + "eid=F8BYW-FMqbSzBpjljNgL" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/522.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/93.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -8469,13 +8597,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/522:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/93:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -8490,17 +8618,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoRRSVS9-NSrNiyahJHHoDW1i0nGUeTDiuoSZXwbiPkvqIPs7zIoM6hYHmpeDveP92nl0gtvNteFJlQyLXmx-dquE6rXU89hswkv7KP4KSOdQjnk9A" + "AEnB2UqYaePpqNjKmf7E62a-MiDTqbazV4RWjoa6droYh9HowWqqZdY6LfIo_8S8AsbMGEaa2lPhnAmgSpkoSQVVcsIhd5VQsw" ] }, "Body": "" } }, { - "ID": "f502ab13eb16bade", + "ID": "1602d04e5742ea15", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/copy-obj1?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/copy-obj1?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -8513,13 +8641,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b5eaebec6a6cab0efb2315645f4b12c0/3056820191198512715;o=0" + "495f0a2cfeccc38945aafbd418603fec/4522315991414361236;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -8528,7 +8656,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/copy-obj1?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/copy-obj1?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -8539,9 +8667,11 @@ "Response": { "StatusCode": 404, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -8553,10 +8683,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:41 GMT" + "Wed, 25 Jul 2018 18:23:19 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:41 GMT" + "Wed, 25 Jul 2018 18:23:19 GMT" ], "Server": [ "UploadServer" @@ -8566,7 +8696,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220479000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -8575,16 +8705,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrjp14:4237,/bns/yw/borg/yw/bns/blobstore2/bitpusher/133.scotty,acatli15:443" + "xgiadaae1:4085,/bns/xi/borg/xi/bns/blobstore2/bitpusher/125.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=lU41W8brCI6IhQSY0ILACg" + "eid=F8BYW7miH8GFygP35YHoAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/133.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/125.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -8593,13 +8723,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/133:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/125:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -8614,17 +8744,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqlsHu9J5W-VxNO-cxU9Ar22Em0uM89QE858y4rpMV0HIB6ofHYniXq5gyWC6IuibtLD43gbr4qej2U5lxoQpOfjZLoUTMQuk72ADa418PBIktpgXM" + "AEnB2UpFiedi2Omaq6YrFYBvHaamyhkiQJc7eP2mA-1vrCT6Hb9CR0KzUmw3x2h0s3YhplcpgcCm0MWL9PhRPfSD3e_eCG6UuQ" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb3B5LW9iajEiLAogICAgImRlYnVnSW5mbyI6ICJjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1OT1RfRk9VTkQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPU5PVF9GT1VORCwgZXJyb3JQcm90b0RvbWFpbj1nZGF0YS5Db3JlRXJyb3JEb21haW4sIGZpbHRlcmVkTWVzc2FnZT1udWxsLCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQubmFtZSwgbWVzc2FnZT1ObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMSwgdW5uYW1lZEFyZ3VtZW50cz1bXX0sIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZV9pZC5uYW1lLCBtZXNzYWdlPU5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMTogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6Ok9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwNCwKICAibWVzc2FnZSI6ICJObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMSIKIH0KfQo=" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb3B5LW9iajEiLAogICAgImRlYnVnSW5mbyI6ICJjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1OT1RfRk9VTkQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPU5PVF9GT1VORCwgZXJyb3JQcm90b0RvbWFpbj1nZGF0YS5Db3JlRXJyb3JEb21haW4sIGZpbHRlcmVkTWVzc2FnZT1udWxsLCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQubmFtZSwgbWVzc2FnZT1ObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMSwgdW5uYW1lZEFyZ3VtZW50cz1bXX0sIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZV9pZC5uYW1lLCBtZXNzYWdlPU5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMTogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6Ok9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwNCwKICAibWVzc2FnZSI6ICJObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMSIKIH0KfQo=" } }, { - "ID": "47e8d9448dceec2b", + "ID": "720ad909201d145f", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/copy-obj1?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/copy-obj1?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -8637,13 +8767,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fc3f2bccad8cb44b2f00fbe3b7bc8c68/4671954124397447530;o=0" + "be3e3cf98acc0c17bd05771392a26df3/12163279113068662192;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -8652,7 +8782,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/copy-obj1?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/copy-obj1?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -8663,9 +8793,11 @@ "Response": { "StatusCode": 404, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -8677,10 +8809,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:41 GMT" + "Wed, 25 Jul 2018 18:23:19 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:41 GMT" + "Wed, 25 Jul 2018 18:23:19 GMT" ], "Server": [ "UploadServer" @@ -8690,7 +8822,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220469000" + "1532543287000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -8699,16 +8831,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrw187:4237,/bns/yw/borg/yw/bns/blobstore2/bitpusher/101.scotty,acatli15:443" + "xiiadcca7:4401,/bns/xi/borg/xi/bns/blobstore2/bitpusher/50.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=lU41W_HWDMHvhAS3rbPYCg" + "eid=F8BYW8PEIsKwswbo-qroCQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/101.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/50.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -8717,13 +8849,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/101:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/50:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -8738,17 +8870,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UrUJpe5YfSJu_icHpRBUFUMt9UV58bb8MgUc1PGysJqH4zXT0jds-8TiTaaFqaedJFsNK-_3RCVVfV6ZVkM5d64FxdEk9HvtQqqP1ZudaFzDVaqgc0" + "AEnB2UrEFaJuU43EkZ9a3OPACLQHz5miDc9qKv9a7ayd935FYUSKyDnBoEo6x-BeWdAAFvVbx796n0sDdwodi-LFfytOltFLyA" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb3B5LW9iajEiLAogICAgImRlYnVnSW5mbyI6ICJjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1OT1RfRk9VTkQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPU5PVF9GT1VORCwgZXJyb3JQcm90b0RvbWFpbj1nZGF0YS5Db3JlRXJyb3JEb21haW4sIGZpbHRlcmVkTWVzc2FnZT1udWxsLCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQubmFtZSwgbWVzc2FnZT1ObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMSwgdW5uYW1lZEFyZ3VtZW50cz1bXX0sIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZV9pZC5uYW1lLCBtZXNzYWdlPU5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMTogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6Ok9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5HZXRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldE9iamVjdC5qYXZhOjMzMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmdldChPYmplY3RzRGVsZWdhdG9yLmphdmE6ODEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwNCwKICAibWVzc2FnZSI6ICJObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvcHktb2JqMSIKIH0KfQo=" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb3B5LW9iajEiLAogICAgImRlYnVnSW5mbyI6ICJjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1OT1RfRk9VTkQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6T0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogT0JKRUNUX05PVF9GT1VORDogTm8gc3VjaCBvYmplY3Q6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb3B5LW9iajFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPU5PVF9GT1VORCwgZXJyb3JQcm90b0RvbWFpbj1nZGF0YS5Db3JlRXJyb3JEb21haW4sIGZpbHRlcmVkTWVzc2FnZT1udWxsLCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQubmFtZSwgbWVzc2FnZT1ObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMSwgdW5uYW1lZEFyZ3VtZW50cz1bXX0sIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZV9pZC5uYW1lLCBtZXNzYWdlPU5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMTogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6Ok9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE9CSkVDVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggb2JqZWN0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29weS1vYmoxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5HZXRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldE9iamVjdC5qYXZhOjMzMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmdldChPYmplY3RzRGVsZWdhdG9yLmphdmE6ODEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBPQkpFQ1RfTk9UX0ZPVU5EOiBPQkpFQ1RfTk9UX0ZPVU5EOiBObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwNCwKICAibWVzc2FnZSI6ICJObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvcHktb2JqMSIKIH0KfQo=" } }, { - "ID": "024d2b7ddf821088", + "ID": "bc2dcd6daedbf12b", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/composed1/compose?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/composed1/compose?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -8767,13 +8899,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a802d6afab7f8bdefddf2f0c900a92fc/6215031558775114890;o=0" + "795823fae1bc56539477f0c3c6a55502/1357778532200304333;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -8782,20 +8914,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/composed1/compose?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/composed1/compose?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6Im9iajEifSx7Im5hbWUiOiJvYmoyIn0seyJuYW1lIjoib2JqL3dpdGgvc2xhc2hlcyJ9XX0K" + "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6Im9iajEifSx7Im5hbWUiOiJvYmoyIn0seyJuYW1lIjoib2JqL3dpdGgvc2xhc2hlcyJ9XX0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -8807,10 +8941,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:41 GMT" + "Wed, 25 Jul 2018 18:23:20 GMT" ], "Etag": [ - "CPOQ+bKi99sCEAE=" + "CNXlgcnvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -8826,7 +8960,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220477000" + "1532543295000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -8835,16 +8969,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbd184:4417,/bns/yw/borg/yw/bns/blobstore2/bitpusher/238.scotty,acatli15:443" + "xiiadcca7:4401,/bns/xi/borg/xi/bns/blobstore2/bitpusher/52.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=lU41W-LXH8GphQST_ovoDA" + "eid=F8BYW_2UMcWxswbvo6bYDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/238.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/52.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -8853,13 +8987,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/238:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/52:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -8874,17 +9008,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqauuIjA7aCDmXplEE0U_AMwzdx7YVJ6LKdaS9L46_U64F-EQ-paHups1d3KpSZYpVvi16qYPV-HA2Ajg0v4CBzrp_nj6lP_NkxlySOoRfMZhQZaM0" + "AEnB2Uq40VTdjQ1hWBPSa4S127LyTnK-5XTJOY7OdPIlYQUjUtTZs9iFaRCdxQG06SN9Fz5vvsjJCe7qRBrnrVZPs0r7S3eN_A" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb21wb3NlZDEvMTUzMDIyMDE4MTg2NjYxMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbXBvc2VkMSIsCiAibmFtZSI6ICJjb21wb3NlZDEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4MTg2NjYxMSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0MS44NjVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDEuODY1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQxLjg2NVoiLAogInNpemUiOiAiNDgiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29tcG9zZWQxP2dlbmVyYXRpb249MTUzMDIyMDE4MTg2NjYxMSZhbHQ9bWVkaWEiLAogImNyYzMyYyI6ICJvdUl1NFE9PSIsCiAiY29tcG9uZW50Q291bnQiOiAzLAogImV0YWciOiAiQ1BPUStiS2k5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb21wb3NlZDEvMTUzMjU0MzAwMDE0NjY0NSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbXBvc2VkMSIsCiAibmFtZSI6ICJjb21wb3NlZDEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwMDE0NjY0NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyMC4xNDZaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjAuMTQ2WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjIwLjE0NloiLAogInNpemUiOiAiNDgiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29tcG9zZWQxP2dlbmVyYXRpb249MTUzMjU0MzAwMDE0NjY0NSZhbHQ9bWVkaWEiLAogImNyYzMyYyI6ICJNUkFmeWc9PSIsCiAiY29tcG9uZW50Q291bnQiOiAzLAogImV0YWciOiAiQ05YbGdjbnZ1dHdDRUFFPSIKfQo=" } }, { - "ID": "c616fcd5c099c293", + "ID": "ed49dcc21ac6eaa4", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/composed1", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/composed1", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -8897,13 +9031,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "4bbc25ef894e6e26454178bf690b73ff/7830165491974049705;o=0" + "2d47f08ebede06d239b38e532165a07e/8998741649559703529;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -8912,7 +9046,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/composed1" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/composed1" ] }, "Body": "" @@ -8920,12 +9054,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -8937,16 +9073,16 @@ "application/octet-stream" ], "Date": [ - "Thu, 28 Jun 2018 21:09:42 GMT" + "Wed, 25 Jul 2018 18:23:20 GMT" ], "Etag": [ - "\"-CPOQ+bKi99sCEAE=\"" + "\"-CNXlgcnvutwCEAE=\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:42 GMT" + "Wed, 25 Jul 2018 18:23:20 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:41 GMT" + "Wed, 25 Jul 2018 18:23:20 GMT" ], "Server": [ "UploadServer" @@ -8955,13 +9091,13 @@ "3" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:41 GMT" + "Fri, 24 Aug 2018 18:23:20 GMT" ], "X-Goog-Generation": [ - "1530220181866611" + "1532543000146645" ], "X-Goog-Hash": [ - "crc32c=ouIu4Q==" + "crc32c=MRAfyg==" ], "X-Goog-Metageneration": [ "1" @@ -8976,7 +9112,7 @@ "48" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/8,/bns/xg/borg/xg/bns/blobstore2/bitpusher/56.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/146,/bns/yb/borg/yb/bns/blobstore2/bitpusher/882.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -8985,13 +9121,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=lU41W43MO6-5_QT08q2oCA" + "eid=GMBYW-mpEYTilgGz07OgDA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/56.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/882.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -9000,13 +9136,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/56:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/882:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -9021,17 +9157,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UogE3YK17fOi9DWYEk4cpa9m_8HM5yG4rwVgqe7i1Iy22-RV-YXCw1Un8Vt1_OWsBgSRMp6MWdiWKL0fhY0K1SsxM6kFA" + "AEnB2UqrMoSNK8TIwf9LzAutTWKZlmehvgj16AwNIAK-Mu5w2facKkCXYLCI5_rNYedMjRcoT1IPTWlEJgkSCNxzDHvcTZKqWw" ] }, - "Body": "s2D3fRXXzuQN7D8dXeoO1WKE3my2HBY1doDVv6ftYG1EOplUMbLfvCWXCuPj+eDA" + "Body": "ol/0V5vpnDRTVN1jMBH2UiKwxNJmSk4fX1+sgbziNREyW6Zad/yqO+MJ5jt3egfo" } }, { - "ID": "8901dc5a7f965e82", + "ID": "6ba3a6eb78165892", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/composed2/compose?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/composed2/compose?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -9050,13 +9186,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3e2514d221bdf6b31206abac50f017c5/9373244030141469385;o=0" + "5c637d77a32f7b8f8d6e8fbb9b9709a8/16639422196742443014;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -9065,20 +9201,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/composed2/compose?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/composed2/compose?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLCJjb250ZW50VHlwZSI6InRleHQvanNvbiJ9LCJzb3VyY2VPYmplY3RzIjpbeyJuYW1lIjoib2JqMSJ9LHsibmFtZSI6Im9iajIifSx7Im5hbWUiOiJvYmovd2l0aC9zbGFzaGVzIn1dfQo=" + "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLCJjb250ZW50VHlwZSI6InRleHQvanNvbiJ9LCJzb3VyY2VPYmplY3RzIjpbeyJuYW1lIjoib2JqMSJ9LHsibmFtZSI6Im9iajIifSx7Im5hbWUiOiJvYmovd2l0aC9zbGFzaGVzIn1dfQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -9090,10 +9228,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:42 GMT" + "Wed, 25 Jul 2018 18:23:20 GMT" ], "Etag": [ - "COrnmLOi99sCEAE=" + "CKm7psnvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -9109,7 +9247,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220477000" + "1532543295000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -9118,16 +9256,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqi23:4269,/bns/yw/borg/yw/bns/blobstore2/bitpusher/102.scotty,acatli15:443" + "xgiadaca8:4102,/bns/xi/borg/xi/bns/blobstore2/bitpusher/89.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=lk41W5C1BMT2N87Rh_gH" + "eid=GMBYW8rQGoO9swaYg4XIAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/102.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/89.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -9136,13 +9274,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/102:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/89:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBVXdQOWhxWjhxbzB5c3VBNFFpbFdwZ3lfbldIREZ6RkxMRGtiRWRCU2xucjN3bnRQTWl2SDFJRm9OMEJTNnlBVHVnc0Jua20ydDNMOVl6dFlBVE9hVEUzYkpyeDlpMC1JTmd6d3NLM1Q2cEV6cVV4TmNtRjZUTHZZQkpWUkx1al84bDdCZTlzMXlMcXI3UXNlcnV4dUdjU2lNRmFvUDJrbTl0a3FtNUFxRGhpYUNNY2w5ZXBZVERiTUkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3Wld1VlZPbFo5UEJuNy1xSnQ3YTFGeE42d05KRlNFUUJsSWxQNkUtZGdWZnY4YVVVVlJ3UEJWTkNTMVp6VVBiLTFYMnFnZVhBOVpfaXBOQVk0OE9zc0cwNEgyemxJbGpxcGwxVFlwNEdCeWhMRVE0RVZGbXZadFB5Si1SYnV5aTB3cEVmcVQ1aG9qRHVkYnpyeXVSU2Q3M05iWHhra2xSRUZhMUE2cXJGY1pvcFBBZmhZaTNDUWwzTDQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -9157,17 +9295,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqrDSD_F30QrEmritwRpafHlQe167lqAXjAQrw6Gg3mkjEV30T4pdMgUEhbNSTMXj2NV6gcOKH81mCJkss2uBbr-D4bJdlKpJUBbSk3y9i8zLLu9cY" + "AEnB2UoCEyBjfUiojY7nE_12fAN1NbbWX5PI8H_YpZ9QJ0FZ6cUj6tgRVRe18-53UIcqjp7YvwQuX7migBXhz7S4BVMjGku9FA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb21wb3NlZDIvMTUzMDIyMDE4MjM4NTY0MiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbXBvc2VkMiIsCiAibmFtZSI6ICJjb21wb3NlZDIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4MjM4NTY0MiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9qc29uIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQyLjM4NVoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0Mi4zODVaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDIuMzg1WiIsCiAic2l6ZSI6ICI0OCIsCiAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb21wb3NlZDI/Z2VuZXJhdGlvbj0xNTMwMjIwMTgyMzg1NjQyJmFsdD1tZWRpYSIsCiAiY3JjMzJjIjogIm91SXU0UT09IiwKICJjb21wb25lbnRDb3VudCI6IDMsCiAiZXRhZyI6ICJDT3JubUxPaTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb21wb3NlZDIvMTUzMjU0MzAwMDc0NzQzMyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbXBvc2VkMiIsCiAibmFtZSI6ICJjb21wb3NlZDIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwMDc0NzQzMyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9qc29uIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjIwLjc0N1oiLAogInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyMC43NDdaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjAuNzQ3WiIsCiAic2l6ZSI6ICI0OCIsCiAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb21wb3NlZDI/Z2VuZXJhdGlvbj0xNTMyNTQzMDAwNzQ3NDMzJmFsdD1tZWRpYSIsCiAiY3JjMzJjIjogIk1SQWZ5Zz09IiwKICJjb21wb25lbnRDb3VudCI6IDMsCiAiZXRhZyI6ICJDS203cHNudnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "fa892cdb56ce33b3", + "ID": "ee6f1740a68b9136", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/composed2", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/composed2", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -9180,13 +9318,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a1f43403e2af5b7a3e0f4538908a154c/10988377963340404200;o=0" + "75810f2606a85a8ae56cb069d27c73b9/5833922719663903010;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -9195,7 +9333,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/composed2" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/composed2" ] }, "Body": "" @@ -9203,12 +9341,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -9220,16 +9360,16 @@ "text/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:42 GMT" + "Wed, 25 Jul 2018 18:23:21 GMT" ], "Etag": [ - "\"-COrnmLOi99sCEAE=\"" + "\"-CKm7psnvutwCEAE=\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:42 GMT" + "Wed, 25 Jul 2018 18:23:21 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:42 GMT" + "Wed, 25 Jul 2018 18:23:20 GMT" ], "Server": [ "UploadServer" @@ -9238,13 +9378,13 @@ "3" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:42 GMT" + "Fri, 24 Aug 2018 18:23:20 GMT" ], "X-Goog-Generation": [ - "1530220182385642" + "1532543000747433" ], "X-Goog-Hash": [ - "crc32c=ouIu4Q==" + "crc32c=MRAfyg==" ], "X-Goog-Metageneration": [ "1" @@ -9259,7 +9399,7 @@ "48" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/63,/bns/xg/borg/xg/bns/blobstore2/bitpusher/45.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/503,/bns/yb/borg/yb/bns/blobstore2/bitpusher/206.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -9268,13 +9408,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=lk41W47sHbC6_QTIkYuwBw" + "eid=GcBYW6OTAYaAlQGZzKiwAw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/45.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/206.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -9283,13 +9423,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/45:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/206:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -9304,17 +9444,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Up861RvQZNGZ9FgjowHTduZbfP0CgIbyX4f_GKliPjsEeEHUHgtboFp7bOIAy3D6r68LUJrDw-_27vpxhScFNAzlq8FtQ" + "AEnB2UqBO-cKiILEkR-QzsauYiH4kzEB5rZ1ClLjjWo6x5ejKFk8zGpPrujPlZ6ZckqAULzTnbLRv4i8yacVuPsqAg-5dYqhQl2sFqruJlGCk5V4BJS0h_k" ] }, - "Body": "s2D3fRXXzuQN7D8dXeoO1WKE3my2HBY1doDVv6ftYG1EOplUMbLfvCWXCuPj+eDA" + "Body": "ol/0V5vpnDRTVN1jMBH2UiKwxNJmSk4fX1+sgbziNREyW6Zad/yqO+MJ5jt3egfo" } }, { - "ID": "48e868edd18d7490", + "ID": "6c4da20e0560d9a9", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -9324,19 +9464,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=7da19fbb5c7edb82d69a0e3571eca6df0b4c73e6bde967ec9440c8debf90" + "multipart/related; boundary=2242f0dfdc56fa7e53de8fc7c9bab59f08527bf0376340dc8438f3114506" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "ff61edfce806046a971f3b3649fd8748/11795804740043102200;o=0" + "3583df452bae8d2df96382fb8f1455fd/9618515664770568881;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -9345,20 +9485,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS03ZGExOWZiYjVjN2VkYjgyZDY5YTBlMzU3MWVjYTZkZjBiNGM3M2U2YmRlOTY3ZWM5NDQwYzhkZWJmOTANCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNvbnRlbnRFbmNvZGluZyI6Imd6aXAiLCJuYW1lIjoiZ3ppcC10ZXN0In0KDQotLTdkYTE5ZmJiNWM3ZWRiODJkNjlhMGUzNTcxZWNhNmRmMGI0YzczZTZiZGU5NjdlYzk0NDBjOGRlYmY5MA0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWd6aXANCg0KH4sIAAAAAAAA/2IgEgACAAD//7E97OkoAAAADQotLTdkYTE5ZmJiNWM3ZWRiODJkNjlhMGUzNTcxZWNhNmRmMGI0YzczZTZiZGU5NjdlYzk0NDBjOGRlYmY5MC0tDQo=" + "Body": "LS0yMjQyZjBkZmRjNTZmYTdlNTNkZThmYzdjOWJhYjU5ZjA4NTI3YmYwMzc2MzQwZGM4NDM4ZjMxMTQ1MDYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNvbnRlbnRFbmNvZGluZyI6Imd6aXAiLCJuYW1lIjoiZ3ppcC10ZXN0In0KDQotLTIyNDJmMGRmZGM1NmZhN2U1M2RlOGZjN2M5YmFiNTlmMDg1MjdiZjAzNzYzNDBkYzg0MzhmMzExNDUwNg0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWd6aXANCg0KH4sIAAAAAAAA/2IgEgACAAD//7E97OkoAAAADQotLTIyNDJmMGRmZGM1NmZhN2U1M2RlOGZjN2M5YmFiNTlmMDg1MjdiZjAzNzYzNDBkYzg0MzhmMzExNDUwNi0tDQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -9370,10 +9512,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:43 GMT" + "Wed, 25 Jul 2018 18:23:21 GMT" ], "Etag": [ - "CL+UwLOi99sCEAE=" + "CLj61snvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -9389,7 +9531,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220482000" + "1532543301000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -9398,19 +9540,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrnb21:4197,/bns/yw/borg/yw/bns/blobstore2/bitpusher/608.scotty,acatli15:443" + "xgiadabk16:4043,/bns/xi/borg/xi/bns/blobstore2/bitpusher/16.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=lk41W9DMKoPThQS6q4CABQ" + "eid=GcBYW7zYC4-wswbzhrDoBw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/608.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/16.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -9419,13 +9561,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/608:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/16:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBV2laelVCeUhpa1dlOEtEeVV3YWN6M3pQN00tMldaQ01aNTlMSEpWblZPTHlCbE5wV0R3T0lmblMwM2V4MHA3MTRqczRhUVM0d0hrTTVwTnAyVG80d0NrREpMQ3hqckxDVUVsNG1XQ01OVkVLMWtwSDVHV2V1NDA0dU9MU0k0cWNNRWQ1amRCUllQNTJ4TWpMLTgwNWdQaVp3ZllSYVdLZG95RE9kakhzWVdvVE1WaEt2M1MyZ2NselUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WnJJdFpGZkN5WHlQSmtlZEsxZlZNMDRUUDRhS1hPak96b0lCRUYyRXRmVVV1MXJwUk8yOXQtWTVueEFUbEU5QW5uOG1saml3VEhwaHhzTndrUGpsVXROb3JSMHBjaklyODJlOFlHRURuUWtDODBJTDdta0tCNFJEN0VvakRoam14eExKRTljVjBwaVNndTNWNVh3X1NITFlrX2M0U1JUOVVrLWdpU1NSWnR2NDBkdFhCeHZ1S3c1Wk0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -9440,17 +9582,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur9KrwBYDlb2rTmOtJ5p3M5Nkx1TJIqo-HGOjGriqYBOFkNFIBl4hM4uUn_IAQ1oUgnc36WxQmJef7BJ28O-LXLxLD6VJOxmoj16Zv24PnQlN3EDao" + "AEnB2UpSovvaWd8EZ93kqnbtIHb2lXKKT121hU72i9W4yQPwMU7RUwMH1tAMcBEst-PRL-5oLmLKCB6uIrEyNWmSjPKsa2CMHA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9nemlwLXRlc3QvMTUzMDIyMDE4MzAzMDMzNSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2d6aXAtdGVzdCIsCiAibmFtZSI6ICJnemlwLXRlc3QiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4MzAzMDMzNSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24veC1nemlwIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQzLjAyOVoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0My4wMjlaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDMuMDI5WiIsCiAic2l6ZSI6ICIyNyIsCiAibWQ1SGFzaCI6ICJPdEN3K2FSUklScUtHRkFFT2F4K3F3PT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vZ3ppcC10ZXN0P2dlbmVyYXRpb249MTUzMDIyMDE4MzAzMDMzNSZhbHQ9bWVkaWEiLAogImNvbnRlbnRFbmNvZGluZyI6ICJnemlwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2d6aXAtdGVzdC8xNTMwMjIwMTgzMDMwMzM1L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9nemlwLXRlc3QvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImd6aXAtdGVzdCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODMwMzAzMzUiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNMK1V3TE9pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvZ3ppcC10ZXN0LzE1MzAyMjAxODMwMzAzMzUvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9nemlwLXRlc3QvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJnemlwLXRlc3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTgzMDMwMzM1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNMK1V3TE9pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvZ3ppcC10ZXN0LzE1MzAyMjAxODMwMzAzMzUvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9nemlwLXRlc3QvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJnemlwLXRlc3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTgzMDMwMzM1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTCtVd0xPaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2d6aXAtdGVzdC8xNTMwMjIwMTgzMDMwMzM1L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2d6aXAtdGVzdC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJnemlwLXRlc3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTgzMDMwMzM1IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTCtVd0xPaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiOURod0JBPT0iLAogImV0YWciOiAiQ0wrVXdMT2k5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9nemlwLXRlc3QvMTUzMjU0MzAwMTU0MTk0NCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2d6aXAtdGVzdCIsCiAibmFtZSI6ICJnemlwLXRlc3QiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwMTU0MTk0NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24veC1nemlwIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjIxLjU0MVoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyMS41NDFaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjEuNTQxWiIsCiAic2l6ZSI6ICIyNyIsCiAibWQ1SGFzaCI6ICJPdEN3K2FSUklScUtHRkFFT2F4K3F3PT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vZ3ppcC10ZXN0P2dlbmVyYXRpb249MTUzMjU0MzAwMTU0MTk0NCZhbHQ9bWVkaWEiLAogImNvbnRlbnRFbmNvZGluZyI6ICJnemlwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2d6aXAtdGVzdC8xNTMyNTQzMDAxNTQxOTQ0L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9nemlwLXRlc3QvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImd6aXAtdGVzdCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDE1NDE5NDQiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNMajYxc252dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvZ3ppcC10ZXN0LzE1MzI1NDMwMDE1NDE5NDQvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9nemlwLXRlc3QvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJnemlwLXRlc3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAxNTQxOTQ0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNMajYxc252dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvZ3ppcC10ZXN0LzE1MzI1NDMwMDE1NDE5NDQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9nemlwLXRlc3QvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJnemlwLXRlc3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAxNTQxOTQ0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTGo2MXNudnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2d6aXAtdGVzdC8xNTMyNTQzMDAxNTQxOTQ0L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2d6aXAtdGVzdC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJnemlwLXRlc3QiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAxNTQxOTQ0IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTGo2MXNudnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiOURod0JBPT0iLAogImV0YWciOiAiQ0xqNjFzbnZ1dHdDRUFFPSIKfQo=" } }, { - "ID": "ddf65dd5c4745d32", + "ID": "ed1ef889c632edcd", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/gzip-test", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/gzip-test", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -9463,13 +9605,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "30fe7f483d1d547c2fb109738e66324c/13338882178715736599;o=0" + "d804a06a8e0b4edd2ee15d8067399d81/17259478786424869837;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -9478,7 +9620,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/gzip-test" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/gzip-test" ] }, "Body": "" @@ -9486,12 +9628,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "none" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -9500,13 +9644,13 @@ "application/x-gzip" ], "Date": [ - "Thu, 28 Jun 2018 21:09:43 GMT" + "Wed, 25 Jul 2018 18:23:21 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:43 GMT" + "Wed, 25 Jul 2018 18:23:21 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:43 GMT" + "Wed, 25 Jul 2018 18:23:21 GMT" ], "Server": [ "UploadServer" @@ -9515,10 +9659,10 @@ "Accept-Encoding" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:43 GMT" + "Fri, 24 Aug 2018 18:23:21 GMT" ], "X-Goog-Generation": [ - "1530220183030335" + "1532543001541944" ], "X-Goog-Hash": [ "crc32c=9DhwBA==", @@ -9537,7 +9681,7 @@ "27" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/2,/bns/xg/borg/xg/bns/blobstore2/bitpusher/92.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/395,/bns/yb/borg/yb/bns/blobstore2/bitpusher/251.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -9546,13 +9690,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=l041W7P7C4G9_QS-lbDYAw" + "eid=GcBYW8-RKIWdlAGykqnQAg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/92.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/251.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Body-Transformations": [ "gunzipped,chunked" @@ -9564,13 +9708,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/92:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/251:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -9585,17 +9729,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UobcNcq1kFGC46XBHiGfNcVdyMURbQJxiYXlKgH9BwUdazfXFtR2CA7eMbdNodywydL4HyZ5x7rqagjZXdEuZNoUr_I-Q" + "AEnB2UpE1zHQ8xJkqd2pTuKxfhkhEHBV1SqjUrk2q5cD7z3l_VqcqEb6BTxJnzcyKM44fUSDUy2dedYczL6MUg9k-iGiXo9JB_Xu__YlgRlPJrPKSQzKnR4" ] }, "Body": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==" } }, { - "ID": "f2e9354e39d7fcec", + "ID": "509fd8554b688f33", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj-not-exists", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj-not-exists", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -9608,13 +9752,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "efec7d6d3344685c7a4ec9108dfa65ba/14954016111914605879;o=0" + "1bebb44d028afc4128bc83934ba79c1b/6453697834369619178;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -9623,7 +9767,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/obj-not-exists" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/obj-not-exists" ] }, "Body": "" @@ -9631,9 +9775,11 @@ "Response": { "StatusCode": 404, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -9645,28 +9791,28 @@ "application/xml; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:43 GMT" + "Wed, 25 Jul 2018 18:23:21 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:43 GMT" + "Wed, 25 Jul 2018 18:23:21 GMT" ], "Server": [ "UploadServer" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/0,/bns/xg/borg/xg/bns/blobstore2/bitpusher/85.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/151,/bns/yb/borg/yb/bns/blobstore2/bitpusher/680.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=l041W-zEFOy2_QTdo4vQAw" + "eid=GcBYW9vfLoGvlgGukrfgAw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/85.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/680.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -9675,13 +9821,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/85:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/680:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Guploader-Customer": [ "cloud-storage" @@ -9693,17 +9839,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Uri0yYDeoFdk2V7tB7_K3FyBXHrkwYoQT8n9dI4pL31Kvefzs21ennuSKGhDkL8WmeKh9NXWXViOUCH550FeUbYbn4wdw" + "AEnB2UpzylElkX6h-bIbtJV21deVGqlSsm0-7kKQFMVxNTNPb8daEDheOAETQg78urBeY-ekgJ_UUvNrwn1lq7n-Qi-YiAfs32jl2HD19-_f9d5Qu-lobkg" ] }, - "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai1ub3QtZXhpc3RzPC9EZXRhaWxzPjwvRXJyb3I+" + "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+Tm9TdWNoS2V5PC9Db2RlPjxNZXNzYWdlPlRoZSBzcGVjaWZpZWQga2V5IGRvZXMgbm90IGV4aXN0LjwvTWVzc2FnZT48RGV0YWlscz5ObyBzdWNoIG9iamVjdDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iai1ub3QtZXhpc3RzPC9EZXRhaWxzPjwvRXJyb3I+" } }, { - "ID": "f762f3eb36f18ca9", + "ID": "c9ae3660a1098780", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -9713,19 +9859,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=1aae4b1173687e1e552a21c1e13f46ff06b464cbcddc7afcc5fa5144972d" + "multipart/related; boundary=9609261e3f44d77c071b9e694e6b53feee2eba9536f3f9c97ab79379a8e3" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9d9c6370fae418c69db0b2f9aee1ef70/15761724363610725959;o=0" + "e01e2607a32412b064c11eda9d075112/10238290779493127288;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -9734,20 +9880,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0xYWFlNGIxMTczNjg3ZTFlNTUyYTIxYzFlMTNmNDZmZjA2YjQ2NGNiY2RkYzdhZmNjNWZhNTE0NDk3MmQNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJzaWduZWRVUkwifQoNCi0tMWFhZTRiMTE3MzY4N2UxZTU1MmEyMWMxZTEzZjQ2ZmYwNmI0NjRjYmNkZGM3YWZjYzVmYTUxNDQ5NzJkDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KVGhpcyBpcyBhIHRlc3Qgb2YgU2lnbmVkVVJMLgoNCi0tMWFhZTRiMTE3MzY4N2UxZTU1MmEyMWMxZTEzZjQ2ZmYwNmI0NjRjYmNkZGM3YWZjYzVmYTUxNDQ5NzJkLS0NCg==" + "Body": "LS05NjA5MjYxZTNmNDRkNzdjMDcxYjllNjk0ZTZiNTNmZWVlMmViYTk1MzZmM2Y5Yzk3YWI3OTM3OWE4ZTMNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJzaWduZWRVUkwifQoNCi0tOTYwOTI2MWUzZjQ0ZDc3YzA3MWI5ZTY5NGU2YjUzZmVlZTJlYmE5NTM2ZjNmOWM5N2FiNzkzNzlhOGUzDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KVGhpcyBpcyBhIHRlc3Qgb2YgU2lnbmVkVVJMLgoNCi0tOTYwOTI2MWUzZjQ0ZDc3YzA3MWI5ZTY5NGU2YjUzZmVlZTJlYmE5NTM2ZjNmOWM5N2FiNzkzNzlhOGUzLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -9759,10 +9907,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:44 GMT" + "Wed, 25 Jul 2018 18:23:22 GMT" ], "Etag": [ - "CJfI/bOi99sCEAE=" + "CLPCjcrvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -9778,7 +9926,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220483000" + "1532543302000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -9787,19 +9935,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrit75:4012,/bns/yw/borg/yw/bns/blobstore2/bitpusher/521.scotty,acatli15:443" + "xiiadcbh13:4060,/bns/xi/borg/xi/bns/blobstore2/bitpusher/65.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=l041W_6AK9OkhATsyYKoCg" + "eid=GsBYW4u6BOSwswah7LfIBA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/521.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/65.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -9808,13 +9956,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/521:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/65:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVTV5S0NDdGhFZmVyUVdmSnU5MVotNzRJTk5nQ2tsYVhUUFFuSm9ZZVA5Q3poc1RBa0J5M1dJejZWSmxQV2Jadk56dzFVV0lJdkNzXzdFZTRuUkxyWThVVk1ySmhqZUQ3djNuWmFJSTkwN21yQjc2TDQwUXNGaV9PUXd5QmNub1ZxeXNSdlpFUWEtb0pDbFRnZFRJN2cxdExkTmdRM0UzM0diMG9NRE5SQXEtcy1WN0RLUjZGYkI1RTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWNzZHdFYjhpLU5JVkFBRUNzcE1rRk1na1RzcF84bm5mOFNVbEc0dWZEU3Y2cDFHQVdDcV8yektNZFBKYVM4YmdmVzduc29nRFczNEw5bXE4dXc3WGh0MzJ6ZmJMYlg2bnNvU09sRm9BTG9LS0tKUTBESTNwMmZIenA3Mk9RQ0dHUzdja3RIRTllc3FhWGUxZ2x1OXZFM0hnU0xIY2FfcXZ3Skw3YTN5WFU1MFgzWWM5NEVtVVNSMU0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -9829,17 +9977,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqIIObb67CqrJjZGGujPJBAIykqJDmdlXHQAWdaBFkxxF-zoDl0OMjwc799a4A9LiuX_wkNphZQYtzh6obDerT5owlC7oQoqL5MAVZ_dbrzQVEdIB4" + "AEnB2UrSt42ZRTMPREtN5EEvwIPtNoUCwhvwYq9A7nsh5FrtXj9zZjTGtCMQo8LOs4qKIYUzZgGihNPZBY3i__Th3U8aCHgfLA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9zaWduZWRVUkwvMTUzMDIyMDE4NDAzNjM3NSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3NpZ25lZFVSTCIsCiAibmFtZSI6ICJzaWduZWRVUkwiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4NDAzNjM3NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0NC4wMzVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDQuMDM1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQ0LjAzNVoiLAogInNpemUiOiAiMjkiLAogIm1kNUhhc2giOiAiSnl4dmd3bTluMk1zckdUTVBiTWVZQT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3NpZ25lZFVSTD9nZW5lcmF0aW9uPTE1MzAyMjAxODQwMzYzNzUmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3NpZ25lZFVSTC8xNTMwMjIwMTg0MDM2Mzc1L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9zaWduZWRVUkwvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInNpZ25lZFVSTCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODQwMzYzNzUiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNKZkkvYk9pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvc2lnbmVkVVJMLzE1MzAyMjAxODQwMzYzNzUvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9zaWduZWRVUkwvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJzaWduZWRVUkwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg0MDM2Mzc1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNKZkkvYk9pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvc2lnbmVkVVJMLzE1MzAyMjAxODQwMzYzNzUvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9zaWduZWRVUkwvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJzaWduZWRVUkwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg0MDM2Mzc1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSmZJL2JPaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3NpZ25lZFVSTC8xNTMwMjIwMTg0MDM2Mzc1L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3NpZ25lZFVSTC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJzaWduZWRVUkwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg0MDM2Mzc1IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSmZJL2JPaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiWlRxQUx3PT0iLAogImV0YWciOiAiQ0pmSS9iT2k5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9zaWduZWRVUkwvMTUzMjU0MzAwMjQzNTg5MSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL3NpZ25lZFVSTCIsCiAibmFtZSI6ICJzaWduZWRVUkwiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwMjQzNTg5MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyMi40MzRaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjIuNDM0WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjIyLjQzNFoiLAogInNpemUiOiAiMjkiLAogIm1kNUhhc2giOiAiSnl4dmd3bTluMk1zckdUTVBiTWVZQT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL3NpZ25lZFVSTD9nZW5lcmF0aW9uPTE1MzI1NDMwMDI0MzU4OTEmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3NpZ25lZFVSTC8xNTMyNTQzMDAyNDM1ODkxL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9zaWduZWRVUkwvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInNpZ25lZFVSTCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDI0MzU4OTEiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNMUENqY3J2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvc2lnbmVkVVJMLzE1MzI1NDMwMDI0MzU4OTEvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9zaWduZWRVUkwvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJzaWduZWRVUkwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAyNDM1ODkxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNMUENqY3J2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvc2lnbmVkVVJMLzE1MzI1NDMwMDI0MzU4OTEvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9zaWduZWRVUkwvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJzaWduZWRVUkwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAyNDM1ODkxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTFBDamNydnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3NpZ25lZFVSTC8xNTMyNTQzMDAyNDM1ODkxL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL3NpZ25lZFVSTC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJzaWduZWRVUkwiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAyNDM1ODkxIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTFBDamNydnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiWlRxQUx3PT0iLAogImV0YWciOiAiQ0xQQ2pjcnZ1dHdDRUFFPSIKfQo=" } }, { - "ID": "2909f3034e24d6b6", + "ID": "34d230ed114dabbc", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/defaultObjectAcl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/defaultObjectAcl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -9858,13 +10006,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "774aa5d4650144644bf39c7c459842c5/17304520331601617254;o=0" + "39f25e32680771ffa701442ec90a0fc1/17879253901147428244;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -9873,20 +10021,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/defaultObjectAcl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/defaultObjectAcl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -9898,7 +10048,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:46 GMT" + "Wed, 25 Jul 2018 18:23:24 GMT" ], "Etag": [ "CAY=" @@ -9917,7 +10067,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220484000" + "1532543303000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -9926,16 +10076,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrad2:4118,/bns/yw/borg/yw/bns/blobstore2/bitpusher/169.scotty,acatli15:443" + "xgiadacl12:4133,/bns/xi/borg/xi/bns/blobstore2/bitpusher/104.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=mE41W4S2OcjPhASU8bPwBw" + "eid=G8BYW-iQFOy2swaUwyg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/169.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/104.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -9944,13 +10094,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/169:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/104:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVjhOWUY3WG0teTQzbE8yZ3h4U0s5bXJMR2tBeVVoXzNfLVJPY3JRQVBxZjIwVFJNelpvc0t2NnFrajQtdXZscnZmTmc0c1JSWWpuTTd1WkI2elZhU3BFUHZya3E0b1U3dzE5bEtwS29UbDFwZjFDUEYyQjN5SXdDQXZGRUd6UGI4OWpQN3hLUzRwelNDcDRxM2gzUkNQOTIyTWEzMEtmM1lWa2pMbXI5YjE4SFg2cXJSVGZpUTBYVmMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3WmpnbGZzeGtrNzhLS3U5el9mcjdvbVVCMFE0aGRfdkJia19rU29sV3I3b3BHanpSS2ZQTl9lU2R4LUNoZ0paRWx3ckF1cDFHdVJkMWF1Z0hubGkzc20tbENPYXl3RnBjOFdWZ1NSZl9iMkMyekdFLXZ6dzVRazZQYTBnSmN2ZkZBei1xbGdDa1NDZnEwTzd5eHMtYldSdHJNQ0JEdTh2dkNEbjJRcTI0XzhwbThjcEpGYXQ5WGJsZFEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -9965,17 +10115,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UphZ-uykk5v_9im8sU8HNODNZrG3PHS_jU3B1HIQMWlz5Xzq7AAvsZuJ_NcmUVK6OMPGeoo7lsgLweeRTTMO9-m-uUS8PD57ReqOBO5kuxefraZd7c" + "AEnB2UoE4N1aZhNDY0sfO1sw2Y5LOSmc02nXtz1ZkzMpbR1qvwLYz8VrvZzXQAjl0xLfVDzLowpc_NCNMwvWGLJLJLBXYYoJpA" ] }, "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQVk9Igp9Cg==" } }, { - "ID": "2351849636a66d32", + "ID": "1ed58258516f07ea", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/defaultObjectAcl?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/defaultObjectAcl?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -9988,13 +10138,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "6528ce8ff655c97055943e9a2efcd142/473191661772743814;o=0" + "87e7dcc420ed0e09da469ef2cf3b7662/7073471849597327025;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -10003,7 +10153,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/defaultObjectAcl?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/defaultObjectAcl?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -10014,9 +10164,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -10028,13 +10180,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:46 GMT" + "Wed, 25 Jul 2018 18:23:25 GMT" ], "Etag": [ "CAY=" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:46 GMT" + "Wed, 25 Jul 2018 18:23:25 GMT" ], "Server": [ "UploadServer" @@ -10044,7 +10196,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220486000" + "1532543304000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -10053,16 +10205,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrgh6:4422,/bns/yw/borg/yw/bns/blobstore2/bitpusher/288.scotty,acatli15:443" + "xhiadbac7:4350,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=mk41W7uhIIXGhQT1vofYAg" + "eid=HMBYW7DUOYaxswa5pbcI" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/288.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -10071,13 +10223,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/288:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/5:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVjhOWUY3WG0teTQzbE8yZ3h4U0s5bXJMR2tBeVVoXzNfLVJPY3JRQVBxZjIwVFJNelpvc0t2NnFrajQtdXZscnZmTmc0c1JSWWpuTTd1WkI2elZhU3BFUHZya3E0b1U3dzE5bEtwS29UbDFwZjFDUEYyQjN5SXdDQXZGRUd6UGI4OWpQN3hLUzRwelNDcDRxM2gzUkNQOTIyTWEzMEtmM1lWa2pMbXI5YjE4SFg2cXJSVGZpUTBYVmMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3WmpnbGZzeGtrNzhLS3U5el9mcjdvbVVCMFE0aGRfdkJia19rU29sV3I3b3BHanpSS2ZQTl9lU2R4LUNoZ0paRWx3ckF1cDFHdVJkMWF1Z0hubGkzc20tbENPYXl3RnBjOFdWZ1NSZl9iMkMyekdFLXZ6dzVRazZQYTBnSmN2ZkZBei1xbGdDa1NDZnEwTzd5eHMtYldSdHJNQ0JEdTh2dkNEbjJRcTI0XzhwbThjcEpGYXQ5WGJsZFEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -10092,17 +10244,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo6CObBwq6TxDHOaGuZBnZADr2sYexUwwIE4cZM6Woa5n2Ey447AbCGJWiYtTnCtkz53DCaMJ5enRA7rjNKTMICXhogTNsbN2z6GmMLOZ92dm4B72M" + "AEnB2UpSe_C0kHQwtFGTZSI7I7NOwokj6awIjEKU07_GRABotBdJxZreTb3Dt7BbnTitZ5Z9ufwVoMcjPYr4KN1NG3ep0DHrpg" ] }, "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBWT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDQVk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBWT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogICAicm9sZSI6ICJSRUFERVIiLAogICAiZG9tYWluIjogImdvb2dsZS5jb20iLAogICAiZXRhZyI6ICJDQVk9IgogIH0KIF0KfQo=" } }, { - "ID": "d98ee334def0f34f", + "ID": "db5cfbe507963dc9", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -10112,19 +10264,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=1140cd01479a2c64a90225b404d50ba85d4a2ef71e9331520c5fa74e9b77" + "multipart/related; boundary=dedb4abe67e502256d7299ba655758ed48852ea95f3fac1a9b9fb8c691db" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "047674c33f2c372fd784b59934451106/1280899913452152469;o=0" + "70fc6f61009ea8c06c2c4071c5b59712/10930122393020110655;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -10133,35 +10285,37 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0xMTQwY2QwMTQ3OWEyYzY0YTkwMjI1YjQwNGQ1MGJhODVkNGEyZWY3MWU5MzMxNTIwYzVmYTc0ZTliNzcNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJhY2wxIn0KDQotLTExNDBjZDAxNDc5YTJjNjRhOTAyMjViNDA0ZDUwYmE4NWQ0YTJlZjcxZTkzMzE1MjBjNWZhNzRlOWI3Nw0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0NCg0Kq9MHb1aG9kabpZe9PWcqEw0KLS0xMTQwY2QwMTQ3OWEyYzY0YTkwMjI1YjQwNGQ1MGJhODVkNGEyZWY3MWU5MzMxNTIwYzVmYTc0ZTliNzctLQ0K" + "Body": "LS1kZWRiNGFiZTY3ZTUwMjI1NmQ3Mjk5YmE2NTU3NThlZDQ4ODUyZWE5NWYzZmFjMWE5YjlmYjhjNjkxZGINCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJhY2wxIn0KDQotLWRlZGI0YWJlNjdlNTAyMjU2ZDcyOTliYTY1NTc1OGVkNDg4NTJlYTk1ZjNmYWMxYTliOWZiOGM2OTFkYg0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCq9AOYFSfof04oT16idFkq4NCi0tZGVkYjRhYmU2N2U1MDIyNTZkNzI5OWJhNjU1NzU4ZWQ0ODg1MmVhOTVmM2ZhYzFhOWI5ZmI4YzY5MWRiLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "4122" + "4123" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:47 GMT" + "Wed, 25 Jul 2018 18:23:25 GMT" ], "Etag": [ - "CKf/urWi99sCEAE=" + "CN/qy8vvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -10177,7 +10331,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220486000" + "1532543305000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -10186,19 +10340,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrqi23:4269,/bns/yw/borg/yw/bns/blobstore2/bitpusher/405.scotty,acatli15:443" + "xgiadaau9:4168,/bns/xi/borg/xi/bns/blobstore2/bitpusher/73.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=mk41W8XvMsm8hgT99KeQAw" + "eid=HcBYW7_1DMW9swa6lIW4AQ" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/405.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/73.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -10207,13 +10361,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/405:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/73:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjhOWUY3WG0teTQzbE8yZ3h4U0s5bXJMR2tBeVVoXzNfLVJPY3JRQVBxZjIwVFJNelpvc0t2NnFrajQtdXZscnZmTmc0c1JSWWpuTTd1WkI2elZhU3BFUHZya3E0b1U3dzE5bEtwS29UbDFwZjFDUEYyQjN5SXdDQXZGRUd6UGI4OWpQN3hLUzRwelNDcDRxM2gzUkNQOTIyTWEzMEtmM1lWa2pMbXI5YjE4SFg2cXJSVGZpUTBYVmMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WmpnbGZzeGtrNzhLS3U5el9mcjdvbVVCMFE0aGRfdkJia19rU29sV3I3b3BHanpSS2ZQTl9lU2R4LUNoZ0paRWx3ckF1cDFHdVJkMWF1Z0hubGkzc20tbENPYXl3RnBjOFdWZ1NSZl9iMkMyekdFLXZ6dzVRazZQYTBnSmN2ZkZBei1xbGdDa1NDZnEwTzd5eHMtYldSdHJNQ0JEdTh2dkNEbjJRcTI0XzhwbThjcEpGYXQ5WGJsZFEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -10228,17 +10382,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoLrEVwNy5VE-TES0hKaqSWqA0be-05nfrTIXWY_GWg7TYZCgmLaFsHJuxqmqFD3o7q-SXZtkOmyZFJYPh6cjLWlI4T3GQ2nCUKejWJnJzxuZLPEXQ" + "AEnB2Uoc8vzt6t776k8EtNIl74yv79EnCqSSwi_fMIxLXNdfq1abQ6r0LV9qHS8lBLXd-58TxaQaza59sd1_2ekpiRiNrvCArg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wxLzE1MzAyMjAxODcxNDAwMDciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9hY2wxIiwKICJuYW1lIjogImFjbDEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4NzE0MDAwNyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQ3LjEzOVoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0Ny4xMzlaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDcuMTM5WiIsCiAic2l6ZSI6ICIxNiIsCiAibWQ1SGFzaCI6ICJoMWNsc0Y0K0FCVGRvbTFjc04wUWlnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMT9nZW5lcmF0aW9uPTE1MzAyMjAxODcxNDAwMDcmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FjbDEvMTUzMDIyMDE4NzE0MDAwNy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiYWNsMSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODcxNDAwMDciLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNLZi91cldpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsMS8xNTMwMjIwMTg3MTQwMDA3L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImFjbDEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg3MTQwMDA3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNLZi91cldpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsMS8xNTMwMjIwMTg3MTQwMDA3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImFjbDEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg3MTQwMDA3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDS2YvdXJXaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FjbDEvMTUzMDIyMDE4NzE0MDAwNy9kb21haW4tZ29vZ2xlLmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMS9hY2wvZG9tYWluLWdvb2dsZS5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiYWNsMSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODcxNDAwMDciLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0tmL3VyV2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wxLzE1MzAyMjAxODcxNDAwMDcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJhY2wxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4NzE0MDAwNyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0tmL3VyV2k5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIks2Ty9Ydz09IiwKICJldGFnIjogIkNLZi91cldpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wxLzE1MzI1NDMwMDU1NTQwMTUiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hY2wxIiwKICJuYW1lIjogImFjbDEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwNTU1NDAxNSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyNS41NTJaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjUuNTUyWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjI1LjU1MloiLAogInNpemUiOiAiMTYiLAogIm1kNUhhc2giOiAiQXRlNS9sRENZanNiUFVhSXVoaE95UT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2FjbDE/Z2VuZXJhdGlvbj0xNTMyNTQzMDA1NTU0MDE1JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wxLzE1MzI1NDMwMDU1NTQwMTUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2FjbDEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImFjbDEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA1NTU0MDE1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTi9xeTh2dnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FjbDEvMTUzMjU0MzAwNTU1NDAxNS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2FjbDEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJhY2wxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwNTU1NDAxNSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTi9xeTh2dnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FjbDEvMTUzMjU0MzAwNTU1NDAxNS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2FjbDEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJhY2wxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwNTU1NDAxNSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ04vcXk4dnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wxLzE1MzI1NDMwMDU1NTQwMTUvZG9tYWluLWdvb2dsZS5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2FjbDEvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImFjbDEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA1NTU0MDE1IiwKICAgImVudGl0eSI6ICJkb21haW4tZ29vZ2xlLmNvbSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAgICJldGFnIjogIkNOL3F5OHZ2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsMS8xNTMyNTQzMDA1NTU0MDE1L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2FjbDEvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiYWNsMSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDU1NTQwMTUiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNOL3F5OHZ2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtaU1Xcmc9PSIsCiAiZXRhZyI6ICJDTi9xeTh2dnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "39bd214f0babdc97", + "ID": "8df66d29b9a963d8", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -10248,19 +10402,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=9e2920d032337a48d45556501082fea3c6fe3b342016d99292273bc34b6e" + "multipart/related; boundary=81861b08306fdddea49e31c2eef5e0f86e7595fa7209670c64ced7ae9738" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fb6a5b3da784870011234b949929f9f0/2088325594971678629;o=0" + "1bf121c2aaedd69d845023c49b974d6f/14714434966939949261;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -10269,20 +10423,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS05ZTI5MjBkMDMyMzM3YTQ4ZDQ1NTU2NTAxMDgyZmVhM2M2ZmUzYjM0MjAxNmQ5OTI5MjI3M2JjMzRiNmUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJhY2wyIn0KDQotLTllMjkyMGQwMzIzMzdhNDhkNDU1NTY1MDEwODJmZWEzYzZmZTNiMzQyMDE2ZDk5MjkyMjczYmMzNGI2ZQ0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0NCg0KJYKubtu2jgTY+SuH+jDyLA0KLS05ZTI5MjBkMDMyMzM3YTQ4ZDQ1NTU2NTAxMDgyZmVhM2M2ZmUzYjM0MjAxNmQ5OTI5MjI3M2JjMzRiNmUtLQ0K" + "Body": "LS04MTg2MWIwODMwNmZkZGRlYTQ5ZTMxYzJlZWY1ZTBmODZlNzU5NWZhNzIwOTY3MGM2NGNlZDdhZTk3MzgNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJhY2wyIn0KDQotLTgxODYxYjA4MzA2ZmRkZGVhNDllMzFjMmVlZjVlMGY4NmU3NTk1ZmE3MjA5NjcwYzY0Y2VkN2FlOTczOA0KQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0NCg0Kb8akmmONOwKE8momL3681Q0KLS04MTg2MWIwODMwNmZkZGRlYTQ5ZTMxYzJlZWY1ZTBmODZlNzU5NWZhNzIwOTY3MGM2NGNlZDdhZTk3MzgtLQ0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -10294,10 +10450,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:47 GMT" + "Wed, 25 Jul 2018 18:23:26 GMT" ], "Etag": [ - "COqx37Wi99sCEAE=" + "CNX46cvvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -10313,7 +10469,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220486000" + "1532543305000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -10322,19 +10478,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrcb9:4119,/bns/yw/borg/yw/bns/blobstore2/bitpusher/388.scotty,acatli15:443" + "xgiadaad15:4167,/bns/xi/borg/xi/bns/blobstore2/bitpusher/1.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=m041W6WBF4q0hQSgpJTwCw" + "eid=HcBYW_G2KO2yswad5qDADg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/388.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/1.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -10343,13 +10499,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/388:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/1:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjhOWUY3WG0teTQzbE8yZ3h4U0s5bXJMR2tBeVVoXzNfLVJPY3JRQVBxZjIwVFJNelpvc0t2NnFrajQtdXZscnZmTmc0c1JSWWpuTTd1WkI2elZhU3BFUHZya3E0b1U3dzE5bEtwS29UbDFwZjFDUEYyQjN5SXdDQXZGRUd6UGI4OWpQN3hLUzRwelNDcDRxM2gzUkNQOTIyTWEzMEtmM1lWa2pMbXI5YjE4SFg2cXJSVGZpUTBYVmMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WmpnbGZzeGtrNzhLS3U5el9mcjdvbVVCMFE0aGRfdkJia19rU29sV3I3b3BHanpSS2ZQTl9lU2R4LUNoZ0paRWx3ckF1cDFHdVJkMWF1Z0hubGkzc20tbENPYXl3RnBjOFdWZ1NSZl9iMkMyekdFLXZ6dzVRazZQYTBnSmN2ZkZBei1xbGdDa1NDZnEwTzd5eHMtYldSdHJNQ0JEdTh2dkNEbjJRcTI0XzhwbThjcEpGYXQ5WGJsZFEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -10364,17 +10520,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo7r7nWi4H4Sws49spxiHCbiAticOsjCwgbBSw9LqfLrmOiFU1ghgJdUFHvMowypIPB0G5RbmdpbMU38Eeedzxst3L36r3sdbdVk1UW8UnxPxrl3Fo" + "AEnB2Uqv4nuFMw_wsOgP9E7buUfGJf5Y8Yg1DhpllkaeX8XBjRTfSZCeyAyTh99I4Rl2wkfiK5IKoBQ0Oq2rKWmc7FFTAbhPew" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wyLzE1MzAyMjAxODc3MzYyOTgiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9hY2wyIiwKICJuYW1lIjogImFjbDIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4NzczNjI5OCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQ3LjczNVoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0Ny43MzVaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDcuNzM1WiIsCiAic2l6ZSI6ICIxNiIsCiAibWQ1SGFzaCI6ICJZUG9zbEJ4WWFhOHVmU3NHdTArMUpRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMj9nZW5lcmF0aW9uPTE1MzAyMjAxODc3MzYyOTgmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FjbDIvMTUzMDIyMDE4NzczNjI5OC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiYWNsMiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODc3MzYyOTgiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNPcXgzN1dpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsMi8xNTMwMjIwMTg3NzM2Mjk4L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImFjbDIiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg3NzM2Mjk4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNPcXgzN1dpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsMi8xNTMwMjIwMTg3NzM2Mjk4L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImFjbDIiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg3NzM2Mjk4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDT3F4MzdXaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FjbDIvMTUzMDIyMDE4NzczNjI5OC9kb21haW4tZ29vZ2xlLmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMi9hY2wvZG9tYWluLWdvb2dsZS5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiYWNsMiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODc3MzYyOTgiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ09xeDM3V2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wyLzE1MzAyMjAxODc3MzYyOTgvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJhY2wyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4NzczNjI5OCIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ09xeDM3V2k5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIlhYTUFVZz09IiwKICJldGFnIjogIkNPcXgzN1dpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wyLzE1MzI1NDMwMDYwNDczMTciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hY2wyIiwKICJuYW1lIjogImFjbDIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwNjA0NzMxNyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjI2LjA0N1oiLAogInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyNi4wNDdaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjYuMDQ3WiIsCiAic2l6ZSI6ICIxNiIsCiAibWQ1SGFzaCI6ICJDcUN1cXRjMldUQ08zWEpvMVYzREtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMj9nZW5lcmF0aW9uPTE1MzI1NDMwMDYwNDczMTcmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FjbDIvMTUzMjU0MzAwNjA0NzMxNy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiYWNsMiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDYwNDczMTciLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNOWDQ2Y3Z2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsMi8xNTMyNTQzMDA2MDQ3MzE3L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImFjbDIiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA2MDQ3MzE3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNOWDQ2Y3Z2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsMi8xNTMyNTQzMDA2MDQ3MzE3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImFjbDIiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA2MDQ3MzE3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTlg0NmN2dnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FjbDIvMTUzMjU0MzAwNjA0NzMxNy9kb21haW4tZ29vZ2xlLmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMi9hY2wvZG9tYWluLWdvb2dsZS5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiYWNsMiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDYwNDczMTciLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ05YNDZjdnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wyLzE1MzI1NDMwMDYwNDczMTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJhY2wyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwNjA0NzMxNyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ05YNDZjdnZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogInA0c2RKZz09IiwKICJldGFnIjogIkNOWDQ2Y3Z2dXR3Q0VBRT0iCn0K" } }, { - "ID": "96cd0d46514ba385", + "ID": "31f89a3087e1b592", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/acl1/acl?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/acl1/acl?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -10387,13 +10543,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "e76eaf6ce30d28dddefbcb534211ba4e/3631404133139098309;o=0" + "455022b324b4a2a90b19ae6ccf2fb302/3908934386071591402;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -10402,7 +10558,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/acl1/acl?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/acl1/acl?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -10413,9 +10569,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -10427,13 +10585,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:47 GMT" + "Wed, 25 Jul 2018 18:23:26 GMT" ], "Etag": [ - "CKf/urWi99sCEAE=" + "CN/qy8vvutwCEAE=" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:47 GMT" + "Wed, 25 Jul 2018 18:23:26 GMT" ], "Server": [ "UploadServer" @@ -10443,7 +10601,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220486000" + "1532543303000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -10452,16 +10610,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrno9:4236,/bns/yw/borg/yw/bns/blobstore2/bitpusher/337.scotty,acatli15:443" + "xiiadcab8:4431,/bns/xi/borg/xi/bns/blobstore2/bitpusher/26.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=m041W5iONMO3hgTcw4ywBg" + "eid=HsBYW9uQCaOxswak0oXADA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/337.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/26.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -10470,13 +10628,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/337:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/26:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVjhOWUY3WG0teTQzbE8yZ3h4U0s5bXJMR2tBeVVoXzNfLVJPY3JRQVBxZjIwVFJNelpvc0t2NnFrajQtdXZscnZmTmc0c1JSWWpuTTd1WkI2elZhU3BFUHZya3E0b1U3dzE5bEtwS29UbDFwZjFDUEYyQjN5SXdDQXZGRUd6UGI4OWpQN3hLUzRwelNDcDRxM2gzUkNQOTIyTWEzMEtmM1lWa2pMbXI5YjE4SFg2cXJSVGZpUTBYVmMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3WmpnbGZzeGtrNzhLS3U5el9mcjdvbVVCMFE0aGRfdkJia19rU29sV3I3b3BHanpSS2ZQTl9lU2R4LUNoZ0paRWx3ckF1cDFHdVJkMWF1Z0hubGkzc20tbENPYXl3RnBjOFdWZ1NSZl9iMkMyekdFLXZ6dzVRazZQYTBnSmN2ZkZBei1xbGdDa1NDZnEwTzd5eHMtYldSdHJNQ0JEdTh2dkNEbjJRcTI0XzhwbThjcEpGYXQ5WGJsZFEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -10491,17 +10649,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqsGecvmY1V1_kreiviQyhF_V7LxU5Boelr3sYPMFjjzO0-b4fPruC4dzT1h937eTkjhb2MFQn9x_m-u_i4QxyleU_Yx2kGLFmhiQZxT7PpaJr1Iw0" + "AEnB2UrYafGORXLiLW4L4_G0-VtudhS0qbacDv-QbQ-BKEWUX0ZB9KkiCXtMD4XVTdeyFqlVgwKKh_dv8kk2QNZXelX7ISdw3w" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FjbDEvMTUzMDIyMDE4NzE0MDAwNy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiYWNsMSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODcxNDAwMDciLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNLZi91cldpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsMS8xNTMwMjIwMTg3MTQwMDA3L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImFjbDEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg3MTQwMDA3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNLZi91cldpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsMS8xNTMwMjIwMTg3MTQwMDA3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImFjbDEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg3MTQwMDA3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDS2YvdXJXaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FjbDEvMTUzMDIyMDE4NzE0MDAwNy9kb21haW4tZ29vZ2xlLmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMS9hY2wvZG9tYWluLWdvb2dsZS5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiYWNsMSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODcxNDAwMDciLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0tmL3VyV2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wxLzE1MzAyMjAxODcxNDAwMDcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJhY2wxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4NzE0MDAwNyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0tmL3VyV2k5OXNDRUFFPSIKICB9CiBdCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FjbDEvMTUzMjU0MzAwNTU1NDAxNS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiYWNsMSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDU1NTQwMTUiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNOL3F5OHZ2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsMS8xNTMyNTQzMDA1NTU0MDE1L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImFjbDEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA1NTU0MDE1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNOL3F5OHZ2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsMS8xNTMyNTQzMDA1NTU0MDE1L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImFjbDEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA1NTU0MDE1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTi9xeTh2dnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FjbDEvMTUzMjU0MzAwNTU1NDAxNS9kb21haW4tZ29vZ2xlLmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMS9hY2wvZG9tYWluLWdvb2dsZS5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiYWNsMSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDU1NTQwMTUiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ04vcXk4dnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wxLzE1MzI1NDMwMDU1NTQwMTUvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJhY2wxIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwNTU1NDAxNSIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ04vcXk4dnZ1dHdDRUFFPSIKICB9CiBdCn0K" } }, { - "ID": "bc5070d802430429", + "ID": "09162f1bab36a403", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/acl1/acl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/acl1/acl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -10514,13 +10672,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c25098d7f9b7a2d4185bedf2b82653a2/5246538066338033124;o=0" + "4b13b8a76e27bd179a89fea910302509/11549897507725892102;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -10529,7 +10687,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/acl1/acl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/acl1/acl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -10540,9 +10698,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -10554,10 +10714,10 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:48 GMT" + "Wed, 25 Jul 2018 18:23:26 GMT" ], "Etag": [ - "CKf/urWi99sCEAI=" + "CN/qy8vvutwCEAI=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -10573,7 +10733,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220486000" + "1532543303000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -10582,16 +10742,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrdm66:4408,/bns/yw/borg/yw/bns/blobstore2/bitpusher/115.scotty,acatli15:443" + "xgiadabj12:4211,/bns/xi/borg/xi/bns/blobstore2/bitpusher/39.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=m041W9j3OMXWhATtno6wAw" + "eid=HsBYW-KsEM-0swaFr7fwAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/115.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/39.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -10600,13 +10760,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/115:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/39:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVjhOWUY3WG0teTQzbE8yZ3h4U0s5bXJMR2tBeVVoXzNfLVJPY3JRQVBxZjIwVFJNelpvc0t2NnFrajQtdXZscnZmTmc0c1JSWWpuTTd1WkI2elZhU3BFUHZya3E0b1U3dzE5bEtwS29UbDFwZjFDUEYyQjN5SXdDQXZGRUd6UGI4OWpQN3hLUzRwelNDcDRxM2gzUkNQOTIyTWEzMEtmM1lWa2pMbXI5YjE4SFg2cXJSVGZpUTBYVmMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3WmpnbGZzeGtrNzhLS3U5el9mcjdvbVVCMFE0aGRfdkJia19rU29sV3I3b3BHanpSS2ZQTl9lU2R4LUNoZ0paRWx3ckF1cDFHdVJkMWF1Z0hubGkzc20tbENPYXl3RnBjOFdWZ1NSZl9iMkMyekdFLXZ6dzVRazZQYTBnSmN2ZkZBei1xbGdDa1NDZnEwTzd5eHMtYldSdHJNQ0JEdTh2dkNEbjJRcTI0XzhwbThjcEpGYXQ5WGJsZFEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -10621,17 +10781,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UokrX1lq2KSGwbLu4HXMiVl8OFJYtJ1xU0r1vFFdj5WvglGy-O0V_gGjZh8IBq_wV0jShiBmUePqSGCho1lj_4q1NscTnnt1rn6whJBKdnA1uTCT_g" + "AEnB2UpQEGtI-URwVAUYDDIDDMjgIuZneGZaMQImJQGZO6BCPULsyyjGD_hKs2Z4QAAmLqijRqLWp1Ao6RGtreG8QoLtdCmuXg" ] }, "Body": "" } }, { - "ID": "70b7c033bf4ab886", + "ID": "d67ab39089f6d6de", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/defaultObjectAcl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/defaultObjectAcl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -10644,13 +10804,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f1612a78c4155f9a288b333903d294e1/6789615500715700228;o=0" + "9957ec015f4af8f87933324e104aa32a/744396926857534243;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -10659,7 +10819,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/defaultObjectAcl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/defaultObjectAcl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -10670,9 +10830,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -10684,7 +10846,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:49 GMT" + "Wed, 25 Jul 2018 18:23:28 GMT" ], "Etag": [ "CAc=" @@ -10703,7 +10865,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220486000" + "1532543303000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -10712,16 +10874,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrga3:4223,/bns/yw/borg/yw/bns/blobstore2/bitpusher/450.scotty,acatli15:443" + "xgiadabr1:4172,/bns/xi/borg/xi/bns/blobstore2/bitpusher/41.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=nE41W6TgGcSIN-P5taAD" + "eid=HsBYW7GFI-yzswaYlLDIBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/450.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/41.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -10730,13 +10892,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/450:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/41:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVjhOWUY3WG0teTQzbE8yZ3h4U0s5bXJMR2tBeVVoXzNfLVJPY3JRQVBxZjIwVFJNelpvc0t2NnFrajQtdXZscnZmTmc0c1JSWWpuTTd1WkI2elZhU3BFUHZya3E0b1U3dzE5bEtwS29UbDFwZjFDUEYyQjN5SXdDQXZGRUd6UGI4OWpQN3hLUzRwelNDcDRxM2gzUkNQOTIyTWEzMEtmM1lWa2pMbXI5YjE4SFg2cXJSVGZpUTBYVmMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3WmpnbGZzeGtrNzhLS3U5el9mcjdvbVVCMFE0aGRfdkJia19rU29sV3I3b3BHanpSS2ZQTl9lU2R4LUNoZ0paRWx3ckF1cDFHdVJkMWF1Z0hubGkzc20tbENPYXl3RnBjOFdWZ1NSZl9iMkMyekdFLXZ6dzVRazZQYTBnSmN2ZkZBei1xbGdDa1NDZnEwTzd5eHMtYldSdHJNQ0JEdTh2dkNEbjJRcTI0XzhwbThjcEpGYXQ5WGJsZFEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -10751,17 +10913,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqGjMk4BjDMz-rV3RIrBbQVOCDwvAmXfZKwc1AF2tMMyrlbbf_6Xrs8_nzGmsU2jymmftSG08O1YY7K5rh8aSnu-O_Wlc6DShnoZKI1OJ2ws8UPIg4" + "AEnB2UogvcLURK4JL-P3EEanT2x4wbCFoua_pQT3vB6swIC_fHKT77WPcXUd8a9vNJrcAfzoO4J8cpwqFgCAUAA5wh4fjLEIYA" ] }, "Body": "" } }, { - "ID": "0177228e93af4f1f", + "ID": "e4eae7318336d7e1", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/acl/user-jbd%40google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/acl/user-jbd%40google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -10780,13 +10942,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "ba03cf857148d0f818de668c391fc90c/8404749433914635043;o=0" + "3a4dc13415eb4f1e6c3ac762ef0fc4b4/8385360044216933439;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -10795,20 +10957,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/acl/user-jbd%40google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/acl/user-jbd%40google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLCJlbnRpdHkiOiJ1c2VyLWpiZEBnb29nbGUuY29tIiwicm9sZSI6IlJFQURFUiJ9Cg==" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLCJlbnRpdHkiOiJ1c2VyLWpiZEBnb29nbGUuY29tIiwicm9sZSI6IlJFQURFUiJ9Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -10820,7 +10984,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:51 GMT" + "Wed, 25 Jul 2018 18:23:29 GMT" ], "Etag": [ "CAg=" @@ -10839,7 +11003,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220486000" + "1532543303000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -10848,16 +11012,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrs190:4262,/bns/yw/borg/yw/bns/blobstore2/bitpusher/139.scotty,acatli15:443" + "xiiadcaf2:4451,/bns/xi/borg/xi/bns/blobstore2/bitpusher/31.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=nU41W8GGM9GChQTP5Cs" + "eid=IMBYW-S-Dcq8swaH5K8g" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/139.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/31.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -10866,13 +11030,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/139:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/31:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVjhOWUY3WG0teTQzbE8yZ3h4U0s5bXJMR2tBeVVoXzNfLVJPY3JRQVBxZjIwVFJNelpvc0t2NnFrajQtdXZscnZmTmc0c1JSWWpuTTd1WkI2elZhU3BFUHZya3E0b1U3dzE5bEtwS29UbDFwZjFDUEYyQjN5SXdDQXZGRUd6UGI4OWpQN3hLUzRwelNDcDRxM2gzUkNQOTIyTWEzMEtmM1lWa2pMbXI5YjE4SFg2cXJSVGZpUTBYVmMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3WmpnbGZzeGtrNzhLS3U5el9mcjdvbVVCMFE0aGRfdkJia19rU29sV3I3b3BHanpSS2ZQTl9lU2R4LUNoZ0paRWx3ckF1cDFHdVJkMWF1Z0hubGkzc20tbENPYXl3RnBjOFdWZ1NSZl9iMkMyekdFLXZ6dzVRazZQYTBnSmN2ZkZBei1xbGdDa1NDZnEwTzd5eHMtYldSdHJNQ0JEdTh2dkNEbjJRcTI0XzhwbThjcEpGYXQ5WGJsZFEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -10887,17 +11051,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrHDS24BEnBOBsv2OFCFFJsOnI1k74OHALVpsNm82MYtll7WRNaz4qQEpT10iYZe6YI-2Os9B6PnW1hmDbFM2MWom0EXS2aoWF3CtUTjnVCZZTfYeA" + "AEnB2UqTLfCiTa5aa0NDNPcQdKTbEtIb-AVCkhJZ-lUK9E8XQVkEq4bVihjXNRtNSr8Pm1Nro6tQeld5zWixc10-5heFC7Y80Q" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvdXNlci1qYmRAZ29vZ2xlLmNvbSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvdXNlci1qYmRAZ29vZ2xlLmNvbSIsCiAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAiZW50aXR5IjogInVzZXItamJkQGdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJlbWFpbCI6ICJqYmRAZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQWc9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvdXNlci1qYmRAZ29vZ2xlLmNvbSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvdXNlci1qYmRAZ29vZ2xlLmNvbSIsCiAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAiZW50aXR5IjogInVzZXItamJkQGdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJlbWFpbCI6ICJqYmRAZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQWc9Igp9Cg==" } }, { - "ID": "84c5aadb2112f234", + "ID": "cd575eefceb15a26", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/acl?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/acl?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -10910,13 +11074,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "2d265656b029475cf52db890b3555311/9947827972082054723;o=0" + "b42edfa0edb660fd8b620935680e6a99/16026322062081416540;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -10925,7 +11089,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/acl?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/acl?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -10936,9 +11100,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -10950,13 +11116,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:51 GMT" + "Wed, 25 Jul 2018 18:23:30 GMT" ], "Etag": [ "CAg=" ], "Expires": [ - "Thu, 28 Jun 2018 21:09:51 GMT" + "Wed, 25 Jul 2018 18:23:30 GMT" ], "Server": [ "UploadServer" @@ -10966,7 +11132,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220484000" + "1532543303000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -10975,16 +11141,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrgb23:4373,/bns/yw/borg/yw/bns/blobstore2/bitpusher/111.scotty,acatli15:443" + "xgiadaai14:4184,/bns/xi/borg/xi/bns/blobstore2/bitpusher/101.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=n041W5SFGo7ShASVqYPICg" + "eid=IcBYW8C0MY23swaa1JGICA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/111.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/101.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -10993,13 +11159,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/111:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/101:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVjhOWUY3WG0teTQzbE8yZ3h4U0s5bXJMR2tBeVVoXzNfLVJPY3JRQVBxZjIwVFJNelpvc0t2NnFrajQtdXZscnZmTmc0c1JSWWpuTTd1WkI2elZhU3BFUHZya3E0b1U3dzE5bEtwS29UbDFwZjFDUEYyQjN5SXdDQXZGRUd6UGI4OWpQN3hLUzRwelNDcDRxM2gzUkNQOTIyTWEzMEtmM1lWa2pMbXI5YjE4SFg2cXJSVGZpUTBYVmMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3WmpnbGZzeGtrNzhLS3U5el9mcjdvbVVCMFE0aGRfdkJia19rU29sV3I3b3BHanpSS2ZQTl9lU2R4LUNoZ0paRWx3ckF1cDFHdVJkMWF1Z0hubGkzc20tbENPYXl3RnBjOFdWZ1NSZl9iMkMyekdFLXZ6dzVRazZQYTBnSmN2ZkZBei1xbGdDa1NDZnEwTzd5eHMtYldSdHJNQ0JEdTh2dkNEbjJRcTI0XzhwbThjcEpGYXQ5WGJsZFEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -11014,17 +11180,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpmzuuXBcCDwvFWNq3v9poEFtypyMMXfyyLQZOOyDWl-YK2nLwYHGdz0JY3vUJa3D10N823KnI9LCTZjwfDfr3BP_WgXQQ-JvuOj2cMS7ucPxEPqTA" + "AEnB2UpYoWJRV3QWpc4HoiGtw54TOmenCeEax9lzbH1LJXh5-i2-bq62blM6ZRRnz99ExhBEWcivcZ3FAl-d9vG6OSFBULzO0A" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBZz0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNBZz0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQWc9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3VzZXItamJkQGdvb2dsZS5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvdXNlci1qYmRAZ29vZ2xlLmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImVudGl0eSI6ICJ1c2VyLWpiZEBnb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImVtYWlsIjogImpiZEBnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0FnPSIKICB9CiBdCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBZz0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNBZz0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQWc9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3VzZXItamJkQGdvb2dsZS5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvdXNlci1qYmRAZ29vZ2xlLmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImVudGl0eSI6ICJ1c2VyLWpiZEBnb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImVtYWlsIjogImpiZEBnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0FnPSIKICB9CiBdCn0K" } }, { - "ID": "0f2d04d8b7caad02", + "ID": "75209ddeb80ae80b", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/acl/user-jbd%40google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/acl/user-jbd%40google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -11037,13 +11203,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "228ec9346e5b342eaa001da48009214e/11562961905280989538;o=0" + "42d53f282f38d567e7247e68aa302b55/5220541114321133176;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -11052,7 +11218,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/acl/user-jbd%40google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/acl/user-jbd%40google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -11063,9 +11229,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -11077,7 +11245,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:53 GMT" + "Wed, 25 Jul 2018 18:23:31 GMT" ], "Etag": [ "CAk=" @@ -11096,7 +11264,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220484000" + "1532543303000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -11105,16 +11273,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqd20:4135,/bns/yw/borg/yw/bns/blobstore2/bitpusher/331.scotty,acatli15:443" + "xiiadcba13:4101,/bns/xi/borg/xi/bns/blobstore2/bitpusher/35.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=n041W9niK8KOhgT_2Z64Bg" + "eid=IsBYW6e2BqqyswarpK3gCg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/331.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/35.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -11123,13 +11291,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/331:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/35:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVjhOWUY3WG0teTQzbE8yZ3h4U0s5bXJMR2tBeVVoXzNfLVJPY3JRQVBxZjIwVFJNelpvc0t2NnFrajQtdXZscnZmTmc0c1JSWWpuTTd1WkI2elZhU3BFUHZya3E0b1U3dzE5bEtwS29UbDFwZjFDUEYyQjN5SXdDQXZGRUd6UGI4OWpQN3hLUzRwelNDcDRxM2gzUkNQOTIyTWEzMEtmM1lWa2pMbXI5YjE4SFg2cXJSVGZpUTBYVmMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3WmpnbGZzeGtrNzhLS3U5el9mcjdvbVVCMFE0aGRfdkJia19rU29sV3I3b3BHanpSS2ZQTl9lU2R4LUNoZ0paRWx3ckF1cDFHdVJkMWF1Z0hubGkzc20tbENPYXl3RnBjOFdWZ1NSZl9iMkMyekdFLXZ6dzVRazZQYTBnSmN2ZkZBei1xbGdDa1NDZnEwTzd5eHMtYldSdHJNQ0JEdTh2dkNEbjJRcTI0XzhwbThjcEpGYXQ5WGJsZFEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -11144,17 +11312,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq6f1lkIod9wTp8TNM5ONZhyT1hTJ6gcmde-dv8YkWjnmjjJpMPWUEZKkRQJQTnACEVA_l92JGDnCrCd-suzJ0liqpKw94mu0TrE91SDym9NZZlePQ" + "AEnB2UpvGzxBtF8xfBAA-IM1B_u4U3sTOJXFQJ6mNeMfCs1qOH6eSa5arokcEoEdCpkJ32CtPep6LOPtogBFm6msRxV2m5bxyA" ] }, "Body": "" } }, { - "ID": "99a955616e08e7f7", + "ID": "e4dc25886d647739", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -11164,19 +11332,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=1cb32567e90df66d66230a07ee190f73674ec61703c4785cef837764e83c" + "multipart/related; boundary=a633a895d168ac03b22412d7443dea3f4e17ba1a972ea6af3eff6587bb22" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "eb3234186995dc227a832c9f94dad4aa/12370388681983687538;o=0" + "4355b82c1349a63823f1170932e005a5/9077191653465726471;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -11185,20 +11353,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0xY2IzMjU2N2U5MGRmNjZkNjYyMzBhMDdlZTE5MGY3MzY3NGVjNjE3MDNjNDc4NWNlZjgzNzc2NGU4M2MNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJnb3BoZXIifQoNCi0tMWNiMzI1NjdlOTBkZjY2ZDY2MjMwYTA3ZWUxOTBmNzM2NzRlYzYxNzAzYzQ3ODVjZWY4Mzc3NjRlODNjDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KZGF0YQ0KLS0xY2IzMjU2N2U5MGRmNjZkNjYyMzBhMDdlZTE5MGY3MzY3NGVjNjE3MDNjNDc4NWNlZjgzNzc2NGU4M2MtLQ0K" + "Body": "LS1hNjMzYTg5NWQxNjhhYzAzYjIyNDEyZDc0NDNkZWEzZjRlMTdiYTFhOTcyZWE2YWYzZWZmNjU4N2JiMjINCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJnb3BoZXIifQoNCi0tYTYzM2E4OTVkMTY4YWMwM2IyMjQxMmQ3NDQzZGVhM2Y0ZTE3YmExYTk3MmVhNmFmM2VmZjY1ODdiYjIyDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KZGF0YQ0KLS1hNjMzYTg5NWQxNjhhYzAzYjIyNDEyZDc0NDNkZWEzZjRlMTdiYTFhOTcyZWE2YWYzZWZmNjU4N2JiMjItLQ0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -11210,10 +11380,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:53 GMT" + "Wed, 25 Jul 2018 18:23:32 GMT" ], "Etag": [ - "CM3Mwbii99sCEAE=" + "CMG/2M7vutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -11229,7 +11399,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220493000" + "1532543311000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -11238,19 +11408,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrm187:4148,/bns/yw/borg/yw/bns/blobstore2/bitpusher/635.scotty,acatli15:443" + "xiiadcah5:4482,/bns/xi/borg/xi/bns/blobstore2/bitpusher/33.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=oU41W7DLDMPrhAT61qjACQ" + "eid=I8BYW9H-Ke-wswb5qKXgCA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/635.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/33.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -11259,13 +11429,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/635:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/33:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjREeG5mSTUtSjhEaXc4NktVeXB0QzQ4d2FqRWlNRUx2YmQ1cWVGT2RzUTcyV2ZrdDVpT1Z5Zy1adWFNX2ZON3JHSEFQQ0VnWHBvUy1QRElRR0VKczdNV0U5YTJJZGVnM1JhVkVNY1pNTUFCX0dpaEFiRTBhclNTTjgzNS1wYVA3SS1Vc3pJbElrSjctby1nT0d5di1vaGhWSllrOHZSQnlqbUdNdm5WbndGcDF1NUJSdFdGNlVqcVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WUo4M25nRG9UcTc4QUdwUi11bVZrQWYyTmZxNndpQlFaaDF1bWV5RUFmbkRPVWpsU1YwWUhhRnhvYmlTOE5yd0g2Wld4U0NrcWVJZFNPd3pDTGlBUV9nNWpjdy1xQlRGNER2LUFVZklOSkxaMHpuZGh4SjIzMmZxbWdobGExQzM5QkF3VUVzVUFCOGhqNnF3bG1jWFlTR1lBb1RhcEhSdTB2UjhFZi1TWWVWWEQzZl9NNGNabU9GQncwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -11280,17 +11450,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqagHqVWXAyPAPQ8zAvteazAicObC_IMDwI-W_8-eNfaVFlO_MR0e3OXRJDkvpqEr9kD_aiPqpv0KZT1ZtWo8F1Ltq6jBV-rdhgSgSM96to8tVNdlE" + "AEnB2UoSxyGAO1k8wpP7zchp1NAxwA6rXBDQqUpBgM_r4roTXGMk_NSkRNpJTgZnmvyBLQ7qQ-6aOV9VXX8q87zMG43pbezg1w" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9nb3BoZXIvMTUzMDIyMDE5MzUzOTY2MSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2dvcGhlciIsCiAibmFtZSI6ICJnb3BoZXIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5MzUzOTY2MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1My41MzlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTMuNTM5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjUzLjUzOVoiLAogInNpemUiOiAiNCIsCiAibWQ1SGFzaCI6ICJqWGQvT0YwOS9zaUJYU0QzU1dBbTNBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vZ29waGVyP2dlbmVyYXRpb249MTUzMDIyMDE5MzUzOTY2MSZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvZ29waGVyLzE1MzAyMjAxOTM1Mzk2NjEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2dvcGhlci9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiZ29waGVyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5MzUzOTY2MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ00zTXdiaWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9nb3BoZXIvMTUzMDIyMDE5MzUzOTY2MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2dvcGhlci9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImdvcGhlciIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTM1Mzk2NjEiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ00zTXdiaWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9nb3BoZXIvMTUzMDIyMDE5MzUzOTY2MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2dvcGhlci9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImdvcGhlciIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTM1Mzk2NjEiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNNM013YmlpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvZ29waGVyLzE1MzAyMjAxOTM1Mzk2NjEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vZ29waGVyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImdvcGhlciIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTM1Mzk2NjEiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNNM013YmlpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJydGg5MFE9PSIsCiAiZXRhZyI6ICJDTTNNd2JpaTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9nb3BoZXIvMTUzMjU0MzAxMjA1MjkyOSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2dvcGhlciIsCiAibmFtZSI6ICJnb3BoZXIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxMjA1MjkyOSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozMi4wNTJaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzIuMDUyWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjMyLjA1MloiLAogInNpemUiOiAiNCIsCiAibWQ1SGFzaCI6ICJqWGQvT0YwOS9zaUJYU0QzU1dBbTNBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vZ29waGVyP2dlbmVyYXRpb249MTUzMjU0MzAxMjA1MjkyOSZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvZ29waGVyLzE1MzI1NDMwMTIwNTI5MjkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2dvcGhlci9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiZ29waGVyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxMjA1MjkyOSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ01HLzJNN3Z1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9nb3BoZXIvMTUzMjU0MzAxMjA1MjkyOS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2dvcGhlci9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImdvcGhlciIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTIwNTI5MjkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ01HLzJNN3Z1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9nb3BoZXIvMTUzMjU0MzAxMjA1MjkyOS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2dvcGhlci9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImdvcGhlciIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTIwNTI5MjkiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNNRy8yTTd2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvZ29waGVyLzE1MzI1NDMwMTIwNTI5MjkvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vZ29waGVyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImdvcGhlciIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTIwNTI5MjkiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNNRy8yTTd2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJydGg5MFE9PSIsCiAiZXRhZyI6ICJDTUcvMk03dnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "f0c7d123698452f3", + "ID": "b96ffecd56c5a26f", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -11300,19 +11470,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=427f18bdc83ba54bb911a056981fd9dac6ffed29d386def98267906e0c14" + "multipart/related; boundary=f7882199118429810eeab53c9a41330141755fc6e05d8648cad02fc04f0d" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a8dae98dd1df4c3679959294583f3922/13177814363503213698;o=0" + "6211c8a0087edce45cc773ab9a2c849e/12861504231680466837;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -11321,20 +11491,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS00MjdmMThiZGM4M2JhNTRiYjkxMWEwNTY5ODFmZDlkYWM2ZmZlZDI5ZDM4NmRlZjk4MjY3OTA2ZTBjMTQNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiLQk9C+0YTQtdGA0L7QstC4In0KDQotLTQyN2YxOGJkYzgzYmE1NGJiOTExYTA1Njk4MWZkOWRhYzZmZmVkMjlkMzg2ZGVmOTgyNjc5MDZlMGMxNA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmRhdGENCi0tNDI3ZjE4YmRjODNiYTU0YmI5MTFhMDU2OTgxZmQ5ZGFjNmZmZWQyOWQzODZkZWY5ODI2NzkwNmUwYzE0LS0NCg==" + "Body": "LS1mNzg4MjE5OTExODQyOTgxMGVlYWI1M2M5YTQxMzMwMTQxNzU1ZmM2ZTA1ZDg2NDhjYWQwMmZjMDRmMGQNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiLQk9C+0YTQtdGA0L7QstC4In0KDQotLWY3ODgyMTk5MTE4NDI5ODEwZWVhYjUzYzlhNDEzMzAxNDE3NTVmYzZlMDVkODY0OGNhZDAyZmMwNGYwZA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmRhdGENCi0tZjc4ODIxOTkxMTg0Mjk4MTBlZWFiNTNjOWE0MTMzMDE0MTc1NWZjNmUwNWQ4NjQ4Y2FkMDJmYzA0ZjBkLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -11346,10 +11518,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:54 GMT" + "Wed, 25 Jul 2018 18:23:32 GMT" ], "Etag": [ - "CM2t2bii99sCEAE=" + "CKy1+87vutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -11365,7 +11537,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220493000" + "1532543311000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -11374,19 +11546,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrqe13:4484,/bns/yw/borg/yw/bns/blobstore2/bitpusher/87.scotty,acatli15:443" + "xgiadaap16:4483,/bns/xi/borg/xi/bns/blobstore2/bitpusher/99.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=oU41W4nlJ8zuhATb8oXwCw" + "eid=JMBYW83eEOu4swbCgq_QBw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/87.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/99.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -11395,13 +11567,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/87:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/99:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjREeG5mSTUtSjhEaXc4NktVeXB0QzQ4d2FqRWlNRUx2YmQ1cWVGT2RzUTcyV2ZrdDVpT1Z5Zy1adWFNX2ZON3JHSEFQQ0VnWHBvUy1QRElRR0VKczdNV0U5YTJJZGVnM1JhVkVNY1pNTUFCX0dpaEFiRTBhclNTTjgzNS1wYVA3SS1Vc3pJbElrSjctby1nT0d5di1vaGhWSllrOHZSQnlqbUdNdm5WbndGcDF1NUJSdFdGNlVqcVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WUo4M25nRG9UcTc4QUdwUi11bVZrQWYyTmZxNndpQlFaaDF1bWV5RUFmbkRPVWpsU1YwWUhhRnhvYmlTOE5yd0g2Wld4U0NrcWVJZFNPd3pDTGlBUV9nNWpjdy1xQlRGNER2LUFVZklOSkxaMHpuZGh4SjIzMmZxbWdobGExQzM5QkF3VUVzVUFCOGhqNnF3bG1jWFlTR1lBb1RhcEhSdTB2UjhFZi1TWWVWWEQzZl9NNGNabU9GQncwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -11416,17 +11588,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Up0Kp-_rhM3q9GmL-crBU15VTpjU1uRBHf8cV3p0slPjUQOSjvs0r7RGaKCMlZq-Ex_oYDK-N4xbOrvNyv1sac0kshzVI6Llj9hmgH6dfcayvoYmKQ" + "AEnB2Uorytdl2du98lgWpNhJW-Rpi24g6ev6dW3S7aVp8AIDp2BALCdEsrIV51DedkBCw-fToXeTbh-7iVYO7Gy2Qcok_yi6yw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC/Qk9C+0YTQtdGA0L7QstC4LzE1MzAyMjAxOTM5Mjg5MDkiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby8lRDAlOTMlRDAlQkUlRDElODQlRDAlQjUlRDElODAlRDAlQkUlRDAlQjIlRDAlQjgiLAogIm5hbWUiOiAi0JPQvtGE0LXRgNC+0LLQuCIsCiAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTkzOTI4OTA5IiwKICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjUzLjkyOFoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1My45MjhaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTMuOTI4WiIsCiAic2l6ZSI6ICI0IiwKICJtZDVIYXNoIjogImpYZC9PRjA5L3NpQlhTRDNTV0FtM0E9PSIsCiAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby8lRDAlOTMlRDAlQkUlRDElODQlRDAlQjUlRDElODAlRDAlQkUlRDAlQjIlRDAlQjg/Z2VuZXJhdGlvbj0xNTMwMjIwMTkzOTI4OTA5JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC/Qk9C+0YTQtdGA0L7QstC4LzE1MzAyMjAxOTM5Mjg5MDkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vLyVEMCU5MyVEMCVCRSVEMSU4NCVEMCVCNSVEMSU4MCVEMCVCRSVEMCVCMiVEMCVCOC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAi0JPQvtGE0LXRgNC+0LLQuCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTM5Mjg5MDkiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNNMnQyYmlpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAv0JPQvtGE0LXRgNC+0LLQuC8xNTMwMjIwMTkzOTI4OTA5L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vJUQwJTkzJUQwJUJFJUQxJTg0JUQwJUI1JUQxJTgwJUQwJUJFJUQwJUIyJUQwJUI4L2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAi0JPQvtGE0LXRgNC+0LLQuCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTM5Mjg5MDkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ00ydDJiaWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC/Qk9C+0YTQtdGA0L7QstC4LzE1MzAyMjAxOTM5Mjg5MDkvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby8lRDAlOTMlRDAlQkUlRDElODQlRDAlQjUlRDElODAlRDAlQkUlRDAlQjIlRDAlQjgvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICLQk9C+0YTQtdGA0L7QstC4IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5MzkyODkwOSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ00ydDJiaWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC/Qk9C+0YTQtdGA0L7QstC4LzE1MzAyMjAxOTM5Mjg5MDkvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vJUQwJTkzJUQwJUJFJUQxJTg0JUQwJUI1JUQxJTgwJUQwJUJFJUQwJUIyJUQwJUI4L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogItCT0L7RhNC10YDQvtCy0LgiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTkzOTI4OTA5IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTTJ0MmJpaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAicnRoOTBRPT0iLAogImV0YWciOiAiQ00ydDJiaWk5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC/Qk9C+0YTQtdGA0L7QstC4LzE1MzI1NDMwMTI2MjUwNjgiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby8lRDAlOTMlRDAlQkUlRDElODQlRDAlQjUlRDElODAlRDAlQkUlRDAlQjIlRDAlQjgiLAogIm5hbWUiOiAi0JPQvtGE0LXRgNC+0LLQuCIsCiAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDEyNjI1MDY4IiwKICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjMyLjYyNFoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozMi42MjRaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzIuNjI0WiIsCiAic2l6ZSI6ICI0IiwKICJtZDVIYXNoIjogImpYZC9PRjA5L3NpQlhTRDNTV0FtM0E9PSIsCiAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby8lRDAlOTMlRDAlQkUlRDElODQlRDAlQjUlRDElODAlRDAlQkUlRDAlQjIlRDAlQjg/Z2VuZXJhdGlvbj0xNTMyNTQzMDEyNjI1MDY4JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC/Qk9C+0YTQtdGA0L7QstC4LzE1MzI1NDMwMTI2MjUwNjgvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vLyVEMCU5MyVEMCVCRSVEMSU4NCVEMCVCNSVEMSU4MCVEMCVCRSVEMCVCMiVEMCVCOC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAi0JPQvtGE0LXRgNC+0LLQuCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTI2MjUwNjgiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNLeTErODd2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAv0JPQvtGE0LXRgNC+0LLQuC8xNTMyNTQzMDEyNjI1MDY4L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vJUQwJTkzJUQwJUJFJUQxJTg0JUQwJUI1JUQxJTgwJUQwJUJFJUQwJUIyJUQwJUI4L2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAi0JPQvtGE0LXRgNC+0LLQuCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTI2MjUwNjgiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0t5MSs4N3Z1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC/Qk9C+0YTQtdGA0L7QstC4LzE1MzI1NDMwMTI2MjUwNjgvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby8lRDAlOTMlRDAlQkUlRDElODQlRDAlQjUlRDElODAlRDAlQkUlRDAlQjIlRDAlQjgvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICLQk9C+0YTQtdGA0L7QstC4IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxMjYyNTA2OCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0t5MSs4N3Z1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC/Qk9C+0YTQtdGA0L7QstC4LzE1MzI1NDMwMTI2MjUwNjgvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vJUQwJTkzJUQwJUJFJUQxJTg0JUQwJUI1JUQxJTgwJUQwJUJFJUQwJUIyJUQwJUI4L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogItCT0L7RhNC10YDQvtCy0LgiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDEyNjI1MDY4IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDS3kxKzg3dnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAicnRoOTBRPT0iLAogImV0YWciOiAiQ0t5MSs4N3Z1dHdDRUFFPSIKfQo=" } }, { - "ID": "648ab817a7dcd4ed", + "ID": "549cf75955bf3b0d", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -11436,19 +11608,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=13e42ec2afd15c942cb5cef65876e78c7133f19778e94756baaadb161a4f" + "multipart/related; boundary=0f54028d82e7250f0872506276a4eeb9d3eff7e11280ac01aa554f4c1847" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "14b11502b56570d331e174d7f2736b2e/13913466120656322193;o=0" + "bc633081b84092d758cbd8dc209505e6/16646097181082099747;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -11457,20 +11629,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0xM2U0MmVjMmFmZDE1Yzk0MmNiNWNlZjY1ODc2ZTc4YzcxMzNmMTk3NzhlOTQ3NTZiYWFhZGIxNjFhNGYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJhIn0KDQotLTEzZTQyZWMyYWZkMTVjOTQyY2I1Y2VmNjU4NzZlNzhjNzEzM2YxOTc3OGU5NDc1NmJhYWFkYjE2MWE0Zg0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmRhdGENCi0tMTNlNDJlYzJhZmQxNWM5NDJjYjVjZWY2NTg3NmU3OGM3MTMzZjE5Nzc4ZTk0NzU2YmFhYWRiMTYxYTRmLS0NCg==" + "Body": "LS0wZjU0MDI4ZDgyZTcyNTBmMDg3MjUwNjI3NmE0ZWViOWQzZWZmN2UxMTI4MGFjMDFhYTU1NGY0YzE4NDcNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJhIn0KDQotLTBmNTQwMjhkODJlNzI1MGYwODcyNTA2Mjc2YTRlZWI5ZDNlZmY3ZTExMjgwYWMwMWFhNTU0ZjRjMTg0Nw0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmRhdGENCi0tMGY1NDAyOGQ4MmU3MjUwZjA4NzI1MDYyNzZhNGVlYjlkM2VmZjdlMTEyODBhYzAxYWE1NTRmNGMxODQ3LS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -11482,10 +11656,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:54 GMT" + "Wed, 25 Jul 2018 18:23:33 GMT" ], "Etag": [ - "CLWC/7ii99sCEAE=" + "CNaPlM/vutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -11501,7 +11675,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220493000" + "1532543311000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -11510,19 +11684,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrmi15:4409,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "xgiadacc2:4342,/bns/xi/borg/xi/bns/blobstore2/bitpusher/54.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=ok41W-WVC8PdhQTRkIzQBQ" + "eid=JMBYW4vSLbC6swam3qWoCQ" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/54.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -11531,13 +11705,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/178:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/54:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjREeG5mSTUtSjhEaXc4NktVeXB0QzQ4d2FqRWlNRUx2YmQ1cWVGT2RzUTcyV2ZrdDVpT1Z5Zy1adWFNX2ZON3JHSEFQQ0VnWHBvUy1QRElRR0VKczdNV0U5YTJJZGVnM1JhVkVNY1pNTUFCX0dpaEFiRTBhclNTTjgzNS1wYVA3SS1Vc3pJbElrSjctby1nT0d5di1vaGhWSllrOHZSQnlqbUdNdm5WbndGcDF1NUJSdFdGNlVqcVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WUo4M25nRG9UcTc4QUdwUi11bVZrQWYyTmZxNndpQlFaaDF1bWV5RUFmbkRPVWpsU1YwWUhhRnhvYmlTOE5yd0g2Wld4U0NrcWVJZFNPd3pDTGlBUV9nNWpjdy1xQlRGNER2LUFVZklOSkxaMHpuZGh4SjIzMmZxbWdobGExQzM5QkF3VUVzVUFCOGhqNnF3bG1jWFlTR1lBb1RhcEhSdTB2UjhFZi1TWWVWWEQzZl9NNGNabU9GQncwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -11552,17 +11726,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoO53ZbJzducEuiCmkp9RIYBh54FdtgvwGDYkb-GDKmNh3iHN7hIM236Lv8X5VmWWQEu4wCKHbRC5fJ36oD8z5kuPZv064DJ7vq4d936KprcJ0k5N4" + "AEnB2UrQYxyKFUyjUGs4Bj2vnkmCac121m-vYiY3S3wBVli-a35qu3I7S1mWeUb_Rd7cDsiqZ_ghS89VObjLZPsyLgrBZFcBZg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hLzE1MzAyMjAxOTQ1NDU5NzMiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9hIiwKICJuYW1lIjogImEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NDU0NTk3MyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1NC41NDVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTQuNTQ1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU0LjU0NVoiLAogInNpemUiOiAiNCIsCiAibWQ1SGFzaCI6ICJqWGQvT0YwOS9zaUJYU0QzU1dBbTNBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYT9nZW5lcmF0aW9uPTE1MzAyMjAxOTQ1NDU5NzMmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2EvMTUzMDIyMDE5NDU0NTk3My9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiYSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTQ1NDU5NzMiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNMV0MvN2lpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYS8xNTMwMjIwMTk0NTQ1OTczL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk0NTQ1OTczIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNMV0MvN2lpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYS8xNTMwMjIwMTk0NTQ1OTczL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk0NTQ1OTczIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTFdDLzdpaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2EvMTUzMDIyMDE5NDU0NTk3My91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9hL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk0NTQ1OTczIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTFdDLzdpaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAicnRoOTBRPT0iLAogImV0YWciOiAiQ0xXQy83aWk5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hLzE1MzI1NDMwMTMwMjk4NDYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hIiwKICJuYW1lIjogImEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxMzAyOTg0NiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozMy4wMjlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzMuMDI5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjMzLjAyOVoiLAogInNpemUiOiAiNCIsCiAibWQ1SGFzaCI6ICJqWGQvT0YwOS9zaUJYU0QzU1dBbTNBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYT9nZW5lcmF0aW9uPTE1MzI1NDMwMTMwMjk4NDYmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2EvMTUzMjU0MzAxMzAyOTg0Ni9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiYSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTMwMjk4NDYiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYVBsTS92dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYS8xNTMyNTQzMDEzMDI5ODQ2L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDEzMDI5ODQ2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYVBsTS92dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYS8xNTMyNTQzMDEzMDI5ODQ2L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDEzMDI5ODQ2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTmFQbE0vdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2EvMTUzMjU0MzAxMzAyOTg0Ni91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDEzMDI5ODQ2IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTmFQbE0vdnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAicnRoOTBRPT0iLAogImV0YWciOiAiQ05hUGxNL3Z1dHdDRUFFPSIKfQo=" } }, { - "ID": "90fdc92270436fac", + "ID": "72796e5ef625f008", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -11572,19 +11746,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=13a394285542c06641323851ed46a911e8b79dbbbbc1c272932b0dfd5a4b" + "multipart/related; boundary=c4fffefd7fc7129af88cce08f2e27777fe090d42defbc89d05a02b6b6179" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "88f22a247a02fe4e70346891d8a59b31/14720891802175848353;o=0" + "16a96790b6946115a778c90c964264d5/2056003650812174513;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -11593,20 +11767,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0xM2EzOTQyODU1NDJjMDY2NDEzMjM4NTFlZDQ2YTkxMWU4Yjc5ZGJiYmJjMWMyNzI5MzJiMGRmZDVhNGINCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIn0KDQotLTEzYTM5NDI4NTU0MmMwNjY0MTMyMzg1MWVkNDZhOTExZThiNzlkYmJiYmMxYzI3MjkzMmIwZGZkNWE0Yg0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmRhdGENCi0tMTNhMzk0Mjg1NTQyYzA2NjQxMzIzODUxZWQ0NmE5MTFlOGI3OWRiYmJiYzFjMjcyOTMyYjBkZmQ1YTRiLS0NCg==" + "Body": "LS1jNGZmZmVmZDdmYzcxMjlhZjg4Y2NlMDhmMmUyNzc3N2ZlMDkwZDQyZGVmYmM4OWQwNWEwMmI2YjYxNzkNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIn0KDQotLWM0ZmZmZWZkN2ZjNzEyOWFmODhjY2UwOGYyZTI3Nzc3ZmUwOTBkNDJkZWZiYzg5ZDA1YTAyYjZiNjE3OQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmRhdGENCi0tYzRmZmZlZmQ3ZmM3MTI5YWY4OGNjZTA4ZjJlMjc3NzdmZTA5MGQ0MmRlZmJjODlkMDVhMDJiNmI2MTc5LS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -11618,10 +11794,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:55 GMT" + "Wed, 25 Jul 2018 18:23:33 GMT" ], "Etag": [ - "CMKQnLmi99sCEAE=" + "CPWOrs/vutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -11637,7 +11813,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220493000" + "1532543313000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -11646,19 +11822,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrlv17:4254,/bns/yw/borg/yw/bns/blobstore2/bitpusher/66.scotty,acatli15:443" + "xiiadcad8:4117,/bns/xi/borg/xi/bns/blobstore2/bitpusher/24.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=ok41W9niKIbUhQSJtoaQBA" + "eid=JcBYW_L_B4y9swaXoYfwAw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/66.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/24.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -11667,13 +11843,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/66:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/24:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjREeG5mSTUtSjhEaXc4NktVeXB0QzQ4d2FqRWlNRUx2YmQ1cWVGT2RzUTcyV2ZrdDVpT1Z5Zy1adWFNX2ZON3JHSEFQQ0VnWHBvUy1QRElRR0VKczdNV0U5YTJJZGVnM1JhVkVNY1pNTUFCX0dpaEFiRTBhclNTTjgzNS1wYVA3SS1Vc3pJbElrSjctby1nT0d5di1vaGhWSllrOHZSQnlqbUdNdm5WbndGcDF1NUJSdFdGNlVqcVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WUo4M25nRG9UcTc4QUdwUi11bVZrQWYyTmZxNndpQlFaaDF1bWV5RUFmbkRPVWpsU1YwWUhhRnhvYmlTOE5yd0g2Wld4U0NrcWVJZFNPd3pDTGlBUV9nNWpjdy1xQlRGNER2LUFVZklOSkxaMHpuZGh4SjIzMmZxbWdobGExQzM5QkF3VUVzVUFCOGhqNnF3bG1jWFlTR1lBb1RhcEhSdTB2UjhFZi1TWWVWWEQzZl9NNGNabU9GQncwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -11688,17 +11864,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur3VZyf-85h2phKdWb6nroMuYbaYab9Fns7toeruYmUKDVD2MYv7gEs7c1cPr_-4VNYBPZPGNMEezPWD3FQY8YKrIX7f_T4JAsGRrK7_QMSMI5JFm0" + "AEnB2Uomi8aXUHJWrwqijjgmPkAUkv5ZbkaDB0ao0P4HQNqaQIGnLJcdS2XrXi16-62GOPH6g5Zc-fyrAMbJryzqCpZcxjjkWQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLzE1MzAyMjAxOTUwMjI5MTQiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiwKICJuYW1lIjogImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NTAyMjkxNCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1NS4wMjFaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTUuMDIxWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU1LjAyMVoiLAogInNpemUiOiAiNCIsCiAibWQ1SGFzaCI6ICJqWGQvT0YwOS9zaUJYU0QzU1dBbTNBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYT9nZW5lcmF0aW9uPTE1MzAyMjAxOTUwMjI5MTQmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEvMTUzMDIyMDE5NTAyMjkxNC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTUwMjI5MTQiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNNS1FuTG1pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS8xNTMwMjIwMTk1MDIyOTE0L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk1MDIyOTE0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNNS1FuTG1pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS8xNTMwMjIwMTk1MDIyOTE0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk1MDIyOTE0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTUtRbkxtaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEvMTUzMDIyMDE5NTAyMjkxNC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk1MDIyOTE0IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTUtRbkxtaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAicnRoOTBRPT0iLAogImV0YWciOiAiQ01LUW5MbWk5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLzE1MzI1NDMwMTM0NTU3MzMiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiwKICJuYW1lIjogImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxMzQ1NTczMyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozMy40NTVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzMuNDU1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjMzLjQ1NVoiLAogInNpemUiOiAiNCIsCiAibWQ1SGFzaCI6ICJqWGQvT0YwOS9zaUJYU0QzU1dBbTNBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYT9nZW5lcmF0aW9uPTE1MzI1NDMwMTM0NTU3MzMmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEvMTUzMjU0MzAxMzQ1NTczMy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTM0NTU3MzMiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNQV09ycy92dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS8xNTMyNTQzMDEzNDU1NzMzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDEzNDU1NzMzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNQV09ycy92dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS8xNTMyNTQzMDEzNDU1NzMzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDEzNDU1NzMzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDUFdPcnMvdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEvMTUzMjU0MzAxMzQ1NTczMy91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDEzNDU1NzMzIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDUFdPcnMvdnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAicnRoOTBRPT0iLAogImV0YWciOiAiQ1BXT3JzL3Z1dHdDRUFFPSIKfQo=" } }, { - "ID": "6e956130833be610", + "ID": "8ae864339834163e", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -11708,19 +11884,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=3ea3118b335fc0969b49406c18574363665ce8cd02f1c43f2cc4175f86f1" + "multipart/related; boundary=540b08b3256c33c812937a3408591a13cd249c97721b90c26fc4c7eb0eb1" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "498cae4d92a3cc889fc011a420e47543/15528600053855191473;o=0" + "1370416201f6de87e2fd86d1426bfdb1/5840597699708592448;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -11729,20 +11905,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0zZWEzMTE4YjMzNWZjMDk2OWI0OTQwNmMxODU3NDM2MzY2NWNlOGNkMDJmMWM0M2YyY2M0MTc1Zjg2ZjENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCJ9Cg0KLS0zZWEzMTE4YjMzNWZjMDk2OWI0OTQwNmMxODU3NDM2MzY2NWNlOGNkMDJmMWM0M2YyY2M0MTc1Zjg2ZjENCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQpkYXRhDQotLTNlYTMxMThiMzM1ZmMwOTY5YjQ5NDA2YzE4NTc0MzYzNjY1Y2U4Y2QwMmYxYzQzZjJjYzQxNzVmODZmMS0tDQo=" + "Body": "LS01NDBiMDhiMzI1NmMzM2M4MTI5MzdhMzQwODU5MWExM2NkMjQ5Yzk3NzIxYjkwYzI2ZmM0YzdlYjBlYjENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCJ9Cg0KLS01NDBiMDhiMzI1NmMzM2M4MTI5MzdhMzQwODU5MWExM2NkMjQ5Yzk3NzIxYjkwYzI2ZmM0YzdlYjBlYjENCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQpkYXRhDQotLTU0MGIwOGIzMjU2YzMzYzgxMjkzN2EzNDA4NTkxYTEzY2QyNDljOTc3MjFiOTBjMjZmYzRjN2ViMGViMS0tDQo=" }, "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "2986" @@ -11751,7 +11929,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:55 GMT" + "Wed, 25 Jul 2018 18:23:33 GMT" ], "Server": [ "UploadServer" @@ -11761,7 +11939,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220493000" + "1532543311000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -11770,16 +11948,16 @@ "998958384336" ], "X-Google-Backends": [ - "vref1:4135,/bns/yw/borg/yw/bns/blobstore2/bitpusher/492.scotty,acatli15:443" + "xiiadcby9:4035,/bns/xi/borg/xi/bns/blobstore2/bitpusher/28.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=o041W6eFCoikhwST84aoBg" + "eid=JcBYW_msI4G2swaN3piQDw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/492.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/28.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -11788,13 +11966,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/492:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/28:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjREeG5mSTUtSjhEaXc4NktVeXB0QzQ4d2FqRWlNRUx2YmQ1cWVGT2RzUTcyV2ZrdDVpT1Z5Zy1adWFNX2ZON3JHSEFQQ0VnWHBvUy1QRElRR0VKczdNV0U5YTJJZGVnM1JhVkVNY1pNTUFCX0dpaEFiRTBhclNTTjgzNS1wYVA3SS1Vc3pJbElrSjctby1nT0d5di1vaGhWSllrOHZSQnlqbUdNdm5WbndGcDF1NUJSdFdGNlVqcVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WUo4M25nRG9UcTc4QUdwUi11bVZrQWYyTmZxNndpQlFaaDF1bWV5RUFmbkRPVWpsU1YwWUhhRnhvYmlTOE5yd0g2Wld4U0NrcWVJZFNPd3pDTGlBUV9nNWpjdy1xQlRGNER2LUFVZklOSkxaMHpuZGh4SjIzMmZxbWdobGExQzM5QkF3VUVzVUFCOGhqNnF3bG1jWFlTR1lBb1RhcEhSdTB2UjhFZi1TWWVWWEQzZl9NNGNabU9GQncwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -11809,17 +11987,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UrFw3F9-jMwuKWVC9-xnTwYt0cW3Oh6chNioyWBQMpcuU28XKmSx90_nOTcfNwQejt2IeD5HGTjYb7VKQuPJHY2NZVUan97kLRfBaRZRMlyHbg_QXE" + "AEnB2UpCrAcNtfQkwPDiwASApTywX62P8NJe5xdwkO2Ok-Woo5zHbELA8p2CSilWxiYDfnmzsDRUdgZEhoCYbhBCF7FslUC4JQ" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiUmVxdWlyZWQiLAogICAgImRlYnVnSW5mbyI6ICJjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1udWxsLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9YmFkUmVxdWVzdCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uUkVRVUlSRUQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPW51bGwsIGVycm9yUHJvdG9Db2RlPVJFUVVJUkVELCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZS5pZC5uYW1lLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2UuaWQubmFtZSwgbWVzc2FnZT1SZXF1aXJlZCwgcmVhc29uPXJlcXVpcmVkLCBycGNDb2RlPTQwMH0gUmVxdWlyZWRcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAwLAogICJtZXNzYWdlIjogIlJlcXVpcmVkIgogfQp9Cg==" } }, { - "ID": "bfc3a23bf2413d53", + "ID": "66ac152ea13f75a1", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -11829,19 +12007,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=2c448e20a64f79664bc9f2f5b69707bc81a3ffbcc6d4c32f483dfd2f2080" + "multipart/related; boundary=0f0fb700fcd404eaccee70674127b4abd4358733b6e2482318a93c8538b0" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "ea5d5fd39435fbec28830e85024a2f1a/16336026834869568193;o=0" + "108b66ef6a05b8469431f35d0847d3cf/9696966768171508174;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -11850,20 +12028,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0yYzQ0OGUyMGE2NGY3OTY2NGJjOWYyZjViNjk3MDdiYzgxYTNmZmJjYzZkNGMzMmY0ODNkZmQyZjIwODANCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSJ9Cg0KLS0yYzQ0OGUyMGE2NGY3OTY2NGJjOWYyZjViNjk3MDdiYzgxYTNmZmJjYzZkNGMzMmY0ODNkZmQyZjIwODANCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQpkYXRhDQotLTJjNDQ4ZTIwYTY0Zjc5NjY0YmM5ZjJmNWI2OTcwN2JjODFhM2ZmYmNjNmQ0YzMyZjQ4M2RmZDJmMjA4MC0tDQo=" + "Body": "LS0wZjBmYjcwMGZjZDQwNGVhY2NlZTcwNjc0MTI3YjRhYmQ0MzU4NzMzYjZlMjQ4MjMxOGE5M2M4NTM4YjANCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSJ9Cg0KLS0wZjBmYjcwMGZjZDQwNGVhY2NlZTcwNjc0MTI3YjRhYmQ0MzU4NzMzYjZlMjQ4MjMxOGE5M2M4NTM4YjANCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQpkYXRhDQotLTBmMGZiNzAwZmNkNDA0ZWFjY2VlNzA2NzQxMjdiNGFiZDQzNTg3MzNiNmUyNDgyMzE4YTkzYzg1MzhiMC0tDQo=" }, "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "4823" @@ -11872,7 +12052,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:55 GMT" + "Wed, 25 Jul 2018 18:23:33 GMT" ], "Server": [ "UploadServer" @@ -11882,7 +12062,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220493000" + "1532543311000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -11891,16 +12071,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrca6:4103,/bns/yw/borg/yw/bns/blobstore2/bitpusher/39.scotty,acatli15:443" + "xgiadabk16:4043,/bns/xi/borg/xi/bns/blobstore2/bitpusher/67.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=o041W4qdDYW8hQTu37noBw" + "eid=JcBYW73RJeG8swaRqa_QBQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/39.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/67.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -11909,13 +12089,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/39:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/67:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjREeG5mSTUtSjhEaXc4NktVeXB0QzQ4d2FqRWlNRUx2YmQ1cWVGT2RzUTcyV2ZrdDVpT1Z5Zy1adWFNX2ZON3JHSEFQQ0VnWHBvUy1QRElRR0VKczdNV0U5YTJJZGVnM1JhVkVNY1pNTUFCX0dpaEFiRTBhclNTTjgzNS1wYVA3SS1Vc3pJbElrSjctby1nT0d5di1vaGhWSllrOHZSQnlqbUdNdm5WbndGcDF1NUJSdFdGNlVqcVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WUo4M25nRG9UcTc4QUdwUi11bVZrQWYyTmZxNndpQlFaaDF1bWV5RUFmbkRPVWpsU1YwWUhhRnhvYmlTOE5yd0g2Wld4U0NrcWVJZFNPd3pDTGlBUV9nNWpjdy1xQlRGNER2LUFVZklOSkxaMHpuZGh4SjIzMmZxbWdobGExQzM5QkF3VUVzVUFCOGhqNnF3bG1jWFlTR1lBb1RhcEhSdTB2UjhFZi1TWWVWWEQzZl9NNGNabU9GQncwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -11930,17 +12110,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoU5LDIVpJ3td5YJH1dVE5w_pW6tB1KqSuIrzx425Ye5svlXaA-Fgob1GigFSp7Qr1uT4V_3hsIszwf1ULpcg8AInCdLra4ncgtCKKQUl3y5mvo-o4" + "AEnB2UoQjeAcUwURmk4sRbur3zUujnF9Smpjaf3H30AO-w7DC-WjV4UZ_Z2-zcv8UDLM5eW_tqHpJ3cDIjA5EG-e4IdeHS3GSw" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiaW52YWxpZCIsCiAgICAibWVzc2FnZSI6ICJUaGUgbWF4aW11bSBvYmplY3QgbGVuZ3RoIGlzIDEwMjQgY2hhcmFjdGVycywgYnV0IGdvdCBhIG5hbWUgd2l0aCAxMDI1IGNoYXJhY3RlcnM6ICcnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEuLi4nJyIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1JTlZBTElEX1ZBTFVFLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89bnVsbCwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLklOVkFMSURfVkFMVUUsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPW51bGwsIGVycm9yUHJvdG9Db2RlPUlOVkFMSURfVkFMVUUsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlLmlkLm5hbWUsIG1lc3NhZ2U9VGhlIG1heGltdW0gb2JqZWN0IGxlbmd0aCBpcyAxMDI0IGNoYXJhY3RlcnMsIGJ1dCBnb3QgYSBuYW1lIHdpdGggMTAyNSBjaGFyYWN0ZXJzOiAnJ2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLi4uJycsIHVubmFtZWRBcmd1bWVudHM9W2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhXX0sIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZS5pZC5uYW1lLCBtZXNzYWdlPVRoZSBtYXhpbXVtIG9iamVjdCBsZW5ndGggaXMgMTAyNCBjaGFyYWN0ZXJzLCBidXQgZ290IGEgbmFtZSB3aXRoIDEwMjUgY2hhcmFjdGVyczogJydhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS4uLicnLCByZWFzb249aW52YWxpZCwgcnBjQ29kZT00MDB9IFRoZSBtYXhpbXVtIG9iamVjdCBsZW5ndGggaXMgMTAyNCBjaGFyYWN0ZXJzLCBidXQgZ290IGEgbmFtZSB3aXRoIDEwMjUgY2hhcmFjdGVyczogJydhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS4uLicnXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJUaGUgbWF4aW11bSBvYmplY3QgbGVuZ3RoIGlzIDEwMjQgY2hhcmFjdGVycywgYnV0IGdvdCBhIG5hbWUgd2l0aCAxMDI1IGNoYXJhY3RlcnM6ICcnYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEuLi4nJyIKIH0KfQo=" } }, { - "ID": "9ed96e503f84919c", + "ID": "59f03bb5a5baf79c", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -11950,19 +12130,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=4172849951d926924647753eca6e8244dd974d5c565c0185df72a6c5dca1" + "multipart/related; boundary=eddefd5e4750cc23c9d4686bb5018c4634b7e9525b2cbff32eac12e90804" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "09023a71bcd05f78724499464eaf7681/17143733987054060753;o=0" + "875bdbc6d3008395970e0d6c347d26ad/13481278246891397724;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -11971,20 +12151,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS00MTcyODQ5OTUxZDkyNjkyNDY0Nzc1M2VjYTZlODI0NGRkOTc0ZDVjNTY1YzAxODVkZjcyYTZjNWRjYTENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJuZXdcbmxpbmVzIn0KDQotLTQxNzI4NDk5NTFkOTI2OTI0NjQ3NzUzZWNhNmU4MjQ0ZGQ5NzRkNWM1NjVjMDE4NWRmNzJhNmM1ZGNhMQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmRhdGENCi0tNDE3Mjg0OTk1MWQ5MjY5MjQ2NDc3NTNlY2E2ZTgyNDRkZDk3NGQ1YzU2NWMwMTg1ZGY3MmE2YzVkY2ExLS0NCg==" + "Body": "LS1lZGRlZmQ1ZTQ3NTBjYzIzYzlkNDY4NmJiNTAxOGM0NjM0YjdlOTUyNWIyY2JmZjMyZWFjMTJlOTA4MDQNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJuZXdcbmxpbmVzIn0KDQotLWVkZGVmZDVlNDc1MGNjMjNjOWQ0Njg2YmI1MDE4YzQ2MzRiN2U5NTI1YjJjYmZmMzJlYWMxMmU5MDgwNA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmRhdGENCi0tZWRkZWZkNWU0NzUwY2MyM2M5ZDQ2ODZiYjUwMThjNDYzNGI3ZTk1MjViMmNiZmYzMmVhYzEyZTkwODA0LS0NCg==" }, "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "3308" @@ -11993,7 +12175,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:55 GMT" + "Wed, 25 Jul 2018 18:23:33 GMT" ], "Server": [ "UploadServer" @@ -12003,7 +12185,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220493000" + "1532543311000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -12012,16 +12194,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqf26:4362,/bns/yw/borg/yw/bns/blobstore2/bitpusher/575.scotty,acatli15:443" + "xgiadabh15:4103,/bns/xi/borg/xi/bns/blobstore2/bitpusher/9.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=o041W__NEIy7N5zWgrgN" + "eid=JcBYW4njJ46xswa4jrSgDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/575.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/9.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -12030,13 +12212,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/575:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/9:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjREeG5mSTUtSjhEaXc4NktVeXB0QzQ4d2FqRWlNRUx2YmQ1cWVGT2RzUTcyV2ZrdDVpT1Z5Zy1adWFNX2ZON3JHSEFQQ0VnWHBvUy1QRElRR0VKczdNV0U5YTJJZGVnM1JhVkVNY1pNTUFCX0dpaEFiRTBhclNTTjgzNS1wYVA3SS1Vc3pJbElrSjctby1nT0d5di1vaGhWSllrOHZSQnlqbUdNdm5WbndGcDF1NUJSdFdGNlVqcVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WUo4M25nRG9UcTc4QUdwUi11bVZrQWYyTmZxNndpQlFaaDF1bWV5RUFmbkRPVWpsU1YwWUhhRnhvYmlTOE5yd0g2Wld4U0NrcWVJZFNPd3pDTGlBUV9nNWpjdy1xQlRGNER2LUFVZklOSkxaMHpuZGh4SjIzMmZxbWdobGExQzM5QkF3VUVzVUFCOGhqNnF3bG1jWFlTR1lBb1RhcEhSdTB2UjhFZi1TWWVWWEQzZl9NNGNabU9GQncwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -12051,17 +12233,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Uqc9Dj5tRU1gKUnpK5dsUTqYDQLJsCPTNEew-uyTBQ_CRxaYw5nYnQJCVO2-FfYmdQsNeB1yv5C76raH0B14oQRje_EprVl9UykDcII3-Fv8AenW3g" + "AEnB2UrvMivc_cjsF9p9aqAtb09OOb7c6J-G8csUhZZasMT6gTX7Mi9SxTQ3S24e8myRpPtDHsm9VLFtNcVdIY1ldl0AdHeOaA" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiaW52YWxpZCIsCiAgICAibWVzc2FnZSI6ICJEaXNhbGxvd2VkIHVuaWNvZGUgY2hhcmFjdGVycyBwcmVzZW50IGluIG9iamVjdCBuYW1lICcnbmV3XG5saW5lcycnIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUlOVkFMSURfVkFMVUUsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1udWxsLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9YmFkUmVxdWVzdCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uSU5WQUxJRF9WQUxVRSwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9bnVsbCwgZXJyb3JQcm90b0NvZGU9SU5WQUxJRF9WQUxVRSwgZXJyb3JQcm90b0RvbWFpbj1nZGF0YS5Db3JlRXJyb3JEb21haW4sIGZpbHRlcmVkTWVzc2FnZT1udWxsLCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2UuaWQubmFtZSwgbWVzc2FnZT1EaXNhbGxvd2VkIHVuaWNvZGUgY2hhcmFjdGVycyBwcmVzZW50IGluIG9iamVjdCBuYW1lICcnbmV3XG5saW5lcycnLCB1bm5hbWVkQXJndW1lbnRzPVtuZXdcbmxpbmVzXX0sIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZS5pZC5uYW1lLCBtZXNzYWdlPURpc2FsbG93ZWQgdW5pY29kZSBjaGFyYWN0ZXJzIHByZXNlbnQgaW4gb2JqZWN0IG5hbWUgJyduZXdcbmxpbmVzJycsIHJlYXNvbj1pbnZhbGlkLCBycGNDb2RlPTQwMH0gRGlzYWxsb3dlZCB1bmljb2RlIGNoYXJhY3RlcnMgcHJlc2VudCBpbiBvYmplY3QgbmFtZSAnJ25ld1xubGluZXMnJ1xuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiRGlzYWxsb3dlZCB1bmljb2RlIGNoYXJhY3RlcnMgcHJlc2VudCBpbiBvYmplY3QgbmFtZSAnJ25ld1xubGluZXMnJyIKIH0KfQo=" } }, { - "ID": "35ea04d4db1ae690", + "ID": "bf33043d4c0a21e4", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -12074,13 +12256,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9b6b9f683997de187c068477b57799de/17879104273542202848;o=0" + "4d399f474ad54c0abefb2b32b2c1c091/17337928790330958570;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -12089,7 +12271,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -12100,9 +12282,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -12114,7 +12298,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:55 GMT" + "Wed, 25 Jul 2018 18:23:34 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -12130,7 +12314,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220493000" + "1532543311000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -12139,16 +12323,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrns11:4000,/bns/yw/borg/yw/bns/blobstore2/bitpusher/59.scotty,acatli15:443" + "xgiadaca8:4102,/bns/xi/borg/xi/bns/blobstore2/bitpusher/61.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=o041W_rJE8LvhASL0qegBw" + "eid=JcBYW8n6KY24swa_vo3gCg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/59.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/61.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -12157,13 +12341,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/59:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/61:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjREeG5mSTUtSjhEaXc4NktVeXB0QzQ4d2FqRWlNRUx2YmQ1cWVGT2RzUTcyV2ZrdDVpT1Z5Zy1adWFNX2ZON3JHSEFQQ0VnWHBvUy1QRElRR0VKczdNV0U5YTJJZGVnM1JhVkVNY1pNTUFCX0dpaEFiRTBhclNTTjgzNS1wYVA3SS1Vc3pJbElrSjctby1nT0d5di1vaGhWSllrOHZSQnlqbUdNdm5WbndGcDF1NUJSdFdGNlVqcVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WUo4M25nRG9UcTc4QUdwUi11bVZrQWYyTmZxNndpQlFaaDF1bWV5RUFmbkRPVWpsU1YwWUhhRnhvYmlTOE5yd0g2Wld4U0NrcWVJZFNPd3pDTGlBUV9nNWpjdy1xQlRGNER2LUFVZklOSkxaMHpuZGh4SjIzMmZxbWdobGExQzM5QkF3VUVzVUFCOGhqNnF3bG1jWFlTR1lBb1RhcEhSdTB2UjhFZi1TWWVWWEQzZl9NNGNabU9GQncwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -12178,17 +12362,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpHBEx7pOu0vK4X2Amd9qOBc_bAsMUvvZwohTWWwsen5q7CX3vBFZsNdxgjhUwqbjDTI7pyHyKJHPw-gV-yZNxlXWC9Z7I_u9AuubOya3xmsxok854" + "AEnB2UqPOpGPdZNbeapUbzrOr-HModldQgVop8EJiEomkegn_aIt9f_1oFLRvBQsf0g-pYY4E3qoVPHpVhsXvlO9FIPRLRSfTQ" ] }, "Body": "" } }, { - "ID": "06def560bf4659d2", + "ID": "ace2660f20622ed5", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/a?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/a?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -12201,13 +12385,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "dcbbe08ca61a51ac67cd06be6d9f8568/240349922193803248;o=0" + "7b2a93b5cb16a5ff70bbdb8d9924d627/2675778765517890425;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -12216,7 +12400,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/a?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/a?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -12227,9 +12411,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -12241,7 +12427,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:56 GMT" + "Wed, 25 Jul 2018 18:23:34 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -12257,7 +12443,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220493000" + "1532543311000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -12266,16 +12452,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrlc13:4291,/bns/yw/borg/yw/bns/blobstore2/bitpusher/252.scotty,acatli15:443" + "xgiadaau9:4168,/bns/xi/borg/xi/bns/blobstore2/bitpusher/59.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=o041W_6BNYG0N6SfkrgK" + "eid=JsBYW4d80LOzBpGdlKAI" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/252.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/59.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -12284,13 +12470,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/252:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/59:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjREeG5mSTUtSjhEaXc4NktVeXB0QzQ4d2FqRWlNRUx2YmQ1cWVGT2RzUTcyV2ZrdDVpT1Z5Zy1adWFNX2ZON3JHSEFQQ0VnWHBvUy1QRElRR0VKczdNV0U5YTJJZGVnM1JhVkVNY1pNTUFCX0dpaEFiRTBhclNTTjgzNS1wYVA3SS1Vc3pJbElrSjctby1nT0d5di1vaGhWSllrOHZSQnlqbUdNdm5WbndGcDF1NUJSdFdGNlVqcVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WUo4M25nRG9UcTc4QUdwUi11bVZrQWYyTmZxNndpQlFaaDF1bWV5RUFmbkRPVWpsU1YwWUhhRnhvYmlTOE5yd0g2Wld4U0NrcWVJZFNPd3pDTGlBUV9nNWpjdy1xQlRGNER2LUFVZklOSkxaMHpuZGh4SjIzMmZxbWdobGExQzM5QkF3VUVzVUFCOGhqNnF3bG1jWFlTR1lBb1RhcEhSdTB2UjhFZi1TWWVWWEQzZl9NNGNabU9GQncwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -12305,17 +12491,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoDajvmZLPCqviI4gFjUxbRb_f2n4zJ4OVKCIHqj-k_TAoAIsj8ZLfJk_V5dwBbjAIPupM7lYeB09gM-17g1wLFooIjgYkIMQNtbO1x0lxIAOXD0pM" + "AEnB2UoaLNtZSj_-mazYm9wqUVzaRe4H2eIlLUXTOBmcfK3dLzGdNwPuU3vLgFp_PPMp-lXHGh0jPj1dGyeBLo6wWixG3dwHoQ" ] }, "Body": "" } }, { - "ID": "66e43d987629dedb", + "ID": "40f476713e140c7c", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/%D0%93%D0%BE%D1%84%D0%B5%D1%80%D0%BE%D0%B2%D0%B8?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/%D0%93%D0%BE%D1%84%D0%B5%D1%80%D0%BE%D0%B2%D0%B8?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -12328,13 +12514,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d023368525f9f123c8fc9bde081cd783/1047775603713329152;o=0" + "0bf02ab88b5e65a60cac43c319928d7d/6532429308957451015;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -12343,7 +12529,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/%D0%93%D0%BE%D1%84%D0%B5%D1%80%D0%BE%D0%B2%D0%B8?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/%D0%93%D0%BE%D1%84%D0%B5%D1%80%D0%BE%D0%B2%D0%B8?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -12354,9 +12540,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -12368,7 +12556,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:56 GMT" + "Wed, 25 Jul 2018 18:23:34 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -12384,7 +12572,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220493000" + "1532543311000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -12393,16 +12581,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrmy17:4271,/bns/yw/borg/yw/bns/blobstore2/bitpusher/409.scotty,acatli15:443" + "xiiadcah4:4081,/bns/xi/borg/xi/bns/blobstore2/bitpusher/74.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=pE41W6b4CNXkhQS3p57YBw" + "eid=JsBYW_P_FM6yswafrpjYBw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/409.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/74.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -12411,13 +12599,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/409:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/74:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjREeG5mSTUtSjhEaXc4NktVeXB0QzQ4d2FqRWlNRUx2YmQ1cWVGT2RzUTcyV2ZrdDVpT1Z5Zy1adWFNX2ZON3JHSEFQQ0VnWHBvUy1QRElRR0VKczdNV0U5YTJJZGVnM1JhVkVNY1pNTUFCX0dpaEFiRTBhclNTTjgzNS1wYVA3SS1Vc3pJbElrSjctby1nT0d5di1vaGhWSllrOHZSQnlqbUdNdm5WbndGcDF1NUJSdFdGNlVqcVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WUo4M25nRG9UcTc4QUdwUi11bVZrQWYyTmZxNndpQlFaaDF1bWV5RUFmbkRPVWpsU1YwWUhhRnhvYmlTOE5yd0g2Wld4U0NrcWVJZFNPd3pDTGlBUV9nNWpjdy1xQlRGNER2LUFVZklOSkxaMHpuZGh4SjIzMmZxbWdobGExQzM5QkF3VUVzVUFCOGhqNnF3bG1jWFlTR1lBb1RhcEhSdTB2UjhFZi1TWWVWWEQzZl9NNGNabU9GQncwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -12432,17 +12620,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urr_qCFeBrgDddi343YcOPMZCFQ40zZAYkclzzrIGurLEzJC-MIsWRJkW0JaB-aELSwN9xXrWWX7xMQVB4koaISJRKw0tCS4WHirMhhqvD67jm9idg" + "AEnB2Up-thqPmhDRoumRBAbEzWUKDogXteVbb-1NAFWyIeE0MrV17MTMvQFrI4z19YgyAJ5PgXSLgykk4PWyFqpQrHkthgaSjg" ] }, "Body": "" } }, { - "ID": "8c47e385d8035d0f", + "ID": "1e9fbfa1f1956e6e", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/gopher?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/gopher?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -12455,13 +12643,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "4f2041f81a3a1f48f529a3803317f812/1855202384710928912;o=0" + "7d4f27439b611a784dc64d03c58f89b6/10316740783382439061;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -12470,7 +12658,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/gopher?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/gopher?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -12481,9 +12669,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -12495,7 +12685,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:09:56 GMT" + "Wed, 25 Jul 2018 18:23:35 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -12511,7 +12701,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220493000" + "1532543311000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -12520,16 +12710,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrr67:4115,/bns/yw/borg/yw/bns/blobstore2/bitpusher/661.scotty,acatli15:443" + "xgiadaad3:4296,/bns/xi/borg/xi/bns/blobstore2/bitpusher/48.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=pE41W6yPGojUhATjwKuwCg" + "eid=JsBYW-7NL4S2swbxoazoAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/661.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/48.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -12538,13 +12728,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/661:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/48:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVjREeG5mSTUtSjhEaXc4NktVeXB0QzQ4d2FqRWlNRUx2YmQ1cWVGT2RzUTcyV2ZrdDVpT1Z5Zy1adWFNX2ZON3JHSEFQQ0VnWHBvUy1QRElRR0VKczdNV0U5YTJJZGVnM1JhVkVNY1pNTUFCX0dpaEFiRTBhclNTTjgzNS1wYVA3SS1Vc3pJbElrSjctby1nT0d5di1vaGhWSllrOHZSQnlqbUdNdm5WbndGcDF1NUJSdFdGNlVqcVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WUo4M25nRG9UcTc4QUdwUi11bVZrQWYyTmZxNndpQlFaaDF1bWV5RUFmbkRPVWpsU1YwWUhhRnhvYmlTOE5yd0g2Wld4U0NrcWVJZFNPd3pDTGlBUV9nNWpjdy1xQlRGNER2LUFVZklOSkxaMHpuZGh4SjIzMmZxbWdobGExQzM5QkF3VUVzVUFCOGhqNnF3bG1jWFlTR1lBb1RhcEhSdTB2UjhFZi1TWWVWWEQzZl9NNGNabU9GQncwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -12559,17 +12749,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrXRpFUdB6GbHVhfBkUgLF2k-TNbpsIq93B7oCXq6eR8fFlKKwp93WpK2VS5CNhpQdiPI9vNsFau6j8X0fO1mW8oqD6lxpxsK6WQwi7W1HJsXkeqAo" + "AEnB2UoS5nlK66lOaeeVwEPcgjaOOFHueykAIFz4uiGRLrFoY1XN8CfirBsL9R7Um9L1CppMsQ_CbTcpwzenv67nQWaN7H1aDA" ] }, "Body": "" } }, { - "ID": "1b0d034e9ea4fe87", + "ID": "b215903b3387dccd", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -12579,19 +12769,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=f2df8e7173d4c098211b7c07f39b42d7482c9e97a71ae864aa52041561b8" + "multipart/related; boundary=d42eaf5298f2bcb267ec8b2a39080925407198921ce98227f444cbb8e862" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "2993a5e0f86d18ebff0cdbef758c99f8/2662909536912263967;o=0" + "4996fa075047a0c5351cdbd9ee712d4a/14173109856140256291;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -12600,20 +12790,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1mMmRmOGU3MTczZDRjMDk4MjExYjdjMDdmMzliNDJkNzQ4MmM5ZTk3YTcxYWU4NjRhYTUyMDQxNTYxYjgNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJjb250ZW50In0KDQotLWYyZGY4ZTcxNzNkNGMwOTgyMTFiN2MwN2YzOWI0MmQ3NDgyYzllOTdhNzFhZTg2NGFhNTIwNDE1NjFiOA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCkl0IHdhcyB0aGUgYmVzdCBvZiB0aW1lcywgaXQgd2FzIHRoZSB3b3JzdCBvZiB0aW1lcy4NCi0tZjJkZjhlNzE3M2Q0YzA5ODIxMWI3YzA3ZjM5YjQyZDc0ODJjOWU5N2E3MWFlODY0YWE1MjA0MTU2MWI4LS0NCg==" + "Body": "LS1kNDJlYWY1Mjk4ZjJiY2IyNjdlYzhiMmEzOTA4MDkyNTQwNzE5ODkyMWNlOTgyMjdmNDQ0Y2JiOGU4NjINCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJjb250ZW50In0KDQotLWQ0MmVhZjUyOThmMmJjYjI2N2VjOGIyYTM5MDgwOTI1NDA3MTk4OTIxY2U5ODIyN2Y0NDRjYmI4ZTg2Mg0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCkl0IHdhcyB0aGUgYmVzdCBvZiB0aW1lcywgaXQgd2FzIHRoZSB3b3JzdCBvZiB0aW1lcy4NCi0tZDQyZWFmNTI5OGYyYmNiMjY3ZWM4YjJhMzkwODA5MjU0MDcxOTg5MjFjZTk4MjI3ZjQ0NGNiYjhlODYyLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -12625,10 +12817,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:57 GMT" + "Wed, 25 Jul 2018 18:23:35 GMT" ], "Etag": [ - "CKDMo7qi99sCEAE=" + "COmorNDvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -12644,7 +12836,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220496000" + "1532543315000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -12653,19 +12845,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrdh7:4070,/bns/yw/borg/yw/bns/blobstore2/bitpusher/541.scotty,acatli15:443" + "xgiadabq10:4444,/bns/xi/borg/xi/bns/blobstore2/bitpusher/86.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=pE41W7rKOMmChQTn2LjwAw" + "eid=J8BYW5qtDK-1swbWtbjQDQ" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/541.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/86.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -12674,13 +12866,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/541:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/86:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVY5c1lPRXhEb2MyQmdCcVF6cjJmX3VLZklsYUU2d01Jb3dkMnc0TGt6eVZoNnJfQ19nX21KOF8tQURvN1poT0FnYlJHc2V0MHlBZ2I0b0RSX251NW8tVHFVb1dNb2M3eE5QREhmaGdtSDlIcGEydnBoY2xLR1B3UExLbVNId3YxNW9ybjZrNVdLUjRSaTdRZ0FtUU85ZnNVOWNPcW5jY2k4OGo1dDBDNGdBSFdOQ1U5TThHWE05Q3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YWU3M2NLRER5T200NU12TFJXeHZyNzlGU3d5R1ZZdDBfazJNQ2c3ZEZBZkxFcXJ6YWVUSkY1Z1RZMVBoNmhyR1FYMl9TOG5EaE02ZDQweGRGSmh2Nk9OWm5aNDdxUGtOWGh6UVBnZGdsR2RvRDE0S3U4ckFDcF9nT3JPSGpkMEFNYVlSNWE0OHNUMW1sQWZjQ0tOWFEzd1E5V3pNYm9NZ1VTeF92cEhUdnBsS3RBZUNXS0NyQ0VGRmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -12695,17 +12887,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrkvmNLFBXpUJBoB--BVnbWPsY9NdRIHdDYPbAmZtjgnYCibolMubDlJDN5Zg-cMJQ-7kIK8eER_5VlpQF-IlU159vlqREDLrfC7i7LDtT7_ue-qEY" + "AEnB2UrJfcVu3i85YIc7lmSyHm3Jd_8wzSiiwZYTQmn0YrVdTBdX9yZjE2kQIsFtHUuZDPnb2Q6k_kVkUB_1DT2y1ZmE5JWsSQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTcyNDI0MDAiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NzI0MjQwMCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1Ny4yNDFaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTcuMjQxWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU3LjI0MVoiLAogInNpemUiOiAiNTIiLAogIm1kNUhhc2giOiAiSzI4NUF3S1dXZlZSZEJjQ1VYaHpOZz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQ/Z2VuZXJhdGlvbj0xNTMwMjIwMTk3MjQyNDAwJmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTcyNDI0MDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk3MjQyNDAwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS0RNbzdxaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5NzI0MjQwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NzI0MjQwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDS0RNbzdxaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5NzI0MjQwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NzI0MjQwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0tETW83cWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTcyNDI0MDAvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NzI0MjQwMCIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0tETW83cWk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkZjWE04UT09IiwKICJldGFnIjogIkNLRE1vN3FpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTU1MjM0MzMiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNTUyMzQzMyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNS41MjNaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzUuNTIzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM1LjUyM1oiLAogInNpemUiOiAiNTIiLAogIm1kNUhhc2giOiAiSzI4NUF3S1dXZlZSZEJjQ1VYaHpOZz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQ/Z2VuZXJhdGlvbj0xNTMyNTQzMDE1NTIzNDMzJmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTU1MjM0MzMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE1NTIzNDMzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDT21vck5EdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNTUyMzQzMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNTUyMzQzMyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDT21vck5EdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNTUyMzQzMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNTUyMzQzMyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ09tb3JORHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTU1MjM0MzMvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNTUyMzQzMyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ09tb3JORHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkZjWE04UT09IiwKICJldGFnIjogIkNPbW9yTkR2dXR3Q0VBRT0iCn0K" } }, { - "ID": "f848fe9809281608", + "ID": "494eb4be3cdce660", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/content?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/content?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -12718,13 +12910,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c6d6c513c9f0d3b6914dc0f35e7e8b84/4205988075079683647;o=0" + "957f90abb32d5f4ff5b13bcd3fca4d63/3367610374766748992;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -12733,7 +12925,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/content?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/content?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -12744,9 +12936,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -12758,10 +12952,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:57 GMT" + "Wed, 25 Jul 2018 18:23:35 GMT" ], "Etag": [ - "CKDMo7qi99sCEAE=" + "COmorNDvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -12777,7 +12971,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220497000" + "1532543315000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -12786,16 +12980,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrnb20:4079,/bns/yw/borg/yw/bns/blobstore2/bitpusher/199.scotty,acatli15:443" + "xgiadabo14:4091,/bns/xi/borg/xi/bns/blobstore2/bitpusher/37.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=pU41W6vRFsaNhQTT7aKgCA" + "eid=J8BYW9vaKI60swa29rugDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/199.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/37.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -12804,13 +12998,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/199:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/37:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVVY5c1lPRXhEb2MyQmdCcVF6cjJmX3VLZklsYUU2d01Jb3dkMnc0TGt6eVZoNnJfQ19nX21KOF8tQURvN1poT0FnYlJHc2V0MHlBZ2I0b0RSX251NW8tVHFVb1dNb2M3eE5QREhmaGdtSDlIcGEydnBoY2xLR1B3UExLbVNId3YxNW9ybjZrNVdLUjRSaTdRZ0FtUU85ZnNVOWNPcW5jY2k4OGo1dDBDNGdBSFdOQ1U5TThHWE05Q3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YWU3M2NLRER5T200NU12TFJXeHZyNzlGU3d5R1ZZdDBfazJNQ2c3ZEZBZkxFcXJ6YWVUSkY1Z1RZMVBoNmhyR1FYMl9TOG5EaE02ZDQweGRGSmh2Nk9OWm5aNDdxUGtOWGh6UVBnZGdsR2RvRDE0S3U4ckFDcF9nT3JPSGpkMEFNYVlSNWE0OHNUMW1sQWZjQ0tOWFEzd1E5V3pNYm9NZ1VTeF92cEhUdnBsS3RBZUNXS0NyQ0VGRmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -12825,17 +13019,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq00WHGFHQY2FpH4LHW_hqfk2bNgDJmxwOEpZzJqU6DZ8GhMZhJ7MCHn6JF3mHFBXQ474SxZP4rN1MjbFuz8yScN0lpSAs3l9tQ9fSIWMF3WGSVuDE" + "AEnB2UqtMTWiMVhM8ZyTaVG1Q7sq6umOm5KozX32gWJYQBjDyZlqoB_P-teJwjF4XXAh88dEOA8YOpwPQYtru3dEXA3It2I3vw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTcyNDI0MDAiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NzI0MjQwMCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1Ny4yNDFaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTcuMjQxWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU3LjI0MVoiLAogInNpemUiOiAiNTIiLAogIm1kNUhhc2giOiAiSzI4NUF3S1dXZlZSZEJjQ1VYaHpOZz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQ/Z2VuZXJhdGlvbj0xNTMwMjIwMTk3MjQyNDAwJmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTcyNDI0MDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk3MjQyNDAwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS0RNbzdxaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5NzI0MjQwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NzI0MjQwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDS0RNbzdxaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5NzI0MjQwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NzI0MjQwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0tETW83cWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTcyNDI0MDAvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NzI0MjQwMCIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0tETW83cWk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkZjWE04UT09IiwKICJldGFnIjogIkNLRE1vN3FpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTU1MjM0MzMiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNTUyMzQzMyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNS41MjNaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzUuNTIzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM1LjUyM1oiLAogInNpemUiOiAiNTIiLAogIm1kNUhhc2giOiAiSzI4NUF3S1dXZlZSZEJjQ1VYaHpOZz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQ/Z2VuZXJhdGlvbj0xNTMyNTQzMDE1NTIzNDMzJmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTU1MjM0MzMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE1NTIzNDMzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDT21vck5EdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNTUyMzQzMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNTUyMzQzMyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDT21vck5EdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNTUyMzQzMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNTUyMzQzMyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ09tb3JORHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTU1MjM0MzMvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNTUyMzQzMyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ09tb3JORHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkZjWE04UT09IiwKICJldGFnIjogIkNPbW9yTkR2dXR3Q0VBRT0iCn0K" } }, { - "ID": "03dbb890c811291b", + "ID": "0a957eebb634d1b4", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -12845,19 +13039,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=b80003ae132fb33abc115cafb6f0c30af1a8ffe8751065b49d45a3113f18" + "multipart/related; boundary=99c4808e616f01f5c268884e5117507c30c375f9b88c0093134d42beb45c" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c27f9a0b7e2cb2ba0efd957e4d8bf0cc/5013413756582432847;o=0" + "d73f8e6264a7cb68c6b29eca1f9f40e3/7152203324168382158;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -12866,20 +13060,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1iODAwMDNhZTEzMmZiMzNhYmMxMTVjYWZiNmYwYzMwYWYxYThmZmU4NzUxMDY1YjQ5ZDQ1YTMxMTNmMTgNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJjb250ZW50In0KDQotLWI4MDAwM2FlMTMyZmIzM2FiYzExNWNhZmI2ZjBjMzBhZjFhOGZmZTg3NTEwNjViNDlkNDVhMzExM2YxOA0KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgNCg0KPGh0bWw+PGhlYWQ+PHRpdGxlPk15IGZpcnN0IHBhZ2U8L3RpdGxlPjwvaGVhZD48L2h0bWw+DQotLWI4MDAwM2FlMTMyZmIzM2FiYzExNWNhZmI2ZjBjMzBhZjFhOGZmZTg3NTEwNjViNDlkNDVhMzExM2YxOC0tDQo=" + "Body": "LS05OWM0ODA4ZTYxNmYwMWY1YzI2ODg4NGU1MTE3NTA3YzMwYzM3NWY5Yjg4YzAwOTMxMzRkNDJiZWI0NWMNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsIm5hbWUiOiJjb250ZW50In0KDQotLTk5YzQ4MDhlNjE2ZjAxZjVjMjY4ODg0ZTUxMTc1MDdjMzBjMzc1ZjliODhjMDA5MzEzNGQ0MmJlYjQ1Yw0KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgNCg0KPGh0bWw+PGhlYWQ+PHRpdGxlPk15IGZpcnN0IHBhZ2U8L3RpdGxlPjwvaGVhZD48L2h0bWw+DQotLTk5YzQ4MDhlNjE2ZjAxZjVjMjY4ODg0ZTUxMTc1MDdjMzBjMzc1ZjliODhjMDA5MzEzNGQ0MmJlYjQ1Yy0tDQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -12891,10 +13087,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:57 GMT" + "Wed, 25 Jul 2018 18:23:36 GMT" ], "Etag": [ - "CMbJx7qi99sCEAE=" + "CMGEzdDvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -12910,7 +13106,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220497000" + "1532543315000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -12919,19 +13115,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrs185:4159,/bns/yw/borg/yw/bns/blobstore2/bitpusher/410.scotty,acatli15:443" + "xgiadabb16:4473,/bns/xi/borg/xi/bns/blobstore2/bitpusher/138.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=pU41W5LsG82_N9XTiegC" + "eid=J8BYW4DQLcm8swae9r34Ag" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/410.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/138.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -12940,13 +13136,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/410:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/138:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVY5c1lPRXhEb2MyQmdCcVF6cjJmX3VLZklsYUU2d01Jb3dkMnc0TGt6eVZoNnJfQ19nX21KOF8tQURvN1poT0FnYlJHc2V0MHlBZ2I0b0RSX251NW8tVHFVb1dNb2M3eE5QREhmaGdtSDlIcGEydnBoY2xLR1B3UExLbVNId3YxNW9ybjZrNVdLUjRSaTdRZ0FtUU85ZnNVOWNPcW5jY2k4OGo1dDBDNGdBSFdOQ1U5TThHWE05Q3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YWU3M2NLRER5T200NU12TFJXeHZyNzlGU3d5R1ZZdDBfazJNQ2c3ZEZBZkxFcXJ6YWVUSkY1Z1RZMVBoNmhyR1FYMl9TOG5EaE02ZDQweGRGSmh2Nk9OWm5aNDdxUGtOWGh6UVBnZGdsR2RvRDE0S3U4ckFDcF9nT3JPSGpkMEFNYVlSNWE0OHNUMW1sQWZjQ0tOWFEzd1E5V3pNYm9NZ1VTeF92cEhUdnBsS3RBZUNXS0NyQ0VGRmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -12961,17 +13157,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqIDJtqxo9-WBFheeukLz43noVFaLT4o1KAL3RbjvEYD0gU7ydIVvScSlqE1rdvzShZMFNx50clcs6vKRgZa970TgSzTCsgtT8yZ2MZj1nYhyFXfEE" + "AEnB2UrPjZEiVP6FkpO-M9UXaYJjodyIb8W1Kda1MwklxTek6BWuctbjdqemV2Qqqqh4c2-5PeI0aTH1Z9pi2vGZUylLUpqFaw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTc4MzE4NzgiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NzgzMTg3OCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU3LjgzMFoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1Ny44MzBaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTcuODMwWiIsCiAic2l6ZSI6ICI1NCIsCiAibWQ1SGFzaCI6ICJOOHA4L3M5RndkQUFubHZyL2xFQWpRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudD9nZW5lcmF0aW9uPTE1MzAyMjAxOTc4MzE4NzgmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5NzgzMTg3OC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY29udGVudCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTc4MzE4NzgiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNNYkp4N3FpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29udGVudC8xNTMwMjIwMTk3ODMxODc4L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk3ODMxODc4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNNYkp4N3FpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29udGVudC8xNTMwMjIwMTk3ODMxODc4L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk3ODMxODc4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTWJKeDdxaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5NzgzMTg3OC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk3ODMxODc4IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTWJKeDdxaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiR29VYnNRPT0iLAogImV0YWciOiAiQ01iSng3cWk5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTYwNTk0NTciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNjA1OTQ1NyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM2LjA1OVoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNi4wNTlaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzYuMDU5WiIsCiAic2l6ZSI6ICI1NCIsCiAibWQ1SGFzaCI6ICJOOHA4L3M5RndkQUFubHZyL2xFQWpRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudD9nZW5lcmF0aW9uPTE1MzI1NDMwMTYwNTk0NTcmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNjA1OTQ1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY29udGVudCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTYwNTk0NTciLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNNR0V6ZER2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29udGVudC8xNTMyNTQzMDE2MDU5NDU3L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2MDU5NDU3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNNR0V6ZER2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29udGVudC8xNTMyNTQzMDE2MDU5NDU3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2MDU5NDU3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTUdFemREdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNjA1OTQ1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2MDU5NDU3IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTUdFemREdnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiR29VYnNRPT0iLAogImV0YWciOiAiQ01HRXpkRHZ1dHdDRUFFPSIKfQo=" } }, { - "ID": "626e81a1b9ea8b77", + "ID": "acbcc1d70678bad4", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/content?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/content?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -12984,13 +13180,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d54098cb76b2583850f50ce4e6f54533/6628547685486465902;o=0" + "57063ad8edec0f85a3b5e42f77edc343/14793166441527715819;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -12999,7 +13195,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/content?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/content?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -13010,9 +13206,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -13024,10 +13222,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:58 GMT" + "Wed, 25 Jul 2018 18:23:36 GMT" ], "Etag": [ - "CMbJx7qi99sCEAE=" + "CMGEzdDvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -13043,7 +13241,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220497000" + "1532543315000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -13052,16 +13250,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbg79:4060,/bns/yw/borg/yw/bns/blobstore2/bitpusher/174.scotty,acatli15:443" + "xgiadaae9:4327,/bns/xi/borg/xi/bns/blobstore2/bitpusher/56.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=pU41W4SNOoXbhQTUy7PoAQ" + "eid=KMBYW8OCE62yswaCrJ3IBA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/174.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/56.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -13070,13 +13268,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/174:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/56:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVVY5c1lPRXhEb2MyQmdCcVF6cjJmX3VLZklsYUU2d01Jb3dkMnc0TGt6eVZoNnJfQ19nX21KOF8tQURvN1poT0FnYlJHc2V0MHlBZ2I0b0RSX251NW8tVHFVb1dNb2M3eE5QREhmaGdtSDlIcGEydnBoY2xLR1B3UExLbVNId3YxNW9ybjZrNVdLUjRSaTdRZ0FtUU85ZnNVOWNPcW5jY2k4OGo1dDBDNGdBSFdOQ1U5TThHWE05Q3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YWU3M2NLRER5T200NU12TFJXeHZyNzlGU3d5R1ZZdDBfazJNQ2c3ZEZBZkxFcXJ6YWVUSkY1Z1RZMVBoNmhyR1FYMl9TOG5EaE02ZDQweGRGSmh2Nk9OWm5aNDdxUGtOWGh6UVBnZGdsR2RvRDE0S3U4ckFDcF9nT3JPSGpkMEFNYVlSNWE0OHNUMW1sQWZjQ0tOWFEzd1E5V3pNYm9NZ1VTeF92cEhUdnBsS3RBZUNXS0NyQ0VGRmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -13091,17 +13289,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqXSy2-roNaXZlGirS3ki30np34sbTqJMeoBbYALBdQV06Iv-aL-gEMizaPOCE37aefNGVfkuOzhxZJWm8idnDJmnFxG3ecEPh4-ENXvs_VTvCfaoA" + "AEnB2UpT1T6IHFHYsQDoRL8pDAa81op1SuSHlWEHnCkYlyYbPigHElKA78hhLgYZVC2WIs1oZqC7eUasO_bk6C2i4AyV_rJRpQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTc4MzE4NzgiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5NzgzMTg3OCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU3LjgzMFoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1Ny44MzBaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTcuODMwWiIsCiAic2l6ZSI6ICI1NCIsCiAibWQ1SGFzaCI6ICJOOHA4L3M5RndkQUFubHZyL2xFQWpRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudD9nZW5lcmF0aW9uPTE1MzAyMjAxOTc4MzE4NzgmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5NzgzMTg3OC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY29udGVudCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTc4MzE4NzgiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNNYkp4N3FpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29udGVudC8xNTMwMjIwMTk3ODMxODc4L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk3ODMxODc4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNNYkp4N3FpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29udGVudC8xNTMwMjIwMTk3ODMxODc4L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk3ODMxODc4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTWJKeDdxaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5NzgzMTg3OC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk3ODMxODc4IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTWJKeDdxaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiR29VYnNRPT0iLAogImV0YWciOiAiQ01iSng3cWk5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTYwNTk0NTciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNjA1OTQ1NyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM2LjA1OVoiLAogInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNi4wNTlaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzYuMDU5WiIsCiAic2l6ZSI6ICI1NCIsCiAibWQ1SGFzaCI6ICJOOHA4L3M5RndkQUFubHZyL2xFQWpRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudD9nZW5lcmF0aW9uPTE1MzI1NDMwMTYwNTk0NTcmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNjA1OTQ1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY29udGVudCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTYwNTk0NTciLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNNR0V6ZER2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29udGVudC8xNTMyNTQzMDE2MDU5NDU3L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2MDU5NDU3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNNR0V6ZER2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29udGVudC8xNTMyNTQzMDE2MDU5NDU3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2MDU5NDU3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTUdFemREdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNjA1OTQ1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2MDU5NDU3IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTUdFemREdnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiR29VYnNRPT0iLAogImV0YWciOiAiQ01HRXpkRHZ1dHdDRUFFPSIKfQo=" } }, { - "ID": "276a9f6b2ac731e3", + "ID": "a142808b9cd19f23", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -13111,19 +13309,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=89d44f73f47145425f5a2ba603bd25a49448e6e726d9ba111d8cad176971" + "multipart/related; boundary=c37c1d2a1d5d5048226d709eaade954077a555a3f5d0a53e6ef5baf27267" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "1021f70a254fbf9561a1fa0ab5ffdf3e/7364199442656285822;o=0" + "4799d504ad1e1bc268664a68f9cbae9e/203072915535915129;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -13132,20 +13330,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS04OWQ0NGY3M2Y0NzE0NTQyNWY1YTJiYTYwM2JkMjVhNDk0NDhlNmU3MjZkOWJhMTExZDhjYWQxNzY5NzENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9odG1sIiwibmFtZSI6ImNvbnRlbnQifQoNCi0tODlkNDRmNzNmNDcxNDU0MjVmNWEyYmE2MDNiZDI1YTQ5NDQ4ZTZlNzI2ZDliYTExMWQ4Y2FkMTc2OTcxDQpDb250ZW50LVR5cGU6IHRleHQvaHRtbA0KDQo8aHRtbD48aGVhZD48dGl0bGU+TXkgZmlyc3QgcGFnZTwvdGl0bGU+PC9oZWFkPjwvaHRtbD4NCi0tODlkNDRmNzNmNDcxNDU0MjVmNWEyYmE2MDNiZDI1YTQ5NDQ4ZTZlNzI2ZDliYTExMWQ4Y2FkMTc2OTcxLS0NCg==" + "Body": "LS1jMzdjMWQyYTFkNWQ1MDQ4MjI2ZDcwOWVhYWRlOTU0MDc3YTU1NWEzZjVkMGE1M2U2ZWY1YmFmMjcyNjcNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9odG1sIiwibmFtZSI6ImNvbnRlbnQifQoNCi0tYzM3YzFkMmExZDVkNTA0ODIyNmQ3MDllYWFkZTk1NDA3N2E1NTVhM2Y1ZDBhNTNlNmVmNWJhZjI3MjY3DQpDb250ZW50LVR5cGU6IHRleHQvaHRtbA0KDQo8aHRtbD48aGVhZD48dGl0bGU+TXkgZmlyc3QgcGFnZTwvdGl0bGU+PC9oZWFkPjwvaHRtbD4NCi0tYzM3YzFkMmExZDVkNTA0ODIyNmQ3MDllYWFkZTk1NDA3N2E1NTVhM2Y1ZDBhNTNlNmVmNWJhZjI3MjY3LS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -13157,10 +13357,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:58 GMT" + "Wed, 25 Jul 2018 18:23:36 GMT" ], "Etag": [ - "CPKz5rqi99sCEAE=" + "CIqD99DvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -13176,7 +13376,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220497000" + "1532543315000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -13185,19 +13385,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrr129:4461,/bns/yw/borg/yw/bns/blobstore2/bitpusher/209.scotty,acatli15:443" + "xiiadcae13:4169,/bns/xi/borg/xi/bns/blobstore2/bitpusher/144.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=pk41W_iDAoKlN9Wct9gI" + "eid=KMBYW93FF6W9swaUiID4Ag" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/209.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/144.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -13206,13 +13406,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/209:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/144:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVY5c1lPRXhEb2MyQmdCcVF6cjJmX3VLZklsYUU2d01Jb3dkMnc0TGt6eVZoNnJfQ19nX21KOF8tQURvN1poT0FnYlJHc2V0MHlBZ2I0b0RSX251NW8tVHFVb1dNb2M3eE5QREhmaGdtSDlIcGEydnBoY2xLR1B3UExLbVNId3YxNW9ybjZrNVdLUjRSaTdRZ0FtUU85ZnNVOWNPcW5jY2k4OGo1dDBDNGdBSFdOQ1U5TThHWE05Q3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YWU3M2NLRER5T200NU12TFJXeHZyNzlGU3d5R1ZZdDBfazJNQ2c3ZEZBZkxFcXJ6YWVUSkY1Z1RZMVBoNmhyR1FYMl9TOG5EaE02ZDQweGRGSmh2Nk9OWm5aNDdxUGtOWGh6UVBnZGdsR2RvRDE0S3U4ckFDcF9nT3JPSGpkMEFNYVlSNWE0OHNUMW1sQWZjQ0tOWFEzd1E5V3pNYm9NZ1VTeF92cEhUdnBsS3RBZUNXS0NyQ0VGRmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -13227,17 +13427,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpHxWxraCeF9hmGibg_gmN4VBZbhzCc1SGwM52fLSJ2O5mQ3DUMnBPBQnsd0968qfS7_G68fpEsiRV5RlBOhquvQ_51XyL_V7P2-6Xr2zIjnfBNnqk" + "AEnB2UqHURe1JwQh2-9aKOnOyLyrp_l2W1otv5TBFFDrGwPqb127i362e1BWQbv9lp5GdflrNH5EMwn9D2WMfu7MHfWU-Ho0yg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTgzMzcwMTAiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5ODMzNzAxMCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9odG1sIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU4LjMzNloiLAogInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1OC4zMzZaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTguMzM2WiIsCiAic2l6ZSI6ICI1NCIsCiAibWQ1SGFzaCI6ICJOOHA4L3M5RndkQUFubHZyL2xFQWpRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudD9nZW5lcmF0aW9uPTE1MzAyMjAxOTgzMzcwMTAmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5ODMzNzAxMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY29udGVudCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTgzMzcwMTAiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNQS3o1cnFpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29udGVudC8xNTMwMjIwMTk4MzM3MDEwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4MzM3MDEwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNQS3o1cnFpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29udGVudC8xNTMwMjIwMTk4MzM3MDEwL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4MzM3MDEwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDUEt6NXJxaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5ODMzNzAxMC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4MzM3MDEwIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDUEt6NXJxaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiR29VYnNRPT0iLAogImV0YWciOiAiQ1BLejVycWk5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTY3NDc0MDIiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNjc0NzQwMiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9odG1sIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM2Ljc0N1oiLAogInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNi43NDdaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzYuNzQ3WiIsCiAic2l6ZSI6ICI1NCIsCiAibWQ1SGFzaCI6ICJOOHA4L3M5RndkQUFubHZyL2xFQWpRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudD9nZW5lcmF0aW9uPTE1MzI1NDMwMTY3NDc0MDImYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNjc0NzQwMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY29udGVudCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTY3NDc0MDIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJcUQ5OUR2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29udGVudC8xNTMyNTQzMDE2NzQ3NDAyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2NzQ3NDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJcUQ5OUR2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29udGVudC8xNTMyNTQzMDE2NzQ3NDAyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2NzQ3NDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSXFEOTlEdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNjc0NzQwMi91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2NzQ3NDAyIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSXFEOTlEdnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiR29VYnNRPT0iLAogImV0YWciOiAiQ0lxRDk5RHZ1dHdDRUFFPSIKfQo=" } }, { - "ID": "8b6203f93036dbb5", + "ID": "2b320c10051e4fa3", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/content?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/content?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -13250,13 +13450,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "209deeb618ba9abfc93443ae91f661cb/8979051905173477277;o=0" + "6c090d35d8909135c8612baccce6dcd6/7844034933400463765;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -13265,7 +13465,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/content?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/content?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -13276,9 +13476,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -13290,10 +13492,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:58 GMT" + "Wed, 25 Jul 2018 18:23:37 GMT" ], "Etag": [ - "CPKz5rqi99sCEAE=" + "CIqD99DvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -13309,7 +13511,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220497000" + "1532543316000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -13318,16 +13520,16 @@ "998958384336" ], "X-Google-Backends": [ - "vril66:4366,/bns/yw/borg/yw/bns/blobstore2/bitpusher/572.scotty,acatli15:443" + "xiiadcat14:4180,/bns/xi/borg/xi/bns/blobstore2/bitpusher/44.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=pk41W4-IHIazhQSrsq7YAw" + "eid=KMBYW4OdNYq1swbFnpiwDw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/572.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/44.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -13336,13 +13538,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/572:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/44:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVVY5c1lPRXhEb2MyQmdCcVF6cjJmX3VLZklsYUU2d01Jb3dkMnc0TGt6eVZoNnJfQ19nX21KOF8tQURvN1poT0FnYlJHc2V0MHlBZ2I0b0RSX251NW8tVHFVb1dNb2M3eE5QREhmaGdtSDlIcGEydnBoY2xLR1B3UExLbVNId3YxNW9ybjZrNVdLUjRSaTdRZ0FtUU85ZnNVOWNPcW5jY2k4OGo1dDBDNGdBSFdOQ1U5TThHWE05Q3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YWU3M2NLRER5T200NU12TFJXeHZyNzlGU3d5R1ZZdDBfazJNQ2c3ZEZBZkxFcXJ6YWVUSkY1Z1RZMVBoNmhyR1FYMl9TOG5EaE02ZDQweGRGSmh2Nk9OWm5aNDdxUGtOWGh6UVBnZGdsR2RvRDE0S3U4ckFDcF9nT3JPSGpkMEFNYVlSNWE0OHNUMW1sQWZjQ0tOWFEzd1E5V3pNYm9NZ1VTeF92cEhUdnBsS3RBZUNXS0NyQ0VGRmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -13357,17 +13559,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoIr_GMG0ILQ7U7z9_J7KTZ_Ugw77QWQo0y1dZyPUuK23TPWZ2j-cw2JXZ4ed78ZVmgMsMyLILDf8UHCbhCpiDS0vFsKfSatIEPxVFhwYK5_cZlKlM" + "AEnB2UqJlSp0x1H4pS2hPr6G1KGIbsC_2EVbx0frgZP7ramtcFv2VZ99FHdBPxMM_l6ajQy6cixC1efJXFrlqyuNyJ7nCSaLTw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTgzMzcwMTAiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5ODMzNzAxMCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9odG1sIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU4LjMzNloiLAogInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1OC4zMzZaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTguMzM2WiIsCiAic2l6ZSI6ICI1NCIsCiAibWQ1SGFzaCI6ICJOOHA4L3M5RndkQUFubHZyL2xFQWpRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudD9nZW5lcmF0aW9uPTE1MzAyMjAxOTgzMzcwMTAmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5ODMzNzAxMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY29udGVudCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTgzMzcwMTAiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNQS3o1cnFpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29udGVudC8xNTMwMjIwMTk4MzM3MDEwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4MzM3MDEwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNQS3o1cnFpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29udGVudC8xNTMwMjIwMTk4MzM3MDEwL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4MzM3MDEwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDUEt6NXJxaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5ODMzNzAxMC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4MzM3MDEwIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDUEt6NXJxaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiR29VYnNRPT0iLAogImV0YWciOiAiQ1BLejVycWk5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTY3NDc0MDIiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNjc0NzQwMiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9odG1sIiwKICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM2Ljc0N1oiLAogInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNi43NDdaIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzYuNzQ3WiIsCiAic2l6ZSI6ICI1NCIsCiAibWQ1SGFzaCI6ICJOOHA4L3M5RndkQUFubHZyL2xFQWpRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudD9nZW5lcmF0aW9uPTE1MzI1NDMwMTY3NDc0MDImYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNjc0NzQwMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY29udGVudCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTY3NDc0MDIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJcUQ5OUR2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29udGVudC8xNTMyNTQzMDE2NzQ3NDAyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2NzQ3NDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJcUQ5OUR2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29udGVudC8xNTMyNTQzMDE2NzQ3NDAyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2NzQ3NDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSXFEOTlEdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNjc0NzQwMi91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE2NzQ3NDAyIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSXFEOTlEdnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiR29VYnNRPT0iLAogImV0YWciOiAiQ0lxRDk5RHZ1dHdDRUFFPSIKfQo=" } }, { - "ID": "1d490da082c036af", + "ID": "97be49eeb031214f", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -13377,19 +13579,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=87d496845552f7d7655171e9d649aed807c3ef958ec8acca114e0a264bcb" + "multipart/related; boundary=14a1d8da837c7ec17817f5384029d989a962e73e483a8d3344247580a8f8" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d4efe0fb3a5f211b07f053078f2e83be/9786760156852820397;o=0" + "8624527f627ba0ad09ce27f8a3ab3fba/11628347511631915300;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -13398,20 +13600,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS04N2Q0OTY4NDU1NTJmN2Q3NjU1MTcxZTlkNjQ5YWVkODA3YzNlZjk1OGVjOGFjY2ExMTRlMGEyNjRiY2INCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoiaW1hZ2UvanBlZyIsIm5hbWUiOiJjb250ZW50In0KDQotLTg3ZDQ5Njg0NTU1MmY3ZDc2NTUxNzFlOWQ2NDlhZWQ4MDdjM2VmOTU4ZWM4YWNjYTExNGUwYTI2NGJjYg0KQ29udGVudC1UeXBlOiBpbWFnZS9qcGVnDQoNCjxodG1sPjxoZWFkPjx0aXRsZT5NeSBmaXJzdCBwYWdlPC90aXRsZT48L2hlYWQ+PC9odG1sPg0KLS04N2Q0OTY4NDU1NTJmN2Q3NjU1MTcxZTlkNjQ5YWVkODA3YzNlZjk1OGVjOGFjY2ExMTRlMGEyNjRiY2ItLQ0K" + "Body": "LS0xNGExZDhkYTgzN2M3ZWMxNzgxN2Y1Mzg0MDI5ZDk4OWE5NjJlNzNlNDgzYThkMzM0NDI0NzU4MGE4ZjgNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoiaW1hZ2UvanBlZyIsIm5hbWUiOiJjb250ZW50In0KDQotLTE0YTFkOGRhODM3YzdlYzE3ODE3ZjUzODQwMjlkOTg5YTk2MmU3M2U0ODNhOGQzMzQ0MjQ3NTgwYThmOA0KQ29udGVudC1UeXBlOiBpbWFnZS9qcGVnDQoNCjxodG1sPjxoZWFkPjx0aXRsZT5NeSBmaXJzdCBwYWdlPC90aXRsZT48L2hlYWQ+PC9odG1sPg0KLS0xNGExZDhkYTgzN2M3ZWMxNzgxN2Y1Mzg0MDI5ZDk4OWE5NjJlNzNlNDgzYThkMzM0NDI0NzU4MGE4ZjgtLQ0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -13423,10 +13627,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:58 GMT" + "Wed, 25 Jul 2018 18:23:37 GMT" ], "Etag": [ - "CPnFhLui99sCEAE=" + "CIaYmtHvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -13442,7 +13646,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220496000" + "1532543315000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -13451,19 +13655,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrab126:4331,/bns/yw/borg/yw/bns/blobstore2/bitpusher/58.scotty,acatli15:443" + "xgiadaam10:4277,/bns/xi/borg/xi/bns/blobstore2/bitpusher/46.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=pk41W6mcIcbuN4yunbAI" + "eid=KcBYW7LPAa-zswb4gZ04" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/58.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/46.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -13472,13 +13676,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/58:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/46:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVY5c1lPRXhEb2MyQmdCcVF6cjJmX3VLZklsYUU2d01Jb3dkMnc0TGt6eVZoNnJfQ19nX21KOF8tQURvN1poT0FnYlJHc2V0MHlBZ2I0b0RSX251NW8tVHFVb1dNb2M3eE5QREhmaGdtSDlIcGEydnBoY2xLR1B3UExLbVNId3YxNW9ybjZrNVdLUjRSaTdRZ0FtUU85ZnNVOWNPcW5jY2k4OGo1dDBDNGdBSFdOQ1U5TThHWE05Q3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YWU3M2NLRER5T200NU12TFJXeHZyNzlGU3d5R1ZZdDBfazJNQ2c3ZEZBZkxFcXJ6YWVUSkY1Z1RZMVBoNmhyR1FYMl9TOG5EaE02ZDQweGRGSmh2Nk9OWm5aNDdxUGtOWGh6UVBnZGdsR2RvRDE0S3U4ckFDcF9nT3JPSGpkMEFNYVlSNWE0OHNUMW1sQWZjQ0tOWFEzd1E5V3pNYm9NZ1VTeF92cEhUdnBsS3RBZUNXS0NyQ0VGRmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -13493,17 +13697,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo8QqqIx2CSC4JkschiiIL4X-NEPRn0gu4fpbtT6VuUByCMMC_mUCaKWmzznMtoo68f1EFQjSUEigoWXcoUhsErEVBxVmBE4v8K4hfg4aBcvYX1Etk" + "AEnB2UqjmHbtRIMiyoax4FkHRuxe_XZD5dYxjH8XSJWBNACalAqmwuRp5T9934s1qNnWM_mU3OGvQCq9Gz76sjwBIKRTajFkIw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTg4MzA4NDEiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5ODgzMDg0MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAiaW1hZ2UvanBlZyIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1OC44MjlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTguODI5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU4LjgyOVoiLAogInNpemUiOiAiNTQiLAogIm1kNUhhc2giOiAiTjhwOC9zOUZ3ZEFBbmx2ci9sRUFqUT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQ/Z2VuZXJhdGlvbj0xNTMwMjIwMTk4ODMwODQxJmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTg4MzA4NDEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4ODMwODQxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDUG5GaEx1aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5ODgzMDg0MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5ODgzMDg0MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDUG5GaEx1aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5ODgzMDg0MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5ODgzMDg0MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ1BuRmhMdWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTg4MzA4NDEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5ODgzMDg0MSIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ1BuRmhMdWk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkdvVWJzUT09IiwKICJldGFnIjogIkNQbkZoTHVpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTczMjM1MjYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAiaW1hZ2UvanBlZyIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNy4zMjNaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzcuMzIzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM3LjMyM1oiLAogInNpemUiOiAiNTQiLAogIm1kNUhhc2giOiAiTjhwOC9zOUZ3ZEFBbmx2ci9sRUFqUT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQ/Z2VuZXJhdGlvbj0xNTMyNTQzMDE3MzIzNTI2JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTczMjM1MjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3MzIzNTI2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDSWFZbXRIdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNzMyMzUyNi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDSWFZbXRIdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNzMyMzUyNi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0lhWW10SHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTczMjM1MjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0lhWW10SHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkdvVWJzUT09IiwKICJldGFnIjogIkNJYVltdEh2dXR3Q0VBRT0iCn0K" } }, { - "ID": "cedc12deb6059fb8", + "ID": "01ea6474ca3e1cb0", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/content?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/content?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -13516,13 +13720,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "18a82be18aee94367d71165df3df6b31/11329837595525389517;o=0" + "da31b16a27ba3dedc1276495a9fdb179/822848030258473536;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -13531,7 +13735,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/content?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/content?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -13542,9 +13746,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -13556,10 +13762,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:59 GMT" + "Wed, 25 Jul 2018 18:23:37 GMT" ], "Etag": [ - "CPnFhLui99sCEAE=" + "CIaYmtHvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -13575,7 +13781,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220497000" + "1532543316000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -13584,16 +13790,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbs2:4372,/bns/yw/borg/yw/bns/blobstore2/bitpusher/198.scotty,acatli15:443" + "xiiadcaa6:4260,/bns/xi/borg/xi/bns/blobstore2/bitpusher/78.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=pk41W9v0OoH1N7-RjPgH" + "eid=KcBYW8ziGq22swaWrLTYDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/198.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/78.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -13602,13 +13808,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/198:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/78:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVVY5c1lPRXhEb2MyQmdCcVF6cjJmX3VLZklsYUU2d01Jb3dkMnc0TGt6eVZoNnJfQ19nX21KOF8tQURvN1poT0FnYlJHc2V0MHlBZ2I0b0RSX251NW8tVHFVb1dNb2M3eE5QREhmaGdtSDlIcGEydnBoY2xLR1B3UExLbVNId3YxNW9ybjZrNVdLUjRSaTdRZ0FtUU85ZnNVOWNPcW5jY2k4OGo1dDBDNGdBSFdOQ1U5TThHWE05Q3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YWU3M2NLRER5T200NU12TFJXeHZyNzlGU3d5R1ZZdDBfazJNQ2c3ZEZBZkxFcXJ6YWVUSkY1Z1RZMVBoNmhyR1FYMl9TOG5EaE02ZDQweGRGSmh2Nk9OWm5aNDdxUGtOWGh6UVBnZGdsR2RvRDE0S3U4ckFDcF9nT3JPSGpkMEFNYVlSNWE0OHNUMW1sQWZjQ0tOWFEzd1E5V3pNYm9NZ1VTeF92cEhUdnBsS3RBZUNXS0NyQ0VGRmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -13623,17 +13829,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ury2W-eAJPw7j9Yu_cF0HwKKqY0JZbb97e6ek1xsphTVm8TRIIogCJwfdlJasWrSzf3g0KgH-UUBtCkusptF4VvkUfqSnK7v6Wf-tY5JvK49tbDs_0" + "AEnB2UoVQF7Q-bbvUHhIoZCxZifsmIksg-K6APCRpuifyRgzvI3q63e5olEK3_kROJHlK0YMYRmKVqOAIrsyfavdTXeJc7wMyA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTg4MzA4NDEiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5ODgzMDg0MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAiaW1hZ2UvanBlZyIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1OC44MjlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTguODI5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU4LjgyOVoiLAogInNpemUiOiAiNTQiLAogIm1kNUhhc2giOiAiTjhwOC9zOUZ3ZEFBbmx2ci9sRUFqUT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQ/Z2VuZXJhdGlvbj0xNTMwMjIwMTk4ODMwODQxJmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTg4MzA4NDEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4ODMwODQxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDUG5GaEx1aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5ODgzMDg0MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5ODgzMDg0MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDUG5GaEx1aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5ODgzMDg0MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5ODgzMDg0MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ1BuRmhMdWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTg4MzA4NDEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5ODgzMDg0MSIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ1BuRmhMdWk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkdvVWJzUT09IiwKICJldGFnIjogIkNQbkZoTHVpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTczMjM1MjYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50IiwKICJuYW1lIjogImNvbnRlbnQiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAiaW1hZ2UvanBlZyIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNy4zMjNaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzcuMzIzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM3LjMyM1oiLAogInNpemUiOiAiNTQiLAogIm1kNUhhc2giOiAiTjhwOC9zOUZ3ZEFBbmx2ci9sRUFqUT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQ/Z2VuZXJhdGlvbj0xNTMyNTQzMDE3MzIzNTI2JmFsdD1tZWRpYSIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTczMjM1MjYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNvbnRlbnQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3MzIzNTI2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDSWFZbXRIdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNzMyMzUyNi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDSWFZbXRIdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbnRlbnQvMTUzMjU0MzAxNzMyMzUyNi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0lhWW10SHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTczMjM1MjYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0lhWW10SHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIkdvVWJzUT09IiwKICJldGFnIjogIkNJYVltdEh2dXR3Q0VBRT0iCn0K" } }, { - "ID": "38c271bf60b23a28", + "ID": "91aa229ea272fa98", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -13643,19 +13849,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=54d5fbb1eb76657ee72b5895ed49f986df9a9274e3811c1623b9f2d3aa4d" + "multipart/related; boundary=22d06fe88539bb99ac9e6b0bfbde0ea5e4fcd2f0a38f5a2015beb5f767d3" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "0a13d2be8a1d72edf6267891a6e45d71/12137264376539831772;o=0" + "47f0935af9749d3fad6d1c5b1944c281/4679497474186406862;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -13664,7 +13870,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -13679,14 +13885,16 @@ "H+LmnXhRoeI6TMW5bsV6HyUk6pyGc2IMbqYbAXBcps0=" ] }, - "Body": "LS01NGQ1ZmJiMWViNzY2NTdlZTcyYjU4OTVlZDQ5Zjk4NmRmOWE5Mjc0ZTM4MTFjMTYyM2I5ZjJkM2FhNGQNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm5hbWUiOiJjdXN0b21lci1lbmNyeXB0aW9uIn0KDQotLTU0ZDVmYmIxZWI3NjY1N2VlNzJiNTg5NWVkNDlmOTg2ZGY5YTkyNzRlMzgxMWMxNjIzYjlmMmQzYWE0ZA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCnRvcCBzZWNyZXQuDQotLTU0ZDVmYmIxZWI3NjY1N2VlNzJiNTg5NWVkNDlmOTg2ZGY5YTkyNzRlMzgxMWMxNjIzYjlmMmQzYWE0ZC0tDQo=" + "Body": "LS0yMmQwNmZlODg1MzliYjk5YWM5ZTZiMGJmYmRlMGVhNWU0ZmNkMmYwYTM4ZjVhMjAxNWJlYjVmNzY3ZDMNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm5hbWUiOiJjdXN0b21lci1lbmNyeXB0aW9uIn0KDQotLTIyZDA2ZmU4ODUzOWJiOTlhYzllNmIwYmZiZGUwZWE1ZTRmY2QyZjBhMzhmNWEyMDE1YmViNWY3NjdkMw0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCnRvcCBzZWNyZXQuDQotLTIyZDA2ZmU4ODUzOWJiOTlhYzllNmIwYmZiZGUwZWE1ZTRmY2QyZjBhMzhmNWEyMDE1YmViNWY3NjdkMy0tDQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -13698,10 +13906,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:59 GMT" + "Wed, 25 Jul 2018 18:23:38 GMT" ], "Etag": [ - "CIKPqbui99sCEAE=" + "CP2Sv9HvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -13717,7 +13925,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220499000" + "1532543317000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -13726,19 +13934,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrjn1:4228,/bns/yw/borg/yw/bns/blobstore2/bitpusher/627.scotty,acatli15:443" + "xiiadcay15:4104,/bns/xi/borg/xi/bns/blobstore2/bitpusher/108.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=p041W8OgCMfQhASqvYj4Bg" + "eid=KcBYW8KwI6u_swaTlJmwBg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/627.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/108.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -13747,13 +13955,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/627:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/108:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -13768,17 +13976,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqXdSkusGIs30LhiZHX1Y9mBKxxGWhGh3dhwRDwr8TwCgo2aufzTJK9q5PN9sjYk5XS5m7An6H6vyhHttrRhVxhI4YDRI3ugeR1WPh6OcyAyerIBIk" + "AEnB2UoNpnFpoVoomWq_UCeh53h7T1BUuAwyCVRDxc_tmhWaL64r_3HYCRhBa1-F5ChwSrSOYPcYg3NwMAzitBSGoNZKaudVfQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uIiwKICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1OS40MjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTkuNDI4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU5LjQyOFoiLAogInNpemUiOiAiMTEiLAogIm1kNUhhc2giOiAieHdXTkZhMFZkWFBtbEF3cmxjQUpjZz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24/Z2VuZXJhdGlvbj0xNTMwMjIwMTk5NDMwMDE4JmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk5NDMwMDE4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDSUtQcWJ1aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMDIyMDE5OTQzMDAxOC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDSUtQcWJ1aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMDIyMDE5OTQzMDAxOC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0lLUHFidWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0lLUHFidWk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogInIwTkdyZz09IiwKICJldGFnIjogIkNJS1BxYnVpOTlzQ0VBRT0iLAogImN1c3RvbWVyRW5jcnlwdGlvbiI6IHsKICAiZW5jcnlwdGlvbkFsZ29yaXRobSI6ICJBRVMyNTYiLAogICJrZXlTaGEyNTYiOiAiSCtMbW5YaFJvZUk2VE1XNWJzVjZIeVVrNnB5R2MySU1icVliQVhCY3BzMD0iCiB9Cn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uIiwKICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNy45MjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzcuOTI4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM3LjkyOFoiLAogInNpemUiOiAiMTEiLAogIm1kNUhhc2giOiAieHdXTkZhMFZkWFBtbEF3cmxjQUpjZz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24/Z2VuZXJhdGlvbj0xNTMyNTQzMDE3OTI5MDg1JmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3OTI5MDg1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDUDJTdjlIdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMjU0MzAxNzkyOTA4NS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDUDJTdjlIdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMjU0MzAxNzkyOTA4NS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ1AyU3Y5SHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ1AyU3Y5SHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogInIwTkdyZz09IiwKICJldGFnIjogIkNQMlN2OUh2dXR3Q0VBRT0iLAogImN1c3RvbWVyRW5jcnlwdGlvbiI6IHsKICAiZW5jcnlwdGlvbkFsZ29yaXRobSI6ICJBRVMyNTYiLAogICJrZXlTaGEyNTYiOiAiSCtMbW5YaFJvZUk2VE1XNWJzVjZIeVVrNnB5R2MySU1icVliQVhCY3BzMD0iCiB9Cn0K" } }, { - "ID": "371d81ec245776ad", + "ID": "fd41a9285b09277d", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -13791,13 +13999,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5717bbadeba43f6dcb9369c6c1793c3e/13752398305443799292;o=0" + "d55e5fdfaa3215c7655d8bf277424ef6/12320179120863997163;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -13806,7 +14014,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -13817,9 +14025,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -13831,10 +14041,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:59 GMT" + "Wed, 25 Jul 2018 18:23:38 GMT" ], "Etag": [ - "CIKPqbui99sCEAE=" + "CP2Sv9HvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -13850,7 +14060,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220499000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -13859,7 +14069,7 @@ "998958384336" ], "X-Google-Backends": [ - "vrnv1:4379,/bns/yw/borg/yw/bns/blobstore2/bitpusher/456.scotty,acatli15:443" + "xgiadabj12:4211,/bns/xi/borg/xi/bns/blobstore2/bitpusher/123.scotty,aclgag4:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -13868,10 +14078,10 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=p041W5TGIcSGhAS92oPIAw" + "eid=KsBYW8rJA4GGygPZjIDwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/456.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/123.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -13880,13 +14090,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/456:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/123:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -13901,17 +14111,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqreX95Wn8kj-CYOGECmSzSGcyMKtOoOgUgq5xb8hjZH02EJs7RPnNuLmE5lszAuSoildmyo-ukFZNufiAVn6X1ugqn6X5UbwWKSM6LhJD1jy_Mu0o" + "AEnB2UrIsqy64GDxmByUpl6wAtg4BD_uvEOoETvbNxYXNC2l-Fg0s9D65wxbDUGTZVcJ_bgflrj0r6wTAKFbFCETNlKdp418Pg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uIiwKICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1OS40MjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTkuNDI4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU5LjQyOFoiLAogInNpemUiOiAiMTEiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbj9nZW5lcmF0aW9uPTE1MzAyMjAxOTk0MzAwMTgmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMDIyMDE5OTQzMDAxOC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTk0MzAwMTgiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJS1BxYnVpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMwMjIwMTk5NDMwMDE4L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk5NDMwMDE4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJS1BxYnVpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMwMjIwMTk5NDMwMDE4L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk5NDMwMDE4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSUtQcWJ1aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMDIyMDE5OTQzMDAxOC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk5NDMwMDE4IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSUtQcWJ1aTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJldGFnIjogIkNJS1BxYnVpOTlzQ0VBRT0iLAogImN1c3RvbWVyRW5jcnlwdGlvbiI6IHsKICAiZW5jcnlwdGlvbkFsZ29yaXRobSI6ICJBRVMyNTYiLAogICJrZXlTaGEyNTYiOiAiSCtMbW5YaFJvZUk2VE1XNWJzVjZIeVVrNnB5R2MySU1icVliQVhCY3BzMD0iCiB9Cn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uIiwKICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNy45MjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzcuOTI4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM3LjkyOFoiLAogInNpemUiOiAiMTEiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbj9nZW5lcmF0aW9uPTE1MzI1NDMwMTc5MjkwODUmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMjU0MzAxNzkyOTA4NS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTc5MjkwODUiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNQMlN2OUh2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMyNTQzMDE3OTI5MDg1L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3OTI5MDg1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNQMlN2OUh2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMyNTQzMDE3OTI5MDg1L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3OTI5MDg1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDUDJTdjlIdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMjU0MzAxNzkyOTA4NS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3OTI5MDg1IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDUDJTdjlIdnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJldGFnIjogIkNQMlN2OUh2dXR3Q0VBRT0iLAogImN1c3RvbWVyRW5jcnlwdGlvbiI6IHsKICAiZW5jcnlwdGlvbkFsZ29yaXRobSI6ICJBRVMyNTYiLAogICJrZXlTaGEyNTYiOiAiSCtMbW5YaFJvZUk2VE1XNWJzVjZIeVVrNnB5R2MySU1icVliQVhCY3BzMD0iCiB9Cn0K" } }, { - "ID": "4eb70fcee77f753a", + "ID": "58808ecdb47fb585", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -13924,13 +14134,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b7977dc8db30e9f63f8e1a20c075173c/15295475744116433691;o=0" + "3c249efd768fcf8fed2923abc80ed7d8/1442622045469404423;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -13939,7 +14149,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -13959,9 +14169,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -13973,10 +14185,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:59 GMT" + "Wed, 25 Jul 2018 18:23:38 GMT" ], "Etag": [ - "CIKPqbui99sCEAE=" + "CP2Sv9HvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -13992,7 +14204,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220499000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -14001,7 +14213,7 @@ "998958384336" ], "X-Google-Backends": [ - "vrbk123:4181,/bns/yw/borg/yw/bns/blobstore2/bitpusher/485.scotty,acatli15:443" + "xiiadcbm4:4122,/bns/xi/borg/xi/bns/blobstore2/bitpusher/71.scotty,aclgag4:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -14010,10 +14222,10 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=p041W8CZJtPFhgTc2byYBg" + "eid=KsBYW6vmB-u5swaj8KQw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/485.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/71.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -14022,13 +14234,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/485:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/71:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -14043,17 +14255,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrHoFZefGRruC4qMn7-dXFwwWh8a5O0tNPBSnmZGlCNGwtfuKKh2iThpGt9H0e6_mdKZc5-v0P4luJ-ekS04KMD1zlaf95OYyc4maNFFnLNRg4pBXc" + "AEnB2UpJisqQVUFL79mgSu3-VUf4VEhKZFGiFd8RMe25TdywWfMYRxQUuvt7p6DAfsQSCJVEFJOH3DMKXysXLoujNEJWL-SR8A" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uIiwKICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1OS40MjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTkuNDI4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU5LjQyOFoiLAogInNpemUiOiAiMTEiLAogIm1kNUhhc2giOiAieHdXTkZhMFZkWFBtbEF3cmxjQUpjZz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24/Z2VuZXJhdGlvbj0xNTMwMjIwMTk5NDMwMDE4JmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk5NDMwMDE4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDSUtQcWJ1aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMDIyMDE5OTQzMDAxOC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDSUtQcWJ1aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMDIyMDE5OTQzMDAxOC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0lLUHFidWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0lLUHFidWk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogInIwTkdyZz09IiwKICJldGFnIjogIkNJS1BxYnVpOTlzQ0VBRT0iLAogImN1c3RvbWVyRW5jcnlwdGlvbiI6IHsKICAiZW5jcnlwdGlvbkFsZ29yaXRobSI6ICJBRVMyNTYiLAogICJrZXlTaGEyNTYiOiAiSCtMbW5YaFJvZUk2VE1XNWJzVjZIeVVrNnB5R2MySU1icVliQVhCY3BzMD0iCiB9Cn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uIiwKICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNy45MjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzcuOTI4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM3LjkyOFoiLAogInNpemUiOiAiMTEiLAogIm1kNUhhc2giOiAieHdXTkZhMFZkWFBtbEF3cmxjQUpjZz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24/Z2VuZXJhdGlvbj0xNTMyNTQzMDE3OTI5MDg1JmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3OTI5MDg1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDUDJTdjlIdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMjU0MzAxNzkyOTA4NS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDUDJTdjlIdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMjU0MzAxNzkyOTA4NS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ1AyU3Y5SHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ1AyU3Y5SHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogInIwTkdyZz09IiwKICJldGFnIjogIkNQMlN2OUh2dXR3Q0VBRT0iLAogImN1c3RvbWVyRW5jcnlwdGlvbiI6IHsKICAiZW5jcnlwdGlvbkFsZ29yaXRobSI6ICJBRVMyNTYiLAogICJrZXlTaGEyNTYiOiAiSCtMbW5YaFJvZUk2VE1XNWJzVjZIeVVrNnB5R2MySU1icVliQVhCY3BzMD0iCiB9Cn0K" } }, { - "ID": "a57e85fd3b1cfaea", + "ID": "5d526677b4073510", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -14072,13 +14284,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "79ac7f9febfe9df03ac3c60148a63fc1/16910610776810153531;o=0" + "343287c883c7d3864e6a4106b84ad531/9083585162828738084;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -14087,20 +14299,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -14112,10 +14326,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:09:59 GMT" + "Wed, 25 Jul 2018 18:23:38 GMT" ], "Etag": [ - "CIKPqbui99sCEAI=" + "CP2Sv9HvutwCEAI=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -14131,7 +14345,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220499000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -14140,16 +14354,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrnd9:4058,/bns/yw/borg/yw/bns/blobstore2/bitpusher/377.scotty,acatli15:443" + "xgiadaay12:4070,/bns/xi/borg/xi/bns/blobstore2/bitpusher/7.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=p041W5CAK4TRhATJ_5PIDA" + "eid=KsBYW9yhDcGEygODroiYBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/377.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/7.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -14158,13 +14372,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/377:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/7:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -14179,17 +14393,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqOzpmt5l-YmRdi25NV92ucozZ7J9fWtYniJfZtuoH8c5wDNLNZatITzCc2MugTagvZEwWRS0Q-dNtCQi_Z4BV3XJ0wJqaadJs3JD5MIXuL10BX7oM" + "AEnB2UquE7zC_xOmYjYj_m_2hrhHYhQ0sOPpOpe04WTv07a4YkZlzxCeVKNrgtmQJEJnYE6dQ91Q7fkutrBPPMJTMyvKsS4njA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uIiwKICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1OS40MjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTkuNzc3WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU5LjQyOFoiLAogInNpemUiOiAiMTEiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbj9nZW5lcmF0aW9uPTE1MzAyMjAxOTk0MzAwMTgmYWx0PW1lZGlhIiwKICJjb250ZW50TGFuZ3VhZ2UiOiAiZW4iLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMwMjIwMTk5NDMwMDE4L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0lLUHFidWk5OXNDRUFJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTk0MzAwMTgiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0lLUHFidWk5OXNDRUFJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTk0MzAwMTgiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNJS1BxYnVpOTlzQ0VBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMwMjIwMTk5NDMwMDE4L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTk0MzAwMTgiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNJS1BxYnVpOTlzQ0VBST0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImV0YWciOiAiQ0lLUHFidWk5OXNDRUFJPSIsCiAiY3VzdG9tZXJFbmNyeXB0aW9uIjogewogICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgImtleVNoYTI1NiI6ICJIK0xtblhoUm9lSTZUTVc1YnNWNkh5VWs2cHlHYzJJTWJxWWJBWEJjcHMwPSIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uIiwKICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNy45MjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzguMjk2WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM3LjkyOFoiLAogInNpemUiOiAiMTEiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbj9nZW5lcmF0aW9uPTE1MzI1NDMwMTc5MjkwODUmYWx0PW1lZGlhIiwKICJjb250ZW50TGFuZ3VhZ2UiOiAiZW4iLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMyNTQzMDE3OTI5MDg1L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ1AyU3Y5SHZ1dHdDRUFJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTc5MjkwODUiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ1AyU3Y5SHZ1dHdDRUFJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTc5MjkwODUiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNQMlN2OUh2dXR3Q0VBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMyNTQzMDE3OTI5MDg1L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTc5MjkwODUiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNQMlN2OUh2dXR3Q0VBST0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImV0YWciOiAiQ1AyU3Y5SHZ1dHdDRUFJPSIsCiAiY3VzdG9tZXJFbmNyeXB0aW9uIjogewogICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgImtleVNoYTI1NiI6ICJIK0xtblhoUm9lSTZUTVc1YnNWNkh5VWs2cHlHYzJJTWJxWWJBWEJjcHMwPSIKIH0KfQo=" } }, { - "ID": "2926e09274bd218e", + "ID": "36a311f22a1634af", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -14208,13 +14422,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d454d2809ba7dd7e297b12ea54b82b20/7225616749947226;o=0" + "7a1108d06b8066d601c1a8bc45d72d9a/16724547184988188480;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -14223,7 +14437,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -14238,14 +14452,16 @@ "H+LmnXhRoeI6TMW5bsV6HyUk6pyGc2IMbqYbAXBcps0=" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -14257,10 +14473,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:00 GMT" + "Wed, 25 Jul 2018 18:23:38 GMT" ], "Etag": [ - "CIKPqbui99sCEAM=" + "CP2Sv9HvutwCEAM=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -14276,7 +14492,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220499000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -14285,16 +14501,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrjt17:4254,/bns/yw/borg/yw/bns/blobstore2/bitpusher/114.scotty,acatli15:443" + "xiiadcbi14:4273,/bns/xi/borg/xi/bns/blobstore2/bitpusher/95.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=p041W8C5N8buhAS64LzQCA" + "eid=KsBYW6XfGKy0swbR3ovADQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/114.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/95.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -14303,13 +14519,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/114:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/95:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -14324,17 +14540,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoIy1F234ITAjMGrfM_0b0JRoFg_x9umNWLbw2b_Or4NMkuiC7b-Q5G-Ot6SVU_nQV-kl1HA3F5dWhf-BGDGUxL9nWTTVKDpiV1WzL17yttSlstf6Y" + "AEnB2UppKgYcZaTZPOno6YYTeMmvy0WPGaHI1903UWPe325oJJhX0TkDEmupAoUZVEzyiX3g4MZUTO4b8fnNs3_y5BxM00iePg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uIiwKICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMyIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo1OS40MjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTkuOTgzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU5LjQyOFoiLAogInNpemUiOiAiMTEiLAogIm1kNUhhc2giOiAieHdXTkZhMFZkWFBtbEF3cmxjQUpjZz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24/Z2VuZXJhdGlvbj0xNTMwMjIwMTk5NDMwMDE4JmFsdD1tZWRpYSIsCiAiY29udGVudExhbmd1YWdlIjogImVuIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMDIyMDE5OTQzMDAxOC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTk0MzAwMTgiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJS1BxYnVpOTlzQ0VBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMwMjIwMTk5NDMwMDE4L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk5NDMwMDE4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJS1BxYnVpOTlzQ0VBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMwMjIwMTk5NDMwMDE4L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk5NDMwMDE4IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSUtQcWJ1aTk5c0NFQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMDIyMDE5OTQzMDAxOC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk5NDMwMDE4IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSUtQcWJ1aTk5c0NFQU09IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAicjBOR3JnPT0iLAogImV0YWciOiAiQ0lLUHFidWk5OXNDRUFNPSIsCiAiY3VzdG9tZXJFbmNyeXB0aW9uIjogewogICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgImtleVNoYTI1NiI6ICJIK0xtblhoUm9lSTZUTVc1YnNWNkh5VWs2cHlHYzJJTWJxWWJBWEJjcHMwPSIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uIiwKICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMyIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNy45MjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MzguNTIxWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM3LjkyOFoiLAogInNpemUiOiAiMTEiLAogIm1kNUhhc2giOiAieHdXTkZhMFZkWFBtbEF3cmxjQUpjZz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24/Z2VuZXJhdGlvbj0xNTMyNTQzMDE3OTI5MDg1JmFsdD1tZWRpYSIsCiAiY29udGVudExhbmd1YWdlIjogImVuIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMjU0MzAxNzkyOTA4NS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTc5MjkwODUiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNQMlN2OUh2dXR3Q0VBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMyNTQzMDE3OTI5MDg1L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3OTI5MDg1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNQMlN2OUh2dXR3Q0VBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMyNTQzMDE3OTI5MDg1L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3OTI5MDg1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDUDJTdjlIdnV0d0NFQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMjU0MzAxNzkyOTA4NS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3OTI5MDg1IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDUDJTdjlIdnV0d0NFQU09IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAicjBOR3JnPT0iLAogImV0YWciOiAiQ1AyU3Y5SHZ1dHdDRUFNPSIsCiAiY3VzdG9tZXJFbmNyeXB0aW9uIjogewogICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgImtleVNoYTI1NiI6ICJIK0xtblhoUm9lSTZUTVc1YnNWNkh5VWs2cHlHYzJJTWJxWWJBWEJjcHMwPSIKIH0KfQo=" } }, { - "ID": "39306d07e8b20900", + "ID": "4f966173e198bc87", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -14347,13 +14563,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "7d7816f203a873d196cc4a87fd1843f0/1622359545653914746;o=0" + "31b5a4f42dcae029ea98d3d005428655/5919047703614681181;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -14362,7 +14578,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption" ] }, "Body": "" @@ -14370,9 +14586,11 @@ "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -14384,28 +14602,28 @@ "application/xml; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:00 GMT" + "Wed, 25 Jul 2018 18:23:38 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:00 GMT" + "Wed, 25 Jul 2018 18:23:38 GMT" ], "Server": [ "UploadServer" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/10,/bns/xg/borg/xg/bns/blobstore2/bitpusher/40.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/31,/bns/yb/borg/yb/bns/blobstore2/bitpusher/797.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=qE41W7DKBue3_QS0wLWABw" + "eid=KsBYW9rGJ8WzlAHKlZXYBw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/40.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/797.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -14414,13 +14632,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/40:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/797:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Guploader-Customer": [ "cloud-storage" @@ -14432,17 +14650,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UolfdzStX-wAFl0LuRdl_1swWi0qR8youtSqWG4lefiz1Jx_PZP39ROzfuXFkBHqyYOdSxusNC9DnZgACtW2EaPnZACRg" + "AEnB2UqC_Jsi8jwVsMcv34r01EaiYJD4-zDDLA9YzIZmvG_yG2qHkG7FlxTDXQrOy020SQQaOFV92xae5_0Ja_gsiFafkVoKtMutkyzBLHLP8HSBflKknzA" ] }, "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+UmVzb3VyY2VJc0VuY3J5cHRlZFdpdGhDdXN0b21lckVuY3J5cHRpb25LZXk8L0NvZGU+PE1lc3NhZ2U+VGhlIHJlc291cmNlIGlzIGVuY3J5cHRlZCB3aXRoIGEgY3VzdG9tZXIgZW5jcnlwdGlvbiBrZXkuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LjwvRGV0YWlscz48L0Vycm9yPg==" } }, { - "ID": "fe458b2bd9a01e7a", + "ID": "f93d5182c10dc0b5", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -14455,13 +14673,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f64656d03e6a0b592a632b7e35ab4186/3237493478852849561;o=0" + "bdde22738c81e4e837ce4c85011c3b19/13560010820974080377;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -14470,7 +14688,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption" ], "X-Goog-Encryption-Algorithm": [ "AES256" @@ -14487,12 +14705,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -14507,16 +14727,16 @@ "text/plain; charset=utf-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:00 GMT" + "Wed, 25 Jul 2018 18:23:38 GMT" ], "Etag": [ - "\"-CIKPqbui99sCEAM=\"" + "\"-CP2Sv9HvutwCEAM=\"" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:09:59 GMT" + "Wed, 25 Jul 2018 18:23:37 GMT" ], "Pragma": [ "no-cache" @@ -14531,10 +14751,10 @@ "H+LmnXhRoeI6TMW5bsV6HyUk6pyGc2IMbqYbAXBcps0=" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:09:59 GMT" + "Fri, 24 Aug 2018 18:23:37 GMT" ], "X-Goog-Generation": [ - "1530220199430018" + "1532543017929085" ], "X-Goog-Hash": [ "crc32c=r0NGrg==", @@ -14553,7 +14773,7 @@ "11" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/27,/bns/xg/borg/xg/bns/blobstore2/bitpusher/147.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/158,/bns/yb/borg/yb/bns/blobstore2/bitpusher/14.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -14562,13 +14782,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=qE41W6qiCq26_QTjx5L4CA" + "eid=KsBYW77NK9e-lAG6wbywDg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/147.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/14.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -14577,13 +14797,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/147:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/14:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -14598,17 +14818,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UolqAOK8woLeIpHzh90968j-oxlfGoRaMdpM6p35Poyh3bGCzJ8W2R2OVOQghZBmQOmm9SJGCI9i1dIymrOZO8WhzIV0g" + "AEnB2UqlAzF8N9ysYRje8oYKVC0Oalr39Mvt1y0ukpPY4sL115zPi-56oyy6QL5xXlBGHQFRqRkAYhG6ipoZEKgkq622joWWc0MrmCKBVtXxIVZk-gbuQ_A" ] }, "Body": "dG9wIHNlY3JldC4=" } }, { - "ID": "df90fab289df0948", + "ID": "28c1915d503f9694", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -14627,13 +14847,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "be85febb27f4425b9090ea835c7a124d/4780290546338525881;o=0" + "9904c9ac44ff11cf812fa359fec1ad73/2754510240105722518;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -14642,7 +14862,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -14653,9 +14873,11 @@ "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "14415" @@ -14664,7 +14886,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:00 GMT" + "Wed, 25 Jul 2018 18:23:39 GMT" ], "Server": [ "UploadServer" @@ -14674,7 +14896,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220500000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -14683,16 +14905,16 @@ "998958384336" ], "X-Google-Backends": [ - "vreu9:4494,/bns/yw/borg/yw/bns/blobstore2/bitpusher/94.scotty,acatli15:443" + "xgiadaaj8:4280,/bns/xi/borg/xi/bns/blobstore2/bitpusher/134.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=qE41W_H-EMKKhATFuJ7wBw" + "eid=KsBYW-i2Mcq9swamsaLwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/94.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/134.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -14701,13 +14923,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/94:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/134:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -14722,17 +14944,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoXlpkGnK60K9y_ZFvw8x9xs6uYpDbZQrlZUL9QEtro6WOsFo1yufSZF-PfCVC2oY83qisBMQAp-8FaBbCw10pQ2Uy84HhaHOxKAhwP0JSCVnz_G7w" + "AEnB2Uq5CAKF6dYmzvfNT0IEeB-oL8XnVfDdvDjbB2uQMI0dy0Zyw4JOTTL1zVdnJrhrCgcg5X3dynC__CoqG36aVy1sdPKewA" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVzb3VyY2VJc0VuY3J5cHRlZFdpdGhDdXN0b21lckVuY3J5cHRpb25LZXkiLAogICAgIm1lc3NhZ2UiOiAiVGhlIHRhcmdldCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuIiwKICAgICJleHRlbmRlZEhlbHAiOiAiaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL3N0b3JhZ2UvZG9jcy9lbmNyeXB0aW9uI2N1c3RvbWVyLXN1cHBsaWVkX2VuY3J5cHRpb25fa2V5cyIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMxMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnJld3JpdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyNClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24udmFsaWRhdGVTb3VyY2VFbmNyeXB0aW9uKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6NTg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5QcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5ydW4oUHJlcGFyZVJld3JpdGVPcGVyYXRpb24uamF2YTozMzApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3RJbnRlcm5hbChSZXdyaXRlci5qYXZhOjM1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdChSZXdyaXRlci5qYXZhOjMyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QucmV3cml0ZUluRnJvbnRlbmQoUmV3cml0ZU9iamVjdC5qYXZhOjIyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YToyMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6NTIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0Li4uIDE0IG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUlOVkFMSURfVkFMVUUsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnZhbGlkYXRlU291cmNlRW5jcnlwdGlvbihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjU4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24ucnVuKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6MzMwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0SW50ZXJuYWwoUmV3cml0ZXIuamF2YTozNTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1odHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL2VuY3J5cHRpb24jY3VzdG9tZXItc3VwcGxpZWRfZW5jcnlwdGlvbl9rZXlzLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnZhbGlkYXRlU291cmNlRW5jcnlwdGlvbihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjU4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24ucnVuKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6MzMwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0SW50ZXJuYWwoUmV3cml0ZXIuamF2YTozNTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBlcnJvclByb3RvRG9tYWluPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1udWxsLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1UaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4sIHJlYXNvbj1yZXNvdXJjZUlzRW5jcnlwdGVkV2l0aEN1c3RvbWVyRW5jcnlwdGlvbktleSwgcnBjQ29kZT00MDB9IFRoZSB0YXJnZXQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzExKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IucmV3cml0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5QcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi52YWxpZGF0ZVNvdXJjZUVuY3J5cHRpb24oUHJlcGFyZVJld3JpdGVPcGVyYXRpb24uamF2YTo1ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnJ1bihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjMzMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdEludGVybmFsKFJld3JpdGVyLmphdmE6MzU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0KFJld3JpdGVyLmphdmE6MzI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5yZXdyaXRlSW5Gcm9udGVuZChSZXdyaXRlT2JqZWN0LmphdmE6MjI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjIwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YTo1Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHQuLi4gMTQgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJUaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4iCiB9Cn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVzb3VyY2VJc0VuY3J5cHRlZFdpdGhDdXN0b21lckVuY3J5cHRpb25LZXkiLAogICAgIm1lc3NhZ2UiOiAiVGhlIHRhcmdldCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuIiwKICAgICJleHRlbmRlZEhlbHAiOiAiaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL3N0b3JhZ2UvZG9jcy9lbmNyeXB0aW9uI2N1c3RvbWVyLXN1cHBsaWVkX2VuY3J5cHRpb25fa2V5cyIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMxMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnJld3JpdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyNClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24udmFsaWRhdGVTb3VyY2VFbmNyeXB0aW9uKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6NTg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5QcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5ydW4oUHJlcGFyZVJld3JpdGVPcGVyYXRpb24uamF2YTozMzApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3RJbnRlcm5hbChSZXdyaXRlci5qYXZhOjM1NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdChSZXdyaXRlci5qYXZhOjMyNClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QucmV3cml0ZUluRnJvbnRlbmQoUmV3cml0ZU9iamVjdC5qYXZhOjIyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YToyMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6NTIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0Li4uIDE0IG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUlOVkFMSURfVkFMVUUsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnZhbGlkYXRlU291cmNlRW5jcnlwdGlvbihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjU4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24ucnVuKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6MzMwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0SW50ZXJuYWwoUmV3cml0ZXIuamF2YTozNTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1odHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL2VuY3J5cHRpb24jY3VzdG9tZXItc3VwcGxpZWRfZW5jcnlwdGlvbl9rZXlzLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnZhbGlkYXRlU291cmNlRW5jcnlwdGlvbihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjU4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24ucnVuKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6MzMwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0SW50ZXJuYWwoUmV3cml0ZXIuamF2YTozNTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBlcnJvclByb3RvRG9tYWluPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1udWxsLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1UaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4sIHJlYXNvbj1yZXNvdXJjZUlzRW5jcnlwdGVkV2l0aEN1c3RvbWVyRW5jcnlwdGlvbktleSwgcnBjQ29kZT00MDB9IFRoZSB0YXJnZXQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzExKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IucmV3cml0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5QcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi52YWxpZGF0ZVNvdXJjZUVuY3J5cHRpb24oUHJlcGFyZVJld3JpdGVPcGVyYXRpb24uamF2YTo1ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnJ1bihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjMzMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdEludGVybmFsKFJld3JpdGVyLmphdmE6MzU0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0KFJld3JpdGVyLmphdmE6MzI0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5yZXdyaXRlSW5Gcm9udGVuZChSZXdyaXRlT2JqZWN0LmphdmE6MjI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjIwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YTo1Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHQuLi4gMTQgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJUaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4iCiB9Cn0K" } }, { - "ID": "0bfe74a87eed41bd", + "ID": "3c0a99a209d461e2", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -14751,13 +14973,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "36e8b255175f1af08a2f293ad6951ad0/6395424475242558936;o=0" + "0d7dd32ea3b1a4a0659a8161e626c794/10395191891078280114;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -14766,7 +14988,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -14786,9 +15008,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -14800,7 +15024,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:01 GMT" + "Wed, 25 Jul 2018 18:23:39 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -14816,7 +15040,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220500000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -14825,16 +15049,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqi11:4293,/bns/yw/borg/yw/bns/blobstore2/bitpusher/68.scotty,acatli15:443" + "xiiadccb5:4366,/bns/xi/borg/xi/bns/blobstore2/bitpusher/76.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=qE41W6jAIIaihQTOw5HwBg" + "eid=K8BYW5xXsLmzBorWmfgJ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/68.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/76.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -14843,13 +15067,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/68:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/76:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -14864,17 +15088,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uql8nyy24U3c7ik54Hzc8E_nZErbg4ho9H0jwtsR6KnlbmLWAaBpeZ5IlRYSXRx6XrmTWzZmD7tvb5Bjy5etY5T-gt7AfAoMuCAmcMXszpGHXZTnFM" + "AEnB2UqOciRF8Rf2icl1S7tA3kj-9NxOo0-jlyVppNPx4f267xJfV4TMGrnijkLWY4vMdt7wls3EoncColBkIECC5k9Sewz8Ig" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTEiLAogIm9iamVjdFNpemUiOiAiMTEiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjAxMTIxMjE2IiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgIm5hbWUiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwMTEyMTIxNiIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowMS4xMTlaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjAxLjExOVoiLAogICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjAxLjExOVoiLAogICJzaXplIjogIjExIiwKICAibWQ1SGFzaCI6ICJ4d1dORmEwVmRYUG1sQXdybGNBSmNnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMj9nZW5lcmF0aW9uPTE1MzAyMjAyMDExMjEyMTYmYWx0PW1lZGlhIiwKICAiY29udGVudExhbmd1YWdlIjogImVuIiwKICAiYWNsIjogWwogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMDIyMDIwMTEyMTIxNi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTIiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwMTEyMTIxNiIsCiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAib3duZXJzIgogICAgfSwKICAgICJldGFnIjogIkNNQ3JrTHlpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjAxMTIxMjE2L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDExMjEyMTYiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgfSwKICAgICJldGFnIjogIkNNQ3JrTHlpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjAxMTIxMjE2L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDExMjEyMTYiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiUkVBREVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAidmlld2VycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDTUNya0x5aTk5c0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMDIyMDIwMTEyMTIxNi91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDExMjEyMTYiLAogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiZXRhZyI6ICJDTUNya0x5aTk5c0NFQUU9IgogICB9CiAgXSwKICAib3duZXIiOiB7CiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICB9LAogICJjcmMzMmMiOiAicjBOR3JnPT0iLAogICJldGFnIjogIkNNQ3JrTHlpOTlzQ0VBRT0iCiB9Cn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTEiLAogIm9iamVjdFNpemUiOiAiMTEiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDE5NzY4MjgzIiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgIm5hbWUiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxOTc2ODI4MyIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozOS43NjhaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM5Ljc2OFoiLAogICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM5Ljc2OFoiLAogICJzaXplIjogIjExIiwKICAibWQ1SGFzaCI6ICJ4d1dORmEwVmRYUG1sQXdybGNBSmNnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMj9nZW5lcmF0aW9uPTE1MzI1NDMwMTk3NjgyODMmYWx0PW1lZGlhIiwKICAiY29udGVudExhbmd1YWdlIjogImVuIiwKICAiYWNsIjogWwogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMjU0MzAxOTc2ODI4My9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTIiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxOTc2ODI4MyIsCiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAib3duZXJzIgogICAgfSwKICAgICJldGFnIjogIkNOdXpyOUx2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDE5NzY4MjgzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTk3NjgyODMiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgfSwKICAgICJldGFnIjogIkNOdXpyOUx2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDE5NzY4MjgzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTk3NjgyODMiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiUkVBREVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAidmlld2VycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDTnV6cjlMdnV0d0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMjU0MzAxOTc2ODI4My91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTk3NjgyODMiLAogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiZXRhZyI6ICJDTnV6cjlMdnV0d0NFQUU9IgogICB9CiAgXSwKICAib3duZXIiOiB7CiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICB9LAogICJjcmMzMmMiOiAicjBOR3JnPT0iLAogICJldGFnIjogIkNOdXpyOUx2dXR3Q0VBRT0iCiB9Cn0K" } }, { - "ID": "c52c29d0fc0560a5", + "ID": "a721e505465a7f92", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption-2", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption-2", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -14887,13 +15111,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "ed31d0959d2856e13759a49d1e1fa00f/7938501913915128056;o=0" + "260e85661fde781ca401a8cc29e0c8ba/18036153908942763215;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -14902,7 +15126,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption-2" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption-2" ] }, "Body": "" @@ -14910,12 +15134,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -14930,25 +15156,25 @@ "text/plain; charset=utf-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:01 GMT" + "Wed, 25 Jul 2018 18:23:39 GMT" ], "Etag": [ "\"c7058d15ad157573e6940c2b95c00972\"" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:01 GMT" + "Wed, 25 Jul 2018 18:23:39 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:10:01 GMT" + "Wed, 25 Jul 2018 18:23:39 GMT" ], "Server": [ "UploadServer" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:10:01 GMT" + "Fri, 24 Aug 2018 18:23:39 GMT" ], "X-Goog-Generation": [ - "1530220201121216" + "1532543019768283" ], "X-Goog-Hash": [ "crc32c=r0NGrg==", @@ -14967,7 +15193,7 @@ "11" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/1,/bns/xg/borg/xg/bns/blobstore2/bitpusher/49.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/312,/bns/yb/borg/yb/bns/blobstore2/bitpusher/999.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -14976,13 +15202,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=qU41W47IEKi0_QS5hYHYBw" + "eid=K8BYW6f0OoawlAHthZ-YDA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/49.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/999.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -14991,13 +15217,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/49:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/999:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -15012,17 +15238,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urt1LvXF92mwgf9esqXCmdHwAQpM9u5m14vWRsJpnjqz41h10pofdTzqW2lR8H1rgSVrSmcVU9rtdsbuVUIqGC6bhKPkA" + "AEnB2UpLk3H3nAU1_cdfyPe8-N6FX8Ae2laoRqBv7p4oF4gzePAydLiohwxJlkru_lXBZxAbrMQ_eDvN16ciunBNXngHlcfdpw" ] }, "Body": "dG9wIHNlY3JldC4=" } }, { - "ID": "9588fa1690d3ce7b", + "ID": "ec9e1289525a1949", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -15041,13 +15267,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "397fc42482369505af1538e4c22cd5f1/9553635847114062615;o=0" + "dc80be488270431e36683aa5d40c48a7/7230654427569321451;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -15056,7 +15282,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -15076,9 +15302,11 @@ "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "14415" @@ -15087,7 +15315,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:01 GMT" + "Wed, 25 Jul 2018 18:23:40 GMT" ], "Server": [ "UploadServer" @@ -15097,7 +15325,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220500000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -15106,16 +15334,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrjm11:4231,/bns/yw/borg/yw/bns/blobstore2/bitpusher/265.scotty,acatli15:443" + "xgiadaba15:4126,/bns/xi/borg/xi/bns/blobstore2/bitpusher/58.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=qU41W421FoObhATkprbADg" + "eid=LMBYW8XDA9C3swaYoYGgCA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/265.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/58.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -15124,13 +15352,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/265:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/58:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -15145,17 +15373,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Ur66aoFNFzb9iRinfsN3nke7iwYup3ylBhDXfBoJ72CRNpAtX7dupHKYb4X2uZNSFPCkke9y7L3Uo5gdjqnZpIjQHH_KM52n_hGw4tY1zs0SuSqn6g" + "AEnB2UqO4dEOV0PPeeyCu3y29JlM1ao50dKz6v5ra65U2NDM5t5lLjSP-lGSK_ZF8dzgl2FqJrZWu1pDnwyLXbOANalwczC6ew" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVzb3VyY2VJc0VuY3J5cHRlZFdpdGhDdXN0b21lckVuY3J5cHRpb25LZXkiLAogICAgIm1lc3NhZ2UiOiAiVGhlIHRhcmdldCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuIiwKICAgICJleHRlbmRlZEhlbHAiOiAiaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL3N0b3JhZ2UvZG9jcy9lbmNyeXB0aW9uI2N1c3RvbWVyLXN1cHBsaWVkX2VuY3J5cHRpb25fa2V5cyIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMxMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnJld3JpdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyNClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24udmFsaWRhdGVTb3VyY2VFbmNyeXB0aW9uKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6NTg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5QcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5ydW4oUHJlcGFyZVJld3JpdGVPcGVyYXRpb24uamF2YTozMzApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3RJbnRlcm5hbChSZXdyaXRlci5qYXZhOjM1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdChSZXdyaXRlci5qYXZhOjMyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QucmV3cml0ZUluRnJvbnRlbmQoUmV3cml0ZU9iamVjdC5qYXZhOjIyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YToyMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6NTIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0Li4uIDE0IG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUlOVkFMSURfVkFMVUUsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnZhbGlkYXRlU291cmNlRW5jcnlwdGlvbihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjU4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24ucnVuKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6MzMwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0SW50ZXJuYWwoUmV3cml0ZXIuamF2YTozNTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1odHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL2VuY3J5cHRpb24jY3VzdG9tZXItc3VwcGxpZWRfZW5jcnlwdGlvbl9rZXlzLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnZhbGlkYXRlU291cmNlRW5jcnlwdGlvbihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjU4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24ucnVuKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6MzMwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0SW50ZXJuYWwoUmV3cml0ZXIuamF2YTozNTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBlcnJvclByb3RvRG9tYWluPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1udWxsLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1UaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4sIHJlYXNvbj1yZXNvdXJjZUlzRW5jcnlwdGVkV2l0aEN1c3RvbWVyRW5jcnlwdGlvbktleSwgcnBjQ29kZT00MDB9IFRoZSB0YXJnZXQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzExKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IucmV3cml0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5QcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi52YWxpZGF0ZVNvdXJjZUVuY3J5cHRpb24oUHJlcGFyZVJld3JpdGVPcGVyYXRpb24uamF2YTo1ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnJ1bihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjMzMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdEludGVybmFsKFJld3JpdGVyLmphdmE6MzU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0KFJld3JpdGVyLmphdmE6MzI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5yZXdyaXRlSW5Gcm9udGVuZChSZXdyaXRlT2JqZWN0LmphdmE6MjI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjIwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YTo1Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHQuLi4gMTQgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJUaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4iCiB9Cn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVzb3VyY2VJc0VuY3J5cHRlZFdpdGhDdXN0b21lckVuY3J5cHRpb25LZXkiLAogICAgIm1lc3NhZ2UiOiAiVGhlIHRhcmdldCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuIiwKICAgICJleHRlbmRlZEhlbHAiOiAiaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL3N0b3JhZ2UvZG9jcy9lbmNyeXB0aW9uI2N1c3RvbWVyLXN1cHBsaWVkX2VuY3J5cHRpb25fa2V5cyIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMxMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnJld3JpdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyNClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24udmFsaWRhdGVTb3VyY2VFbmNyeXB0aW9uKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6NTg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5QcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5ydW4oUHJlcGFyZVJld3JpdGVPcGVyYXRpb24uamF2YTozMzApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3RJbnRlcm5hbChSZXdyaXRlci5qYXZhOjM1NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdChSZXdyaXRlci5qYXZhOjMyNClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QucmV3cml0ZUluRnJvbnRlbmQoUmV3cml0ZU9iamVjdC5qYXZhOjIyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YToyMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6NTIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0Li4uIDE0IG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUlOVkFMSURfVkFMVUUsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnZhbGlkYXRlU291cmNlRW5jcnlwdGlvbihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjU4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24ucnVuKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6MzMwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0SW50ZXJuYWwoUmV3cml0ZXIuamF2YTozNTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1odHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL2VuY3J5cHRpb24jY3VzdG9tZXItc3VwcGxpZWRfZW5jcnlwdGlvbl9rZXlzLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnZhbGlkYXRlU291cmNlRW5jcnlwdGlvbihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjU4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUHJlcGFyZVJld3JpdGVPcGVyYXRpb24ucnVuKFByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLmphdmE6MzMwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0SW50ZXJuYWwoUmV3cml0ZXIuamF2YTozNTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBlcnJvclByb3RvRG9tYWluPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1udWxsLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1UaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4sIHJlYXNvbj1yZXNvdXJjZUlzRW5jcnlwdGVkV2l0aEN1c3RvbWVyRW5jcnlwdGlvbktleSwgcnBjQ29kZT00MDB9IFRoZSB0YXJnZXQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzExKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IucmV3cml0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5QcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi52YWxpZGF0ZVNvdXJjZUVuY3J5cHRpb24oUHJlcGFyZVJld3JpdGVPcGVyYXRpb24uamF2YTo1ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlByZXBhcmVSZXdyaXRlT3BlcmF0aW9uLnJ1bihQcmVwYXJlUmV3cml0ZU9wZXJhdGlvbi5qYXZhOjMzMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdEludGVybmFsKFJld3JpdGVyLmphdmE6MzU0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0KFJld3JpdGVyLmphdmE6MzI0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5yZXdyaXRlSW5Gcm9udGVuZChSZXdyaXRlT2JqZWN0LmphdmE6MjI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjIwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YTo1Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHQuLi4gMTQgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJUaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4iCiB9Cn0K" } }, { - "ID": "88546f1c3da9cd5f", + "ID": "e5ff54cdadff4c0d", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -15174,13 +15402,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5848140aaf3d8d614406c698872eb038/11168770879807782455;o=0" + "6b08983f37c13dd7b80ed10c099c6dde/14871616445433804296;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -15189,7 +15417,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -15218,9 +15446,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -15232,7 +15462,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:02 GMT" + "Wed, 25 Jul 2018 18:23:41 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -15248,7 +15478,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220501000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -15257,16 +15487,16 @@ "998958384336" ], "X-Google-Backends": [ - "vran9:4304,/bns/yw/borg/yw/bns/blobstore2/bitpusher/372.scotty,acatli15:443" + "xgiadabn7:4375,/bns/xi/borg/xi/bns/blobstore2/bitpusher/97.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=qU41W-71JdbshgThiaaoCQ" + "eid=LMBYW8PTEoyzswa9zLiYAQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/372.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/97.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -15275,13 +15505,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/372:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/97:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -15296,17 +15526,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpNP9NRLaSXiqH5dTkf6a7oWUTFaYNaIUvt9m39E3KsmpM_u16PADADA8HqaVu4NphcHg9YUk5qVQVfFViJ6Qs-iRhbmwa8jvKssI-1aGZqObn-LzA" + "AEnB2UoUGsb7-FbVp0lfZMOvIVN3wPP_NnF9NYDN_TLDNMbBMO1ul5jy1Gxq0vPYikKejv7RMTmp15PQ6PVRHsfswjWLP7AgSQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTEiLAogIm9iamVjdFNpemUiOiAiMTEiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjAyMTIwMDA1IiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgIm5hbWUiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwMjEyMDAwNSIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowMi4xMThaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjAyLjExOFoiLAogICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjAyLjExOFoiLAogICJzaXplIjogIjExIiwKICAibWQ1SGFzaCI6ICJ4d1dORmEwVmRYUG1sQXdybGNBSmNnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMj9nZW5lcmF0aW9uPTE1MzAyMjAyMDIxMjAwMDUmYWx0PW1lZGlhIiwKICAiY29udGVudExhbmd1YWdlIjogImVuIiwKICAiYWNsIjogWwogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMDIyMDIwMjEyMDAwNS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTIiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwMjEyMDAwNSIsCiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAib3duZXJzIgogICAgfSwKICAgICJldGFnIjogIkNNV216YnlpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjAyMTIwMDA1L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDIxMjAwMDUiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgfSwKICAgICJldGFnIjogIkNNV216YnlpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjAyMTIwMDA1L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDIxMjAwMDUiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiUkVBREVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAidmlld2VycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDTVdtemJ5aTk5c0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMDIyMDIwMjEyMDAwNS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDIxMjAwMDUiLAogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiZXRhZyI6ICJDTVdtemJ5aTk5c0NFQUU9IgogICB9CiAgXSwKICAib3duZXIiOiB7CiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICB9LAogICJjcmMzMmMiOiAicjBOR3JnPT0iLAogICJldGFnIjogIkNNV216YnlpOTlzQ0VBRT0iLAogICJjdXN0b21lckVuY3J5cHRpb24iOiB7CiAgICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgICJrZXlTaGEyNTYiOiAiRm5CdmZRMWREc3lTOGtIRCthQjZISElnbERvUTVJbTdXWURtM1hZVEdyUT0iCiAgfQogfQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTEiLAogIm9iamVjdFNpemUiOiAiMTEiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDIxMTE0MDY3IiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgIm5hbWUiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyMTExNDA2NyIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0MS4xMTNaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQxLjExM1oiLAogICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQxLjExM1oiLAogICJzaXplIjogIjExIiwKICAibWQ1SGFzaCI6ICJ4d1dORmEwVmRYUG1sQXdybGNBSmNnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMj9nZW5lcmF0aW9uPTE1MzI1NDMwMjExMTQwNjcmYWx0PW1lZGlhIiwKICAiY29udGVudExhbmd1YWdlIjogImVuIiwKICAiYWNsIjogWwogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMjU0MzAyMTExNDA2Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTIiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyMTExNDA2NyIsCiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAib3duZXJzIgogICAgfSwKICAgICJldGFnIjogIkNOUEZnZFB2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDIxMTE0MDY3L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjExMTQwNjciLAogICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgfSwKICAgICJldGFnIjogIkNOUEZnZFB2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDIxMTE0MDY3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjExMTQwNjciLAogICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiUkVBREVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAidmlld2VycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDTlBGZ2RQdnV0d0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMjU0MzAyMTExNDA2Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjExMTQwNjciLAogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiZXRhZyI6ICJDTlBGZ2RQdnV0d0NFQUU9IgogICB9CiAgXSwKICAib3duZXIiOiB7CiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICB9LAogICJjcmMzMmMiOiAicjBOR3JnPT0iLAogICJldGFnIjogIkNOUEZnZFB2dXR3Q0VBRT0iLAogICJjdXN0b21lckVuY3J5cHRpb24iOiB7CiAgICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgICJrZXlTaGEyNTYiOiAiRm5CdmZRMWREc3lTOGtIRCthQjZISElnbERvUTVJbTdXWURtM1hZVEdyUT0iCiAgfQogfQp9Cg==" } }, { - "ID": "56c21a950a4a624f", + "ID": "5cac631c8e1c4d34", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption-2", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption-2", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -15319,13 +15549,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "179c5bddca9b97f16f230f06437f231b/12711848314185449815;o=0" + "37de646d6ee27cfd302ff771f6dd2ece/4066116968338487332;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -15334,7 +15564,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption-2" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption-2" ] }, "Body": "" @@ -15342,9 +15572,11 @@ "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -15356,28 +15588,28 @@ "application/xml; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:02 GMT" + "Wed, 25 Jul 2018 18:23:41 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:02 GMT" + "Wed, 25 Jul 2018 18:23:41 GMT" ], "Server": [ "UploadServer" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/36,/bns/xg/borg/xg/bns/blobstore2/bitpusher/53.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/379,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1067.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=qk41W5mkDo23_QTen5L4Bw" + "eid=LcBYW6TWGYXLlQHhi6CgDA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/53.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1067.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -15386,13 +15618,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/53:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/1067:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Guploader-Customer": [ "cloud-storage" @@ -15404,17 +15636,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Urx404ha6bbLMoE_hP0ALCpOUrG_9sZ_pcfJWRil9s42gtRk8RaDpV_54bCYRvQeIHVZ9nKpIRlMuxszfvyKG-WUdIyuA" + "AEnB2Uq8dUGFJMxRmWVYae5NUejAxV91f86KkBZNRFEiCpx5bQkKJFLCnhc0V1YzhLToF7oqk_oOxfxI1WiSBtrDSC3U4WhJzA" ] }, "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+UmVzb3VyY2VJc0VuY3J5cHRlZFdpdGhDdXN0b21lckVuY3J5cHRpb25LZXk8L0NvZGU+PE1lc3NhZ2U+VGhlIHJlc291cmNlIGlzIGVuY3J5cHRlZCB3aXRoIGEgY3VzdG9tZXIgZW5jcnlwdGlvbiBrZXkuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LjwvRGV0YWlscz48L0Vycm9yPg==" } }, { - "ID": "e67d6916fe79ae8c", + "ID": "91d3b551b9b3f000", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption-2", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption-2", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -15427,13 +15659,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "17af4f828829c9712a6a5fe7ed19eaff/14326982247384384630;o=0" + "04f7a694956d9bde0602618835166431/11707078986202970433;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -15442,7 +15674,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption-2" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption-2" ], "X-Goog-Encryption-Algorithm": [ "AES256" @@ -15459,12 +15691,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -15479,16 +15713,16 @@ "text/plain; charset=utf-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:02 GMT" + "Wed, 25 Jul 2018 18:23:41 GMT" ], "Etag": [ - "\"-CMWmzbyi99sCEAE=\"" + "\"-CNPFgdPvutwCEAE=\"" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:10:02 GMT" + "Wed, 25 Jul 2018 18:23:41 GMT" ], "Pragma": [ "no-cache" @@ -15503,10 +15737,10 @@ "FnBvfQ1dDsyS8kHD+aB6HHIglDoQ5Im7WYDm3XYTGrQ=" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:10:02 GMT" + "Fri, 24 Aug 2018 18:23:41 GMT" ], "X-Goog-Generation": [ - "1530220202120005" + "1532543021114067" ], "X-Goog-Hash": [ "crc32c=r0NGrg==", @@ -15525,7 +15759,7 @@ "11" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/63,/bns/xg/borg/xg/bns/blobstore2/bitpusher/56.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/110,/bns/yb/borg/yb/bns/blobstore2/bitpusher/74.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -15534,13 +15768,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=qk41W7L_EK-5_QT08q2oCA" + "eid=LcBYW4uMHcGelAH-jJWoCw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/56.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/74.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -15549,13 +15783,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/56:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/74:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -15570,17 +15804,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UptMfJjhHcgFXr0AT1_nA3F-lHuBWF63jPz_6m64ZS2uQJ-0vSpGz9CdybRzptjbUl4jzzaatSuuuDQJPAWeToO9wUhwQ" + "AEnB2UpK9BucKJpgyFP2k4F2GwJMX-dxnLYjPHFS4YB2isFHF5LMJJ2hwKTMKRBT2mA-1KA6EImB7xzdMiNI-m3aladRSsFHKasp_T3z2UppMWTV_dw8tek" ] }, "Body": "dG9wIHNlY3JldC4=" } }, { - "ID": "7f2bef31f98ed68a", + "ID": "2eccba21305bb95f", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -15599,13 +15833,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "8fd4988bee0dddc5339e9f09320c258b/15870059686056953750;o=0" + "b15aa62052d0d7cee0a810e50122a363/901298034147785309;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -15614,7 +15848,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -15643,9 +15877,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -15657,7 +15893,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:03 GMT" + "Wed, 25 Jul 2018 18:23:42 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -15673,7 +15909,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220501000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -15682,16 +15918,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrch2:4197,/bns/yw/borg/yw/bns/blobstore2/bitpusher/615.scotty,acatli15:443" + "xgiadaae1:4085,/bns/xi/borg/xi/bns/blobstore2/bitpusher/110.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=qk41W6z6FsuGhASj3anICg" + "eid=LcBYW_3YI6i9swbA1rXICg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/615.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/110.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -15700,13 +15936,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/615:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/110:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -15721,17 +15957,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqGdVDupV3bJA8L1Ywq5QGBoKVIEkAjgd9oKSS3b6cmE9Nwc5tXmehEO_ufTcwmrtwB3pDLwjKe6IVhgFnsvAyLxfWDCZ7OZfuBsmRdC04yk3IgOnE" + "AEnB2Uq4MXfPhHe7Cug8sSnmb0CO5IqmjdSfDUC6iy3-d49HphwfnVNlxBaw91ORYgrm2wZ6yiFrKsgmxo4JX-fHGzlB2AuJlQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTEiLAogIm9iamVjdFNpemUiOiAiMTEiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjAyOTE3MTI2IiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgIm5hbWUiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwMjkxNzEyNiIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowMi45MTVaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjAyLjkxNVoiLAogICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjAyLjkxNVoiLAogICJzaXplIjogIjExIiwKICAibWQ1SGFzaCI6ICJ4d1dORmEwVmRYUG1sQXdybGNBSmNnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMj9nZW5lcmF0aW9uPTE1MzAyMjAyMDI5MTcxMjYmYWx0PW1lZGlhIiwKICAiY29udGVudExhbmd1YWdlIjogImVuIiwKICAiYWNsIjogWwogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMDIyMDIwMjkxNzEyNi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTIiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwMjkxNzEyNiIsCiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAib3duZXJzIgogICAgfSwKICAgICJldGFnIjogIkNJYjYvYnlpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjAyOTE3MTI2L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDI5MTcxMjYiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgfSwKICAgICJldGFnIjogIkNJYjYvYnlpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjAyOTE3MTI2L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDI5MTcxMjYiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiUkVBREVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAidmlld2VycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDSWI2L2J5aTk5c0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMDIyMDIwMjkxNzEyNi91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDI5MTcxMjYiLAogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiZXRhZyI6ICJDSWI2L2J5aTk5c0NFQUU9IgogICB9CiAgXSwKICAib3duZXIiOiB7CiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICB9LAogICJjcmMzMmMiOiAicjBOR3JnPT0iLAogICJldGFnIjogIkNJYjYvYnlpOTlzQ0VBRT0iLAogICJjdXN0b21lckVuY3J5cHRpb24iOiB7CiAgICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgICJrZXlTaGEyNTYiOiAiSCtMbW5YaFJvZUk2VE1XNWJzVjZIeVVrNnB5R2MySU1icVliQVhCY3BzMD0iCiAgfQogfQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTEiLAogIm9iamVjdFNpemUiOiAiMTEiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDIyMjA4NjI2IiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgIm5hbWUiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyMjIwODYyNiIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0Mi4yMDhaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQyLjIwOFoiLAogICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQyLjIwOFoiLAogICJzaXplIjogIjExIiwKICAibWQ1SGFzaCI6ICJ4d1dORmEwVmRYUG1sQXdybGNBSmNnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMj9nZW5lcmF0aW9uPTE1MzI1NDMwMjIyMDg2MjYmYWx0PW1lZGlhIiwKICAiY29udGVudExhbmd1YWdlIjogImVuIiwKICAiYWNsIjogWwogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMjU0MzAyMjIwODYyNi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTIiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyMjIwODYyNiIsCiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAib3duZXJzIgogICAgfSwKICAgICJldGFnIjogIkNQS3N4TlB2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDIyMjA4NjI2L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjIyMDg2MjYiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgfSwKICAgICJldGFnIjogIkNQS3N4TlB2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDIyMjA4NjI2L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjIyMDg2MjYiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiUkVBREVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAidmlld2VycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDUEtzeE5QdnV0d0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMjU0MzAyMjIwODYyNi91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjIyMDg2MjYiLAogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiZXRhZyI6ICJDUEtzeE5QdnV0d0NFQUU9IgogICB9CiAgXSwKICAib3duZXIiOiB7CiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICB9LAogICJjcmMzMmMiOiAicjBOR3JnPT0iLAogICJldGFnIjogIkNQS3N4TlB2dXR3Q0VBRT0iLAogICJjdXN0b21lckVuY3J5cHRpb24iOiB7CiAgICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgICJrZXlTaGEyNTYiOiAiSCtMbW5YaFJvZUk2VE1XNWJzVjZIeVVrNnB5R2MySU1icVliQVhCY3BzMD0iCiAgfQogfQp9Cg==" } }, { - "ID": "1efddd998227a4d4", + "ID": "b48eed060ac1eeee", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-3/compose?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-3/compose?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -15750,13 +15986,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b8e63c7a4670718ff9a6f0f9b3be2d28/17485194718750739125;o=0" + "05e6a365f40000915a863bfd1c681526/8542260052012268410;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -15765,20 +16001,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-3/compose?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-3/compose?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImN1c3RvbWVyLWVuY3J5cHRpb24ifSx7Im5hbWUiOiJjdXN0b21lci1lbmNyeXB0aW9uLTIifV19Cg==" + "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImN1c3RvbWVyLWVuY3J5cHRpb24ifSx7Im5hbWUiOiJjdXN0b21lci1lbmNyeXB0aW9uLTIifV19Cg==" }, "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "14106" @@ -15787,7 +16025,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:03 GMT" + "Wed, 25 Jul 2018 18:23:42 GMT" ], "Server": [ "UploadServer" @@ -15797,7 +16035,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220500000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -15806,16 +16044,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrjm11:4231,/bns/yw/borg/yw/bns/blobstore2/bitpusher/577.scotty,acatli15:443" + "xgiadabn7:4375,/bns/xi/borg/xi/bns/blobstore2/bitpusher/131.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=q041W77QCcGVhgSpl5CYAw" + "eid=LsBYW5f6F-u8swaT-aHwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/577.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/131.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -15824,13 +16062,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/577:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/131:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -15845,17 +16083,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Urm6cO9IorZDpmjRE3g27IjkJJozx3KvL_D3MMR_CzEdJbdMNPKRUinh3rEGFhHZDLehio4j9DIBOFr3Eaf6jculnECQaMe6RAd6tLtLTdqWUylTHo" + "AEnB2Uq5OJTHLvdyYO_ZGZa2xuRerrunUlPs1OYcShjXHLfN4-j37WOw_gWkiQSlSPSUwc7v-QsAtR5wh864AiH1N0V7Dlw6CA" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVzb3VyY2VJc0VuY3J5cHRlZFdpdGhDdXN0b21lckVuY3J5cHRpb25LZXkiLAogICAgIm1lc3NhZ2UiOiAiVGhlIHRhcmdldCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuIiwKICAgICJleHRlbmRlZEhlbHAiOiAiaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL3N0b3JhZ2UvZG9jcy9lbmNyeXB0aW9uI2N1c3RvbWVyLXN1cHBsaWVkX2VuY3J5cHRpb25fa2V5cyIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbikgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6MjAwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjQ3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5jb21wb3NlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uKSBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUlOVkFMSURfVkFMVUUsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogQ29tcG9uZW50IG9iamVjdCAoZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24pIGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjIwMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YTo0Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuY29tcG9zZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbikgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1odHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL2VuY3J5cHRpb24jY3VzdG9tZXItc3VwcGxpZWRfZW5jcnlwdGlvbl9rZXlzLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogQ29tcG9uZW50IG9iamVjdCAoZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24pIGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjIwMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YTo0Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuY29tcG9zZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbikgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBlcnJvclByb3RvRG9tYWluPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1Db21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbikgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1UaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4sIHJlYXNvbj1yZXNvdXJjZUlzRW5jcnlwdGVkV2l0aEN1c3RvbWVyRW5jcnlwdGlvbktleSwgcnBjQ29kZT00MDB9IFRoZSB0YXJnZXQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uKSBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogQ29tcG9uZW50IG9iamVjdCAoZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24pIGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJUaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4iCiB9Cn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVzb3VyY2VJc0VuY3J5cHRlZFdpdGhDdXN0b21lckVuY3J5cHRpb25LZXkiLAogICAgIm1lc3NhZ2UiOiAiVGhlIHRhcmdldCBvYmplY3QgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuIiwKICAgICJleHRlbmRlZEhlbHAiOiAiaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL3N0b3JhZ2UvZG9jcy9lbmNyeXB0aW9uI2N1c3RvbWVyLXN1cHBsaWVkX2VuY3J5cHRpb25fa2V5cyIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbikgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6MjAwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjQ3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5jb21wb3NlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uKSBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUlOVkFMSURfVkFMVUUsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogQ29tcG9uZW50IG9iamVjdCAoZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24pIGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjIwMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YTo0Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuY29tcG9zZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbikgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1odHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL2VuY3J5cHRpb24jY3VzdG9tZXItc3VwcGxpZWRfZW5jcnlwdGlvbl9rZXlzLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogQ29tcG9uZW50IG9iamVjdCAoZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24pIGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjIwMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YTo0Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuY29tcG9zZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbikgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZLCBlcnJvclByb3RvRG9tYWluPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1Db21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbikgaXMgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1UaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4sIHJlYXNvbj1yZXNvdXJjZUlzRW5jcnlwdGVkV2l0aEN1c3RvbWVyRW5jcnlwdGlvbktleSwgcnBjQ29kZT00MDB9IFRoZSB0YXJnZXQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfSVNfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uKSBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX0lTX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9JU19FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogQ29tcG9uZW50IG9iamVjdCAoZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24pIGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJUaGUgdGFyZ2V0IG9iamVjdCBpcyBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4iCiB9Cn0K" } }, { - "ID": "75a3ef475028fcb4", + "ID": "43d20220aa0482d1", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-3/compose?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-3/compose?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -15874,13 +16112,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "218741f514726382a90b830c5b3575b8/1389235235898380260;o=0" + "418a165c76984b2a16fd19f1c252391b/1521354619552021541;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -15889,7 +16127,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-3/compose?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-3/compose?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -15904,14 +16142,16 @@ "H+LmnXhRoeI6TMW5bsV6HyUk6pyGc2IMbqYbAXBcps0=" ] }, - "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImN1c3RvbWVyLWVuY3J5cHRpb24ifSx7Im5hbWUiOiJjdXN0b21lci1lbmNyeXB0aW9uLTIifV19Cg==" + "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImN1c3RvbWVyLWVuY3J5cHRpb24ifSx7Im5hbWUiOiJjdXN0b21lci1lbmNyeXB0aW9uLTIifV19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -15923,10 +16163,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:03 GMT" + "Wed, 25 Jul 2018 18:23:42 GMT" ], "Etag": [ - "CJfQsb2i99sCEAE=" + "CIiS6dPvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -15942,7 +16182,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220501000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -15951,16 +16191,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrnq12:4113,/bns/yw/borg/yw/bns/blobstore2/bitpusher/159.scotty,acatli15:443" + "xgiadabp15:4495,/bns/xi/borg/xi/bns/blobstore2/bitpusher/148.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=q041W_2GGobJN_DHnpAH" + "eid=LsBYW5mHHMe9swaP-5fwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/159.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/148.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -15969,13 +16209,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/159:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/148:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -15990,17 +16230,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpKWDA_HFqJq56HCK0QLT1GYVaF1X5UaQTNkIsstf5BzVjCZbDpKK5hdwwyo64neh--YnDgkxJoDW2SSRELDSJlga1bLa6fKU8uxdcqkwsGUZsKovM" + "AEnB2UrOJcor9CfA4bGa8a2BQTWOesMsCLPIAiahFPBLbzm_ddQeIl6G2Qa7RNC3wrMcXrB_lNWHcSykl2XHsdrst0BERICAuQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTMvMTUzMDIyMDIwMzc2MzczNSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMyIsCiAibmFtZSI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwMzc2MzczNSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowMy43NjNaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDMuNzYzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjAzLjc2M1oiLAogInNpemUiOiAiMjIiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0zP2dlbmVyYXRpb249MTUzMDIyMDIwMzc2MzczNSZhbHQ9bWVkaWEiLAogImNyYzMyYyI6ICI1ajF5cGc9PSIsCiAiY29tcG9uZW50Q291bnQiOiAyLAogImV0YWciOiAiQ0pmUXNiMmk5OXNDRUFFPSIsCiAiY3VzdG9tZXJFbmNyeXB0aW9uIjogewogICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgImtleVNoYTI1NiI6ICJIK0xtblhoUm9lSTZUTVc1YnNWNkh5VWs2cHlHYzJJTWJxWWJBWEJjcHMwPSIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTMvMTUzMjU0MzAyMjgxMTQwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMyIsCiAibmFtZSI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyMjgxMTQwMCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0Mi44MTFaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDIuODExWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQyLjgxMVoiLAogInNpemUiOiAiMjIiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0zP2dlbmVyYXRpb249MTUzMjU0MzAyMjgxMTQwMCZhbHQ9bWVkaWEiLAogImNyYzMyYyI6ICI1ajF5cGc9PSIsCiAiY29tcG9uZW50Q291bnQiOiAyLAogImV0YWciOiAiQ0lpUzZkUHZ1dHdDRUFFPSIsCiAiY3VzdG9tZXJFbmNyeXB0aW9uIjogewogICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgImtleVNoYTI1NiI6ICJIK0xtblhoUm9lSTZUTVc1YnNWNkh5VWs2cHlHYzJJTWJxWWJBWEJjcHMwPSIKIH0KfQo=" } }, { - "ID": "092b8804c70da499", + "ID": "84119a5e66a5f1ad", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption-3", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption-3", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -16013,13 +16253,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "58824328e4edf108c04928560362009e/3004370268592099844;o=0" + "55a3bd2bafdc4dd9f46980fe0fb0fd9e/9162035166734826817;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -16028,7 +16268,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption-3" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption-3" ] }, "Body": "" @@ -16036,9 +16276,11 @@ "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -16050,28 +16292,28 @@ "application/xml; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:04 GMT" + "Wed, 25 Jul 2018 18:23:42 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:04 GMT" + "Wed, 25 Jul 2018 18:23:42 GMT" ], "Server": [ "UploadServer" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/16,/bns/xg/borg/xg/bns/blobstore2/bitpusher/62.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/185,/bns/yb/borg/yb/bns/blobstore2/bitpusher/149.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=rE41W-xewbr9BLCthdgI" + "eid=LsBYW7XLOJHzlgHcgqToBA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/62.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/149.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -16080,13 +16322,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/62:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/149:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Guploader-Customer": [ "cloud-storage" @@ -16098,17 +16340,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Uo5uPYdI4gKpeBpU7j-z1n69VyHXH1RKDWWkpN3ZFAGF8x5jHwHHXiDcwu2jNhtR3qslaynj3y6rDLO2w5vQohcZeMkOg" + "AEnB2UoeojkPEHBBZpKlGu2lmYrRaN42Kp0wHwRXD2_wa2cz5ltLIJ-EHY56cVUZsmr2xDdDTG8Si9KS8WmCNCXvh8jwSDCaI9cBQH-lOTxsCB7xGv3uZaI" ] }, "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+UmVzb3VyY2VJc0VuY3J5cHRlZFdpdGhDdXN0b21lckVuY3J5cHRpb25LZXk8L0NvZGU+PE1lc3NhZ2U+VGhlIHJlc291cmNlIGlzIGVuY3J5cHRlZCB3aXRoIGEgY3VzdG9tZXIgZW5jcnlwdGlvbiBrZXkuPC9NZXNzYWdlPjxEZXRhaWxzPlRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LjwvRGV0YWlscz48L0Vycm9yPg==" } }, { - "ID": "3b97fe33d57b3926", + "ID": "bbfd69c2be6a4c17", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption-3", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption-3", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -16121,13 +16363,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "cc76473e3a646a45f0ed8e2a974990ef/4547447707264734499;o=0" + "5af5102e0631c6db127aa6cc7b73da94/16802998288389062238;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -16136,7 +16378,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/customer-encryption-3" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/customer-encryption-3" ], "X-Goog-Encryption-Algorithm": [ "AES256" @@ -16153,12 +16395,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -16170,16 +16414,16 @@ "application/octet-stream" ], "Date": [ - "Thu, 28 Jun 2018 21:10:04 GMT" + "Wed, 25 Jul 2018 18:23:43 GMT" ], "Etag": [ - "\"-CJfQsb2i99sCEAE=\"" + "\"-CIiS6dPvutwCEAE=\"" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:10:03 GMT" + "Wed, 25 Jul 2018 18:23:42 GMT" ], "Pragma": [ "no-cache" @@ -16197,10 +16441,10 @@ "H+LmnXhRoeI6TMW5bsV6HyUk6pyGc2IMbqYbAXBcps0=" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:10:03 GMT" + "Fri, 24 Aug 2018 18:23:42 GMT" ], "X-Goog-Generation": [ - "1530220203763735" + "1532543022811400" ], "X-Goog-Hash": [ "crc32c=5j1ypg==" @@ -16218,7 +16462,7 @@ "22" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/61,/bns/xg/borg/xg/bns/blobstore2/bitpusher/92.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/233,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1042.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -16227,13 +16471,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=rE41W9-6A4G9_QS-lbDYAw" + "eid=LsBYW42LPNedlAHel4n4Cw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/92.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1042.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -16242,13 +16486,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/92:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/1042:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -16263,17 +16507,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Upgu4DfLXTFm3j450Ym2XS7ep8BgZY869LBBR_U2i5ZAQxgkjRtMr7yfTnqIHAwXZTiWLFn9reDzZQICWXcLRowuiOcwQ" + "AEnB2UrgFKDTh88KRdGMqY14cM4LvByS0bU0y4XtNlcp7Udkqxt8Y32344QieJxs1G9PhVf8BAdx4EPDZCPozhDc7yqIDnvmZA" ] }, "Body": "dG9wIHNlY3JldC50b3Agc2VjcmV0Lg==" } }, { - "ID": "79b47ea52fe38759", + "ID": "300a300b23a4335c", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -16292,13 +16536,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "34e9e2cb5a16c30952d8a1932d908943/6162581640463603779;o=0" + "9f51df8e8c720e285a3ee5de218f86d6/5997497707520769914;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -16307,7 +16551,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -16327,9 +16571,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -16341,7 +16587,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:04 GMT" + "Wed, 25 Jul 2018 18:23:43 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -16357,7 +16603,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220500000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -16366,16 +16612,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrjc6:4102,/bns/yw/borg/yw/bns/blobstore2/bitpusher/211.scotty,acatli15:443" + "xgiadaaf2:4331,/bns/xi/borg/xi/bns/blobstore2/bitpusher/112.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=rE41W-XTCcKVN86YjeAJ" + "eid=L8BYW9f1BOm8swbjuZeQDg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/211.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/112.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -16384,20 +16630,17 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/211:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/112:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" ], - "X-Google-Trace": [ - "http://trace.corp.google.com/trace?host=ywdm185-v6\u0026trace_id=0xcc3f338c852de\u0026id=0x7d0dbbe80fb81d35\u0026start=2018-06-28_14:10:04\u0026rpc_duration=0.564735" - ], "X-Guploader-Customer": [ "apiary_cloudstorage_metadata" ], @@ -16408,17 +16651,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uqs2ZLyVULOXjUe8kEFi_y8xeotFxSghbm67VhU7Bvxf9GMpFOyWMG6jsrugFKW4ho9g62h8tXwlJzdFrCfrQH-ZOdWiFOT5derVue5RShnCHd5yHo" + "AEnB2UpBpilkap8Bxgs_8lHgcfjMld53lHihLHaZsw_mNqO4Ag2EXsEPCkFrkn6N0C465MXcjFxEiQraTf3bX2AKU69eA2dp9Q" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTEiLAogIm9iamVjdFNpemUiOiAiMTEiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjA0NDg2Nzk1IiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgIm5hbWUiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNDQ4Njc5NSIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowNC40ODZaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA0LjQ4NloiLAogICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA0LjQ4NloiLAogICJzaXplIjogIjExIiwKICAibWQ1SGFzaCI6ICJ4d1dORmEwVmRYUG1sQXdybGNBSmNnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMj9nZW5lcmF0aW9uPTE1MzAyMjAyMDQ0ODY3OTUmYWx0PW1lZGlhIiwKICAiY29udGVudExhbmd1YWdlIjogImVuIiwKICAiYWNsIjogWwogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMDIyMDIwNDQ4Njc5NS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTIiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNDQ4Njc5NSIsCiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAib3duZXJzIgogICAgfSwKICAgICJldGFnIjogIkNJdmgzYjJpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjA0NDg2Nzk1L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDQ0ODY3OTUiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgfSwKICAgICJldGFnIjogIkNJdmgzYjJpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMwMjIwMjA0NDg2Nzk1L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDQ0ODY3OTUiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiUkVBREVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAidmlld2VycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDSXZoM2IyaTk5c0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMDIyMDIwNDQ4Njc5NS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDQ0ODY3OTUiLAogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiZXRhZyI6ICJDSXZoM2IyaTk5c0NFQUU9IgogICB9CiAgXSwKICAib3duZXIiOiB7CiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICB9LAogICJjcmMzMmMiOiAicjBOR3JnPT0iLAogICJldGFnIjogIkNJdmgzYjJpOTlzQ0VBRT0iCiB9Cn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMTEiLAogIm9iamVjdFNpemUiOiAiMTEiLAogImRvbmUiOiB0cnVlLAogInJlc291cmNlIjogewogICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDIzODA4ODA0IiwKICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgIm5hbWUiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyMzgwODgwNCIsCiAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0My44MDhaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQzLjgwOFoiLAogICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQzLjgwOFoiLAogICJzaXplIjogIjExIiwKICAibWQ1SGFzaCI6ICJ4d1dORmEwVmRYUG1sQXdybGNBSmNnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMj9nZW5lcmF0aW9uPTE1MzI1NDMwMjM4MDg4MDQmYWx0PW1lZGlhIiwKICAiY29udGVudExhbmd1YWdlIjogImVuIiwKICAiYWNsIjogWwogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMjU0MzAyMzgwODgwNC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTIiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyMzgwODgwNCIsCiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAib3duZXJzIgogICAgfSwKICAgICJldGFnIjogIkNLU0NwdFR2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDIzODA4ODA0L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjM4MDg4MDQiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgfSwKICAgICJldGFnIjogIkNLU0NwdFR2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDIzODA4ODA0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjM4MDg4MDQiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiUkVBREVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAidmlld2VycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDS1NDcHRUdnV0d0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMjU0MzAyMzgwODgwNC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjM4MDg4MDQiLAogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiZXRhZyI6ICJDS1NDcHRUdnV0d0NFQUU9IgogICB9CiAgXSwKICAib3duZXIiOiB7CiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICB9LAogICJjcmMzMmMiOiAicjBOR3JnPT0iLAogICJldGFnIjogIkNLU0NwdFR2dXR3Q0VBRT0iCiB9Cn0K" } }, { - "ID": "b670314f74ee7943", + "ID": "69020dac345878df", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-3/compose?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-3/compose?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -16437,13 +16680,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a67d1ef1e27d5f4427e84e038289fd54/7777715569367636834;o=0" + "d278ee93823326df9ef33a923ae61189/13638460824863326615;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -16452,7 +16695,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-3/compose?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-3/compose?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -16467,14 +16710,16 @@ "H+LmnXhRoeI6TMW5bsV6HyUk6pyGc2IMbqYbAXBcps0=" ] }, - "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImN1c3RvbWVyLWVuY3J5cHRpb24tMiJ9XX0K" + "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImN1c3RvbWVyLWVuY3J5cHRpb24tMiJ9XX0K" }, "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "14232" @@ -16483,7 +16728,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:05 GMT" + "Wed, 25 Jul 2018 18:23:44 GMT" ], "Server": [ "UploadServer" @@ -16493,7 +16738,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220500000" + "1532543318000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -16502,16 +16747,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrp184:4303,/bns/yw/borg/yw/bns/blobstore2/bitpusher/488.scotty,acatli15:443" + "xgiadaad3:4296,/bns/xi/borg/xi/bns/blobstore2/bitpusher/127.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=rE41W9nRLcaJN5i7i4AF" + "eid=L8BYW8nUN8u8swbztoroAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/488.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/127.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -16520,13 +16765,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/488:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/127:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBWEpmN2FRVFdXZUxuM29aWWExSm9CVzNNX1NJX1o2OEpHWUFkZHNKWGpLQmZwdS1QRGtjUnFWOWpRYkJnbFBGLVdNN1R4T2ltektlTjRhbVIzcGJ0dUdCNW1JdmNlT0ExQTAzejZhVnh5RU40alpoZVp6OXBMV2xFTHJaVjF4VDl2NW1mcWFjVFp2RV90LWoxZjQxYWtGMjNZRm9sM1k3UkN5b3EwOHFnUnFqYWxJdE9yclkzZkhCMGcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YlhVYjBnTEd2bV9Cbl9YQXNaSVplTm12VWpQRU1ZaFl2NVB4UXFTXzM3YTBBVTR2VHNqSW1sMWZUT3FRYmZOYW9wdm5wb1hjVUt1T3hUSTlwRHdPNXdBRzN2V3JDSHhWTUlGcjkxS0xndURQVm5Md3Eydmt4WS15SFA3R09HQ25OWWNiT2I5cDBRWXFGc04yNjI1SXE4WmJoRXI1WmZpY1hHWVJZaEZNNnptV01LTi1GQVh4M2VtaTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -16541,17 +16786,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UokOdEV6TxWi8nJbLcP0uoWMJLeBodAvA-7-YF1tqHMP1UJjWKDs2wt39NMIjE-4GmZq4H2FVWcLF-h3qBEgWoSryOCqpaRCA6SvnaGHwWllgnqHFI" + "AEnB2UqU8wqxw4er6p9YWLTSpvHkIOFrBiaQeLE7i7U3qYEDRBY8XAbeR36fAlMQFxZ34JzQRdxZBWYwNqPtnBwPrRkxcOJ61g" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVzb3VyY2VOb3RFbmNyeXB0ZWRXaXRoQ3VzdG9tZXJFbmNyeXB0aW9uS2V5IiwKICAgICJtZXNzYWdlIjogIlRoZSB0YXJnZXQgb2JqZWN0IGlzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4iLAogICAgImV4dGVuZGVkSGVscCI6ICJodHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL2VuY3J5cHRpb24jY3VzdG9tZXItc3VwcGxpZWRfZW5jcnlwdGlvbl9rZXlzIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9OT1RfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIpIHVzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yKSB1cyBub3QgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1JTlZBTElEX1ZBTFVFLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9OT1RfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIpIHVzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yKSB1cyBub3QgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1odHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL2VuY3J5cHRpb24jY3VzdG9tZXItc3VwcGxpZWRfZW5jcnlwdGlvbl9rZXlzLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLlJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWSwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9OT1RfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIpIHVzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yKSB1cyBub3QgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWSwgZXJyb3JQcm90b0RvbWFpbj1jbG91ZC5iaWdzdG9yZS5hcGkuQmlnc3RvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5lbmNyeXB0aW9uS2V5LCBtZXNzYWdlPUNvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIpIHVzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkuZW5jcnlwdGlvbktleSwgbWVzc2FnZT1UaGUgdGFyZ2V0IG9iamVjdCBpcyBub3QgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuLCByZWFzb249cmVzb3VyY2VOb3RFbmNyeXB0ZWRXaXRoQ3VzdG9tZXJFbmNyeXB0aW9uS2V5LCBycGNDb2RlPTQwMH0gVGhlIHRhcmdldCBvYmplY3QgaXMgbm90IGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9OT1RfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIpIHVzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yKSB1cyBub3QgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAwLAogICJtZXNzYWdlIjogIlRoZSB0YXJnZXQgb2JqZWN0IGlzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4iCiB9Cn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVzb3VyY2VOb3RFbmNyeXB0ZWRXaXRoQ3VzdG9tZXJFbmNyeXB0aW9uS2V5IiwKICAgICJtZXNzYWdlIjogIlRoZSB0YXJnZXQgb2JqZWN0IGlzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4iLAogICAgImV4dGVuZGVkSGVscCI6ICJodHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL2VuY3J5cHRpb24jY3VzdG9tZXItc3VwcGxpZWRfZW5jcnlwdGlvbl9rZXlzIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9OT1RfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIpIHVzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yKSB1cyBub3QgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1JTlZBTElEX1ZBTFVFLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9OT1RfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIpIHVzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yKSB1cyBub3QgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1odHRwczovL2Nsb3VkLmdvb2dsZS5jb20vc3RvcmFnZS9kb2NzL2VuY3J5cHRpb24jY3VzdG9tZXItc3VwcGxpZWRfZW5jcnlwdGlvbl9rZXlzLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLlJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWSwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9OT1RfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIpIHVzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yKSB1cyBub3QgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWSwgZXJyb3JQcm90b0RvbWFpbj1jbG91ZC5iaWdzdG9yZS5hcGkuQmlnc3RvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5lbmNyeXB0aW9uS2V5LCBtZXNzYWdlPUNvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIpIHVzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkuZW5jcnlwdGlvbktleSwgbWVzc2FnZT1UaGUgdGFyZ2V0IG9iamVjdCBpcyBub3QgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuLCByZWFzb249cmVzb3VyY2VOb3RFbmNyeXB0ZWRXaXRoQ3VzdG9tZXJFbmNyeXB0aW9uS2V5LCBycGNDb2RlPTQwMH0gVGhlIHRhcmdldCBvYmplY3QgaXMgbm90IGVuY3J5cHRlZCBieSBhIGN1c3RvbWVyLXN1cHBsaWVkIGVuY3J5cHRpb24ga2V5LjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBSRVNPVVJDRV9OT1RfRU5DUllQVEVEX1dJVEhfQ1VTVE9NRVJfRU5DUllQVElPTl9LRVk6IENvbXBvbmVudCBvYmplY3QgKGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIpIHVzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFU09VUkNFX05PVF9FTkNSWVBURURfV0lUSF9DVVNUT01FUl9FTkNSWVBUSU9OX0tFWTogUkVTT1VSQ0VfTk9UX0VOQ1JZUFRFRF9XSVRIX0NVU1RPTUVSX0VOQ1JZUFRJT05fS0VZOiBDb21wb25lbnQgb2JqZWN0IChnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yKSB1cyBub3QgZW5jcnlwdGVkIGJ5IGEgY3VzdG9tZXItc3VwcGxpZWQgZW5jcnlwdGlvbiBrZXkuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAwLAogICJtZXNzYWdlIjogIlRoZSB0YXJnZXQgb2JqZWN0IGlzIG5vdCBlbmNyeXB0ZWQgYnkgYSBjdXN0b21lci1zdXBwbGllZCBlbmNyeXB0aW9uIGtleS4iCiB9Cn0K" } }, { - "ID": "b24ff6aaa727f09b", + "ID": "57cebe350ad4b735", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -16564,13 +16809,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "1af8af6b54e0673d7b80770310f700ba/9320512636853313154;o=0" + "b4c97551f0d3cdd4bacea30f79cf0bcb/2832960243995034291;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -16579,7 +16824,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -16590,9 +16835,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -16604,13 +16851,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:05 GMT" + "Wed, 25 Jul 2018 18:23:44 GMT" ], "Etag": [ "CAk=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:05 GMT" + "Wed, 25 Jul 2018 18:23:44 GMT" ], "Server": [ "UploadServer" @@ -16620,7 +16867,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220505000" + "1532543324000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -16629,16 +16876,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrae2:4360,/bns/yw/borg/yw/bns/blobstore2/bitpusher/395.scotty,acatli15:443" + "xgiadaac13:4010,/bns/xi/borg/xi/bns/blobstore2/bitpusher/149.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=rU41W83IB8LBhQTk4ZewAw" + "eid=MMBYW6DWC8y8swbYrr3oAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/395.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/149.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -16647,13 +16894,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/395:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/149:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVnJZa216TkpmUHFPLVpSdGhXUTJobXlwOVZXV0dHVVh3cXh6RlJjMlREcXd3bVQ5TFo3YXgtQV9mWGRJMTI0V2dBS1JBUjhiZk9iVFAyX0o3M29kVXV4cXh6MG5uSmpPTkp3a0xZcm9PVzZNTk1SeFNXbzRxVEVianJ5OTJZX25kakZtY2VYTGZqaDdjNERqc1dYWkp3Z2gzMVBVYjBpTklFYW90RnFKWGVtNTNuM0JySm5TSFg2c1kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YmJLcUI1V3VlMmxucHZUTzJFdWh2M3VOdmlST2NXR1pKdUF5S2hYTTFOSHJqNDhVTVRVdElncmJvZVZRalpqTUJiZFRSeV9xZkRDNTg1VUNTSjRoa0tDTVMxR1NMenJWSUpuZzBxQjk2RE1lcEhvd3lpX0YwWEJQaF9EeXdsbXl5eTM2eWlOMTR4UXFjY2lPeHpHWkVwLUp3bEp5cTlvc095U0VNa1RubWJGRFd3Z0UxMURxWWlmbWMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -16668,17 +16915,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpfyKYlJzTkiYjo7mmYzBBnG6VTGptXvaNNdR2gnyL-U782EcVfHkfAJkoMF5ef2iMrhmjEvQD9Q2gnwwNnQMWR9z3xRNfJ2vc4BJXaEfl9k9HCGWs" + "AEnB2UrhC5_XlpOq4L32MvPIPuHqK7FWpsW0vVM37zyaThccYKLqbPD322Z_tO-vXc95DEdtaVhuiGMxN7q-529Fud4_eUppBw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTYuMzYzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjUyLjkyMFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjkiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FrPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FrPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBaz0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQWs9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FrPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQWs9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiBmYWxzZQogfSwKICJsaWZlY3ljbGUiOiB7CiAgInJ1bGUiOiBbCiAgIHsKICAgICJhY3Rpb24iOiB7CiAgICAgInR5cGUiOiAiRGVsZXRlIgogICAgfSwKICAgICJjb25kaXRpb24iOiB7CiAgICAgImFnZSI6IDMwCiAgICB9CiAgIH0KICBdCiB9LAogImxhYmVscyI6IHsKICAibmV3IjogIm5ldyIsCiAgImwxIjogInYyIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FrPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTUuMDg0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjMxLjQyMFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjkiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FrPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FrPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBaz0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQWs9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FrPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQWs9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInZlcnNpb25pbmciOiB7CiAgImVuYWJsZWQiOiBmYWxzZQogfSwKICJsaWZlY3ljbGUiOiB7CiAgInJ1bGUiOiBbCiAgIHsKICAgICJhY3Rpb24iOiB7CiAgICAgInR5cGUiOiAiRGVsZXRlIgogICAgfSwKICAgICJjb25kaXRpb24iOiB7CiAgICAgImFnZSI6IDMwCiAgICB9CiAgIH0KICBdCiB9LAogImxhYmVscyI6IHsKICAibDEiOiAidjIiLAogICJuZXciOiAibmV3IgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FrPSIKfQo=" } }, { - "ID": "ac61737896c6360c", + "ID": "2e8f5104310bfe85", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -16688,19 +16935,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=6f86a673abac38c2d59a71e9f95e3f604b7cb65c1d5cd4b4f8dc16487f5c" + "multipart/related; boundary=9001ab8d43f75482dda33a0ee7f98dcfe353dfff3c828ca30af9a9dcb3b0" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "4d5d445994aeeb09a17d1d7b2f373c34/10128219789054582674;o=0" + "2f36a66f4dc1427f87af81a35c7cc8ca/6689329316752785986;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -16709,20 +16956,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS02Zjg2YTY3M2FiYWMzOGMyZDU5YTcxZTlmOTVlM2Y2MDRiN2NiNjVjMWQ1Y2Q0YjRmOGRjMTY0ODdmNWMNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm5hbWUiOiJwb3NjIn0KDQotLTZmODZhNjczYWJhYzM4YzJkNTlhNzFlOWY5NWUzZjYwNGI3Y2I2NWMxZDVjZDRiNGY4ZGMxNjQ4N2Y1Yw0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmZvbw0KLS02Zjg2YTY3M2FiYWMzOGMyZDU5YTcxZTlmOTVlM2Y2MDRiN2NiNjVjMWQ1Y2Q0YjRmOGRjMTY0ODdmNWMtLQ0K" + "Body": "LS05MDAxYWI4ZDQzZjc1NDgyZGRhMzNhMGVlN2Y5OGRjZmUzNTNkZmZmM2M4MjhjYTMwYWY5YTlkY2IzYjANCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm5hbWUiOiJwb3NjIn0KDQotLTkwMDFhYjhkNDNmNzU0ODJkZGEzM2EwZWU3Zjk4ZGNmZTM1M2RmZmYzYzgyOGNhMzBhZjlhOWRjYjNiMA0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmZvbw0KLS05MDAxYWI4ZDQzZjc1NDgyZGRhMzNhMGVlN2Y5OGRjZmUzNTNkZmZmM2M4MjhjYTMwYWY5YTlkY2IzYjAtLQ0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -16734,10 +16983,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:05 GMT" + "Wed, 25 Jul 2018 18:23:44 GMT" ], "Etag": [ - "CKWTor6i99sCEAE=" + "CIaI5NTvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -16753,7 +17002,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220505000" + "1532543324000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -16762,19 +17011,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrkz87:4025,/bns/yw/borg/yw/bns/blobstore2/bitpusher/282.scotty,acatli15:443" + "xgiadaba15:4126,/bns/xi/borg/xi/bns/blobstore2/bitpusher/114.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=rU41W4HrH8ytN6euonA" + "eid=MMBYW5TdHqy9swbny6vAAQ" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/282.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/114.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -16783,13 +17032,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/282:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/114:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVnJZa216TkpmUHFPLVpSdGhXUTJobXlwOVZXV0dHVVh3cXh6RlJjMlREcXd3bVQ5TFo3YXgtQV9mWGRJMTI0V2dBS1JBUjhiZk9iVFAyX0o3M29kVXV4cXh6MG5uSmpPTkp3a0xZcm9PVzZNTk1SeFNXbzRxVEVianJ5OTJZX25kakZtY2VYTGZqaDdjNERqc1dYWkp3Z2gzMVBVYjBpTklFYW90RnFKWGVtNTNuM0JySm5TSFg2c1kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YmJLcUI1V3VlMmxucHZUTzJFdWh2M3VOdmlST2NXR1pKdUF5S2hYTTFOSHJqNDhVTVRVdElncmJvZVZRalpqTUJiZFRSeV9xZkRDNTg1VUNTSjRoa0tDTVMxR1NMenJWSUpuZzBxQjk2RE1lcEhvd3lpX0YwWEJQaF9EeXdsbXl5eTM2eWlOMTR4UXFjY2lPeHpHWkVwLUp3bEp5cTlvc095U0VNa1RubWJGRFd3Z0UxMURxWWlmbWMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -16804,17 +17053,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpmhIKSsXW7jHwOmX_xlL325ERhV-k3JrriYcGfjlthEOuI1LO2b9qg5-WuUAv1CnQiPy_oDHukNs0Uk34GcixxOoZ4XtKBKWJN4yRIty6Hy4aQltk" + "AEnB2Uo13CdtfQL9ZMhaPcrW3YnAuOwBE2gvutfyihE4WFB5wD-zKHwrZfDHhdgttlUSiHDhx-ZYfxpq7M89G_R2wO6VI1lXZg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wb3NjLzE1MzAyMjAyMDU2MDczMzMiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjIiwKICJuYW1lIjogInBvc2MiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNTYwNzMzMyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowNS42MDVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDUuNjA1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA1LjYwNVoiLAogInNpemUiOiAiMyIsCiAibWQ1SGFzaCI6ICJyTDBZMjB6QytGenQ3MlZQek1TazJBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYz9nZW5lcmF0aW9uPTE1MzAyMjAyMDU2MDczMzMmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MvMTUzMDIyMDIwNTYwNzMzMy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAicG9zYyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDU2MDczMzMiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNLV1RvcjZpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcG9zYy8xNTMwMjIwMjA1NjA3MzMzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA1NjA3MzMzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNLV1RvcjZpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcG9zYy8xNTMwMjIwMjA1NjA3MzMzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA1NjA3MzMzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDS1dUb3I2aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MvMTUzMDIyMDIwNTYwNzMzMy91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA1NjA3MzMzIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDS1dUb3I2aTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiejhTdUhRPT0iLAogImV0YWciOiAiQ0tXVG9yNmk5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjLzE1MzI1NDMwMjQ4MjUzNTAiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjIiwKICJuYW1lIjogInBvc2MiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNDgyNTM1MCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0NC44MjRaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDQuODI0WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ0LjgyNFoiLAogInNpemUiOiAiMyIsCiAibWQ1SGFzaCI6ICJyTDBZMjB6QytGenQ3MlZQek1TazJBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYz9nZW5lcmF0aW9uPTE1MzI1NDMwMjQ4MjUzNTAmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Bvc2MvMTUzMjU0MzAyNDgyNTM1MC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAicG9zYyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjQ4MjUzNTAiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJYUk1TlR2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcG9zYy8xNTMyNTQzMDI0ODI1MzUwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI0ODI1MzUwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJYUk1TlR2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcG9zYy8xNTMyNTQzMDI0ODI1MzUwL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI0ODI1MzUwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSWFJNU5UdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Bvc2MvMTUzMjU0MzAyNDgyNTM1MC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI0ODI1MzUwIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSWFJNU5UdnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiejhTdUhRPT0iLAogImV0YWciOiAiQ0lhSTVOVHZ1dHdDRUFFPSIKfQo=" } }, { - "ID": "62917309c103a389", + "ID": "feca3f00c1046a73", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/posc?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/posc?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -16827,13 +17076,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9c43495f0a367cef364c3a8c8d786ff5/11743354821748368049;o=0" + "20101f7f4ace8b565d65a450ac476a76/14330291334617334622;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -16842,7 +17091,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/posc?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/posc?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -16853,9 +17102,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -16867,10 +17118,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:05 GMT" + "Wed, 25 Jul 2018 18:23:45 GMT" ], "Etag": [ - "CKWTor6i99sCEAE=" + "CIaI5NTvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -16886,7 +17137,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220505000" + "1532543324000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -16895,16 +17146,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrq64:4037,/bns/yw/borg/yw/bns/blobstore2/bitpusher/172.scotty,acatli15:443" + "xgiadacc2:4342,/bns/xi/borg/xi/bns/blobstore2/bitpusher/142.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=rU41W92ZLIeHhgSr9ppQ" + "eid=MMBYW8iGOoq9swbt0Y3oAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/172.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/142.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -16913,13 +17164,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/172:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/142:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVnJZa216TkpmUHFPLVpSdGhXUTJobXlwOVZXV0dHVVh3cXh6RlJjMlREcXd3bVQ5TFo3YXgtQV9mWGRJMTI0V2dBS1JBUjhiZk9iVFAyX0o3M29kVXV4cXh6MG5uSmpPTkp3a0xZcm9PVzZNTk1SeFNXbzRxVEVianJ5OTJZX25kakZtY2VYTGZqaDdjNERqc1dYWkp3Z2gzMVBVYjBpTklFYW90RnFKWGVtNTNuM0JySm5TSFg2c1kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YmJLcUI1V3VlMmxucHZUTzJFdWh2M3VOdmlST2NXR1pKdUF5S2hYTTFOSHJqNDhVTVRVdElncmJvZVZRalpqTUJiZFRSeV9xZkRDNTg1VUNTSjRoa0tDTVMxR1NMenJWSUpuZzBxQjk2RE1lcEhvd3lpX0YwWEJQaF9EeXdsbXl5eTM2eWlOMTR4UXFjY2lPeHpHWkVwLUp3bEp5cTlvc095U0VNa1RubWJGRFd3Z0UxMURxWWlmbWMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -16934,17 +17185,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqxkgCuAqQWhnVurEmuURXH9ywpEIGJIYP9_Xg7gN8WPuqMPONvKvnqoQp1gYGv6lkT-1ju-KUpbofg7IIQMupMdxwFBBbrf2jOb-1VebG9dard-XY" + "AEnB2Uqj3DjJRgirmHvrKIU7eiHDANArEL6G-WUsLONGkdILniC7XlLJY0d8P6iSVCDz_YjxL8AddMCW4Pi4flL-YY5rfvCBbw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wb3NjLzE1MzAyMjAyMDU2MDczMzMiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjIiwKICJuYW1lIjogInBvc2MiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNTYwNzMzMyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowNS42MDVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDUuNjA1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA1LjYwNVoiLAogInNpemUiOiAiMyIsCiAibWQ1SGFzaCI6ICJyTDBZMjB6QytGenQ3MlZQek1TazJBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYz9nZW5lcmF0aW9uPTE1MzAyMjAyMDU2MDczMzMmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MvMTUzMDIyMDIwNTYwNzMzMy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAicG9zYyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDU2MDczMzMiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNLV1RvcjZpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcG9zYy8xNTMwMjIwMjA1NjA3MzMzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA1NjA3MzMzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNLV1RvcjZpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcG9zYy8xNTMwMjIwMjA1NjA3MzMzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA1NjA3MzMzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDS1dUb3I2aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MvMTUzMDIyMDIwNTYwNzMzMy91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA1NjA3MzMzIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDS1dUb3I2aTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiejhTdUhRPT0iLAogImV0YWciOiAiQ0tXVG9yNmk5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjLzE1MzI1NDMwMjQ4MjUzNTAiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjIiwKICJuYW1lIjogInBvc2MiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNDgyNTM1MCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0NC44MjRaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDQuODI0WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ0LjgyNFoiLAogInNpemUiOiAiMyIsCiAibWQ1SGFzaCI6ICJyTDBZMjB6QytGenQ3MlZQek1TazJBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYz9nZW5lcmF0aW9uPTE1MzI1NDMwMjQ4MjUzNTAmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Bvc2MvMTUzMjU0MzAyNDgyNTM1MC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAicG9zYyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjQ4MjUzNTAiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJYUk1TlR2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcG9zYy8xNTMyNTQzMDI0ODI1MzUwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI0ODI1MzUwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJYUk1TlR2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcG9zYy8xNTMyNTQzMDI0ODI1MzUwL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI0ODI1MzUwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSWFJNU5UdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Bvc2MvMTUzMjU0MzAyNDgyNTM1MC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI0ODI1MzUwIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSWFJNU5UdnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiejhTdUhRPT0iLAogImV0YWciOiAiQ0lhSTVOVHZ1dHdDRUFFPSIKfQo=" } }, { - "ID": "5c479d8c5a48f5aa", + "ID": "312b8b926b1bbf92", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/posc/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/posc?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/posc/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/posc?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -16963,13 +17214,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b5aad2c76e48670df22255bcb445faca/13286432256126035409;o=0" + "1ed78a47b8b4bf50c281c28af9471046/3524791857538729083;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -16978,7 +17229,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/posc/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/posc?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/posc/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/posc?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -16989,9 +17240,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -17003,7 +17256,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:06 GMT" + "Wed, 25 Jul 2018 18:23:45 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -17019,7 +17272,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220505000" + "1532543325000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -17028,16 +17281,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqk15:4133,/bns/yw/borg/yw/bns/blobstore2/bitpusher/502.scotty,acatli15:443" + "xgiadabp15:4495,/bns/xi/borg/xi/bns/blobstore2/bitpusher/80.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=rU41W4TYMYf0N5mFp7gP" + "eid=McBYW8CYAeyyswbR54r4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/502.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/80.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -17046,13 +17299,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/502:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/80:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBVnJZa216TkpmUHFPLVpSdGhXUTJobXlwOVZXV0dHVVh3cXh6RlJjMlREcXd3bVQ5TFo3YXgtQV9mWGRJMTI0V2dBS1JBUjhiZk9iVFAyX0o3M29kVXV4cXh6MG5uSmpPTkp3a0xZcm9PVzZNTk1SeFNXbzRxVEVianJ5OTJZX25kakZtY2VYTGZqaDdjNERqc1dYWkp3Z2gzMVBVYjBpTklFYW90RnFKWGVtNTNuM0JySm5TSFg2c1kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YmJLcUI1V3VlMmxucHZUTzJFdWh2M3VOdmlST2NXR1pKdUF5S2hYTTFOSHJqNDhVTVRVdElncmJvZVZRalpqTUJiZFRSeV9xZkRDNTg1VUNTSjRoa0tDTVMxR1NMenJWSUpuZzBxQjk2RE1lcEhvd3lpX0YwWEJQaF9EeXdsbXl5eTM2eWlOMTR4UXFjY2lPeHpHWkVwLUp3bEp5cTlvc095U0VNa1RubWJGRFd3Z0UxMURxWWlmbWMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -17067,17 +17320,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpNA_7ih0Mp9gJB_JeIbzd78W64edUfrETNFwMaMYLQ5zEO5P4aCqMARqGjJDafrj4LWDvAFhQm_m5OruOm7ZU3AqKfYzlcTLNtkzRSDfe0x7xqcYY" + "AEnB2Up1ardVFhfrmXS-En3-8VYXDoSxaldxJuKtIVmgRZ96Lz0kBwixSHiLxuH9gURotJ75dXZ1wPG5UppUK7L3qO5qu5gy2Q" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMyIsCiAib2JqZWN0U2l6ZSI6ICIzIiwKICJkb25lIjogdHJ1ZSwKICJyZXNvdXJjZSI6IHsKICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wb3NjLzE1MzAyMjAyMDYyMzk5OTMiLAogICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYyIsCiAgIm5hbWUiOiAicG9zYyIsCiAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDYyMzk5OTMiLAogICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowNi4yMzlaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA2LjIzOVoiLAogICJzdG9yYWdlQ2xhc3MiOiAiTVVMVElfUkVHSU9OQUwiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA2LjIzOVoiLAogICJzaXplIjogIjMiLAogICJtZDVIYXNoIjogInJMMFkyMHpDK0Z6dDcyVlB6TVNrMkE9PSIsCiAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYz9nZW5lcmF0aW9uPTE1MzAyMjAyMDYyMzk5OTMmYWx0PW1lZGlhIiwKICAiYWNsIjogWwogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wb3NjLzE1MzAyMjAyMDYyMzk5OTMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAib2JqZWN0IjogInBvc2MiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNjIzOTk5MyIsCiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAib3duZXJzIgogICAgfSwKICAgICJldGFnIjogIkNQbmh5TDZpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MvMTUzMDIyMDIwNjIzOTk5My9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgIm9iamVjdCI6ICJwb3NjIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDYyMzk5OTMiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgfSwKICAgICJldGFnIjogIkNQbmh5TDZpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MvMTUzMDIyMDIwNjIzOTk5My9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgIm9iamVjdCI6ICJwb3NjIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDYyMzk5OTMiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiUkVBREVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAidmlld2VycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDUG5oeUw2aTk5c0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wb3NjLzE1MzAyMjAyMDYyMzk5OTMvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3Bvc2MvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgIm9iamVjdCI6ICJwb3NjIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDYyMzk5OTMiLAogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiZXRhZyI6ICJDUG5oeUw2aTk5c0NFQUU9IgogICB9CiAgXSwKICAib3duZXIiOiB7CiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICB9LAogICJjcmMzMmMiOiAiejhTdUhRPT0iLAogICJldGFnIjogIkNQbmh5TDZpOTlzQ0VBRT0iCiB9Cn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiMyIsCiAib2JqZWN0U2l6ZSI6ICIzIiwKICJkb25lIjogdHJ1ZSwKICJyZXNvdXJjZSI6IHsKICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjLzE1MzI1NDMwMjU0NjE4MTAiLAogICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYyIsCiAgIm5hbWUiOiAicG9zYyIsCiAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjU0NjE4MTAiLAogICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0NS40NjFaIiwKICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ1LjQ2MVoiLAogICJzdG9yYWdlQ2xhc3MiOiAiTVVMVElfUkVHSU9OQUwiLAogICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ1LjQ2MVoiLAogICJzaXplIjogIjMiLAogICJtZDVIYXNoIjogInJMMFkyMHpDK0Z6dDcyVlB6TVNrMkE9PSIsCiAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYz9nZW5lcmF0aW9uPTE1MzI1NDMwMjU0NjE4MTAmYWx0PW1lZGlhIiwKICAiYWNsIjogWwogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjLzE1MzI1NDMwMjU0NjE4MTAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAib2JqZWN0IjogInBvc2MiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNTQ2MTgxMCIsCiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAib3duZXJzIgogICAgfSwKICAgICJldGFnIjogIkNMTDBpdFh2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Bvc2MvMTUzMjU0MzAyNTQ2MTgxMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgIm9iamVjdCI6ICJwb3NjIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjU0NjE4MTAiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgfSwKICAgICJldGFnIjogIkNMTDBpdFh2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Bvc2MvMTUzMjU0MzAyNTQ2MTgxMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgIm9iamVjdCI6ICJwb3NjIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjU0NjE4MTAiLAogICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiUkVBREVSIiwKICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgInRlYW0iOiAidmlld2VycyIKICAgIH0sCiAgICAiZXRhZyI6ICJDTEwwaXRYdnV0d0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjLzE1MzI1NDMwMjU0NjE4MTAvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL3Bvc2MvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgIm9iamVjdCI6ICJwb3NjIiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjU0NjE4MTAiLAogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiZXRhZyI6ICJDTEwwaXRYdnV0d0NFQUU9IgogICB9CiAgXSwKICAib3duZXIiOiB7CiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICB9LAogICJjcmMzMmMiOiAiejhTdUhRPT0iLAogICJldGFnIjogIkNMTDBpdFh2dXR3Q0VBRT0iCiB9Cn0K" } }, { - "ID": "64538cde9063c048", + "ID": "83237be49e8c7a1d", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -17087,19 +17340,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=edf9e0b0c7747f3d1e6f37536a0f46fa4153c6a85485bf5f9162d61ed2eb" + "multipart/related; boundary=0ce92c182e76e811b2f77fdb1cad255db3f89a0edaebe61b8b1757d75975" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3e4ec4374c8ee55d4050384d5a03724e/14093857937628850144;o=0" + "04f8146cc92bf375bfeabdd75bed176a/7309104431458567433;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -17108,20 +17361,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1lZGY5ZTBiMGM3NzQ3ZjNkMWU2ZjM3NTM2YTBmNDZmYTQxNTNjNmE4NTQ4NWJmNWY5MTYyZDYxZWQyZWINCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm5hbWUiOiJwb3NjMiIsInN0b3JhZ2VDbGFzcyI6Ik1VTFRJX1JFR0lPTkFMIn0KDQotLWVkZjllMGIwYzc3NDdmM2QxZTZmMzc1MzZhMGY0NmZhNDE1M2M2YTg1NDg1YmY1ZjkxNjJkNjFlZDJlYg0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCnh4eA0KLS1lZGY5ZTBiMGM3NzQ3ZjNkMWU2ZjM3NTM2YTBmNDZmYTQxNTNjNmE4NTQ4NWJmNWY5MTYyZDYxZWQyZWItLQ0K" + "Body": "LS0wY2U5MmMxODJlNzZlODExYjJmNzdmZGIxY2FkMjU1ZGIzZjg5YTBlZGFlYmU2MWI4YjE3NTdkNzU5NzUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm5hbWUiOiJwb3NjMiIsInN0b3JhZ2VDbGFzcyI6Ik1VTFRJX1JFR0lPTkFMIn0KDQotLTBjZTkyYzE4MmU3NmU4MTFiMmY3N2ZkYjFjYWQyNTVkYjNmODlhMGVkYWViZTYxYjhiMTc1N2Q3NTk3NQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCnh4eA0KLS0wY2U5MmMxODJlNzZlODExYjJmNzdmZGIxY2FkMjU1ZGIzZjg5YTBlZGFlYmU2MWI4YjE3NTdkNzU5NzUtLQ0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -17133,10 +17388,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:06 GMT" + "Wed, 25 Jul 2018 18:23:46 GMT" ], "Etag": [ - "CMWJ4r6i99sCEAE=" + "CK6NqdXvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -17152,7 +17407,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220505000" + "1532543324000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -17161,19 +17416,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrir7:4320,/bns/yw/borg/yw/bns/blobstore2/bitpusher/623.scotty,acatli15:443" + "xgiadabd16:4032,/bns/xi/borg/xi/bns/blobstore2/bitpusher/93.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=rk41W9OYFoyihwS80rTIBg" + "eid=McBYW8z_JKm0swaY5YzYCw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/623.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/93.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -17182,13 +17437,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/623:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/93:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVnJZa216TkpmUHFPLVpSdGhXUTJobXlwOVZXV0dHVVh3cXh6RlJjMlREcXd3bVQ5TFo3YXgtQV9mWGRJMTI0V2dBS1JBUjhiZk9iVFAyX0o3M29kVXV4cXh6MG5uSmpPTkp3a0xZcm9PVzZNTk1SeFNXbzRxVEVianJ5OTJZX25kakZtY2VYTGZqaDdjNERqc1dYWkp3Z2gzMVBVYjBpTklFYW90RnFKWGVtNTNuM0JySm5TSFg2c1kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YmJLcUI1V3VlMmxucHZUTzJFdWh2M3VOdmlST2NXR1pKdUF5S2hYTTFOSHJqNDhVTVRVdElncmJvZVZRalpqTUJiZFRSeV9xZkRDNTg1VUNTSjRoa0tDTVMxR1NMenJWSUpuZzBxQjk2RE1lcEhvd3lpX0YwWEJQaF9EeXdsbXl5eTM2eWlOMTR4UXFjY2lPeHpHWkVwLUp3bEp5cTlvc095U0VNa1RubWJGRFd3Z0UxMURxWWlmbWMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -17203,17 +17458,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrLn1pweAKhfkG2ToYtMYfFeZdqJJTyPxalnx59FEbZ8TYVkq4cl7OlfLbRfU-faGPlKhunn2tu8_owQkd__QIR7ZUox6FBUr1l03587xCe0y-93Ig" + "AEnB2UqJYMMSmgS-kmMEzxzfki-62xFzGeerbvOWAqcFVLKTUxekbasykNpBZgG01WCk0KUvCrtCyIOsVPovUS4YRhEvJcK-Iw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wb3NjMi8xNTMwMjIwMjA2NjU0NjYxIiwKICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYzIiLAogIm5hbWUiOiAicG9zYzIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNjY1NDY2MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowNi42NTRaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDYuNjU0WiIsCiAic3RvcmFnZUNsYXNzIjogIk1VTFRJX1JFR0lPTkFMIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA2LjY1NFoiLAogInNpemUiOiAiMyIsCiAibWQ1SGFzaCI6ICI5V0dxOXU4TDhVMUNDTHRHcE15enJRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYzI/Z2VuZXJhdGlvbj0xNTMwMjIwMjA2NjU0NjYxJmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wb3NjMi8xNTMwMjIwMjA2NjU0NjYxL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAicG9zYzIiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA2NjU0NjYxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTVdKNHI2aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MyLzE1MzAyMjAyMDY2NTQ2NjEvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNjY1NDY2MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTVdKNHI2aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MyLzE1MzAyMjAyMDY2NTQ2NjEvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNjY1NDY2MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ01XSjRyNmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wb3NjMi8xNTMwMjIwMjA2NjU0NjYxL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3Bvc2MyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNjY1NDY2MSIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ01XSjRyNmk5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIjE3cUFCUT09IiwKICJldGFnIjogIkNNV0o0cjZpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjMi8xNTMyNTQzMDI1OTU2NTI2IiwKICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYzIiLAogIm5hbWUiOiAicG9zYzIiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNTk1NjUyNiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0NS45NTZaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDUuOTU2WiIsCiAic3RvcmFnZUNsYXNzIjogIk1VTFRJX1JFR0lPTkFMIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ1Ljk1NloiLAogInNpemUiOiAiMyIsCiAibWQ1SGFzaCI6ICI5V0dxOXU4TDhVMUNDTHRHcE15enJRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYzI/Z2VuZXJhdGlvbj0xNTMyNTQzMDI1OTU2NTI2JmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjMi8xNTMyNTQzMDI1OTU2NTI2L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAicG9zYzIiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI1OTU2NTI2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDSzZOcWRYdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Bvc2MyLzE1MzI1NDMwMjU5NTY1MjYvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNTk1NjUyNiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDSzZOcWRYdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Bvc2MyLzE1MzI1NDMwMjU5NTY1MjYvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNTk1NjUyNiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0s2TnFkWHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjMi8xNTMyNTQzMDI1OTU2NTI2L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL3Bvc2MyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInBvc2MyIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNTk1NjUyNiIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0s2TnFkWHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIjE3cUFCUT09IiwKICJldGFnIjogIkNLNk5xZFh2dXR3Q0VBRT0iCn0K" } }, { - "ID": "178f15ccb2d976d2", + "ID": "de5efa8b33013b80", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -17223,19 +17478,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=92cd41ede4bbd0c6c4b248b1553479d7df048dd3c72d662cf4a332da14de" + "multipart/related; boundary=0c8df84be5403d1d794faabb9b6ddc90372117abe059c74ad678b826a0cb" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b556522f634141cded0a2f55d8ea903a/14901566189324970224;o=0" + "c6a16b15f5dab53e01f72c4065bbc25f/11165754974898128279;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -17244,20 +17499,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS05MmNkNDFlZGU0YmJkMGM2YzRiMjQ4YjE1NTM0NzlkN2RmMDQ4ZGQzYzcyZDY2MmNmNGEzMzJkYTE0ZGUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm5hbWUiOiJidWNrZXRJbkNvcHlBdHRycyJ9Cg0KLS05MmNkNDFlZGU0YmJkMGM2YzRiMjQ4YjE1NTM0NzlkN2RmMDQ4ZGQzYzcyZDY2MmNmNGEzMzJkYTE0ZGUNCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQpmb28NCi0tOTJjZDQxZWRlNGJiZDBjNmM0YjI0OGIxNTUzNDc5ZDdkZjA0OGRkM2M3MmQ2NjJjZjRhMzMyZGExNGRlLS0NCg==" + "Body": "LS0wYzhkZjg0YmU1NDAzZDFkNzk0ZmFhYmI5YjZkZGM5MDM3MjExN2FiZTA1OWM3NGFkNjc4YjgyNmEwY2INCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm5hbWUiOiJidWNrZXRJbkNvcHlBdHRycyJ9Cg0KLS0wYzhkZjg0YmU1NDAzZDFkNzk0ZmFhYmI5YjZkZGM5MDM3MjExN2FiZTA1OWM3NGFkNjc4YjgyNmEwY2INCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQpmb28NCi0tMGM4ZGY4NGJlNTQwM2QxZDc5NGZhYWJiOWI2ZGRjOTAzNzIxMTdhYmUwNTljNzRhZDY3OGI4MjZhMGNiLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -17269,10 +17526,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:07 GMT" + "Wed, 25 Jul 2018 18:23:46 GMT" ], "Etag": [ - "CKaxhb+i99sCEAE=" + "CKfExtXvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -17288,7 +17545,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220506000" + "1532543326000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -17297,19 +17554,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrss5:4314,/bns/yw/borg/yw/bns/blobstore2/bitpusher/444.scotty,acatli15:443" + "xgiadaak13:4444,/bns/xi/borg/xi/bns/blobstore2/bitpusher/146.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=rk41W-rtN9WyhgSNxaeACw" + "eid=MsBYW8S0B8W8swaY9Jb4Ag" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/444.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/146.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -17318,13 +17575,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/444:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/146:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVW44U2NvQW45ZXphX0pmQTNpLXZESWxDOVVJYXZLV3I4VkJ0aGNoSkh0ZmczTDVUVXJNWlVIWDdIenlsTGg0ZnRCRHh0M1JDMGJlOGRQdUZUaVFEVUNNMFRnSl9TSFBRU291bERTY3VaZzYybTQ0Si1qcjVFbEllc0dnZTJCR1JWRV9IeldyUWo2UmE4Z2VReFdQNWZyek5qelVzV0dlaUtqbExvYTk4bzZjN19mVm5MWW1oUEtLYkEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WkRXNkZrREc0T19kVlBudl9ZNTlNYTdycTQ1cFV6WDBDMXVtc3J5SGNiSE1CNXYxQi1lN1lhbEhwQ3Fya2NHZTF2aktrWUtkT2pnUkJKeHQ5SnBLOWx4aDFTaHpBbExCcGRVQ29faE1ONDNwWGdFSElWYU1mR3FSU3JEU3RRSzl3R21QN1FtcDI2T3lGQ3plUTlTbXZ6TXg2WmFYOGF3ZVZRd3R1LTA3OVpIUzMxeHM0cVNmUHBSdFkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -17339,17 +17596,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoexMgwHtPWkTlhFnrTa-8qBaKMHwh-YCgkDLvkfuSuvrlv1gSZn7lrNW5yIomFcDRkCruHQ_9uYddSlKhYDlG04lhvnFA0o-8BPzYFCipfHZebJ2w" + "AEnB2Uqplvuw7ZGheP5vuUQfVy8d7Ckotw71-TgBPwZwQepMGUdmWCDuce8fFo1lluD-w5hEHswfA2-O6OAy52qeO14tsITcyg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9idWNrZXRJbkNvcHlBdHRycy8xNTMwMjIwMjA3MjMzMTkwIiwKICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYnVja2V0SW5Db3B5QXR0cnMiLAogIm5hbWUiOiAiYnVja2V0SW5Db3B5QXR0cnMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNzIzMzE5MCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowNy4yMzFaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDcuMjMxWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA3LjIzMVoiLAogInNpemUiOiAiMyIsCiAibWQ1SGFzaCI6ICJyTDBZMjB6QytGenQ3MlZQek1TazJBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYnVja2V0SW5Db3B5QXR0cnM/Z2VuZXJhdGlvbj0xNTMwMjIwMjA3MjMzMTkwJmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9idWNrZXRJbkNvcHlBdHRycy8xNTMwMjIwMjA3MjMzMTkwL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9idWNrZXRJbkNvcHlBdHRycy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiYnVja2V0SW5Db3B5QXR0cnMiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA3MjMzMTkwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS2F4aGIraTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2J1Y2tldEluQ29weUF0dHJzLzE1MzAyMjAyMDcyMzMxOTAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9idWNrZXRJbkNvcHlBdHRycy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImJ1Y2tldEluQ29weUF0dHJzIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNzIzMzE5MCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDS2F4aGIraTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2J1Y2tldEluQ29weUF0dHJzLzE1MzAyMjAyMDcyMzMxOTAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9idWNrZXRJbkNvcHlBdHRycy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImJ1Y2tldEluQ29weUF0dHJzIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNzIzMzE5MCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0theGhiK2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9idWNrZXRJbkNvcHlBdHRycy8xNTMwMjIwMjA3MjMzMTkwL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2J1Y2tldEluQ29weUF0dHJzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImJ1Y2tldEluQ29weUF0dHJzIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNzIzMzE5MCIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0theGhiK2k5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIno4U3VIUT09IiwKICJldGFnIjogIkNLYXhoYitpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9idWNrZXRJbkNvcHlBdHRycy8xNTMyNTQzMDI2NDM4Njk1IiwKICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYnVja2V0SW5Db3B5QXR0cnMiLAogIm5hbWUiOiAiYnVja2V0SW5Db3B5QXR0cnMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNjQzODY5NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0Ni40MzhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDYuNDM4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ2LjQzOFoiLAogInNpemUiOiAiMyIsCiAibWQ1SGFzaCI6ICJyTDBZMjB6QytGenQ3MlZQek1TazJBPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYnVja2V0SW5Db3B5QXR0cnM/Z2VuZXJhdGlvbj0xNTMyNTQzMDI2NDM4Njk1JmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9idWNrZXRJbkNvcHlBdHRycy8xNTMyNTQzMDI2NDM4Njk1L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9idWNrZXRJbkNvcHlBdHRycy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiYnVja2V0SW5Db3B5QXR0cnMiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI2NDM4Njk1IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS2ZFeHRYdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2J1Y2tldEluQ29weUF0dHJzLzE1MzI1NDMwMjY0Mzg2OTUvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9idWNrZXRJbkNvcHlBdHRycy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImJ1Y2tldEluQ29weUF0dHJzIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNjQzODY5NSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDS2ZFeHRYdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2J1Y2tldEluQ29weUF0dHJzLzE1MzI1NDMwMjY0Mzg2OTUvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9idWNrZXRJbkNvcHlBdHRycy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImJ1Y2tldEluQ29weUF0dHJzIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNjQzODY5NSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0tmRXh0WHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9idWNrZXRJbkNvcHlBdHRycy8xNTMyNTQzMDI2NDM4Njk1L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2J1Y2tldEluQ29weUF0dHJzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImJ1Y2tldEluQ29weUF0dHJzIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNjQzODY5NSIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0tmRXh0WHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIno4U3VIUT09IiwKICJldGFnIjogIkNLZkV4dFh2dXR3Q0VBRT0iCn0K" } }, { - "ID": "e2ced8916b827780", + "ID": "128f47925b60ccf0", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/bucketInCopyAttrs/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/bucketInCopyAttrs?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/bucketInCopyAttrs/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/bucketInCopyAttrs?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -17368,13 +17625,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "15e689305a038e1e59307970e6191833/15636936475796269568;o=0" + "a30dd152cfb60272f5cbc0daaf33c275/14950066449323116069;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -17383,20 +17640,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/bucketInCopyAttrs/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/bucketInCopyAttrs?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/bucketInCopyAttrs/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/bucketInCopyAttrs?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAifQo=" }, "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "3010" @@ -17405,7 +17664,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:07 GMT" + "Wed, 25 Jul 2018 18:23:46 GMT" ], "Server": [ "UploadServer" @@ -17415,7 +17674,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220507000" + "1532543326000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -17424,16 +17683,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrv125:4223,/bns/yw/borg/yw/bns/blobstore2/bitpusher/25.scotty,acatli15:443" + "xgiadaah14:4439,/bns/xi/borg/xi/bns/blobstore2/bitpusher/13.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=r041W6jgFZLuhATIx7SoDA" + "eid=MsBYW4-9I6u_swbmtYzYDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/25.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/13.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -17442,13 +17701,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/25:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/13:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBVW44U2NvQW45ZXphX0pmQTNpLXZESWxDOVVJYXZLV3I4VkJ0aGNoSkh0ZmczTDVUVXJNWlVIWDdIenlsTGg0ZnRCRHh0M1JDMGJlOGRQdUZUaVFEVUNNMFRnSl9TSFBRU291bERTY3VaZzYybTQ0Si1qcjVFbEllc0dnZTJCR1JWRV9IeldyUWo2UmE4Z2VReFdQNWZyek5qelVzV0dlaUtqbExvYTk4bzZjN19mVm5MWW1oUEtLYkEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3WkRXNkZrREc0T19kVlBudl9ZNTlNYTdycTQ1cFV6WDBDMXVtc3J5SGNiSE1CNXYxQi1lN1lhbEhwQ3Fya2NHZTF2aktrWUtkT2pnUkJKeHQ5SnBLOWx4aDFTaHpBbExCcGRVQ29faE1ONDNwWGdFSElWYU1mR3FSU3JEU3RRSzl3R21QN1FtcDI2T3lGQ3plUTlTbXZ6TXg2WmFYOGF3ZVZRd3R1LTA3OVpIUzMxeHM0cVNmUHBSdFkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -17463,17 +17722,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Upi14Hbj_7F4nuIz_Utwy65fnPCBcYO-pR97u6Nzb7XvSvTkhubPDKL3pbUYHX7xNYrsFiQJyDFm2yHzmZDJkN9ZbL1zJZG6Yhfraue6sJ5o34pB4s" + "AEnB2Up_6SJzIe05XZNHiZD1_JDHC9J15hT0YvzJC33u7PERcG0q70qG9QJTDBTY6lM14e0BOzfI_0GH9cwqxJT6UzjULG8sjQ" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiUmVxdWlyZWQiLAogICAgImRlYnVnSW5mbyI6ICJjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1udWxsLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9YmFkUmVxdWVzdCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uUkVRVUlSRUQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPW51bGwsIGVycm9yUHJvdG9Db2RlPVJFUVVJUkVELCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5kZXN0aW5hdGlvbl9yZXNvdXJjZS5pZC5uYW1lLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkuZGVzdGluYXRpb25fcmVzb3VyY2UuaWQubmFtZSwgbWVzc2FnZT1SZXF1aXJlZCwgcmVhc29uPXJlcXVpcmVkLCBycGNDb2RlPTQwMH0gUmVxdWlyZWRcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAwLAogICJtZXNzYWdlIjogIlJlcXVpcmVkIgogfQp9Cg==" } }, { - "ID": "2a6af5d5914447a4", + "ID": "01999eeeea870b34", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -17483,19 +17742,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=96beff29826c321cb036d06a5f110d104042a66bf17abc67a91bfb41bfd9" + "multipart/related; boundary=935472e85ae798cf4b2d91705c397a11b28a3003d49ba4db3450b4d17c11" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "947842c916a0bd702dff8db8fd6448a2/16444362157315795728;o=0" + "4cfc96a7d2cc78bf0fde3c2af9f48337/360254394029770420;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -17504,20 +17763,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS05NmJlZmYyOTgyNmMzMjFjYjAzNmQwNmE1ZjExMGQxMDQwNDJhNjZiZjE3YWJjNjdhOTFiZmI0MWJmZDkNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNyYzMyYyI6ImNIK0Erdz09IiwibmFtZSI6Imhhc2hlc09uVXBsb2FkLTEifQoNCi0tOTZiZWZmMjk4MjZjMzIxY2IwMzZkMDZhNWYxMTBkMTA0MDQyYTY2YmYxN2FiYzY3YTkxYmZiNDFiZmQ5DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KSSBjYW4ndCB3YWl0IHRvIGJlIHZlcmlmaWVkDQotLTk2YmVmZjI5ODI2YzMyMWNiMDM2ZDA2YTVmMTEwZDEwNDA0MmE2NmJmMTdhYmM2N2E5MWJmYjQxYmZkOS0tDQo=" + "Body": "LS05MzU0NzJlODVhZTc5OGNmNGIyZDkxNzA1YzM5N2ExMWIyOGEzMDAzZDQ5YmE0ZGIzNDUwYjRkMTdjMTENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNyYzMyYyI6ImNIK0Erdz09IiwibmFtZSI6Imhhc2hlc09uVXBsb2FkLTEifQoNCi0tOTM1NDcyZTg1YWU3OThjZjRiMmQ5MTcwNWMzOTdhMTFiMjhhMzAwM2Q0OWJhNGRiMzQ1MGI0ZDE3YzExDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KSSBjYW4ndCB3YWl0IHRvIGJlIHZlcmlmaWVkDQotLTkzNTQ3MmU4NWFlNzk4Y2Y0YjJkOTE3MDVjMzk3YTExYjI4YTMwMDNkNDliYTRkYjM0NTBiNGQxN2MxMS0tDQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -17529,10 +17790,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:07 GMT" + "Wed, 25 Jul 2018 18:23:47 GMT" ], "Etag": [ - "CKPiqr+i99sCEAE=" + "CMTC69XvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -17548,7 +17809,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220507000" + "1532543326000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -17557,19 +17818,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrlj81:4352,/bns/yw/borg/yw/bns/blobstore2/bitpusher/271.scotty,acatli15:443" + "xiiadcby9:4035,/bns/xi/borg/xi/bns/blobstore2/bitpusher/29.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=r041W-_mHcW6N4SVrcgJ" + "eid=MsBYW_qJKoKyswbEgp2YDw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/271.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/29.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -17578,13 +17839,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/271:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/29:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWHJPNUkxYUpBc1pqVUJQQkxsWlpQQ0RaUURpeWtuNkMwRFJXbUlacDBSUHk2QVNxeXZvRkkyY3dMaklzQzEyUnhFeHJ6ajBSdDFJSWJ2cndIUldNOEhwekhyN0hFWnBUVERuSmk1Q29uQmZ1ODRtWGVPbnRyNzFzYzBFa00yU1RpMTZuTC1YZ0JiNkE0bWNSMXMtWjc2Y0dFSUV3OVJHbnlwQUdKZjhPSzZZZmNuS1drWW11OWJyQlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WkRXNkZrREc0T19kVlBudl9ZNTlNYTdycTQ1cFV6WDBDMXVtc3J5SGNiSE1CNXYxQi1lN1lhbEhwQ3Fya2NHZTF2aktrWUtkT2pnUkJKeHQ5SnBLOWx4aDFTaHpBbExCcGRVQ29faE1ONDNwWGdFSElWYU1mR3FSU3JEU3RRSzl3R21QN1FtcDI2T3lGQ3plUTlTbXZ6TXg2WmFYOGF3ZVZRd3R1LTA3OVpIUzMxeHM0cVNmUHBSdFkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -17599,17 +17860,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrRt6Av5wwAW_BdgwQaGw9vVQJr8N4dU764Hei0XufSFpz58s_O7o0ojuSj5J3kvHslZcwRw-hLB4v2TjkAvx-kopW5YGJJe728NzQTeb7hwLhx52s" + "AEnB2UpmbyA7wM4Y0p9ww8Ldju4LjWgVYwE852X2j5fsQoOcmTr1fgY4dP4yyNqY-kR0ffWEDfHADice5SKA1_dW2u1XpniI_w" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzAyMjAyMDc4NDU2NjciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9oYXNoZXNPblVwbG9hZC0xIiwKICJuYW1lIjogImhhc2hlc09uVXBsb2FkLTEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNzg0NTY2NyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowNy44NDVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDcuODQ1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA3Ljg0NVoiLAogInNpemUiOiAiMjciLAogIm1kNUhhc2giOiAib2ZaakdsY1hQSmlHT0FmS0ZiSmwxUT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTE/Z2VuZXJhdGlvbj0xNTMwMjIwMjA3ODQ1NjY3JmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzAyMjAyMDc4NDU2NjcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImhhc2hlc09uVXBsb2FkLTEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA3ODQ1NjY3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDS1BpcXIraTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMDIyMDIwNzg0NTY2Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNzg0NTY2NyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDS1BpcXIraTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMDIyMDIwNzg0NTY2Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNzg0NTY2NyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0tQaXFyK2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzAyMjAyMDc4NDU2NjcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vaGFzaGVzT25VcGxvYWQtMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNzg0NTY2NyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0tQaXFyK2k5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogImNIK0Erdz09IiwKICJldGFnIjogIkNLUGlxcitpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjcwNDQ2NzYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9oYXNoZXNPblVwbG9hZC0xIiwKICJuYW1lIjogImhhc2hlc09uVXBsb2FkLTEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNzA0NDY3NiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0Ny4wNDRaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDcuMDQ0WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ3LjA0NFoiLAogInNpemUiOiAiMjciLAogIm1kNUhhc2giOiAib2ZaakdsY1hQSmlHT0FmS0ZiSmwxUT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTE/Z2VuZXJhdGlvbj0xNTMyNTQzMDI3MDQ0Njc2JmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjcwNDQ2NzYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImhhc2hlc09uVXBsb2FkLTEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI3MDQ0Njc2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTVRDNjlYdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMjU0MzAyNzA0NDY3Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNzA0NDY3NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTVRDNjlYdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMjU0MzAyNzA0NDY3Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNzA0NDY3NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ01UQzY5WHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjcwNDQ2NzYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vaGFzaGVzT25VcGxvYWQtMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNzA0NDY3NiIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ01UQzY5WHZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogImNIK0Erdz09IiwKICJldGFnIjogIkNNVEM2OVh2dXR3Q0VBRT0iCn0K" } }, { - "ID": "fa070c41f0f81c3e", + "ID": "451064af554caf84", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -17619,19 +17880,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=26f5537ed8447d9dbf01da693f6419ef0741c7afdff00288bee5d00663c1" + "multipart/related; boundary=d82f40ea044c9ab8b1891c5cfa83b8886ba519fd8535eeb78ba0d134ba8d" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "bbb2e4d8139e295b0aaddf78df0d5daf/17252070408995204383;o=0" + "d7a562c048721881dba975eb1a6daba0/4144566972244510530;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -17640,20 +17901,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0yNmY1NTM3ZWQ4NDQ3ZDlkYmYwMWRhNjkzZjY0MTllZjA3NDFjN2FmZGZmMDAyODhiZWU1ZDAwNjYzYzENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNyYzMyYyI6ImNIK0EvQT09IiwibmFtZSI6Imhhc2hlc09uVXBsb2FkLTEifQoNCi0tMjZmNTUzN2VkODQ0N2Q5ZGJmMDFkYTY5M2Y2NDE5ZWYwNzQxYzdhZmRmZjAwMjg4YmVlNWQwMDY2M2MxDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KSSBjYW4ndCB3YWl0IHRvIGJlIHZlcmlmaWVkDQotLTI2ZjU1MzdlZDg0NDdkOWRiZjAxZGE2OTNmNjQxOWVmMDc0MWM3YWZkZmYwMDI4OGJlZTVkMDA2NjNjMS0tDQo=" + "Body": "LS1kODJmNDBlYTA0NGM5YWI4YjE4OTFjNWNmYTgzYjg4ODZiYTUxOWZkODUzNWVlYjc4YmEwZDEzNGJhOGQNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNyYzMyYyI6ImNIK0EvQT09IiwibmFtZSI6Imhhc2hlc09uVXBsb2FkLTEifQoNCi0tZDgyZjQwZWEwNDRjOWFiOGIxODkxYzVjZmE4M2I4ODg2YmE1MTlmZDg1MzVlZWI3OGJhMGQxMzRiYThkDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KSSBjYW4ndCB3YWl0IHRvIGJlIHZlcmlmaWVkDQotLWQ4MmY0MGVhMDQ0YzlhYjhiMTg5MWM1Y2ZhODNiODg4NmJhNTE5ZmQ4NTM1ZWViNzhiYTBkMTM0YmE4ZC0tDQo=" }, "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "3339" @@ -17662,7 +17925,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:07 GMT" + "Wed, 25 Jul 2018 18:23:47 GMT" ], "Server": [ "UploadServer" @@ -17672,7 +17935,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220507000" + "1532543326000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -17681,16 +17944,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrdv10:4003,/bns/yw/borg/yw/bns/blobstore2/bitpusher/461.scotty,acatli15:443" + "xiiadcdk2:4016,/bns/xi/borg/xi/bns/blobstore2/bitpusher/140.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=r041W5yKO8aNhAT3nLboBA" + "eid=M8BYW7S4CYa9swbN3qfoAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/461.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/140.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -17699,13 +17962,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/461:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/140:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWHJPNUkxYUpBc1pqVUJQQkxsWlpQQ0RaUURpeWtuNkMwRFJXbUlacDBSUHk2QVNxeXZvRkkyY3dMaklzQzEyUnhFeHJ6ajBSdDFJSWJ2cndIUldNOEhwekhyN0hFWnBUVERuSmk1Q29uQmZ1ODRtWGVPbnRyNzFzYzBFa00yU1RpMTZuTC1YZ0JiNkE0bWNSMXMtWjc2Y0dFSUV3OVJHbnlwQUdKZjhPSzZZZmNuS1drWW11OWJyQlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WkRXNkZrREc0T19kVlBudl9ZNTlNYTdycTQ1cFV6WDBDMXVtc3J5SGNiSE1CNXYxQi1lN1lhbEhwQ3Fya2NHZTF2aktrWUtkT2pnUkJKeHQ5SnBLOWx4aDFTaHpBbExCcGRVQ29faE1ONDNwWGdFSElWYU1mR3FSU3JEU3RRSzl3R21QN1FtcDI2T3lGQ3plUTlTbXZ6TXg2WmFYOGF3ZVZRd3R1LTA3OVpIUzMxeHM0cVNmUHBSdFkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -17720,17 +17983,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Upz2Wf_831ck-W7BEMSRU2s_up5x3P6hVBLzoY7LKAd4fg2ijaW8RxC_NSthJl3CDa-Cp04SKitjCMs9ScKRqyDZ64BVdo6adNtYM5udyetJFx92Y4" + "AEnB2UpwjATFwpxRuCj0oWcnArdspu0PVIwhFkCs-3gEUDXnepb5oEcHs6JvFKYhQM18gLYnS7WJXiGeJVLZXFQGQUNBD9vZqA" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiaW52YWxpZCIsCiAgICAibWVzc2FnZSI6ICJQcm92aWRlZCBDUkMzMkMgXCJjSCtBL0E9PVwiIGRvZXNuJ3QgbWF0Y2ggY2FsY3VsYXRlZCBDUkMzMkMgXCJjSCtBK3c9PVwiLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1JTlZBTElEX1ZBTFVFLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89bnVsbCwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLklOVkFMSURfVkFMVUUsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPW51bGwsIGVycm9yUHJvdG9Db2RlPUlOVkFMSURfVkFMVUUsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlLmNyYzMyYywgbWVzc2FnZT1Qcm92aWRlZCBDUkMzMkMgXCJjSCtBL0E9PVwiIGRvZXNuJ3QgbWF0Y2ggY2FsY3VsYXRlZCBDUkMzMkMgXCJjSCtBK3c9PVwiLiwgdW5uYW1lZEFyZ3VtZW50cz1bY0grQS9BPT1dfSwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlLmNyYzMyYywgbWVzc2FnZT1Qcm92aWRlZCBDUkMzMkMgXCJjSCtBL0E9PVwiIGRvZXNuJ3QgbWF0Y2ggY2FsY3VsYXRlZCBDUkMzMkMgXCJjSCtBK3c9PVwiLiwgcmVhc29uPWludmFsaWQsIHJwY0NvZGU9NDAwfSBQcm92aWRlZCBDUkMzMkMgXCJjSCtBL0E9PVwiIGRvZXNuJ3QgbWF0Y2ggY2FsY3VsYXRlZCBDUkMzMkMgXCJjSCtBK3c9PVwiLlxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiUHJvdmlkZWQgQ1JDMzJDIFwiY0grQS9BPT1cIiBkb2Vzbid0IG1hdGNoIGNhbGN1bGF0ZWQgQ1JDMzJDIFwiY0grQSt3PT1cIi4iCiB9Cn0K" } }, { - "ID": "822ec2bc6f2c2429", + "ID": "0d70b948b18d141b", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -17740,19 +18003,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=629b36eaa36d2dca8eaa8e28bc0c222a84b19ed52dfef21166cd09061b8a" + "multipart/related; boundary=62ef3b087965c363be706e82edffcbb01a97e3c088745845bcd085738d06" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "646287bbf43f543d8de96219f105ba31/18059496090514730543;o=0" + "e2b090ad860f5e4c42b810cd8832197b/7928879546181126096;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -17761,20 +18024,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS02MjliMzZlYWEzNmQyZGNhOGVhYThlMjhiYzBjMjIyYTg0YjE5ZWQ1MmRmZWYyMTE2NmNkMDkwNjFiOGENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm5hbWUiOiJoYXNoZXNPblVwbG9hZC0xIn0KDQotLTYyOWIzNmVhYTM2ZDJkY2E4ZWFhOGUyOGJjMGMyMjJhODRiMTllZDUyZGZlZjIxMTY2Y2QwOTA2MWI4YQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCkkgY2FuJ3Qgd2FpdCB0byBiZSB2ZXJpZmllZA0KLS02MjliMzZlYWEzNmQyZGNhOGVhYThlMjhiYzBjMjIyYTg0YjE5ZWQ1MmRmZWYyMTE2NmNkMDkwNjFiOGEtLQ0K" + "Body": "LS02MmVmM2IwODc5NjVjMzYzYmU3MDZlODJlZGZmY2JiMDFhOTdlM2MwODg3NDU4NDViY2QwODU3MzhkMDYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm5hbWUiOiJoYXNoZXNPblVwbG9hZC0xIn0KDQotLTYyZWYzYjA4Nzk2NWMzNjNiZTcwNmU4MmVkZmZjYmIwMWE5N2UzYzA4ODc0NTg0NWJjZDA4NTczOGQwNg0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCkkgY2FuJ3Qgd2FpdCB0byBiZSB2ZXJpZmllZA0KLS02MmVmM2IwODc5NjVjMzYzYmU3MDZlODJlZGZmY2JiMDFhOTdlM2MwODg3NDU4NDViY2QwODU3MzhkMDYtLQ0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -17786,10 +18051,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:08 GMT" + "Wed, 25 Jul 2018 18:23:47 GMT" ], "Etag": [ - "CNqsyL+i99sCEAE=" + "CNmZitbvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -17805,7 +18070,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220507000" + "1532543326000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -17814,19 +18079,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrmm2:4409,/bns/yw/borg/yw/bns/blobstore2/bitpusher/303.scotty,acatli15:443" + "xgiadabq10:4444,/bns/xi/borg/xi/bns/blobstore2/bitpusher/91.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=sE41W7qVAYn2hASxs6mIBQ" + "eid=M8BYW73-C8K8swaH0qagBg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/303.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/91.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -17835,13 +18100,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/303:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/91:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWHJPNUkxYUpBc1pqVUJQQkxsWlpQQ0RaUURpeWtuNkMwRFJXbUlacDBSUHk2QVNxeXZvRkkyY3dMaklzQzEyUnhFeHJ6ajBSdDFJSWJ2cndIUldNOEhwekhyN0hFWnBUVERuSmk1Q29uQmZ1ODRtWGVPbnRyNzFzYzBFa00yU1RpMTZuTC1YZ0JiNkE0bWNSMXMtWjc2Y0dFSUV3OVJHbnlwQUdKZjhPSzZZZmNuS1drWW11OWJyQlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WkRXNkZrREc0T19kVlBudl9ZNTlNYTdycTQ1cFV6WDBDMXVtc3J5SGNiSE1CNXYxQi1lN1lhbEhwQ3Fya2NHZTF2aktrWUtkT2pnUkJKeHQ5SnBLOWx4aDFTaHpBbExCcGRVQ29faE1ONDNwWGdFSElWYU1mR3FSU3JEU3RRSzl3R21QN1FtcDI2T3lGQ3plUTlTbXZ6TXg2WmFYOGF3ZVZRd3R1LTA3OVpIUzMxeHM0cVNmUHBSdFkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -17856,17 +18121,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqA-tRHFuYdqCCgJq1hwfNPO_m48Am7CX8BLK4zVoP4FamfuRh5scrhuX6PzWkDC82Q5bz_XrPeJgSiE3GQdnQAQYcZm0rcrMhLlIyq6_2euasjq0M" + "AEnB2Uqr9OFRvVjwg6BAvUWHm5Nfi7IkEAab8iGt7x9mahy6J3g5O7fTosieTldNbRrwUVHQd03QxH1XTuere_Oauj-4_sxgBQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzAyMjAyMDgzMzAzMzAiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9oYXNoZXNPblVwbG9hZC0xIiwKICJuYW1lIjogImhhc2hlc09uVXBsb2FkLTEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwODMzMDMzMCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowOC4zMjlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDguMzI5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA4LjMyOVoiLAogInNpemUiOiAiMjciLAogIm1kNUhhc2giOiAib2ZaakdsY1hQSmlHT0FmS0ZiSmwxUT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTE/Z2VuZXJhdGlvbj0xNTMwMjIwMjA4MzMwMzMwJmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzAyMjAyMDgzMzAzMzAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImhhc2hlc09uVXBsb2FkLTEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA4MzMwMzMwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTnFzeUwraTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMDIyMDIwODMzMDMzMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwODMzMDMzMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTnFzeUwraTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMDIyMDIwODMzMDMzMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwODMzMDMzMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ05xc3lMK2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzAyMjAyMDgzMzAzMzAvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vaGFzaGVzT25VcGxvYWQtMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwODMzMDMzMCIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ05xc3lMK2k5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogImNIK0Erdz09IiwKICJldGFnIjogIkNOcXN5TCtpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjc1NDczNTMiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9oYXNoZXNPblVwbG9hZC0xIiwKICJuYW1lIjogImhhc2hlc09uVXBsb2FkLTEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNzU0NzM1MyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0Ny41NDdaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDcuNTQ3WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ3LjU0N1oiLAogInNpemUiOiAiMjciLAogIm1kNUhhc2giOiAib2ZaakdsY1hQSmlHT0FmS0ZiSmwxUT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTE/Z2VuZXJhdGlvbj0xNTMyNTQzMDI3NTQ3MzUzJmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjc1NDczNTMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImhhc2hlc09uVXBsb2FkLTEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI3NTQ3MzUzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTm1aaXRidnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMjU0MzAyNzU0NzM1My9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNzU0NzM1MyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTm1aaXRidnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMjU0MzAyNzU0NzM1My9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNzU0NzM1MyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ05tWml0YnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjc1NDczNTMvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vaGFzaGVzT25VcGxvYWQtMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNzU0NzM1MyIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ05tWml0YnZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogImNIK0Erdz09IiwKICJldGFnIjogIkNObVppdGJ2dXR3Q0VBRT0iCn0K" } }, { - "ID": "bb653f4cd638f132", + "ID": "f2e1e0c818a5bdf0", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -17876,19 +18141,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=b440e66db07c5212504ab799a81480a630bf5c516aeef455bc4131892f86" + "multipart/related; boundary=864286ac34cb3a5dd1ec7c6b49ea9bdb8136fa8e730649b2e93e4edc7ab6" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "06057a41303f934dca680e180ff98a23/420741743461232703;o=0" + "fc44c98154ac1438312605318a4551ba/11785528990109059166;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -17897,20 +18162,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1iNDQwZTY2ZGIwN2M1MjEyNTA0YWI3OTlhODE0ODBhNjMwYmY1YzUxNmFlZWY0NTViYzQxMzE4OTJmODYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm1kNUhhc2giOiJvZlpqR2xjWFBKaUdPQWZLRmJKbDFRPT0iLCJuYW1lIjoiaGFzaGVzT25VcGxvYWQtMSJ9Cg0KLS1iNDQwZTY2ZGIwN2M1MjEyNTA0YWI3OTlhODE0ODBhNjMwYmY1YzUxNmFlZWY0NTViYzQxMzE4OTJmODYNCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQpJIGNhbid0IHdhaXQgdG8gYmUgdmVyaWZpZWQNCi0tYjQ0MGU2NmRiMDdjNTIxMjUwNGFiNzk5YTgxNDgwYTYzMGJmNWM1MTZhZWVmNDU1YmM0MTMxODkyZjg2LS0NCg==" + "Body": "LS04NjQyODZhYzM0Y2IzYTVkZDFlYzdjNmI0OWVhOWJkYjgxMzZmYThlNzMwNjQ5YjJlOTNlNGVkYzdhYjYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm1kNUhhc2giOiJvZlpqR2xjWFBKaUdPQWZLRmJKbDFRPT0iLCJuYW1lIjoiaGFzaGVzT25VcGxvYWQtMSJ9Cg0KLS04NjQyODZhYzM0Y2IzYTVkZDFlYzdjNmI0OWVhOWJkYjgxMzZmYThlNzMwNjQ5YjJlOTNlNGVkYzdhYjYNCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQpJIGNhbid0IHdhaXQgdG8gYmUgdmVyaWZpZWQNCi0tODY0Mjg2YWMzNGNiM2E1ZGQxZWM3YzZiNDllYTliZGI4MTM2ZmE4ZTczMDY0OWIyZTkzZTRlZGM3YWI2LS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -17922,10 +18189,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:08 GMT" + "Wed, 25 Jul 2018 18:23:48 GMT" ], "Etag": [ - "CMSq57+i99sCEAE=" + "CPKzrdbvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -17941,7 +18208,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220508000" + "1532543326000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -17950,19 +18217,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrgh6:4422,/bns/yw/borg/yw/bns/blobstore2/bitpusher/4.scotty,acatli15:443" + "xgiadaai14:4184,/bns/xi/borg/xi/bns/blobstore2/bitpusher/63.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=sE41W57tHorvhAT60qWICA" + "eid=M8BYW8LZMM6zswbii4FI" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/4.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/63.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -17971,13 +18238,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/4:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/63:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWHJPNUkxYUpBc1pqVUJQQkxsWlpQQ0RaUURpeWtuNkMwRFJXbUlacDBSUHk2QVNxeXZvRkkyY3dMaklzQzEyUnhFeHJ6ajBSdDFJSWJ2cndIUldNOEhwekhyN0hFWnBUVERuSmk1Q29uQmZ1ODRtWGVPbnRyNzFzYzBFa00yU1RpMTZuTC1YZ0JiNkE0bWNSMXMtWjc2Y0dFSUV3OVJHbnlwQUdKZjhPSzZZZmNuS1drWW11OWJyQlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WkRXNkZrREc0T19kVlBudl9ZNTlNYTdycTQ1cFV6WDBDMXVtc3J5SGNiSE1CNXYxQi1lN1lhbEhwQ3Fya2NHZTF2aktrWUtkT2pnUkJKeHQ5SnBLOWx4aDFTaHpBbExCcGRVQ29faE1ONDNwWGdFSElWYU1mR3FSU3JEU3RRSzl3R21QN1FtcDI2T3lGQ3plUTlTbXZ6TXg2WmFYOGF3ZVZRd3R1LTA3OVpIUzMxeHM0cVNmUHBSdFkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -17992,17 +18259,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrPyFzdsi76dubyuB_VkkaXbf9_fwqPZWSbzvwTwTMKtn5Lah3L1zgGQuWBu12TMEr1dhAC2CoHq6B0Mg9AzghzgKq5mrgVP8M6V3l-l9KcdyBBLq8" + "AEnB2UpCtVU0WWwIrkQjUmRuh1gL9PhYDzDSxUQuhfNFPYlYiWW-xG2K-1nbfLIGUfNqjETkaR7yVoEO_ac8q8IEKh_UqBv2mg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzAyMjAyMDg4Mzc5NTYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9oYXNoZXNPblVwbG9hZC0xIiwKICJuYW1lIjogImhhc2hlc09uVXBsb2FkLTEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwODgzNzk1NiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowOC44MzdaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDguODM3WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA4LjgzN1oiLAogInNpemUiOiAiMjciLAogIm1kNUhhc2giOiAib2ZaakdsY1hQSmlHT0FmS0ZiSmwxUT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTE/Z2VuZXJhdGlvbj0xNTMwMjIwMjA4ODM3OTU2JmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzAyMjAyMDg4Mzc5NTYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImhhc2hlc09uVXBsb2FkLTEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA4ODM3OTU2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTVNxNTcraTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMDIyMDIwODgzNzk1Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwODgzNzk1NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTVNxNTcraTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMDIyMDIwODgzNzk1Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwODgzNzk1NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ01TcTU3K2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzAyMjAyMDg4Mzc5NTYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vaGFzaGVzT25VcGxvYWQtMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwODgzNzk1NiIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ01TcTU3K2k5OXNDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogImNIK0Erdz09IiwKICJldGFnIjogIkNNU3E1NytpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjgxMjQxNDYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9oYXNoZXNPblVwbG9hZC0xIiwKICJuYW1lIjogImhhc2hlc09uVXBsb2FkLTEiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyODEyNDE0NiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0OC4xMjNaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDguMTIzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ4LjEyM1oiLAogInNpemUiOiAiMjciLAogIm1kNUhhc2giOiAib2ZaakdsY1hQSmlHT0FmS0ZiSmwxUT09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTE/Z2VuZXJhdGlvbj0xNTMyNTQzMDI4MTI0MTQ2JmFsdD1tZWRpYSIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjgxMjQxNDYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImhhc2hlc09uVXBsb2FkLTEiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI4MTI0MTQ2IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDUEt6cmRidnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMjU0MzAyODEyNDE0Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyODEyNDE0NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDUEt6cmRidnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMjU0MzAyODEyNDE0Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyODEyNDE0NiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ1BLenJkYnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjgxMjQxNDYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vaGFzaGVzT25VcGxvYWQtMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyODEyNDE0NiIsCiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ1BLenJkYnZ1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogImNIK0Erdz09IiwKICJldGFnIjogIkNQS3pyZGJ2dXR3Q0VBRT0iCn0K" } }, { - "ID": "203487c689494c8f", + "ID": "3a2df00cf2e07ee2", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -18012,19 +18279,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=b9429e76f2bf35c82a53f136cc12faf7e3e44309b84314030d566979e2b3" + "multipart/related; boundary=96085bef3440b47b82d86f1506d14298a0c056f4e35488b6fed3847e9995" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "83228e9ff545cba9e4ea3d518be4be43/1156112025654407503;o=0" + "1e217d8d6079d0fc302a215a999012c6/15569841568323733997;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -18033,20 +18300,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1iOTQyOWU3NmYyYmYzNWM4MmE1M2YxMzZjYzEyZmFmN2UzZTQ0MzA5Yjg0MzE0MDMwZDU2Njk3OWUyYjMNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm1kNUhhc2giOiJvdlpqR2xjWFBKaUdPQWZLRmJKbDFRPT0iLCJuYW1lIjoiaGFzaGVzT25VcGxvYWQtMSJ9Cg0KLS1iOTQyOWU3NmYyYmYzNWM4MmE1M2YxMzZjYzEyZmFmN2UzZTQ0MzA5Yjg0MzE0MDMwZDU2Njk3OWUyYjMNCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQpJIGNhbid0IHdhaXQgdG8gYmUgdmVyaWZpZWQNCi0tYjk0MjllNzZmMmJmMzVjODJhNTNmMTM2Y2MxMmZhZjdlM2U0NDMwOWI4NDMxNDAzMGQ1NjY5NzllMmIzLS0NCg==" + "Body": "LS05NjA4NWJlZjM0NDBiNDdiODJkODZmMTUwNmQxNDI5OGEwYzA1NmY0ZTM1NDg4YjZmZWQzODQ3ZTk5OTUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm1kNUhhc2giOiJvdlpqR2xjWFBKaUdPQWZLRmJKbDFRPT0iLCJuYW1lIjoiaGFzaGVzT25VcGxvYWQtMSJ9Cg0KLS05NjA4NWJlZjM0NDBiNDdiODJkODZmMTUwNmQxNDI5OGEwYzA1NmY0ZTM1NDg4YjZmZWQzODQ3ZTk5OTUNCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOA0KDQpJIGNhbid0IHdhaXQgdG8gYmUgdmVyaWZpZWQNCi0tOTYwODViZWYzNDQwYjQ3YjgyZDg2ZjE1MDZkMTQyOThhMGMwNTZmNGUzNTQ4OGI2ZmVkMzg0N2U5OTk1LS0NCg==" }, "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "3553" @@ -18055,7 +18324,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:08 GMT" + "Wed, 25 Jul 2018 18:23:48 GMT" ], "Server": [ "UploadServer" @@ -18065,7 +18334,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220507000" + "1532543326000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -18074,16 +18343,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrv6:4082,/bns/yw/borg/yw/bns/blobstore2/bitpusher/102.scotty,acatli15:443" + "xgiadaaq16:4208,/bns/xi/borg/xi/bns/blobstore2/bitpusher/14.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=sE41W7v3OsT2N87Rh_gH" + "eid=NMBYW9PEE8K5swbhtJyABg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/102.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/14.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -18092,13 +18361,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/102:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/14:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWHJPNUkxYUpBc1pqVUJQQkxsWlpQQ0RaUURpeWtuNkMwRFJXbUlacDBSUHk2QVNxeXZvRkkyY3dMaklzQzEyUnhFeHJ6ajBSdDFJSWJ2cndIUldNOEhwekhyN0hFWnBUVERuSmk1Q29uQmZ1ODRtWGVPbnRyNzFzYzBFa00yU1RpMTZuTC1YZ0JiNkE0bWNSMXMtWjc2Y0dFSUV3OVJHbnlwQUdKZjhPSzZZZmNuS1drWW11OWJyQlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WkRXNkZrREc0T19kVlBudl9ZNTlNYTdycTQ1cFV6WDBDMXVtc3J5SGNiSE1CNXYxQi1lN1lhbEhwQ3Fya2NHZTF2aktrWUtkT2pnUkJKeHQ5SnBLOWx4aDFTaHpBbExCcGRVQ29faE1ONDNwWGdFSElWYU1mR3FSU3JEU3RRSzl3R21QN1FtcDI2T3lGQ3plUTlTbXZ6TXg2WmFYOGF3ZVZRd3R1LTA3OVpIUzMxeHM0cVNmUHBSdFkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -18113,17 +18382,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqFPTQ2IVam7a-ij-7toUScZglQ97-PsEbs8SqcUJdBl4Rb_EDnH56teEfdMaJ3td2xlIqy5q8eClBn5lqtlkM6gPW0QrRP-ijJyIlcxvO1Q68j3Mk" + "AEnB2Uoqu8g7QxUCVzoyt1kPwjxVKm1IgFuC4KHLV9fvG6vgUfNKBLOm7WPbpdzUAGJRweVosxRcMSM8rGRdyS0yJtEIwInnVA" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiaW52YWxpZCIsCiAgICAibWVzc2FnZSI6ICJQcm92aWRlZCBNRDUgaGFzaCBcIm92WmpHbGNYUEppR09BZktGYkpsMVE9PVwiIGRvZXNuJ3QgbWF0Y2ggY2FsY3VsYXRlZCBNRDUgaGFzaCBcIm9mWmpHbGNYUEppR09BZktGYkpsMVE9PVwiLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1JTlZBTElEX1ZBTFVFLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89bnVsbCwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLklOVkFMSURfVkFMVUUsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPW51bGwsIGVycm9yUHJvdG9Db2RlPUlOVkFMSURfVkFMVUUsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlLm1kNV9oYXNoX2Jhc2U2NCwgbWVzc2FnZT1Qcm92aWRlZCBNRDUgaGFzaCBcIm92WmpHbGNYUEppR09BZktGYkpsMVE9PVwiIGRvZXNuJ3QgbWF0Y2ggY2FsY3VsYXRlZCBNRDUgaGFzaCBcIm9mWmpHbGNYUEppR09BZktGYkpsMVE9PVwiLiwgdW5uYW1lZEFyZ3VtZW50cz1bb3ZaakdsY1hQSmlHT0FmS0ZiSmwxUT09XX0sIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZS5tZDVfaGFzaF9iYXNlNjQsIG1lc3NhZ2U9UHJvdmlkZWQgTUQ1IGhhc2ggXCJvdlpqR2xjWFBKaUdPQWZLRmJKbDFRPT1cIiBkb2Vzbid0IG1hdGNoIGNhbGN1bGF0ZWQgTUQ1IGhhc2ggXCJvZlpqR2xjWFBKaUdPQWZLRmJKbDFRPT1cIi4sIHJlYXNvbj1pbnZhbGlkLCBycGNDb2RlPTQwMH0gUHJvdmlkZWQgTUQ1IGhhc2ggXCJvdlpqR2xjWFBKaUdPQWZLRmJKbDFRPT1cIiBkb2Vzbid0IG1hdGNoIGNhbGN1bGF0ZWQgTUQ1IGhhc2ggXCJvZlpqR2xjWFBKaUdPQWZLRmJKbDFRPT1cIi5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAwLAogICJtZXNzYWdlIjogIlByb3ZpZGVkIE1ENSBoYXNoIFwib3ZaakdsY1hQSmlHT0FmS0ZiSmwxUT09XCIgZG9lc24ndCBtYXRjaCBjYWxjdWxhdGVkIE1ENSBoYXNoIFwib2ZaakdsY1hQSmlHT0FmS0ZiSmwxUT09XCIuIgogfQp9Cg==" } }, { - "ID": "a35ff976c976a510", + "ID": "336207a4723b81be", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/iam?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/iam?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -18136,13 +18405,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "1f83551725982f9121622141542fbede/2771245958853342318;o=0" + "ef18f665f1e772b2347e7ced44f457bb/4764342086950291977;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -18151,7 +18420,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/iam?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/iam?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -18162,9 +18431,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -18176,13 +18447,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:09 GMT" + "Wed, 25 Jul 2018 18:23:48 GMT" ], "Etag": [ "CAk=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:09 GMT" + "Wed, 25 Jul 2018 18:23:48 GMT" ], "Server": [ "UploadServer" @@ -18192,7 +18463,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220509000" + "1532543328000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -18201,16 +18472,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrnr5:4245,/bns/yw/borg/yw/bns/blobstore2/bitpusher/473.scotty,acatli15:443" + "xhiadbbo16:4203,/bns/xi/borg/xi/bns/blobstore2/bitpusher/11.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=sU41W97HBJbkhASluqCQBQ" + "eid=NMBYW-3hGZC3swb1pLGIDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/473.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/11.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -18219,13 +18490,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/473:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/11:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWFhjbWo3TlFkeGxib3RjTGhzN0t6VWF5eFV5Z3g2VXBhWm01ZTlNeFVla0dPdFJqaWRsbk5PRUhuZlU4TjhwcHY3M05ZQWZoUWFIdW5OQ05sWDNTMW1wZ3J4Q2thMm45aXA3azJJSW1yWGR6RFBVUUliczFIejQxc3otUUsyWkRWS2Y4WE1yM3dMc1JLOEdhZjZjc2x0VEt6OURIU3RsUE4yYk1OS0c4azVINXVrc01oTDBsejRmM1UwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YWpYMjlBaS1VX0tPWWU5NWhwRV9ZUko1eXJSclhFMXFSNURaR2pFX1A0RTRQdFR5UkRwOVQ0bHVNRDY1Y0gtTVJYMnBMVlF2TU9DWEhEQ0JCRENvQ2h1VWc0ZzExakp6VjdJQ1NCRC1JQkZJQ2I4OHpxQ1poX095YkM3Z0R2V1JXTlBYbHdyWEF4VHNwc0pPUDB5aXhUckV6M18yRDhCX0RUdTlwelNMTGhzWFFlc3c1N1NyUEJQbmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -18240,17 +18511,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpvdHl3DCWn-2TCG5BNLdaEUJvXUICnT_4S38d_fSrt0zBcpaPKp7pdLXjhIb9vjxPWVxl0cy-YQRKdxn7RmdT9QDAECNzeAEAzzdFAH64fUGJJ2wc" + "AEnB2Up6-i70pAaPBTmNnL0hYV-8M03a-taRkj3D1XvBQr8TPEt6EAZi8N6Sr3uXBzw8-Z0ekhGQtEJqLyHglthrka8ojBSjLA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNwb2xpY3kiLAogInJlc291cmNlSWQiOiAicHJvamVjdHMvXy9idWNrZXRzL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAiYmluZGluZ3MiOiBbCiAgewogICAicm9sZSI6ICJyb2xlcy9zdG9yYWdlLmxlZ2FjeUJ1Y2tldE93bmVyIiwKICAgIm1lbWJlcnMiOiBbCiAgICAicHJvamVjdEVkaXRvcjpkdWxjZXQtcG9ydC03NjIiLAogICAgInByb2plY3RPd25lcjpkdWxjZXQtcG9ydC03NjIiCiAgIF0KICB9LAogIHsKICAgInJvbGUiOiAicm9sZXMvc3RvcmFnZS5sZWdhY3lCdWNrZXRSZWFkZXIiLAogICAibWVtYmVycyI6IFsKICAgICJwcm9qZWN0Vmlld2VyOmR1bGNldC1wb3J0LTc2MiIKICAgXQogIH0KIF0sCiAiZXRhZyI6ICJDQWs9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNwb2xpY3kiLAogInJlc291cmNlSWQiOiAicHJvamVjdHMvXy9idWNrZXRzL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAiYmluZGluZ3MiOiBbCiAgewogICAicm9sZSI6ICJyb2xlcy9zdG9yYWdlLmxlZ2FjeUJ1Y2tldE93bmVyIiwKICAgIm1lbWJlcnMiOiBbCiAgICAicHJvamVjdEVkaXRvcjpkdWxjZXQtcG9ydC03NjIiLAogICAgInByb2plY3RPd25lcjpkdWxjZXQtcG9ydC03NjIiCiAgIF0KICB9LAogIHsKICAgInJvbGUiOiAicm9sZXMvc3RvcmFnZS5sZWdhY3lCdWNrZXRSZWFkZXIiLAogICAibWVtYmVycyI6IFsKICAgICJwcm9qZWN0Vmlld2VyOmR1bGNldC1wb3J0LTc2MiIKICAgXQogIH0KIF0sCiAiZXRhZyI6ICJDQWs9Igp9Cg==" } }, { - "ID": "cfa58786f61c5bca", + "ID": "f610cfe1412df16b", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/iam?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/iam?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -18269,13 +18540,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "94d2723a7718be6829265ac3a4beaa23/4386379892052211598;o=0" + "727dc0efc7ca0ca5b60aac7cd89bf106/12405304104814775078;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -18284,7 +18555,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/iam?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/iam?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -18295,9 +18566,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -18309,7 +18582,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:10 GMT" + "Wed, 25 Jul 2018 18:23:49 GMT" ], "Etag": [ "CAo=" @@ -18328,7 +18601,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220509000" + "1532543328000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -18337,16 +18610,16 @@ "998958384336" ], "X-Google-Backends": [ - "vris8:4314,/bns/yw/borg/yw/bns/blobstore2/bitpusher/197.scotty,acatli15:443" + "xgiadabr1:4172,/bns/xi/borg/xi/bns/blobstore2/bitpusher/118.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=sU41W_btGIbRhQSY0oKoCQ" + "eid=NMBYW87LKuGEygPhuovwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/197.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/118.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -18355,13 +18628,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/197:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/118:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWFhjbWo3TlFkeGxib3RjTGhzN0t6VWF5eFV5Z3g2VXBhWm01ZTlNeFVla0dPdFJqaWRsbk5PRUhuZlU4TjhwcHY3M05ZQWZoUWFIdW5OQ05sWDNTMW1wZ3J4Q2thMm45aXA3azJJSW1yWGR6RFBVUUliczFIejQxc3otUUsyWkRWS2Y4WE1yM3dMc1JLOEdhZjZjc2x0VEt6OURIU3RsUE4yYk1OS0c4azVINXVrc01oTDBsejRmM1UwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YWpYMjlBaS1VX0tPWWU5NWhwRV9ZUko1eXJSclhFMXFSNURaR2pFX1A0RTRQdFR5UkRwOVQ0bHVNRDY1Y0gtTVJYMnBMVlF2TU9DWEhEQ0JCRENvQ2h1VWc0ZzExakp6VjdJQ1NCRC1JQkZJQ2I4OHpxQ1poX095YkM3Z0R2V1JXTlBYbHdyWEF4VHNwc0pPUDB5aXhUckV6M18yRDhCX0RUdTlwelNMTGhzWFFlc3c1N1NyUEJQbmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -18376,17 +18649,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Upq8wY51AAH2mDDRYuhnewlBTYZZhZtN8rakNmtQBddPTMzQvx_t-bm_M7UQy7Dl0xU2VkGE1CHz-QqqsPBfyh6dnaj4N_QVpPeWGy1OkRvjXHxzIQ" + "AEnB2UojUAn0dIO7yqfNQMNzmBlxy7AwFx5NcItsuZARDtEjbvQBssGDfxewBg6M1ZcFDFt9uAj1gthRqRAxtu85Un1kYbHCBQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNwb2xpY3kiLAogInJlc291cmNlSWQiOiAicHJvamVjdHMvXy9idWNrZXRzL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAiYmluZGluZ3MiOiBbCiAgewogICAicm9sZSI6ICJyb2xlcy9zdG9yYWdlLmxlZ2FjeUJ1Y2tldE93bmVyIiwKICAgIm1lbWJlcnMiOiBbCiAgICAicHJvamVjdEVkaXRvcjpkdWxjZXQtcG9ydC03NjIiLAogICAgInByb2plY3RPd25lcjpkdWxjZXQtcG9ydC03NjIiCiAgIF0KICB9LAogIHsKICAgInJvbGUiOiAicm9sZXMvc3RvcmFnZS5sZWdhY3lCdWNrZXRSZWFkZXIiLAogICAibWVtYmVycyI6IFsKICAgICJwcm9qZWN0Vmlld2VyOmR1bGNldC1wb3J0LTc2MiIKICAgXQogIH0sCiAgewogICAicm9sZSI6ICJyb2xlcy9zdG9yYWdlLm9iamVjdFZpZXdlciIsCiAgICJtZW1iZXJzIjogWwogICAgInByb2plY3RWaWV3ZXI6ZHVsY2V0LXBvcnQtNzYyIgogICBdCiAgfQogXSwKICJldGFnIjogIkNBbz0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNwb2xpY3kiLAogInJlc291cmNlSWQiOiAicHJvamVjdHMvXy9idWNrZXRzL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAiYmluZGluZ3MiOiBbCiAgewogICAicm9sZSI6ICJyb2xlcy9zdG9yYWdlLmxlZ2FjeUJ1Y2tldE93bmVyIiwKICAgIm1lbWJlcnMiOiBbCiAgICAicHJvamVjdEVkaXRvcjpkdWxjZXQtcG9ydC03NjIiLAogICAgInByb2plY3RPd25lcjpkdWxjZXQtcG9ydC03NjIiCiAgIF0KICB9LAogIHsKICAgInJvbGUiOiAicm9sZXMvc3RvcmFnZS5sZWdhY3lCdWNrZXRSZWFkZXIiLAogICAibWVtYmVycyI6IFsKICAgICJwcm9qZWN0Vmlld2VyOmR1bGNldC1wb3J0LTc2MiIKICAgXQogIH0sCiAgewogICAicm9sZSI6ICJyb2xlcy9zdG9yYWdlLm9iamVjdFZpZXdlciIsCiAgICJtZW1iZXJzIjogWwogICAgInByb2plY3RWaWV3ZXI6ZHVsY2V0LXBvcnQtNzYyIgogICBdCiAgfQogXSwKICJldGFnIjogIkNBbz0iCn0K" } }, { - "ID": "8f6c55ece7b08942", + "ID": "b893fc4885265f33", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/iam?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/iam?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -18399,13 +18672,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "27b885f98e0fb1616942aaed7f0b45e9/5929457330724846253;o=0" + "8e0b7106d81eb7a2e55af83cb1a11eab/1599804623441333314;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -18414,7 +18687,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/iam?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/iam?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -18425,9 +18698,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -18439,13 +18714,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:10 GMT" + "Wed, 25 Jul 2018 18:23:50 GMT" ], "Etag": [ "CAo=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:10 GMT" + "Wed, 25 Jul 2018 18:23:50 GMT" ], "Server": [ "UploadServer" @@ -18455,7 +18730,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220510000" + "1532543329000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -18464,16 +18739,16 @@ "998958384336" ], "X-Google-Backends": [ - "vru67:4406,/bns/yw/borg/yw/bns/blobstore2/bitpusher/168.scotty,acatli15:443" + "xiiadcad8:4117,/bns/xi/borg/xi/bns/blobstore2/bitpusher/82.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=sk41W_StIoSPN-3XkeAI" + "eid=NcBYW5OSKtC2swaw7bzYBQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/168.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/82.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -18482,13 +18757,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/168:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/82:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWFhjbWo3TlFkeGxib3RjTGhzN0t6VWF5eFV5Z3g2VXBhWm01ZTlNeFVla0dPdFJqaWRsbk5PRUhuZlU4TjhwcHY3M05ZQWZoUWFIdW5OQ05sWDNTMW1wZ3J4Q2thMm45aXA3azJJSW1yWGR6RFBVUUliczFIejQxc3otUUsyWkRWS2Y4WE1yM3dMc1JLOEdhZjZjc2x0VEt6OURIU3RsUE4yYk1OS0c4azVINXVrc01oTDBsejRmM1UwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YWpYMjlBaS1VX0tPWWU5NWhwRV9ZUko1eXJSclhFMXFSNURaR2pFX1A0RTRQdFR5UkRwOVQ0bHVNRDY1Y0gtTVJYMnBMVlF2TU9DWEhEQ0JCRENvQ2h1VWc0ZzExakp6VjdJQ1NCRC1JQkZJQ2I4OHpxQ1poX095YkM3Z0R2V1JXTlBYbHdyWEF4VHNwc0pPUDB5aXhUckV6M18yRDhCX0RUdTlwelNMTGhzWFFlc3c1N1NyUEJQbmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -18503,17 +18778,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq00A1wyFzFWwAIQP_t-Qy6ulXYshyjKDISFuUUA_JdSyU-Y4iKU5OPNRydlUsZXAaNafiyMtBCOcYFpAc6Ds4bUvN3Ciitd1xWesw8a4AFpOv491o" + "AEnB2UpGxHwZSbzumOYPqGAicJV6xECbKExmxCs8WccbAvYtCqP_jKsaOL_6UozYUK2EFRTiij5LUgAWBqko8g0ZnM65WOUqCQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNwb2xpY3kiLAogInJlc291cmNlSWQiOiAicHJvamVjdHMvXy9idWNrZXRzL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAiYmluZGluZ3MiOiBbCiAgewogICAicm9sZSI6ICJyb2xlcy9zdG9yYWdlLmxlZ2FjeUJ1Y2tldE93bmVyIiwKICAgIm1lbWJlcnMiOiBbCiAgICAicHJvamVjdEVkaXRvcjpkdWxjZXQtcG9ydC03NjIiLAogICAgInByb2plY3RPd25lcjpkdWxjZXQtcG9ydC03NjIiCiAgIF0KICB9LAogIHsKICAgInJvbGUiOiAicm9sZXMvc3RvcmFnZS5sZWdhY3lCdWNrZXRSZWFkZXIiLAogICAibWVtYmVycyI6IFsKICAgICJwcm9qZWN0Vmlld2VyOmR1bGNldC1wb3J0LTc2MiIKICAgXQogIH0sCiAgewogICAicm9sZSI6ICJyb2xlcy9zdG9yYWdlLm9iamVjdFZpZXdlciIsCiAgICJtZW1iZXJzIjogWwogICAgInByb2plY3RWaWV3ZXI6ZHVsY2V0LXBvcnQtNzYyIgogICBdCiAgfQogXSwKICJldGFnIjogIkNBbz0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNwb2xpY3kiLAogInJlc291cmNlSWQiOiAicHJvamVjdHMvXy9idWNrZXRzL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAiYmluZGluZ3MiOiBbCiAgewogICAicm9sZSI6ICJyb2xlcy9zdG9yYWdlLmxlZ2FjeUJ1Y2tldE93bmVyIiwKICAgIm1lbWJlcnMiOiBbCiAgICAicHJvamVjdEVkaXRvcjpkdWxjZXQtcG9ydC03NjIiLAogICAgInByb2plY3RPd25lcjpkdWxjZXQtcG9ydC03NjIiCiAgIF0KICB9LAogIHsKICAgInJvbGUiOiAicm9sZXMvc3RvcmFnZS5sZWdhY3lCdWNrZXRSZWFkZXIiLAogICAibWVtYmVycyI6IFsKICAgICJwcm9qZWN0Vmlld2VyOmR1bGNldC1wb3J0LTc2MiIKICAgXQogIH0sCiAgewogICAicm9sZSI6ICJyb2xlcy9zdG9yYWdlLm9iamVjdFZpZXdlciIsCiAgICJtZW1iZXJzIjogWwogICAgInByb2plY3RWaWV3ZXI6ZHVsY2V0LXBvcnQtNzYyIgogICBdCiAgfQogXSwKICJldGFnIjogIkNBbz0iCn0K" } }, { - "ID": "b86cf8ebc91d4f7a", + "ID": "7187cbf11dddde2d", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/iam/testPermissions?alt=json\u0026permissions=storage.buckets.get\u0026permissions=storage.buckets.delete", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/iam/testPermissions?alt=json\u0026permissions=storage.buckets.get\u0026permissions=storage.buckets.delete", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -18526,13 +18801,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "815342964fe43c3b5d348651edf499f8/7544592359123664333;o=0" + "7eb7cd69643c8bb2e0a91f67e6ee62ca/9240766645600718175;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -18541,7 +18816,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/iam/testPermissions?alt=json\u0026permissions=storage.buckets.get\u0026permissions=storage.buckets.delete" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/iam/testPermissions?alt=json\u0026permissions=storage.buckets.get\u0026permissions=storage.buckets.delete" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -18552,9 +18827,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -18566,10 +18843,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:10 GMT" + "Wed, 25 Jul 2018 18:23:50 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:10 GMT" + "Wed, 25 Jul 2018 18:23:50 GMT" ], "Server": [ "UploadServer" @@ -18579,7 +18856,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220509000" + "1532543328000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -18588,16 +18865,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrcb124:4240,/bns/yw/borg/yw/bns/blobstore2/bitpusher/101.scotty,acatli15:443" + "xhiadbag11:4146,/bns/xi/borg/xi/bns/blobstore2/bitpusher/16.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=sk41W8yzL8HvhAS3rbPYCg" + "eid=NsBYW5yGBo-wswbzhrDoBw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/101.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/16.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -18606,13 +18883,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/101:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/16:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWFhjbWo3TlFkeGxib3RjTGhzN0t6VWF5eFV5Z3g2VXBhWm01ZTlNeFVla0dPdFJqaWRsbk5PRUhuZlU4TjhwcHY3M05ZQWZoUWFIdW5OQ05sWDNTMW1wZ3J4Q2thMm45aXA3azJJSW1yWGR6RFBVUUliczFIejQxc3otUUsyWkRWS2Y4WE1yM3dMc1JLOEdhZjZjc2x0VEt6OURIU3RsUE4yYk1OS0c4azVINXVrc01oTDBsejRmM1UwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YWpYMjlBaS1VX0tPWWU5NWhwRV9ZUko1eXJSclhFMXFSNURaR2pFX1A0RTRQdFR5UkRwOVQ0bHVNRDY1Y0gtTVJYMnBMVlF2TU9DWEhEQ0JCRENvQ2h1VWc0ZzExakp6VjdJQ1NCRC1JQkZJQ2I4OHpxQ1poX095YkM3Z0R2V1JXTlBYbHdyWEF4VHNwc0pPUDB5aXhUckV6M18yRDhCX0RUdTlwelNMTGhzWFFlc3c1N1NyUEJQbmswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -18627,14 +18904,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UozfiGqoVpp6MJB37vUXWGIMJvItUCsZqtVQwoK8pNza-SiGqySYQOQmYHrP4lSnUu2EfMHQa32tyQusbsiAVgPriUjMbquKjOtxZIDikYdz3LqYSE" + "AEnB2Up2NJNcTeg4PkVreCV7HWTapCbiEjm7FcqN3p_Trrq1ysG1vl5ps8ickUgMUHd78IT_duQOron_OeTbPoSAMce3oRwc3g" ] }, "Body": "ewogImtpbmQiOiAic3RvcmFnZSN0ZXN0SWFtUGVybWlzc2lvbnNSZXNwb25zZSIsCiAicGVybWlzc2lvbnMiOiBbCiAgInN0b3JhZ2UuYnVja2V0cy5nZXQiLAogICJzdG9yYWdlLmJ1Y2tldHMuZGVsZXRlIgogXQp9Cg==" } }, { - "ID": "f56293ab80c4e14a", + "ID": "fc300a7ab10eaa03", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -18656,13 +18933,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "98910b44687b8ef4e8e43e5da3a1f4b5/9087669797796298988;o=0" + "2e73179517ecd5bf66d34d8e1cce56c8/16881729762960117371;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -18677,14 +18954,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJiaWxsaW5nIjp7InJlcXVlc3RlclBheXMiOnRydWV9LCJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIn0K" + "Body": "eyJiaWxsaW5nIjp7InJlcXVlc3RlclBheXMiOnRydWV9LCJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIn0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -18696,7 +18975,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:11 GMT" + "Wed, 25 Jul 2018 18:23:51 GMT" ], "Etag": [ "CAE=" @@ -18715,7 +18994,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543330000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -18724,16 +19003,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrxx13:4296,/bns/yw/borg/yw/bns/blobstore2/bitpusher/625.scotty,acatli15:443" + "xgiadaaq12:4105,/bns/xi/borg/xi/bns/blobstore2/bitpusher/26.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=s041W7TUBcLdhAT6tKGwBg" + "eid=NsBYW6qfGKOxswak0oXADA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/625.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/26.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -18742,13 +19021,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/625:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/26:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -18763,17 +19042,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uoc3Jobdew6ZKQLb_yTpmbu5QRi6v0NMngiziYoE3JwYXaSbIagDYJTNf2gHF_NQ8WBxd9IMqxgNXAnqtUb0yUG-H9LKlubCOPGOrhL9Fg2P-ygOtc" + "AEnB2UovQncLDRByqbtYY6k0tJyirnTwP43jsmxO-bWtS5cOMRq-IDJpvTtaHYAlYZVYH6zDgu24POqwZjnGQe00Rpg1aBvzcQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTEuNTU5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjExLjU1OVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImJpbGxpbmciOiB7CiAgInJlcXVlc3RlclBheXMiOiB0cnVlCiB9LAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTEuMDAxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjUxLjAwMVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImJpbGxpbmciOiB7CiAgInJlcXVlc3RlclBheXMiOiB0cnVlCiB9LAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "254dbae42b80f91a", + "ID": "895c38c0e42a8762", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/user-integration%40gcloud-golang-firestore-tests.iam.gserviceaccount.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/user-integration%40gcloud-golang-firestore-tests.iam.gserviceaccount.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -18792,13 +19071,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "0eec1ded30e63cfa305e6bf6d882ed46/10702803730995168012;o=0" + "c931f777157dd4c2b9687d61719d9670/6075947711410016152;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -18807,20 +19086,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/user-integration%40gcloud-golang-firestore-tests.iam.gserviceaccount.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/user-integration%40gcloud-golang-firestore-tests.iam.gserviceaccount.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwicm9sZSI6Ik9XTkVSIn0K" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwicm9sZSI6Ik9XTkVSIn0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -18832,7 +19113,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:13 GMT" + "Wed, 25 Jul 2018 18:23:52 GMT" ], "Etag": [ "CAI=" @@ -18851,7 +19132,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -18860,16 +19141,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrpw4:4066,/bns/yw/borg/yw/bns/blobstore2/bitpusher/221.scotty,acatli15:443" + "xgiadacd12:4335,/bns/xi/borg/xi/bns/blobstore2/bitpusher/103.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=s041W8iiO8LxhATkzq7YCQ" + "eid=N8BYW_6NDe60swb07ZvYDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/221.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/103.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -18878,13 +19159,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/221:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/103:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -18899,17 +19180,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uox0tWqvw02gze1TPmqnNmS4Y5JDdQiMAuKFpMqD_mBhFoe9uqbLXxSoy8D6vYwHU7O42ynSuV3oqzyNR1wnMIB_Z72Z2BvYWMolMIWhbMUMpfuFNo" + "AEnB2UrcYP1EpemtR3VhaxQ9zAHeN5x9WvI-tryfrwCWG_kK0b2JPW2ps_uZQ62AXIKZfacjWGIaVUgs7wdsU0UEAiGtJimhiA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogInJvbGUiOiAiT1dORVIiLAogImVtYWlsIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICJldGFnIjogIkNBST0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogInJvbGUiOiAiT1dORVIiLAogImVtYWlsIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICJldGFnIjogIkNBST0iCn0K" } }, { - "ID": "6c8f46049da55376", + "ID": "9c73e5987d1217c3", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -18922,13 +19203,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d79926c10f4fbd24c2ce4cb365d8303b/12317656193512359467;o=0" + "66dd6f3ce793903f994df51358f92a2c/13716910828769415348;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -18937,7 +19218,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -18948,9 +19229,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -18962,13 +19245,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:14 GMT" + "Wed, 25 Jul 2018 18:23:53 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:14 GMT" + "Wed, 25 Jul 2018 18:23:53 GMT" ], "Server": [ "UploadServer" @@ -18978,7 +19261,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220513000" + "1532543332000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -18987,16 +19270,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqp3:4354,/bns/yw/borg/yw/bns/blobstore2/bitpusher/325.scotty,acatli15:443" + "xgiadabn9:4397,/bns/xi/borg/xi/bns/blobstore2/bitpusher/39.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=tU41W_meLIyXhATojpP4BQ" + "eid=OMBYW5TpLM-0swaFr7fwAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/325.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/39.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -19005,13 +19288,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/325:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/39:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -19026,17 +19309,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoKBxe2U6CACrf-cOSkm214HEoukP4hQLHrpp-16p2vno5Anh3HVtVucf_KynWA1dR14jLjkUYwQrBXPQ-Bz3Jo8TSvMxTWiwmkIKE4oTVPvmLSE5s" + "AEnB2UrAHg940GJAwuyDfArVs9m7duhykmU7MlpLkpZAKkFwmtIZuUEFjxyLaGDgKKxiuUhqvCbCe5Y0XPSwpmdyL2HW22NRmw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTEuNTU5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjEzLjUxOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiYmlsbGluZyI6IHsKICAicmVxdWVzdGVyUGF5cyI6IHRydWUKIH0sCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTEuMDAxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjUyLjUzOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiYmlsbGluZyI6IHsKICAicmVxdWVzdGVyUGF5cyI6IHRydWUKIH0sCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "3da307f0a2a334b2", + "ID": "c07e87d06af0b9e5", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json\u0026projection=full\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json\u0026projection=full\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -19049,13 +19332,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f30af424781e36250d16458bcde99a27/13860734727384877387;o=0" + "276c9bf4a00578f77bd791d4452caeac/2911410252195959249;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -19064,7 +19347,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json\u0026projection=full\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json\u0026projection=full\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -19075,9 +19358,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -19089,13 +19374,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:14 GMT" + "Wed, 25 Jul 2018 18:23:53 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:14 GMT" + "Wed, 25 Jul 2018 18:23:53 GMT" ], "Server": [ "UploadServer" @@ -19105,7 +19390,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220514000" + "1532543332000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -19114,16 +19399,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrlf17:4159,/bns/yw/borg/yw/bns/blobstore2/bitpusher/306.scotty,acatli15:443" + "xiiadcai3:4242,/bns/xi/borg/xi/bns/blobstore2/bitpusher/3.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=tk41W7_nAcL7hQTg1oPgDg" + "eid=OcBYW4ykAaKFygOmqoPoBA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/306.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/3.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -19132,13 +19417,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/306:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/3:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -19153,17 +19438,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoPoQKs4Fbo8-rogSBfxvUdbT0L6_4EN8sVXpaoWxctZAw2wXqcd80C2y3LzrGfJbB8v92kdLnqLkJtSlES24bcix298xrmSNoThrh7toxjN5WEs4Y" + "AEnB2UqqLBpAlweZeX1W1sNgkv11IXsRmYv-3kf_EYleDTVMSda-5raWMODcH6LHIH2Ive70-sDnvNZN1PXgTvVcjPdomwkJFA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTEuNTU5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjEzLjUxOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiYmlsbGluZyI6IHsKICAicmVxdWVzdGVyUGF5cyI6IHRydWUKIH0sCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTEuMDAxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjUyLjUzOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiYmlsbGluZyI6IHsKICAicmVxdWVzdGVyUGF5cyI6IHRydWUKIH0sCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "076a2cf477151fe2", + "ID": "16f872e332148771", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -19176,13 +19461,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "8333a3bd4ffc404e38306dfa8c5d952a/15475868660583812202;o=0" + "add6289dc444b7a098381cc6ba3b7663/10552373369555358445;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -19191,7 +19476,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -19202,9 +19487,11 @@ "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -19216,10 +19503,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:14 GMT" + "Wed, 25 Jul 2018 18:23:53 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:14 GMT" + "Wed, 25 Jul 2018 18:23:53 GMT" ], "Server": [ "UploadServer" @@ -19229,7 +19516,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220514000" + "1532543333000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -19238,16 +19525,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrbs2:4372,/bns/yw/borg/yw/bns/blobstore2/bitpusher/157.scotty,acatli15:443" + "xiiadcbl14:4360,/bns/xi/borg/xi/bns/blobstore2/bitpusher/22.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=tk41W9vpF4aIN5_KqfgH" + "eid=OcBYW87QF824swaRxZCoAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/157.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/22.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -19256,13 +19543,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/157:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/22:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -19277,17 +19564,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UpmmKVxrBBS3p_c0sUCPxG9lnbG72s3AOqWwCGUcR1qlwkaQMKdA2u76LwoHQdaXuto4CadX8H8jveyf8YwYk9Stmd6ZenAPCtmN-vF47Ya2j8XS3w" + "AEnB2UpV2o5CUEPHIdZGjsP1pXG8LwIxPyNFhYM83n--deosnp35YEJjKW9I7e0MNNSQ2Ji7HkaUIiGFIyUg8Dy5-Ayok-63Vg" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5HZXRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldEJ1Y2tldC5qYXZhOjEwMilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkdldEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0QnVja2V0LmphdmE6MzEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLmdldChCdWNrZXRzRGVsZWdhdG9yLmphdmE6NzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YToxMDIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5HZXRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldEJ1Y2tldC5qYXZhOjMxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5nZXQoQnVja2V0c0RlbGVnYXRvci5qYXZhOjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YToxMDIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5HZXRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldEJ1Y2tldC5qYXZhOjMxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5nZXQoQnVja2V0c0RlbGVnYXRvci5qYXZhOjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YToxMDIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5HZXRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldEJ1Y2tldC5qYXZhOjMxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5nZXQoQnVja2V0c0RlbGVnYXRvci5qYXZhOjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIKIH0KfQo=" } }, { - "ID": "d00853883a2ca4e4", + "ID": "524e5f8e1a2ef43e", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -19300,13 +19587,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "935f75965cc214fd3bcafbec1048751b/17018946099256381322;o=0" + "5458bf1259676412694f55c73db5e4b6/18193335387419841290;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -19315,7 +19602,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -19326,9 +19613,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -19340,13 +19629,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:14 GMT" + "Wed, 25 Jul 2018 18:23:53 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:14 GMT" + "Wed, 25 Jul 2018 18:23:53 GMT" ], "Server": [ "UploadServer" @@ -19356,7 +19645,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220514000" + "1532543333000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -19365,16 +19654,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrat2:4108,/bns/yw/borg/yw/bns/blobstore2/bitpusher/635.scotty,acatli15:443" + "xiiadcae13:4169,/bns/xi/borg/xi/bns/blobstore2/bitpusher/104.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=tk41W7a5JsPrhAT61qjACQ" + "eid=OcBYW_q7Jey2swaUwyg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/635.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/104.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -19383,13 +19672,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/635:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/104:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -19404,17 +19693,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrMgurT0pXNn820o2n77mZhyWnhCZIeMFkfDiSd1A0S4Z8AsjC1EgUx7nYx0kIZ6odOs4Iu6gV4Hm3QyiLkBt0BOU3fbcaJSQNbBfauuhdREixizhs" + "AEnB2Up6my0KlZmVnpGpOyNnSPLDdho2KTAgd-6ffZdkwTI6_-EpZrSCJXIDT03NRSOk-Gy-O1wOn3s7b-hIDC7FAEpTNcB-lw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTEuNTU5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjEzLjUxOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiYmlsbGluZyI6IHsKICAicmVxdWVzdGVyUGF5cyI6IHRydWUKIH0sCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTEuMDAxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjUyLjUzOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiYmlsbGluZyI6IHsKICAicmVxdWVzdGVyUGF5cyI6IHRydWUKIH0sCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "a2b78339e45ec204", + "ID": "3c5e1f0a6967e2b4", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json\u0026projection=full\u0026userProject=veener-jba", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json\u0026projection=full\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -19427,13 +19716,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9653d85d1963489b361af4a13e0db9bc/187617433722475177;o=0" + "06ae3ba89b63b63c5e254490ce43bd03/7387835906046399526;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -19442,7 +19731,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json\u0026projection=full\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json\u0026projection=full\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -19453,9 +19742,11 @@ "Response": { "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -19467,10 +19758,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:14 GMT" + "Wed, 25 Jul 2018 18:23:53 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:14 GMT" + "Wed, 25 Jul 2018 18:23:53 GMT" ], "Server": [ "UploadServer" @@ -19480,7 +19771,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220514000" + "1532543333000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -19489,16 +19780,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrnv6:4101,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "xiiadcar15:4207,/bns/xi/borg/xi/bns/blobstore2/bitpusher/43.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=tk41W-e8LMPdhQTRkIzQBQ" + "eid=OcBYW-HCK-65swarrY6wBw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/43.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -19507,13 +19798,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/178:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/43:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -19528,17 +19819,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqN8gEiG829eXCdLN7O0ZTMhpPjaIw74hay0KljUAtauiQvONHyUkdLBvpak4vbQF0epc0xKhRTgrQ4iRvpCI6drRvQDBaU2sO4N_Fu9N111__N0rg" + "AEnB2UrVhqvgAK2NWiXo9U-X2u_fj_DiB_olSd9wgk689MDcgISY63Cz8io2Qx0DGMjpHgtMMK65LEOT46jDMMqThZiKtckR_g" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YToxMDIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5HZXRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldEJ1Y2tldC5qYXZhOjMxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5nZXQoQnVja2V0c0RlbGVnYXRvci5qYXZhOjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9Rk9SQklEREVOLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YToxMDIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5HZXRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldEJ1Y2tldC5qYXZhOjMxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5nZXQoQnVja2V0c0RlbGVnYXRvci5qYXZhOjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkdldEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0QnVja2V0LmphdmE6MTAyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YTozMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZ2V0KEJ1Y2tldHNEZWxlZ2F0b3IuamF2YTo3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkdldEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0QnVja2V0LmphdmE6MTAyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YTozMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZ2V0KEJ1Y2tldHNEZWxlZ2F0b3IuamF2YTo3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4iCiB9Cn0K" } }, { - "ID": "63da1af8ebe97ab1", + "ID": "170fdb6aaff7bc34", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -19548,19 +19839,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=6ec6184745f623088539da6f403efefa8cb7834516496d589a9a1f0d200f" + "multipart/related; boundary=510897437a5255d909962e20380baa37ebfbc87e0eb27b72fe0760b3b233" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "18844e280a5ab78fc2da54a0f856f5e2/995044214720074937;o=0" + "5dc4c892067265b7b8fe070db99d1f88/11172148484261139892;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -19569,20 +19860,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS02ZWM2MTg0NzQ1ZjYyMzA4ODUzOWRhNmY0MDNlZmVmYThjYjc4MzQ1MTY0OTZkNTg5YTlhMWYwZDIwMGYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJmb28ifQoNCi0tNmVjNjE4NDc0NWY2MjMwODg1MzlkYTZmNDAzZWZlZmE4Y2I3ODM0NTE2NDk2ZDU4OWE5YTFmMGQyMDBmDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KaGVsbG8NCi0tNmVjNjE4NDc0NWY2MjMwODg1MzlkYTZmNDAzZWZlZmE4Y2I3ODM0NTE2NDk2ZDU4OWE5YTFmMGQyMDBmLS0NCg==" + "Body": "LS01MTA4OTc0MzdhNTI1NWQ5MDk5NjJlMjAzODBiYWEzN2ViZmJjODdlMGViMjdiNzJmZTA3NjBiM2IyMzMNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJmb28ifQoNCi0tNTEwODk3NDM3YTUyNTVkOTA5OTYyZTIwMzgwYmFhMzdlYmZiYzg3ZTBlYjI3YjcyZmUwNzYwYjNiMjMzDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KaGVsbG8NCi0tNTEwODk3NDM3YTUyNTVkOTA5OTYyZTIwMzgwYmFhMzdlYmZiYzg3ZTBlYjI3YjcyZmUwNzYwYjNiMjMzLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -19594,10 +19887,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:15 GMT" + "Wed, 25 Jul 2018 18:23:54 GMT" ], "Etag": [ - "CJi87sKi99sCEAE=" + "CM/motnvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -19613,7 +19906,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543330000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -19622,19 +19915,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrit75:4012,/bns/yw/borg/yw/bns/blobstore2/bitpusher/435.scotty,acatli15:443" + "xiiadcah4:4081,/bns/xi/borg/xi/bns/blobstore2/bitpusher/119.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=tk41W-iYOcfUN9mJjPgB" + "eid=OcBYW4KMOOGFygOT4obwAg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/435.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/119.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -19643,13 +19936,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/435:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/119:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -19664,17 +19957,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpgDHZeRKk__D-1l5dfU4MGmQTu8M9Eiy_t5Tt4akfm21dBSFS1bfuj4Dg7HUg8AZynpFAXylCDZXI-YqjTjlZ_ApBexxmpAz1W13-XlKD9GKiaLDM" + "AEnB2UqRxh-Gvcm9zxhGm-CHhhJQ-ae9y-RxL9sJce2ZtntafqowxeS-ZvjvBM3RNFBVxhM_meodeXMD0edOjuUsEDsLAswZNQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNTI0NjM2MCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNTI0NjM2MCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDoxNS4yNDVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTUuMjQ1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjE1LjI0NVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIxNTI0NjM2MCZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTUyNDYzNjAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNTI0NjM2MCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0ppODdzS2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNTI0NjM2MC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTUyNDYzNjAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0ppODdzS2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNTI0NjM2MC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTUyNDYzNjAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNKaTg3c0tpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTUyNDYzNjAvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTUyNDYzNjAiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNKaTg3c0tpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDSmk4N3NLaTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNDI0MTg3MSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNDI0MTg3MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo1NC4yNDFaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTQuMjQxWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjU0LjI0MVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzAzNDI0MTg3MSZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzQyNDE4NzEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNDI0MTg3MSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ00vbW90bnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNDI0MTg3MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzQyNDE4NzEiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ00vbW90bnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNDI0MTg3MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzQyNDE4NzEiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNNL21vdG52dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzQyNDE4NzEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzQyNDE4NzEiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNNL21vdG52dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDTS9tb3RudnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "43765d8b1f7e791c", + "ID": "e92f2bfc5459d4f3", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -19684,19 +19977,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=8d079d613ea35805061825899e26e84a0148f0c34a881a37131d1dd19cce" + "multipart/related; boundary=3fd5e62606cff6d076b5801c6fe51ad6273d007680a37538399c531d22b8" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a7649fd09323bfd4db900532c9119a7e/1730695967594993097;o=0" + "98bee4785ba711a96fff5380269da46b/15028516457524041027;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -19705,20 +19998,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS04ZDA3OWQ2MTNlYTM1ODA1MDYxODI1ODk5ZTI2ZTg0YTAxNDhmMGMzNGE4ODFhMzcxMzFkMWRkMTljY2UNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJmb28ifQoNCi0tOGQwNzlkNjEzZWEzNTgwNTA2MTgyNTg5OWUyNmU4NGEwMTQ4ZjBjMzRhODgxYTM3MTMxZDFkZDE5Y2NlDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KaGVsbG8NCi0tOGQwNzlkNjEzZWEzNTgwNTA2MTgyNTg5OWUyNmU4NGEwMTQ4ZjBjMzRhODgxYTM3MTMxZDFkZDE5Y2NlLS0NCg==" + "Body": "LS0zZmQ1ZTYyNjA2Y2ZmNmQwNzZiNTgwMWM2ZmU1MWFkNjI3M2QwMDc2ODBhMzc1MzgzOTljNTMxZDIyYjgNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJmb28ifQoNCi0tM2ZkNWU2MjYwNmNmZjZkMDc2YjU4MDFjNmZlNTFhZDYyNzNkMDA3NjgwYTM3NTM4Mzk5YzUzMWQyMmI4DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KaGVsbG8NCi0tM2ZkNWU2MjYwNmNmZjZkMDc2YjU4MDFjNmZlNTFhZDYyNzNkMDA3NjgwYTM3NTM4Mzk5YzUzMWQyMmI4LS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -19730,10 +20025,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:15 GMT" + "Wed, 25 Jul 2018 18:23:54 GMT" ], "Etag": [ - "CI2vhsOi99sCEAE=" + "CPDPwNnvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -19749,7 +20044,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543330000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -19758,19 +20053,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrx3:4290,/bns/yw/borg/yw/bns/blobstore2/bitpusher/111.scotty,acatli15:443" + "xgiadabl14:4307,/bns/xi/borg/xi/bns/blobstore2/bitpusher/136.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=t041W9L5FY7ShASVqYPICg" + "eid=OsBYW-yoFca8swbts4roAg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/111.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/136.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -19779,13 +20074,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/111:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/136:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -19800,17 +20095,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrpGOF-FAKIRqmfIc2tdZ6nwrxlN0HODuZXkFevgbaDAQWK-GfKw_Yqq-Hb1asq9wVNPB3SDXkSQ7-kv7eD32DqTsl-856_iLIw5LIy8FTX_jA9qrg" + "AEnB2Uo1kREAmljM5QKt9nWn0-0OXrBghCxi6bjHUoqRZk496l2yl_gQEZTdEBPo9fnK89Pif35AD99tt-DRhjbngfQzxSgjxA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNTYzNzkwMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNTYzNzkwMSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDoxNS42MzdaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTUuNjM3WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjE1LjYzN1oiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIxNTYzNzkwMSZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTU2Mzc5MDEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNTYzNzkwMSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0kydmhzT2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNTYzNzkwMS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTU2Mzc5MDEiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0kydmhzT2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNTYzNzkwMS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTU2Mzc5MDEiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNJMnZoc09pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTU2Mzc5MDEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTU2Mzc5MDEiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNJMnZoc09pOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDSTJ2aHNPaTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNDczMDQ4MCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNDczMDQ4MCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo1NC43MzBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTQuNzMwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjU0LjczMFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzAzNDczMDQ4MCZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzQ3MzA0ODAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNDczMDQ4MCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ1BEUHdObnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNDczMDQ4MC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzQ3MzA0ODAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ1BEUHdObnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNDczMDQ4MC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzQ3MzA0ODAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNQRFB3Tm52dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzQ3MzA0ODAvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzQ3MzA0ODAiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNQRFB3Tm52dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDUERQd05udnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "f6dd652ef67aec41", + "ID": "0caaec30c4b2683e", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -19820,19 +20115,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=a8d6c4c95945ccad252c84ee344324fb14107e1866372b316e1a2782678d" + "multipart/related; boundary=e52b863954ed7fbd3129e9a20da917307b7991802f9eb32549624dbda384" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "8d3e926569a3fbd857f05b8f8b1c56de/2538121649097742297;o=0" + "287c6d07cf3faaecad7231df5a2c78b9/366647903392782033;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -19841,20 +20136,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1hOGQ2YzRjOTU5NDVjY2FkMjUyYzg0ZWUzNDQzMjRmYjE0MTA3ZTE4NjYzNzJiMzE2ZTFhMjc4MjY3OGQNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJmb28ifQoNCi0tYThkNmM0Yzk1OTQ1Y2NhZDI1MmM4NGVlMzQ0MzI0ZmIxNDEwN2UxODY2MzcyYjMxNmUxYTI3ODI2NzhkDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KaGVsbG8NCi0tYThkNmM0Yzk1OTQ1Y2NhZDI1MmM4NGVlMzQ0MzI0ZmIxNDEwN2UxODY2MzcyYjMxNmUxYTI3ODI2NzhkLS0NCg==" + "Body": "LS1lNTJiODYzOTU0ZWQ3ZmJkMzEyOWU5YTIwZGE5MTczMDdiNzk5MTgwMmY5ZWIzMjU0OTYyNGRiZGEzODQNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJmb28ifQoNCi0tZTUyYjg2Mzk1NGVkN2ZiZDMxMjllOWEyMGRhOTE3MzA3Yjc5OTE4MDJmOWViMzI1NDk2MjRkYmRhMzg0DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KaGVsbG8NCi0tZTUyYjg2Mzk1NGVkN2ZiZDMxMjllOWEyMGRhOTE3MzA3Yjc5OTE4MDJmOWViMzI1NDk2MjRkYmRhMzg0LS0NCg==" }, "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "12529" @@ -19863,7 +20160,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:15 GMT" + "Wed, 25 Jul 2018 18:23:55 GMT" ], "Server": [ "UploadServer" @@ -19873,7 +20170,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220515000" + "1532543334000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -19882,16 +20179,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrn19:4063,/bns/yw/borg/yw/bns/blobstore2/bitpusher/521.scotty,acatli15:443" + "xgiadaas16:4136,/bns/xi/borg/xi/bns/blobstore2/bitpusher/1.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=t041W82pLtOkhATsyYKoCg" + "eid=OsBYW8m1M-2yswad5qDADg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/521.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/1.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -19900,13 +20197,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/521:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/1:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -19921,17 +20218,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UryRWS9ZzLuKeR5RdgkO5odKdLIzjvxFbuQrsnAe-Lh_h47o9B5FuMCwpSQ3kFdkdk-WnIS1sa7d5Zt-gd1Lau3R6GPl3Ki_Zf4xLEuAm8G-No4US0" + "AEnB2UrtUtMPo5nXFxieIXQQ002qT8wwYc-u_Qi0Vdd2FhPYEncUzpEHtF_ZufKFKua-1ekcnnNZJSl9fHQKRAXpS9ZS0-JgqA" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" } }, { - "ID": "27d1576bed80ae31", + "ID": "134af582553a9a9d", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=gcloud-golang-firestore-tests", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -19941,19 +20238,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=eae2d5bb073df0bbe96a812a67f780df1ba65d35731d8a05940c5be97c14" + "multipart/related; boundary=8eb0120f3c9e1d2328cfe39bd332743aa2088323c2c6a1e5f78c8e42055a" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9b66cad0e78508f56af1136e71260c22/3345829900793927912;o=0" + "fc159c6e997c99fda15ced92850629f3/4223016976150599263;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -19962,20 +20259,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1lYWUyZDViYjA3M2RmMGJiZTk2YTgxMmE2N2Y3ODBkZjFiYTY1ZDM1NzMxZDhhMDU5NDBjNWJlOTdjMTQNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJmb28ifQoNCi0tZWFlMmQ1YmIwNzNkZjBiYmU5NmE4MTJhNjdmNzgwZGYxYmE2NWQzNTczMWQ4YTA1OTQwYzViZTk3YzE0DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KaGVsbG8NCi0tZWFlMmQ1YmIwNzNkZjBiYmU5NmE4MTJhNjdmNzgwZGYxYmE2NWQzNTczMWQ4YTA1OTQwYzViZTk3YzE0LS0NCg==" + "Body": "LS04ZWIwMTIwZjNjOWUxZDIzMjhjZmUzOWJkMzMyNzQzYWEyMDg4MzIzYzJjNmExZTVmNzhjOGU0MjA1NWENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJmb28ifQoNCi0tOGViMDEyMGYzYzllMWQyMzI4Y2ZlMzliZDMzMjc0M2FhMjA4ODMyM2MyYzZhMWU1Zjc4YzhlNDIwNTVhDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KaGVsbG8NCi0tOGViMDEyMGYzYzllMWQyMzI4Y2ZlMzliZDMzMjc0M2FhMjA4ODMyM2MyYzZhMWU1Zjc4YzhlNDIwNTVhLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -19987,10 +20286,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:16 GMT" + "Wed, 25 Jul 2018 18:23:55 GMT" ], "Etag": [ - "CNbJn8Oi99sCEAE=" + "CI6D2dnvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -20006,7 +20305,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220515000" + "1532543334000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -20015,19 +20314,19 @@ "471383502717" ], "X-Google-Backends": [ - "vrw66:4310,/bns/yw/borg/yw/bns/blobstore2/bitpusher/617.scotty,acatli15:443" + "xgiadaar8:4444,/bns/xi/borg/xi/bns/blobstore2/bitpusher/65.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=t041W9S4OdW5hQTt_5nwBQ" + "eid=O8BYW8SHAeSwswah7LfIBA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/617.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/65.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -20036,13 +20335,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/617:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/65:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -20057,17 +20356,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Upbzhwbcit4Fs3rhm8baw7cJ0inJ_8WUe4PDz5RKgYVKDGUQCj-OrWzU7v5gnyGVzg6HKrWiXcivl3z1Onr81zRFaBB0idbsC73U0YPo-acJuy5B7o" + "AEnB2UoxcqJN3KbQHJR795Bw0Ey3YFJ-Y75swhhYJUBCOiA6kr3_kkN5tw9bYExTYkCiVlM2nCGVIQIeFyzFT0UVSquFkkrSlQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDoxNi4wNDlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTYuMDQ5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjE2LjA0OVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIxNjA1MDkwMiZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo1NS4xMzBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTUuMTMwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjU1LjEzMFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzAzNTEzMDI1NCZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "33124363d24c10c2", + "ID": "741e7c986c07ccf3", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=veener-jba", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -20077,19 +20376,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=19587cf12768c8974266b5287f33e5a87f84de670a4390fabfd8684da171" + "multipart/related; boundary=cc2eaae9a6895bd0046bd8abe39e11d3ef8e9dc0286d39a686ac10419121" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "666b5160a1d6ea8ee24f338f53aa2856/4153256681791527672;o=0" + "b0af29ed8b930923249802cbccb7208d/8007611020752181229;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -20098,20 +20397,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=veener-jba" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0xOTU4N2NmMTI3NjhjODk3NDI2NmI1Mjg3ZjMzZTVhODdmODRkZTY3MGE0MzkwZmFiZmQ4Njg0ZGExNzENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJmb28ifQoNCi0tMTk1ODdjZjEyNzY4Yzg5NzQyNjZiNTI4N2YzM2U1YTg3Zjg0ZGU2NzBhNDM5MGZhYmZkODY4NGRhMTcxDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KaGVsbG8NCi0tMTk1ODdjZjEyNzY4Yzg5NzQyNjZiNTI4N2YzM2U1YTg3Zjg0ZGU2NzBhNDM5MGZhYmZkODY4NGRhMTcxLS0NCg==" + "Body": "LS1jYzJlYWFlOWE2ODk1YmQwMDQ2YmQ4YWJlMzllMTFkM2VmOGU5ZGMwMjg2ZDM5YTY4NmFjMTA0MTkxMjENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJmb28ifQoNCi0tY2MyZWFhZTlhNjg5NWJkMDA0NmJkOGFiZTM5ZTExZDNlZjhlOWRjMDI4NmQzOWE2ODZhYzEwNDE5MTIxDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KaGVsbG8NCi0tY2MyZWFhZTlhNjg5NWJkMDA0NmJkOGFiZTM5ZTExZDNlZjhlOWRjMDI4NmQzOWE2ODZhYzEwNDE5MTIxLS0NCg==" }, "Response": { "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "13481" @@ -20120,7 +20421,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:16 GMT" + "Wed, 25 Jul 2018 18:23:55 GMT" ], "Server": [ "UploadServer" @@ -20130,7 +20431,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220515000" + "1532543334000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -20139,16 +20440,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrqp9:4465,/bns/yw/borg/yw/bns/blobstore2/bitpusher/291.scotty,acatli15:443" + "xgiadaae1:4085,/bns/xi/borg/xi/bns/blobstore2/bitpusher/125.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uE41W9S3CofTN_LZjLgD" + "eid=O8BYW4zyEMGFygP35YHoAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/291.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/125.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -20157,13 +20458,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/291:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/125:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -20178,17 +20479,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoUtHzivC_HU9AMj05A7N_EChEwwGC4Cd_uud1AQzPfRHOUnkCLSoCsDX_UB__9RklNn8VD9RkYh3mryNsUn30S2VWLDotTLEguQ3uuQpZ8uWq7h0Q" + "AEnB2Uow-R0wLJclAGswXui5hJ8z9XWeq9JVPPfSSepvqZNeN-6tExuIc1AWwEz_cBJB5P1mbdkqD7fbhaz02WVw-g7CYf3ixA" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" } }, { - "ID": "a928bb7bf8687dfb", + "ID": "87792100daeb1b18", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0002/foo", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0002/foo", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -20201,13 +20502,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "08d1377ec8e17155c274fc194ad9f820/5696334120464096536;o=0" + "96f0d27299f8fc2761c91722f341648d/15648573042911565834;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -20216,7 +20517,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0002/foo" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0002/foo" ] }, "Body": "" @@ -20224,12 +20525,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -20241,7 +20544,7 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:10:16 GMT" + "Wed, 25 Jul 2018 18:23:55 GMT" ], "Etag": [ "\"5d41402abc4b2a76b9719d911017c592\"" @@ -20250,7 +20553,7 @@ "Mon, 01 Jan 1990 00:00:00 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:10:16 GMT" + "Wed, 25 Jul 2018 18:23:55 GMT" ], "Pragma": [ "no-cache" @@ -20259,7 +20562,7 @@ "UploadServer" ], "X-Goog-Generation": [ - "1530220216050902" + "1532543035130254" ], "X-Goog-Hash": [ "crc32c=mnG7TA==", @@ -20278,7 +20581,7 @@ "5" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/27,/bns/xg/borg/xg/bns/blobstore2/bitpusher/144.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/22,/bns/yb/borg/yb/bns/blobstore2/bitpusher/58.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -20287,13 +20590,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uE41W5zyGc6z_QSq17aACQ" + "eid=O8BYW4_fH4KxlgG8jo-oCw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/144.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/58.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -20302,13 +20605,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/144:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/58:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -20323,17 +20626,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Up3PfCVQKPiR6DiCVpfwCJEz4vzo-RgveL_pez6n48ga9AxWksJfdjukF4CWg4cjMUDH105nDpYX-dZOrZQ3tIKAP66Pw" + "AEnB2UraNjBAm0NEOopfvjKUUJgm_ZSm1O5zodtQQi27hqHNi-xBcuNl9DSUSRhbNFBg-k8fy4WM-B6VHN09WqlGceN0JSUZzImf_o6hnYdbmdq_2eDWSQE" ] }, "Body": "aGVsbG8=" } }, { - "ID": "dd67652d41d2686b", + "ID": "20f0b06ca86b2545", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0002/foo", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0002/foo", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -20346,13 +20649,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fd21f084b73d31df1bbdd72c616bcb92/7311468053663031351;o=0" + "a04178fb8ff3e150fead82279b795a16/4842792090856380710;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -20361,7 +20664,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0002/foo" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0002/foo" ], "X-Goog-User-Project": [ "dulcet-port-762" @@ -20372,12 +20675,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -20389,7 +20694,7 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:10:16 GMT" + "Wed, 25 Jul 2018 18:23:55 GMT" ], "Etag": [ "\"5d41402abc4b2a76b9719d911017c592\"" @@ -20398,7 +20703,7 @@ "Mon, 01 Jan 1990 00:00:00 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:10:16 GMT" + "Wed, 25 Jul 2018 18:23:55 GMT" ], "Pragma": [ "no-cache" @@ -20407,7 +20712,7 @@ "UploadServer" ], "X-Goog-Generation": [ - "1530220216050902" + "1532543035130254" ], "X-Goog-Hash": [ "crc32c=mnG7TA==", @@ -20426,7 +20731,7 @@ "5" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/0,/bns/xg/borg/xg/bns/blobstore2/bitpusher/16.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/172,/bns/yb/borg/yb/bns/blobstore2/bitpusher/279.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -20435,13 +20740,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uE41W9-8Ic21_QTXxrTYCw" + "eid=O8BYW7nJJ4i7lgGFtKfoCw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/16.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/279.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -20450,13 +20755,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/16:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/279:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -20471,17 +20776,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UopOVmH-iqH_wuhhN37j3OGNCTOz1awBkR0BJweU-cnwgEot_jrU0AoU-djJaaH4ZF5Lzp2tiEtkweRHE7zDdPt0rHJ6w" + "AEnB2UoZL6vUXnoZ5l8lLTcvs3qgn-6Qx1nSTE2CgwuETgE5aQeY0e9h05s2bBfYCSBcq7rh_ult9zaYDElEuauG8d2Cuxq8CxV_C2MvRrOLBmIwb6gUHRU" ] }, "Body": "aGVsbG8=" } }, { - "ID": "db433d11c39a99dc", + "ID": "e2b9c8a66119fd5f", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0002/foo", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0002/foo", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -20494,13 +20799,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "4263b7e61fa6a42a4824946ddcdfd52d/8926601982566998871;o=0" + "fe14bb251e8879948b239712527b5e2a/12483754108720863811;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -20509,7 +20814,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0002/foo" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0002/foo" ] }, "Body": "" @@ -20517,9 +20822,11 @@ "Response": { "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -20531,28 +20838,291 @@ "application/xml; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:16 GMT" + "Wed, 25 Jul 2018 18:23:55 GMT" + ], + "Expires": [ + "Wed, 25 Jul 2018 18:23:55 GMT" + ], + "Server": [ + "UploadServer" + ], + "X-Google-Backends": [ + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/260,/bns/yb/borg/yb/bns/blobstore2/bitpusher/518.scotty,ybpy2-v6:443" + ], + "X-Google-Dos-Service-Trace": [ + "main:apps-upload-cloud-storage-unified" + ], + "X-Google-Gfe-Backend-Request-Info": [ + "eid=O8BYW7aULI6WlAG62ZfIAw" + ], + "X-Google-Gfe-Cloud-Project-Number": [ + "36639933145" + ], + "X-Google-Gfe-Request-Trace": [ + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/518.scotty,ybpy2-v6:443" + ], + "X-Google-Gfe-Response-Code-Details-Trace": [ + "response_code_set_by_backend" + ], + "X-Google-Gfe-Service-Trace": [ + "bitpusher-cloud-storage" + ], + "X-Google-Netmon-Label": [ + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/518:caf3" + ], + "X-Google-Service": [ + "bitpusher-cloud-storage" + ], + "X-Google-Shellfish-Status": [ + "CA0gBEBJ" + ], + "X-Guploader-Customer": [ + "cloud-storage" + ], + "X-Guploader-Request-Result": [ + "agent_rejected" + ], + "X-Guploader-Upload-Result": [ + "agent_rejected" + ], + "X-Guploader-Uploadid": [ + "AEnB2UreBt_iJXKRgajw5-xYZFyhA_4fY2SRlIz9vfag2-QkOeTL1Cfqt53Z16FtZFrRulGd7bhdSbMG7914JCQyD3Jz19R_6DXbdvhOZLHpKrzLhfUZaZ0" + ] + }, + "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+VXNlclByb2plY3RNaXNzaW5nPC9Db2RlPjxNZXNzYWdlPkJ1Y2tldCBpcyBhIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLjwvTWVzc2FnZT48RGV0YWlscz5CdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci48L0RldGFpbHM+PC9FcnJvcj4=" + } + }, + { + "ID": "8fbed1e42919d77f", + "Request": { + "Method": "GET", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0002/foo", + "Proto": "HTTP/1.1", + "Header": { + "Accept-Encoding": [ + "gzip" + ], + "Authorization": [ + "REDACTED" + ], + "User-Agent": [ + "Go-http-client/1.1" + ], + "Via": [ + "1.1 httpr-2cb544b9dcbba457f48c" + ], + "X-Cloud-Trace-Context": [ + "b000d62549197c428c622cece24a9e42/1678254627347422047;o=0" + ], + "X-Forwarded-For": [ + "127.0.0.1" + ], + "X-Forwarded-Host": [ + "storage.googleapis.com" + ], + "X-Forwarded-Proto": [ + "https" + ], + "X-Forwarded-Url": [ + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0002/foo" + ], + "X-Goog-User-Project": [ + "gcloud-golang-firestore-tests" + ] + }, + "Body": "" + }, + "Response": { + "StatusCode": 200, + "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, + "Header": { + "Accept-Ranges": [ + "bytes" + ], + "Alt-Svc": [ + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Content-Length": [ + "5" + ], + "Content-Type": [ + "text/plain" + ], + "Date": [ + "Wed, 25 Jul 2018 18:23:55 GMT" + ], + "Etag": [ + "\"5d41402abc4b2a76b9719d911017c592\"" + ], + "Expires": [ + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Last-Modified": [ + "Wed, 25 Jul 2018 18:23:55 GMT" + ], + "Pragma": [ + "no-cache" + ], + "Server": [ + "UploadServer" + ], + "X-Goog-Generation": [ + "1532543035130254" + ], + "X-Goog-Hash": [ + "crc32c=mnG7TA==", + "md5=XUFAKrxLKna5cZ2REBfFkg==" + ], + "X-Goog-Metageneration": [ + "1" + ], + "X-Goog-Storage-Class": [ + "STANDARD" + ], + "X-Goog-Stored-Content-Encoding": [ + "identity" + ], + "X-Goog-Stored-Content-Length": [ + "5" + ], + "X-Google-Backends": [ + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/267,/bns/yb/borg/yb/bns/blobstore2/bitpusher/687.scotty,ybpy2-v6:443" + ], + "X-Google-Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "X-Google-Dos-Service-Trace": [ + "main:apps-upload-cloud-storage-unified" + ], + "X-Google-Gfe-Backend-Request-Info": [ + "eid=O8BYW-adOMaDlAHtjbrgBQ" + ], + "X-Google-Gfe-Cloud-Project-Number": [ + "36639933145" + ], + "X-Google-Gfe-Request-Trace": [ + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/687.scotty,ybpy2-v6:443" + ], + "X-Google-Gfe-Response-Code-Details-Trace": [ + "response_code_set_by_backend" + ], + "X-Google-Gfe-Service-Trace": [ + "bitpusher-cloud-storage" + ], + "X-Google-Netmon-Label": [ + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/687:caf3" + ], + "X-Google-Service": [ + "bitpusher-cloud-storage" + ], + "X-Google-Shellfish-Status": [ + "CA0gBEBJ" + ], + "X-Google-Storage-Location": [ + "US" + ], + "X-Guploader-Customer": [ + "cloud-storage" + ], + "X-Guploader-Request-Result": [ + "success" + ], + "X-Guploader-Upload-Result": [ + "success" + ], + "X-Guploader-Uploadid": [ + "AEnB2UqN1SaD_XSL43RrLlHOuL29sCHHZ8utazQExiGjT0sAFJPuVZaGkp-nYnUGqCyMIyF3P7mqWgCnTdP-Un3_ED_-BYfZzHAWUJHF9mZZLEMKfTT8LsM" + ] + }, + "Body": "aGVsbG8=" + } + }, + { + "ID": "5ff53ab59a0e3f5c", + "Request": { + "Method": "GET", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0002/foo", + "Proto": "HTTP/1.1", + "Header": { + "Accept-Encoding": [ + "gzip" + ], + "Authorization": [ + "REDACTED" + ], + "User-Agent": [ + "Go-http-client/1.1" + ], + "Via": [ + "1.1 httpr-2cb544b9dcbba457f48c" + ], + "X-Cloud-Trace-Context": [ + "c4a61d7b83af76d4ae01bd17b22bfb78/9319216649506806908;o=0" + ], + "X-Forwarded-For": [ + "127.0.0.1" + ], + "X-Forwarded-Host": [ + "storage.googleapis.com" + ], + "X-Forwarded-Proto": [ + "https" + ], + "X-Forwarded-Url": [ + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0002/foo" + ], + "X-Goog-User-Project": [ + "veener-jba" + ] + }, + "Body": "" + }, + "Response": { + "StatusCode": 403, + "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, + "Header": { + "Alt-Svc": [ + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "private, max-age=0" + ], + "Content-Length": [ + "342" + ], + "Content-Type": [ + "application/xml; charset=UTF-8" + ], + "Date": [ + "Wed, 25 Jul 2018 18:23:56 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:16 GMT" + "Wed, 25 Jul 2018 18:23:56 GMT" ], "Server": [ "UploadServer" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/57,/bns/xg/borg/xg/bns/blobstore2/bitpusher/27.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/105,/bns/yb/borg/yb/bns/blobstore2/bitpusher/897.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uE41W_yIJc2x_QSH3qPYCw" + "eid=PMBYW7fjAYbjlgGksJ2YDA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/27.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/897.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -20561,13 +21131,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/27:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/897:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Guploader-Customer": [ "cloud-storage" @@ -20579,17 +21149,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Uo3nec4ennzHc49DG_-yuy9YmGv-DWUW2XecUT0b38Czq_VH1Vt4UwyXivL4rbEEbPoQ2GZIayrSVNjp3zsCIp3t-xs_w" + "AEnB2UrFKrtR11lxGP7In0z7H9aZj5psaXFlrrhAp5ts-5l0KtFgrVT1Zg9VPoxtLAHWQIvzPQXo00erD0Phwxp71kLjogdQjg" ] }, - "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+VXNlclByb2plY3RNaXNzaW5nPC9Db2RlPjxNZXNzYWdlPkJ1Y2tldCBpcyBhIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLjwvTWVzc2FnZT48RGV0YWlscz5CdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci48L0RldGFpbHM+PC9FcnJvcj4=" + "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+VXNlclByb2plY3RBY2Nlc3NEZW5pZWQ8L0NvZGU+PE1lc3NhZ2U+UmVxdWVzdGVyIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBwZXJtaXNzaW9ucyBvbiB1c2VyIHByb2plY3QuPC9NZXNzYWdlPjxEZXRhaWxzPmludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuPC9EZXRhaWxzPjwvRXJyb3I+" } }, { - "ID": "f1d7d281a173bbab", + "ID": "68a2fa12fc3d76fa", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0002/foo", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -20599,28 +21169,28 @@ "REDACTED" ], "User-Agent": [ - "Go-http-client/1.1" + "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "1c9400b9342eb99e0b40f5859a7e6dfc/10469680520734484086;o=0" + "1d2f9ca620b485165c31b233a567aeca/16960179766866206104;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ - "storage.googleapis.com" + "www.googleapis.com" ], "X-Forwarded-Proto": [ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0002/foo" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full" ], - "X-Goog-User-Project": [ - "gcloud-golang-firestore-tests" + "X-Goog-Api-Client": [ + "gl-go/1.10.3 gccl/20180226" ] }, "Body": "" @@ -20628,97 +21198,81 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { - "Accept-Ranges": [ - "bytes" - ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "5" + "3523" ], "Content-Type": [ - "text/plain" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:16 GMT" + "Wed, 25 Jul 2018 18:23:56 GMT" ], "Etag": [ - "\"5d41402abc4b2a76b9719d911017c592\"" + "CI6D2dnvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" ], - "Last-Modified": [ - "Thu, 28 Jun 2018 21:10:16 GMT" - ], "Pragma": [ "no-cache" ], "Server": [ "UploadServer" ], - "X-Goog-Generation": [ - "1530220216050902" - ], - "X-Goog-Hash": [ - "crc32c=mnG7TA==", - "md5=XUFAKrxLKna5cZ2REBfFkg==" - ], - "X-Goog-Metageneration": [ - "1" + "Vary": [ + "Origin", + "X-Origin" ], - "X-Goog-Storage-Class": [ - "STANDARD" + "X-Google-Apiary-Auth-Expires": [ + "1532543336000" ], - "X-Goog-Stored-Content-Encoding": [ - "identity" + "X-Google-Apiary-Auth-Scopes": [ + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" ], - "X-Goog-Stored-Content-Length": [ - "5" + "X-Google-Apiary-Auth-User": [ + "998958384336" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/8,/bns/xg/borg/xg/bns/blobstore2/bitpusher/161.scotty,aclgal16:443" - ], - "X-Google-Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "xhiadbao9:4166,/bns/xi/borg/xi/bns/blobstore2/bitpusher/50.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uE41W-uLMou6_QSYkbfICw" - ], - "X-Google-Gfe-Cloud-Project-Number": [ - "36639933145" + "eid=PMBYW5n8DMKwswbo-qroCQ" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/161.scotty,aclgal16:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/50.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" ], "X-Google-Gfe-Service-Trace": [ - "bitpusher-cloud-storage" + "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/161:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/50:caf3" ], "X-Google-Service": [ - "bitpusher-cloud-storage" + "bitpusher-gcs-apiary" + ], + "X-Google-Session-Info": [ + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" ], - "X-Google-Storage-Location": [ - "US" - ], "X-Guploader-Customer": [ - "cloud-storage" + "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ "success" @@ -20727,128 +21281,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpCMgVcXoWdrmzePVAThzJawO4WXMW0f8IMHdhJxPMTw2uNtnddA7McBGrH7IuoaKq9uwsy54mOWuHwLkYRMiYoumcDqg" - ] - }, - "Body": "aGVsbG8=" - } - }, - { - "ID": "42864a4ed49833e6", - "Request": { - "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0002/foo", - "Proto": "HTTP/1.1", - "Header": { - "Accept-Encoding": [ - "gzip" - ], - "Authorization": [ - "REDACTED" - ], - "User-Agent": [ - "Go-http-client/1.1" - ], - "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" - ], - "X-Cloud-Trace-Context": [ - "a6d4423924680721fa9909d721a40b4a/12084814453933353366;o=0" - ], - "X-Forwarded-For": [ - "::1" - ], - "X-Forwarded-Host": [ - "storage.googleapis.com" - ], - "X-Forwarded-Proto": [ - "https" - ], - "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0002/foo" - ], - "X-Goog-User-Project": [ - "veener-jba" - ] - }, - "Body": "" - }, - "Response": { - "StatusCode": 403, - "Proto": "HTTP/1.1", - "Header": { - "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "private, max-age=0" - ], - "Content-Length": [ - "342" - ], - "Content-Type": [ - "application/xml; charset=UTF-8" - ], - "Date": [ - "Thu, 28 Jun 2018 21:10:17 GMT" - ], - "Expires": [ - "Thu, 28 Jun 2018 21:10:17 GMT" - ], - "Server": [ - "UploadServer" - ], - "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/9,/bns/xg/borg/xg/bns/blobstore2/bitpusher/157.scotty,aclgal16:443" - ], - "X-Google-Dos-Service-Trace": [ - "main:apps-upload-cloud-storage-unified" - ], - "X-Google-Gfe-Backend-Request-Info": [ - "eid=uE41W-agN6u5_QTCxI6wCg" - ], - "X-Google-Gfe-Cloud-Project-Number": [ - "36639933145" - ], - "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/157.scotty,aclgal16:443" - ], - "X-Google-Gfe-Response-Code-Details-Trace": [ - "response_code_set_by_backend" - ], - "X-Google-Gfe-Service-Trace": [ - "bitpusher-cloud-storage" - ], - "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/157:caf3" - ], - "X-Google-Service": [ - "bitpusher-cloud-storage" - ], - "X-Google-Shellfish-Status": [ - "CA0gBEBG" - ], - "X-Guploader-Customer": [ - "cloud-storage" - ], - "X-Guploader-Request-Result": [ - "agent_rejected" - ], - "X-Guploader-Upload-Result": [ - "agent_rejected" - ], - "X-Guploader-Uploadid": [ - "AEnB2UrDJqfXKAavivqZCnygzCrMWdDbIRSsy-nl53ETiaQLMmXx1BkgNhIHcuHdBUo6h2rvFN73wg_2ukCDORGwPNkwnyQ6Yg" + "AEnB2UoTl_kDuP62HoKA0RF0SXad-vvZ2_dExsDZidyrmUHbfvDqvKDRdOYBaZgMwIsxRm9gXn90w6pASSryr2U4uwzt29NRDA" ] }, - "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+VXNlclByb2plY3RBY2Nlc3NEZW5pZWQ8L0NvZGU+PE1lc3NhZ2U+UmVxdWVzdGVyIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBwZXJtaXNzaW9ucyBvbiB1c2VyIHByb2plY3QuPC9NZXNzYWdlPjxEZXRhaWxzPmludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuPC9EZXRhaWxzPjwvRXJyb3I+" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo1NS4xMzBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTUuMTMwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjU1LjEzMFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzAzNTEzMDI1NCZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "31408bf1488157e9", + "ID": "6dacd2b7e9b175e7", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -20861,13 +21304,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "46941ff997a590c2eedb3d891654ce25/13627891888311086261;o=0" + "c6a1f1d94f0010236d3ac98fb0e30791/6154679185997848245;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -20876,7 +21319,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -20887,9 +21330,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -20901,10 +21346,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:17 GMT" + "Wed, 25 Jul 2018 18:23:56 GMT" ], "Etag": [ - "CNbJn8Oi99sCEAE=" + "CI6D2dnvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -20920,7 +21365,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220513000" + "1532543332000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -20929,16 +21374,16 @@ "998958384336" ], "X-Google-Backends": [ - "vry82:4465,/bns/yw/borg/yw/bns/blobstore2/bitpusher/293.scotty,acatli15:443" + "xgiadaad3:4296,/bns/xi/borg/xi/bns/blobstore2/bitpusher/20.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uU41W_7gB4SchwS8k4SIAw" + "eid=PMBYW8CNEq6wswbUmaUY" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/293.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/20.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -20947,13 +21392,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/293:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/20:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -20968,17 +21413,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpGte3xsP3Zp7_HgydfXba1Xuq9gBP_nINu13UEfbbaTAYD4irZEUMqH_-NLMKDeRn-lmV7nt_VPrnu2UoEi1qVPlHBqKN2ogJ3X1XOhOXhLjgL8SA" + "AEnB2Upnvgot0iqhjIurAagBlXEhs9ae0sWfm1zVBLQoM1cEB_Eiom_iGHDsUQienh3tBOYeYAEXXahcxlnECqZIH9QYsdVvsA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDoxNi4wNDlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTYuMDQ5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjE2LjA0OVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIxNjA1MDkwMiZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo1NS4xMzBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTUuMTMwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjU1LjEzMFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzAzNTEzMDI1NCZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "190cbc2c7fe0c559", + "ID": "7f10c5dde122f210", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -20991,13 +21436,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "72d8ae241932c1c8c3f789bde6064231/15242744350828212181;o=0" + "113083ce96c0378572ab390acccba90d/13795642303357247441;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -21006,7 +21451,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -21015,32 +21460,28 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0" ], "Content-Length": [ - "3523" + "12469" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:17 GMT" - ], - "Etag": [ - "CNbJn8Oi99sCEAE=" + "Wed, 25 Jul 2018 18:23:56 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:23:56 GMT" ], "Server": [ "UploadServer" @@ -21050,25 +21491,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220513000" + "1532543333000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrbq124:4261,/bns/yw/borg/yw/bns/blobstore2/bitpusher/288.scotty,acatli15:443" + "xgiadaay15:4155,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uU41W5-YDYXGhQT1vofYAg" + "eid=PMBYW5uKF4axswa5pbcI" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/288.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -21077,13 +21518,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/288:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/5:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -21092,23 +21533,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UorRQ8cwPhFKv7il_-XrPG0d6JrikWYUuaeEjglHgrPgNLYCfU9o6rJi2TW9K39ZqpZf_-NngBn6_hXEsFiSbo5O23gNXxujhMyfWT4tYHpz56uMPc" + "AEnB2UqViGxP3bCyuReQrS55Wa-DOfL1hKAmwt6xGytqlIljgDk_DjBMl7URriPQm8D1on_AkIJc3Ie4IAA6pNtOyl16XiNNpA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDoxNi4wNDlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTYuMDQ5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjE2LjA0OVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIxNjA1MDkwMiZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTozMzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5HZXRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldE9iamVjdC5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5nZXQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjgxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5HZXRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldE9iamVjdC5qYXZhOjMzMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmdldChPYmplY3RzRGVsZWdhdG9yLmphdmE6ODEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" } }, { - "ID": "c0ea345eefed2670", + "ID": "9644550f9edf9dfa", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -21121,13 +21562,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3325d76a9425b670cfd8c677f9b4c33c/16857879383521997556;o=0" + "0d00091aaa2fcdb08ccb7ecad67ddbe4/2989860256085271022;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -21136,7 +21577,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -21145,26 +21586,34 @@ "Body": "" }, "Response": { - "StatusCode": 400, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "12469" + "3523" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:17 GMT" + "Wed, 25 Jul 2018 18:23:56 GMT" + ], + "Etag": [ + "CI6D2dnvutwCEAE=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:17 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -21174,7 +21623,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220514000" + "1532543333000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -21183,16 +21632,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrrw17:4231,/bns/yw/borg/yw/bns/blobstore2/bitpusher/608.scotty,acatli15:443" + "xgiadaao15:4469,/bns/xi/borg/xi/bns/blobstore2/bitpusher/52.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uU41W_ShEoPThQS6q4CABQ" + "eid=PMBYW4TvJcWxswbvo6bYDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/608.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/52.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -21201,13 +21650,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/608:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/52:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -21216,23 +21665,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UphlJBEP2iTABN3407ia-4ih9-oM7S9yL9TiHnjEjlvp-XZNPzQQFfwm4p9jZrBCCHlvxDzOW7m3XIXW1dO_KFbl09KQMN4iRfofotcSZeQ72NCRB0" + "AEnB2UrCqay25oPalD-_KLUL5Z-kAJFhakccRfH-vRtQvhsrHUewRSrt2tF5fhAn--vSOVcPlhX2U0zMdT4n22P-BdMVYX2DuA" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTozMzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5HZXRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldE9iamVjdC5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5nZXQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjgxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5HZXRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldE9iamVjdC5qYXZhOjMzMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmdldChPYmplY3RzRGVsZWdhdG9yLmphdmE6ODEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo1NS4xMzBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTUuMTMwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjU1LjEzMFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzAzNTEzMDI1NCZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "00b270f78c67626c", + "ID": "a54e129ea537ccea", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -21245,13 +21694,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "08a9a77c6de9dccf037e8b02c715d961/18400956822194566420;o=0" + "efc09ce8b07fcec6e40b83765c27f4b4/10630823373444669962;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -21260,7 +21709,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -21269,32 +21718,28 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0" ], "Content-Length": [ - "3523" + "13421" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:17 GMT" - ], - "Etag": [ - "CNbJn8Oi99sCEAE=" + "Wed, 25 Jul 2018 18:23:56 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:23:56 GMT" ], "Server": [ "UploadServer" @@ -21304,7 +21749,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220514000" + "1532543333000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -21313,16 +21758,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrce128:4376,/bns/yw/borg/yw/bns/blobstore2/bitpusher/388.scotty,acatli15:443" + "xgiadabf13:4076,/bns/xi/borg/xi/bns/blobstore2/bitpusher/106.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uU41W_PTIIq0hQSgpJTwCw" + "eid=PMBYW7SDK8m9swbZ6qrAAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/388.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/106.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -21331,13 +21776,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/388:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/106:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -21346,23 +21791,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Uop-J8iBEhEnXgkz_MzPX9TCr42SEmTETdU5oCTEXa5qIXlaNqh_p1sQQEpXFUp2BAf0tAiWBeRH4A0pYKC0n9cAl98J6kkh1Sua2KxVm-cq9OEu0I" + "AEnB2UqhGakngrNYdpaq_Vp_Bl6RLUnMHvxVhFp4EsNtqkE4G_3_oCYt3vNfpOpX19B9JY3Bues6diM-cnqp6CrvN9kGyeM6Sw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDoxNi4wNDlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTYuMDQ5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjE2LjA0OVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIxNjA1MDkwMiZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5HZXRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldE9iamVjdC5qYXZhOjMzMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmdldChPYmplY3RzRGVsZWdhdG9yLmphdmE6ODEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTozMzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5HZXRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldE9iamVjdC5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5nZXQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjgxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" } }, { - "ID": "3142f930904cbbde", + "ID": "bc712f85fc88cdde", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=veener-jba", + "Method": "PATCH", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -21371,17 +21816,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "85" + ], + "Content-Type": [ + "application/json" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "8aa6a345da9a66a35c171d811cd12c58/1569628152365758515;o=0" + "db226b6be665a194ccb068be680d1c32/18271785391309153063;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -21390,35 +21841,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" }, "Response": { - "StatusCode": 403, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "13421" + "3549" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:17 GMT" + "Wed, 25 Jul 2018 18:23:57 GMT" + ], + "Etag": [ + "CI6D2dnvutwCEAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:17 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -21428,25 +21887,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220514000" + "1532543336000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrdo186:4304,/bns/yw/borg/yw/bns/blobstore2/bitpusher/238.scotty,acatli15:443" + "xhiadbad13:4405,/bns/xi/borg/xi/bns/blobstore2/bitpusher/88.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uU41W53wJcGphQST_ovoDA" + "eid=PMBYW8ziN862swbPnpToAQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/238.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/88.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -21455,13 +21914,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/238:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/88:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOIrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -21470,23 +21929,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur4LNMxyGsvG7u9Lg--pnN3GYdVlXrL40RHbaNlsnAtOhWejHJlG6wYttZ12LHxIPap7ywyWu-8rEG88KRsBdVE5uZwYL5zL8IAiJImgiALLxuI5Yc" + "AEnB2Uq2k5M3OLqcIYXARS9RVGTMFz-N8JyRZhindbRNrtMqXEUCWvpwDbJMcMPUDFYQHYwiJbKX5OH0XzXa6ENSKKR_sbdSOg" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5HZXRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldE9iamVjdC5qYXZhOjMzMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmdldChPYmplY3RzRGVsZWdhdG9yLmphdmE6ODEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkdldE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0T2JqZWN0LmphdmE6MzMzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZ2V0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuR2V0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRPYmplY3QuamF2YTozMzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5HZXRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldE9iamVjdC5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5nZXQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjgxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo1NS4xMzBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTcuMDE4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjU1LjEzMFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzAzNTEzMDI1NCZhbHQ9bWVkaWEiLAogImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFJPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIm1uRzdUQT09IiwKICJldGFnIjogIkNJNkQyZG52dXR3Q0VBST0iCn0K" } }, { - "ID": "100fe931303dceec", + "ID": "a51da56158271f0e", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -21505,13 +21964,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "4532ade6469dfc883b7b83b117ae24f5/3112705591038327635;o=0" + "d6f64d1040bd96375454928af306e37b/7466285909935711299;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -21520,20 +21979,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -21545,10 +22006,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:18 GMT" + "Wed, 25 Jul 2018 18:23:57 GMT" ], "Etag": [ - "CNbJn8Oi99sCEAI=" + "CI6D2dnvutwCEAM=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -21564,7 +22025,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220517000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -21573,16 +22034,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrkx5:4437,/bns/yw/borg/yw/bns/blobstore2/bitpusher/199.scotty,acatli15:443" + "xgiadaan8:4230,/bns/xi/borg/xi/bns/blobstore2/bitpusher/33.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uU41W_PKMsaNhQTT7aKgCA" + "eid=PcBYW8ScD--wswb5qKXgCA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/199.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/33.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -21591,13 +22052,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/199:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/33:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -21612,17 +22073,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpknFs9O5h99ip2tORJBwl0L7JgZZXUe3rGGiKJlDIi5ZxWBUpmSYuRbnBXRq_oUP_HATK7hpG_eWAEhSJw4Dan0DQ_6GIMiC3RsALhfls0gK4r-1M" + "AEnB2Uo2rlljfNQ_Q8dOCE4sFV4VfeNZw3O5kl7mZLi8R-RzXBw1_oFb1iMEW9hnHFTCY67T6m7WEzXaw9kbkoY7zM5RkysMoA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDoxNi4wNDlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTcuOTE4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjE2LjA0OVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIxNjA1MDkwMiZhbHQ9bWVkaWEiLAogImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFJPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIm1uRzdUQT09IiwKICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBST0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMyIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo1NS4xMzBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTcuMzMzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjU1LjEzMFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzAzNTEzMDI1NCZhbHQ9bWVkaWEiLAogImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFNPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIm1uRzdUQT09IiwKICJldGFnIjogIkNJNkQyZG52dXR3Q0VBTT0iCn0K" } }, { - "ID": "9bbb7b21fd48e636", + "ID": "a6e99aea876f8bac", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -21641,13 +22102,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3dd6f41b0e6263e4c3eceadd5175eca8/4727840623732113010;o=0" + "88a48b803332aca6897fbdf63b2b5d16/15107249031589946720;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -21656,41 +22117,31 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" }, "Response": { - "StatusCode": 200, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ - "3549" + "12661" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:18 GMT" - ], - "Etag": [ - "CNbJn8Oi99sCEAM=" - ], - "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:23:57 GMT" ], "Server": [ "UploadServer" @@ -21700,25 +22151,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrbo2:4462,/bns/yw/borg/yw/bns/blobstore2/bitpusher/522.scotty,acatli15:443" + "xgiadacb9:4281,/bns/xi/borg/xi/bns/blobstore2/bitpusher/129.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uk41W9nRAsSnhQTgoLeoCQ" + "eid=PcBYW7nMI-e8swagtYXwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/522.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/129.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -21727,13 +22178,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/522:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/129:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -21742,23 +22193,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoMQbhuYXuQ7GOff9UbKImJjMVhKo8y6MQHEeUTUJ5EH6RnSlppnY9sB5EqIsUBkPPMyAM6Ln5YjYwcNutRKulDH2LcSXifKwgjZ43Fh5LRqjcLQrY" + "AEnB2UqFh9-HupG3FA_CyC7fOCayJ5VOgKdNLDBc244hP8ikOZOkfSUZVeb8abIqaldLyb4SoIDyyptNXDslRbEfBLEFur3aeA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMyIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDoxNi4wNDlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTguMTg4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjE2LjA0OVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIxNjA1MDkwMiZhbHQ9bWVkaWEiLAogImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFNPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIm1uRzdUQT09IiwKICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBTT0iCn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjM0NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci51cGRhdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjM0NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci51cGRhdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuVXBkYXRlQW5kUGF0Y2hPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFuZFBhdGNoT2JqZWN0LmphdmE6MzQ1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuVXBkYXRlQW5kUGF0Y2hPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFuZFBhdGNoT2JqZWN0LmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnVwZGF0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5VcGRhdGVBbmRQYXRjaE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQW5kUGF0Y2hPYmplY3QuamF2YTozNDUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5VcGRhdGVBbmRQYXRjaE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQW5kUGF0Y2hPYmplY3QuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IudXBkYXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" } }, { - "ID": "4dbc47f781b6c21c", + "ID": "2c3e0afb48e13b90", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -21777,13 +22228,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5da10d26a1ccd166b5f5f271680af74d/6270918062404682130;o=0" + "3bb565e1b78e167ff6b569a422190cbd/4301748450721654396;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -21792,29 +22243,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" }, "Response": { - "StatusCode": 400, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "12661" + "3549" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:18 GMT" + "Wed, 25 Jul 2018 18:23:58 GMT" + ], + "Etag": [ + "CI6D2dnvutwCEAQ=" + ], + "Expires": [ + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -21824,7 +22289,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -21833,16 +22298,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrdf5:4210,/bns/yw/borg/yw/bns/blobstore2/bitpusher/66.scotty,acatli15:443" + "xgiadaab2:4240,/bns/xi/borg/xi/bns/blobstore2/bitpusher/101.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uk41W67MFYbUhQSJtoaQBA" + "eid=PcBYW9HdMY23swaa1JGICA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/66.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/101.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -21851,13 +22316,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/66:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/101:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -21866,23 +22331,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur1qPgBQlfszVlaM3FT3ZbBU3ySCoXPQdwcGpR_OT7yLURvPVeMtSnKGNQiGe4dTEjGG4qD-tqBZbVA6b4gFVm88c6mtD1Gov_MNCZ9XIMP7nkWTM4" + "AEnB2UrmPrUODY7WaDfG55ZoYvSCo0Cq5K3TSKapUciVB9QATIs2HhKDb6JKlwTpv4S6iWyT-gWQgkMKoW-BcFFlErx-UDvEew" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjM0NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci51cGRhdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjM0NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci51cGRhdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuVXBkYXRlQW5kUGF0Y2hPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFuZFBhdGNoT2JqZWN0LmphdmE6MzQ1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuVXBkYXRlQW5kUGF0Y2hPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFuZFBhdGNoT2JqZWN0LmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnVwZGF0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5VcGRhdGVBbmRQYXRjaE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQW5kUGF0Y2hPYmplY3QuamF2YTozNDUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5VcGRhdGVBbmRQYXRjaE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQW5kUGF0Y2hPYmplY3QuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IudXBkYXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiNCIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo1NS4xMzBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NTcuOTE1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjU1LjEzMFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzAzNTEzMDI1NCZhbHQ9bWVkaWEiLAogImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQVE9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQVE9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFRPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzAzNTEzMDI1NC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAzNTEzMDI1NCIsCiAgICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFRPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIm1uRzdUQT09IiwKICJldGFnIjogIkNJNkQyZG52dXR3Q0VBUT0iCn0K" } }, { - "ID": "01128ee46ef74cf2", + "ID": "407554bf3c7e3c01", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -21901,13 +22366,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "bacf82845c280e09dbee3cef35b7787f/7886051991308715185;o=0" + "b1f5e48236be3f7f643ca8337e2e1ca5/11942430097399244697;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -21916,41 +22381,31 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026projection=full\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" }, "Response": { - "StatusCode": 200, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ - "3549" + "13613" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:18 GMT" - ], - "Etag": [ - "CNbJn8Oi99sCEAQ=" - ], - "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:23:58 GMT" ], "Server": [ "UploadServer" @@ -21960,7 +22415,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -21969,16 +22424,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrbd184:4417,/bns/yw/borg/yw/bns/blobstore2/bitpusher/331.scotty,acatli15:443" + "xgiadaax14:4175,/bns/xi/borg/xi/bns/blobstore2/bitpusher/99.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uk41W8OuIMKOhgT_2Z64Bg" + "eid=PsBYW6voAeu4swbCgq_QBw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/331.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/99.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -21987,13 +22442,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/331:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/99:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -22002,23 +22457,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UrAXV5iYTuMuUUEzPacx6UnMeQlHjUqSuMGGixfMRpnH2sSWdNjcuyXYx7pYheIMTvkteiLeV-xEhvXMhB8NflmyPTS5PHqv3hy9bhXJ80ldJfN2xM" + "AEnB2UrK5gNHxYuF386PL8smAQSOnt7cL5EvfiCVU8YcG8stkN0mh8tQwAnqcag4F92H1Q_FinPNBU5Zq-2JdMrjEi2zWkT1qg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAibWV0YWdlbmVyYXRpb24iOiAiNCIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDoxNi4wNDlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MTguNjE2WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjE2LjA0OVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIxNjA1MDkwMiZhbHQ9bWVkaWEiLAogImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAiYWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQVE9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQVE9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFRPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIxNjA1MDkwMi91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIxNjA1MDkwMiIsCiAgICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgImVtYWlsIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFRPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIm1uRzdUQT09IiwKICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBUT0iCn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5VcGRhdGVBbmRQYXRjaE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQW5kUGF0Y2hPYmplY3QuamF2YTozNDUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5VcGRhdGVBbmRQYXRjaE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQW5kUGF0Y2hPYmplY3QuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IudXBkYXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjM0NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci51cGRhdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjM0NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci51cGRhdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuVXBkYXRlQW5kUGF0Y2hPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFuZFBhdGNoT2JqZWN0LmphdmE6MzQ1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuVXBkYXRlQW5kUGF0Y2hPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFuZFBhdGNoT2JqZWN0LmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnVwZGF0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" } }, { - "ID": "00dae6ab172ea645", + "ID": "30d1a15aaa7d6346", "Request": { - "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=veener-jba", + "Method": "PUT", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -22028,7 +22483,7 @@ "REDACTED" ], "Content-Length": [ - "85" + "107" ], "Content-Type": [ "application/json" @@ -22037,13 +22492,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "46ca805e584f6572ef53d8ca97d9997a/9501185924507584465;o=0" + "fd52a6013b2dc536f0b0964b6b37a9d3/1136929516530952373;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -22052,29 +22507,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026projection=full\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJjb250ZW50TGFuZ3VhZ2UiOiJlbiJ9Cg==" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { - "StatusCode": 403, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "13613" + "403" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:18 GMT" + "Wed, 25 Jul 2018 18:23:59 GMT" + ], + "Etag": [ + "CAM=" + ], + "Expires": [ + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -22084,25 +22553,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543336000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrqe13:4484,/bns/yw/borg/yw/bns/blobstore2/bitpusher/115.scotty,acatli15:443" + "xiiadcdk2:4016,/bns/xi/borg/xi/bns/blobstore2/bitpusher/59.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uk41W5ujLcXWhATtno6wAw" + "eid=PsBYW8P8DNCzswaRnZSgCA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/115.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/59.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -22111,13 +22580,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/115:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/59:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -22126,23 +22595,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpQmzUEoByvFITXR7T3N4j137soNyjFtaBEfAWR9Of14rus4CXBTwwBrmYmkj8jtkwQeR9IfFckazKCRTyYFzo4wDwEoHX-P0RWVksQ6h9Tz2ZN-yo" + "AEnB2UooWb8sPakriOUlHxFjtCPaoBxrRQP-xW-3aav80KVwVNlG7UOGPZFfgipkGSDpvAnQbjyjC85lXieAQTdFyy9ZpLId_A" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5VcGRhdGVBbmRQYXRjaE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQW5kUGF0Y2hPYmplY3QuamF2YTozNDUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5VcGRhdGVBbmRQYXRjaE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQW5kUGF0Y2hPYmplY3QuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IudXBkYXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjM0NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci51cGRhdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjM0NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlVwZGF0ZUFuZFBhdGNoT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBbmRQYXRjaE9iamVjdC5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci51cGRhdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuVXBkYXRlQW5kUGF0Y2hPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFuZFBhdGNoT2JqZWN0LmphdmE6MzQ1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuVXBkYXRlQW5kUGF0Y2hPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFuZFBhdGNoT2JqZWN0LmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnVwZGF0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQU09Igp9Cg==" } }, { - "ID": "4a8b1b2718d9b064", + "ID": "c9cd0577537cdb7c", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -22161,13 +22630,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b0b9a3a93a81c40a7c7597fd3f20c02e/11043981892498475760;o=0" + "b9e959452c6ad75fbf269ca372caa852/8777892638185187794;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -22176,20 +22645,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -22201,7 +22672,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:20 GMT" + "Wed, 25 Jul 2018 18:23:59 GMT" ], "Etag": [ "CAM=" @@ -22220,7 +22691,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -22229,16 +22700,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbp125:4390,/bns/yw/borg/yw/bns/blobstore2/bitpusher/139.scotty,acatli15:443" + "xiiadcaa7:4091,/bns/xi/borg/xi/bns/blobstore2/bitpusher/56.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=uk41W_fcONGChQTP5Cs" + "eid=P8BYW4LXJa2yswaCrJ3IBA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/139.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/56.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -22247,13 +22718,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/139:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/56:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -22268,17 +22739,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpJycIVITYZYCSk73eOheXGapDPZ-dYKqC-WGASnlDXcm3VwZI4gice2InchwYM9MqWVAliUgjUwNUt2yEMmW6lix45IZkyuaKl8PtSVeNEishbrBA" + "AEnB2Up82rqEhCFLut4vrHOYRNRORNJHfcgsNl0xVDGYnAjIkwfwNasD8EB7ByCyJSzRV8J009uJLhqVrg3g2raMeaxdH7IUZQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQU09Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQU09Igp9Cg==" } }, { - "ID": "bb277ce379d81a6d", + "ID": "d077143a650c70fa", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -22297,13 +22768,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "158d3e0dc393a56b52b071dc7eb7368b/12659116925192195344;o=0" + "da0c1d3c32df40e3e66f1f7e9f28fb6d/16418854656049736430;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -22312,20 +22783,148 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + }, + "Response": { + "StatusCode": 400, + "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, + "Header": { + "Alt-Svc": [ + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Content-Length": [ + "13913" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Wed, 25 Jul 2018 18:24:00 GMT" + ], + "Server": [ + "UploadServer" + ], + "Vary": [ + "Origin", + "X-Origin" + ], + "X-Google-Apiary-Auth-Expires": [ + "1532543337000" + ], + "X-Google-Apiary-Auth-Scopes": [ + "https://www.googleapis.com/auth/devstorage.full_control" + ], + "X-Google-Apiary-Auth-User": [ + "471383502717" + ], + "X-Google-Backends": [ + "xgiadaar8:4444,/bns/xi/borg/xi/bns/blobstore2/bitpusher/121.scotty,aclgag4:443" + ], + "X-Google-Dos-Service-Trace": [ + "main:apps-upload-cloud-storage-unified" + ], + "X-Google-Gfe-Backend-Request-Info": [ + "eid=P8BYW5_NN8KFygPBwIT4Ag" + ], + "X-Google-Gfe-Request-Trace": [ + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/121.scotty,aclgag4:443" + ], + "X-Google-Gfe-Response-Code-Details-Trace": [ + "response_code_set_by_backend" + ], + "X-Google-Gfe-Service-Trace": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Netmon-Label": [ + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/121:caf3" + ], + "X-Google-Service": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Session-Info": [ + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + ], + "X-Google-Shellfish-Status": [ + "CA0gBEBG" + ], + "X-Guploader-Customer": [ + "apiary_cloudstorage_metadata" + ], + "X-Guploader-Request-Result": [ + "agent_rejected" + ], + "X-Guploader-Upload-Result": [ + "agent_rejected" + ], + "X-Guploader-Uploadid": [ + "AEnB2Ur_GHAp08L8nZ7W9u_7_Sb6fAN2lBiasp3YiGYfF0EDUetpQVhC3EcKhhuzCzV1rA2y1g9pakq6FNKjTFAAFxlZUeA31Q" + ] + }, + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6MTYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci51cGRhdGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIKIH0KfQo=" + } + }, + { + "ID": "0fc59fdb0a0970f4", + "Request": { + "Method": "PUT", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "Proto": "HTTP/1.1", + "Header": { + "Accept-Encoding": [ + "gzip" + ], + "Authorization": [ + "REDACTED" + ], + "Content-Length": [ + "107" + ], + "Content-Type": [ + "application/json" + ], + "User-Agent": [ + "google-api-go-client/0.5" + ], + "Via": [ + "1.1 httpr-2cb544b9dcbba457f48c" + ], + "X-Cloud-Trace-Context": [ + "05e6433a787ccfc7de0ee9554e5c4870/5613355174676228875;o=0" + ], + "X-Forwarded-For": [ + "127.0.0.1" + ], + "X-Forwarded-Host": [ + "www.googleapis.com" + ], + "X-Forwarded-Proto": [ + "https" + ], + "X-Forwarded-Url": [ + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" + ], + "X-Goog-Api-Client": [ + "gl-go/1.10.3 gccl/20180226" + ] + }, + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -22337,7 +22936,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:20 GMT" + "Wed, 25 Jul 2018 18:24:00 GMT" ], "Etag": [ "CAM=" @@ -22356,25 +22955,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vria2:4265,/bns/yw/borg/yw/bns/blobstore2/bitpusher/129.scotty,acatli15:443" + "xiiadcbh15:4099,/bns/xi/borg/xi/bns/blobstore2/bitpusher/54.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=vE41W4alINDXN_6_oYgI" + "eid=QMBYW_THB7C6swam3qWoCQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/129.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/54.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -22383,13 +22982,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/129:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/54:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -22404,17 +23003,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoljIuBxeSkz08rKihRr-DXUYHF_UMfzs-g9uQG7eEuIRyG-zOcBgYm9WVxZ2RPClRbnyKkaee1AvkuzSrkfjZQ9iquZQ7yrz7mWaHqDZD0nxQU4Ns" + "AEnB2Uo86Hgu73n1vcKEeA7drKDFDojpJ4vWWtAHB51gGdx0ADZKSG5c7RJ0zbpByNPbLofKOzPmaIuV0xnqo8vO6wz8thW54A" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQU09Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQU09Igp9Cg==" } }, { - "ID": "aaccc858a7b3541f", + "ID": "0590aa7e67c37ede", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -22433,13 +23032,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b337f0690498d25811062520fbe0c456/14202194359569928239;o=0" + "b805291952dffe414d40d9a2ad6c2828/13254317192540777511;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -22448,29 +23047,31 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { - "StatusCode": 400, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ - "13913" + "14865" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:20 GMT" + "Wed, 25 Jul 2018 18:24:00 GMT" ], "Server": [ "UploadServer" @@ -22480,7 +23081,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -22489,16 +23090,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrpv11:4112,/bns/yw/borg/yw/bns/blobstore2/bitpusher/492.scotty,acatli15:443" + "xiiadcbm4:4122,/bns/xi/borg/xi/bns/blobstore2/bitpusher/69.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=vE41W4XiMYikhwST84aoBg" + "eid=QMBYW4y_DaO9swa9vaKYDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/492.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/69.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -22507,13 +23108,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/492:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/69:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -22528,17 +23129,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoN0c7HMbwIpya1PLfc5N41t9a2inrwWt2CA3dhygca1rirFarzpuiFz26FA-Blem5qi4Tk78Pz7RU2yk_xRNF805Rm_28rTvyj7juQgrOPBNTILZ4" + "AEnB2UqEB4auiOtBE3dLWghF8zNhxES_Q7_XNJ54Zbiohe8FQr2CQDu7aQWJuJn4ER4zlgrw811fmiwr3zalmBArHNtkPeePhQ" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6MTYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci51cGRhdGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIKIH0KfQo=" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9Rk9SQklEREVOLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4iCiB9Cn0K" } }, { - "ID": "5f988648496bbcc3", + "ID": "9af0c48121d2d9c4", "Request": { - "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -22547,23 +23148,17 @@ "Authorization": [ "REDACTED" ], - "Content-Length": [ - "107" - ], - "Content-Type": [ - "application/json" - ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d4352a964ac5b65aae79386f4c2f760e/15817328292768797519;o=0" + "58205735aa12ef69c82419885895e5db/2448817715462171972;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -22572,41 +23167,40 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0, must-revalidate, no-transform" ], "Content-Length": [ - "403" + "2646" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:21 GMT" + "Wed, 25 Jul 2018 18:24:00 GMT" ], "Etag": [ "CAM=" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:00 GMT" ], "Server": [ "UploadServer" @@ -22616,25 +23210,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrbx62:4007,/bns/yw/borg/yw/bns/blobstore2/bitpusher/405.scotty,acatli15:443" + "xgiadabr1:4172,/bns/xi/borg/xi/bns/blobstore2/bitpusher/28.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=vU41W9W2Acm8hgT99KeQAw" + "eid=QMBYW5L9GYG2swaN3piQDw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/405.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/28.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -22643,13 +23237,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/405:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/28:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -22664,17 +23258,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqMXZhr3hO4vFLHQL4GL8F_so6-eqx4cdYM0PHUB4x0U5bZDO0CazPcp0d8zzFMvami2VDcYEtCwk0i4pvx1yDbIGfAz_KIKA87xcggmS-izaF4QKk" + "AEnB2UpdC8vkHbcANO9hlLiqvUQXOemd_UOy2SU8XvowillUZuXXSJs_lhzOv_gFt0KKkoCOVWQySI12MsRge39wa0Z4fyOR-w" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQU09Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0FNPSIKICB9CiBdCn0K" } }, { - "ID": "f0aebd6ad8a4eae7", + "ID": "666892fbbf519a8f", "Request": { - "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=veener-jba", + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -22683,23 +23277,17 @@ "Authorization": [ "REDACTED" ], - "Content-Length": [ - "107" - ], - "Content-Type": [ - "application/json" - ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f6591b10278450b95cd7cf26ad92bb25/17432462225967732334;o=0" + "09a241f026e8348aee6ab3ba8fb38395/10017441768118677088;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -22708,29 +23296,40 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "" }, "Response": { - "StatusCode": 403, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "private, max-age=0, must-revalidate, no-transform" ], "Content-Length": [ - "14865" + "2646" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:21 GMT" + "Wed, 25 Jul 2018 18:24:01 GMT" + ], + "Etag": [ + "CAM=" + ], + "Expires": [ + "Wed, 25 Jul 2018 18:24:01 GMT" ], "Server": [ "UploadServer" @@ -22740,25 +23339,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vry17:4479,/bns/yw/borg/yw/bns/blobstore2/bitpusher/372.scotty,acatli15:443" + "xgiadabb16:4473,/bns/xi/borg/xi/bns/blobstore2/bitpusher/9.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=vU41W_LKBtbshgThiaaoCQ" + "eid=QMBYW-DXK46xswa4jrSgDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/372.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/9.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -22767,13 +23366,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/372:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/9:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -22782,23 +23381,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpdaeUA7XBhqwNUqeRKkK8UAmHkZu63mKLIQN2Aj8HutErUQgfwb8By1PNsjTaOGXC28dOJl5hJUBPZgmavGXqUifnLcneXxReF4QLuohFFz07EIEA" + "AEnB2UoI-ZUeC1v-R4CmxRPyKDA9R_L69h9bmbyFORTVWcnxmC4S5Evq2_aqGDprgbresCvCS0NOu6jLDAyD3eI5A3mz_1-fUA" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9Rk9SQklEREVOLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4iCiB9Cn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0FNPSIKICB9CiBdCn0K" } }, { - "ID": "458e8210b09b16fb", + "ID": "bee179c9b102655a", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -22811,13 +23410,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "91803a2e383e5ef81fd9d1ca9e8102f0/529078165402311054;o=0" + "5af66f17ffade6126c7cc50802caa142/17658404885478010749;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -22826,7 +23425,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -22835,29 +23434,28 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "private, max-age=0" ], "Content-Length": [ - "2646" + "13869" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:21 GMT" - ], - "Etag": [ - "CAM=" + "Wed, 25 Jul 2018 18:24:01 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:21 GMT" + "Wed, 25 Jul 2018 18:24:01 GMT" ], "Server": [ "UploadServer" @@ -22867,25 +23465,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220517000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrmk1:4341,/bns/yw/borg/yw/bns/blobstore2/bitpusher/133.scotty,acatli15:443" + "xgiadaau9:4168,/bns/xi/borg/xi/bns/blobstore2/bitpusher/46.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=vU41W_G4FI6IhQSY0ILACg" + "eid=QcBYW__aAa-zswb4gZ04" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/133.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/46.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -22894,13 +23492,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/133:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/46:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -22909,23 +23507,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqS3u-ld30ynwDpV7zcUPHHOArUY_p75xyep3cdhVYPllTybL-UEMK7qQ83uhyuGnv9aiNjzXYisiIrAZOdUP7MkQUVMkXmFcXygYTQpR6hjLEaWsM" + "AEnB2UrUOuwp8k4elN0xl8oXyu-Svv2sQgN4cmLVc7Rv-lrmWx3MbKWYWeSXLfSDON91JEsHEQO2xMixHNJAMq6XB3YTnb-6Jw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0FNPSIKICB9CiBdCn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPVJFUVVJUkVELCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9YmFkUmVxdWVzdCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uUkVRVUlSRUQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAwLAogICJtZXNzYWdlIjogIkJ1Y2tldCBpcyByZXF1ZXN0ZXIgcGF5cyBidWNrZXQgYnV0IG5vIHVzZXIgcHJvamVjdCBwcm92aWRlZC4iCiB9Cn0K" } }, { - "ID": "f0d818ac284ba140", + "ID": "22a9ef676472fa9c", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl?alt=json\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -22938,13 +23536,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c95d1319c144ddc0a91eff30c1276bb5/2144212094306344109;o=0" + "71b6a46a930897d5ea84b44e0ba0292d/6852904304592941465;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -22953,7 +23551,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl?alt=json\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -22964,9 +23562,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -22978,13 +23578,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:21 GMT" + "Wed, 25 Jul 2018 18:24:01 GMT" ], "Etag": [ "CAM=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:21 GMT" + "Wed, 25 Jul 2018 18:24:01 GMT" ], "Server": [ "UploadServer" @@ -22994,25 +23594,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrir7:4320,/bns/yw/borg/yw/bns/blobstore2/bitpusher/58.scotty,acatli15:443" + "xgiadaak13:4444,/bns/xi/borg/xi/bns/blobstore2/bitpusher/67.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=vU41W6b0JcbuN4yunbAI" + "eid=QcBYW7OtDOG8swaRqa_QBQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/58.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/67.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -23021,13 +23621,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/58:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/67:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -23042,17 +23642,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur_BlKLKSgWSKxbKbZW-jjHfl6Hr8cX1JSUnIIvhcUTcpKboQp8oKodsBw20uzhuHZjVl3W2LtEE9rk3bSx95dkPASJwhHjWk2iDqdVHEReqp4epUc" + "AEnB2Ur7Kfc4EsJB2ImfNmu_eqLJjnP_R9F3fj6Kvxs_rbA_RRvxBms2-77sbr_UhRYWyYVAe4jrkQW4J0JR6rvyFJNmaGTeDA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0FNPSIKICB9CiBdCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0FNPSIKICB9CiBdCn0K" } }, { - "ID": "937a08b12197b6f3", + "ID": "89a4864533efd2d3", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl?alt=json\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -23065,13 +23665,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "627bf8da27c5e684bfbaa5a92a4246f0/3687289532978913229;o=0" + "f5785d54f598c817fc2b1b341287c2ad/14493867426247176886;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -23080,7 +23680,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl?alt=json\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -23089,26 +23689,28 @@ "Body": "" }, "Response": { - "StatusCode": 400, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" ], "Content-Length": [ - "13869" + "14821" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:22 GMT" + "Wed, 25 Jul 2018 18:24:01 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:22 GMT" + "Wed, 25 Jul 2018 18:24:01 GMT" ], "Server": [ "UploadServer" @@ -23118,7 +23720,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -23127,16 +23729,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrhr6:4427,/bns/yw/borg/yw/bns/blobstore2/bitpusher/68.scotty,acatli15:443" + "xiiadcaf2:4451,/bns/xi/borg/xi/bns/blobstore2/bitpusher/74.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=vU41W-jdN4aihQTOw5HwBg" + "eid=QcBYW4T_EM6yswafrpjYBw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/68.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/74.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -23145,13 +23747,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/68:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/74:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -23166,17 +23768,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UpuUNauXKg3Ngl0jvcCP7yD8D3qrBfEVMcjgdb2-6GMhXGQ2mxPBRa2XKcqRDn0I0x2H-geyMgBas1R59s0vUotK6pbd71664cpxfEL1xGd7-49nbE" + "AEnB2UpJBVGN0IyKu7azdJKREf2LVt936smeDLwgxvifBwGAvTTU27x_5pqHd7E5qk03mwwnpdQcpQ690GOKyNLUFJEv5Cuq-w" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPVJFUVVJUkVELCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9YmFkUmVxdWVzdCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uUkVRVUlSRUQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAwLAogICJtZXNzYWdlIjogIkJ1Y2tldCBpcyByZXF1ZXN0ZXIgcGF5cyBidWNrZXQgYnV0IG5vIHVzZXIgcHJvamVjdCBwcm92aWRlZC4iCiB9Cn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUZPUkJJRERFTiwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1mb3JiaWRkZW4sIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLkZPUkJJRERFTiwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAzLAogICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIgogfQp9Cg==" } }, { - "ID": "93bc95e34c46c800", + "ID": "96fdb1c3dd4ffb81", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -23189,13 +23791,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9a0b7d5457d211d3635424d7e82d042c/5302423466177848044;o=0" + "ec34031758ad8ebd4f74c33267fc5e1b/3688366845378884562;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -23204,7 +23806,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl?alt=json\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -23213,29 +23815,34 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "2646" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:22 GMT" + "Wed, 25 Jul 2018 18:24:03 GMT" ], "Etag": [ - "CAM=" + "CAQ=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:22 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -23245,25 +23852,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrrw17:4231,/bns/yw/borg/yw/bns/blobstore2/bitpusher/198.scotty,acatli15:443" + "xiiadcbz6:4375,/bns/xi/borg/xi/bns/blobstore2/bitpusher/86.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=vk41W5LKBoH1N7-RjPgH" + "eid=QcBYW_-tH6-1swbWtbjQDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/198.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/86.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -23272,13 +23879,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/198:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/86:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -23293,17 +23900,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Upuql0SxcO1P3TXnE0zW9ljU8AAkwyAawXOZ2FMztEm05BVMyyqSr-v5byuoxrwV_NGdHbXkOmhvd2IIZj25v2m4qmld-RWrLAbU85NGQy1CaWVHE8" + "AEnB2Uo4z2628xvOY1GWS0BfhZbQj_ry0ryiTpK1Xkb9g9RIkhQ1kG5QI3xJPG_zntw3x-a_2mREk8Bszu4jZ0QHKUPDhKZYdw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0FNPSIKICB9CiBdCn0K" + "Body": "" } }, { - "ID": "a09dbd6357e3f4c8", + "ID": "6c82ea5001c111d8", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl?alt=json\u0026userProject=veener-jba", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -23316,13 +23923,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "75c24c2d2ad809e3640ad4611b02329b/6917277028189824268;o=0" + "dd94241cece09c51771d7844576bdca8/11329329962738218223;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -23331,7 +23938,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl?alt=json\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -23340,26 +23947,28 @@ "Body": "" }, "Response": { - "StatusCode": 403, + "StatusCode": 404, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" ], "Content-Length": [ - "14821" + "2993" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:22 GMT" + "Wed, 25 Jul 2018 18:24:03 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:22 GMT" + "Wed, 25 Jul 2018 18:24:03 GMT" ], "Server": [ "UploadServer" @@ -23369,25 +23978,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrnu7:4402,/bns/yw/borg/yw/bns/blobstore2/bitpusher/59.scotty,acatli15:443" + "xgiadabf15:4445,/bns/xi/borg/xi/bns/blobstore2/bitpusher/89.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=vk41W46QC8LvhASL0qegBw" + "eid=Q8BYW-LGFIO9swaYg4XIAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/59.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/89.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -23396,13 +24005,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/59:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/89:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -23417,17 +24026,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UpdHFn0a0Asz41wuAiaZOOWj-LnFZCpUjTKoGI1d7SzCZAPe4W3Oz6bI2D5rt5HOwHqHsprZ0Y_ezUpujHP8HrO6edKNRiYo9c7s2VgpeSIScOp4eY" + "AEnB2UpltT-f8w2WIuOHiVXaKhi1niEfAuqhwpGiqof3OHjir8gn1cx0onXDaua72oCriLeVjj3Uw_pcc-oTp_xaFoqtNbeSCQ" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUZPUkJJRERFTiwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1mb3JiaWRkZW4sIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLkZPUkJJRERFTiwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAzLAogICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIgogfQp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPU5PVF9GT1VORCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPW51bGwsIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1udWxsLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLnNjb3BlLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQuc2NvcGUsIG1lc3NhZ2U9Tm90IEZvdW5kLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBOb3QgRm91bmRcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDA0LAogICJtZXNzYWdlIjogIk5vdCBGb3VuZCIKIH0KfQo=" } }, { - "ID": "fbc52a6c389a327a", + "ID": "bc42fe60fbcc8554", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -23440,13 +24049,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "952a88b10bc7f24e3efaf29f2c73f7f3/8460354462567557163;o=0" + "f7280cdb2b2f8c4f6835127fbb07f85f/523547911188182283;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -23455,7 +24064,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -23464,32 +24073,28 @@ "Body": "" }, "Response": { - "StatusCode": 204, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0" ], "Content-Length": [ - "0" + "13913" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:24 GMT" - ], - "Etag": [ - "CAQ=" + "Wed, 25 Jul 2018 18:24:03 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:03 GMT" ], "Server": [ "UploadServer" @@ -23499,25 +24104,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220517000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrbf6:4100,/bns/yw/borg/yw/bns/blobstore2/bitpusher/169.scotty,acatli15:443" + "xiiadcbj15:4375,/bns/xi/borg/xi/bns/blobstore2/bitpusher/71.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=vk41W_2tGsjPhASU8bPwBw" + "eid=Q8BYW-SAJeu5swaj8KQw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/169.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/71.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -23526,13 +24131,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/169:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/71:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -23541,23 +24146,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoYqEBv06NMUWqJX-IfAipkY0rFewQ3lrbit50ZwlZjC8Qzv4iONrJ3AXg-Z2M21-l_cHX-ulHyuu-UfiBgOtikGA1x8278ZBCpi_y7RKEkXUvYbzw" + "AEnB2Uqkz43ZCWYYRaPJHQQ1X51SggvNbuQ4jiFOa-L2Z5iqvOc_g4JQRT6YMmVrKB2xO9GQRCaBLCh_uBXQgBTii0rH50GqIg" ] }, - "Body": "" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6NzEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5kZWxldGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIKIH0KfQo=" } }, { - "ID": "3fdd03e9d6b5b0ff", + "ID": "528f77a90ac106f3", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -23570,13 +24175,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "618eee53a680675ff106ebebfd501390/10075488395766426443;o=0" + "e1691f16784fff9fbf15ced7c5eac3e2/8164511032842417704;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -23585,7 +24190,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -23596,9 +24201,11 @@ "Response": { "StatusCode": 404, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -23610,10 +24217,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:24 GMT" + "Wed, 25 Jul 2018 18:24:03 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:24 GMT" + "Wed, 25 Jul 2018 18:24:03 GMT" ], "Server": [ "UploadServer" @@ -23623,25 +24230,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220517000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrnb20:4079,/bns/yw/borg/yw/bns/blobstore2/bitpusher/337.scotty,acatli15:443" + "xgiadaas16:4136,/bns/xi/borg/xi/bns/blobstore2/bitpusher/37.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=wE41W-6iB8O3hgTcw4ywBg" + "eid=Q8BYW6u2MY60swa29rugDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/337.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/37.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -23650,13 +24257,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/337:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/37:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -23671,17 +24278,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoItumeX5mVK2g5hUVKi9jnqjQuOfK5qLC2T-1bZgXoTTftZ-l35-kZwFcyK_07f9-6a8jU6FlWNEtCdKb_1nReAHb-_tk0V4TKTx-BirA1IZL4wR8" + "AEnB2Uqlu7z4Tm-wUrEkXJnN0QAb9IKoldDHPcM8SYswD4dnxTFT2V_soWYpGog22JTzvtpnf3J1o7uzfRa4MZCf4LCCU3BYyQ" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPU5PVF9GT1VORCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPW51bGwsIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1udWxsLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLnNjb3BlLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQuc2NvcGUsIG1lc3NhZ2U9Tm90IEZvdW5kLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBOb3QgRm91bmRcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDA0LAogICJtZXNzYWdlIjogIk5vdCBGb3VuZCIKIH0KfQo=" } }, { - "ID": "9698f9263205e4b9", + "ID": "be0c555587eb16e9", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -23694,13 +24301,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5b501e82cbd8b72dbad13dfa95937747/11618565834439061098;o=0" + "481a840dda3a55c9f2138a707540addb/15805474150201816900;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -23709,7 +24316,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/acl/domain-google.com?alt=json\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -23718,26 +24325,28 @@ "Body": "" }, "Response": { - "StatusCode": 400, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" ], "Content-Length": [ - "13913" + "14865" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:24 GMT" + "Wed, 25 Jul 2018 18:24:04 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:24 GMT" + "Wed, 25 Jul 2018 18:24:04 GMT" ], "Server": [ "UploadServer" @@ -23747,7 +24356,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -23756,16 +24365,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrv6:4082,/bns/yw/borg/yw/bns/blobstore2/bitpusher/114.scotty,acatli15:443" + "xgiadabl14:4307,/bns/xi/borg/xi/bns/blobstore2/bitpusher/48.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=wE41W5vTGcbuhAS64LzQCA" + "eid=Q8BYW5XwNoS2swbxoazoAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/114.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/48.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -23774,13 +24383,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/114:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/48:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -23795,17 +24404,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqeAtjrK7v6Lv5JE_OUYpUc7hKowqZYBmq5NHZGX_gESV3njaV6VjNVcvmqEfEAZIH7tgXp0U5petPFcvFpT6qIJE0SILIUt-FlaWw3r4UOKxswzbM" + "AEnB2UpcSOg0vo-Az8dBIFSHxCfjnwWUC0r-8KxnrDUghv6QTEgwqtLuVfnT_8Z9Q_sezsh_8jGEp4C410wpf0q3LWI7rRhJ6w" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6NzEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5kZWxldGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIKIH0KfQo=" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9Rk9SQklEREVOLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4iCiB9Cn0K" } }, { - "ID": "e5422788c8be7feb", + "ID": "d8a4a5aea69667fe", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "Method": "PUT", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -23814,17 +24423,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "107" + ], + "Content-Type": [ + "application/json" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "1ab519a49f9a0a4f727917a7638238aa/13233700867132780938;o=0" + "c1899415d39d7df827f2ca8fbda87756/4999973569333459041;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -23833,35 +24448,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { - "StatusCode": 404, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "2993" + "136" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:24 GMT" + "Wed, 25 Jul 2018 18:24:05 GMT" + ], + "Etag": [ + "CAU=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:24 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -23871,25 +24494,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrav7:4461,/bns/yw/borg/yw/bns/blobstore2/bitpusher/282.scotty,acatli15:443" + "xiiadcbb15:4178,/bns/xi/borg/xi/bns/blobstore2/bitpusher/97.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=wE41W_W1JsytN6euonA" + "eid=RMBYW7PaB4yzswa9zLiYAQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/282.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/97.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -23898,13 +24521,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/282:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/97:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -23913,23 +24536,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo75imgt_-9FrD6hotGjGDtb85VHmnTdefVXP5OwDBMIO5v91tGvk4TCrYwf0EgUYkL7L5ZufyIokBjpNkmF5_SHr7F0SJePMeII-vwd91QwtPRSec" + "AEnB2Uq7Gaaw2rjaJAso66LrEG-jIPmpSmJXi3ZwO1CWEvOVlcKb8fB9V-LDLraSFm7hXfPR5xvFl-PKnYJ_zNJ3WdDQhuUk1w" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPU5PVF9GT1VORCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPW51bGwsIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1udWxsLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLnNjb3BlLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQuc2NvcGUsIG1lc3NhZ2U9Tm90IEZvdW5kLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBOb3QgRm91bmRcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDA0LAogICJtZXNzYWdlIjogIk5vdCBGb3VuZCIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQVU9Igp9Cg==" } }, { - "ID": "feea6ad84d4cf5b0", + "ID": "b89df7c0dfb559c7", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=veener-jba", + "Method": "PUT", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -23938,17 +24561,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "107" + ], + "Content-Type": [ + "application/json" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "25b20b856b43cbfeedd80d89c60bcc54/14776778301510513833;o=0" + "73ff1544882aaa690cb7bebbe834cfb9/12640936686692858237;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -23957,35 +24586,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/acl/domain-google.com?alt=json\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { - "StatusCode": 403, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "14865" + "136" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:24 GMT" + "Wed, 25 Jul 2018 18:24:05 GMT" + ], + "Etag": [ + "CAU=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:24 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -23995,25 +24632,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrdk9:4305,/bns/yw/borg/yw/bns/blobstore2/bitpusher/575.scotty,acatli15:443" + "xgiadaae1:4085,/bns/xi/borg/xi/bns/blobstore2/bitpusher/133.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=wE41W6WaLYy7N5zWgrgN" + "eid=RcBYW_ueGam9swaeo4b4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/575.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/133.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -24022,13 +24659,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/575:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/133:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -24037,23 +24674,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urs4YM3yELVVvMO7Wmy_BBgZDfKKBfSDStGaKA9jV2MafZ-JB-pHESIf-X6KZXX7wDVO6ZOOx-jLArnucnjvrIF7Od0hEaIjzq-lQeg8SqDwC41dII" + "AEnB2UqsHmD4_ys2LeJu4M6bbw-ViF39q6fobveKQrH0kJaVyMmPq4lFqLhMJchLZt-DwNkhlYtw0hAe4aINsoltSS6bDEpr6w" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9Rk9SQklEREVOLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4iCiB9Cn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQVU9Igp9Cg==" } }, { - "ID": "c70627e9809b0d39", + "ID": "9173f4dea25c840c", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -24072,13 +24709,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9c9b2f0c26a4a31bf6f8f5c0f0ae8fb3/16391912234709383113;o=0" + "90c5d6ec02b98f3bc40b44656b6db9b1/1835436110119402138;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -24087,41 +24724,31 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { - "StatusCode": 200, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ - "136" + "13913" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:26 GMT" - ], - "Etag": [ - "CAU=" - ], - "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:06 GMT" ], "Server": [ "UploadServer" @@ -24131,25 +24758,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220517000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vraz63:4430,/bns/yw/borg/yw/bns/blobstore2/bitpusher/377.scotty,acatli15:443" + "xgiadaaj8:4280,/bns/xi/borg/xi/bns/blobstore2/bitpusher/41.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=wE41W7uiOYTRhATJ_5PIDA" + "eid=RcBYW-atMeyzswaYlLDIBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/377.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/41.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -24158,13 +24785,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/377:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/41:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -24173,23 +24800,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoYAFn9P2csXRnCf5z5FLufOA1YS1VltYtdgIOg4ziozdf7FXbbglqoHkLvwZFE3kV2G6cnP1E3INz2kltvAcBBcoKNiRX0hGwtz2Dtz7csloKajjE" + "AEnB2UqO6pakKW5-FVGFDHFqTq1a3A7HB6hf4k7Q3Pg0MaOKYKKIL9BzorGED7zjmn1mgOlZsraXPzJa-1XezNi0VzYPRrZSSw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQVU9Igp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6MTYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci51cGRhdGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIKIH0KfQo=" } }, { - "ID": "45303e826009ee9e", + "ID": "c9bc977593071fc2", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -24208,13 +24835,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "079bac55b6087e1c6334e2946f429ae1/18007046167908317928;o=0" + "c3dd8889a404f69b0ec98d4065631986/9476399227478801334;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -24223,20 +24850,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -24248,7 +24877,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:26 GMT" + "Wed, 25 Jul 2018 18:24:06 GMT" ], "Etag": [ "CAU=" @@ -24267,25 +24896,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrks2:4084,/bns/yw/borg/yw/bns/blobstore2/bitpusher/265.scotty,acatli15:443" + "xgiadaae2:4286,/bns/xi/borg/xi/bns/blobstore2/bitpusher/95.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=wk41W6vAFIObhATkprbADg" + "eid=RsBYW79frLSzBtHei8AN" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/265.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/95.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -24294,13 +24923,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/265:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/95:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -24315,17 +24944,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Up9kF55KkQr_A-9ifJBKopm66zibXjB1I-duEFFWWt-0LRHFRhdpUisD0x7krQNNq0ukewv6zF1sMIAeW9qJOZmYLbfviS2f1ydMPzLD2SPAOI7sRg" + "AEnB2Uqc2M0c9-g-Ti0OADip3_Tyuu4SmCXuFZoa8YkZbycWpeIEmqkPr0OOWtBQ_7bLFVGWB1byFCNxoiYL1WWegZtVSbWP_Q" ] }, "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQVU9Igp9Cg==" } }, { - "ID": "560fd000a2b184ef", + "ID": "984e551d271ea1f2", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -24344,13 +24973,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "021c4caa7b26a729d81b8a4e89da4c74/1103662107342896392;o=0" + "f3f5ffe06c034bde3a69a4b4ca470b5b/17117079774661541075;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -24359,29 +24988,31 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { - "StatusCode": 400, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ - "13913" + "14865" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:26 GMT" + "Wed, 25 Jul 2018 18:24:06 GMT" ], "Server": [ "UploadServer" @@ -24391,7 +25022,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -24400,16 +25031,16 @@ "471383502717" ], "X-Google-Backends": [ - "vred4:4217,/bns/yw/borg/yw/bns/blobstore2/bitpusher/661.scotty,acatli15:443" + "xiiadccc1:4324,/bns/xi/borg/xi/bns/blobstore2/bitpusher/18.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=wk41W5X-JYjUhATjwKuwCg" + "eid=RsBYW-P9BeK8swbW8bjYCA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/661.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/18.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -24418,13 +25049,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/661:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/18:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -24439,17 +25070,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqSXOHMb3IaL1_jGdR_appBY6ZZxuFeFi3WatR7XvXrPLrg9jfdbXRrPS7Sal8dEHgDIvReTj4PIZ5fMGijNdrohAf58jdAbbeKZ67AUqmz4miSvX4" + "AEnB2UrwL7EB9CupMusht-YghFcGTkF4QPRuh_qJTmld90jzzTXG3dp8n3nySa3Wsp7gNgEqEdVXrtLAaRU-HM5YPH7ilwJEyA" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6MTYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci51cGRhdGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIKIH0KfQo=" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9Rk9SQklEREVOLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4iCiB9Cn0K" } }, { - "ID": "625d38ead6d57211", + "ID": "5c82c4d0ceb6e709", "Request": { - "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -24458,23 +25089,17 @@ "Authorization": [ "REDACTED" ], - "Content-Length": [ - "107" - ], - "Content-Type": [ - "application/json" - ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f442e9741438e713bd59d48de96ff2d5/2718514565565120552;o=0" + "1d384b1134ac4843c0bb2709b565a566/6311580293288099311;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -24483,41 +25108,40 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0, must-revalidate, no-transform" ], "Content-Length": [ - "136" + "860" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:26 GMT" + "Wed, 25 Jul 2018 18:24:06 GMT" ], "Etag": [ "CAU=" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:06 GMT" ], "Server": [ "UploadServer" @@ -24527,25 +25151,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrzz3:4408,/bns/yw/borg/yw/bns/blobstore2/bitpusher/572.scotty,acatli15:443" + "xgiadabh15:4103,/bns/xi/borg/xi/bns/blobstore2/bitpusher/7.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=wk41W7a1MoazhQSrsq7YAw" + "eid=RsBYW4nbEsGEygODroiYBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/572.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/7.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -24554,13 +25178,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/572:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/7:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -24575,17 +25199,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoY7-_uVK6tYh9TCIgeU67bpqN7bdmwjmOuI8yy99mGEjbMcwBr-FplvK8naMRe2XqPyb2iJtw0Ayb2916U2OzI_Rk-Jwml-4zpOnowrrgOaMbSR04" + "AEnB2UrwtgkGc2OC3PMEA1Ery28t4i1pWUv8e9qHbBrBZvNCfMd8GBSgSKFRW0ORn84eaoURGGZjIzzOdvv2baI7492Q2UYnQw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogInJvbGUiOiAiUkVBREVSIiwKICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAiZXRhZyI6ICJDQVU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogICAicm9sZSI6ICJSRUFERVIiLAogICAiZG9tYWluIjogImdvb2dsZS5jb20iLAogICAiZXRhZyI6ICJDQVU9IgogIH0KIF0KfQo=" } }, { - "ID": "1e496dd00c93a4f1", + "ID": "9cc7e459369c6b2c", "Request": { - "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=veener-jba", + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -24594,23 +25218,17 @@ "Authorization": [ "REDACTED" ], - "Content-Length": [ - "107" - ], - "Content-Type": [ - "application/json" - ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "370c0dfaffe30b171306f581760a9ee1/4261592004237755207;o=0" + "2a3d12ef364281613c3007b4ba62f3e1/13952542315447483916;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -24619,29 +25237,40 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "" }, "Response": { - "StatusCode": 403, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "private, max-age=0, must-revalidate, no-transform" ], "Content-Length": [ - "14865" + "860" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:27 GMT" + "Wed, 25 Jul 2018 18:24:06 GMT" + ], + "Etag": [ + "CAU=" + ], + "Expires": [ + "Wed, 25 Jul 2018 18:24:06 GMT" ], "Server": [ "UploadServer" @@ -24651,25 +25280,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vryy6:4071,/bns/yw/borg/yw/bns/blobstore2/bitpusher/574.scotty,acatli15:443" + "xgiadaau9:4168,/bns/xi/borg/xi/bns/blobstore2/bitpusher/35.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=wk41W4m4OcqfhQTz8pv4CA" + "eid=RsBYW9qlJaqyswarpK3gCg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/574.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/35.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -24678,13 +25307,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/574:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/35:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -24693,23 +25322,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2Upe1-0ylTp5-b-21FiLpGzJXkdbA7pPVode5OI-QP9qBSIpMuS-B2Y49-GBSp2hbm680TftkZwMGZm3H-bJJXJxHQl7JWOJ0bmOezNqFsgPG_FiUr8" + "AEnB2Uqf10SHAQpvShmPzdAZJilBsTLsfInAwO9m2FTz7QLUQ3-rj65dMCkwp4UE2BT2kwSGitHEbvMXaeUkCgV4CVkw8dE_ZQ" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9Rk9SQklEREVOLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4iCiB9Cn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogICAicm9sZSI6ICJSRUFERVIiLAogICAiZG9tYWluIjogImdvb2dsZS5jb20iLAogICAiZXRhZyI6ICJDQVU9IgogIH0KIF0KfQo=" } }, { - "ID": "35be47c44ea71acf", + "ID": "5a082fd79a82dadb", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -24722,13 +25351,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c993ee3962ecb716dadda6a8e2cfbd2d/5876725937436624487;o=0" + "13603e7ba6e3923184cdb87a746b716b/3147042834074042152;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -24737,7 +25366,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -24746,29 +25375,28 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "private, max-age=0" ], "Content-Length": [ - "860" + "13869" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:27 GMT" - ], - "Etag": [ - "CAU=" + "Wed, 25 Jul 2018 18:24:07 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:27 GMT" + "Wed, 25 Jul 2018 18:24:07 GMT" ], "Server": [ "UploadServer" @@ -24778,25 +25406,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrbp125:4390,/bns/yw/borg/yw/bns/blobstore2/bitpusher/627.scotty,acatli15:443" + "xiiadcaa1:4385,/bns/xi/borg/xi/bns/blobstore2/bitpusher/61.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=w041W5mgCcfQhASqvYj4Bg" + "eid=RsBYW6ieOI24swa_vo3gCg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/627.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/61.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -24805,13 +25433,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/627:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/61:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -24820,23 +25448,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoMkuKiXV2A3JneMemU3VGfe2Z2aFJbA0wXPB58oanYsBkR_WTFsbOCnekkBNLq8oJYSIdGXq7VfUrXaE3H_Re00pXJzhWFRqS53L1pCsHF5k2L6bo" + "AEnB2Up-xcG-Wb73ZE8iMhJ_SdSGoEzLmxUuVoWQx1QsHA8cCigcCXByMXVOfay0xzn9bjmUm5YwxBEdhgnmcockgYQBVa_b9A" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogICAicm9sZSI6ICJSRUFERVIiLAogICAiZG9tYWluIjogImdvb2dsZS5jb20iLAogICAiZXRhZyI6ICJDQVU9IgogIH0KIF0KfQo=" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPVJFUVVJUkVELCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9YmFkUmVxdWVzdCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uUkVRVUlSRUQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAwLAogICJtZXNzYWdlIjogIkJ1Y2tldCBpcyByZXF1ZXN0ZXIgcGF5cyBidWNrZXQgYnV0IG5vIHVzZXIgcHJvamVjdCBwcm92aWRlZC4iCiB9Cn0K" } }, { - "ID": "56b3d6c47d3badc2", + "ID": "59e60d0da7d292d2", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl?alt=json\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -24849,13 +25477,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "443dca65ba3e2a526ac660dde1ab32e3/7491860970130409862;o=0" + "b887b267736570e2dfb5dc4245323524/10788004851938525253;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -24864,7 +25492,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl?alt=json\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -24875,9 +25503,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -24889,13 +25519,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:27 GMT" + "Wed, 25 Jul 2018 18:24:07 GMT" ], "Etag": [ "CAU=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:27 GMT" + "Wed, 25 Jul 2018 18:24:07 GMT" ], "Server": [ "UploadServer" @@ -24905,25 +25535,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrbh10:4400,/bns/yw/borg/yw/bns/blobstore2/bitpusher/488.scotty,acatli15:443" + "xiiadcaf2:4451,/bns/xi/borg/xi/bns/blobstore2/bitpusher/93.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=w041W8HCGcaJN5i7i4AF" + "eid=R8BYW8vBBqm0swaY5YzYCw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/488.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/93.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -24932,13 +25562,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/488:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/93:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -24953,17 +25583,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpNy4J8Z9KM0J7nAAQX8OGNFwJAvmnmfyzj7vnau1oXsc12Lf5-nsllNKgRqddfbHE0c7SDHPJEf9MBXcws_IuXdzWAWKoy4Swpwli3IhRE6-s8wEk" + "AEnB2Upzmt9Tz05Wus8LSgUNf-63A93wmhfRmgclE6mfu-W_ejWPMXE_IwaSYTDx4V-IdfGRp5NtzzPE6K75bgvEIZ1SShi-Lw" ] }, "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogICAicm9sZSI6ICJSRUFERVIiLAogICAiZG9tYWluIjogImdvb2dsZS5jb20iLAogICAiZXRhZyI6ICJDQVU9IgogIH0KIF0KfQo=" } }, { - "ID": "9ae5ab018d8a5c06", + "ID": "6b733c2f778d8e8d", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl?alt=json\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -24976,13 +25606,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "074624ea76a8396a4d1f549d1b9386a1/9034938404508077222;o=0" + "2d32d8cf3676c9698ebcf0716654df6c/18428967969281081954;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -24991,7 +25621,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl?alt=json\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -25000,26 +25630,28 @@ "Body": "" }, "Response": { - "StatusCode": 400, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" ], "Content-Length": [ - "13869" + "14821" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:27 GMT" + "Wed, 25 Jul 2018 18:24:07 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:27 GMT" + "Wed, 25 Jul 2018 18:24:07 GMT" ], "Server": [ "UploadServer" @@ -25029,7 +25661,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -25038,16 +25670,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrqq2:4452,/bns/yw/borg/yw/bns/blobstore2/bitpusher/252.scotty,acatli15:443" + "xiiadcar15:4207,/bns/xi/borg/xi/bns/blobstore2/bitpusher/58.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=w041W67nK4G0N6SfkrgK" + "eid=R8BYW53eC9C3swaYoYGgCA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/252.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/58.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -25056,13 +25688,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/252:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/58:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -25077,17 +25709,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UpPjgyWszAcvAkfEUUUtjAOOj9qzEYs1DbdF8XZrwsR031AXg0_yYja4e93HzEtzwll8EJf0zgg6UL_Zq66tDcfkmVlsIojmi0tcfEIAVi1zeFSTmk" + "AEnB2Ur50aSzxidgBWIbtujDcq53K-CYDXWSUshGLNeOH_QWQrwOrQv_P8Xc3EZcZeYddiaCJkZ6UtOHmbLYS32YVb67jZgU_g" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPVJFUVVJUkVELCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9YmFkUmVxdWVzdCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uUkVRVUlSRUQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAwLAogICJtZXNzYWdlIjogIkJ1Y2tldCBpcyByZXF1ZXN0ZXIgcGF5cyBidWNrZXQgYnV0IG5vIHVzZXIgcHJvamVjdCBwcm92aWRlZC4iCiB9Cn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUZPUkJJRERFTiwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1mb3JiaWRkZW4sIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLkZPUkJJRERFTiwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAzLAogICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIgogfQp9Cg==" } }, { - "ID": "6be1de723d8dae9d", + "ID": "3712f0e13e33ab11", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -25100,13 +25732,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5291755353d633ec141665ae7c2172ca/10650072337707012037;o=0" + "1d69187e7b9ab5ee3749a796bc47ffa3/7623467392707691390;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -25115,7 +25747,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl?alt=json\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -25124,29 +25756,34 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "860" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:27 GMT" + "Wed, 25 Jul 2018 18:24:08 GMT" ], "Etag": [ - "CAU=" + "CAY=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:27 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -25156,25 +25793,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrlj81:4352,/bns/yw/borg/yw/bns/blobstore2/bitpusher/172.scotty,acatli15:443" + "xgiadabp15:4495,/bns/xi/borg/xi/bns/blobstore2/bitpusher/78.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=w041W4SpOIeHhgSr9ppQ" + "eid=R8BYW9j_GK22swaWrLTYDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/172.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/78.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -25183,13 +25820,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/172:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/78:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -25204,17 +25841,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urp7Vvi8IYFk9QxcNFZh-5EbifsyH9byCBP0ocDt5XNfblDj_OdhtWMFAP6dW1zdHIAnKEUFoiXcqwXeHGpI8mROtyzDwPX7ICFExJGp5CIDNHmYlw" + "AEnB2UopO1kDptA-7EF3xozlU7qqWbTzSwfzt_HiFMZmfvAhqQDq_g1Yt9rCADk2HX2E-n4X67AMpv2xeJVq2iBjlYZk3S0LWA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAiZG9tYWluLWdvb2dsZS5jb20iLAogICAicm9sZSI6ICJSRUFERVIiLAogICAiZG9tYWluIjogImdvb2dsZS5jb20iLAogICAiZXRhZyI6ICJDQVU9IgogIH0KIF0KfQo=" + "Body": "" } }, { - "ID": "7b5835e133162bd4", + "ID": "53cbea91cd73699d", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl?alt=json\u0026userProject=veener-jba", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -25227,13 +25864,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a92c8d44626abfdd51f6f495bb68ae7f/12193149776379581157;o=0" + "57d88cfd0e40b02834b6f075e3812078/15264149039385281691;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -25242,7 +25879,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl?alt=json\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -25251,26 +25888,28 @@ "Body": "" }, "Response": { - "StatusCode": 403, + "StatusCode": 404, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" ], "Content-Length": [ - "14821" + "2993" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:28 GMT" + "Wed, 25 Jul 2018 18:24:09 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:28 GMT" + "Wed, 25 Jul 2018 18:24:09 GMT" ], "Server": [ "UploadServer" @@ -25280,25 +25919,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrgg74:4491,/bns/yw/borg/yw/bns/blobstore2/bitpusher/409.scotty,acatli15:443" + "xgiadabp15:4495,/bns/xi/borg/xi/bns/blobstore2/bitpusher/31.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=xE41W60J1eSFBLenntgH" + "eid=SMBYW8LgMcq8swaH5K8g" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/409.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/31.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -25307,13 +25946,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/409:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/31:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -25328,17 +25967,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Uou4YsMXdxLcwXImBtLUQPcOTKhH8SC2ih_n6GFxlxAPOg41ej7bp-Ps-HH08w-21FYwkQVxoPBgUHyOcqipzuyuX32gok2S54XXLHiRBwz8iSsFD4" + "AEnB2UrR4pEhRfziGCwifU35g3rwwZeNqVEOcUAZJKyOYByiaj9goQV73x-TTsT6Arskc1CnhMUdwDViqVapuUBxqGq2l-EzOQ" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUZPUkJJRERFTiwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1mb3JiaWRkZW4sIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLkZPUkJJRERFTiwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAyMCBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAzLAogICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIgogfQp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPU5PVF9GT1VORCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPW51bGwsIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1udWxsLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLnNjb3BlLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQuc2NvcGUsIG1lc3NhZ2U9Tm90IEZvdW5kLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBOb3QgRm91bmRcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDA0LAogICJtZXNzYWdlIjogIk5vdCBGb3VuZCIKIH0KfQo=" } }, { - "ID": "6b5518a66e07fbd5", + "ID": "245a59074562f553", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -25351,13 +25990,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "0583fcf1fe600d9de75852efa9335e5f/13808284809073366276;o=0" + "96d4049c9dd32e3f4a40cec6c4221a7a/4458648458516989367;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -25366,7 +26005,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -25375,32 +26014,28 @@ "Body": "" }, "Response": { - "StatusCode": 204, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0" ], "Content-Length": [ - "0" + "13913" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:29 GMT" - ], - "Etag": [ - "CAY=" + "Wed, 25 Jul 2018 18:24:09 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:09 GMT" ], "Server": [ "UploadServer" @@ -25410,25 +26045,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220517000" + "1532543349000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrkq1:4159,/bns/yw/borg/yw/bns/blobstore2/bitpusher/159.scotty,acatli15:443" + "xhiadbcj11:4136,/bns/xi/borg/xi/bns/blobstore2/bitpusher/144.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=xE41W42HDobJN_DHnpAH" + "eid=ScBYW_2sBqW9swaUiID4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/159.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/144.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -25437,13 +26072,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/159:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/144:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -25452,23 +26087,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqpXsnw1uvYh8JILOsT73sspD_a_tq93eIFIrm_RCKRexmy69ndxdPniHz0K-MzoyRLumQ252JRn-FNGc0P4vKtXdaY4CA3cCwBLZvXE2pSQzFowlg" + "AEnB2Uq2hPeFC1f0S_0T0W1KlM17JuyNCKsH7yEohHHWQHSJV9kRhzkiXytxaxEDW30rZ3o205jzXSDLPbAXYqVyq6U1pDURmw" ] }, - "Body": "" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6NzEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5kZWxldGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIKIH0KfQo=" } }, { - "ID": "2b7e9579327d3e1f", + "ID": "1e3c8abfb671f1c7", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -25481,13 +26116,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fe625f527185441e57093fb8858b24a9/15351362243451033636;o=0" + "ea9f9c895a7164c1261a372abf853050/12099611575876323028;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -25496,7 +26131,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -25507,9 +26142,11 @@ "Response": { "StatusCode": 404, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -25521,10 +26158,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:30 GMT" + "Wed, 25 Jul 2018 18:24:09 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:30 GMT" + "Wed, 25 Jul 2018 18:24:09 GMT" ], "Server": [ "UploadServer" @@ -25534,25 +26171,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrhl10:4450,/bns/yw/borg/yw/bns/blobstore2/bitpusher/174.scotty,acatli15:443" + "xgiadaae9:4327,/bns/xi/borg/xi/bns/blobstore2/bitpusher/73.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=xU41W_mlMoXbhQTUy7PoAQ" + "eid=ScBYW92YFMW9swa6lIW4AQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/174.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/73.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -25561,13 +26198,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/174:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/73:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -25582,17 +26219,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Up6w0N_CPJvDHevqv1pBk9ng7WlafDMMCtvXHrZC_9PKIPHibYLHe1GwAhWtcWbjxQf1ZGtrjUBtLs5pXYeM_rFOrxwMRHW-FJnwqjQKeHdJjwtNRo" + "AEnB2Uo9Zf318OF14VmNyd9UV-URwZGO3jnGI8ZfSdSqI4fU5dIGCiP0dr_nbflVHkMkcmSK-OkUa1UKUAvezLvudG29AWpg8A" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPU5PVF9GT1VORCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPW51bGwsIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1udWxsLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLnNjb3BlLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQuc2NvcGUsIG1lc3NhZ2U9Tm90IEZvdW5kLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBOb3QgRm91bmRcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDA0LAogICJtZXNzYWdlIjogIk5vdCBGb3VuZCIKIH0KfQo=" } }, { - "ID": "62719b79fee0b2ec", + "ID": "6eadd6a2e5f68301", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -25605,13 +26242,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "44be004a7d33f6710d8936c9fd017a56/16966214705968225091;o=0" + "49d21f882d625d3173d803c05558b6a7/1294110999302932464;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -25620,7 +26257,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -25629,26 +26266,28 @@ "Body": "" }, "Response": { - "StatusCode": 400, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" ], "Content-Length": [ - "13913" + "14865" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:30 GMT" + "Wed, 25 Jul 2018 18:24:09 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:30 GMT" + "Wed, 25 Jul 2018 18:24:09 GMT" ], "Server": [ "UploadServer" @@ -25658,7 +26297,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -25667,16 +26306,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrkk24:4320,/bns/yw/borg/yw/bns/blobstore2/bitpusher/94.scotty,acatli15:443" + "xgiadabr1:4172,/bns/xi/borg/xi/bns/blobstore2/bitpusher/24.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=xk41W96KB8KKhATFuJ7wBw" + "eid=ScBYW6-CGoy9swaXoYfwAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/94.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/24.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -25685,13 +26324,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/94:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/24:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -25706,17 +26345,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Uq1PUBAtIT-UcX7FSxeDSNpQ9fJoAMKIxO3PLJMS9E_1iRjPLxIatNI8rsCazXst0XNrEBUEXy_ln5cskGhP6s5_TlxtM-OJ-G-aWbEXKeEmLaLv80" + "AEnB2UoJmzpjPRafoGKXIRh9otGBVfFl3FsgAQigPX9Mr50esArtKspaUiGdLLlj8o1PylHKqbUYj1MGh0jK3HwX2O3U_0fGyg" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkQnVja2V0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzEwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6NzEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5kZWxldGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIKIH0KfQo=" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9Rk9SQklEREVOLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4iCiB9Cn0K" } }, { - "ID": "bed6bc10d14d4b6b", + "ID": "f7f69b4547114f18", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "Method": "PUT", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -25725,17 +26364,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "107" + ], + "Content-Type": [ + "application/json" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "19b7cdbb8c03fdeb2f821aaa1357b673/134886040434253411;o=0" + "aa451d72c02127fb7c292513ea58de0f/8935074116662265869;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -25744,35 +26389,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { - "StatusCode": 404, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "2993" + "495" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:30 GMT" + "Wed, 25 Jul 2018 18:24:09 GMT" + ], + "Etag": [ + "CI6D2dnvutwCEAU=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:30 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -25782,25 +26435,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrmi15:4409,/bns/yw/borg/yw/bns/blobstore2/bitpusher/209.scotty,acatli15:443" + "xgiadaca8:4102,/bns/xi/borg/xi/bns/blobstore2/bitpusher/76.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=xk41W47qE4KlN9Wct9gI" + "eid=ScBYW7qYJbC5swaK1pn4CQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/209.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/76.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -25809,13 +26462,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/209:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/76:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -25824,23 +26477,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrvWShO17uIEiXuLbY9t-uBnK6KOQWQzxlAm9ra6-zJjKxCIPJb31RX0LAu8AC8gXVYbXx60WatRGRjuAg_T6ouE8KxRzy5lJBTLDB5kxDaqQ8fr5A" + "AEnB2UrSnFSPTNwMQFJH2Doc9B4O32Rem7sPZOxW_z3g9DUNVfKrs1-A9Chaqn6tKkeQWYJBoiaSdB_DiARQ0Q0GDy2zQVSZPw" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPU5PVF9GT1VORCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPW51bGwsIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1udWxsLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLnNjb3BlLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQuc2NvcGUsIG1lc3NhZ2U9Tm90IEZvdW5kLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBOb3QgRm91bmRcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDA0LAogICJtZXNzYWdlIjogIk5vdCBGb3VuZCIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICJvYmplY3QiOiAiZm9vIiwKICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogImVudGl0eSI6ICJkb21haW4tZ29vZ2xlLmNvbSIsCiAicm9sZSI6ICJSRUFERVIiLAogImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICJldGFnIjogIkNJNkQyZG52dXR3Q0VBVT0iCn0K" } }, { - "ID": "1749c49109cda048", + "ID": "c63758e82cf88a02", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=veener-jba", + "Method": "PUT", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -25849,17 +26502,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "107" + ], + "Content-Type": [ + "application/json" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "2280d35755e4c218eef1f6bed37810ab/1677964578601738626;o=0" + "9ece2e39833dda787325a9a7d4e953f6/16503979640000514345;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -25868,35 +26527,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/defaultObjectAcl/domain-google.com?alt=json\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { - "StatusCode": 403, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "14865" + "495" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:30 GMT" + "Wed, 25 Jul 2018 18:24:10 GMT" + ], + "Etag": [ + "CI6D2dnvutwCEAU=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:30 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -25906,25 +26573,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrlm67:4174,/bns/yw/borg/yw/bns/blobstore2/bitpusher/87.scotty,acatli15:443" + "xgiadabj12:4211,/bns/xi/borg/xi/bns/blobstore2/bitpusher/14.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=xk41W5mFGszuhATb8oXwCw" + "eid=ScBYW6n3OMK5swbhtJyABg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/87.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/14.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -25933,13 +26600,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/87:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/14:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -25948,23 +26615,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpbcOsH6F_SbC5-yMNxJ_9Ok2mnR0zDik8wBUYUl1CiWEF6jMQAgJXB73_nFpLAodg7gpCClxeb8j0QNpzpxn5kaf0MGN8378hpZuw465B9Bn8OZ64" + "AEnB2UojWgmkNuNWd3twj2ujtKBgR67Jc0KFqKwJbPjYOAsQucBlNkgICbyxYX8Kk6DnOat52Uhucj9VJEcfpxkGYpuhZa_XUg" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9Rk9SQklEREVOLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZEJ1Y2tldChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjc4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMjAgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRCdWNrZXQoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDIwIG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4iCiB9Cn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICJvYmplY3QiOiAiZm9vIiwKICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogImVudGl0eSI6ICJkb21haW4tZ29vZ2xlLmNvbSIsCiAicm9sZSI6ICJSRUFERVIiLAogImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICJldGFnIjogIkNJNkQyZG52dXR3Q0VBVT0iCn0K" } }, { - "ID": "72a8a7e60f02f4c2", + "ID": "d4c355baebf4c4b7", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -25983,13 +26650,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5e54114cf61649b47fdcaf658abb8cb1/3293098507505706146;o=0" + "e5f20e379707a195a99d9af05a2c577d/5698198687945263686;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -25998,41 +26665,31 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { - "StatusCode": 200, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ - "495" + "13525" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:30 GMT" - ], - "Etag": [ - "CNbJn8Oi99sCEAU=" - ], - "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:10 GMT" ], "Server": [ "UploadServer" @@ -26042,25 +26699,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220517000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrow2:4362,/bns/yw/borg/yw/bns/blobstore2/bitpusher/432.scotty,acatli15:443" + "xgiadaca8:4102,/bns/xi/borg/xi/bns/blobstore2/bitpusher/114.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=xk41W5ePJ8aLhgTpw42oBw" + "eid=SsBYW7mnCay9swbny6vAAQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/432.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/114.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -26069,13 +26726,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/432:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/114:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -26084,23 +26741,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoY3c-V5W-Sg8JoVyzr3YRO3NFtMOLtyHz3fJLQHU9S1e9ye-2Itd4xxVMLPdokom_34JAotUyNT9CSos-7S7IpY_SR21x_JDJMy8yjOVOIRfUZaPM" + "AEnB2Upl_muW-9xM6KnfvTMBaKLUC7cdek_E85KPKyeqsdRqwrxLx0aMKdcvKOexxMc0glRXY5l6uC8TKWa-jZCMVMKpza161Q" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICJvYmplY3QiOiAiZm9vIiwKICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogImVudGl0eSI6ICJkb21haW4tZ29vZ2xlLmNvbSIsCiAicm9sZSI6ICJSRUFERVIiLAogImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBVT0iCn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6MTYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci51cGRhdGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" } }, { - "ID": "0957eb356dd897a9", + "ID": "561b0185dff62924", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -26119,13 +26776,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c8ceecb85fdac30058fb5eac3eae2852/4836175946178340801;o=0" + "460a77a2484444567c80c62b65022132/13339161809599564642;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -26134,20 +26791,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -26159,10 +26818,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:31 GMT" + "Wed, 25 Jul 2018 18:24:10 GMT" ], "Etag": [ - "CNbJn8Oi99sCEAU=" + "CI6D2dnvutwCEAU=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -26178,25 +26837,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220517000" + "1532543349000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrk127:4117,/bns/yw/borg/yw/bns/blobstore2/bitpusher/138.scotty,acatli15:443" + "xiiadccc1:4324,/bns/xi/borg/xi/bns/blobstore2/bitpusher/84.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=xk41W4LlOoq-hQT_maLIAg" + "eid=SsBYW_e8E426swaDrquQCQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/138.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/84.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -26205,13 +26864,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/138:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/84:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -26226,17 +26885,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqmnwPWzcY1YY34nS9N8lj8o9htxD3Pp9aRh9abNpZuj3IAEa3luqfWTFm1uhNa1tZ2I5zV47G-s5KvYo5kZas8l1CAkqVrQDWWgQdZUN6z3tnKXCo" + "AEnB2Uo8U14Xt2nOM0l2U1siSCRO3vnBsGPGwQQd7d_p8ywkBQSqxNP2BsPCYJdof33U_ingKB5_MjeFtJHBouhA0mmHYpYrGg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICJvYmplY3QiOiAiZm9vIiwKICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogImVudGl0eSI6ICJkb21haW4tZ29vZ2xlLmNvbSIsCiAicm9sZSI6ICJSRUFERVIiLAogImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBVT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICJvYmplY3QiOiAiZm9vIiwKICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogImVudGl0eSI6ICJkb21haW4tZ29vZ2xlLmNvbSIsCiAicm9sZSI6ICJSRUFERVIiLAogImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICJldGFnIjogIkNJNkQyZG52dXR3Q0VBVT0iCn0K" } }, { - "ID": "98f4847e810f1194", + "ID": "306b64bcc7889e72", "Request": { "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -26255,13 +26914,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "89805ae057d244a9d38c40a575af190b/6451309879377210081;o=0" + "9420d81244ebc97f49dd3f3310f3f4a8/2533661228731206783;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -26270,29 +26929,31 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" }, "Response": { - "StatusCode": 400, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ - "13525" + "14477" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:31 GMT" + "Wed, 25 Jul 2018 18:24:10 GMT" ], "Server": [ "UploadServer" @@ -26302,7 +26963,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543349000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -26311,16 +26972,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrnt4:4443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/485.scotty,acatli15:443" + "xhiadbaw16:4120,/bns/xi/borg/xi/bns/blobstore2/bitpusher/63.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=x041W_GSA9PFhgTc2byYBg" + "eid=SsBYW9meGM6zswbii4FI" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/485.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/63.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -26329,13 +26990,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/485:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/63:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -26350,17 +27011,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqVinm8lFRfJFROlJN5HhxwXaAdJ4swaHXj0y39A51OfJU-CmQws4OV2RmAEEpdyqZzmrtuo9qdsy2CgLmYWVm7LY0gSReK6d0jH--rFcPXQj6zhQQ" + "AEnB2Uo93B2Ww5xpqlBFPtKvRyvV1yVrrBlfI2CZWpl-am_2hnln-HM-vPnRiMc82L4pxy11qjBODmG-bexRE8pBw1EpvW0lfw" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6MTYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci51cGRhdGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6MTYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci51cGRhdGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" } }, { - "ID": "c3bab13c287f1114", + "ID": "d06f132e9ec7b96d", "Request": { - "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -26369,23 +27030,17 @@ "Authorization": [ "REDACTED" ], - "Content-Length": [ - "107" - ], - "Content-Type": [ - "application/json" - ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f9495f7b59b27d93123f9b0711c8e1e4/8066444912070995200;o=0" + "5b5eda7ba23eb972a9bf2520a3a02174/10174624346090605979;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -26394,41 +27049,40 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0, must-revalidate, no-transform" ], "Content-Length": [ - "495" + "3126" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:31 GMT" + "Wed, 25 Jul 2018 18:24:10 GMT" ], "Etag": [ - "CNbJn8Oi99sCEAU=" + "CI6D2dnvutwCEAU=" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:10 GMT" ], "Server": [ "UploadServer" @@ -26438,25 +27092,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrlg23:4041,/bns/yw/borg/yw/bns/blobstore2/bitpusher/4.scotty,acatli15:443" + "xgiadaaa9:4028,/bns/xi/borg/xi/bns/blobstore2/bitpusher/44.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=x041W_bIFIrvhAT60qWICA" + "eid=SsBYW_mjJYq1swbFnpiwDw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/4.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/44.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -26465,13 +27119,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/4:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/44:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -26486,17 +27140,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqFcQTdv7OvEMZi6rGCdwB5hq9PhOQtIptiYa2bE8oUErjmDJPZzU-rKfRDNLmYPAmyU51LPVHo45Kje_mngyc0BkMeVAwEVG0-RZ7ZFBQUOssJWKY" + "AEnB2UqSc734xQW8pa8LKW0flGdgJksu272ZE9TecP_tBabBaP2npvm2Exj9t3OAeZgmRrH_8FzhMRM8EjC8--hFec00u_s46g" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvZG9tYWluLWdvb2dsZS5jb20iLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICJvYmplY3QiOiAiZm9vIiwKICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogImVudGl0eSI6ICJkb21haW4tZ29vZ2xlLmNvbSIsCiAicm9sZSI6ICJSRUFERVIiLAogImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBVT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFVPSIKICB9CiBdCn0K" } }, { - "ID": "2f140ccb6f61151d", + "ID": "ef223085c07ea8d5", "Request": { - "Method": "PUT", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=veener-jba", + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -26505,23 +27159,146 @@ "Authorization": [ "REDACTED" ], + "User-Agent": [ + "google-api-go-client/0.5" + ], + "Via": [ + "1.1 httpr-2cb544b9dcbba457f48c" + ], + "X-Cloud-Trace-Context": [ + "dba9cd35abd117d0720a31ccf494044b/17815586363955089080;o=0" + ], + "X-Forwarded-For": [ + "127.0.0.1" + ], + "X-Forwarded-Host": [ + "www.googleapis.com" + ], + "X-Forwarded-Proto": [ + "https" + ], + "X-Forwarded-Url": [ + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl?alt=json\u0026userProject=dulcet-port-762" + ], + "X-Goog-Api-Client": [ + "gl-go/1.10.3 gccl/20180226" + ] + }, + "Body": "" + }, + "Response": { + "StatusCode": 200, + "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, + "Header": { + "Alt-Svc": [ + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "private, max-age=0, must-revalidate, no-transform" + ], "Content-Length": [ - "107" + "3126" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" + ], + "Date": [ + "Wed, 25 Jul 2018 18:24:10 GMT" + ], + "Etag": [ + "CI6D2dnvutwCEAU=" + ], + "Expires": [ + "Wed, 25 Jul 2018 18:24:10 GMT" + ], + "Server": [ + "UploadServer" + ], + "Vary": [ + "Origin", + "X-Origin" + ], + "X-Google-Apiary-Auth-Expires": [ + "1532543331000" + ], + "X-Google-Apiary-Auth-Scopes": [ + "https://www.googleapis.com/auth/devstorage.full_control" + ], + "X-Google-Apiary-Auth-User": [ + "998958384336" + ], + "X-Google-Backends": [ + "xgiadabf13:4076,/bns/xi/borg/xi/bns/blobstore2/bitpusher/131.scotty,aclgag4:443" + ], + "X-Google-Dos-Service-Trace": [ + "main:apps-upload-cloud-storage-unified" + ], + "X-Google-Gfe-Backend-Request-Info": [ + "eid=SsBYW87hKeu8swaT-aHwAg" + ], + "X-Google-Gfe-Request-Trace": [ + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/131.scotty,aclgag4:443" + ], + "X-Google-Gfe-Response-Code-Details-Trace": [ + "response_code_set_by_backend" + ], + "X-Google-Gfe-Service-Trace": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Netmon-Label": [ + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/131:caf3" + ], + "X-Google-Service": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Session-Info": [ + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + ], + "X-Google-Shellfish-Status": [ + "CA0gBEBG" + ], + "X-Guploader-Customer": [ + "apiary_cloudstorage_metadata" + ], + "X-Guploader-Request-Result": [ + "success" + ], + "X-Guploader-Upload-Result": [ + "success" + ], + "X-Guploader-Uploadid": [ + "AEnB2Up7DJJXlZ_juEw311a2a9WjdFbK5OawWULKNZiw6W44034uNT2raatzegz165bZicMRPM2VXmlPobib92DaBRyktl8kjA" + ] + }, + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFVPSIKICB9CiBdCn0K" + } + }, + { + "ID": "e119001f798374a8", + "Request": { + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl?alt=json", + "Proto": "HTTP/1.1", + "Header": { + "Accept-Encoding": [ + "gzip" + ], + "Authorization": [ + "REDACTED" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "42c83a43f5fa083b78fdb47dd0d5f66e/9609522346448662560;o=0" + "974ca3e6818e29670f6ca0db1d9163db/7010086886876549076;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -26530,29 +27307,37 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLCJlbnRpdHkiOiJkb21haW4tZ29vZ2xlLmNvbSIsInJvbGUiOiJSRUFERVIifQo=" + "Body": "" }, "Response": { - "StatusCode": 403, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "private, max-age=0" ], "Content-Length": [ - "14477" + "13481" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:31 GMT" + "Wed, 25 Jul 2018 18:24:10 GMT" + ], + "Expires": [ + "Wed, 25 Jul 2018 18:24:10 GMT" ], "Server": [ "UploadServer" @@ -26562,7 +27347,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -26571,16 +27356,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrw187:4237,/bns/yw/borg/yw/bns/blobstore2/bitpusher/577.scotty,acatli15:443" + "xiiadcao13:4325,/bns/xi/borg/xi/bns/blobstore2/bitpusher/142.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=x041W8CZG8GVhgSpl5CYAw" + "eid=SsBYW4_dLoq9swbt0Y3oAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/577.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/142.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -26589,13 +27374,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/577:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/142:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -26610,144 +27395,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Urz4vBseBymaCqTrhu8H6cGro42YRef42eJtcuu3FGuo5USl_61J__fIkbLskkY7_S1YLCMftbwr0box6zdsbuIDjSXDgc9TWKuv-PeQv-oV9J2H7Q" + "AEnB2Uq8DFk5TtLnYZjjsRPmICtkdRv-IgWsp1W5DO8uD5ACMRGABuenNgK7Q75HxjU8OKgX4jh2dPdfqOoajqn-FqmgcCl50Q" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5VcGRhdGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVBY2xzLmphdmE6MTYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci51cGRhdGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLlVwZGF0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUFjbHMuamF2YToxNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLnVwZGF0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuVXBkYXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQWNscy5qYXZhOjE2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IudXBkYXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" - } - }, - { - "ID": "0da7091949c63388", - "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl?alt=json", - "Proto": "HTTP/1.1", - "Header": { - "Accept-Encoding": [ - "gzip" - ], - "Authorization": [ - "REDACTED" - ], - "User-Agent": [ - "google-api-go-client/0.5" - ], - "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" - ], - "X-Cloud-Trace-Context": [ - "4dc88f987047e04c32d69f9d521efd00/11224656279647597375;o=0" - ], - "X-Forwarded-For": [ - "::1" - ], - "X-Forwarded-Host": [ - "www.googleapis.com" - ], - "X-Forwarded-Proto": [ - "https" - ], - "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl?alt=json" - ], - "X-Goog-Api-Client": [ - "gl-go/1.10.3 gccl/20180226" - ] - }, - "Body": "" - }, - "Response": { - "StatusCode": 200, - "Proto": "HTTP/1.1", - "Header": { - "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" - ], - "Content-Length": [ - "3126" - ], - "Content-Type": [ - "application/json; charset=UTF-8" - ], - "Date": [ - "Thu, 28 Jun 2018 21:10:31 GMT" - ], - "Etag": [ - "CNbJn8Oi99sCEAU=" - ], - "Expires": [ - "Thu, 28 Jun 2018 21:10:31 GMT" - ], - "Server": [ - "UploadServer" - ], - "Vary": [ - "Origin", - "X-Origin" - ], - "X-Google-Apiary-Auth-Expires": [ - "1530220511000" - ], - "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control" - ], - "X-Google-Apiary-Auth-User": [ - "998958384336" - ], - "X-Google-Backends": [ - "vrmr18:4187,/bns/yw/borg/yw/bns/blobstore2/bitpusher/102.scotty,acatli15:443" - ], - "X-Google-Dos-Service-Trace": [ - "main:apps-upload-cloud-storage-unified" - ], - "X-Google-Gfe-Backend-Request-Info": [ - "eid=x041W8i-JsT2N87Rh_gH" - ], - "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/102.scotty,acatli15:443" - ], - "X-Google-Gfe-Response-Code-Details-Trace": [ - "response_code_set_by_backend" - ], - "X-Google-Gfe-Service-Trace": [ - "bitpusher-gcs-apiary" - ], - "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/102:caf3" - ], - "X-Google-Service": [ - "bitpusher-gcs-apiary" - ], - "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" - ], - "X-Google-Shellfish-Status": [ - "CA0gBEBG" - ], - "X-Guploader-Customer": [ - "apiary_cloudstorage_metadata" - ], - "X-Guploader-Request-Result": [ - "success" - ], - "X-Guploader-Upload-Result": [ - "success" - ], - "X-Guploader-Uploadid": [ - "AEnB2Urh3ZwDPOygQtjdI4qRMibFYA49VaMwoH3c9sO5GsTKJBtVDm7JJfZbM6eXk0r2OWB3JYg7OPdmPj2-hunAWCyhzNzN0HvuhxGRbhg2viIJZxBct88" - ] - }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFVPSIKICB9CiBdCn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIKIH0KfQo=" } }, { - "ID": "b321faf31b2faf4c", + "ID": "f742ec460c5fc6b3", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl?alt=json\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -26760,13 +27418,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9dbf90fca1d0ad6c26dc22359284f0d3/12767452247638423135;o=0" + "1cd6e817ec3b9ca6b0206fdb5da55d67/14651048904741032177;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -26775,7 +27433,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl?alt=json\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -26786,9 +27444,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -26800,13 +27460,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:31 GMT" + "Wed, 25 Jul 2018 18:24:10 GMT" ], "Etag": [ - "CNbJn8Oi99sCEAU=" + "CI6D2dnvutwCEAU=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:31 GMT" + "Wed, 25 Jul 2018 18:24:10 GMT" ], "Server": [ "UploadServer" @@ -26816,25 +27476,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220517000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vru67:4406,/bns/yw/borg/yw/bns/blobstore2/bitpusher/211.scotty,acatli15:443" + "xiiadcab8:4431,/bns/xi/borg/xi/bns/blobstore2/bitpusher/26.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=x041W7PtK8KVN86YjeAJ" + "eid=SsBYW-PrN6Oxswak0oXADA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/211.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/26.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -26843,13 +27503,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/211:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/26:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -26864,17 +27524,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo7tDTxkV-kpNq3GEGahM2DGZ3XzH2sYJzfrwMykJL6MvhAc-g1xB1kP44H5DNYpJDa6PJtXRtyta48rJKLKuroVkd10-tV3-XI7P4vTT8DDBa1Lbc" + "AEnB2UqJK0Y50K7I1CohjIQqY8fs2eH64aelxRPOmBGliAZUJc04A8fyHJS1aDOC-CRIKz9qd-q9rkRzr5u_uw08zGK87xRhBQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFVPSIKICB9CiBdCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJNkQyZG52dXR3Q0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwMzUxMzAyNTQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDM1MTMwMjU0IiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSTZEMmRudnV0d0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2Zvby8xNTMyNTQzMDM1MTMwMjU0L2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMzUxMzAyNTQiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ0k2RDJkbnZ1dHdDRUFVPSIKICB9CiBdCn0K" } }, { - "ID": "a37e9848a20ca25f", + "ID": "94c266d54a938f32", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl?alt=json\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -26887,13 +27547,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "8abe88cfbcababb89507265c626ce47d/14382587280332208510;o=0" + "a9ee8120fe2c44631fd09ce8148f493c/3845267952669069837;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -26902,7 +27562,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl?alt=json\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -26911,26 +27571,28 @@ "Body": "" }, "Response": { - "StatusCode": 400, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" ], "Content-Length": [ - "13481" + "14433" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:31 GMT" + "Wed, 25 Jul 2018 18:24:11 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:31 GMT" + "Wed, 25 Jul 2018 18:24:11 GMT" ], "Server": [ "UploadServer" @@ -26940,7 +27602,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -26949,16 +27611,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrt64:4383,/bns/yw/borg/yw/bns/blobstore2/bitpusher/410.scotty,acatli15:443" + "xgiadaac13:4010,/bns/xi/borg/xi/bns/blobstore2/bitpusher/148.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=x041W5rJMM2_N9XTiegC" + "eid=SsBYW92DPMe9swaP-5fwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/410.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/148.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -26967,13 +27629,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/410:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/148:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -26988,17 +27650,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Ur5zXWAguS5SoACWWQX7hqJfB3CiqDKPVjTK0mhHsd5mnjAVKyjPaw6bgq_YfLWr9NvflZ0_7Osc93_DOcvosyOpGRawq4I7lN1UbftFNn3gaBoO6Q" + "AEnB2UpURM332A0PxG9fkJ3Us1VJF336fZvXJT7hDl6wYZt-DxDYSDyXFOhQ115sw2QaAzShAJbJd7udPk6q7LeghFaW9fyT-Q" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjg1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5saXN0KEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWJhZFJlcXVlc3QsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDAsCiAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIKIH0KfQo=" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9Rk9SQklEREVOLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4iCiB9Cn0K" } }, { - "ID": "1a88a0a08229a1c9", + "ID": "d12fbdb92a11998c", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -27011,13 +27673,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d27ff18af2e24d008a3673ddcb9986f6/15925664714709875870;o=0" + "f2049be0c832c930be0114777f5baffd/11486229970533552938;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -27026,7 +27688,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl?alt=json\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -27035,29 +27697,34 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "3126" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:32 GMT" + "Wed, 25 Jul 2018 18:24:11 GMT" ], "Etag": [ - "CNbJn8Oi99sCEAU=" + "CI6D2dnvutwCEAY=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:32 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -27067,25 +27734,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543331000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrnr3:4315,/bns/yw/borg/yw/bns/blobstore2/bitpusher/615.scotty,acatli15:443" + "xgiadaap16:4483,/bns/xi/borg/xi/bns/blobstore2/bitpusher/146.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yE41W6rSAcuGhASj3anICg" + "eid=S8BYW7WODcW8swaY9Jb4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/615.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/146.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -27094,13 +27761,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/615:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/146:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -27115,17 +27782,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpXUB4RTGEHFQ2R-D70pybsb2mqhsxEyHrzcVZ0A_Tbc501yGq9dBk1pnQhlWOqETPhq4GpfRZ23wE1BNxbf4j0henI3QpAYOFUll5OGAy_ZGNrlvE" + "AEnB2Uo9vm1Ncr2FyTvAdr4tpQOMEfab8Bu8lEi07lnZectDj4jF3_ZSr5e2lK-fgKXMRx7zKQGDlyq1y6XUgIZ1MKXUY1W7Uw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9scyIsCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNOYkpuOE9pOTlzQ0VBVT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMTYwNTA5MDIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL3VzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgIm9iamVjdCI6ICJmb28iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjE2MDUwOTAyIiwKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTmJKbjhPaTk5c0NFQVU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2Zvby8xNTMwMjIwMjE2MDUwOTAyL2RvbWFpbi1nb29nbGUuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9mb28vYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMTYwNTA5MDIiLAogICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImRvbWFpbiI6ICJnb29nbGUuY29tIiwKICAgImV0YWciOiAiQ05iSm44T2k5OXNDRUFVPSIKICB9CiBdCn0K" + "Body": "" } }, { - "ID": "b1251cf6b2d85f2d", + "ID": "06a8c3d277055637", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl?alt=json\u0026userProject=veener-jba", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -27138,13 +27805,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "0b6b58e009a9ac40dedd0ae2cd6732c9/17540798647908810685;o=0" + "de464c770136e7205d2b5050aa0f7d54/680730493455012934;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -27153,7 +27820,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl?alt=json\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -27162,26 +27829,28 @@ "Body": "" }, "Response": { - "StatusCode": 403, + "StatusCode": 404, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" ], "Content-Length": [ - "14433" + "2993" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:32 GMT" + "Wed, 25 Jul 2018 18:24:11 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:32 GMT" + "Wed, 25 Jul 2018 18:24:11 GMT" ], "Server": [ "UploadServer" @@ -27191,25 +27860,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543336000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrdh7:4070,/bns/yw/borg/yw/bns/blobstore2/bitpusher/623.scotty,acatli15:443" + "xiiadcah5:4482,/bns/xi/borg/xi/bns/blobstore2/bitpusher/123.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yE41W-_DBoyihwS80rTIBg" + "eid=S8BYW96KJYGGygPZjIDwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/623.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/123.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -27218,13 +27887,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/623:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/123:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -27239,17 +27908,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqfKs9-M6MJ731w2jsn9HqFRwx6NCtvhcZbrz86rjL1W0W_OWYEhNCFUh1Pg1k4BjDqzUQ_yNuz2mqr5gHbcSOHPkkLn7Ys3hGCeQg-7Y2LIa86mVA" + "AEnB2UqekL5FlaQsZNtC_uoJ4UxCx8Gu-eb1xUo0aACyoku1Lw0OiT5gahTcP3E8RBkcnNwcY3ACnfNoIuRhztk1BM7bknA-2g" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9Rk9SQklEREVOLCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YTo4NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkxpc3RBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0QWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IubGlzdChBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuTGlzdEFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RBY2xzLmphdmE6ODUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5MaXN0QWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdEFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmxpc3QoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4iCiB9Cn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPU5PVF9GT1VORCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPW51bGwsIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1udWxsLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLnNjb3BlLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQuc2NvcGUsIG1lc3NhZ2U9Tm90IEZvdW5kLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBOb3QgRm91bmRcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDA0LAogICJtZXNzYWdlIjogIk5vdCBGb3VuZCIKIH0KfQo=" } }, { - "ID": "5ac642be380c2150", + "ID": "4a435971e1e422d1", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -27262,13 +27931,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "69a90d83e9c250d327b520dd4af09178/709469982374839005;o=0" + "093587f6951ee94ffabc84f4c875c908/8321692511319496035;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -27277,7 +27946,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -27286,32 +27955,28 @@ "Body": "" }, "Response": { - "StatusCode": 204, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0" ], "Content-Length": [ - "0" + "13525" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:32 GMT" - ], - "Etag": [ - "CNbJn8Oi99sCEAY=" + "Wed, 25 Jul 2018 18:24:11 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:11 GMT" ], "Server": [ "UploadServer" @@ -27321,25 +27986,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220517000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrar8:4264,/bns/yw/borg/yw/bns/blobstore2/bitpusher/444.scotty,acatli15:443" + "xiiadcbo12:4395,/bns/xi/borg/xi/bns/blobstore2/bitpusher/138.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yE41W9-kFNWyhgSNxaeACw" + "eid=S8BYW9_qKcm8swae9r34Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/444.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/138.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -27348,13 +28013,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/444:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/138:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -27363,23 +28028,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UpWTsX9f0N2y2eDw8SzYrmsvLkhTv0ihlB12ypt_ZsHWYz8pFlwEZtjtxJTG7waehWGjroxCwLqZkTLTmVTKN8l4NqXPknWKJQYtF1emY1pX5vbbdw" + "AEnB2Upq_yGzF_n77ASH-WiKRWXBOBJeUv_SUpGi9Pj1A0eYlnFCxdEYFRttj7B6CdxCq1z59CF0oz6P3tHH0no11bov4eC-Ow" ] }, - "Body": "" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6NzEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5kZWxldGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" } }, { - "ID": "002f165e552d4076", + "ID": "2050b862036d1dc8", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -27392,13 +28057,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5e8fd5c515b2abbfc286a05fb2c4e03b/2252548520542324220;o=0" + "13f7f464e5983ae68c34543dc5f99a0b/15962655628678895231;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -27407,7 +28072,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -27418,9 +28083,11 @@ "Response": { "StatusCode": 404, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -27432,10 +28099,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:32 GMT" + "Wed, 25 Jul 2018 18:24:11 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:32 GMT" + "Wed, 25 Jul 2018 18:24:11 GMT" ], "Server": [ "UploadServer" @@ -27445,25 +28112,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrnx21:4420,/bns/yw/borg/yw/bns/blobstore2/bitpusher/625.scotty,acatli15:443" + "xgiadabn6:4066,/bns/xi/borg/xi/bns/blobstore2/bitpusher/118.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yE41W6m3JsLdhAT6tKGwBg" + "eid=S8BYW9K3N-GEygPhuovwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/625.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/118.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -27472,13 +28139,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/625:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/118:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -27493,17 +28160,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UrONF3UrsFmA1l_RhmCckA6UA_NE6th4pnWXiZNclp6VHAlviMYmUaI7Iu9sl25pVkiNFGUaKfPzrmRe-D4n6W9Q9A7HBM-qGCzQR-JzXBy9xBl-Ng" + "AEnB2UpYsqXxmTbL_i5UFMK6NIWRcNThEmhG4svOq7srkpcFih7bz_0iTqP9qhJSaFNgmdVOVjmHKy6w2zTRsd1GOG2qYS6UAw" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPU5PVF9GT1VORCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPW51bGwsIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1udWxsLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLnNjb3BlLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQuc2NvcGUsIG1lc3NhZ2U9Tm90IEZvdW5kLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBOb3QgRm91bmRcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDA0LAogICJtZXNzYWdlIjogIk5vdCBGb3VuZCIKIH0KfQo=" } }, { - "ID": "69c314ae145b1dd4", + "ID": "c72d72a702fa554b", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -27516,13 +28183,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "bcbeea5c1333ca3f4b4e29818d3f5589/3867682449446291484;o=0" + "584db496f99454349b61b55ca8cc52df/5157155047810537372;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -27531,7 +28198,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -27540,26 +28207,28 @@ "Body": "" }, "Response": { - "StatusCode": 400, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" ], "Content-Length": [ - "13525" + "14477" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:32 GMT" + "Wed, 25 Jul 2018 18:24:12 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:32 GMT" + "Wed, 25 Jul 2018 18:24:12 GMT" ], "Server": [ "UploadServer" @@ -27569,7 +28238,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543337000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -27578,16 +28247,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrjl71:4118,/bns/yw/borg/yw/bns/blobstore2/bitpusher/101.scotty,acatli15:443" + "xgiadaaw12:4143,/bns/xi/borg/xi/bns/blobstore2/bitpusher/140.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yE41W8L9LMHvhAS3rbPYCg" + "eid=S8BYW6-iPIa9swbN3qfoAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/101.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/140.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -27596,13 +28265,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/101:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/140:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -27617,17 +28286,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqWTOU2GbKcjzJxx6tAL3bmNe2mhEaR-zDvt7oDdNOXQwAMB_JtdTz_vKYz1_n8eHOf6egiarsoXJGhVEoiigbbXJ-Zs4si3DvZ7KfKWW2MRgYC3rs" + "AEnB2UoMa42rM_Khs_QVlU9gf4LiwnZx8qKV0UL2GIJflFNNRmLyVbbHxc64VxyVnt70pNWyA0FdJJaVYgdwLMXvDaAgDrs8tg" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6NzEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5kZWxldGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6NzEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5kZWxldGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" } }, { - "ID": "a2ee16fd59be66da", + "ID": "d679b4e6505004b9", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "Method": "POST", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/rewriteTo/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -27636,17 +28305,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "3" + ], + "Content-Type": [ + "application/json" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "1bc23f3cd620b1290c566a7eee7858f0/5410759888118926139;o=0" + "06a1c39b6a607c4ba2b0bdcc7378228f/12797836698783094968;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -27655,35 +28330,40 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/rewriteTo/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "e30K" }, "Response": { - "StatusCode": 404, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "2993" + "3809" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:33 GMT" + "Wed, 25 Jul 2018 18:24:12 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:33 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -27693,25 +28373,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543352000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrv63:4258,/bns/yw/borg/yw/bns/blobstore2/bitpusher/306.scotty,acatli15:443" + "xgiadabj12:4211,/bns/xi/borg/xi/bns/blobstore2/bitpusher/39.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yE41W6qNOML7hQTg1oPgDg" + "eid=TMBYW-iEDc-0swaFr7fwAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/306.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/39.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -27720,13 +28400,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/306:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/39:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -27735,23 +28415,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UptXr5UrqFieOAtpqaxjlHNagcyTOYLaybSTPfGRxT6kkZ1HH97rmy0J5eczKnvTdug2m6_IeLOCpagogzNF_Mf1Sqox0hxK0Au-usuKgh51YHxB1c" + "AEnB2UrQrcLPKw1kEVeKWvq9Dke_NzAf6WgnnOeMQkC449pWCd4QHO9bYcri_mr43j7_6Lm_QDnHASDc7tUGrzuAaZ5aR1v6IA" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPU5PVF9GT1VORCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPW51bGwsIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1ub3RGb3VuZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uTk9UX0ZPVU5ELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1udWxsLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLnNjb3BlLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQuc2NvcGUsIG1lc3NhZ2U9Tm90IEZvdW5kLCByZWFzb249bm90Rm91bmQsIHJwY0NvZGU9NDA0fSBOb3QgRm91bmRcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDA0LAogICJtZXNzYWdlIjogIk5vdCBGb3VuZCIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiNSIsCiAib2JqZWN0U2l6ZSI6ICI1IiwKICJkb25lIjogdHJ1ZSwKICJyZXNvdXJjZSI6IHsKICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9jb3B5LzE1MzI1NDMwNTI1NDI5MzUiLAogICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vY29weSIsCiAgIm5hbWUiOiAiY29weSIsCiAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTI1NDI5MzUiLAogICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MTIuNTQyWiIsCiAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxMi41NDJaIiwKICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxMi41NDJaIiwKICAic2l6ZSI6ICI1IiwKICAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHk/Z2VuZXJhdGlvbj0xNTMyNTQzMDUyNTQyOTM1JmFsdD1tZWRpYSIsCiAgImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICJhY2wiOiBbCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2NvcHkvMTUzMjU0MzA1MjU0MjkzNS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgICJvYmplY3QiOiAiY29weSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDUyNTQyOTM1IiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJvd25lcnMiCiAgICB9LAogICAgImV0YWciOiAiQ05mbi8rSHZ1dHdDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvY29weS8xNTMyNTQzMDUyNTQyOTM1L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHkvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1MjU0MjkzNSIsCiAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICB9LAogICAgImV0YWciOiAiQ05mbi8rSHZ1dHdDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvY29weS8xNTMyNTQzMDUyNTQyOTM1L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1MjU0MjkzNSIsCiAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJSRUFERVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgfSwKICAgICJldGFnIjogIkNOZm4vK0h2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2NvcHkvMTUzMjU0MzA1MjU0MjkzNS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vY29weS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1MjU0MjkzNSIsCiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJldGFnIjogIkNOZm4vK0h2dXR3Q0VBRT0iCiAgIH0KICBdLAogICJvd25lciI6IHsKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogIH0sCiAgImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAgImV0YWciOiAiQ05mbi8rSHZ1dHdDRUFFPSIKIH0KfQo=" } }, { - "ID": "e847ef7ec0d168dd", + "ID": "86cfa7cd7316cc37", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=veener-jba", + "Method": "POST", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/rewriteTo/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026projection=full\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -27760,17 +28440,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "3" + ], + "Content-Type": [ + "application/json" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "aea0b98a14e81b8d34485235c0c3a2db/7025893821317795419;o=0" + "3e6fc17a1afe02dc20a3817bbeb50ccb/1992336117914737109;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -27779,35 +28465,40 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/acl/domain-google.com?alt=json\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/rewriteTo/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026projection=full\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "e30K" }, "Response": { - "StatusCode": 403, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "14477" + "3809" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:33 GMT" + "Wed, 25 Jul 2018 18:24:13 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:33 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -27817,25 +28508,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220518000" + "1532543352000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrnm22:4040,/bns/yw/borg/yw/bns/blobstore2/bitpusher/271.scotty,acatli15:443" + "xiiadcbo12:4395,/bns/xi/borg/xi/bns/blobstore2/bitpusher/91.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yU41W6KDAsW6N4SVrcgJ" + "eid=TMBYW7qxLMK8swaH0qagBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/271.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/91.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -27844,13 +28535,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/271:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/91:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATo_ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -27859,23 +28550,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uoi_2taGcCTC655cDHGA2Y9KL78TyNz4Pvnd-6wVUgzyXgqITOy09UtwSN7XhHLCSig59xamIr7zmREqYFSX9KR0BUfekPuvxT7pb4Yhwng-Ej-IbQ" + "AEnB2UrX8RI_R8PYV9tPoYZo_KbJDjxqEd8MydbLHf0_vG4-N7TKd0jy2mdvPJ8J4GZTXi1S0Gc0ImvJUw49SN8MLj0kiEjstg" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5sb2FkT2JqZWN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6MzM5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIuZ2V0QWNsUmVzb3VyY2VGb3JSZXF1ZXN0KEFjY2Vzc0NvbnRyb2xzSGVscGVyLmphdmE6NjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6NzEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5EZWxldGVBY2xzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVBY2xzLmphdmE6MjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5BY2Nlc3NDb250cm9sc0RlbGVnYXRvci5kZWxldGUoQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuamF2YToxMDkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmxvYWRPYmplY3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTozMzkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYWNscy5BY2Nlc3NDb250cm9sc0hlbHBlci5nZXRBY2xSZXNvdXJjZUZvclJlcXVlc3QoQWNjZXNzQ29udHJvbHNIZWxwZXIuamF2YTo2OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YTo3MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkRlbGV0ZUFjbHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUFjbHMuamF2YToyMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmRlbGV0ZShBY2Nlc3NDb250cm9sc0RlbGVnYXRvci5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE5IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuQWNjZXNzQ29udHJvbHNIZWxwZXIubG9hZE9iamVjdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjMzOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5hY2xzLkFjY2Vzc0NvbnRyb2xzSGVscGVyLmdldEFjbFJlc291cmNlRm9yUmVxdWVzdChBY2Nlc3NDb250cm9sc0hlbHBlci5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjcxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmFjbHMuRGVsZXRlQWNscy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQWNscy5qYXZhOjIwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQWNjZXNzQ29udHJvbHNEZWxlZ2F0b3IuZGVsZXRlKEFjY2Vzc0NvbnRyb2xzRGVsZWdhdG9yLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiNSIsCiAib2JqZWN0U2l6ZSI6ICI1IiwKICJkb25lIjogdHJ1ZSwKICJyZXNvdXJjZSI6IHsKICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9jb3B5LzE1MzI1NDMwNTMyMTkyNjAiLAogICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vY29weSIsCiAgIm5hbWUiOiAiY29weSIsCiAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTMyMTkyNjAiLAogICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MTMuMjE5WiIsCiAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxMy4yMTlaIiwKICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxMy4yMTlaIiwKICAic2l6ZSI6ICI1IiwKICAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHk/Z2VuZXJhdGlvbj0xNTMyNTQzMDUzMjE5MjYwJmFsdD1tZWRpYSIsCiAgImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICJhY2wiOiBbCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2NvcHkvMTUzMjU0MzA1MzIxOTI2MC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgICJvYmplY3QiOiAiY29weSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDUzMjE5MjYwIiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJvd25lcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0x5THFlTHZ1dHdDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvY29weS8xNTMyNTQzMDUzMjE5MjYwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHkvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1MzIxOTI2MCIsCiAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0x5THFlTHZ1dHdDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvY29weS8xNTMyNTQzMDUzMjE5MjYwL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1MzIxOTI2MCIsCiAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJSRUFERVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgfSwKICAgICJldGFnIjogIkNMeUxxZUx2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2NvcHkvMTUzMjU0MzA1MzIxOTI2MC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vY29weS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1MzIxOTI2MCIsCiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJldGFnIjogIkNMeUxxZUx2dXR3Q0VBRT0iCiAgIH0KICBdLAogICJvd25lciI6IHsKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogIH0sCiAgImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAgImV0YWciOiAiQ0x5THFlTHZ1dHdDRUFFPSIKIH0KfQo=" } }, { - "ID": "ac4b278f9dacff35", + "ID": "8887b68bad486b9d", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/rewriteTo/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/rewriteTo/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -27894,13 +28585,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "1a2dd758404739caf673af3bb0949e09/8640747383329837434;o=0" + "ce69347057de7d4378748fb260c519ab/9633299235274136305;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -27909,7 +28600,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/rewriteTo/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/rewriteTo/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -27918,29 +28609,22 @@ "Body": "e30K" }, "Response": { - "StatusCode": 200, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ - "3809" + "13465" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:33 GMT" - ], - "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:13 GMT" ], "Server": [ "UploadServer" @@ -27950,25 +28634,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220533000" + "1532543353000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrbx62:4007,/bns/yw/borg/yw/bns/blobstore2/bitpusher/25.scotty,acatli15:443" + "xiiadcba13:4101,/bns/xi/borg/xi/bns/blobstore2/bitpusher/149.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yU41W-WNDpLuhATIx7SoDA" + "eid=TcBYW8-wFcy8swbYrr3oAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/25.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/149.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -27977,13 +28661,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/25:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/149:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -27992,23 +28676,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Up8Ugw3JLfdovqiwsiZqAa5Hqo9f58WngeftYgSEhsCPo57J8YCkAJcX2HDGASDMlMHMRWolubu6ZeouTft2M3QFa9yWl5VWsZTKDHj2GzDme3qZ7Y" + "AEnB2UqeMRMsS_uCUWbnoCyuNHN91FsGGt2jPIUHCAp53wvU93arB__oDYPRczupKCR178sFy2lvP9nhSnC0u2BNnppRH9PCVA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiNSIsCiAib2JqZWN0U2l6ZSI6ICI1IiwKICJkb25lIjogdHJ1ZSwKICJyZXNvdXJjZSI6IHsKICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9jb3B5LzE1MzAyMjAyMzM2MjkzMzkiLAogICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vY29weSIsCiAgIm5hbWUiOiAiY29weSIsCiAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzM2MjkzMzkiLAogICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MzMuNjI4WiIsCiAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozMy42MjhaIiwKICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozMy42MjhaIiwKICAic2l6ZSI6ICI1IiwKICAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHk/Z2VuZXJhdGlvbj0xNTMwMjIwMjMzNjI5MzM5JmFsdD1tZWRpYSIsCiAgImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICJhY2wiOiBbCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2NvcHkvMTUzMDIyMDIzMzYyOTMzOS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgICJvYmplY3QiOiAiY29weSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjMzNjI5MzM5IiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJvd25lcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0p1OTBNdWk5OXNDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvY29weS8xNTMwMjIwMjMzNjI5MzM5L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHkvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzMzYyOTMzOSIsCiAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0p1OTBNdWk5OXNDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvY29weS8xNTMwMjIwMjMzNjI5MzM5L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzMzYyOTMzOSIsCiAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJSRUFERVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgfSwKICAgICJldGFnIjogIkNKdTkwTXVpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2NvcHkvMTUzMDIyMDIzMzYyOTMzOS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vY29weS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzMzYyOTMzOSIsCiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJldGFnIjogIkNKdTkwTXVpOTlzQ0VBRT0iCiAgIH0KICBdLAogICJvd25lciI6IHsKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogIH0sCiAgImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAgImV0YWciOiAiQ0p1OTBNdWk5OXNDRUFFPSIKIH0KfQo=" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLkZyb250ZW5kUmV3cml0ZUFjdGlvbnMuZ2V0U291cmNlT2JqZWN0KEZyb250ZW5kUmV3cml0ZUFjdGlvbnMuamF2YToxNDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLkZyb250ZW5kUmV3cml0ZUFjdGlvbnMuZ2V0U291cmNlT2JqZWN0KEZyb250ZW5kUmV3cml0ZUFjdGlvbnMuamF2YToxNDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMxMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnJld3JpdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyNClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5nZXRTb3VyY2VPYmplY3QoRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5qYXZhOjE0Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdChSZXdyaXRlci5qYXZhOjMyMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QucmV3cml0ZUluRnJvbnRlbmQoUmV3cml0ZU9iamVjdC5qYXZhOjIyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YToyMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6NTIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0Li4uIDE0IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzExKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IucmV3cml0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5Gcm9udGVuZFJld3JpdGVBY3Rpb25zLmdldFNvdXJjZU9iamVjdChGcm9udGVuZFJld3JpdGVBY3Rpb25zLmphdmE6MTQ3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0KFJld3JpdGVyLmphdmE6MzIzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5yZXdyaXRlSW5Gcm9udGVuZChSZXdyaXRlT2JqZWN0LmphdmE6MjI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjIwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YTo1Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHQuLi4gMTQgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" } }, { - "ID": "89250e5caad1818e", + "ID": "e579d592c0e54171", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/rewriteTo/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026projection=full\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/rewriteTo/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -28027,13 +28711,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a78dd3f6a38d19abdfea270a42c9c113/10183824817707504794;o=0" + "08875a54f9267114334c417fd0b106ce/17274261253138619150;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -28042,7 +28726,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/rewriteTo/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026projection=full\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/rewriteTo/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -28053,21 +28737,23 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "3809" + "3764" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:34 GMT" + "Wed, 25 Jul 2018 18:24:13 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -28083,25 +28769,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220533000" + "1532543353000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrnv1:4379,/bns/yw/borg/yw/bns/blobstore2/bitpusher/541.scotty,acatli15:443" + "xiiadcbm4:4122,/bns/xi/borg/xi/bns/blobstore2/bitpusher/1.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yU41W8bLLcmChQTn2LjwAw" + "eid=TcBYW5zlH-2yswad5qDADg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/541.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/1.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -28110,13 +28796,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/541:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/1:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -28131,17 +28817,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urag6p_vCyG1qVHWNKLI05A_JgL9zhVsDG7IX5pfn8V0MByBoAeYUGklwkZ3gEhn8wNwGpgyEV5QFJj1o2oBcKBVm_ZmXfoXH0FdSMJS0fEFOHC-j4" + "AEnB2UrfczQ-aaWFOlyxeTpFwzv2qiz1CYNP8Aif4RfYJuha4459Y2DVPAJM0ncj9hSqFypG_Aa7-jMkJiTYKKp0gm2eL2nQOA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiNSIsCiAib2JqZWN0U2l6ZSI6ICI1IiwKICJkb25lIjogdHJ1ZSwKICJyZXNvdXJjZSI6IHsKICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9jb3B5LzE1MzAyMjAyMzQxMzg5ODMiLAogICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vY29weSIsCiAgIm5hbWUiOiAiY29weSIsCiAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzQxMzg5ODMiLAogICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MzQuMTM2WiIsCiAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozNC4xMzZaIiwKICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozNC4xMzZaIiwKICAic2l6ZSI6ICI1IiwKICAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHk/Z2VuZXJhdGlvbj0xNTMwMjIwMjM0MTM4OTgzJmFsdD1tZWRpYSIsCiAgImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICJhY2wiOiBbCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2NvcHkvMTUzMDIyMDIzNDEzODk4My9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgICJvYmplY3QiOiAiY29weSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjM0MTM4OTgzIiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJvd25lcnMiCiAgICB9LAogICAgImV0YWciOiAiQ09mSzc4dWk5OXNDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvY29weS8xNTMwMjIwMjM0MTM4OTgzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHkvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNDEzODk4MyIsCiAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICB9LAogICAgImV0YWciOiAiQ09mSzc4dWk5OXNDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvY29weS8xNTMwMjIwMjM0MTM4OTgzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNDEzODk4MyIsCiAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJSRUFERVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgfSwKICAgICJldGFnIjogIkNPZks3OHVpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2NvcHkvMTUzMDIyMDIzNDEzODk4My91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vY29weS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNDEzODk4MyIsCiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJldGFnIjogIkNPZks3OHVpOTlzQ0VBRT0iCiAgIH0KICBdLAogICJvd25lciI6IHsKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogIH0sCiAgImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAgImV0YWciOiAiQ09mSzc4dWk5OXNDRUFFPSIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiNSIsCiAib2JqZWN0U2l6ZSI6ICI1IiwKICJkb25lIjogdHJ1ZSwKICJyZXNvdXJjZSI6IHsKICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9jb3B5LzE1MzI1NDMwNTM2NTE0NzQiLAogICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vY29weSIsCiAgIm5hbWUiOiAiY29weSIsCiAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTM2NTE0NzQiLAogICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MTMuNjUwWiIsCiAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxMy42NTBaIiwKICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxMy42NTBaIiwKICAic2l6ZSI6ICI1IiwKICAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHk/Z2VuZXJhdGlvbj0xNTMyNTQzMDUzNjUxNDc0JmFsdD1tZWRpYSIsCiAgImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICJhY2wiOiBbCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2NvcHkvMTUzMjU0MzA1MzY1MTQ3NC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyIiwKICAgICJvYmplY3QiOiAiY29weSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDUzNjUxNDc0IiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJvd25lcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0pLOHcrTHZ1dHdDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvY29weS8xNTMyNTQzMDUzNjUxNDc0L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHkvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1MzY1MTQ3NCIsCiAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0pLOHcrTHZ1dHdDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvY29weS8xNTMyNTQzMDUzNjUxNDc0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1MzY1MTQ3NCIsCiAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJSRUFERVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgfSwKICAgICJldGFnIjogIkNKSzh3K0x2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL2NvcHkvMTUzMjU0MzA1MzY1MTQ3NC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vY29weS9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1MzY1MTQ3NCIsCiAgICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgImVtYWlsIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJldGFnIjogIkNKSzh3K0x2dXR3Q0VBRT0iCiAgIH0KICBdLAogICJvd25lciI6IHsKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIgogIH0sCiAgImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAgImV0YWciOiAiQ0pLOHcrTHZ1dHdDRUFFPSIKIH0KfQo=" } }, { - "ID": "b6206031b9093a0c", + "ID": "6d1e7aee7e1daa9f", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/rewriteTo/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/rewriteTo/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026projection=full\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -28160,13 +28846,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f1651f9bd821d441c6a6bcc64b333360/11798958750906439609;o=0" + "c0afb1b96b143405b729e0ecd96b5e91/6468761776060079146;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -28175,7 +28861,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/rewriteTo/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo/rewriteTo/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026projection=full\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -28184,20 +28870,22 @@ "Body": "e30K" }, "Response": { - "StatusCode": 400, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ - "13465" + "14417" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:34 GMT" + "Wed, 25 Jul 2018 18:24:13 GMT" ], "Server": [ "UploadServer" @@ -28207,7 +28895,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220534000" + "1532543353000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -28216,16 +28904,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrmm2:4409,/bns/yw/borg/yw/bns/blobstore2/bitpusher/461.scotty,acatli15:443" + "xgiadabj12:4211,/bns/xi/borg/xi/bns/blobstore2/bitpusher/22.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yk41W-aHEMaNhAT3nLboBA" + "eid=TcBYW7P6M824swaRxZCoAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/461.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/22.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -28234,13 +28922,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/461:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/22:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -28255,17 +28943,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UozftxjltFoWyuSg5NaY06tPw1dobK-wKSbgUilnNcesPMhYIp6LQE3Dsg759OBvEdHf2AuisIyVG7U8ArBaFEFmc2ZoVhbifFHRQadOe8GinEicvo" + "AEnB2UrKaX60Ffh5xOc3GnLDhRIx_eLvb6hG-6VGeIK9A5ul0QhYvvGl5hPAqyOAE-MN8nTxP3eB_Rd9dH9cVPTbVbbl8rurqg" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLkZyb250ZW5kUmV3cml0ZUFjdGlvbnMuZ2V0U291cmNlT2JqZWN0KEZyb250ZW5kUmV3cml0ZUFjdGlvbnMuamF2YToxMDkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLkZyb250ZW5kUmV3cml0ZUFjdGlvbnMuZ2V0U291cmNlT2JqZWN0KEZyb250ZW5kUmV3cml0ZUFjdGlvbnMuamF2YToxMDkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMxMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnJld3JpdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyNClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5nZXRTb3VyY2VPYmplY3QoRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdChSZXdyaXRlci5qYXZhOjMyOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QucmV3cml0ZUluRnJvbnRlbmQoUmV3cml0ZU9iamVjdC5qYXZhOjIyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YToyMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6NTIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0Li4uIDE0IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzExKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IucmV3cml0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5Gcm9udGVuZFJld3JpdGVBY3Rpb25zLmdldFNvdXJjZU9iamVjdChGcm9udGVuZFJld3JpdGVBY3Rpb25zLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0KFJld3JpdGVyLmphdmE6MzI4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5yZXdyaXRlSW5Gcm9udGVuZChSZXdyaXRlT2JqZWN0LmphdmE6MjI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjIwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YTo1Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHQuLi4gMTQgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzExKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IucmV3cml0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLkZyb250ZW5kUmV3cml0ZUFjdGlvbnMuZ2V0U291cmNlT2JqZWN0KEZyb250ZW5kUmV3cml0ZUFjdGlvbnMuamF2YToxNDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5nZXRTb3VyY2VPYmplY3QoRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5qYXZhOjE0Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdChSZXdyaXRlci5qYXZhOjMyMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QucmV3cml0ZUluRnJvbnRlbmQoUmV3cml0ZU9iamVjdC5qYXZhOjIyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YToyMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6NTIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0Li4uIDE0IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5nZXRTb3VyY2VPYmplY3QoRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5qYXZhOjE0Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdChSZXdyaXRlci5qYXZhOjMyMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QucmV3cml0ZUluRnJvbnRlbmQoUmV3cml0ZU9iamVjdC5qYXZhOjIyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YToyMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6NTIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0Li4uIDE0IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMxMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnJld3JpdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyNClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5Gcm9udGVuZFJld3JpdGVBY3Rpb25zLmdldFNvdXJjZU9iamVjdChGcm9udGVuZFJld3JpdGVBY3Rpb25zLmphdmE6MTQ3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0KFJld3JpdGVyLmphdmE6MzIzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5yZXdyaXRlSW5Gcm9udGVuZChSZXdyaXRlT2JqZWN0LmphdmE6MjI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjIwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YTo1Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHQuLi4gMTQgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" } }, { - "ID": "ca74f64fd8a64886", + "ID": "ac9a3b3c0947b825", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/rewriteTo/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose/compose?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -28275,7 +28963,7 @@ "REDACTED" ], "Content-Length": [ - "3" + "127" ], "Content-Type": [ "application/json" @@ -28284,13 +28972,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c05f05c656a1b18af417a0fae07befce/13342036189579008729;o=0" + "f83ca7832b4388ae8f0d6d861a168610/14109723793924562247;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -28299,32 +28987,37 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/rewriteTo/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026projection=full\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose/compose?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "e30K" + "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImZvbyJ9LHsibmFtZSI6ImNvcHkifV19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "3764" + "792" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:34 GMT" + "Wed, 25 Jul 2018 18:24:14 GMT" + ], + "Etag": [ + "CLXG+OLvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -28340,25 +29033,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220534000" + "1532543352000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrqi23:4269,/bns/yw/borg/yw/bns/blobstore2/bitpusher/456.scotty,acatli15:443" + "xgiadadk2:4007,/bns/xi/borg/xi/bns/blobstore2/bitpusher/110.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yk41W_b-GcSGhAS92oPIAw" + "eid=TsBYW70bqL2zBsDWtcgK" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/456.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/110.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -28367,13 +29060,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/456:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/110:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -28388,17 +29081,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrUoZe9KqVQdKaP-g1668bTKPxW2PfRGRRFpChF7xUSZvoxYkYDpZPpAW5D-T-znFmBr2oJAe8uVJRUA91fBWgupW0wyLMCFzGtIR4gr089Vvdmhx8" + "AEnB2UrTW24PnVSUbcQ_t-ZYqWNVDtORVWGzcZFT7jfgKgB1gaYMMua1ZaOy8KNKmooC2ONEeWMXn2_v1TLcbBthPHyfU2R9tQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiNSIsCiAib2JqZWN0U2l6ZSI6ICI1IiwKICJkb25lIjogdHJ1ZSwKICJyZXNvdXJjZSI6IHsKICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9jb3B5LzE1MzAyMjAyMzQ1NDUxNzAiLAogICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vY29weSIsCiAgIm5hbWUiOiAiY29weSIsCiAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzQ1NDUxNzAiLAogICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MzQuNTQ0WiIsCiAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozNC41NDRaIiwKICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozNC41NDRaIiwKICAic2l6ZSI6ICI1IiwKICAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHk/Z2VuZXJhdGlvbj0xNTMwMjIwMjM0NTQ1MTcwJmFsdD1tZWRpYSIsCiAgImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICJhY2wiOiBbCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2NvcHkvMTUzMDIyMDIzNDU0NTE3MC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyIiwKICAgICJvYmplY3QiOiAiY29weSIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjM0NTQ1MTcwIiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJvd25lcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0pLd2lNeWk5OXNDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvY29weS8xNTMwMjIwMjM0NTQ1MTcwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHkvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNDU0NTE3MCIsCiAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0pLd2lNeWk5OXNDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvY29weS8xNTMwMjIwMjM0NTQ1MTcwL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2NvcHkvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNDU0NTE3MCIsCiAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJSRUFERVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgfSwKICAgICJldGFnIjogIkNKS3dpTXlpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL2NvcHkvMTUzMDIyMDIzNDU0NTE3MC91c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vY29weS9hY2wvdXNlci1pbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICAib2JqZWN0IjogImNvcHkiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNDU0NTE3MCIsCiAgICAiZW50aXR5IjogInVzZXItaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgImVtYWlsIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJldGFnIjogIkNKS3dpTXlpOTlzQ0VBRT0iCiAgIH0KICBdLAogICJvd25lciI6IHsKICAgImVudGl0eSI6ICJ1c2VyLWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIgogIH0sCiAgImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAgImV0YWciOiAiQ0pLd2lNeWk5OXNDRUFFPSIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9jb21wb3NlLzE1MzI1NDMwNTQ1MjExNDEiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9jb21wb3NlIiwKICJuYW1lIjogImNvbXBvc2UiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1NDUyMTE0MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxNC41MjBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MTQuNTIwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjE0LjUyMFoiLAogInNpemUiOiAiMTAiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vY29tcG9zZT9nZW5lcmF0aW9uPTE1MzI1NDMwNTQ1MjExNDEmYWx0PW1lZGlhIiwKICJjcmMzMmMiOiAiL1JDT2dnPT0iLAogImNvbXBvbmVudENvdW50IjogMiwKICJldGFnIjogIkNMWEcrT0x2dXR3Q0VBRT0iCn0K" } }, { - "ID": "365b63c8d9880a1e", + "ID": "c47cd24c460332cc", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/rewriteTo/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026projection=full\u0026userProject=veener-jba", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose/compose?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -28408,7 +29101,7 @@ "REDACTED" ], "Content-Length": [ - "3" + "127" ], "Content-Type": [ "application/json" @@ -28417,13 +29110,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "be09dc9b1419febf621bd79059f1b3e4/14957171222272794104;o=0" + "1695aa492711cdf66132df7670129368/3304224312551120483;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -28432,29 +29125,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo/rewriteTo/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026projection=full\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose/compose?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "e30K" + "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImZvbyJ9LHsibmFtZSI6ImNvcHkifV19Cg==" }, "Response": { - "StatusCode": 403, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "14417" + "792" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:35 GMT" + "Wed, 25 Jul 2018 18:24:15 GMT" + ], + "Etag": [ + "CMbdnuPvutwCEAE=" + ], + "Expires": [ + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -28464,25 +29171,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220534000" + "1532543352000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrbj65:4346,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "xiiadcbz6:4375,/bns/xi/borg/xi/bns/blobstore2/bitpusher/127.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=yk41W5TnL8PdhQTRkIzQBQ" + "eid=TsBYW83ALsu8swbztoroAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/127.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -28491,13 +29198,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/178:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/127:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -28506,23 +29213,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UorBgrs1e8_luDHyRcoSgZKvuyOkUFJqdVH0NCFBOVfZGNAJnH-zGadT9y5NwWC-zJk1RgJebuCVCtZZShGX5PHPxAsD3_N5n0ywiXYEv-7P_Gy9Zs" + "AEnB2Uq94wooWvDGiAcNecqebZ-cqoKxYhgLbobV3Ml-eqXObVm9SWbXgZgZPKfO08oomPsa1QbGYhEj24duCct9ZrIo2ax4-w" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzExKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IucmV3cml0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLkZyb250ZW5kUmV3cml0ZUFjdGlvbnMuZ2V0U291cmNlT2JqZWN0KEZyb250ZW5kUmV3cml0ZUFjdGlvbnMuamF2YToxMDkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLnJld3JpdGVyLlJld3JpdGVyLnJld3JpdGVPYmplY3QoUmV3cml0ZXIuamF2YTozMjgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LnJld3JpdGVJbkZyb250ZW5kKFJld3JpdGVPYmplY3QuamF2YToyMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6MjA2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjUyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdC4uLiAxNCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5nZXRTb3VyY2VPYmplY3QoRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdChSZXdyaXRlci5qYXZhOjMyOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QucmV3cml0ZUluRnJvbnRlbmQoUmV3cml0ZU9iamVjdC5qYXZhOjIyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YToyMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6NTIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0Li4uIDE0IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMTEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5yZXdyaXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5nZXRTb3VyY2VPYmplY3QoRnJvbnRlbmRSZXdyaXRlQWN0aW9ucy5qYXZhOjEwOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24ucmV3cml0ZXIuUmV3cml0ZXIucmV3cml0ZU9iamVjdChSZXdyaXRlci5qYXZhOjMyOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QucmV3cml0ZUluRnJvbnRlbmQoUmV3cml0ZU9iamVjdC5qYXZhOjIyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YToyMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5SZXdyaXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChSZXdyaXRlT2JqZWN0LmphdmE6NTIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0Li4uIDE0IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMxMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLnJld3JpdGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyNClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5Gcm9udGVuZFJld3JpdGVBY3Rpb25zLmdldFNvdXJjZU9iamVjdChGcm9udGVuZFJld3JpdGVBY3Rpb25zLmphdmE6MTA5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5yZXdyaXRlci5SZXdyaXRlci5yZXdyaXRlT2JqZWN0KFJld3JpdGVyLmphdmE6MzI4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5yZXdyaXRlSW5Gcm9udGVuZChSZXdyaXRlT2JqZWN0LmphdmE6MjI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuUmV3cml0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoUmV3cml0ZU9iamVjdC5qYXZhOjIwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLlJld3JpdGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFJld3JpdGVPYmplY3QuamF2YTo1Milcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHQuLi4gMTQgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9jb21wb3NlLzE1MzI1NDMwNTUxNDY2OTQiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9jb21wb3NlIiwKICJuYW1lIjogImNvbXBvc2UiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1NTE0NjY5NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxNS4xNDZaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MTUuMTQ2WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjE1LjE0NloiLAogInNpemUiOiAiMTAiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vY29tcG9zZT9nZW5lcmF0aW9uPTE1MzI1NDMwNTUxNDY2OTQmYWx0PW1lZGlhIiwKICJjcmMzMmMiOiAiL1JDT2dnPT0iLAogImNvbXBvbmVudENvdW50IjogMiwKICJldGFnIjogIkNNYmRudVB2dXR3Q0VBRT0iCn0K" } }, { - "ID": "465270522ee5c580", + "ID": "7943d4a62df7055b", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose/compose?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose/compose?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -28541,13 +29248,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "7330501283e8092f2ba79bb3d8ffd047/16572305151176761368;o=0" + "ba8c8a7a3e92dd92664d3db84571dda5/10944905959228710784;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -28556,41 +29263,31 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose/compose?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose/compose?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImZvbyJ9LHsibmFtZSI6ImNvcHkifV19Cg==" + "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImZvbyJ9LHsibmFtZSI6ImNvcHkifV19Cg==" }, "Response": { - "StatusCode": 200, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ - "792" + "12553" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:35 GMT" - ], - "Etag": [ - "CMi4ucyi99sCEAE=" - ], - "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:15 GMT" ], "Server": [ "UploadServer" @@ -28600,25 +29297,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220533000" + "1532543353000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrae2:4360,/bns/yw/borg/yw/bns/blobstore2/bitpusher/197.scotty,acatli15:443" + "xgiadaai14:4184,/bns/xi/borg/xi/bns/blobstore2/bitpusher/16.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=y041W_yTAobRhQSY0oKoCQ" + "eid=T8BYW7mgD4-wswbzhrDoBw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/197.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/16.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -28627,13 +29324,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/197:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/16:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -28642,23 +29339,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UrfMxz_RCoMQ7S-kGhUs8-4CrBIwi2lTuJ67XKbCpCdJNcB8PDgV_8Akknij5sc6iULpMnNXF_zjVNPdnA5k_ncGEIxkhE0PVk1E_huxBmBnvI4Wtg" + "AEnB2UrcMBdPlipnVdHzyMio_q3Vr_lCFR9zkAN3vJARKKAfXdwcdKEA34r140Z1PyDmXF9uhFArTyI0fRaukvdEzo-RHdkP8g" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9jb21wb3NlLzE1MzAyMjAyMzUzNDkwNjQiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9jb21wb3NlIiwKICJuYW1lIjogImNvbXBvc2UiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNTM0OTA2NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozNS4zNDhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MzUuMzQ4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjM1LjM0OFoiLAogInNpemUiOiAiMTAiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vY29tcG9zZT9nZW5lcmF0aW9uPTE1MzAyMjAyMzUzNDkwNjQmYWx0PW1lZGlhIiwKICJjcmMzMmMiOiAiL1JDT2dnPT0iLAogImNvbXBvbmVudENvdW50IjogMiwKICJldGFnIjogIkNNaTR1Y3lpOTlzQ0VBRT0iCn0K" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjIwMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YTo0Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuY29tcG9zZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6MjAwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjQ3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5jb21wb3NlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" } }, { - "ID": "94059bcaf9c79866", + "ID": "5e048e77292ce730", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose/compose?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose/compose?alt=json\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -28677,13 +29374,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "251a80ef626fb5d5921e5bcee7033b80/18115382589849396023;o=0" + "8e687cedf9e2c59cf632f3c3aad57b5e/139405382655320220;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -28692,20 +29389,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose/compose?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose/compose?alt=json\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImZvbyJ9LHsibmFtZSI6ImNvcHkifV19Cg==" + "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImZvbyJ9LHsibmFtZSI6ImNvcHkifV19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -28717,10 +29416,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:35 GMT" + "Wed, 25 Jul 2018 18:24:15 GMT" ], "Etag": [ - "CNuC2Myi99sCEAE=" + "CKL7tePvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -28736,25 +29435,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220533000" + "1532543353000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrqq22:4024,/bns/yw/borg/yw/bns/blobstore2/bitpusher/450.scotty,acatli15:443" + "xgiadaar8:4444,/bns/xi/borg/xi/bns/blobstore2/bitpusher/103.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=y041W5jAHMSIN-P5taAD" + "eid=T8BYW9v8GO60swb07ZvYDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/450.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/103.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -28763,13 +29462,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/450:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/103:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -28784,17 +29483,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoQBr05iXRkcG0vfErkas0-U0dS7lPyRoIrHWEetI5OWSw6RbWsKftZz41eDxhuzGJ6P2B9bgOcW3hzLUY1mNhEzu69gcxrBs1VZoOH2cqaD-40CZQ" + "AEnB2UpFaR9oavJ8LTEeltNRuvjfENfgA1IrTthTpvoWmS1PrUDOO-MSY0AYJvrAaSyMexJfiyvmy1CKW9LidAVNQxnJJhYY3Q" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9jb21wb3NlLzE1MzAyMjAyMzU4NTAwNzUiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9jb21wb3NlIiwKICJuYW1lIjogImNvbXBvc2UiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNTg1MDA3NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozNS44NDlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MzUuODQ5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjM1Ljg0OVoiLAogInNpemUiOiAiMTAiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vY29tcG9zZT9nZW5lcmF0aW9uPTE1MzAyMjAyMzU4NTAwNzUmYWx0PW1lZGlhIiwKICJjcmMzMmMiOiAiL1JDT2dnPT0iLAogImNvbXBvbmVudENvdW50IjogMiwKICJldGFnIjogIkNOdUMyTXlpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9jb21wb3NlLzE1MzI1NDMwNTU1MjczMzAiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvby9jb21wb3NlIiwKICJuYW1lIjogImNvbXBvc2UiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1NTUyNzMzMCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxNS41MjZaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MTUuNTI2WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjE1LjUyNloiLAogInNpemUiOiAiMTAiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vY29tcG9zZT9nZW5lcmF0aW9uPTE1MzI1NDMwNTU1MjczMzAmYWx0PW1lZGlhIiwKICJjcmMzMmMiOiAiL1JDT2dnPT0iLAogImNvbXBvbmVudENvdW50IjogMiwKICJldGFnIjogIkNLTDd0ZVB2dXR3Q0VBRT0iCn0K" } }, { - "ID": "ef1878d77aae18e2", + "ID": "9ce6185bf69f5ce5", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose/compose?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose/compose?alt=json\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -28813,13 +29512,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "201ff419961c9f4391a9220a611b7a8a/1284053924315424343;o=0" + "d5eb6bf309da2537bfadb3b4afe1a195/7780368499997876921;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -28828,29 +29527,31 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose/compose?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose/compose?alt=json\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImZvbyJ9LHsibmFtZSI6ImNvcHkifV19Cg==" + "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImZvbyJ9LHsibmFtZSI6ImNvcHkifV19Cg==" }, "Response": { - "StatusCode": 400, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ - "12553" + "13505" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:16 GMT" ], "Server": [ "UploadServer" @@ -28860,7 +29561,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220534000" + "1532543353000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -28869,16 +29570,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrks2:4084,/bns/yw/borg/yw/bns/blobstore2/bitpusher/355.scotty,acatli15:443" + "xiiadccc1:4324,/bns/xi/borg/xi/bns/blobstore2/bitpusher/3.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=y041W4CXO4uDhASy3KG4CA" + "eid=T8BYW_j_LqKFygOmqoPoBA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/355.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/3.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -28887,13 +29588,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/355:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/3:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -28908,17 +29609,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqZpEkWwotz5OBvqhZOCW9rgQ-PqDxL5l9TrJZ4j-1_lAIXg3AXFsAj4oQtqkP1NPWykdQIZkdwhQ4PjJYbPMIpaT-Mv4CpuPShK_vV8fg3zdJ7FWQ" + "AEnB2UpCPBirMfvVf-gNM9AblMh5FXVK9TtWz9LXHuIZNs75_TXQjQdaeUbikpmW5u4BN1EVTrEoFAV1dCJFr0OJK0nkF4jTew" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjIwMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YTo0Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuY29tcG9zZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6MjAwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjQ3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5jb21wb3NlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6MjAwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjQ3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5jb21wb3NlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjIwMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YTo0Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuY29tcG9zZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" } }, { - "ID": "85d81132d4d39647", + "ID": "15debde7c8cac885", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose/compose?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -28927,23 +29628,20 @@ "Authorization": [ "REDACTED" ], - "Content-Length": [ - "127" - ], "Content-Type": [ - "application/json" + "multipart/related; boundary=008eb2bc6eeb5bf7d7cba62171bcbb4ef8514ca1fb6da098f9809215a455" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "4801b91349315d35c9089e135413e1d8/2827132462482909558;o=0" + "1859bee56f9a897a0270a243cef68695/11564961445121385031;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -28952,35 +29650,37 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose/compose?alt=json\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImZvbyJ9LHsibmFtZSI6ImNvcHkifV19Cg==" + "Body": "LS0wMDhlYjJiYzZlZWI1YmY3ZDdjYmE2MjE3MWJjYmI0ZWY4NTE0Y2ExZmI2ZGEwOThmOTgwOTIxNWE0NTUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsIm5hbWUiOiJmb28ifQoNCi0tMDA4ZWIyYmM2ZWViNWJmN2Q3Y2JhNjIxNzFiY2JiNGVmODUxNGNhMWZiNmRhMDk4Zjk4MDkyMTVhNDU1DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG8NCi0tMDA4ZWIyYmM2ZWViNWJmN2Q3Y2JhNjIxNzFiY2JiNGVmODUxNGNhMWZiNmRhMDk4Zjk4MDkyMTVhNDU1LS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "792" + "3544" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:16 GMT" ], "Etag": [ - "CND/78yi99sCEAE=" + "CISz6OPvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -28996,25 +29696,28 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220534000" + "1532543330000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrkx5:4437,/bns/yw/borg/yw/bns/blobstore2/bitpusher/357.scotty,acatli15:443" + "xgiadaab3:4050,/bns/xi/borg/xi/bns/blobstore2/bitpusher/56.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=zE41W_L5B8rIhgS6grugDA" + "eid=UMBYW_93rbKzBoKsncgE" + ], + "X-Google-Gfe-Cloud-Project-Number": [ + "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/357.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/56.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -29023,19 +29726,19 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/357:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/56:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" ], "X-Guploader-Customer": [ - "apiary_cloudstorage_metadata" + "apiary_cloudstorage_single_post_uploads" ], "X-Guploader-Request-Result": [ "success" @@ -29044,17 +29747,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoAmuSd3zjt7Ha_MUONBGHNBdxCRGueZLLZbXOIbmYGineICy0eSq8j5eX8rY56fvFaZwtNj9kmA7gJDELmzXEYxHpgFmWiSaSiCZR3WABRXlD4OAg" + "AEnB2Uo4NJj__roCXg1rkrf9C_WBvMbhChyrJwBR_6uiF8m209gbGSR4XCMLbg2RKj6lBkl4K5GkK02kgj1aGSU_VpduF-jTJA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9jb21wb3NlLzE1MzAyMjAyMzYyNDI4OTYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvby9jb21wb3NlIiwKICJuYW1lIjogImNvbXBvc2UiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNjI0Mjg5NiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozNi4yNDJaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MzYuMjQyWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjM2LjI0MloiLAogInNpemUiOiAiMTAiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vY29tcG9zZT9nZW5lcmF0aW9uPTE1MzAyMjAyMzYyNDI4OTYmYWx0PW1lZGlhIiwKICJjcmMzMmMiOiAiL1JDT2dnPT0iLAogImNvbXBvbmVudENvdW50IjogMiwKICJldGFnIjogIkNORC83OHlpOTlzQ0VBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1NjM1MzY2OCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1NjM1MzY2OCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxNi4zNTNaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MTYuMzUzWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjE2LjM1M1oiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzA1NjM1MzY2OCZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwNTYzNTM2NjgvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1NjM1MzY2OCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0lTejZPUHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1NjM1MzY2OC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTYzNTM2NjgiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0lTejZPUHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1NjM1MzY2OC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTYzNTM2NjgiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNJU3o2T1B2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwNTYzNTM2NjgvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTYzNTM2NjgiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNJU3o2T1B2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDSVN6Nk9QdnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "dc740ade03352fae", + "ID": "c2acb9dbe5fa073d", "Request": { - "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose/compose?alt=json\u0026userProject=veener-jba", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -29063,23 +29766,17 @@ "Authorization": [ "REDACTED" ], - "Content-Length": [ - "127" - ], - "Content-Type": [ - "application/json" - ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "4165f243395521e58cb71687b04df475/4441984920705133718;o=0" + "69a22c35f5e6d49b564427b82119f32c/15349274023336125397;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -29088,29 +29785,40 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose/compose?alt=json\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6ImZvbyJ9LHsibmFtZSI6ImNvcHkifV19Cg==" + "Body": "" }, "Response": { - "StatusCode": 403, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "13505" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:36 GMT" + "Wed, 25 Jul 2018 18:24:16 GMT" + ], + "Expires": [ + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -29120,25 +29828,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220534000" + "1532543330000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrav7:4461,/bns/yw/borg/yw/bns/blobstore2/bitpusher/502.scotty,acatli15:443" + "xgiadabr1:4172,/bns/xi/borg/xi/bns/blobstore2/bitpusher/99.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=zE41W5WZHYf0N5mFp7gP" + "eid=UMBYW5_bHOu4swbCgq_QBw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/502.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/99.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -29147,13 +29855,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/502:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/99:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpCChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -29162,23 +29870,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqaohdLyAm4kT4LlcEJq0mBHlZMqRuabTaDYlovKgp7ZFGIYd3e0WC9jIC_ypHR3qksvE5MpLYCvGWMlj2zWpjKo1AC7zcV7c84T42CTntrwQPCeTY" + "AEnB2UrX4m8D-4A6whAVBy6HcDlDoWXjpWWB9mjI-R9lgmGKt_bUhIkkSsy0A6q3XYFq_4oQsJoLLZ6_MUt06wgrKmPNthikSw" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6MjAwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjQ3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5jb21wb3NlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YToyMDApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5Db21wb3NlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChDb21wb3NlT2JqZWN0LmphdmE6NDcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmNvbXBvc2UoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjEyOSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuQ29tcG9zZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoQ29tcG9zZU9iamVjdC5qYXZhOjIwMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkNvbXBvc2VPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKENvbXBvc2VPYmplY3QuamF2YTo0Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuY29tcG9zZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTI5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" + "Body": "" } }, { - "ID": "026167780e8689fa", + "ID": "0cbce451ebd2db31", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -29188,19 +29896,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=28995b27690fd982f961e9a7a573f73f7ce2f22e68534ed4b48a92db240c" + "multipart/related; boundary=bde6c1612d9fd5ae9d6dd732749f3958478381faf3f17783756211f4f64f" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "40b7c6eb2ba09149588c3d209a1f99dc/5249692072906403238;o=0" + "ec287cd47b8881880f9d7dc83bac96e7/759180497361101667;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -29209,20 +29917,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0yODk5NWIyNzY5MGZkOTgyZjk2MWU5YTdhNTczZjczZjdjZTJmMjJlNjg1MzRlZDRiNDhhOTJkYjI0MGMNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsIm5hbWUiOiJmb28ifQoNCi0tMjg5OTViMjc2OTBmZDk4MmY5NjFlOWE3YTU3M2Y3M2Y3Y2UyZjIyZTY4NTM0ZWQ0YjQ4YTkyZGIyNDBjDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG8NCi0tMjg5OTViMjc2OTBmZDk4MmY5NjFlOWE3YTU3M2Y3M2Y3Y2UyZjIyZTY4NTM0ZWQ0YjQ4YTkyZGIyNDBjLS0NCg==" + "Body": "LS1iZGU2YzE2MTJkOWZkNWFlOWQ2ZGQ3MzI3NDlmMzk1ODQ3ODM4MWZhZjNmMTc3ODM3NTYyMTFmNGY2NGYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsIm5hbWUiOiJmb28ifQoNCi0tYmRlNmMxNjEyZDlmZDVhZTlkNmRkNzMyNzQ5ZjM5NTg0NzgzODFmYWYzZjE3NzgzNzU2MjExZjRmNjRmDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG8NCi0tYmRlNmMxNjEyZDlmZDVhZTlkNmRkNzMyNzQ5ZjM5NTg0NzgzODFmYWYzZjE3NzgzNzU2MjExZjRmNjRmLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -29234,10 +29944,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:37 GMT" + "Wed, 25 Jul 2018 18:24:17 GMT" ], "Etag": [ - "CMW3oc2i99sCEAE=" + "CIXhmOTvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -29253,7 +29963,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220536000" + "1532543330000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -29262,19 +29972,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrbq65:4491,/bns/yw/borg/yw/bns/blobstore2/bitpusher/111.scotty,acatli15:443" + "xgiadaai14:4184,/bns/xi/borg/xi/bns/blobstore2/bitpusher/59.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=zE41W4_ALI7ShASVqYPICg" + "eid=UMBYW6mpMtCzswaRnZSgCA" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/111.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/59.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -29283,13 +29993,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/111:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/59:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -29304,17 +30014,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpPPJgdWUZb5UTTVCL3wqQcx8AsAVSJmcCdyEjQB__DKlhKM4Cr3McDYD0olf1UWx-x1fNmqjs07bApiBXgHXw61QDv_u244h_BoGBZRLUMJf9tXTs" + "AEnB2UqIEjep3TBSw7voUEGwh1L1AwP-FFI1tZFvYRs2BNufh94tYfsBFaHh6sbWn4ldMuvwCkH-7qiaB41sJZib7QHniBJwRQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzNzA1Mjg2OSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNzA1Mjg2OSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozNy4wNTJaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MzcuMDUyWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjM3LjA1MloiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIzNzA1Mjg2OSZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMzcwNTI4NjkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNzA1Mjg2OSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ01XM29jMmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzNzA1Mjg2OS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzcwNTI4NjkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ01XM29jMmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzNzA1Mjg2OS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzcwNTI4NjkiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNNVzNvYzJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMzcwNTI4NjkvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzcwNTI4NjkiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNNVzNvYzJpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDTVczb2MyaTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1NzE0NTk4OSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1NzE0NTk4OSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxNy4xNDVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MTcuMTQ1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjE3LjE0NVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzA1NzE0NTk4OSZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwNTcxNDU5ODkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1NzE0NTk4OSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0lYaG1PVHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1NzE0NTk4OS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTcxNDU5ODkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0lYaG1PVHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1NzE0NTk4OS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTcxNDU5ODkiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNJWGhtT1R2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwNTcxNDU5ODkvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTcxNDU5ODkiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNJWGhtT1R2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDSVhobU9UdnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "bc6392ccecc93e3b", + "ID": "c61b873d27ccf2db", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -29327,13 +30037,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c34f4f87d73e13464b179e952ad69517/5985062359377768373;o=0" + "e36222c97d2f642918ddc9fa4dd2d1c6/4543774541962618098;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -29342,7 +30052,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -29353,9 +30063,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -29367,7 +30079,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:37 GMT" + "Wed, 25 Jul 2018 18:24:17 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -29383,7 +30095,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220536000" + "1532543330000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -29392,16 +30104,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrls9:4389,/bns/yw/borg/yw/bns/blobstore2/bitpusher/221.scotty,acatli15:443" + "xgiadaat15:4084,/bns/xi/borg/xi/bns/blobstore2/bitpusher/121.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=zU41W9q9CsLxhATkzq7YCQ" + "eid=UcBYW6jFD8KFygPBwIT4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/221.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/121.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -29410,13 +30122,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/221:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/121:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -29431,17 +30143,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpSepvdmJ1LYIg5GyhYNH88jPho5IJXLl6t89wHNn2BU_uvtAonACCltjMqZPiV8z58BHiqQk7GP6krZJcREOgVIQpMgQu__LgMqJMRBiNjOre1peY" + "AEnB2UrP9zw0ZMPafIseXO6DfoMrPJYwFtAuq_P9UsunmDLQXTcsAyp5PrFoYpr4EgkwLqsRXbf4ptSv0qAEmV9hNkH89VsB9w" ] }, "Body": "" } }, { - "ID": "0845018c54a970e4", + "ID": "1efcbaee91c3f290", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -29451,19 +30163,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=1b87bca80949ce78926ed126d633f3515e72f7965135faa49447acc18001" + "multipart/related; boundary=19875f2a1947ab00591bba7e9ea921186d18c0978fefa6f9385eb438a271" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "2a015f40a5bf34068f2355f3f7484db8/6792770611073888453;o=0" + "b154e41e55daa83a3f6bdbf7eae46896/8400142515225584768;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -29472,20 +30184,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0xYjg3YmNhODA5NDljZTc4OTI2ZWQxMjZkNjMzZjM1MTVlNzJmNzk2NTEzNWZhYTQ5NDQ3YWNjMTgwMDENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsIm5hbWUiOiJmb28ifQoNCi0tMWI4N2JjYTgwOTQ5Y2U3ODkyNmVkMTI2ZDYzM2YzNTE1ZTcyZjc5NjUxMzVmYWE0OTQ0N2FjYzE4MDAxDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG8NCi0tMWI4N2JjYTgwOTQ5Y2U3ODkyNmVkMTI2ZDYzM2YzNTE1ZTcyZjc5NjUxMzVmYWE0OTQ0N2FjYzE4MDAxLS0NCg==" + "Body": "LS0xOTg3NWYyYTE5NDdhYjAwNTkxYmJhN2U5ZWE5MjExODZkMThjMDk3OGZlZmE2ZjkzODVlYjQzOGEyNzENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsIm5hbWUiOiJmb28ifQoNCi0tMTk4NzVmMmExOTQ3YWIwMDU5MWJiYTdlOWVhOTIxMTg2ZDE4YzA5NzhmZWZhNmY5Mzg1ZWI0MzhhMjcxDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG8NCi0tMTk4NzVmMmExOTQ3YWIwMDU5MWJiYTdlOWVhOTIxMTg2ZDE4YzA5NzhmZWZhNmY5Mzg1ZWI0MzhhMjcxLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -29497,10 +30211,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:37 GMT" + "Wed, 25 Jul 2018 18:24:17 GMT" ], "Etag": [ - "CInQ0M2i99sCEAE=" + "CNeRw+TvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -29516,7 +30230,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220536000" + "1532543330000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -29525,19 +30239,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrmv23:4472,/bns/yw/borg/yw/bns/blobstore2/bitpusher/157.scotty,acatli15:443" + "xgiadaao15:4469,/bns/xi/borg/xi/bns/blobstore2/bitpusher/134.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=zU41W9nBIIaIN5_KqfgH" + "eid=UcBYW4DuH8q9swamsaLwAg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/157.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/134.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -29546,13 +30260,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/157:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/134:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -29567,17 +30281,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpNX0dD7zhg6HA9uh0PGTufe9EoRW1HxPo_HJOinkT8gqAIjqNKFqswEMI92l5iaePioK-BFenArQwrhPo75LBJjr6uiNKvd1xDzcWrWA8zh1Hy5BU" + "AEnB2Uo0qHhY0wFfyqUAonUlPCHmlD1SHLZfFUWC3xahUU7nkXL8LZR8Yc-KesjtDiGp1GsJPBEG3yJ450Rab222ED4ll9fAJg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzNzgyNjA1NyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNzgyNjA1NyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozNy44MjVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MzcuODI1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjM3LjgyNVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIzNzgyNjA1NyZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMzc4MjYwNTcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzNzgyNjA1NyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0luUTBNMmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzNzgyNjA1Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzc4MjYwNTciLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0luUTBNMmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzNzgyNjA1Ny9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzc4MjYwNTciLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNJblEwTTJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMzc4MjYwNTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzc4MjYwNTciLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNJblEwTTJpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDSW5RME0yaTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1Nzg0MDM0MyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1Nzg0MDM0MyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxNy44NDBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MTcuODQwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjE3Ljg0MFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzA1Nzg0MDM0MyZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwNTc4NDAzNDMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1Nzg0MDM0MyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ05lUncrVHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1Nzg0MDM0My9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTc4NDAzNDMiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ05lUncrVHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1Nzg0MDM0My9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTc4NDAzNDMiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNOZVJ3K1R2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwNTc4NDAzNDMvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTc4NDAzNDMiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNOZVJ3K1R2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDTmVSdytUdnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "dcb772567c2b4831", + "ID": "34830018d66ef52b", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -29590,13 +30304,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d994ee0fdddfcb6315228a4ace29c710/7600196292576637653;o=0" + "fd89c1ae3abc08f39bb03b1badec7bfe/12184736564122068238;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -29605,7 +30319,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -29614,29 +30328,28 @@ "Body": "" }, "Response": { - "StatusCode": 204, + "StatusCode": 400, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0" ], "Content-Length": [ - "0" + "12529" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:38 GMT" + "Wed, 25 Jul 2018 18:24:18 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:18 GMT" ], "Server": [ "UploadServer" @@ -29646,25 +30359,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543334000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ - "998958384336" + "471383502717" ], "X-Google-Backends": [ - "vrbv13:4457,/bns/yw/borg/yw/bns/blobstore2/bitpusher/635.scotty,acatli15:443" + "xiiadcca7:4401,/bns/xi/borg/xi/bns/blobstore2/bitpusher/50.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=zU41W9TwOcPrhAT61qjACQ" + "eid=UcBYW9ilOcKwswbo-qroCQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/635.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/50.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -29673,13 +30386,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/635:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/50:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -29688,23 +30401,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UpAtemcgY9wZzSJtdSShEnXPTRdw1nj-UvXsWfFCTHq_jgB_GngioPrI7SUs1QVp4rUIcTcDSxAuRGRYt9CanciFC5qwVodqfwqpKIszbrcja0y_DQ" + "AEnB2UoW3uBPO8ytkFF6mIcseEIwDnxexpiD3NjebFgC7_3LlIXGAvDTgcCqK9cRmbCF95j4GdrqY2SKx5XwEmQHTyGkPYWcKw" ] }, - "Body": "" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YTo4NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6MjcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmRlbGV0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTEzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" } }, { - "ID": "ff711c00b4b61602", + "ID": "6f769db46afd9819", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -29714,19 +30427,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=71e658c7978d5cfe2ee8761febdbe343541afb809d22e1bf499cccb1e06a" + "multipart/related; boundary=839e5a22f123eb26a6c203321ec720ffbd6e50572bd4d5ffb7d9654931b6" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b207047b26d9bbd11eb7bfbce0d098ba/8407904544272757733;o=0" + "a3e9776c290180536d4304a61917a0e9/16041105632584983964;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -29735,20 +30448,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS03MWU2NThjNzk3OGQ1Y2ZlMmVlODc2MWZlYmRiZTM0MzU0MWFmYjgwOWQyMmUxYmY0OTljY2NiMWUwNmENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsIm5hbWUiOiJmb28ifQoNCi0tNzFlNjU4Yzc5NzhkNWNmZTJlZTg3NjFmZWJkYmUzNDM1NDFhZmI4MDlkMjJlMWJmNDk5Y2NjYjFlMDZhDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG8NCi0tNzFlNjU4Yzc5NzhkNWNmZTJlZTg3NjFmZWJkYmUzNDM1NDFhZmI4MDlkMjJlMWJmNDk5Y2NjYjFlMDZhLS0NCg==" + "Body": "LS04MzllNWEyMmYxMjNlYjI2YTZjMjAzMzIxZWM3MjBmZmJkNmU1MDU3MmJkNGQ1ZmZiN2Q5NjU0OTMxYjYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsIm5hbWUiOiJmb28ifQoNCi0tODM5ZTVhMjJmMTIzZWIyNmE2YzIwMzMyMWVjNzIwZmZiZDZlNTA1NzJiZDRkNWZmYjdkOTY1NDkzMWI2DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG8NCi0tODM5ZTVhMjJmMTIzZWIyNmE2YzIwMzMyMWVjNzIwZmZiZDZlNTA1NzJiZDRkNWZmYjdkOTY1NDkzMWI2LS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -29760,10 +30475,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:38 GMT" + "Wed, 25 Jul 2018 18:24:18 GMT" ], "Etag": [ - "CP2D/M2i99sCEAE=" + "CJfu5+TvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -29779,7 +30494,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543358000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -29788,19 +30503,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrgm184:4086,/bns/yw/borg/yw/bns/blobstore2/bitpusher/608.scotty,acatli15:443" + "xhiadbab3:4111,/bns/xi/borg/xi/bns/blobstore2/bitpusher/80.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=zk41W7yHDoPThQS6q4CABQ" + "eid=UsBYW8yaBuyyswbR54r4Ag" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/608.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/80.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -29809,13 +30524,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/608:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/80:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -29830,17 +30545,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpaJ15u7kWX_7iHK-rodjJ_6Xj-0L3e0E9DZIW-lXht9X85llaxg61iMXJ-nZqWwG7ECiQUjZ-FkhS3xjFGERFh96mNh00-DL9CHIHqsRai_cmnl94" + "AEnB2Urx3_KGXnGjW7mk95RdQgUWeX9pNW-6YCksE1ydc4pu3vqfvXosyJ9DOiLgNNgTe2shKS1SDY1Pjm2pMpJ9qjivxE2wYw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzODUzNzIxMyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzODUzNzIxMyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozOC41MzZaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MzguNTM2WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjM4LjUzNloiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIzODUzNzIxMyZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMzg1MzcyMTMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzODUzNzIxMyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ1AyRC9NMmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzODUzNzIxMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzg1MzcyMTMiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ1AyRC9NMmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzODUzNzIxMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzg1MzcyMTMiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNQMkQvTTJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMzg1MzcyMTMvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzg1MzcyMTMiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNQMkQvTTJpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDUDJEL00yaTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1ODQ0MjAwNyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1ODQ0MjAwNyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxOC40NDFaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MTguNDQxWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjE4LjQ0MVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzA1ODQ0MjAwNyZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwNTg0NDIwMDcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1ODQ0MjAwNyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0pmdTUrVHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1ODQ0MjAwNy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTg0NDIwMDciLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0pmdTUrVHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1ODQ0MjAwNy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTg0NDIwMDciLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNKZnU1K1R2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwNTg0NDIwMDcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTg0NDIwMDciLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNKZnU1K1R2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDSmZ1NStUdnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "43db79285150c284", + "ID": "b94ea2e42fa9f139", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026userProject=gcloud-golang-firestore-tests", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -29853,13 +30568,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "31f716b5ea3493ad5e75ef4bb2b2c5e8/9215330225775572468;o=0" + "12e41a1156db46fe3dc788ff0e6127e0/1378955612066817579;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -29868,7 +30583,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026userProject=gcloud-golang-firestore-tests" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -29877,26 +30592,31 @@ "Body": "" }, "Response": { - "StatusCode": 400, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "12529" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:38 GMT" + "Wed, 25 Jul 2018 18:24:18 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:38 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -29906,7 +30626,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220538000" + "1532543334000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -29915,16 +30635,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrcw62:4262,/bns/yw/borg/yw/bns/blobstore2/bitpusher/303.scotty,acatli15:443" + "xgiadaap16:4483,/bns/xi/borg/xi/bns/blobstore2/bitpusher/11.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=zk41W_LgJ4n2hASxs6mIBQ" + "eid=UsBYW5HNIZC3swb1pLGIDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/303.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/11.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -29933,13 +30653,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/303:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/11:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -29948,23 +30668,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpjTgsdh2UhyBxXxrk1DVLLLMhZ3PJ8dXGtj0ZkBs6ndqqt94wkqXW6Y2Ak57mOuqMUn8hlGNMbjMZznUwzQnglC_-ynloMonyWvoBkjI_6-DKGTC0" + "AEnB2UosmGmgYmy6swVybJTesCQsS-onut6HdaOBOBYgHEhdUVecblMV9TYF2e2RMupiVE_7_23w5rzUEIa7CcPLzFdTrYRGzQ" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQnVja2V0IGlzIHJlcXVlc3RlciBwYXlzIGJ1Y2tldCBidXQgbm8gdXNlciBwcm9qZWN0IHByb3ZpZGVkLiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1iYWRSZXF1ZXN0LCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YTo4NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6MjcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmRlbGV0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTEzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBCdWNrZXQgaXMgUmVxdWVzdGVyIFBheXMgYnVja2V0IGJ1dCBubyBiaWxsaW5nIHByb2plY3QgaWQgcHJvdmlkZWQgZm9yIG5vbi1vd25lci5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1CdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAwfSBCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX01JU1NJTkc6IFVTRVJfUFJPSkVDVF9NSVNTSU5HOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogQnVja2V0IGlzIFJlcXVlc3RlciBQYXlzIGJ1Y2tldCBidXQgbm8gYmlsbGluZyBwcm9qZWN0IGlkIHByb3ZpZGVkIGZvciBub24tb3duZXIuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfTUlTU0lORzogVVNFUl9QUk9KRUNUX01JU1NJTkc6IEJ1Y2tldCBpcyBSZXF1ZXN0ZXIgUGF5cyBidWNrZXQgYnV0IG5vIGJpbGxpbmcgcHJvamVjdCBpZCBwcm92aWRlZCBmb3Igbm9uLW93bmVyLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMCwKICAibWVzc2FnZSI6ICJCdWNrZXQgaXMgcmVxdWVzdGVyIHBheXMgYnVja2V0IGJ1dCBubyB1c2VyIHByb2plY3QgcHJvdmlkZWQuIgogfQp9Cg==" + "Body": "" } }, { - "ID": "86cf3d32d972741a", + "ID": "2d79258945c4f25c", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -29974,19 +30694,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=0ef666b03dc08fed51549b75f9ff0525adf4fcc606ba816165a036d45c01" + "multipart/related; boundary=4c3f9e195038a23b1168c899f673137fee02e405c75b4a5ccc3dd08a1e62" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "2705f678ea6dff44cdedf565eb8b11e0/9950981978650490372;o=0" + "f0d51e89b6eac738ddc611b1333eef75/5235605051716626105;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -29995,20 +30715,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0wZWY2NjZiMDNkYzA4ZmVkNTE1NDliNzVmOWZmMDUyNWFkZjRmY2M2MDZiYTgxNjE2NWEwMzZkNDVjMDENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsIm5hbWUiOiJmb28ifQoNCi0tMGVmNjY2YjAzZGMwOGZlZDUxNTQ5Yjc1ZjlmZjA1MjVhZGY0ZmNjNjA2YmE4MTYxNjVhMDM2ZDQ1YzAxDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG8NCi0tMGVmNjY2YjAzZGMwOGZlZDUxNTQ5Yjc1ZjlmZjA1MjVhZGY0ZmNjNjA2YmE4MTYxNjVhMDM2ZDQ1YzAxLS0NCg==" + "Body": "LS00YzNmOWUxOTUwMzhhMjNiMTE2OGM4OTlmNjczMTM3ZmVlMDJlNDA1Yzc1YjRhNWNjYzNkZDA4YTFlNjINCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsIm5hbWUiOiJmb28ifQoNCi0tNGMzZjllMTk1MDM4YTIzYjExNjhjODk5ZjY3MzEzN2ZlZTAyZTQwNWM3NWI0YTVjY2MzZGQwOGExZTYyDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG8NCi0tNGMzZjllMTk1MDM4YTIzYjExNjhjODk5ZjY3MzEzN2ZlZTAyZTQwNWM3NWI0YTVjY2MzZGQwOGExZTYyLS0NCg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -30020,10 +30742,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:39 GMT" + "Wed, 25 Jul 2018 18:24:19 GMT" ], "Etag": [ - "CK67oc6i99sCEAE=" + "CO7Ti+XvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -30039,7 +30761,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543330000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -30048,19 +30770,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrjk18:4091,/bns/yw/borg/yw/bns/blobstore2/bitpusher/473.scotty,acatli15:443" + "xgiadaae2:4286,/bns/xi/borg/xi/bns/blobstore2/bitpusher/88.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=zk41W72SMpbkhASluqCQBQ" + "eid=UsBYW82aLM62swbPnpToAQ" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/473.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/88.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -30069,13 +30791,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/473:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/88:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -30090,17 +30812,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur23u_2pDginx6-588CqtXDXMu1CsuX1nE-KEUW0_g97_5JS3ptalEYKAJNTaig2uqJPJAGfstMhk4WwpMWCmeJd5xdhSZQCl7h2RAHfxxuo2LF9r8" + "AEnB2Ur6sLFSPpJsyOxEKX9xlyoDK_T5mm8-KpE96pDKVFHaWYVWSsRber1nTryu5yh2I39_6dnQyDOMifXX6rVgb-QrVvHaPA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzOTE1MDUxMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzOTE1MDUxMCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozOS4xNDlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MzkuMTQ5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjM5LjE0OVoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIzOTE1MDUxMCZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMzkxNTA1MTAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzOTE1MDUxMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0s2N29jNmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzOTE1MDUxMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzkxNTA1MTAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0s2N29jNmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzOTE1MDUxMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzkxNTA1MTAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNLNjdvYzZpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMzkxNTA1MTAvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzkxNTA1MTAiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNLNjdvYzZpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDSzY3b2M2aTk5c0NFQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1OTAyODQ2MiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1OTAyODQ2MiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDoxOS4wMjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MTkuMDI4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjE5LjAyOFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMjU0MzA1OTAyODQ2MiZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwNTkwMjg0NjIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA1OTAyODQ2MiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ083VGkrWHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1OTAyODQ2Mi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTkwMjg0NjIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ083VGkrWHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9mb28vMTUzMjU0MzA1OTAyODQ2Mi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTkwMjg0NjIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNPN1RpK1h2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIvZm9vLzE1MzI1NDMwNTkwMjg0NjIvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwNTkwMjg0NjIiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNPN1RpK1h2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDTzdUaStYdnV0d0NFQUU9Igp9Cg==" } }, { - "ID": "d54e3334f26de898", + "ID": "f3e1568bdb0e8f1d", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026userProject=gcloud-golang-firestore-tests", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026userProject=veener-jba", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -30113,13 +30835,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "88572579c523efd9d3a7991727907d68/10758408759648090132;o=0" + "7b1e4b4fba7ac31cc9bd19a0215bda42/9019917629931366215;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -30128,7 +30850,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026userProject=gcloud-golang-firestore-tests" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json\u0026userProject=veener-jba" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -30137,29 +30859,28 @@ "Body": "" }, "Response": { - "StatusCode": 204, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0" ], "Content-Length": [ - "0" + "13481" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:39 GMT" + "Wed, 25 Jul 2018 18:24:19 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:19 GMT" ], "Server": [ "UploadServer" @@ -30169,7 +30890,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220538000" + "1532543334000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -30178,16 +30899,16 @@ "471383502717" ], "X-Google-Backends": [ - "vrgr19:4021,/bns/yw/borg/yw/bns/blobstore2/bitpusher/372.scotty,acatli15:443" + "xgiadabo14:4091,/bns/xi/borg/xi/bns/blobstore2/bitpusher/125.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=z041W5zNEtbshgThiaaoCQ" + "eid=U8BYW9ebCMGFygP35YHoAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/372.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/125.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -30196,13 +30917,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/372:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/125:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVsb0RCbWJYWkNBUFhpSkR3eDFqV09jMXJNcUxjS0xJN29MUElaNjRuRHJJczNjWVFZZkVJLUxaa0ZZcVpxcXpjMmhJSWJuVnlENmdvMWQwTUNxUmg3RFRpMFZ0aGg0NVItQ2hCVlZNeVFPN1VCQjdiak96cFZib29EMDAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -30211,23 +30932,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqzgBp-hadem2L8DgSACr_6OSEJxmds24WtJWhpBKREz4wlRq2agAct1DHHrgzgLnag8xmBsaXp7U3QjZuDs-MF-7kiXsUF9VUfJg4S3mPnjLwM2Sw" + "AEnB2UoNFf2Jrs5ndejT9b0nKs4zqukpcyDKBakaCrmU_RZBkCnPKbrT4RKSBVM1huRJQ1oWoR5BugNhcfTaTBUgCj1Jxen6Ng" ] }, - "Body": "" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YTo4NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6MjcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmRlbGV0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTEzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" } }, { - "ID": "8f3ee1fdf17805f8", + "ID": "6ec50519fd63bfa0", "Request": { - "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -30236,20 +30957,17 @@ "Authorization": [ "REDACTED" ], - "Content-Type": [ - "multipart/related; boundary=15231e77b504acd77db1197296a62a44a93e9b40abfad28fca9078b1e4d0" - ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "efcaa6518753832a00929329823d72bf/11565834441167616292;o=0" + "2f38ffa256b00b09268332b1fd024b6f/12876568173370927061;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -30258,35 +30976,34 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/foo?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0xNTIzMWU3N2I1MDRhY2Q3N2RiMTE5NzI5NmE2MmE0NGE5M2U5YjQwYWJmYWQyOGZjYTkwNzhiMWU0ZDANCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsIm5hbWUiOiJmb28ifQoNCi0tMTUyMzFlNzdiNTA0YWNkNzdkYjExOTcyOTZhNjJhNDRhOTNlOWI0MGFiZmFkMjhmY2E5MDc4YjFlNGQwDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KaGVsbG8NCi0tMTUyMzFlNzdiNTA0YWNkNzdkYjExOTcyOTZhNjJhNDRhOTNlOWI0MGFiZmFkMjhmY2E5MDc4YjFlNGQwLS0NCg==" + "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "3544" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:39 GMT" - ], - "Etag": [ - "CMqZy86i99sCEAE=" + "Wed, 25 Jul 2018 18:24:19 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -30302,7 +31019,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543330000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -30311,19 +31028,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrdk9:4305,/bns/yw/borg/yw/bns/blobstore2/bitpusher/521.scotty,acatli15:443" + "xgiadabn7:4375,/bns/xi/borg/xi/bns/blobstore2/bitpusher/108.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=z041W_GCH9OkhATsyYKoCg" - ], - "X-Google-Gfe-Cloud-Project-Number": [ - "36639933145" + "eid=U8BYW5fXE6u_swaTlJmwBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/521.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/108.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -30332,19 +31046,19 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/521:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/108:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" ], "X-Guploader-Customer": [ - "apiary_cloudstorage_single_post_uploads" + "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ "success" @@ -30353,17 +31067,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrV1-1tibiNnDFk2IVjxLGS_Xyz7XrF__ZKcj9BIUDbdpiFYum0o-Vlym8ra9Q8l8vXf72Zr2swMYGKtNetTeYK6la8PZI5foSs6BZvw551ijovoTo" + "AEnB2Up6diQMzH0UiC2UYYGZ8zDfFkUmII2rn9ijfO6PoiMFmcHEr8KqurgK2w3T-cy8MYGgw8nsx2Bz55Dnq9q7gOzDsyeDhw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzOTgzNDMxNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2ZvbyIsCiAibmFtZSI6ICJmb28iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzOTgzNDMxNCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDozOS44MzJaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MzkuODMyWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjM5LjgzMloiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vP2dlbmVyYXRpb249MTUzMDIyMDIzOTgzNDMxNCZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMzk4MzQzMTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMiIsCiAgICJvYmplY3QiOiAiZm9vIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIzOTgzNDMxNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ01xWnk4Nmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzOTgzNDMxNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzk4MzQzMTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ01xWnk4Nmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9mb28vMTUzMDIyMDIzOTgzNDMxNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMi9vL2Zvby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzk4MzQzMTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNNcVp5ODZpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIvZm9vLzE1MzAyMjAyMzk4MzQzMTQvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAyL28vZm9vL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDIiLAogICAib2JqZWN0IjogImZvbyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMzk4MzQzMTQiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNNcVp5ODZpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJtbkc3VEE9PSIsCiAiZXRhZyI6ICJDTXFaeTg2aTk5c0NFQUU9Igp9Cg==" + "Body": "" } }, { - "ID": "2590c5af1e1399f8", + "ID": "a99968d338a0876b", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026userProject=veener-jba", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -30376,13 +31090,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "71c42cfcf290e26daf644c095d0539f3/12373542692847024947;o=0" + "bd9214bf4eb85f57b13b38d18fac73d3/16660880747290699876;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -30391,7 +31105,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json\u0026userProject=veener-jba" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/copy?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -30400,26 +31114,31 @@ "Body": "" }, "Response": { - "StatusCode": 403, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "13481" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:40 GMT" + "Wed, 25 Jul 2018 18:24:19 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:40 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -30429,25 +31148,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220515000" + "1532543358000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ - "471383502717" + "998958384336" ], "X-Google-Backends": [ - "vrak7:4363,/bns/yw/borg/yw/bns/blobstore2/bitpusher/533.scotty,acatli15:443" + "xiiadccj12:4107,/bns/xi/borg/xi/bns/blobstore2/bitpusher/52.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=z041W8KeOoS1hQSt54II" + "eid=U8BYW6CJJsWxswbvo6bYDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/533.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/52.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -30456,13 +31175,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/533:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/52:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CP3elYXcDRoCGAYoATpFChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGM6ropHgHCIVMTE3MjM4MDU4ODYxOTM3NTE5MTQ0MOArMOErMOMrSp8BEoIBeWEyOS5jLkVscm9CWXBPNWt3TjAxazRwdy1mTThCQlQ0Q1c1eWUwSldFUVR2d2VPbkdydnJBSzhlaXoyZVRjemFITlZSamgzMlpwNWNyaXhtVzFFNzhzaFNVb1VqaDJ4eV9kTGlYcHpCVmdxMG1CTmFoX0JKZ3cyeHJjQ25RbEtJSTAEOhZOT1RfQV9QRVJTSVNURU5UX1RPS0VO" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -30471,23 +31190,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrmLrRY8eThNP3lsduLCGCE96NOUgsLaNWX60dBzcDs6RL6Ucw3Dd23E7EMRPMP0Xi1cbK0_-EV8A7-_jAEXRMb7-vzTRJIHKM0i0i8NeP8X7_2Wl4" + "AEnB2UpRFckoYHMOgWlBtSyLxSuG8Z9_fAYUFVZIRjMUzsBgAiDadIqn_YxyoPi5uEAPdhgb25iw3QJ7fz5sLDk3iKRLl4zLMA" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogImludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IGludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPWZvcmJpZGRlbiwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uRk9SQklEREVOLCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6VVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Rk9SQklEREVOLCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPW51bGwsIG1lc3NhZ2U9aW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPWludGVncmF0aW9uQGdjbG91ZC1nb2xhbmctZmlyZXN0b3JlLXRlc3RzLmlhbS5nc2VydmljZWFjY291bnQuY29tIGRvZXMgbm90IGhhdmUgc2VydmljZXVzYWdlLnNlcnZpY2VzLnVzZSBhY2Nlc3MgdG8gcHJvamVjdCA2NDIwODA5MTgxMDEuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gaW50ZWdyYXRpb25AZ2Nsb3VkLWdvbGFuZy1maXJlc3RvcmUtdGVzdHMuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20gZG9lcyBub3QgaGF2ZSBzZXJ2aWNldXNhZ2Uuc2VydmljZXMudXNlIGFjY2VzcyB0byBwcm9qZWN0IDY0MjA4MDkxODEwMS46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpVU0VSX1BST0pFQ1RfQUNDRVNTX0RFTklFRDogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YTo4NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6MjcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmRlbGV0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTEzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogVVNFUl9QUk9KRUNUX0FDQ0VTU19ERU5JRUQ6IFVTRVJfUFJPSkVDVF9BQ0NFU1NfREVOSUVEOiBpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJpbnRlZ3JhdGlvbkBnY2xvdWQtZ29sYW5nLWZpcmVzdG9yZS10ZXN0cy5pYW0uZ3NlcnZpY2VhY2NvdW50LmNvbSBkb2VzIG5vdCBoYXZlIHNlcnZpY2V1c2FnZS5zZXJ2aWNlcy51c2UgYWNjZXNzIHRvIHByb2plY3QgNjQyMDgwOTE4MTAxLiIKIH0KfQo=" + "Body": "" } }, { - "ID": "9a5f1369645e9728", + "ID": "47296f2e00d451fc", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose?alt=json\u0026userProject=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -30500,13 +31219,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "536f725249c833e6a9653dfaf4c9ea60/13180969473861401667;o=0" + "9d460f1fa9e8358d6e2ca54007763a23/2071067592502569202;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -30515,7 +31234,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/foo?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002/o/compose?alt=json\u0026userProject=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -30526,9 +31245,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -30540,7 +31261,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:40 GMT" + "Wed, 25 Jul 2018 18:24:20 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -30556,7 +31277,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220536000" + "1532543330000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -30565,16 +31286,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrba191:4142,/bns/yw/borg/yw/bns/blobstore2/bitpusher/282.scotty,acatli15:443" + "xgiadaay12:4070,/bns/xi/borg/xi/bns/blobstore2/bitpusher/54.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=0E41W5yPCMytN6euonA" + "eid=U8BYW6ieObC6swam3qWoCQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/282.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/54.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -30583,13 +31304,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/282:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/54:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -30604,17 +31325,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqE0dtwCuQug3KHtrMWYgkEpeWBuGEizffKz-B-pzGs30cXR-xek5LkFW9V_VHf_myA_4IIOYB3jVL0SbF3NfhjS3zlgXWEO6C-WtNvYssySXEJvhE" + "AEnB2UqFHLDSCb-csWH9WsaYNazbnu7LNYnxxoUiLxNDIFeKd85fOsx0oGGtiVErk6_FUNMqeOnUX8WkaKPzr3Aham7EihdAJA" ] }, "Body": "" } }, { - "ID": "827a28bca75c9330", + "ID": "26684fb0d90fb09b", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026userProject=dulcet-port-762", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -30627,13 +31348,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "25dadf84862f9c07725f3efec681eacf/13916620131519594067;o=0" + "b95db39788040c2882e8c64071813b20/9711749239163447822;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -30642,7 +31363,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/copy?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0002?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -30653,9 +31374,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -30667,7 +31390,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:40 GMT" + "Wed, 25 Jul 2018 18:24:20 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -30683,7 +31406,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220536000" + "1532543358000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -30692,16 +31415,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrch67:4274,/bns/yw/borg/yw/bns/blobstore2/bitpusher/388.scotty,acatli15:443" + "xiiadcaw14:4032,/bns/xi/borg/xi/bns/blobstore2/bitpusher/101.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=0E41W8TiGoq0hQSgpJTwCw" + "eid=VMBYW_-TDY23swaa1JGICA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/388.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/101.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -30710,13 +31433,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/388:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/101:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnR4MGN0a0VlUHJWM2gtOThTWlJRTndqUXZVUW42UVR1YlI0Wk5Mb1hybXppTFFIRW1DeWZzWV9LY3JvaE1YdElpdTFxc0NEWlNmOTVkS29nYjIwTU9LSHNqeWplTkJkN3FrUUVPaTVSSkRwYi1FMFJXclhFYUNUazNZd3E3QUJkdGE3NVpsMDNDeVZwMktGSFJnU1hiSm9fM3kyTmVyTmJIdDV3RkpNWmdjZmV6Qlh3TVpmcnEtRW8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -30731,17 +31454,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq6Ik3kGpZKhklStbgKoXaZeJCwv7BMvr9d5u91bbaiBw3YTmbh7XfPvSb_oG7NxELrdoUxX1j6oPVC1MJYpR_SoIZBsOWWUC21aHVWwXJd75jG84A" + "AEnB2UqIaRWESlmCt0SRhh5cYqRu4PmRGL0Abk2a1Xnf3ZUrhWpHO_xYzwxASUCoqxtKa2vvaDTeXjP85lkFd5lXPFl8xYv2DQ" ] }, "Body": "" } }, { - "ID": "9cc58ce4cdb9b8b8", + "ID": "0ef1ca5f73bd493d", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose?alt=json\u0026userProject=dulcet-port-762", + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/notificationConfigs?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -30754,13 +31477,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fc91cc1415abf9aa7a5a81976105fbaa/14724046912533970787;o=0" + "b7099022d4c856535f269bec588ce23c/17352712356522781483;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -30769,7 +31492,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002/o/compose?alt=json\u0026userProject=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/notificationConfigs?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -30778,29 +31501,28 @@ "Body": "" }, "Response": { - "StatusCode": 204, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0, must-revalidate, no-transform" ], "Content-Length": [ - "0" + "37" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:41 GMT" + "Wed, 25 Jul 2018 18:24:20 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:20 GMT" ], "Server": [ "UploadServer" @@ -30810,25 +31532,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220511000" + "1532543360000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrdh62:4480,/bns/yw/borg/yw/bns/blobstore2/bitpusher/435.scotty,acatli15:443" + "xhiadbay15:4202,/bns/xi/borg/xi/bns/blobstore2/bitpusher/119.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=0E41W4jHLMfUN9mJjPgB" + "eid=VMBYW7WLK-GFygOT4obwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/435.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/119.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -30837,13 +31559,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/435:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/119:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WVpNZGpKdFBodkk0eFVOTnVmRHgxQWdYLUhpbkZldzVPSnphTkdCY2RpLVFIZ3NRSkFzb1J4c3dsU25LOGVhSzdzWDdadHY5OVBkMnYteWxzSW5hbTZ3cGZrZlE3UFRGWjkyMkFwMkc1YnFlNEQ3ZEU3Zk5kUl9fdmM2ZGVfdUEzRFJsQ1ZnZF9EZ0JGeUZ3dVY5SXRIaUFTU0Iydk96VWsyejF0WEpXVGZ3V3RNZ2ZITVFDZkRjc2cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -30858,17 +31580,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urv3CdAezrB-H64m3d6jJsxb3f1ZVVzp7C0iyuOmjJIscPFh3xJi__lEoo-U8dRa8w8xtbP8_DQeSKCCEqJP5IlaA-ZLpLHCdT-OHF-eOtQlcAqGJQ" + "AEnB2Urvoxn90HKMNmrlKUpdDoeCI8frIFqTfFjX024JaHuXkeEhFHd90tqKSvP5kSZSq8-yllwEAWuRyAX3PTmHMKf0nu8IDQ" ] }, - "Body": "" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNub3RpZmljYXRpb25zIgp9Cg==" } }, { - "ID": "b7eb0c5e67be8cc4", + "ID": "249f77727bb8fde7", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json", + "Method": "POST", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/notificationConfigs?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -30877,17 +31599,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "121" + ], + "Content-Type": [ + "application/json" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "8880d7dcf9e5ec409a12dd0a211fa0ce/16339180841438003842;o=0" + "8d5e790560c2e4a36826625bb9f6907b/6547211779949390919;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -30896,32 +31624,34 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0002?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/notificationConfigs?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "eyJwYXlsb2FkX2Zvcm1hdCI6Ik5PTkUiLCJ0b3BpYyI6Ii8vcHVic3ViLmdvb2dsZWFwaXMuY29tL3Byb2plY3RzL2R1bGNldC1wb3J0LTc2Mi90b3BpY3MvZ28tc3RvcmFnZS1ub3RpZmljYXRpb24tdGVzdCJ9Cg==" }, "Response": { - "StatusCode": 204, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "0" + "302" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:41 GMT" + "Wed, 25 Jul 2018 18:24:21 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -30937,25 +31667,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220536000" + "1532543360000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrmr18:4187,/bns/yw/borg/yw/bns/blobstore2/bitpusher/66.scotty,acatli15:443" + "xgiadacc2:4342,/bns/xi/borg/xi/bns/blobstore2/bitpusher/33.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=0U41W9iSAobUhQSJtoaQBA" + "eid=VMBYW9WcN--wswb5qKXgCA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/66.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/33.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -30964,13 +31694,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/66:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/33:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVWJ4V2YyWHlVYzgzemRLbUdqV21SZDV4M095dm5qdGFFSlJUc1l2Qm4tUlBiakhUNVVZV1JTMmY2bFR2QURDV3hUblhZNHJQWVB1QkNjSWtBeTVQYjU0R1hhLS1WcXhvbEF1WGRHdkZNMUJGLW9OcDZGdFRCSW96aXRldVZNVVdJZ3RKVjdqSGhfSHNDdmRYMF9Hd2pqejlucWJzaVZCQUZBVDFWWTNsSEtGaE5KcjZtRGdIYVg0SlUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3WVpNZGpKdFBodkk0eFVOTnVmRHgxQWdYLUhpbkZldzVPSnphTkdCY2RpLVFIZ3NRSkFzb1J4c3dsU25LOGVhSzdzWDdadHY5OVBkMnYteWxzSW5hbTZ3cGZrZlE3UFRGWjkyMkFwMkc1YnFlNEQ3ZEU3Zk5kUl9fdmM2ZGVfdUEzRFJsQ1ZnZF9EZ0JGeUZ3dVY5SXRIaUFTU0Iydk96VWsyejF0WEpXVGZ3V3RNZ2ZITVFDZkRjc2cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -30985,17 +31715,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrOYrFKxzlUJl7VTGG-z9ULjH2DbTOlXpusezHNS0MmVBASWAUSUtRWZxlXdqFNuFW0PeUmDyVguIh1h2ceFYmAK15i00hW5SDaDVZ1xhpFJd6IWn0" + "AEnB2UokE8LcpdeTAE2F38L7hn2gWNsZAqlHAp_0dz7bnjlp4gXuwSyyGKJj-o5ylUzElhe9QeJDgqSBTonoLQa7Q3QdfuzMNg" ] }, - "Body": "" + "Body": "ewogImlkIjogIjEwIiwKICJ0b3BpYyI6ICIvL3B1YnN1Yi5nb29nbGVhcGlzLmNvbS9wcm9qZWN0cy9kdWxjZXQtcG9ydC03NjIvdG9waWNzL2dvLXN0b3JhZ2Utbm90aWZpY2F0aW9uLXRlc3QiLAogInBheWxvYWRfZm9ybWF0IjogIk5PTkUiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm90aWZpY2F0aW9uQ29uZmlncy8xMCIsCiAia2luZCI6ICJzdG9yYWdlI25vdGlmaWNhdGlvbiIKfQo=" } }, { - "ID": "6998e22e8000dbd7", + "ID": "18bd5add97c23e4d", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/notificationConfigs?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/notificationConfigs?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -31008,13 +31738,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "29664c6be16da0646573fb41931883a3/17882258280110572962;o=0" + "73e9ba9a5c9a19c8f768a5ba285eb867/14188174897308724580;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -31023,7 +31753,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/notificationConfigs?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/notificationConfigs?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -31034,24 +31764,26 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" ], "Content-Length": [ - "37" + "369" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:41 GMT" + "Wed, 25 Jul 2018 18:24:21 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:41 GMT" + "Wed, 25 Jul 2018 18:24:21 GMT" ], "Server": [ "UploadServer" @@ -31061,7 +31793,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220541000" + "1532543361000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -31070,16 +31802,16 @@ "998958384336" ], "X-Google-Backends": [ - "vran64:4046,/bns/yw/borg/yw/bns/blobstore2/bitpusher/68.scotty,acatli15:443" + "xgiadaai14:4184,/bns/xi/borg/xi/bns/blobstore2/bitpusher/28.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=0U41W93jIIaihQTOw5HwBg" + "eid=VcBYW-mZMoG2swaN3piQDw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/68.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/28.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -31088,13 +31820,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/68:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/28:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBV0NZdmZMWHJDanpyaHBfZVhMX2hERW5UVFRYSVBFOUJudG1HMHBJaGpGMjE2TVhndVpVQ0JCcjdEajZuNUdLdlZKUDdZeXJFdmVQVFNOdDl3Q2RvZUd3YXJkbldhc0E0cU44VldjTkVjdFVtZ0tPQjBlNmNjRVl4WUZPSGw4ekxQbjNZT2Nuc1ljM0pDcGVrM2V0bDRyUENaVXI4X0w1eUFtSUx3di1zS3lrMUYzQnJEeWoyRTdEcHcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WVpNZGpKdFBodkk0eFVOTnVmRHgxQWdYLUhpbkZldzVPSnphTkdCY2RpLVFIZ3NRSkFzb1J4c3dsU25LOGVhSzdzWDdadHY5OVBkMnYteWxzSW5hbTZ3cGZrZlE3UFRGWjkyMkFwMkc1YnFlNEQ3ZEU3Zk5kUl9fdmM2ZGVfdUEzRFJsQ1ZnZF9EZ0JGeUZ3dVY5SXRIaUFTU0Iydk96VWsyejF0WEpXVGZ3V3RNZ2ZITVFDZkRjc2cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -31109,17 +31841,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpHJShsnX2VLvKVyQYq2A3NIWpTRhb1vY8PiV1dVVq_Ktd0se5xwRJj6UnYTrVJsVLDswoXZPBPrqluGOuZ0UvHMC14EmEa-bYqpuRPP1GTqh6QPAA" + "AEnB2Ur8OKpLAbDrYMY7ReKKlCOil0atoW-ZAl-Q8_u49LzhjNzXf6Df21aI1Yt4f0UJE3itY4fZ22cceaGv_aLDTdE3Hn9PIQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNub3RpZmljYXRpb25zIgp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNub3RpZmljYXRpb25zIiwKICJpdGVtcyI6IFsKICB7CiAgICJpZCI6ICIxMCIsCiAgICJ0b3BpYyI6ICIvL3B1YnN1Yi5nb29nbGVhcGlzLmNvbS9wcm9qZWN0cy9kdWxjZXQtcG9ydC03NjIvdG9waWNzL2dvLXN0b3JhZ2Utbm90aWZpY2F0aW9uLXRlc3QiLAogICAicGF5bG9hZF9mb3JtYXQiOiAiTk9ORSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL25vdGlmaWNhdGlvbkNvbmZpZ3MvMTAiLAogICAia2luZCI6ICJzdG9yYWdlI25vdGlmaWNhdGlvbiIKICB9CiBdCn0K" } }, { - "ID": "1124345a990c15d2", + "ID": "e3f555209e89e6cb", "Request": { - "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/notificationConfigs?alt=json", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/notificationConfigs/10?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -31128,23 +31860,17 @@ "Authorization": [ "REDACTED" ], - "Content-Length": [ - "121" - ], - "Content-Type": [ - "application/json" - ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "bce7f205f825691e476a0cfbbe01305e/1050930714071517377;o=0" + "d9a6e8cc2e953b12d9ced579ad05a03d/3382674316440432256;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -31153,258 +31879,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/notificationConfigs?alt=json" - ], - "X-Goog-Api-Client": [ - "gl-go/1.10.3 gccl/20180226" - ] - }, - "Body": "eyJwYXlsb2FkX2Zvcm1hdCI6Ik5PTkUiLCJ0b3BpYyI6Ii8vcHVic3ViLmdvb2dsZWFwaXMuY29tL3Byb2plY3RzL2R1bGNldC1wb3J0LTc2Mi90b3BpY3MvZ28tc3RvcmFnZS1ub3RpZmljYXRpb24tdGVzdCJ9Cg==" - }, - "Response": { - "StatusCode": 200, - "Proto": "HTTP/1.1", - "Header": { - "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" - ], - "Content-Length": [ - "302" - ], - "Content-Type": [ - "application/json; charset=UTF-8" - ], - "Date": [ - "Thu, 28 Jun 2018 21:10:42 GMT" - ], - "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" - ], - "Server": [ - "UploadServer" - ], - "Vary": [ - "Origin", - "X-Origin" - ], - "X-Google-Apiary-Auth-Expires": [ - "1530220541000" - ], - "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" - ], - "X-Google-Apiary-Auth-User": [ - "998958384336" - ], - "X-Google-Backends": [ - "vru67:4406,/bns/yw/borg/yw/bns/blobstore2/bitpusher/288.scotty,acatli15:443" - ], - "X-Google-Dos-Service-Trace": [ - "main:apps-upload-cloud-storage-unified" - ], - "X-Google-Gfe-Backend-Request-Info": [ - "eid=0U41W9SqLIXGhQT1vofYAg" - ], - "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/288.scotty,acatli15:443" - ], - "X-Google-Gfe-Response-Code-Details-Trace": [ - "response_code_set_by_backend" - ], - "X-Google-Gfe-Service-Trace": [ - "bitpusher-gcs-apiary" - ], - "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/288:caf3" - ], - "X-Google-Service": [ - "bitpusher-gcs-apiary" - ], - "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBV0NZdmZMWHJDanpyaHBfZVhMX2hERW5UVFRYSVBFOUJudG1HMHBJaGpGMjE2TVhndVpVQ0JCcjdEajZuNUdLdlZKUDdZeXJFdmVQVFNOdDl3Q2RvZUd3YXJkbldhc0E0cU44VldjTkVjdFVtZ0tPQjBlNmNjRVl4WUZPSGw4ekxQbjNZT2Nuc1ljM0pDcGVrM2V0bDRyUENaVXI4X0w1eUFtSUx3di1zS3lrMUYzQnJEeWoyRTdEcHcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" - ], - "X-Google-Shellfish-Status": [ - "CA0gBEBG" - ], - "X-Guploader-Customer": [ - "apiary_cloudstorage_metadata" - ], - "X-Guploader-Request-Result": [ - "success" - ], - "X-Guploader-Upload-Result": [ - "success" - ], - "X-Guploader-Uploadid": [ - "AEnB2UovrMDyD-enwEErTeZcUIV4t88JSRXRkdt_hteUuXHJThwSG0EN8Bx5qjbH75dvpXo9677_QCTejEv7HM2iZrz7qaYkm9UyYYc5MM7Nq0m-eXxqJeo" - ] - }, - "Body": "ewogImlkIjogIjEwIiwKICJ0b3BpYyI6ICIvL3B1YnN1Yi5nb29nbGVhcGlzLmNvbS9wcm9qZWN0cy9kdWxjZXQtcG9ydC03NjIvdG9waWNzL2dvLXN0b3JhZ2Utbm90aWZpY2F0aW9uLXRlc3QiLAogInBheWxvYWRfZm9ybWF0IjogIk5PTkUiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm90aWZpY2F0aW9uQ29uZmlncy8xMCIsCiAia2luZCI6ICJzdG9yYWdlI25vdGlmaWNhdGlvbiIKfQo=" - } - }, - { - "ID": "442734abf7ab191f", - "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/notificationConfigs?alt=json", - "Proto": "HTTP/1.1", - "Header": { - "Accept-Encoding": [ - "gzip" - ], - "Authorization": [ - "REDACTED" - ], - "User-Agent": [ - "google-api-go-client/0.5" - ], - "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" - ], - "X-Cloud-Trace-Context": [ - "9e7bd443128653ecb716a01a54224a40/2666064647270386657;o=0" - ], - "X-Forwarded-For": [ - "::1" - ], - "X-Forwarded-Host": [ - "www.googleapis.com" - ], - "X-Forwarded-Proto": [ - "https" - ], - "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/notificationConfigs?alt=json" - ], - "X-Goog-Api-Client": [ - "gl-go/1.10.3 gccl/20180226" - ] - }, - "Body": "" - }, - "Response": { - "StatusCode": 200, - "Proto": "HTTP/1.1", - "Header": { - "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" - ], - "Content-Length": [ - "369" - ], - "Content-Type": [ - "application/json; charset=UTF-8" - ], - "Date": [ - "Thu, 28 Jun 2018 21:10:42 GMT" - ], - "Expires": [ - "Thu, 28 Jun 2018 21:10:42 GMT" - ], - "Server": [ - "UploadServer" - ], - "Vary": [ - "Origin", - "X-Origin" - ], - "X-Google-Apiary-Auth-Expires": [ - "1530220541000" - ], - "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" - ], - "X-Google-Apiary-Auth-User": [ - "998958384336" - ], - "X-Google-Backends": [ - "vry82:4465,/bns/yw/borg/yw/bns/blobstore2/bitpusher/139.scotty,acatli15:443" - ], - "X-Google-Dos-Service-Trace": [ - "main:apps-upload-cloud-storage-unified" - ], - "X-Google-Gfe-Backend-Request-Info": [ - "eid=0k41W-P2MNGChQTP5Cs" - ], - "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/139.scotty,acatli15:443" - ], - "X-Google-Gfe-Response-Code-Details-Trace": [ - "response_code_set_by_backend" - ], - "X-Google-Gfe-Service-Trace": [ - "bitpusher-gcs-apiary" - ], - "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/139:caf3" - ], - "X-Google-Service": [ - "bitpusher-gcs-apiary" - ], - "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBV0NZdmZMWHJDanpyaHBfZVhMX2hERW5UVFRYSVBFOUJudG1HMHBJaGpGMjE2TVhndVpVQ0JCcjdEajZuNUdLdlZKUDdZeXJFdmVQVFNOdDl3Q2RvZUd3YXJkbldhc0E0cU44VldjTkVjdFVtZ0tPQjBlNmNjRVl4WUZPSGw4ekxQbjNZT2Nuc1ljM0pDcGVrM2V0bDRyUENaVXI4X0w1eUFtSUx3di1zS3lrMUYzQnJEeWoyRTdEcHcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" - ], - "X-Google-Shellfish-Status": [ - "CA0gBEBG" - ], - "X-Guploader-Customer": [ - "apiary_cloudstorage_metadata" - ], - "X-Guploader-Request-Result": [ - "success" - ], - "X-Guploader-Upload-Result": [ - "success" - ], - "X-Guploader-Uploadid": [ - "AEnB2Urw1Op2g8PaRk_EoKnUqHbFyEJmtNvsR4nLY0pwy9Aa__rosg8mf48hrXrCmOB3HB6CeO4WXxf6uUy8LEqoin6T3j3xJqspLOV_cIwDEr1cGHQGC30" - ] - }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNub3RpZmljYXRpb25zIiwKICJpdGVtcyI6IFsKICB7CiAgICJpZCI6ICIxMCIsCiAgICJ0b3BpYyI6ICIvL3B1YnN1Yi5nb29nbGVhcGlzLmNvbS9wcm9qZWN0cy9kdWxjZXQtcG9ydC03NjIvdG9waWNzL2dvLXN0b3JhZ2Utbm90aWZpY2F0aW9uLXRlc3QiLAogICAicGF5bG9hZF9mb3JtYXQiOiAiTk9ORSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL25vdGlmaWNhdGlvbkNvbmZpZ3MvMTAiLAogICAia2luZCI6ICJzdG9yYWdlI25vdGlmaWNhdGlvbiIKICB9CiBdCn0K" - } - }, - { - "ID": "d3de8650df0d113d", - "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/notificationConfigs/10?alt=json", - "Proto": "HTTP/1.1", - "Header": { - "Accept-Encoding": [ - "gzip" - ], - "Authorization": [ - "REDACTED" - ], - "User-Agent": [ - "google-api-go-client/0.5" - ], - "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" - ], - "X-Cloud-Trace-Context": [ - "817dedccfaa9342e565a189b2e71803c/4209142081648119296;o=0" - ], - "X-Forwarded-For": [ - "::1" - ], - "X-Forwarded-Host": [ - "www.googleapis.com" - ], - "X-Forwarded-Proto": [ - "https" - ], - "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/notificationConfigs/10?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/notificationConfigs/10?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -31415,9 +31890,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -31429,7 +31906,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:43 GMT" + "Wed, 25 Jul 2018 18:24:22 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -31445,7 +31922,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220543000" + "1532543362000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -31454,16 +31931,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrv185:4062,/bns/yw/borg/yw/bns/blobstore2/bitpusher/617.scotty,acatli15:443" + "xhiadbav14:4088,/bns/xi/borg/xi/bns/blobstore2/bitpusher/29.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=0041W7-oAdW5hQTt_5nwBQ" + "eid=VsBYW9g4grKzBsSCnZgP" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/617.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/29.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -31472,13 +31949,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/617:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/29:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBV0NZdmZMWHJDanpyaHBfZVhMX2hERW5UVFRYSVBFOUJudG1HMHBJaGpGMjE2TVhndVpVQ0JCcjdEajZuNUdLdlZKUDdZeXJFdmVQVFNOdDl3Q2RvZUd3YXJkbldhc0E0cU44VldjTkVjdFVtZ0tPQjBlNmNjRVl4WUZPSGw4ekxQbjNZT2Nuc1ljM0pDcGVrM2V0bDRyUENaVXI4X0w1eUFtSUx3di1zS3lrMUYzQnJEeWoyRTdEcHcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WVpNZGpKdFBodkk0eFVOTnVmRHgxQWdYLUhpbkZldzVPSnphTkdCY2RpLVFIZ3NRSkFzb1J4c3dsU25LOGVhSzdzWDdadHY5OVBkMnYteWxzSW5hbTZ3cGZrZlE3UFRGWjkyMkFwMkc1YnFlNEQ3ZEU3Zk5kUl9fdmM2ZGVfdUEzRFJsQ1ZnZF9EZ0JGeUZ3dVY5SXRIaUFTU0Iydk96VWsyejF0WEpXVGZ3V3RNZ2ZITVFDZkRjc2cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -31493,17 +31970,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpcNXjjPjkRGEzlMUdFBxOwoqiPtzbHpuIQ_ETtW_MAMx_k-QeMbBwebWzEkICnZE5359ZT6fgaPBu9sLuaFjE4PJFpuC-JIvbF_FgNAKR1R5ix-DA" + "AEnB2UqSUkVlQ7hKgK9fqyiCmRjVqRJiZtqW6g0nRmxjIzQ5qFeQpZ6qZ2_UKlGNKm4j_3akPIkuBZPwfShnRRG4-xJ5byR2-w" ] }, "Body": "" } }, { - "ID": "bc496c5d408dd20a", + "ID": "c090f1d8032896bd", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/notificationConfigs?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/notificationConfigs?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -31516,13 +31993,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "54754bbed2cf63cf3567090cced3168a/5824276014846988576;o=0" + "91f33ba12a3d8d7ebf35c97b5f708c8b/11023637433799765917;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -31531,7 +32008,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/notificationConfigs?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/notificationConfigs?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -31542,9 +32019,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -31556,10 +32035,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:43 GMT" + "Wed, 25 Jul 2018 18:24:22 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:43 GMT" + "Wed, 25 Jul 2018 18:24:22 GMT" ], "Server": [ "UploadServer" @@ -31569,7 +32048,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220541000" + "1532543361000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -31578,16 +32057,16 @@ "998958384336" ], "X-Google-Backends": [ - "vreb9:4228,/bns/yw/borg/yw/bns/blobstore2/bitpusher/492.scotty,acatli15:443" + "xgiadabg14:4408,/bns/xi/borg/xi/bns/blobstore2/bitpusher/20.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=0041W9uzLIikhwST84aoBg" + "eid=VsBYW-TTK66wswbUmaUY" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/492.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/20.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -31596,13 +32075,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/492:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/20:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBV0NZdmZMWHJDanpyaHBfZVhMX2hERW5UVFRYSVBFOUJudG1HMHBJaGpGMjE2TVhndVpVQ0JCcjdEajZuNUdLdlZKUDdZeXJFdmVQVFNOdDl3Q2RvZUd3YXJkbldhc0E0cU44VldjTkVjdFVtZ0tPQjBlNmNjRVl4WUZPSGw4ekxQbjNZT2Nuc1ljM0pDcGVrM2V0bDRyUENaVXI4X0w1eUFtSUx3di1zS3lrMUYzQnJEeWoyRTdEcHcwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WVpNZGpKdFBodkk0eFVOTnVmRHgxQWdYLUhpbkZldzVPSnphTkdCY2RpLVFIZ3NRSkFzb1J4c3dsU25LOGVhSzdzWDdadHY5OVBkMnYteWxzSW5hbTZ3cGZrZlE3UFRGWjkyMkFwMkc1YnFlNEQ3ZEU3Zk5kUl9fdmM2ZGVfdUEzRFJsQ1ZnZF9EZ0JGeUZ3dVY5SXRIaUFTU0Iydk96VWsyejF0WEpXVGZ3V3RNZ2ZITVFDZkRjc2cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -31617,14 +32096,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrOIjoDRorE_-8wjq65GcYze9vwQ2Y7rrhvFnMU-IXnjEI1DV-XnR583oS24rlDGwOUYJpO2V_UdIGkIPU8YCdU6uIELn1gy0bV-OklEZU-N-kQgQY" + "AEnB2UrPq5UDcB6hY3Yr7mpWS4eDWLgryILpllaFJHiEIvkc5YuRMJ_ksG5xuGpwU0LxYD1b1q51AmqntyWQpOFIGe4VAbu-sw" ] }, "Body": "ewogImtpbmQiOiAic3RvcmFnZSNub3RpZmljYXRpb25zIgp9Cg==" } }, { - "ID": "7bc2c9477a1d659a", + "ID": "05d72cbc8bce64ef", "Request": { "Method": "GET", "URL": "https://storage.googleapis.com/gcp-public-data-landsat/LC08/PRE/044/034/LC80440342016259LGN00/LC80440342016259LGN00_MTL.txt", @@ -31637,13 +32116,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "72e69bc3bd23262013da89a5867440e1/7367073082332730431;o=0" + "5ddd3f8f6efee9a23fb0995b1d19e0c3/146080362700075193;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -31660,12 +32139,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=3600" @@ -31677,13 +32158,13 @@ "application/octet-stream" ], "Date": [ - "Thu, 28 Jun 2018 21:10:43 GMT" + "Wed, 25 Jul 2018 18:24:22 GMT" ], "Etag": [ "\"7a5fd4743bd647485f88496fadb05c51\"" ], "Expires": [ - "Thu, 28 Jun 2018 22:10:43 GMT" + "Wed, 25 Jul 2018 19:24:22 GMT" ], "Last-Modified": [ "Tue, 04 Oct 2016 16:42:07 GMT" @@ -31711,19 +32192,19 @@ "7903" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/28,/bns/xg/borg/xg/bns/blobstore2/bitpusher/146.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/293,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1119.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=0041W-i5N-q__QT18ZzYBw" + "eid=VsBYW-3RN8WslwHu7a6ADA" ], "X-Google-Gfe-Cloud-Project-Number": [ "570399209098" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/146.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/1119.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -31732,13 +32213,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/146:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/1119:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -31753,14 +32234,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urf7gNgMJz1Lij9uAG96v8-gXZZfamdc5aFQMlrQhRoKGK0QdkUlX9mUme_aZ657FPx1n1Q2Hj6A08Ops2x4HvkMqr31A" + "AEnB2Uo5mFL-EZMM9OKDSnSGq4gia4ybXCB2KVSwwxq1hwVdMmYsTM1FeqHag5MiTlTxM9PdaLFJsevdeTTj8buAkuuozX6GCg" ] }, "Body": "R1JPVVAgPSBMMV9NRVRBREFUQV9GSUxFCiAgR1JPVVAgPSBNRVRBREFUQV9GSUxFX0lORk8KICAgIE9SSUdJTiA9ICJJbWFnZSBjb3VydGVzeSBvZiB0aGUgVS5TLiBHZW9sb2dpY2FsIFN1cnZleSIKICAgIFJFUVVFU1RfSUQgPSAiMDcwMTYwOTE5MTA1MV8wMDAwNCIKICAgIExBTkRTQVRfU0NFTkVfSUQgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwIgogICAgRklMRV9EQVRFID0gMjAxNi0wOS0yMFQwMzoxMzowMloKICAgIFNUQVRJT05fSUQgPSAiTEdOIgogICAgUFJPQ0VTU0lOR19TT0ZUV0FSRV9WRVJTSU9OID0gIkxQR1NfMi42LjIiCiAgRU5EX0dST1VQID0gTUVUQURBVEFfRklMRV9JTkZPCiAgR1JPVVAgPSBQUk9EVUNUX01FVEFEQVRBCiAgICBEQVRBX1RZUEUgPSAiTDFUIgogICAgRUxFVkFUSU9OX1NPVVJDRSA9ICJHTFMyMDAwIgogICAgT1VUUFVUX0ZPUk1BVCA9ICJHRU9USUZGIgogICAgU1BBQ0VDUkFGVF9JRCA9ICJMQU5EU0FUXzgiCiAgICBTRU5TT1JfSUQgPSAiT0xJX1RJUlMiCiAgICBXUlNfUEFUSCA9IDQ0CiAgICBXUlNfUk9XID0gMzQKICAgIE5BRElSX09GRk5BRElSID0gIk5BRElSIgogICAgVEFSR0VUX1dSU19QQVRIID0gNDQKICAgIFRBUkdFVF9XUlNfUk9XID0gMzQKICAgIERBVEVfQUNRVUlSRUQgPSAyMDE2LTA5LTE1CiAgICBTQ0VORV9DRU5URVJfVElNRSA9ICIxODo0NjoxOC42ODY3MzgwWiIKICAgIENPUk5FUl9VTF9MQVRfUFJPRFVDVCA9IDM4LjUyODE5CiAgICBDT1JORVJfVUxfTE9OX1BST0RVQ1QgPSAtMTIzLjQwODQzCiAgICBDT1JORVJfVVJfTEFUX1BST0RVQ1QgPSAzOC41MDc2NQogICAgQ09STkVSX1VSX0xPTl9QUk9EVUNUID0gLTEyMC43NjkzMwogICAgQ09STkVSX0xMX0xBVF9QUk9EVUNUID0gMzYuNDE2MzMKICAgIENPUk5FUl9MTF9MT05fUFJPRFVDVCA9IC0xMjMuMzk3MDkKICAgIENPUk5FUl9MUl9MQVRfUFJPRFVDVCA9IDM2LjM5NzI5CiAgICBDT1JORVJfTFJfTE9OX1BST0RVQ1QgPSAtMTIwLjgzMTE3CiAgICBDT1JORVJfVUxfUFJPSkVDVElPTl9YX1BST0RVQ1QgPSA0NjQ0MDAuMDAwCiAgICBDT1JORVJfVUxfUFJPSkVDVElPTl9ZX1BST0RVQ1QgPSA0MjY0NTAwLjAwMAogICAgQ09STkVSX1VSX1BST0pFQ1RJT05fWF9QUk9EVUNUID0gNjk0NTAwLjAwMAogICAgQ09STkVSX1VSX1BST0pFQ1RJT05fWV9QUk9EVUNUID0gNDI2NDUwMC4wMDAKICAgIENPUk5FUl9MTF9QUk9KRUNUSU9OX1hfUFJPRFVDVCA9IDQ2NDQwMC4wMDAKICAgIENPUk5FUl9MTF9QUk9KRUNUSU9OX1lfUFJPRFVDVCA9IDQwMzAyMDAuMDAwCiAgICBDT1JORVJfTFJfUFJPSkVDVElPTl9YX1BST0RVQ1QgPSA2OTQ1MDAuMDAwCiAgICBDT1JORVJfTFJfUFJPSkVDVElPTl9ZX1BST0RVQ1QgPSA0MDMwMjAwLjAwMAogICAgUEFOQ0hST01BVElDX0xJTkVTID0gMTU2MjEKICAgIFBBTkNIUk9NQVRJQ19TQU1QTEVTID0gMTUzNDEKICAgIFJFRkxFQ1RJVkVfTElORVMgPSA3ODExCiAgICBSRUZMRUNUSVZFX1NBTVBMRVMgPSA3NjcxCiAgICBUSEVSTUFMX0xJTkVTID0gNzgxMQogICAgVEhFUk1BTF9TQU1QTEVTID0gNzY3MQogICAgRklMRV9OQU1FX0JBTkRfMSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjEuVElGIgogICAgRklMRV9OQU1FX0JBTkRfMiA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjIuVElGIgogICAgRklMRV9OQU1FX0JBTkRfMyA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjMuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNCA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjQuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjUuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNiA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjYuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNyA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjcuVElGIgogICAgRklMRV9OQU1FX0JBTkRfOCA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjguVElGIgogICAgRklMRV9OQU1FX0JBTkRfOSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjkuVElGIgogICAgRklMRV9OQU1FX0JBTkRfMTAgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0IxMC5USUYiCiAgICBGSUxFX05BTUVfQkFORF8xMSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjExLlRJRiIKICAgIEZJTEVfTkFNRV9CQU5EX1FVQUxJVFkgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0JRQS5USUYiCiAgICBNRVRBREFUQV9GSUxFX05BTUUgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX01UTC50eHQiCiAgICBCUEZfTkFNRV9PTEkgPSAiTE84QlBGMjAxNjA5MTUxODMwNTdfMjAxNjA5MTUyMDA5NTAuMDEiCiAgICBCUEZfTkFNRV9USVJTID0gIkxUOEJQRjIwMTYwOTAyMDg0MTIyXzIwMTYwOTE3MDc0MDI3LjAyIgogICAgQ1BGX05BTUUgPSAiTDhDUEYyMDE2MDcwMV8yMDE2MDkzMC4wMiIKICAgIFJMVVRfRklMRV9OQU1FID0gIkw4UkxVVDIwMTUwMzAzXzIwNDMxMjMxdjExLmg1IgogIEVORF9HUk9VUCA9IFBST0RVQ1RfTUVUQURBVEEKICBHUk9VUCA9IElNQUdFX0FUVFJJQlVURVMKICAgIENMT1VEX0NPVkVSID0gMjkuNTYKICAgIENMT1VEX0NPVkVSX0xBTkQgPSAzLjMzCiAgICBJTUFHRV9RVUFMSVRZX09MSSA9IDkKICAgIElNQUdFX1FVQUxJVFlfVElSUyA9IDkKICAgIFRJUlNfU1NNX01PREVMID0gIkZJTkFMIgogICAgVElSU19TU01fUE9TSVRJT05fU1RBVFVTID0gIkVTVElNQVRFRCIKICAgIFJPTExfQU5HTEUgPSAtMC4wMDEKICAgIFNVTl9BWklNVVRIID0gMTQ4LjQ4MDQ5Mzk2CiAgICBTVU5fRUxFVkFUSU9OID0gNTAuOTM3NjgzOTkKICAgIEVBUlRIX1NVTl9ESVNUQU5DRSA9IDEuMDA1Mzc1MgogICAgR1JPVU5EX0NPTlRST0xfUE9JTlRTX1ZFUlNJT04gPSA0CiAgICBHUk9VTkRfQ09OVFJPTF9QT0lOVFNfTU9ERUwgPSA1NDgKICAgIEdFT01FVFJJQ19STVNFX01PREVMID0gNS44NTcKICAgIEdFT01FVFJJQ19STVNFX01PREVMX1kgPSAzLjg0MQogICAgR0VPTUVUUklDX1JNU0VfTU9ERUxfWCA9IDQuNDIyCiAgICBHUk9VTkRfQ09OVFJPTF9QT0lOVFNfVkVSSUZZID0gMjI4CiAgICBHRU9NRVRSSUNfUk1TRV9WRVJJRlkgPSAzLjM4MgogIEVORF9HUk9VUCA9IElNQUdFX0FUVFJJQlVURVMKICBHUk9VUCA9IE1JTl9NQVhfUkFESUFOQ0UKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF8xID0gNzUxLjk1NzA5CiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfMSA9IC02Mi4wOTY4NgogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzIgPSA3NzAuMDEzMTgKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF8yID0gLTYzLjU4Nzk0CiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfMyA9IDcwOS41NjA2MQogICAgUkFESUFOQ0VfTUlOSU1VTV9CQU5EXzMgPSAtNTguNTk1NzUKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF80ID0gNTk4LjM0MTQ5CiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfNCA9IC00OS40MTEyMwogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzUgPSAzNjYuMTU1MTUKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF81ID0gLTMwLjIzNzIxCiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfNiA9IDkxLjA1OTQ2CiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfNiA9IC03LjUxOTcyCiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfNyA9IDMwLjY5MTkxCiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfNyA9IC0yLjUzNDU1CiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfOCA9IDY3Ny4xNTc4NAogICAgUkFESUFOQ0VfTUlOSU1VTV9CQU5EXzggPSAtNTUuOTE5OTIKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF85ID0gMTQzLjEwMTczCiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfOSA9IC0xMS44MTczOQogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzEwID0gMjIuMDAxODAKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF8xMCA9IDAuMTAwMzMKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF8xMSA9IDIyLjAwMTgwCiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfMTEgPSAwLjEwMDMzCiAgRU5EX0dST1VQID0gTUlOX01BWF9SQURJQU5DRQogIEdST1VQID0gTUlOX01BWF9SRUZMRUNUQU5DRQogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzEgPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzEgPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF8yID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF8yID0gLTAuMDk5OTgwCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfMyA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfMyA9IC0wLjA5OTk4MAogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzQgPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzQgPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF81ID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF81ID0gLTAuMDk5OTgwCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfNiA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfNiA9IC0wLjA5OTk4MAogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzcgPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzcgPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF84ID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF84ID0gLTAuMDk5OTgwCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfOSA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfOSA9IC0wLjA5OTk4MAogIEVORF9HUk9VUCA9IE1JTl9NQVhfUkVGTEVDVEFOQ0UKICBHUk9VUCA9IE1JTl9NQVhfUElYRUxfVkFMVUUKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF8xID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF8xID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzIgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzIgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfMyA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfMyA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF80ID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF80ID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzUgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzUgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfNiA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfNiA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF83ID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF83ID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzggPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzggPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfOSA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfOSA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF8xMCA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfMTAgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfMTEgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzExID0gMQogIEVORF9HUk9VUCA9IE1JTl9NQVhfUElYRUxfVkFMVUUKICBHUk9VUCA9IFJBRElPTUVUUklDX1JFU0NBTElORwogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzEgPSAxLjI0MjJFLTAyCiAgICBSQURJQU5DRV9NVUxUX0JBTkRfMiA9IDEuMjcyMEUtMDIKICAgIFJBRElBTkNFX01VTFRfQkFORF8zID0gMS4xNzIxRS0wMgogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzQgPSA5Ljg4NDJFLTAzCiAgICBSQURJQU5DRV9NVUxUX0JBTkRfNSA9IDYuMDQ4N0UtMDMKICAgIFJBRElBTkNFX01VTFRfQkFORF82ID0gMS41MDQyRS0wMwogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzcgPSA1LjA3MDFFLTA0CiAgICBSQURJQU5DRV9NVUxUX0JBTkRfOCA9IDEuMTE4NkUtMDIKICAgIFJBRElBTkNFX01VTFRfQkFORF85ID0gMi4zNjQwRS0wMwogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzEwID0gMy4zNDIwRS0wNAogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzExID0gMy4zNDIwRS0wNAogICAgUkFESUFOQ0VfQUREX0JBTkRfMSA9IC02Mi4xMDkyOAogICAgUkFESUFOQ0VfQUREX0JBTkRfMiA9IC02My42MDA2NgogICAgUkFESUFOQ0VfQUREX0JBTkRfMyA9IC01OC42MDc0NwogICAgUkFESUFOQ0VfQUREX0JBTkRfNCA9IC00OS40MjExMgogICAgUkFESUFOQ0VfQUREX0JBTkRfNSA9IC0zMC4yNDMyNgogICAgUkFESUFOQ0VfQUREX0JBTkRfNiA9IC03LjUyMTIyCiAgICBSQURJQU5DRV9BRERfQkFORF83ID0gLTIuNTM1MDUKICAgIFJBRElBTkNFX0FERF9CQU5EXzggPSAtNTUuOTMxMTAKICAgIFJBRElBTkNFX0FERF9CQU5EXzkgPSAtMTEuODE5NzUKICAgIFJBRElBTkNFX0FERF9CQU5EXzEwID0gMC4xMDAwMAogICAgUkFESUFOQ0VfQUREX0JBTkRfMTEgPSAwLjEwMDAwCiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfMSA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF8yID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzMgPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfNCA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF81ID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzYgPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfNyA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF84ID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzkgPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF8xID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF8yID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF8zID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF80ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF81ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF82ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF83ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF84ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF85ID0gLTAuMTAwMDAwCiAgRU5EX0dST1VQID0gUkFESU9NRVRSSUNfUkVTQ0FMSU5HCiAgR1JPVVAgPSBUSVJTX1RIRVJNQUxfQ09OU1RBTlRTCiAgICBLMV9DT05TVEFOVF9CQU5EXzEwID0gNzc0Ljg4NTMKICAgIEsxX0NPTlNUQU5UX0JBTkRfMTEgPSA0ODAuODg4MwogICAgSzJfQ09OU1RBTlRfQkFORF8xMCA9IDEzMjEuMDc4OQogICAgSzJfQ09OU1RBTlRfQkFORF8xMSA9IDEyMDEuMTQ0MgogIEVORF9HUk9VUCA9IFRJUlNfVEhFUk1BTF9DT05TVEFOVFMKICBHUk9VUCA9IFBST0pFQ1RJT05fUEFSQU1FVEVSUwogICAgTUFQX1BST0pFQ1RJT04gPSAiVVRNIgogICAgREFUVU0gPSAiV0dTODQiCiAgICBFTExJUFNPSUQgPSAiV0dTODQiCiAgICBVVE1fWk9ORSA9IDEwCiAgICBHUklEX0NFTExfU0laRV9QQU5DSFJPTUFUSUMgPSAxNS4wMAogICAgR1JJRF9DRUxMX1NJWkVfUkVGTEVDVElWRSA9IDMwLjAwCiAgICBHUklEX0NFTExfU0laRV9USEVSTUFMID0gMzAuMDAKICAgIE9SSUVOVEFUSU9OID0gIk5PUlRIX1VQIgogICAgUkVTQU1QTElOR19PUFRJT04gPSAiQ1VCSUNfQ09OVk9MVVRJT04iCiAgRU5EX0dST1VQID0gUFJPSkVDVElPTl9QQVJBTUVURVJTCkVORF9HUk9VUCA9IEwxX01FVEFEQVRBX0ZJTEUKRU5ECg==" } }, { - "ID": "5e5bb0c20796c3a2", + "ID": "484926fd154dfaa7", "Request": { "Method": "GET", "URL": "https://www.googleapis.com/storage/v1/b/gcp-public-data-landsat/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=LC08%2FPRE%2F044%2F034%2FLC80440342016259LGN00%2F\u0026projection=full\u0026versions=false", @@ -31773,13 +32254,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "2bb5c7b549db3cd0d8525d01815971de/8174780234517222991;o=0" + "6ba307aab01605b95b1dcc8ef59b2cca/4002449431162925128;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -31799,9 +32280,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -31813,10 +32296,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:44 GMT" + "Wed, 25 Jul 2018 18:24:23 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:44 GMT" + "Wed, 25 Jul 2018 18:24:23 GMT" ], "Server": [ "UploadServer" @@ -31826,16 +32309,16 @@ "X-Origin" ], "X-Google-Backends": [ - "vrli86:4200,/bns/yw/borg/yw/bns/blobstore2/bitpusher/331.scotty,acatli15:443" + "xgiadacd12:4335,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1E41W43-AsKOhgT_2Z64Bg" + "eid=V8BYW9__BYaxswa5pbcI" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/331.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -31844,7 +32327,7 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/331:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/5:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" @@ -31865,17 +32348,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrunIw8lPRxhcbQkixkQeV3E_hlFlAfg6cxALlD_BPXzSPNMwwf5y6BYXl9YY3ycx_Ze47PMk92s7YIKp98aR9BDPqX98lYnnJoWgTCpGiNyLo54Pw" + "AEnB2UpARcdyRRq7Ezlc_UDqc4hHaZ1DVej9_ev5b4tHCnGy-lhK08HXg_FoI7WW8NYqDVDVxWtWy1KOz84HKc3l5-B0PJY-Hw" ] }, "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdjcC1wdWJsaWMtZGF0YS1sYW5kc2F0L0xDMDgvUFJFLzA0NC8wMzQvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwL0xDODA0NDAzNDIwMTYyNTlMR04wMF9CMS5USUYvMTQ3NTU5OTE0NDU3OTAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvby9MQzA4JTJGUFJFJTJGMDQ0JTJGMDM0JTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwJTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0IxLlRJRiIsCiAgICJuYW1lIjogIkxDMDgvUFJFLzA0NC8wMzQvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwL0xDODA0NDAzNDIwMTYyNTlMR04wMF9CMS5USUYiLAogICAiYnVja2V0IjogImdjcC1wdWJsaWMtZGF0YS1sYW5kc2F0IiwKICAgImdlbmVyYXRpb24iOiAiMTQ3NTU5OTE0NDU3OTAwMCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE2LTEwLTA0VDE2OjM5OjA0LjU0NVoiLAogICAidXBkYXRlZCI6ICIyMDE2LTEwLTA0VDE2OjM5OjA0LjU0NVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6Mzk6MDQuNTQ1WiIsCiAgICJzaXplIjogIjc0NzIxNzM2IiwKICAgIm1kNUhhc2giOiAiODM1TDZCNWZyQjB6Q0I2czIycjJTdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvby9MQzA4JTJGUFJFJTJGMDQ0JTJGMDM0JTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwJTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0IxLlRJRj9nZW5lcmF0aW9uPTE0NzU1OTkxNDQ1NzkwMDAmYWx0PW1lZGlhIiwKICAgImNyYzMyYyI6ICI5MzRCcmc9PSIsCiAgICJldGFnIjogIkNMamYzNWJMd2M4Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdjcC1wdWJsaWMtZGF0YS1sYW5kc2F0L0xDMDgvUFJFLzA0NC8wMzQvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwL0xDODA0NDAzNDIwMTYyNTlMR04wMF9CMTAuVElGLzE0NzU1OTkzMTAwNDIwMDAiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2djcC1wdWJsaWMtZGF0YS1sYW5kc2F0L28vTEMwOCUyRlBSRSUyRjA0NCUyRjAzNCUyRkxDODA0NDAzNDIwMTYyNTlMR04wMCUyRkxDODA0NDAzNDIwMTYyNTlMR04wMF9CMTAuVElGIiwKICAgIm5hbWUiOiAiTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0IxMC5USUYiLAogICAiYnVja2V0IjogImdjcC1wdWJsaWMtZGF0YS1sYW5kc2F0IiwKICAgImdlbmVyYXRpb24iOiAiMTQ3NTU5OTMxMDA0MjAwMCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE2LTEwLTA0VDE2OjQxOjUwLjAwMloiLAogICAidXBkYXRlZCI6ICIyMDE2LTEwLTA0VDE2OjQxOjUwLjAwMloiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDE6NTAuMDAyWiIsCiAgICJzaXplIjogIjU4NjgxMjI4IiwKICAgIm1kNUhhc2giOiAiQlc2MjN4SGcxNUloVjI0bWJyTCtBdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvby9MQzA4JTJGUFJFJTJGMDQ0JTJGMDM0JTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwJTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0IxMC5USUY/Z2VuZXJhdGlvbj0xNDc1NTk5MzEwMDQyMDAwJmFsdD1tZWRpYSIsCiAgICJjcmMzMmMiOiAieHpWMmZnPT0iLAogICAiZXRhZyI6ICJDSkRuMHVYTHdjOENFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnY3AtcHVibGljLWRhdGEtbGFuZHNhdC9MQzA4L1BSRS8wNDQvMDM0L0xDODA0NDAzNDIwMTYyNTlMR04wMC9MQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjExLlRJRi8xNDc1NTk5MzE5MTg4MDAwIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjExLlRJRiIsCiAgICJuYW1lIjogIkxDMDgvUFJFLzA0NC8wMzQvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwL0xDODA0NDAzNDIwMTYyNTlMR04wMF9CMTEuVElGIiwKICAgImJ1Y2tldCI6ICJnY3AtcHVibGljLWRhdGEtbGFuZHNhdCIsCiAgICJnZW5lcmF0aW9uIjogIjE0NzU1OTkzMTkxODgwMDAiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxNi0xMC0wNFQxNjo0MTo1OS4xNDlaIiwKICAgInVwZGF0ZWQiOiAiMjAxNi0xMC0wNFQxNjo0MTo1OS4xNDlaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE2LTEwLTA0VDE2OjQxOjU5LjE0OVoiLAogICAic2l6ZSI6ICI1Njc5NjQzOSIsCiAgICJtZDVIYXNoIjogIkZPeGl5eEpYcUFmbFJUOGxGblNkT2c9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2djcC1wdWJsaWMtZGF0YS1sYW5kc2F0L28vTEMwOCUyRlBSRSUyRjA0NCUyRjAzNCUyRkxDODA0NDAzNDIwMTYyNTlMR04wMCUyRkxDODA0NDAzNDIwMTYyNTlMR04wMF9CMTEuVElGP2dlbmVyYXRpb249MTQ3NTU5OTMxOTE4ODAwMCZhbHQ9bWVkaWEiLAogICAiY3JjMzJjIjogInAvSEZWdz09IiwKICAgImV0YWciOiAiQ0tDRWdlckx3YzhDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0IyLlRJRi8xNDc1NTk5MTYxMjI0MDAwIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjIuVElGIiwKICAgIm5hbWUiOiAiTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0IyLlRJRiIsCiAgICJidWNrZXQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNDc1NTk5MTYxMjI0MDAwIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTYtMTAtMDRUMTY6Mzk6MjEuMTYwWiIsCiAgICJ1cGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6Mzk6MjEuMTYwWiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxNi0xMC0wNFQxNjozOToyMS4xNjBaIiwKICAgInNpemUiOiAiNzcxNDk3NzEiLAogICAibWQ1SGFzaCI6ICJNUDIyempPbzJOczBpWTRNVFBKUndBPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjIuVElGP2dlbmVyYXRpb249MTQ3NTU5OTE2MTIyNDAwMCZhbHQ9bWVkaWEiLAogICAiY3JjMzJjIjogInJJOFlSZz09IiwKICAgImV0YWciOiAiQ01EVzE1N0x3YzhDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0IzLlRJRi8xNDc1NTk5MTc4NDM1MDAwIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjMuVElGIiwKICAgIm5hbWUiOiAiTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0IzLlRJRiIsCiAgICJidWNrZXQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNDc1NTk5MTc4NDM1MDAwIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTYtMTAtMDRUMTY6Mzk6MzguMzc2WiIsCiAgICJ1cGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6Mzk6MzguMzc2WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxNi0xMC0wNFQxNjozOTozOC4zNzZaIiwKICAgInNpemUiOiAiODAyOTM2ODciLAogICAibWQ1SGFzaCI6ICJ2UU1pR2VEdUJnNmNyM1hzZklFam9RPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjMuVElGP2dlbmVyYXRpb249MTQ3NTU5OTE3ODQzNTAwMCZhbHQ9bWVkaWEiLAogICAiY3JjMzJjIjogInVaQnJuQT09IiwKICAgImV0YWciOiAiQ0xpVDhxYkx3YzhDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I0LlRJRi8xNDc1NTk5MTk0MjY4MDAwIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjQuVElGIiwKICAgIm5hbWUiOiAiTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I0LlRJRiIsCiAgICJidWNrZXQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNDc1NTk5MTk0MjY4MDAwIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTYtMTAtMDRUMTY6Mzk6NTQuMjExWiIsCiAgICJ1cGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6Mzk6NTQuMjExWiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxNi0xMC0wNFQxNjozOTo1NC4yMTFaIiwKICAgInNpemUiOiAiODQ0OTQzNzUiLAogICAibWQ1SGFzaCI6ICJGV2VWQTAxWk8wK21BK0VSRmN6dWhBPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjQuVElGP2dlbmVyYXRpb249MTQ3NTU5OTE5NDI2ODAwMCZhbHQ9bWVkaWEiLAogICAiY3JjMzJjIjogIldlczVvUT09IiwKICAgImV0YWciOiAiQ09EQ3VLN0x3YzhDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I1LlRJRi8xNDc1NTk5MjAyOTc5MDAwIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjUuVElGIiwKICAgIm5hbWUiOiAiTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I1LlRJRiIsCiAgICJidWNrZXQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNDc1NTk5MjAyOTc5MDAwIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDA6MDIuOTM3WiIsCiAgICJ1cGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDA6MDIuOTM3WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxNi0xMC0wNFQxNjo0MDowMi45MzdaIiwKICAgInNpemUiOiAiODkzMTg0NjciLAogICAibWQ1SGFzaCI6ICJwNG95S0hBR281S3kzS2cxVEsxWlF3PT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjUuVElGP2dlbmVyYXRpb249MTQ3NTU5OTIwMjk3OTAwMCZhbHQ9bWVkaWEiLAogICAiY3JjMzJjIjogInBUWXV1dz09IiwKICAgImV0YWciOiAiQ0xpWnpMTEx3YzhDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I2LlRJRi8xNDc1NTk5MjMzNDgxMDAwIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjYuVElGIiwKICAgIm5hbWUiOiAiTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I2LlRJRiIsCiAgICJidWNrZXQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNDc1NTk5MjMzNDgxMDAwIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDA6MzMuMzQ5WiIsCiAgICJ1cGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDA6MzMuMzQ5WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxNi0xMC0wNFQxNjo0MDozMy4zNDlaIiwKICAgInNpemUiOiAiODk0NjU3NjciLAogICAibWQ1SGFzaCI6ICIyWjcyR1VPS3RsZ3pUOVZSU0dZWGpBPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjYuVElGP2dlbmVyYXRpb249MTQ3NTU5OTIzMzQ4MTAwMCZhbHQ9bWVkaWEiLAogICAiY3JjMzJjIjogIklOWEhiUT09IiwKICAgImV0YWciOiAiQ0tqeWtjSEx3YzhDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I3LlRJRi8xNDc1NTk5MjQxMDU1MDAwIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjcuVElGIiwKICAgIm5hbWUiOiAiTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I3LlRJRiIsCiAgICJidWNrZXQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNDc1NTk5MjQxMDU1MDAwIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDA6NDEuMDIxWiIsCiAgICJ1cGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDA6NDEuMDIxWiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxNi0xMC0wNFQxNjo0MDo0MS4wMjFaIiwKICAgInNpemUiOiAiODY0NjI2MTQiLAogICAibWQ1SGFzaCI6ICI4Z1BOUTdRWm9GMkNOWlo5RW1ybG9nPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjcuVElGP2dlbmVyYXRpb249MTQ3NTU5OTI0MTA1NTAwMCZhbHQ9bWVkaWEiLAogICAiY3JjMzJjIjogInV3Q0QrQT09IiwKICAgImV0YWciOiAiQ0ppVzRNVEx3YzhDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I4LlRJRi8xNDc1NTk5MjgxMzM4MDAwIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjguVElGIiwKICAgIm5hbWUiOiAiTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I4LlRJRiIsCiAgICJidWNrZXQiOiAiZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQiLAogICAiZ2VuZXJhdGlvbiI6ICIxNDc1NTk5MjgxMzM4MDAwIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDE6MjEuMzAwWiIsCiAgICJ1cGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDE6MjEuMzAwWiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxNi0xMC0wNFQxNjo0MToyMS4zMDBaIiwKICAgInNpemUiOiAiMzE4ODg3Nzc0IiwKICAgIm1kNUhhc2giOiAieTc5NUxyVXpCd2sydEw2UE0wMWNFQT09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvby9MQzA4JTJGUFJFJTJGMDQ0JTJGMDM0JTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwJTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I4LlRJRj9nZW5lcmF0aW9uPTE0NzU1OTkyODEzMzgwMDAmYWx0PW1lZGlhIiwKICAgImNyYzMyYyI6ICJaMytaaFE9PSIsCiAgICJldGFnIjogIkNKRHQrdGZMd2M4Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdjcC1wdWJsaWMtZGF0YS1sYW5kc2F0L0xDMDgvUFJFLzA0NC8wMzQvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwL0xDODA0NDAzNDIwMTYyNTlMR04wMF9COS5USUYvMTQ3NTU5OTI5MTQyNTAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvby9MQzA4JTJGUFJFJTJGMDQ0JTJGMDM0JTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwJTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I5LlRJRiIsCiAgICJuYW1lIjogIkxDMDgvUFJFLzA0NC8wMzQvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwL0xDODA0NDAzNDIwMTYyNTlMR04wMF9COS5USUYiLAogICAiYnVja2V0IjogImdjcC1wdWJsaWMtZGF0YS1sYW5kc2F0IiwKICAgImdlbmVyYXRpb24iOiAiMTQ3NTU5OTI5MTQyNTAwMCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE2LTEwLTA0VDE2OjQxOjMxLjM2MVoiLAogICAidXBkYXRlZCI6ICIyMDE2LTEwLTA0VDE2OjQxOjMxLjM2MVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDE6MzEuMzYxWiIsCiAgICJzaXplIjogIjQ0MzA4MjA1IiwKICAgIm1kNUhhc2giOiAiNUI0MUUyREJiWTUycFlQVUdWaDk1Zz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ2NwLXB1YmxpYy1kYXRhLWxhbmRzYXQvby9MQzA4JTJGUFJFJTJGMDQ0JTJGMDM0JTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwJTJGTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0I5LlRJRj9nZW5lcmF0aW9uPTE0NzU1OTkyOTE0MjUwMDAmYWx0PW1lZGlhIiwKICAgImNyYzMyYyI6ICJhME9EUXc9PSIsCiAgICJldGFnIjogIkNPakI0dHpMd2M4Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdjcC1wdWJsaWMtZGF0YS1sYW5kc2F0L0xDMDgvUFJFLzA0NC8wMzQvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwL0xDODA0NDAzNDIwMTYyNTlMR04wMF9CUUEuVElGLzE0NzU1OTkzMjcyMjIwMDAiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2djcC1wdWJsaWMtZGF0YS1sYW5kc2F0L28vTEMwOCUyRlBSRSUyRjA0NCUyRjAzNCUyRkxDODA0NDAzNDIwMTYyNTlMR04wMCUyRkxDODA0NDAzNDIwMTYyNTlMR04wMF9CUUEuVElGIiwKICAgIm5hbWUiOiAiTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0JRQS5USUYiLAogICAiYnVja2V0IjogImdjcC1wdWJsaWMtZGF0YS1sYW5kc2F0IiwKICAgImdlbmVyYXRpb24iOiAiMTQ3NTU5OTMyNzIyMjAwMCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE2LTEwLTA0VDE2OjQyOjA3LjE1OVoiLAogICAidXBkYXRlZCI6ICIyMDE2LTEwLTA0VDE2OjQyOjA3LjE1OVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDI6MDcuMTU5WiIsCiAgICJzaXplIjogIjMzNTQ3MTkiLAogICAibWQ1SGFzaCI6ICJ6cWlndmw1RW52bWkvR0xjOHlINTFBPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQlFBLlRJRj9nZW5lcmF0aW9uPTE0NzU1OTkzMjcyMjIwMDAmYWx0PW1lZGlhIiwKICAgImNyYzMyYyI6ICJXT0JnS0E9PSIsCiAgICJldGFnIjogIkNQQ3g2KzNMd2M4Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdjcC1wdWJsaWMtZGF0YS1sYW5kc2F0L0xDMDgvUFJFLzA0NC8wMzQvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwL0xDODA0NDAzNDIwMTYyNTlMR04wMF9NVEwudHh0LzE0NzU1OTkzMjc2NjIwMDAiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2djcC1wdWJsaWMtZGF0YS1sYW5kc2F0L28vTEMwOCUyRlBSRSUyRjA0NCUyRjAzNCUyRkxDODA0NDAzNDIwMTYyNTlMR04wMCUyRkxDODA0NDAzNDIwMTYyNTlMR04wMF9NVEwudHh0IiwKICAgIm5hbWUiOiAiTEMwOC9QUkUvMDQ0LzAzNC9MQzgwNDQwMzQyMDE2MjU5TEdOMDAvTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX01UTC50eHQiLAogICAiYnVja2V0IjogImdjcC1wdWJsaWMtZGF0YS1sYW5kc2F0IiwKICAgImdlbmVyYXRpb24iOiAiMTQ3NTU5OTMyNzY2MjAwMCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE2LTEwLTA0VDE2OjQyOjA3LjYxOFoiLAogICAidXBkYXRlZCI6ICIyMDE2LTEwLTA0VDE2OjQyOjA3LjYxOFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTYtMTAtMDRUMTY6NDI6MDcuNjE4WiIsCiAgICJzaXplIjogIjc5MDMiLAogICAibWQ1SGFzaCI6ICJlbC9VZER2V1IwaGZpRWx2cmJCY1VRPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nY3AtcHVibGljLWRhdGEtbGFuZHNhdC9vL0xDMDglMkZQUkUlMkYwNDQlMkYwMzQlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDAlMkZMQzgwNDQwMzQyMDE2MjU5TEdOMDBfTVRMLnR4dD9nZW5lcmF0aW9uPTE0NzU1OTkzMjc2NjIwMDAmYWx0PW1lZGlhIiwKICAgImNyYzMyYyI6ICJQV0J0OGc9PSIsCiAgICJldGFnIjogIkNMQ2ZodTdMd2M4Q0VBRT0iCiAgfQogXQp9Cg==" } }, { - "ID": "764021e93620b9eb", + "ID": "a8abe0f7374ed544", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/noauth", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/noauth", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -31885,13 +32368,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "da88ce6cc5bd0d1f42ba572cbbeef0df/9789914167716092271;o=0" + "259121fbdae714ba3b7e78771d50a123/11643411449027473764;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -31900,7 +32383,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/noauth" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/noauth" ] }, "Body": "" @@ -31908,9 +32391,11 @@ "Response": { "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" @@ -31922,28 +32407,28 @@ "application/xml; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:44 GMT" + "Wed, 25 Jul 2018 18:24:23 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:44 GMT" + "Wed, 25 Jul 2018 18:24:23 GMT" ], "Server": [ "UploadServer" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/4,/bns/xg/borg/xg/bns/blobstore2/bitpusher/39.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/483,/bns/yb/borg/yb/bns/blobstore2/bitpusher/523.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1E41W-vqE-Sx_QTLmYTIBg" + "eid=V8BYW9K4FsuWlAHb5ZnwAw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/39.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/523.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -31952,13 +32437,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/39:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/523:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Guploader-Customer": [ "cloud-storage" @@ -31970,36 +32455,36 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoBoQW-kDuFdMDIZS3N-CMa3TEIZAnB5tIMoGs5CL9Hg_BrcexuTyRUbDXNnGGWNPhSrIhSyNkSf6sx93NaQn8yMcaTEQ" + "AEnB2UrhsF8AjXK8hnUz8HsC2jhRBWJvPSXx9i_lvao-JCyQtE9r6OXKk1pv_Pj2FA_8N0ssjBcE7wXm7RFEMKV5k3R5mBF_sfVNzLnNwzMNzlLLG6UJOLY" ] }, - "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+QWNjZXNzRGVuaWVkPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPkFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuZ2V0IGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLjwvRGV0YWlscz48L0Vycm9yPg==" + "Body": "PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48RXJyb3I+PENvZGU+QWNjZXNzRGVuaWVkPC9Db2RlPjxNZXNzYWdlPkFjY2VzcyBkZW5pZWQuPC9NZXNzYWdlPjxEZXRhaWxzPkFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuZ2V0IGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLjwvRGV0YWlscz48L0Vycm9yPg==" } }, { - "ID": "d2d396fad8aaf80a", + "ID": "cd15305e871a0a78", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ "gzip" ], "Content-Type": [ - "multipart/related; boundary=e56b32213fdbed4ca1f1746d339782c9aee65039a09d8614685f16451c95" + "multipart/related; boundary=2f4c457f8993f7211b60f612dd75d3620433d07973d91ccc066fbef76306" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fb0f5c917d126b8f95e3691e3b4fac93/10525284449909332606;o=0" + "e9c8bf6887f95f2f880fe6b5d5057c7d/15427724027242214130;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -32008,20 +32493,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1lNTZiMzIyMTNmZGJlZDRjYTFmMTc0NmQzMzk3ODJjOWFlZTY1MDM5YTA5ZDg2MTQ2ODVmMTY0NTFjOTUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJub2F1dGgifQoNCi0tZTU2YjMyMjEzZmRiZWQ0Y2ExZjE3NDZkMzM5NzgyYzlhZWU2NTAzOWEwOWQ4NjE0Njg1ZjE2NDUxYzk1DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KYg0KLS1lNTZiMzIyMTNmZGJlZDRjYTFmMTc0NmQzMzk3ODJjOWFlZTY1MDM5YTA5ZDg2MTQ2ODVmMTY0NTFjOTUtLQ0K" + "Body": "LS0yZjRjNDU3Zjg5OTNmNzIxMWI2MGY2MTJkZDc1ZDM2MjA0MzNkMDc5NzNkOTFjY2MwNjZmYmVmNzYzMDYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJub2F1dGgifQoNCi0tMmY0YzQ1N2Y4OTkzZjcyMTFiNjBmNjEyZGQ3NWQzNjIwNDMzZDA3OTczZDkxY2NjMDY2ZmJlZjc2MzA2DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW4NCg0KYg0KLS0yZjRjNDU3Zjg5OTNmNzIxMWI2MGY2MTJkZDc1ZDM2MjA0MzNkMDc5NzNkOTFjY2MwNjZmYmVmNzYzMDYtLQ0K" }, "Response": { "StatusCode": 401, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "30809" @@ -32030,7 +32517,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:44 GMT" + "Wed, 25 Jul 2018 18:24:23 GMT" ], "Server": [ "UploadServer" @@ -32043,16 +32530,16 @@ "Bearer realm=\"https://accounts.google.com/\"" ], "X-Google-Backends": [ - "vrlk21:4108,/bns/yw/borg/yw/bns/blobstore2/bitpusher/575.scotty,acatli15:443" + "xiiadcae13:4169,/bns/xi/borg/xi/bns/blobstore2/bitpusher/13.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1E41W8bLJYy7N5zWgrgN" + "eid=V8BYW9jNJKu_swbmtYzYDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/575.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/13.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -32061,7 +32548,7 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/575:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/13:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" @@ -32082,14 +32569,14 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Ur7eHt_dtNs6w2VUmvmVVua67CJ0nu-Vna3XEcScfB8hski2ToweWug8lvPprHDjH4COQWQXI91genZjriTqHgFh_zkEuDKT_R626W4RtIHBw28etU" + "AEnB2UpTVxlAx6OVrsboJSyCWUFluSmZzFfGdnI_TEtBHw3SERG596NON8X_uMmNhzsWJuPIVdGztTts-JvqxhPKmkP2JAl74g" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguIiwKICAgICJsb2NhdGlvblR5cGUiOiAiaGVhZGVyIiwKICAgICJsb2NhdGlvbiI6ICJBdXRob3JpemF0aW9uIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1MT0dJTl9SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9Y29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUxPR0lOX1JFUVVJUkVELCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz11bmF1dGhvcml6ZWQsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL25vYXV0aC5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LmF1dGhlbnRpY2F0ZWRfdXNlciwgbWVzc2FnZT1Bbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL25vYXV0aC4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1oZWFkZXJzLkF1dGhvcml6YXRpb24sIG1lc3NhZ2U9QW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAxfSBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL25vYXV0aC46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL25vYXV0aC5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17V1dXLUF1dGhlbnRpY2F0ZT1bQmVhcmVyIHJlYWxtPVwiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL1wiXX0sIGh0dHBTdGF0dXM9dW5hdXRob3JpemVkLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFUVVJUkVELCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5hdXRoZW50aWNhdGVkX3VzZXIsIG1lc3NhZ2U9QW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249aGVhZGVycy5BdXRob3JpemF0aW9uLCBtZXNzYWdlPUFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLiwgcmVhc29uPXJlcXVpcmVkLCBycGNDb2RlPTQwMX0gQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL25vYXV0aC5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuYXV0aC5BdXRoZW50aWNhdG9ySW50ZXJjZXB0b3IuYWRkQ2hhbGxlbmdlSGVhZGVyKEF1dGhlbnRpY2F0b3JJbnRlcmNlcHRvci5qYXZhOjI2NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmF1dGguQXV0aGVudGljYXRvckludGVyY2VwdG9yLnByb2Nlc3NFcnJvclJlc3BvbnNlKEF1dGhlbnRpY2F0b3JJbnRlcmNlcHRvci5qYXZhOjIzMSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmF1dGguR2FpYU1pbnRJbnRlcmNlcHRvci5wcm9jZXNzRXJyb3JSZXNwb25zZShHYWlhTWludEludGVyY2VwdG9yLmphdmE6NzQ3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuQXJvdW5kSW50ZXJjZXB0b3JXcmFwcGVyLnByb2Nlc3NFcnJvclJlc3BvbnNlKEFyb3VuZEludGVyY2VwdG9yV3JhcHBlci5qYXZhOjI4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc3RhdHMuU3RhdHNCb290c3RyYXAkSW50ZXJjZXB0b3JTdGF0c1JlY29yZGVyLnByb2Nlc3NFcnJvclJlc3BvbnNlKFN0YXRzQm9vdHN0cmFwLmphdmE6MzEyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24uaGFuZGxlRXJyb3JSZXNwb25zZShJbnRlcmNlcHRpb25zLmphdmE6MjAyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24uYWNjZXNzJDIwMChJbnRlcmNlcHRpb25zLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24kMS5jYWxsKEludGVyY2VwdGlvbnMuamF2YToxNDQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLmludGVyY2VwdC5JbnRlcmNlcHRpb25zJEFyb3VuZEludGVyY2VwdGlvbiQxLmNhbGwoSW50ZXJjZXB0aW9ucy5qYXZhOjEzNylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0RXhjZXB0aW9uKEFic3RyYWN0RnV0dXJlLmphdmE6NzE2KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9TE9HSU5fUkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL25vYXV0aC5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPXVuYXV0aG9yaXplZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uUkVRVUlSRUQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL25vYXV0aC5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBlcnJvclByb3RvQ29kZT1SRVFVSVJFRCwgZXJyb3JQcm90b0RvbWFpbj1nZGF0YS5Db3JlRXJyb3JEb21haW4sIGZpbHRlcmVkTWVzc2FnZT1udWxsLCBsb2NhdGlvbj1lbnRpdHkuYXV0aGVudGljYXRlZF91c2VyLCBtZXNzYWdlPUFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLiwgdW5uYW1lZEFyZ3VtZW50cz1bXX0sIGxvY2F0aW9uPWhlYWRlcnMuQXV0aG9yaXphdGlvbiwgbWVzc2FnZT1Bbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL25vYXV0aC4sIHJlYXNvbj1yZXF1aXJlZCwgcnBjQ29kZT00MDF9IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdC4uLiAxOSBtb3JlXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAxLAogICJtZXNzYWdlIjogIkFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvbm9hdXRoLiIKIH0KfQo=" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAicmVxdWlyZWQiLAogICAgIm1lc3NhZ2UiOiAiQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguIiwKICAgICJsb2NhdGlvblR5cGUiOiAiaGVhZGVyIiwKICAgICJsb2NhdGlvbiI6ICJBdXRob3JpemF0aW9uIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1MT0dJTl9SRVFVSVJFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9Y29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRmF1bHQ6IEltbXV0YWJsZUVycm9yRGVmaW5pdGlvbntiYXNlPUxPR0lOX1JFUVVJUkVELCBjYXRlZ29yeT1VU0VSX0VSUk9SLCBjYXVzZT1udWxsLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz11bmF1dGhvcml6ZWQsIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLlJFUVVJUkVELCBjcmVhdGVkQnlCYWNrZW5kPXRydWUsIGRlYnVnTWVzc2FnZT1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL25vYXV0aC5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9UkVRVUlSRUQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LmF1dGhlbnRpY2F0ZWRfdXNlciwgbWVzc2FnZT1Bbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL25vYXV0aC4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1oZWFkZXJzLkF1dGhvcml6YXRpb24sIG1lc3NhZ2U9QW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguLCByZWFzb249cmVxdWlyZWQsIHJwY0NvZGU9NDAxfSBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL25vYXV0aC46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL25vYXV0aC5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBkZWJ1Z0luZm89Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17V1dXLUF1dGhlbnRpY2F0ZT1bQmVhcmVyIHJlYWxtPVwiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tL1wiXX0sIGh0dHBTdGF0dXM9dW5hdXRob3JpemVkLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5SRVFVSVJFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPVJFUVVJUkVELCBlcnJvclByb3RvRG9tYWluPWdkYXRhLkNvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5hdXRoZW50aWNhdGVkX3VzZXIsIG1lc3NhZ2U9QW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249aGVhZGVycy5BdXRob3JpemF0aW9uLCBtZXNzYWdlPUFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLiwgcmVhc29uPXJlcXVpcmVkLCBycGNDb2RlPTQwMX0gQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL25vYXV0aC5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuYXV0aC5BdXRoZW50aWNhdG9ySW50ZXJjZXB0b3IuYWRkQ2hhbGxlbmdlSGVhZGVyKEF1dGhlbnRpY2F0b3JJbnRlcmNlcHRvci5qYXZhOjI2NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmF1dGguQXV0aGVudGljYXRvckludGVyY2VwdG9yLnByb2Nlc3NFcnJvclJlc3BvbnNlKEF1dGhlbnRpY2F0b3JJbnRlcmNlcHRvci5qYXZhOjIzMSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmF1dGguR2FpYU1pbnRJbnRlcmNlcHRvci5wcm9jZXNzRXJyb3JSZXNwb25zZShHYWlhTWludEludGVyY2VwdG9yLmphdmE6NzQ1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuQXJvdW5kSW50ZXJjZXB0b3JXcmFwcGVyLnByb2Nlc3NFcnJvclJlc3BvbnNlKEFyb3VuZEludGVyY2VwdG9yV3JhcHBlci5qYXZhOjI4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc3RhdHMuU3RhdHNCb290c3RyYXAkSW50ZXJjZXB0b3JTdGF0c1JlY29yZGVyLnByb2Nlc3NFcnJvclJlc3BvbnNlKFN0YXRzQm9vdHN0cmFwLmphdmE6MzEyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24uaGFuZGxlRXJyb3JSZXNwb25zZShJbnRlcmNlcHRpb25zLmphdmE6MjAyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24uYWNjZXNzJDIwMChJbnRlcmNlcHRpb25zLmphdmE6MTAzKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5pbnRlcmNlcHQuSW50ZXJjZXB0aW9ucyRBcm91bmRJbnRlcmNlcHRpb24kMS5jYWxsKEludGVyY2VwdGlvbnMuamF2YToxNDQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLmludGVyY2VwdC5JbnRlcmNlcHRpb25zJEFyb3VuZEludGVyY2VwdGlvbiQxLmNhbGwoSW50ZXJjZXB0aW9ucy5qYXZhOjEzNylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0RXhjZXB0aW9uKEFic3RyYWN0RnV0dXJlLmphdmE6NzE2KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjY4KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9TE9HSU5fUkVRVUlSRUQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjI3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6NjEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmluc2VydChPYmplY3RzRGVsZWdhdG9yLmphdmE6OTUpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL25vYXV0aC5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPXVuYXV0aG9yaXplZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uUkVRVUlSRUQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBBbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL25vYXV0aC5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkluc2VydE9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0T2JqZWN0LmphdmE6Mjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YTo2MSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuaW5zZXJ0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo5NSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBlcnJvclByb3RvQ29kZT1SRVFVSVJFRCwgZXJyb3JQcm90b0RvbWFpbj1nZGF0YS5Db3JlRXJyb3JEb21haW4sIGZpbHRlcmVkTWVzc2FnZT1udWxsLCBsb2NhdGlvbj1lbnRpdHkuYXV0aGVudGljYXRlZF91c2VyLCBtZXNzYWdlPUFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLiwgdW5uYW1lZEFyZ3VtZW50cz1bXX0sIGxvY2F0aW9uPWhlYWRlcnMuQXV0aG9yaXphdGlvbiwgbWVzc2FnZT1Bbm9ueW1vdXMgY2FsbGVyIGRvZXMgbm90IGhhdmUgc3RvcmFnZS5vYmplY3RzLmNyZWF0ZSBhY2Nlc3MgdG8gZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL25vYXV0aC4sIHJlYXNvbj1yZXF1aXJlZCwgcnBjQ29kZT00MDF9IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuSW5zZXJ0T2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRPYmplY3QuamF2YToyNzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5JbnNlcnRPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydE9iamVjdC5qYXZhOjYxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5pbnNlcnQoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjk1KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQW5vbnltb3VzIGNhbGxlciBkb2VzIG5vdCBoYXZlIHN0b3JhZ2Uub2JqZWN0cy5jcmVhdGUgYWNjZXNzIHRvIGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9ub2F1dGguXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdC4uLiAxOSBtb3JlXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDAxLAogICJtZXNzYWdlIjogIkFub255bW91cyBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdG9yYWdlLm9iamVjdHMuY3JlYXRlIGFjY2VzcyB0byBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvbm9hdXRoLiIKIH0KfQo=" } }, { - "ID": "e75f23df89243dfc", + "ID": "3fdfe23f518a33c4", "Request": { "Method": "GET", "URL": "https://storage.googleapis.com/gcp-public-data-landsat/LC08/PRE/044/034/LC80440342016259LGN00/LC80440342016259LGN00_MTL.txt", @@ -32102,13 +32589,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "797b24837800d6e63c59101acbe1e954/12140418383108201886;o=0" + "9df0c8eb3ba90a5455799db8e152a0df/4622224545868706575;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -32125,12 +32612,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=3600" @@ -32142,13 +32631,13 @@ "application/octet-stream" ], "Date": [ - "Thu, 28 Jun 2018 21:10:45 GMT" + "Wed, 25 Jul 2018 18:24:23 GMT" ], "Etag": [ "\"7a5fd4743bd647485f88496fadb05c51\"" ], "Expires": [ - "Thu, 28 Jun 2018 22:10:45 GMT" + "Wed, 25 Jul 2018 19:24:23 GMT" ], "Last-Modified": [ "Tue, 04 Oct 2016 16:42:07 GMT" @@ -32176,19 +32665,19 @@ "7903" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/9,/bns/xg/borg/xg/bns/blobstore2/bitpusher/10.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/361,/bns/yb/borg/yb/bns/blobstore2/bitpusher/548.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1E41W9utOuqy_QSHmIa4Dg" + "eid=V8BYW8ziONXslQG005-QDg" ], "X-Google-Gfe-Cloud-Project-Number": [ "570399209098" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/10.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/548.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -32197,13 +32686,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/10:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/548:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -32218,14 +32707,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrmIqndPdGu2TCqIhuZVI7wBHjGYcb5dgXBcYtUCAzOQUwcWVrz-dLXL9Scslzf6N9kLMj59YMl5y45RkLFfDeGKdbMsw" + "AEnB2UoixUGB17mkvbscCgZOegnvJ3_aVOjwZAIVD0kkUD5-4y1_EsNL1e23nCpRoEyqCiOhPLZuit7SGFKDStJsAT4U56DIU25SdGjPDIWiox8MjbOuZog" ] }, "Body": "R1JPVVAgPSBMMV9NRVRBREFUQV9GSUxFCiAgR1JPVVAgPSBNRVRBREFUQV9GSUxFX0lORk8KICAgIE9SSUdJTiA9ICJJbWFnZSBjb3VydGVzeSBvZiB0aGUgVS5TLiBHZW9sb2dpY2FsIFN1cnZleSIKICAgIFJFUVVFU1RfSUQgPSAiMDcwMTYwOTE5MTA1MV8wMDAwNCIKICAgIExBTkRTQVRfU0NFTkVfSUQgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwIgogICAgRklMRV9EQVRFID0gMjAxNi0wOS0yMFQwMzoxMzowMloKICAgIFNUQVRJT05fSUQgPSAiTEdOIgogICAgUFJPQ0VTU0lOR19TT0ZUV0FSRV9WRVJTSU9OID0gIkxQR1NfMi42LjIiCiAgRU5EX0dST1VQID0gTUVUQURBVEFfRklMRV9JTkZPCiAgR1JPVVAgPSBQUk9EVUNUX01FVEFEQVRBCiAgICBEQVRBX1RZUEUgPSAiTDFUIgogICAgRUxFVkFUSU9OX1NPVVJDRSA9ICJHTFMyMDAwIgogICAgT1VUUFVUX0ZPUk1BVCA9ICJHRU9USUZGIgogICAgU1BBQ0VDUkFGVF9JRCA9ICJMQU5EU0FUXzgiCiAgICBTRU5TT1JfSUQgPSAiT0xJX1RJUlMiCiAgICBXUlNfUEFUSCA9IDQ0CiAgICBXUlNfUk9XID0gMzQKICAgIE5BRElSX09GRk5BRElSID0gIk5BRElSIgogICAgVEFSR0VUX1dSU19QQVRIID0gNDQKICAgIFRBUkdFVF9XUlNfUk9XID0gMzQKICAgIERBVEVfQUNRVUlSRUQgPSAyMDE2LTA5LTE1CiAgICBTQ0VORV9DRU5URVJfVElNRSA9ICIxODo0NjoxOC42ODY3MzgwWiIKICAgIENPUk5FUl9VTF9MQVRfUFJPRFVDVCA9IDM4LjUyODE5CiAgICBDT1JORVJfVUxfTE9OX1BST0RVQ1QgPSAtMTIzLjQwODQzCiAgICBDT1JORVJfVVJfTEFUX1BST0RVQ1QgPSAzOC41MDc2NQogICAgQ09STkVSX1VSX0xPTl9QUk9EVUNUID0gLTEyMC43NjkzMwogICAgQ09STkVSX0xMX0xBVF9QUk9EVUNUID0gMzYuNDE2MzMKICAgIENPUk5FUl9MTF9MT05fUFJPRFVDVCA9IC0xMjMuMzk3MDkKICAgIENPUk5FUl9MUl9MQVRfUFJPRFVDVCA9IDM2LjM5NzI5CiAgICBDT1JORVJfTFJfTE9OX1BST0RVQ1QgPSAtMTIwLjgzMTE3CiAgICBDT1JORVJfVUxfUFJPSkVDVElPTl9YX1BST0RVQ1QgPSA0NjQ0MDAuMDAwCiAgICBDT1JORVJfVUxfUFJPSkVDVElPTl9ZX1BST0RVQ1QgPSA0MjY0NTAwLjAwMAogICAgQ09STkVSX1VSX1BST0pFQ1RJT05fWF9QUk9EVUNUID0gNjk0NTAwLjAwMAogICAgQ09STkVSX1VSX1BST0pFQ1RJT05fWV9QUk9EVUNUID0gNDI2NDUwMC4wMDAKICAgIENPUk5FUl9MTF9QUk9KRUNUSU9OX1hfUFJPRFVDVCA9IDQ2NDQwMC4wMDAKICAgIENPUk5FUl9MTF9QUk9KRUNUSU9OX1lfUFJPRFVDVCA9IDQwMzAyMDAuMDAwCiAgICBDT1JORVJfTFJfUFJPSkVDVElPTl9YX1BST0RVQ1QgPSA2OTQ1MDAuMDAwCiAgICBDT1JORVJfTFJfUFJPSkVDVElPTl9ZX1BST0RVQ1QgPSA0MDMwMjAwLjAwMAogICAgUEFOQ0hST01BVElDX0xJTkVTID0gMTU2MjEKICAgIFBBTkNIUk9NQVRJQ19TQU1QTEVTID0gMTUzNDEKICAgIFJFRkxFQ1RJVkVfTElORVMgPSA3ODExCiAgICBSRUZMRUNUSVZFX1NBTVBMRVMgPSA3NjcxCiAgICBUSEVSTUFMX0xJTkVTID0gNzgxMQogICAgVEhFUk1BTF9TQU1QTEVTID0gNzY3MQogICAgRklMRV9OQU1FX0JBTkRfMSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjEuVElGIgogICAgRklMRV9OQU1FX0JBTkRfMiA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjIuVElGIgogICAgRklMRV9OQU1FX0JBTkRfMyA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjMuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNCA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjQuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjUuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNiA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjYuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNyA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjcuVElGIgogICAgRklMRV9OQU1FX0JBTkRfOCA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjguVElGIgogICAgRklMRV9OQU1FX0JBTkRfOSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjkuVElGIgogICAgRklMRV9OQU1FX0JBTkRfMTAgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0IxMC5USUYiCiAgICBGSUxFX05BTUVfQkFORF8xMSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjExLlRJRiIKICAgIEZJTEVfTkFNRV9CQU5EX1FVQUxJVFkgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0JRQS5USUYiCiAgICBNRVRBREFUQV9GSUxFX05BTUUgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX01UTC50eHQiCiAgICBCUEZfTkFNRV9PTEkgPSAiTE84QlBGMjAxNjA5MTUxODMwNTdfMjAxNjA5MTUyMDA5NTAuMDEiCiAgICBCUEZfTkFNRV9USVJTID0gIkxUOEJQRjIwMTYwOTAyMDg0MTIyXzIwMTYwOTE3MDc0MDI3LjAyIgogICAgQ1BGX05BTUUgPSAiTDhDUEYyMDE2MDcwMV8yMDE2MDkzMC4wMiIKICAgIFJMVVRfRklMRV9OQU1FID0gIkw4UkxVVDIwMTUwMzAzXzIwNDMxMjMxdjExLmg1IgogIEVORF9HUk9VUCA9IFBST0RVQ1RfTUVUQURBVEEKICBHUk9VUCA9IElNQUdFX0FUVFJJQlVURVMKICAgIENMT1VEX0NPVkVSID0gMjkuNTYKICAgIENMT1VEX0NPVkVSX0xBTkQgPSAzLjMzCiAgICBJTUFHRV9RVUFMSVRZX09MSSA9IDkKICAgIElNQUdFX1FVQUxJVFlfVElSUyA9IDkKICAgIFRJUlNfU1NNX01PREVMID0gIkZJTkFMIgogICAgVElSU19TU01fUE9TSVRJT05fU1RBVFVTID0gIkVTVElNQVRFRCIKICAgIFJPTExfQU5HTEUgPSAtMC4wMDEKICAgIFNVTl9BWklNVVRIID0gMTQ4LjQ4MDQ5Mzk2CiAgICBTVU5fRUxFVkFUSU9OID0gNTAuOTM3NjgzOTkKICAgIEVBUlRIX1NVTl9ESVNUQU5DRSA9IDEuMDA1Mzc1MgogICAgR1JPVU5EX0NPTlRST0xfUE9JTlRTX1ZFUlNJT04gPSA0CiAgICBHUk9VTkRfQ09OVFJPTF9QT0lOVFNfTU9ERUwgPSA1NDgKICAgIEdFT01FVFJJQ19STVNFX01PREVMID0gNS44NTcKICAgIEdFT01FVFJJQ19STVNFX01PREVMX1kgPSAzLjg0MQogICAgR0VPTUVUUklDX1JNU0VfTU9ERUxfWCA9IDQuNDIyCiAgICBHUk9VTkRfQ09OVFJPTF9QT0lOVFNfVkVSSUZZID0gMjI4CiAgICBHRU9NRVRSSUNfUk1TRV9WRVJJRlkgPSAzLjM4MgogIEVORF9HUk9VUCA9IElNQUdFX0FUVFJJQlVURVMKICBHUk9VUCA9IE1JTl9NQVhfUkFESUFOQ0UKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF8xID0gNzUxLjk1NzA5CiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfMSA9IC02Mi4wOTY4NgogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzIgPSA3NzAuMDEzMTgKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF8yID0gLTYzLjU4Nzk0CiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfMyA9IDcwOS41NjA2MQogICAgUkFESUFOQ0VfTUlOSU1VTV9CQU5EXzMgPSAtNTguNTk1NzUKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF80ID0gNTk4LjM0MTQ5CiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfNCA9IC00OS40MTEyMwogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzUgPSAzNjYuMTU1MTUKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF81ID0gLTMwLjIzNzIxCiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfNiA9IDkxLjA1OTQ2CiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfNiA9IC03LjUxOTcyCiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfNyA9IDMwLjY5MTkxCiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfNyA9IC0yLjUzNDU1CiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfOCA9IDY3Ny4xNTc4NAogICAgUkFESUFOQ0VfTUlOSU1VTV9CQU5EXzggPSAtNTUuOTE5OTIKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF85ID0gMTQzLjEwMTczCiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfOSA9IC0xMS44MTczOQogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzEwID0gMjIuMDAxODAKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF8xMCA9IDAuMTAwMzMKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF8xMSA9IDIyLjAwMTgwCiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfMTEgPSAwLjEwMDMzCiAgRU5EX0dST1VQID0gTUlOX01BWF9SQURJQU5DRQogIEdST1VQID0gTUlOX01BWF9SRUZMRUNUQU5DRQogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzEgPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzEgPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF8yID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF8yID0gLTAuMDk5OTgwCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfMyA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfMyA9IC0wLjA5OTk4MAogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzQgPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzQgPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF81ID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF81ID0gLTAuMDk5OTgwCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfNiA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfNiA9IC0wLjA5OTk4MAogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzcgPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzcgPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF84ID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF84ID0gLTAuMDk5OTgwCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfOSA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfOSA9IC0wLjA5OTk4MAogIEVORF9HUk9VUCA9IE1JTl9NQVhfUkVGTEVDVEFOQ0UKICBHUk9VUCA9IE1JTl9NQVhfUElYRUxfVkFMVUUKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF8xID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF8xID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzIgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzIgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfMyA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfMyA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF80ID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF80ID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzUgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzUgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfNiA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfNiA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF83ID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF83ID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzggPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzggPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfOSA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfOSA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF8xMCA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfMTAgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfMTEgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzExID0gMQogIEVORF9HUk9VUCA9IE1JTl9NQVhfUElYRUxfVkFMVUUKICBHUk9VUCA9IFJBRElPTUVUUklDX1JFU0NBTElORwogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzEgPSAxLjI0MjJFLTAyCiAgICBSQURJQU5DRV9NVUxUX0JBTkRfMiA9IDEuMjcyMEUtMDIKICAgIFJBRElBTkNFX01VTFRfQkFORF8zID0gMS4xNzIxRS0wMgogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzQgPSA5Ljg4NDJFLTAzCiAgICBSQURJQU5DRV9NVUxUX0JBTkRfNSA9IDYuMDQ4N0UtMDMKICAgIFJBRElBTkNFX01VTFRfQkFORF82ID0gMS41MDQyRS0wMwogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzcgPSA1LjA3MDFFLTA0CiAgICBSQURJQU5DRV9NVUxUX0JBTkRfOCA9IDEuMTE4NkUtMDIKICAgIFJBRElBTkNFX01VTFRfQkFORF85ID0gMi4zNjQwRS0wMwogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzEwID0gMy4zNDIwRS0wNAogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzExID0gMy4zNDIwRS0wNAogICAgUkFESUFOQ0VfQUREX0JBTkRfMSA9IC02Mi4xMDkyOAogICAgUkFESUFOQ0VfQUREX0JBTkRfMiA9IC02My42MDA2NgogICAgUkFESUFOQ0VfQUREX0JBTkRfMyA9IC01OC42MDc0NwogICAgUkFESUFOQ0VfQUREX0JBTkRfNCA9IC00OS40MjExMgogICAgUkFESUFOQ0VfQUREX0JBTkRfNSA9IC0zMC4yNDMyNgogICAgUkFESUFOQ0VfQUREX0JBTkRfNiA9IC03LjUyMTIyCiAgICBSQURJQU5DRV9BRERfQkFORF83ID0gLTIuNTM1MDUKICAgIFJBRElBTkNFX0FERF9CQU5EXzggPSAtNTUuOTMxMTAKICAgIFJBRElBTkNFX0FERF9CQU5EXzkgPSAtMTEuODE5NzUKICAgIFJBRElBTkNFX0FERF9CQU5EXzEwID0gMC4xMDAwMAogICAgUkFESUFOQ0VfQUREX0JBTkRfMTEgPSAwLjEwMDAwCiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfMSA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF8yID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzMgPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfNCA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF81ID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzYgPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfNyA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF84ID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzkgPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF8xID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF8yID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF8zID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF80ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF81ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF82ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF83ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF84ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF85ID0gLTAuMTAwMDAwCiAgRU5EX0dST1VQID0gUkFESU9NRVRSSUNfUkVTQ0FMSU5HCiAgR1JPVVAgPSBUSVJTX1RIRVJNQUxfQ09OU1RBTlRTCiAgICBLMV9DT05TVEFOVF9CQU5EXzEwID0gNzc0Ljg4NTMKICAgIEsxX0NPTlNUQU5UX0JBTkRfMTEgPSA0ODAuODg4MwogICAgSzJfQ09OU1RBTlRfQkFORF8xMCA9IDEzMjEuMDc4OQogICAgSzJfQ09OU1RBTlRfQkFORF8xMSA9IDEyMDEuMTQ0MgogIEVORF9HUk9VUCA9IFRJUlNfVEhFUk1BTF9DT05TVEFOVFMKICBHUk9VUCA9IFBST0pFQ1RJT05fUEFSQU1FVEVSUwogICAgTUFQX1BST0pFQ1RJT04gPSAiVVRNIgogICAgREFUVU0gPSAiV0dTODQiCiAgICBFTExJUFNPSUQgPSAiV0dTODQiCiAgICBVVE1fWk9ORSA9IDEwCiAgICBHUklEX0NFTExfU0laRV9QQU5DSFJPTUFUSUMgPSAxNS4wMAogICAgR1JJRF9DRUxMX1NJWkVfUkVGTEVDVElWRSA9IDMwLjAwCiAgICBHUklEX0NFTExfU0laRV9USEVSTUFMID0gMzAuMDAKICAgIE9SSUVOVEFUSU9OID0gIk5PUlRIX1VQIgogICAgUkVTQU1QTElOR19PUFRJT04gPSAiQ1VCSUNfQ09OVk9MVVRJT04iCiAgRU5EX0dST1VQID0gUFJPSkVDVElPTl9QQVJBTUVURVJTCkVORF9HUk9VUCA9IEwxX01FVEFEQVRBX0ZJTEUKRU5ECg==" } }, { - "ID": "24893384f5f5f4b6", + "ID": "a2321aa394b7a664", "Request": { "Method": "GET", "URL": "https://storage.googleapis.com/gcp-public-data-landsat/LC08/PRE/044/034/LC80440342016259LGN00/LC80440342016259LGN00_MTL.txt", @@ -32238,13 +32727,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "7677b42b76ca1c3f25515d3073059443/13755553415801987261;o=0" + "ca0dc402c90b3b86298a0a477b7181eb/12263186568028156971;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -32261,12 +32750,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=3600" @@ -32278,13 +32769,13 @@ "application/octet-stream" ], "Date": [ - "Thu, 28 Jun 2018 21:10:45 GMT" + "Wed, 25 Jul 2018 18:24:24 GMT" ], "Etag": [ "\"7a5fd4743bd647485f88496fadb05c51\"" ], "Expires": [ - "Thu, 28 Jun 2018 22:10:45 GMT" + "Wed, 25 Jul 2018 19:24:24 GMT" ], "Last-Modified": [ "Tue, 04 Oct 2016 16:42:07 GMT" @@ -32312,19 +32803,19 @@ "7903" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/64,/bns/xg/borg/xg/bns/blobstore2/bitpusher/40.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/189,/bns/yb/borg/yb/bns/blobstore2/bitpusher/37.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1U41W7DOAue3_QS0wLWABw" + "eid=V8BYW67APMKElgGSjJy4DQ" ], "X-Google-Gfe-Cloud-Project-Number": [ "570399209098" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/40.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/37.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -32333,13 +32824,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/40:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/37:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -32354,14 +32845,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpsxU6E96rFeQIdjKxqWIMvOLq1qwVeADCBNGKaF3h2uHyIycPME7UeWBscS7gYtJaBR7iid4ZqEWrTTltQivfD_IN-dg" + "AEnB2UrDL7IMEOyeI_YQeKTKmJx59LOIJsMZW4hv3hTZ3038gysU0nNby2-wI1GDQe0IG6kHLiIu0NBU4omKwpxHm0-Be0iff_CDUshakXHd1nkRLtHmits" ] }, "Body": "R1JPVVAgPSBMMV9NRVRBREFUQV9GSUxFCiAgR1JPVVAgPSBNRVRBREFUQV9GSUxFX0lORk8KICAgIE9SSUdJTiA9ICJJbWFnZSBjb3VydGVzeSBvZiB0aGUgVS5TLiBHZW9sb2dpY2FsIFN1cnZleSIKICAgIFJFUVVFU1RfSUQgPSAiMDcwMTYwOTE5MTA1MV8wMDAwNCIKICAgIExBTkRTQVRfU0NFTkVfSUQgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwIgogICAgRklMRV9EQVRFID0gMjAxNi0wOS0yMFQwMzoxMzowMloKICAgIFNUQVRJT05fSUQgPSAiTEdOIgogICAgUFJPQ0VTU0lOR19TT0ZUV0FSRV9WRVJTSU9OID0gIkxQR1NfMi42LjIiCiAgRU5EX0dST1VQID0gTUVUQURBVEFfRklMRV9JTkZPCiAgR1JPVVAgPSBQUk9EVUNUX01FVEFEQVRBCiAgICBEQVRBX1RZUEUgPSAiTDFUIgogICAgRUxFVkFUSU9OX1NPVVJDRSA9ICJHTFMyMDAwIgogICAgT1VUUFVUX0ZPUk1BVCA9ICJHRU9USUZGIgogICAgU1BBQ0VDUkFGVF9JRCA9ICJMQU5EU0FUXzgiCiAgICBTRU5TT1JfSUQgPSAiT0xJX1RJUlMiCiAgICBXUlNfUEFUSCA9IDQ0CiAgICBXUlNfUk9XID0gMzQKICAgIE5BRElSX09GRk5BRElSID0gIk5BRElSIgogICAgVEFSR0VUX1dSU19QQVRIID0gNDQKICAgIFRBUkdFVF9XUlNfUk9XID0gMzQKICAgIERBVEVfQUNRVUlSRUQgPSAyMDE2LTA5LTE1CiAgICBTQ0VORV9DRU5URVJfVElNRSA9ICIxODo0NjoxOC42ODY3MzgwWiIKICAgIENPUk5FUl9VTF9MQVRfUFJPRFVDVCA9IDM4LjUyODE5CiAgICBDT1JORVJfVUxfTE9OX1BST0RVQ1QgPSAtMTIzLjQwODQzCiAgICBDT1JORVJfVVJfTEFUX1BST0RVQ1QgPSAzOC41MDc2NQogICAgQ09STkVSX1VSX0xPTl9QUk9EVUNUID0gLTEyMC43NjkzMwogICAgQ09STkVSX0xMX0xBVF9QUk9EVUNUID0gMzYuNDE2MzMKICAgIENPUk5FUl9MTF9MT05fUFJPRFVDVCA9IC0xMjMuMzk3MDkKICAgIENPUk5FUl9MUl9MQVRfUFJPRFVDVCA9IDM2LjM5NzI5CiAgICBDT1JORVJfTFJfTE9OX1BST0RVQ1QgPSAtMTIwLjgzMTE3CiAgICBDT1JORVJfVUxfUFJPSkVDVElPTl9YX1BST0RVQ1QgPSA0NjQ0MDAuMDAwCiAgICBDT1JORVJfVUxfUFJPSkVDVElPTl9ZX1BST0RVQ1QgPSA0MjY0NTAwLjAwMAogICAgQ09STkVSX1VSX1BST0pFQ1RJT05fWF9QUk9EVUNUID0gNjk0NTAwLjAwMAogICAgQ09STkVSX1VSX1BST0pFQ1RJT05fWV9QUk9EVUNUID0gNDI2NDUwMC4wMDAKICAgIENPUk5FUl9MTF9QUk9KRUNUSU9OX1hfUFJPRFVDVCA9IDQ2NDQwMC4wMDAKICAgIENPUk5FUl9MTF9QUk9KRUNUSU9OX1lfUFJPRFVDVCA9IDQwMzAyMDAuMDAwCiAgICBDT1JORVJfTFJfUFJPSkVDVElPTl9YX1BST0RVQ1QgPSA2OTQ1MDAuMDAwCiAgICBDT1JORVJfTFJfUFJPSkVDVElPTl9ZX1BST0RVQ1QgPSA0MDMwMjAwLjAwMAogICAgUEFOQ0hST01BVElDX0xJTkVTID0gMTU2MjEKICAgIFBBTkNIUk9NQVRJQ19TQU1QTEVTID0gMTUzNDEKICAgIFJFRkxFQ1RJVkVfTElORVMgPSA3ODExCiAgICBSRUZMRUNUSVZFX1NBTVBMRVMgPSA3NjcxCiAgICBUSEVSTUFMX0xJTkVTID0gNzgxMQogICAgVEhFUk1BTF9TQU1QTEVTID0gNzY3MQogICAgRklMRV9OQU1FX0JBTkRfMSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjEuVElGIgogICAgRklMRV9OQU1FX0JBTkRfMiA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjIuVElGIgogICAgRklMRV9OQU1FX0JBTkRfMyA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjMuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNCA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjQuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjUuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNiA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjYuVElGIgogICAgRklMRV9OQU1FX0JBTkRfNyA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjcuVElGIgogICAgRklMRV9OQU1FX0JBTkRfOCA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjguVElGIgogICAgRklMRV9OQU1FX0JBTkRfOSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjkuVElGIgogICAgRklMRV9OQU1FX0JBTkRfMTAgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0IxMC5USUYiCiAgICBGSUxFX05BTUVfQkFORF8xMSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjExLlRJRiIKICAgIEZJTEVfTkFNRV9CQU5EX1FVQUxJVFkgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX0JRQS5USUYiCiAgICBNRVRBREFUQV9GSUxFX05BTUUgPSAiTEM4MDQ0MDM0MjAxNjI1OUxHTjAwX01UTC50eHQiCiAgICBCUEZfTkFNRV9PTEkgPSAiTE84QlBGMjAxNjA5MTUxODMwNTdfMjAxNjA5MTUyMDA5NTAuMDEiCiAgICBCUEZfTkFNRV9USVJTID0gIkxUOEJQRjIwMTYwOTAyMDg0MTIyXzIwMTYwOTE3MDc0MDI3LjAyIgogICAgQ1BGX05BTUUgPSAiTDhDUEYyMDE2MDcwMV8yMDE2MDkzMC4wMiIKICAgIFJMVVRfRklMRV9OQU1FID0gIkw4UkxVVDIwMTUwMzAzXzIwNDMxMjMxdjExLmg1IgogIEVORF9HUk9VUCA9IFBST0RVQ1RfTUVUQURBVEEKICBHUk9VUCA9IElNQUdFX0FUVFJJQlVURVMKICAgIENMT1VEX0NPVkVSID0gMjkuNTYKICAgIENMT1VEX0NPVkVSX0xBTkQgPSAzLjMzCiAgICBJTUFHRV9RVUFMSVRZX09MSSA9IDkKICAgIElNQUdFX1FVQUxJVFlfVElSUyA9IDkKICAgIFRJUlNfU1NNX01PREVMID0gIkZJTkFMIgogICAgVElSU19TU01fUE9TSVRJT05fU1RBVFVTID0gIkVTVElNQVRFRCIKICAgIFJPTExfQU5HTEUgPSAtMC4wMDEKICAgIFNVTl9BWklNVVRIID0gMTQ4LjQ4MDQ5Mzk2CiAgICBTVU5fRUxFVkFUSU9OID0gNTAuOTM3NjgzOTkKICAgIEVBUlRIX1NVTl9ESVNUQU5DRSA9IDEuMDA1Mzc1MgogICAgR1JPVU5EX0NPTlRST0xfUE9JTlRTX1ZFUlNJT04gPSA0CiAgICBHUk9VTkRfQ09OVFJPTF9QT0lOVFNfTU9ERUwgPSA1NDgKICAgIEdFT01FVFJJQ19STVNFX01PREVMID0gNS44NTcKICAgIEdFT01FVFJJQ19STVNFX01PREVMX1kgPSAzLjg0MQogICAgR0VPTUVUUklDX1JNU0VfTU9ERUxfWCA9IDQuNDIyCiAgICBHUk9VTkRfQ09OVFJPTF9QT0lOVFNfVkVSSUZZID0gMjI4CiAgICBHRU9NRVRSSUNfUk1TRV9WRVJJRlkgPSAzLjM4MgogIEVORF9HUk9VUCA9IElNQUdFX0FUVFJJQlVURVMKICBHUk9VUCA9IE1JTl9NQVhfUkFESUFOQ0UKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF8xID0gNzUxLjk1NzA5CiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfMSA9IC02Mi4wOTY4NgogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzIgPSA3NzAuMDEzMTgKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF8yID0gLTYzLjU4Nzk0CiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfMyA9IDcwOS41NjA2MQogICAgUkFESUFOQ0VfTUlOSU1VTV9CQU5EXzMgPSAtNTguNTk1NzUKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF80ID0gNTk4LjM0MTQ5CiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfNCA9IC00OS40MTEyMwogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzUgPSAzNjYuMTU1MTUKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF81ID0gLTMwLjIzNzIxCiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfNiA9IDkxLjA1OTQ2CiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfNiA9IC03LjUxOTcyCiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfNyA9IDMwLjY5MTkxCiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfNyA9IC0yLjUzNDU1CiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfOCA9IDY3Ny4xNTc4NAogICAgUkFESUFOQ0VfTUlOSU1VTV9CQU5EXzggPSAtNTUuOTE5OTIKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF85ID0gMTQzLjEwMTczCiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfOSA9IC0xMS44MTczOQogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzEwID0gMjIuMDAxODAKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF8xMCA9IDAuMTAwMzMKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF8xMSA9IDIyLjAwMTgwCiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfMTEgPSAwLjEwMDMzCiAgRU5EX0dST1VQID0gTUlOX01BWF9SQURJQU5DRQogIEdST1VQID0gTUlOX01BWF9SRUZMRUNUQU5DRQogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzEgPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzEgPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF8yID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF8yID0gLTAuMDk5OTgwCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfMyA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfMyA9IC0wLjA5OTk4MAogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzQgPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzQgPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF81ID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF81ID0gLTAuMDk5OTgwCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfNiA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfNiA9IC0wLjA5OTk4MAogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzcgPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzcgPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF84ID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF84ID0gLTAuMDk5OTgwCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfOSA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfOSA9IC0wLjA5OTk4MAogIEVORF9HUk9VUCA9IE1JTl9NQVhfUkVGTEVDVEFOQ0UKICBHUk9VUCA9IE1JTl9NQVhfUElYRUxfVkFMVUUKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF8xID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF8xID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzIgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzIgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfMyA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfMyA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF80ID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF80ID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzUgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzUgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfNiA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfNiA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF83ID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF83ID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzggPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzggPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfOSA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfOSA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF8xMCA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfMTAgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfMTEgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzExID0gMQogIEVORF9HUk9VUCA9IE1JTl9NQVhfUElYRUxfVkFMVUUKICBHUk9VUCA9IFJBRElPTUVUUklDX1JFU0NBTElORwogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzEgPSAxLjI0MjJFLTAyCiAgICBSQURJQU5DRV9NVUxUX0JBTkRfMiA9IDEuMjcyMEUtMDIKICAgIFJBRElBTkNFX01VTFRfQkFORF8zID0gMS4xNzIxRS0wMgogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzQgPSA5Ljg4NDJFLTAzCiAgICBSQURJQU5DRV9NVUxUX0JBTkRfNSA9IDYuMDQ4N0UtMDMKICAgIFJBRElBTkNFX01VTFRfQkFORF82ID0gMS41MDQyRS0wMwogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzcgPSA1LjA3MDFFLTA0CiAgICBSQURJQU5DRV9NVUxUX0JBTkRfOCA9IDEuMTE4NkUtMDIKICAgIFJBRElBTkNFX01VTFRfQkFORF85ID0gMi4zNjQwRS0wMwogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzEwID0gMy4zNDIwRS0wNAogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzExID0gMy4zNDIwRS0wNAogICAgUkFESUFOQ0VfQUREX0JBTkRfMSA9IC02Mi4xMDkyOAogICAgUkFESUFOQ0VfQUREX0JBTkRfMiA9IC02My42MDA2NgogICAgUkFESUFOQ0VfQUREX0JBTkRfMyA9IC01OC42MDc0NwogICAgUkFESUFOQ0VfQUREX0JBTkRfNCA9IC00OS40MjExMgogICAgUkFESUFOQ0VfQUREX0JBTkRfNSA9IC0zMC4yNDMyNgogICAgUkFESUFOQ0VfQUREX0JBTkRfNiA9IC03LjUyMTIyCiAgICBSQURJQU5DRV9BRERfQkFORF83ID0gLTIuNTM1MDUKICAgIFJBRElBTkNFX0FERF9CQU5EXzggPSAtNTUuOTMxMTAKICAgIFJBRElBTkNFX0FERF9CQU5EXzkgPSAtMTEuODE5NzUKICAgIFJBRElBTkNFX0FERF9CQU5EXzEwID0gMC4xMDAwMAogICAgUkFESUFOQ0VfQUREX0JBTkRfMTEgPSAwLjEwMDAwCiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfMSA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF8yID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzMgPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfNCA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF81ID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzYgPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfNyA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF84ID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzkgPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF8xID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF8yID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF8zID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF80ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF81ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF82ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF83ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF84ID0gLTAuMTAwMDAwCiAgICBSRUZMRUNUQU5DRV9BRERfQkFORF85ID0gLTAuMTAwMDAwCiAgRU5EX0dST1VQID0gUkFESU9NRVRSSUNfUkVTQ0FMSU5HCiAgR1JPVVAgPSBUSVJTX1RIRVJNQUxfQ09OU1RBTlRTCiAgICBLMV9DT05TVEFOVF9CQU5EXzEwID0gNzc0Ljg4NTMKICAgIEsxX0NPTlNUQU5UX0JBTkRfMTEgPSA0ODAuODg4MwogICAgSzJfQ09OU1RBTlRfQkFORF8xMCA9IDEzMjEuMDc4OQogICAgSzJfQ09OU1RBTlRfQkFORF8xMSA9IDEyMDEuMTQ0MgogIEVORF9HUk9VUCA9IFRJUlNfVEhFUk1BTF9DT05TVEFOVFMKICBHUk9VUCA9IFBST0pFQ1RJT05fUEFSQU1FVEVSUwogICAgTUFQX1BST0pFQ1RJT04gPSAiVVRNIgogICAgREFUVU0gPSAiV0dTODQiCiAgICBFTExJUFNPSUQgPSAiV0dTODQiCiAgICBVVE1fWk9ORSA9IDEwCiAgICBHUklEX0NFTExfU0laRV9QQU5DSFJPTUFUSUMgPSAxNS4wMAogICAgR1JJRF9DRUxMX1NJWkVfUkVGTEVDVElWRSA9IDMwLjAwCiAgICBHUklEX0NFTExfU0laRV9USEVSTUFMID0gMzAuMDAKICAgIE9SSUVOVEFUSU9OID0gIk5PUlRIX1VQIgogICAgUkVTQU1QTElOR19PUFRJT04gPSAiQ1VCSUNfQ09OVk9MVVRJT04iCiAgRU5EX0dST1VQID0gUFJPSkVDVElPTl9QQVJBTUVURVJTCkVORF9HUk9VUCA9IEwxX01FVEFEQVRBX0ZJTEUKRU5ECg==" } }, { - "ID": "cfb3645473b7cc10", + "ID": "befe1478bf7bb6ab", "Request": { "Method": "GET", "URL": "https://storage.googleapis.com/gcp-public-data-landsat/LC08/PRE/044/034/LC80440342016259LGN00/LC80440342016259LGN00_MTL.txt", @@ -32374,13 +32865,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "8361cfd1b52fad7e007f8adcab97a388/15298630854474556381;o=0" + "532fce0968017e56beedee83c93a5a9b/1457687086654649672;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -32397,12 +32888,14 @@ "Response": { "StatusCode": 206, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=3600" @@ -32417,13 +32910,13 @@ "application/octet-stream" ], "Date": [ - "Thu, 28 Jun 2018 21:10:45 GMT" + "Wed, 25 Jul 2018 18:24:24 GMT" ], "Etag": [ "\"7a5fd4743bd647485f88496fadb05c51\"" ], "Expires": [ - "Thu, 28 Jun 2018 22:10:45 GMT" + "Wed, 25 Jul 2018 19:24:24 GMT" ], "Last-Modified": [ "Tue, 04 Oct 2016 16:42:07 GMT" @@ -32451,19 +32944,19 @@ "7903" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/9,/bns/xg/borg/xg/bns/blobstore2/bitpusher/105.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/144,/bns/yb/borg/yb/bns/blobstore2/bitpusher/490.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1U41W5H9Bou1_QScq6bYDA" + "eid=WMBYW6yyA8_XlgH5vbaoCg" ], "X-Google-Gfe-Cloud-Project-Number": [ "570399209098" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/105.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/490.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -32472,13 +32965,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/105:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/490:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -32493,14 +32986,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqcXPD8mn_2Hnw7NABsHk_ITjMI3csvpn1MJdTSfq7aAF-R21IjXbmLq7Cq3n7XtYQ-Q7o8EG5CLkjb8i7ORy4ZGV7-bQ" + "AEnB2UpB0k3pW9i2M7RifgzlFbsTwExYBlVK-IvquB4lLVF6FbYk7ybnTll4Kwkom86CVuRBb_uAaOExZWNNUE_cuz6fr2rqDz8nNnyWSGT5Zlw1CEvAokM" ] }, "Body": "Uk9VUCA9IEwxX01FVEFEQVRBX0ZJTEUKICBHUk9VUCA9IE1FVEFEQVRBX0ZJTEVfSU5GTwogICAgT1JJR0lOID0gIkltYWdlIGNvdXJ0ZXN5IG9mIHRoZSBVLlMuIEdlb2xvZ2ljYWwgU3VydmV5IgogICAgUkVRVUVTVF9JRCA9ICIwNzAxNjA5MTkxMDUxXzAwMDA0IgogICAgTEFORFNBVF9TQ0VORV9JRCA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDAiCiAgICBGSUxFX0RBVEUgPSAyMDE2LTA5LTIwVDAzOjEzOjAyWgogICAgU1RBVElPTl9JRCA9ICJMR04iCiAgICBQUk9DRVNTSU5HX1NPRlRXQVJFX1ZFUlNJT04gPSAiTFBHU18yLjYuMiIKICBFTkRfR1JPVVAgPSBNRVRBREFUQV9GSUxFX0lORk8KICBHUk9VUCA9IFBST0RVQ1RfTUVUQURBVEEKICAgIERBVEFfVFlQRSA9ICJMMVQiCiAgICBFTEVWQVRJT05fU09VUkNFID0gIkdMUzIwMDAiCiAgICBPVVRQVVRfRk9STUFUID0gIkdFT1RJRkYiCiAgICBTUEFDRUNSQUZUX0lEID0gIkxBTkRTQVRfOCIKICAgIFNFTlNPUl9JRCA9ICJPTElfVElSUyIKICAgIFdSU19QQVRIID0gNDQKICAgIFdSU19ST1cgPSAzNAogICAgTkFESVJfT0ZGTkFESVIgPSAiTkFESVIiCiAgICBUQVJHRVRfV1JTX1BBVEggPSA0NAogICAgVEFSR0VUX1dSU19ST1cgPSAzNAogICAgREFURV9BQ1FVSVJFRCA9IDIwMTYtMDktMTUKICAgIFNDRU5FX0NFTlRFUl9USU1FID0gIjE4OjQ2OjE4LjY4NjczODBaIgogICAgQ09STkVSX1VMX0xBVF9QUk9EVUNUID0gMzguNTI4MTkKICAgIENPUk5FUl9VTF9MT05fUFJPRFVDVCA9IC0xMjMuNDA4NDMKICAgIENPUk5FUl9VUl9MQVRfUFJPRFVDVCA9IDM4LjUwNzY1CiAgICBDT1JORVJfVVJfTE9OX1BST0RVQ1QgPSAtMTIwLjc2OTMzCiAgICBDT1JORVJfTExfTEFUX1BST0RVQ1QgPSAzNi40MTYzMwogICAgQ09STkVSX0xMX0xPTl9QUk9EVUNUID0gLTEyMy4zOTcwOQogICAgQ09STkVSX0xSX0xBVF9QUk9EVUNUID0gMzYuMzk3MjkKICAgIENPUk5FUl9MUl9MT05fUFJPRFVDVCA9IC0xMjAuODMxMTcKICAgIENPUk5FUl9VTF9QUk9KRUNUSU9OX1hfUFJPRFVDVCA9IDQ2NDQwMC4wMDAKICAgIENPUk5FUl9VTF9QUk9KRUNUSU9OX1lfUFJPRFVDVCA9IDQyNjQ1MDAuMDAwCiAgICBDT1JORVJfVVJfUFJPSkVDVElPTl9YX1BST0RVQ1QgPSA2OTQ1MDAuMDAwCiAgICBDT1JORVJfVVJfUFJPSkVDVElPTl9ZX1BST0RVQ1QgPSA0MjY0NTAwLjAwMAogICAgQ09STkVSX0xMX1BST0pFQ1RJT05fWF9QUk9EVUNUID0gNDY0NDAwLjAwMAogICAgQ09STkVSX0xMX1BST0pFQ1RJT05fWV9QUk9EVUNUID0gNDAzMDIwMC4wMDAKICAgIENPUk5FUl9MUl9QUk9KRUNUSU9OX1hfUFJPRFVDVCA9IDY5NDUwMC4wMDAKICAgIENPUk5FUl9MUl9QUk9KRUNUSU9OX1lfUFJPRFVDVCA9IDQwMzAyMDAuMDAwCiAgICBQQU5DSFJPTUFUSUNfTElORVMgPSAxNTYyMQogICAgUEFOQ0hST01BVElDX1NBTVBMRVMgPSAxNTM0MQogICAgUkVGTEVDVElWRV9MSU5FUyA9IDc4MTEKICAgIFJFRkxFQ1RJVkVfU0FNUExFUyA9IDc2NzEKICAgIFRIRVJNQUxfTElORVMgPSA3ODExCiAgICBUSEVSTUFMX1NBTVBMRVMgPSA3NjcxCiAgICBGSUxFX05BTUVfQkFORF8xID0gIkxDODA0NDAzNDIwMTYyNTlMR04wMF9CMS5USUYiCiAgICBGSUxFX05BTUVfQkFORF8yID0gIkxDODA0NDAzNDIwMTYyNTlMR04wMF9CMi5USUYiCiAgICBGSUxFX05BTUVfQkFORF8zID0gIkxDODA0NDAzNDIwMTYyNTlMR04wMF9CMy5USUYiCiAgICBGSUxFX05BTUVfQkFORF80ID0gIkxDODA0NDAzNDIwMTYyNTlMR04wMF9CNC5USUYiCiAgICBGSUxFX05BTUVfQkFORF81ID0gIkxDODA0NDAzNDIwMTYyNTlMR04wMF9CNS5USUYiCiAgICBGSUxFX05BTUVfQkFORF82ID0gIkxDODA0NDAzNDIwMTYyNTlMR04wMF9CNi5USUYiCiAgICBGSUxFX05BTUVfQkFORF83ID0gIkxDODA0NDAzNDIwMTYyNTlMR04wMF9CNy5USUYiCiAgICBGSUxFX05BTUVfQkFORF84ID0gIkxDODA0NDAzNDIwMTYyNTlMR04wMF9COC5USUYiCiAgICBGSUxFX05BTUVfQkFORF85ID0gIkxDODA0NDAzNDIwMTYyNTlMR04wMF9COS5USUYiCiAgICBGSUxFX05BTUVfQkFORF8xMCA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQjEwLlRJRiIKICAgIEZJTEVfTkFNRV9CQU5EXzExID0gIkxDODA0NDAzNDIwMTYyNTlMR04wMF9CMTEuVElGIgogICAgRklMRV9OQU1FX0JBTkRfUVVBTElUWSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfQlFBLlRJRiIKICAgIE1FVEFEQVRBX0ZJTEVfTkFNRSA9ICJMQzgwNDQwMzQyMDE2MjU5TEdOMDBfTVRMLnR4dCIKICAgIEJQRl9OQU1FX09MSSA9ICJMTzhCUEYyMDE2MDkxNTE4MzA1N18yMDE2MDkxNTIwMDk1MC4wMSIKICAgIEJQRl9OQU1FX1RJUlMgPSAiTFQ4QlBGMjAxNjA5MDIwODQxMjJfMjAxNjA5MTcwNzQwMjcuMDIiCiAgICBDUEZfTkFNRSA9ICJMOENQRjIwMTYwNzAxXzIwMTYwOTMwLjAyIgogICAgUkxVVF9GSUxFX05BTUUgPSAiTDhSTFVUMjAxNTAzMDNfMjA0MzEyMzF2MTEuaDUiCiAgRU5EX0dST1VQID0gUFJPRFVDVF9NRVRBREFUQQogIEdST1VQID0gSU1BR0VfQVRUUklCVVRFUwogICAgQ0xPVURfQ09WRVIgPSAyOS41NgogICAgQ0xPVURfQ09WRVJfTEFORCA9IDMuMzMKICAgIElNQUdFX1FVQUxJVFlfT0xJID0gOQogICAgSU1BR0VfUVVBTElUWV9USVJTID0gOQogICAgVElSU19TU01fTU9ERUwgPSAiRklOQUwiCiAgICBUSVJTX1NTTV9QT1NJVElPTl9TVEFUVVMgPSAiRVNUSU1BVEVEIgogICAgUk9MTF9BTkdMRSA9IC0wLjAwMQogICAgU1VOX0FaSU1VVEggPSAxNDguNDgwNDkzOTYKICAgIFNVTl9FTEVWQVRJT04gPSA1MC45Mzc2ODM5OQogICAgRUFSVEhfU1VOX0RJU1RBTkNFID0gMS4wMDUzNzUyCiAgICBHUk9VTkRfQ09OVFJPTF9QT0lOVFNfVkVSU0lPTiA9IDQKICAgIEdST1VORF9DT05UUk9MX1BPSU5UU19NT0RFTCA9IDU0OAogICAgR0VPTUVUUklDX1JNU0VfTU9ERUwgPSA1Ljg1NwogICAgR0VPTUVUUklDX1JNU0VfTU9ERUxfWSA9IDMuODQxCiAgICBHRU9NRVRSSUNfUk1TRV9NT0RFTF9YID0gNC40MjIKICAgIEdST1VORF9DT05UUk9MX1BPSU5UU19WRVJJRlkgPSAyMjgKICAgIEdFT01FVFJJQ19STVNFX1ZFUklGWSA9IDMuMzgyCiAgRU5EX0dST1VQID0gSU1BR0VfQVRUUklCVVRFUwogIEdST1VQID0gTUlOX01BWF9SQURJQU5DRQogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzEgPSA3NTEuOTU3MDkKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF8xID0gLTYyLjA5Njg2CiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfMiA9IDc3MC4wMTMxOAogICAgUkFESUFOQ0VfTUlOSU1VTV9CQU5EXzIgPSAtNjMuNTg3OTQKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF8zID0gNzA5LjU2MDYxCiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfMyA9IC01OC41OTU3NQogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzQgPSA1OTguMzQxNDkKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF80ID0gLTQ5LjQxMTIzCiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfNSA9IDM2Ni4xNTUxNQogICAgUkFESUFOQ0VfTUlOSU1VTV9CQU5EXzUgPSAtMzAuMjM3MjEKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF82ID0gOTEuMDU5NDYKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF82ID0gLTcuNTE5NzIKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF83ID0gMzAuNjkxOTEKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF83ID0gLTIuNTM0NTUKICAgIFJBRElBTkNFX01BWElNVU1fQkFORF84ID0gNjc3LjE1Nzg0CiAgICBSQURJQU5DRV9NSU5JTVVNX0JBTkRfOCA9IC01NS45MTk5MgogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzkgPSAxNDMuMTAxNzMKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF85ID0gLTExLjgxNzM5CiAgICBSQURJQU5DRV9NQVhJTVVNX0JBTkRfMTAgPSAyMi4wMDE4MAogICAgUkFESUFOQ0VfTUlOSU1VTV9CQU5EXzEwID0gMC4xMDAzMwogICAgUkFESUFOQ0VfTUFYSU1VTV9CQU5EXzExID0gMjIuMDAxODAKICAgIFJBRElBTkNFX01JTklNVU1fQkFORF8xMSA9IDAuMTAwMzMKICBFTkRfR1JPVVAgPSBNSU5fTUFYX1JBRElBTkNFCiAgR1JPVVAgPSBNSU5fTUFYX1JFRkxFQ1RBTkNFCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfMSA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfMSA9IC0wLjA5OTk4MAogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzIgPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzIgPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF8zID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF8zID0gLTAuMDk5OTgwCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfNCA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfNCA9IC0wLjA5OTk4MAogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzUgPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzUgPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF82ID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF82ID0gLTAuMDk5OTgwCiAgICBSRUZMRUNUQU5DRV9NQVhJTVVNX0JBTkRfNyA9IDEuMjEwNzAwCiAgICBSRUZMRUNUQU5DRV9NSU5JTVVNX0JBTkRfNyA9IC0wLjA5OTk4MAogICAgUkVGTEVDVEFOQ0VfTUFYSU1VTV9CQU5EXzggPSAxLjIxMDcwMAogICAgUkVGTEVDVEFOQ0VfTUlOSU1VTV9CQU5EXzggPSAtMC4wOTk5ODAKICAgIFJFRkxFQ1RBTkNFX01BWElNVU1fQkFORF85ID0gMS4yMTA3MDAKICAgIFJFRkxFQ1RBTkNFX01JTklNVU1fQkFORF85ID0gLTAuMDk5OTgwCiAgRU5EX0dST1VQID0gTUlOX01BWF9SRUZMRUNUQU5DRQogIEdST1VQID0gTUlOX01BWF9QSVhFTF9WQUxVRQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzEgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzEgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfMiA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfMiA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF8zID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF8zID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzQgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzQgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfNSA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfNSA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF82ID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF82ID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzcgPSA2NTUzNQogICAgUVVBTlRJWkVfQ0FMX01JTl9CQU5EXzcgPSAxCiAgICBRVUFOVElaRV9DQUxfTUFYX0JBTkRfOCA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfOCA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF85ID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF85ID0gMQogICAgUVVBTlRJWkVfQ0FMX01BWF9CQU5EXzEwID0gNjU1MzUKICAgIFFVQU5USVpFX0NBTF9NSU5fQkFORF8xMCA9IDEKICAgIFFVQU5USVpFX0NBTF9NQVhfQkFORF8xMSA9IDY1NTM1CiAgICBRVUFOVElaRV9DQUxfTUlOX0JBTkRfMTEgPSAxCiAgRU5EX0dST1VQID0gTUlOX01BWF9QSVhFTF9WQUxVRQogIEdST1VQID0gUkFESU9NRVRSSUNfUkVTQ0FMSU5HCiAgICBSQURJQU5DRV9NVUxUX0JBTkRfMSA9IDEuMjQyMkUtMDIKICAgIFJBRElBTkNFX01VTFRfQkFORF8yID0gMS4yNzIwRS0wMgogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzMgPSAxLjE3MjFFLTAyCiAgICBSQURJQU5DRV9NVUxUX0JBTkRfNCA9IDkuODg0MkUtMDMKICAgIFJBRElBTkNFX01VTFRfQkFORF81ID0gNi4wNDg3RS0wMwogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzYgPSAxLjUwNDJFLTAzCiAgICBSQURJQU5DRV9NVUxUX0JBTkRfNyA9IDUuMDcwMUUtMDQKICAgIFJBRElBTkNFX01VTFRfQkFORF84ID0gMS4xMTg2RS0wMgogICAgUkFESUFOQ0VfTVVMVF9CQU5EXzkgPSAyLjM2NDBFLTAzCiAgICBSQURJQU5DRV9NVUxUX0JBTkRfMTAgPSAzLjM0MjBFLTA0CiAgICBSQURJQU5DRV9NVUxUX0JBTkRfMTEgPSAzLjM0MjBFLTA0CiAgICBSQURJQU5DRV9BRERfQkFORF8xID0gLTYyLjEwOTI4CiAgICBSQURJQU5DRV9BRERfQkFORF8yID0gLTYzLjYwMDY2CiAgICBSQURJQU5DRV9BRERfQkFORF8zID0gLTU4LjYwNzQ3CiAgICBSQURJQU5DRV9BRERfQkFORF80ID0gLTQ5LjQyMTEyCiAgICBSQURJQU5DRV9BRERfQkFORF81ID0gLTMwLjI0MzI2CiAgICBSQURJQU5DRV9BRERfQkFORF82ID0gLTcuNTIxMjIKICAgIFJBRElBTkNFX0FERF9CQU5EXzcgPSAtMi41MzUwNQogICAgUkFESUFOQ0VfQUREX0JBTkRfOCA9IC01NS45MzExMAogICAgUkFESUFOQ0VfQUREX0JBTkRfOSA9IC0xMS44MTk3NQogICAgUkFESUFOQ0VfQUREX0JBTkRfMTAgPSAwLjEwMDAwCiAgICBSQURJQU5DRV9BRERfQkFORF8xMSA9IDAuMTAwMDAKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF8xID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzIgPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfMyA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF80ID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzUgPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfNiA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX01VTFRfQkFORF83ID0gMi4wMDAwRS0wNQogICAgUkVGTEVDVEFOQ0VfTVVMVF9CQU5EXzggPSAyLjAwMDBFLTA1CiAgICBSRUZMRUNUQU5DRV9NVUxUX0JBTkRfOSA9IDIuMDAwMEUtMDUKICAgIFJFRkxFQ1RBTkNFX0FERF9CQU5EXzEgPSAtMC4xMDAwMDAKICAgIFJFRkxFQ1RBTkNFX0FERF9CQU5EXzIgPSAtMC4xMDAwMDAKICAgIFJFRkxFQ1RBTkNFX0FERF9CQU5EXzMgPSAtMC4xMDAwMDAKICAgIFJFRkxFQ1RBTkNFX0FERF9CQU5EXzQgPSAtMC4xMDAwMDAKICAgIFJFRkxFQ1RBTkNFX0FERF9CQU5EXzUgPSAtMC4xMDAwMDAKICAgIFJFRkxFQ1RBTkNFX0FERF9CQU5EXzYgPSAtMC4xMDAwMDAKICAgIFJFRkxFQ1RBTkNFX0FERF9CQU5EXzcgPSAtMC4xMDAwMDAKICAgIFJFRkxFQ1RBTkNFX0FERF9CQU5EXzggPSAtMC4xMDAwMDAKICAgIFJFRkxFQ1RBTkNFX0FERF9CQU5EXzkgPSAtMC4xMDAwMDAKICBFTkRfR1JPVVAgPSBSQURJT01FVFJJQ19SRVNDQUxJTkcKICBHUk9VUCA9IFRJUlNfVEhFUk1BTF9DT05TVEFOVFMKICAgIEsxX0NPTlNUQU5UX0JBTkRfMTAgPSA3NzQuODg1MwogICAgSzFfQ09OU1RBTlRfQkFORF8xMSA9IDQ4MC44ODgzCiAgICBLMl9DT05TVEFOVF9CQU5EXzEwID0gMTMyMS4wNzg5CiAgICBLMl9DT05TVEFOVF9CQU5EXzExID0gMTIwMS4xNDQyCiAgRU5EX0dST1VQID0gVElSU19USEVSTUFMX0NPTlNUQU5UUwogIEdST1VQID0gUFJPSkVDVElPTl9QQVJBTUVURVJTCiAgICBNQVBfUFJPSkVDVElPTiA9ICJVVE0iCiAgICBEQVRVTSA9ICJXR1M4NCIKICAgIEVMTElQU09JRCA9ICJXR1M4NCIKICAgIFVUTV9aT05FID0gMTAKICAgIEdSSURfQ0VMTF9TSVpFX1BBTkNIUk9NQVRJQyA9IDE1LjAwCiAgICBHUklEX0NFTExfU0laRV9SRUZMRUNUSVZFID0gMzAuMDAKICAgIEdSSURfQ0VMTF9TSVpFX1RIRVJNQUwgPSAzMC4wMAogICAgT1JJRU5UQVRJT04gPSAiTk9SVEhfVVAiCiAgICBSRVNBTVBMSU5HX09QVElPTiA9ICJDVUJJQ19DT05WT0xVVElPTiIKICBFTkRfR1JPVVAgPSBQUk9KRUNUSU9OX1BBUkFNRVRFUlMKRU5EX0dST1VQID0gTDFfTUVUQURBVEFfRklMRQpFTkQK" } }, { - "ID": "1c2a404568c311dc", + "ID": "765945930b23e1ee", "Request": { "Method": "GET", "URL": "https://storage.googleapis.com/gcp-public-data-landsat/LC08/PRE/044/034/LC80440342016259LGN00/LC80440342016259LGN00_MTL.txt", @@ -32513,13 +33006,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "323f9c45abecbc36987e7dd3c87e69b4/16913764783378589436;o=0" + "6f0eda8864181828fa1efa783b8981ec/9098649104519198308;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -32536,12 +33029,14 @@ "Response": { "StatusCode": 206, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=3600" @@ -32556,13 +33051,13 @@ "application/octet-stream" ], "Date": [ - "Thu, 28 Jun 2018 21:10:45 GMT" + "Wed, 25 Jul 2018 18:24:24 GMT" ], "Etag": [ "\"7a5fd4743bd647485f88496fadb05c51\"" ], "Expires": [ - "Thu, 28 Jun 2018 22:10:45 GMT" + "Wed, 25 Jul 2018 19:24:24 GMT" ], "Last-Modified": [ "Tue, 04 Oct 2016 16:42:07 GMT" @@ -32590,19 +33085,19 @@ "7903" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/28,/bns/xg/borg/xg/bns/blobstore2/bitpusher/0.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/565,/bns/yb/borg/yb/bns/blobstore2/bitpusher/79.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1U41W8e2C6-0_QTHpLiQDQ" + "eid=WMBYW8LdBpSblAGTzYjgCw" ], "X-Google-Gfe-Cloud-Project-Number": [ "570399209098" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/0.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/79.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -32611,13 +33106,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/0:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/79:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -32632,14 +33127,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrsCsgEPCohbb8tsYVC-K83-Df66RFc8ZHf64YopdIWg2s2HL-nlU1voXhHeLfNqQICaoYRPGywiJE8N2k6dZ79TrgITQ" + "AEnB2UrMTL_fRzBD71r-l5WY7bKuSBaAqbXlOsIZjtklkSrq46-eW1usGQFvS2xM6ZhokGOYKZr--BkmUKPlezdFbuX9abcpcTr4oFMjfhlX4oagyt93vdU" ] }, "Body": "R1JPVVAgPSBMMV9NRVRBREFU" } }, { - "ID": "83acd83e324698db", + "ID": "edfdb84a4ab5261c", "Request": { "Method": "GET", "URL": "https://storage.googleapis.com/storage-library-test-bucket/gzipped-text.txt", @@ -32652,13 +33147,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "cc22eb0dcc869daa28a3c4c8519bebca/10379623318317340;o=0" + "12aa0133df21dedf7a9e4bb6b5752a20/16739330751196788609;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -32675,12 +33170,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=3600" @@ -32692,13 +33189,13 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:10:45 GMT" + "Wed, 25 Jul 2018 18:24:24 GMT" ], "Etag": [ "\"c6117833aa4d1510d09ef69144d56790\"" ], "Expires": [ - "Thu, 28 Jun 2018 22:10:45 GMT" + "Wed, 25 Jul 2018 19:24:24 GMT" ], "Last-Modified": [ "Tue, 14 Nov 2017 13:07:32 GMT" @@ -32729,19 +33226,19 @@ "31" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/32,/bns/xg/borg/xg/bns/blobstore2/bitpusher/7.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/359,/bns/yb/borg/yb/bns/blobstore2/bitpusher/112.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1U41W5vED864_QSK_4_4Cw" + "eid=WMBYW5eUCsWelAGf1bqYCA" ], "X-Google-Gfe-Cloud-Project-Number": [ "149776848335" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/7.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/112.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Body-Transformations": [ "chunked" @@ -32753,13 +33250,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/7:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/112:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -32774,14 +33271,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqIRWqYIhs6N5xvWO1KLlU3DKSG7X8omOlNnqixq4b8ABXldSLwn_z5cSIt3rDdZJDCbXArgmXD2np51NnhNUnCC1o3xg" + "AEnB2UobFJ2YHREN1vtOifJzF81Ir0XhGYpstgtuqVGcLCp5lCBwSRZYs0W-inaYz8__6MwrHF38F79GnfEf7D3fnq06NTfUziFsmisHzsVnA5ODe8uP1fg" ] }, "Body": "H4sIAAAAAAAAC8tIzcnJVyjPL8pJAQCFEUoNCwAAAA==" } }, { - "ID": "43f7d9c2773cae0a", + "ID": "bdc97fe18167c5e6", "Request": { "Method": "GET", "URL": "https://storage.googleapis.com/storage-library-test-bucket/gzipped-text.txt", @@ -32794,13 +33291,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "911b098cf30bb2d2db6373f690e96455/1625514656012102715;o=0" + "cb69e18224cb8cb868de218f527b70b3/5933830174623398045;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -32817,12 +33314,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=3600" @@ -32834,13 +33333,13 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:10:45 GMT" + "Wed, 25 Jul 2018 18:24:24 GMT" ], "Etag": [ "\"c6117833aa4d1510d09ef69144d56790\"" ], "Expires": [ - "Thu, 28 Jun 2018 22:10:45 GMT" + "Wed, 25 Jul 2018 19:24:24 GMT" ], "Last-Modified": [ "Tue, 14 Nov 2017 13:07:32 GMT" @@ -32871,19 +33370,19 @@ "31" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/10,/bns/xg/borg/xg/bns/blobstore2/bitpusher/11.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/460,/bns/yb/borg/yb/bns/blobstore2/bitpusher/252.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1U41W_6qH4q-_QTkpILQCw" + "eid=WMBYW4PrD8HrlgGHwJiIBg" ], "X-Google-Gfe-Cloud-Project-Number": [ "149776848335" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/11.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/252.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Body-Transformations": [ "chunked" @@ -32895,13 +33394,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/11:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/252:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -32916,14 +33415,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uqs2j5-lfjUTeRpZH8gaopVXoxDd8H3Ru3KOG4fh1RxSF_rO2AjgfH-O4t4tESE-fa_ppR9QDwc4YVOfxP9CzRlvTrmcQ" + "AEnB2UpdxdiF31d4aqY5pixhPKg4aiqCAjiuk12-bYlRapi5jHw2x7JFMUMAc2UQQT8ZbykNDV08Q_MUhqfBgbTx2T4KqEaX8g_Fgn6k82JvgulPE3lG7bA" ] }, "Body": "H4sIAAAAAAAAC8tIzcnJVyjPL8pJAQCFEUoNCwAAAA==" } }, { - "ID": "145a5b07cb7cee22", + "ID": "e9f34757a04b439e", "Request": { "Method": "GET", "URL": "https://storage.googleapis.com/storage-library-test-bucket/gzipped-text.txt", @@ -32936,13 +33435,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c8ebc936d6a1701bda2ec20a597d0efa/3240367118529228635;o=0" + "bca6e47e7bd09389b0ee2f7481eb7bf6/13574793291982731706;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -32959,9 +33458,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=3600" @@ -32973,13 +33474,13 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:10:45 GMT" + "Wed, 25 Jul 2018 18:24:24 GMT" ], "Etag": [ "W/\"c6117833aa4d1510d09ef69144d56790\"" ], "Expires": [ - "Thu, 28 Jun 2018 22:10:45 GMT" + "Wed, 25 Jul 2018 19:24:24 GMT" ], "Last-Modified": [ "Tue, 14 Nov 2017 13:07:32 GMT" @@ -33013,19 +33514,19 @@ "31" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/51,/bns/xg/borg/xg/bns/blobstore2/bitpusher/56.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/125,/bns/yb/borg/yb/bns/blobstore2/bitpusher/225.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1U41W9KYIq-5_QT08q2oCA" + "eid=WMBYW-W7E8K1lgHLuoaADQ" ], "X-Google-Gfe-Cloud-Project-Number": [ "149776848335" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/56.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/225.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -33034,13 +33535,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/56:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/225:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -33058,14 +33559,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UowTICIKtzeRG9Ou_PSvDwVQg4nVkNPdHQ2KfvMkcv8d9Boi4SBVjVIcIRIRAYrFKw-LFZvQS9x3yeu6Sbv2jEbML9q4g" + "AEnB2UotK-AxACTaMVNNIM8LQP2a90oTw4TtmxT8VlizDWocXXDWSbdImu6HeynocBu5LUklCAAX1Y1wbrspQmwUft9tzPx3R9Wa541NC71t42j_rcavvRg" ] }, "Body": "aGVsbG8gd29ybGQ=" } }, { - "ID": "02f9306edf1966b4", + "ID": "e04632d6c1fa8131", "Request": { "Method": "GET", "URL": "https://storage.googleapis.com/storage-library-test-bucket/gzipped-text.txt", @@ -33081,13 +33582,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "71757057b8103659305baba67138c95f/4783444552906961530;o=0" + "b48ba50477feb76be7634f96c6504a49/2769292711097662422;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -33104,12 +33605,14 @@ "Response": { "StatusCode": 206, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "public, max-age=3600" @@ -33124,13 +33627,13 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:10:45 GMT" + "Wed, 25 Jul 2018 18:24:24 GMT" ], "Etag": [ "\"c6117833aa4d1510d09ef69144d56790\"" ], "Expires": [ - "Thu, 28 Jun 2018 22:10:45 GMT" + "Wed, 25 Jul 2018 19:24:24 GMT" ], "Last-Modified": [ "Tue, 14 Nov 2017 13:07:32 GMT" @@ -33161,19 +33664,19 @@ "31" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/37,/bns/xg/borg/xg/bns/blobstore2/bitpusher/89.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/42,/bns/yb/borg/yb/bns/blobstore2/bitpusher/651.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1U41W8TBJc61_QS8-5yoAw" + "eid=WMBYW6KbF9eMlAH1wZXICg" ], "X-Google-Gfe-Cloud-Project-Number": [ "149776848335" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/89.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/651.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Body-Transformations": [ "chunked" @@ -33185,13 +33688,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/89:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/651:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -33206,14 +33709,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpBtSxrfke14g0eI3Rrgg8bRTCWRAVT2Q59YpYtBr0cBURMme2SCzToajLFWSGJGX9AAbS1bz4EKFodpsW29B7-es95Iw" + "AEnB2UqlxxnCyYLjUtEC_JSttH2KbT20uF0f7YILBcCkd3oVPxwjmmcC65A-Cc4WbDk57M6qHff190YKO57F8C8kUe4ymwWdk63ZxIc6680olm5IumydF7g" ] }, "Body": "iwgAAAAAAAA=" } }, { - "ID": "268ea6db77b72076", + "ID": "e529b4da27b6484b", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -33235,13 +33738,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "4c4dd613d708454328d916ba0881b33b/7134230243258873770;o=0" + "6dc5c87b61f73a648379cdccece12801/14266624901214813313;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -33256,14 +33759,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJjb3JzIjpbeyJtYXhBZ2VTZWNvbmRzIjozNjAwLCJtZXRob2QiOlsiUE9TVCJdLCJvcmlnaW4iOlsic29tZS1vcmlnaW4uY29tIl0sInJlc3BvbnNlSGVhZGVyIjpbImZvby1iYXIiXX1dLCJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAzIn0K" + "Body": "eyJjb3JzIjpbeyJtYXhBZ2VTZWNvbmRzIjozNjAwLCJtZXRob2QiOlsiUE9TVCJdLCJvcmlnaW4iOlsic29tZS1vcmlnaW4uY29tIl0sInJlc3BvbnNlSGVhZGVyIjpbImZvby1iYXIiXX1dLCJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAzIn0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -33275,7 +33780,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:46 GMT" + "Wed, 25 Jul 2018 18:24:25 GMT" ], "Etag": [ "CAE=" @@ -33294,7 +33799,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220545000" + "1532543364000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -33303,16 +33808,16 @@ "998958384336" ], "X-Google-Backends": [ - "vriq19:4119,/bns/yw/borg/yw/bns/blobstore2/bitpusher/114.scotty,acatli15:443" + "xiiadcbf12:4266,/bns/xi/borg/xi/bns/blobstore2/bitpusher/69.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1U41W6zdNMbuhAS64LzQCA" + "eid=WMBYW_-SI6O9swa9vaKYDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/114.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/69.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -33321,13 +33826,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/114:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/69:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -33342,17 +33847,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq4Onx-4cRLHYYRXXNMvQIDn6B0iyDSS-F6PipLYkG9i3fAtHYQM2xhiJUnt3p_peAPcarq9z7RKoUnwHUj2YqiRKZlOKi0YKg5V51LrnnYxRukU14" + "AEnB2UqYXjZpHTlKC_3wSlMoS7KCFY4sTjDDbif2GwKa_aMoKzCfGNPBOeiGmhaluoEKV33c2mIZdDQmAtOD4KLmJ8kCMt7oMg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDMiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NDYuNTAyWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjQ2LjUwMloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJjb3JzIjogWwogIHsKICAgIm9yaWdpbiI6IFsKICAgICJzb21lLW9yaWdpbi5jb20iCiAgIF0sCiAgICJtZXRob2QiOiBbCiAgICAiUE9TVCIKICAgXSwKICAgInJlc3BvbnNlSGVhZGVyIjogWwogICAgImZvby1iYXIiCiAgIF0sCiAgICJtYXhBZ2VTZWNvbmRzIjogMzYwMAogIH0KIF0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDMiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MjQuOTQwWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjI0Ljk0MFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJjb3JzIjogWwogIHsKICAgIm9yaWdpbiI6IFsKICAgICJzb21lLW9yaWdpbi5jb20iCiAgIF0sCiAgICJtZXRob2QiOiBbCiAgICAiUE9TVCIKICAgXSwKICAgInJlc3BvbnNlSGVhZGVyIjogWwogICAgImZvby1iYXIiCiAgIF0sCiAgICJtYXhBZ2VTZWNvbmRzIjogMzYwMAogIH0KIF0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBRT0iCn0K" } }, { - "ID": "4cb246f313286458", + "ID": "55116b203bd02008", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0003?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0003?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -33371,13 +33876,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "883dabfb34d5b26b50efeea55487bbbd/8749364176457808585;o=0" + "86855146ed28c36b2797f3244523049f/3389067825820155294;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -33386,7 +33891,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0003?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0003?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -33397,9 +33902,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -33411,7 +33918,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:48 GMT" + "Wed, 25 Jul 2018 18:24:26 GMT" ], "Etag": [ "CAI=" @@ -33430,7 +33937,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220546000" + "1532543365000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -33439,16 +33946,16 @@ "998958384336" ], "X-Google-Backends": [ - "vril66:4366,/bns/yw/borg/yw/bns/blobstore2/bitpusher/169.scotty,acatli15:443" + "xgiadaal14:4213,/bns/xi/borg/xi/bns/blobstore2/bitpusher/136.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=1k41W4mHLsjPhASU8bPwBw" + "eid=WcBYW4H_CMa8swbts4roAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/169.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/136.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -33457,13 +33964,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/169:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/136:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -33478,17 +33985,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo7m-xZz50gtnRt891bK3lgdR_dGpL5JIPWosajwMbRvImrVsYI6PYn4DKC9MYZtg08iKhyCIw-N_1JrQHwPTHPZ9TVsXHy8YA_xBqcN6ov6zVkNuY" + "AEnB2Up-jkk9j-hhaOIq9Xi2AZvPbFxvwsmwwCH12qx0eH5fb8qLsote7cIB3viVi-zNspdhLBaHfIdIbFT42mPZukZFUrzZaQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDMiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NDYuNTAyWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjQ4LjEyMVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDMiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDMiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogImNvcnMiOiBbCiAgewogICAib3JpZ2luIjogWwogICAgIioiCiAgIF0sCiAgICJtZXRob2QiOiBbCiAgICAiR0VUIgogICBdLAogICAicmVzcG9uc2VIZWFkZXIiOiBbCiAgICAic29tZS1oZWFkZXIiCiAgIF0sCiAgICJtYXhBZ2VTZWNvbmRzIjogMzYwMAogIH0KIF0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDMiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MjQuOTQwWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjI2LjU0NVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDMiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDMiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogImNvcnMiOiBbCiAgewogICAib3JpZ2luIjogWwogICAgIioiCiAgIF0sCiAgICJtZXRob2QiOiBbCiAgICAiR0VUIgogICBdLAogICAicmVzcG9uc2VIZWFkZXIiOiBbCiAgICAic29tZS1oZWFkZXIiCiAgIF0sCiAgICJtYXhBZ2VTZWNvbmRzIjogMzYwMAogIH0KIF0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" } }, { - "ID": "947a85d333eb78ab", + "ID": "bfdd40c0bccf9162", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0003?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0003?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -33501,13 +34008,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "46d1bdbdbfc5baf93cb221fbec1c260b/10364216634680032745;o=0" + "63429b47f9ef6826864260e5eb046329/11030030943179554490;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -33516,7 +34023,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0003?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0003?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -33527,9 +34034,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -33541,13 +34050,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:48 GMT" + "Wed, 25 Jul 2018 18:24:26 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:48 GMT" + "Wed, 25 Jul 2018 18:24:26 GMT" ], "Server": [ "UploadServer" @@ -33557,7 +34066,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220548000" + "1532543365000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -33566,16 +34075,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrt3:4280,/bns/yw/borg/yw/bns/blobstore2/bitpusher/405.scotty,acatli15:443" + "xgiadaah14:4439,/bns/xi/borg/xi/bns/blobstore2/bitpusher/48.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=2E41W6SKFMm8hgT99KeQAw" + "eid=WsBYW9KtLYS2swbxoazoAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/405.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/48.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -33584,13 +34093,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/405:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/48:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -33605,14 +34114,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur7qBaV4i39ojtesbk-AtbUm0q_JUDQVag_cTkslTbDSNPf6tuI-2XIjbPx9mwudHlVsM3htH6RWMRWStzURg4GyS3lFRXtPPAxjuHe2qxHP8fJqt8" + "AEnB2UrlnZLlyhwiR698nwy5E29VjQ_PtWSDNV6-Qojd9YcKyHPPrwD-dKGmF_YVRT5G4X-Jato643JI29tos0FphLqQNIDFjA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDMiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NDYuNTAyWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjQ4LjEyMVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDMiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDMiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogImNvcnMiOiBbCiAgewogICAib3JpZ2luIjogWwogICAgIioiCiAgIF0sCiAgICJtZXRob2QiOiBbCiAgICAiR0VUIgogICBdLAogICAicmVzcG9uc2VIZWFkZXIiOiBbCiAgICAic29tZS1oZWFkZXIiCiAgIF0sCiAgICJtYXhBZ2VTZWNvbmRzIjogMzYwMAogIH0KIF0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDMiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MjQuOTQwWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjI2LjU0NVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDMiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDMiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogImNvcnMiOiBbCiAgewogICAib3JpZ2luIjogWwogICAgIioiCiAgIF0sCiAgICJtZXRob2QiOiBbCiAgICAiR0VUIgogICBdLAogICAicmVzcG9uc2VIZWFkZXIiOiBbCiAgICAic29tZS1oZWFkZXIiCiAgIF0sCiAgICJtYXhBZ2VTZWNvbmRzIjogMzYwMAogIH0KIF0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" } }, { - "ID": "dbb882d38af1813c", + "ID": "73983c386a762312", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -33634,13 +34143,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "e1cabbeb4a90c87ebddf822ac341096a/11907295172847517704;o=0" + "1386603ee75472a755f2c43d3dd83584/224530366606098391;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -33655,14 +34164,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJjb3JzIjpbeyJtYXhBZ2VTZWNvbmRzIjozNjAwLCJtZXRob2QiOlsiUE9TVCJdLCJvcmlnaW4iOlsic29tZS1vcmlnaW4uY29tIl0sInJlc3BvbnNlSGVhZGVyIjpbImZvby1iYXIiXX1dLCJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDA0In0K" + "Body": "eyJjb3JzIjpbeyJtYXhBZ2VTZWNvbmRzIjozNjAwLCJtZXRob2QiOlsiUE9TVCJdLCJvcmlnaW4iOlsic29tZS1vcmlnaW4uY29tIl0sInJlc3BvbnNlSGVhZGVyIjpbImZvby1iYXIiXX1dLCJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDA0In0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -33674,7 +34185,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:49 GMT" + "Wed, 25 Jul 2018 18:24:27 GMT" ], "Etag": [ "CAE=" @@ -33693,7 +34204,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220545000" + "1532543366000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -33702,16 +34213,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrae22:4190,/bns/yw/borg/yw/bns/blobstore2/bitpusher/198.scotty,acatli15:443" + "xgiadaal14:4213,/bns/xi/borg/xi/bns/blobstore2/bitpusher/97.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=2E41W9e-JYH1N7-RjPgH" + "eid=WsBYW_ykN4yzswa9zLiYAQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/198.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/97.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -33720,13 +34231,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/198:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/97:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -33741,17 +34252,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpZOTGjibBD0rvBslgaTaEJ9o_Sy5GW2VXGH4JzXJN0bl6UOBEQlY9cacgtR06QP-Wmpo0taJPHP-s1JFkzsTe6_omACuBc6g0IciedK459Ddk4Ssk" + "AEnB2UrC70PQBsofTjbFUM8ebHJU__SGRpFmk5CC-9os78NZ5zkvFEGmWHi3VSw3EpOvoubCJfirGi-owPz_zvVkmGnoYgKjtw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NDkuMDU5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjQ5LjA1OVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJjb3JzIjogWwogIHsKICAgIm9yaWdpbiI6IFsKICAgICJzb21lLW9yaWdpbi5jb20iCiAgIF0sCiAgICJtZXRob2QiOiBbCiAgICAiUE9TVCIKICAgXSwKICAgInJlc3BvbnNlSGVhZGVyIjogWwogICAgImZvby1iYXIiCiAgIF0sCiAgICJtYXhBZ2VTZWNvbmRzIjogMzYwMAogIH0KIF0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MjcuNTAwWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjI3LjUwMFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJjb3JzIjogWwogIHsKICAgIm9yaWdpbiI6IFsKICAgICJzb21lLW9yaWdpbi5jb20iCiAgIF0sCiAgICJtZXRob2QiOiBbCiAgICAiUE9TVCIKICAgXSwKICAgInJlc3BvbnNlSGVhZGVyIjogWwogICAgImZvby1iYXIiCiAgIF0sCiAgICJtYXhBZ2VTZWNvbmRzIjogMzYwMAogIH0KIF0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBRT0iCn0K" } }, { - "ID": "bbae204dbd958f9e", + "ID": "946fc9c44128c438", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0004?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0004?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -33770,13 +34281,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f5e64adf249836a263f5d09d09a41814/13522429106046386984;o=0" + "1c3ba4c3d1dca18e14065ae26a3cc4f0/7865493483965497587;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -33785,7 +34296,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0004?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0004?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -33796,9 +34307,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -33810,7 +34323,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:51 GMT" + "Wed, 25 Jul 2018 18:24:29 GMT" ], "Etag": [ "CAI=" @@ -33829,7 +34342,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220546000" + "1532543365000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -33838,16 +34351,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrs185:4159,/bns/yw/borg/yw/bns/blobstore2/bitpusher/115.scotty,acatli15:443" + "xiiadcaa6:4260,/bns/xi/borg/xi/bns/blobstore2/bitpusher/104.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=2U41W4LYGsXWhATtno6wAw" + "eid=W8BYW-jBM-y2swaUwyg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/115.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/104.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -33856,13 +34369,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/115:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/104:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -33877,17 +34390,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrCqp4L1JuW26kiBMA8COS4w6IZOmPbn7y1H1LaZ9AG7x3Ypv1476BYk6tJHdzSxJZLHZ1eC_iyH6BnpTM6wAj1qXfOtil9KwkKgG2KPZsR4vKFsNQ" + "AEnB2Uobw2l1Z9I24tQdVMSsl0eNuj8mJStbA5WicW1kLIDHeRCyM6k_F5UGSkgNMto668xrzj5WZKpkfeImXdC8UM88bnDMCQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NDkuMDU5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjUwLjkxOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MjcuNTAwWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjI5LjExOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "8639aed730f03dad", + "ID": "9f4670be5ecf6562", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0004?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0004?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -33900,13 +34413,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c44412bf67411dd69a04f668760de2a3/15065506544719021639;o=0" + "e80837ce5b5a0f803e4658635d7e31e0/15506455501829980432;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -33915,7 +34428,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0004?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0004?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -33926,9 +34439,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -33940,13 +34455,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:51 GMT" + "Wed, 25 Jul 2018 18:24:29 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:51 GMT" + "Wed, 25 Jul 2018 18:24:29 GMT" ], "Server": [ "UploadServer" @@ -33956,7 +34471,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220548000" + "1532543365000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -33965,16 +34480,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrax68:4128,/bns/yw/borg/yw/bns/blobstore2/bitpusher/265.scotty,acatli15:443" + "xgiadaag10:4269,/bns/xi/borg/xi/bns/blobstore2/bitpusher/71.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=2041W-zeB4ObhATkprbADg" + "eid=XcBYW4XvEuu5swaj8KQw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/265.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/71.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -33983,13 +34498,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/265:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/71:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -34004,14 +34519,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrwoyX3T2WXJcc4Ht2xdeTF5XSKDy1n29qRYuN81V6EN5fAHk5ZS4xK9L4y0-yz1KkGH-2zjq_uXr0nK-5djS81tD7vv_2X4ZL3I5ex3k0sFZGBKHI" + "AEnB2UrxoTiN5VChW46MwZGVVo8k3rb9ovG2cfIhEu-V9AnsOXKm6hCd4i7g9_OoVmjZ8WqZUnmHgTkjx4uc6g0CCzwxmC6jVA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NDkuMDU5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjUwLjkxOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MjcuNTAwWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjI5LjExOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "c4c831f520d76d93", + "ID": "6c1dab1f7b2f5c29", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -34033,13 +34548,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9b1d83e851510db4389b4bf60a8f7779/16680640473622989159;o=0" + "5088cb935ed1d2af22bfbd54e5eb05d9/4700674549758018348;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -34054,14 +34569,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJjb3JzIjpbeyJtYXhBZ2VTZWNvbmRzIjozNjAwLCJtZXRob2QiOlsiUE9TVCJdLCJvcmlnaW4iOlsic29tZS1vcmlnaW4uY29tIl0sInJlc3BvbnNlSGVhZGVyIjpbImZvby1iYXIiXX1dLCJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDA1In0K" + "Body": "eyJjb3JzIjpbeyJtYXhBZ2VTZWNvbmRzIjozNjAwLCJtZXRob2QiOlsiUE9TVCJdLCJvcmlnaW4iOlsic29tZS1vcmlnaW4uY29tIl0sInJlc3BvbnNlSGVhZGVyIjpbImZvby1iYXIiXX1dLCJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDA1In0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -34073,7 +34590,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:52 GMT" + "Wed, 25 Jul 2018 18:24:30 GMT" ], "Etag": [ "CAE=" @@ -34092,7 +34609,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220551000" + "1532543366000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -34101,16 +34618,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrry15:4156,/bns/yw/borg/yw/bns/blobstore2/bitpusher/199.scotty,acatli15:443" + "xgiadaay15:4155,/bns/xi/borg/xi/bns/blobstore2/bitpusher/95.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=2041W4myGcaNhQTT7aKgCA" + "eid=XcBYW43vJKy0swbR3ovADQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/199.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/95.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -34119,13 +34636,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/199:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/95:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -34140,17 +34657,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoiWY7uHo9ilGRcMQJ86JwZ5asP_jbetW-SbtzRmPtyEFoe_8vw_KL9wOv6vdOKc3Si9YGux0uuMk5HDcjcVDxdnL9dPGKeYSCQCO7qeXIQ2vp9BAk" + "AEnB2UoXhwo91oFAiB4oEDEdGHlD-W0g1PcRAwSwz-myyX3Nva8OxTEknPJmZgvztO1T5cU4VtBI3xKOfcHBRpfwcCUtsKMYVA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDUiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NTEuOTkzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjUxLjk5M1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJjb3JzIjogWwogIHsKICAgIm9yaWdpbiI6IFsKICAgICJzb21lLW9yaWdpbi5jb20iCiAgIF0sCiAgICJtZXRob2QiOiBbCiAgICAiUE9TVCIKICAgXSwKICAgInJlc3BvbnNlSGVhZGVyIjogWwogICAgImZvby1iYXIiCiAgIF0sCiAgICJtYXhBZ2VTZWNvbmRzIjogMzYwMAogIH0KIF0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBRT0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDUiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzAuMjAwWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjMwLjIwMFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJjb3JzIjogWwogIHsKICAgIm9yaWdpbiI6IFsKICAgICJzb21lLW9yaWdpbi5jb20iCiAgIF0sCiAgICJtZXRob2QiOiBbCiAgICAiUE9TVCIKICAgXSwKICAgInJlc3BvbnNlSGVhZGVyIjogWwogICAgImZvby1iYXIiCiAgIF0sCiAgICJtYXhBZ2VTZWNvbmRzIjogMzYwMAogIH0KIF0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBRT0iCn0K" } }, { - "ID": "f8a83548454d59b8", + "ID": "666fb45a49a59a15", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0005?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0005?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -34169,13 +34686,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b35076728b8187b57d670e2cf40e525b/18295775506316774534;o=0" + "2e864ff81d2045f03ef2087c7d9262f0/12341636571917403209;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -34184,7 +34701,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0005?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0005?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -34195,9 +34712,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -34209,7 +34728,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:53 GMT" + "Wed, 25 Jul 2018 18:24:31 GMT" ], "Etag": [ "CAI=" @@ -34228,7 +34747,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220552000" + "1532543365000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -34237,16 +34756,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrrr4:4094,/bns/yw/borg/yw/bns/blobstore2/bitpusher/129.scotty,acatli15:443" + "xiiadcaa2:4364,/bns/xi/borg/xi/bns/blobstore2/bitpusher/41.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=3E41W56eEdDXN_6_oYgI" + "eid=XsBYW4acG-yzswaYlLDIBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/129.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/41.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -34255,13 +34774,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/129:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/41:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -34276,17 +34795,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrrJkpkE-yxgPAo1Pf1SOq3kiLRIADADX7-Uk_Qdg2pbJU5jj5iYdjRCtzltysEfVfynH9AAJ_hYhv5X2wpbD70q6FGoyvAFR_3hajmVE39HLVULlk" + "AEnB2UpEgXFDbalZbzlbSP50TRNkqzsui-9jwPJZoSF9EJ5DW-CffUlLmS-0Wk0J2SYEgCZD2PTAZVzpyNi9T7QNCBVFw91m_A" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDUiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NTEuOTkzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjUzLjcxOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDUiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDUiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogImNvcnMiOiBbCiAgewogICAib3JpZ2luIjogWwogICAgInNvbWUtb3JpZ2luLmNvbSIKICAgXSwKICAgIm1ldGhvZCI6IFsKICAgICJQT1NUIgogICBdLAogICAicmVzcG9uc2VIZWFkZXIiOiBbCiAgICAiZm9vLWJhciIKICAgXSwKICAgIm1heEFnZVNlY29uZHMiOiAzNjAwCiAgfQogXSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FJPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDUiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzAuMjAwWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjMxLjcxOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDUiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDUiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogImNvcnMiOiBbCiAgewogICAib3JpZ2luIjogWwogICAgInNvbWUtb3JpZ2luLmNvbSIKICAgXSwKICAgIm1ldGhvZCI6IFsKICAgICJQT1NUIgogICBdLAogICAicmVzcG9uc2VIZWFkZXIiOiBbCiAgICAiZm9vLWJhciIKICAgXSwKICAgIm1heEFnZVNlY29uZHMiOiAzNjAwCiAgfQogXSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FJPSIKfQo=" } }, { - "ID": "3c73fe4d0f16e403", + "ID": "8cc4e399cb936ee5", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0005?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0005?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -34299,13 +34818,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9f2b51f0560db7e7b096aa86cb4afee6/1392390346256502694;o=0" + "21f4403eb7cee5ff77894aee23079f5f/1536137090543961445;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -34314,7 +34833,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0005?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0005?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -34325,9 +34844,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -34339,13 +34860,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:54 GMT" + "Wed, 25 Jul 2018 18:24:32 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:54 GMT" + "Wed, 25 Jul 2018 18:24:32 GMT" ], "Server": [ "UploadServer" @@ -34355,7 +34876,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220548000" + "1532543371000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -34364,16 +34885,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrlz2:4372,/bns/yw/borg/yw/bns/blobstore2/bitpusher/39.scotty,acatli15:443" + "xiiadcba13:4101,/bns/xi/borg/xi/bns/blobstore2/bitpusher/43.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=3U41W-fhOIW8hQTu37noBw" + "eid=X8BYW5nXN-65swarrY6wBw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/39.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/43.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -34382,13 +34903,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/39:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/43:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -34403,17 +34924,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq7EeWPow9d7IWJg4b9S7d-C_tiM9thZiDkzYr5FNl6cCMMl4Rv25ZJv4Nmcd09o1LarcyT_Smgba6ILQ5Q5UCdfKeHLza1Y3cd4MEzf2Ax2jFxgMI" + "AEnB2UoUjuTJpUcjmmEAPpXY3BED0V5cLIv-5h6_xm-R1BdCkuwwSsB0p8a_lvmXFvytHjO7dUp35HtQ3Q1dLXxWZ98meTdLoA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDUiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NTEuOTkzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjUzLjcxOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDUiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDUiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogImNvcnMiOiBbCiAgewogICAib3JpZ2luIjogWwogICAgInNvbWUtb3JpZ2luLmNvbSIKICAgXSwKICAgIm1ldGhvZCI6IFsKICAgICJQT1NUIgogICBdLAogICAicmVzcG9uc2VIZWFkZXIiOiBbCiAgICAiZm9vLWJhciIKICAgXSwKICAgIm1heEFnZVNlY29uZHMiOiAzNjAwCiAgfQogXSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FJPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDUiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzAuMjAwWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjMxLjcxOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDUiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDUiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogImNvcnMiOiBbCiAgewogICAib3JpZ2luIjogWwogICAgInNvbWUtb3JpZ2luLmNvbSIKICAgXSwKICAgIm1ldGhvZCI6IFsKICAgICJQT1NUIgogICBdLAogICAicmVzcG9uc2VIZWFkZXIiOiBbCiAgICAiZm9vLWJhciIKICAgXSwKICAgIm1heEFnZVNlY29uZHMiOiAzNjAwCiAgfQogXSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FJPSIKfQo=" } }, { - "ID": "41130fe5b74f7c64", + "ID": "55f614ed7dcee0ed", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0005?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0005?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -34426,13 +34947,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c9837f53a03814db146bcb58f258b2a6/3007524279455437509;o=0" + "fa099a7c36639b53e0b467a21297b1dc/9177099108408444546;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -34441,7 +34962,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0005?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0005?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -34452,9 +34973,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -34466,7 +34989,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:54 GMT" + "Wed, 25 Jul 2018 18:24:32 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -34482,7 +35005,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220545000" + "1532543364000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -34491,16 +35014,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrdc6:4144,/bns/yw/borg/yw/bns/blobstore2/bitpusher/337.scotty,acatli15:443" + "xiiadcap15:4034,/bns/xi/borg/xi/bns/blobstore2/bitpusher/37.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=3k41W4aTDcO3hgTcw4ywBg" + "eid=YMBYW_CZDI60swa29rugDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/337.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/37.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -34509,13 +35032,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/337:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/37:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -34530,17 +35053,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpmSTsCDZ0sJownQpHbf3ZUxwi4Vf3v12gJC1rxDEaPZqfjvjDGJ2yBoA6NGO-lR3C992BQhT0wh7CyALJf2e33IwdDnjYZnS00Q8I2SAh-ufV1lkw" + "AEnB2Upc3lOpemXTAVuLxn3CKH955cnbjMbYG0bx1pXI48GDgtjlJRCL9j6qK-CSUi4cjrrGttNnWFb27PiqxxdjfWcj9vcyvA" ] }, "Body": "" } }, { - "ID": "8d88b9e640b8cbec", + "ID": "c1bc43755348ae98", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0004?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0004?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -34553,13 +35076,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "726cbb3f58e9ac35a2e38556891b81f8/4550601713833104869;o=0" + "9a075239d10c3e15cad767e36cb4b0cd/16818062225767843742;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -34568,7 +35091,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0004?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0004?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -34579,9 +35102,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -34593,7 +35118,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:55 GMT" + "Wed, 25 Jul 2018 18:24:33 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -34609,7 +35134,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220545000" + "1532543366000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -34618,16 +35143,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrrv12:4154,/bns/yw/borg/yw/bns/blobstore2/bitpusher/238.scotty,acatli15:443" + "xiiadcau12:4238,/bns/xi/borg/xi/bns/blobstore2/bitpusher/112.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=3k41W6PmKMGphQST_ovoDA" + "eid=YMBYW5ynKOm8swbjuZeQDg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/238.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/112.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -34636,13 +35161,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/238:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/112:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -34657,17 +35182,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoW4TUTHRneZLCkFQW_ZSNl11jjABQTfQA9Woyn0kdW-TIN5zX4COhbw-wsHURQWOGN9iqN660NdsbCQVw9AeBivY7WkgxjmiugiVcE5yZw1i05QV0" + "AEnB2UowEXWHLUZci6PrRq4oxQYcKn6JS0VDqDpf5ti0I18DKGhFPthQQJx3XvFxymWIlEp31fXJ4HxzGQKwt4Q3HEM01WyzXQ" ] }, "Body": "" } }, { - "ID": "c6be8f87a468933c", + "ID": "83d14ac19b6b1568", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0003?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0003?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -34680,13 +35205,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "7a8bdb615b9cfec4840844068ce88e98/6165455275845146628;o=0" + "53288bb69ef40ce3fdd003978b042a48/6012562748689238203;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -34695,7 +35220,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0003?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0003?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -34706,9 +35231,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -34720,7 +35247,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:10:55 GMT" + "Wed, 25 Jul 2018 18:24:33 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -34736,7 +35263,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220545000" + "1532543366000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -34745,16 +35272,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrit75:4012,/bns/yw/borg/yw/bns/blobstore2/bitpusher/661.scotty,acatli15:443" + "xgiadabb16:4473,/bns/xi/borg/xi/bns/blobstore2/bitpusher/9.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=3041W7OeCojUhATjwKuwCg" + "eid=YcBYW_CcA46xswa4jrSgDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/661.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/9.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -34763,13 +35290,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/661:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/9:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVmF2Y05Pc2tNdDViTUNrMXpNUEVOOGo1ME96ZGNjTU9aRU9GVkh3Yl9CdHR3ZEphMkRZSHNuRXZrV3Y0Z19ER09VeWRsX0pPUTlxTHNZbmdJTkJjZ1VrQmFDWExBbmw2ZlozSmZXWDVIODJXVGFzVGRYNzhmblpTUGdfYnB5UDY5OGNXRzRCVWNyZkQtUzNzaVNSaWNhVUlrdUVDbTVFRXVpUWJuMkVSZEtud202ejc4SjFhbEQzZVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YTBueVpKc3dRRk5nSWlOaTBPa18tYkl0T3p6ZldqSmJvWXlOVWxqNFU2d21vM0JjMnVuWWYzcGUybG5mSXJRR09MTGJHelk0M05acGM5bENXWTBSamJIb1J6SHEwLXRUTTFpNEJSdkhkYlZrcDZHSFR3aWstRDRGME1fS29LNm5CR1pQcXBDakdjVjd5M3phZEhTN1JnVlVhUlVMQm91Nkk2WGRKOUNsVjJkb29KSm41NVlfZGlRYlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -34784,14 +35311,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqCT4VZb1zHvRALQS-Ng_LW7m6gaMoGnMB86fc-Zn1F25YivcV_521pTccJvzEUusvdbAqSVANw-FuYABuhCDhSXHMyTb5WmHRnTV5DR61WzkTYd40" + "AEnB2UoCXBGDvBJMJafoJdL4St3LHHy-jzW3226_cfflWgmC2jNgrG1LvkpUK_T4R7_bhUzXf4fsf3GpAknE6HkQmmVT5ug1Mg" ] }, "Body": "" } }, { - "ID": "52c0d71b13f8a38c", + "ID": "cd6e2e64c0cb8d74", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -34813,13 +35340,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d642c7eba29a43099d2c667c025e1220/7780589209044015908;o=0" + "a32f7a3f6a47d3c87e46fc1c087662c8/13653243295872043479;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -34834,14 +35361,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDA2IiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjYwIn19Cg==" + "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDA2IiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjYwIn19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -34853,7 +35382,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:56 GMT" + "Wed, 25 Jul 2018 18:24:34 GMT" ], "Etag": [ "CAE=" @@ -34872,7 +35401,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220555000" + "1532543373000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -34881,16 +35410,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrcf9:4485,/bns/yw/borg/yw/bns/blobstore2/bitpusher/58.scotty,acatli15:443" + "xgiadabo14:4091,/bns/xi/borg/xi/bns/blobstore2/bitpusher/93.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=3041W7jVK8buN4yunbAI" + "eid=YcBYW9aOH6m0swaY5YzYCw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/58.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/93.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -34899,13 +35428,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/58:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/93:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -34920,17 +35449,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urpr6NwLBiv_mi4hVIHN0W3DgBpYwVus_4EYG21qrqPL7Vs-9DPsVicyurPOZMo_A5xnDoBb4HDpg8xo3Q2pFNFsZii3fz7wrn4dSAIsF_AEoAFpIs" + "AEnB2Urn21WxpYNaqnv-DxqLw5xJv7wFF0UYJ2JeF5hGse2nPqcPVX8yk8eD-k-YzevYUboXrW9-I0Jl-OC4VlP-EGGrKghzKw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDYiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NTYuMTQ0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjU2LjE0NFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI2MCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yOFQyMToxMDo1Ni4xNDRaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDYiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzMuOTQ4WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjMzLjk0OFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI2MCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQxODoyNDozMy45NDhaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "26d6bf2f903ed22c", + "ID": "3f37e587286eb2cd", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0006?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0006?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -34949,13 +35478,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d6f5bf961980b01c74104b1b54d167fa/9323666647716650563;o=0" + "ca487d2c00623f8bfc82d0002fe1c18e/2847743814498536180;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -34964,7 +35493,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0006?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0006?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -34975,9 +35504,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -34989,7 +35520,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:57 GMT" + "Wed, 25 Jul 2018 18:24:35 GMT" ], "Etag": [ "CAI=" @@ -35008,7 +35539,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220556000" + "1532543374000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -35017,16 +35548,16 @@ "998958384336" ], "X-Google-Backends": [ - "vris2:4169,/bns/yw/borg/yw/bns/blobstore2/bitpusher/291.scotty,acatli15:443" + "xiiadcap9:4050,/bns/xi/borg/xi/bns/blobstore2/bitpusher/7.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=4E41W8vLFIfTN_LZjLgD" + "eid=YsBYW_jFCcGEygODroiYBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/291.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/7.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -35035,13 +35566,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/291:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/7:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -35056,17 +35587,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ure6RRaV5wED5l3KxpFnRa2qW8KCECHH3NxRtwE0JPu-4RI5Nbec6zeS-DA8yv00dSX4ryKrGy-u3pDE2utfLri_d3aAqnB3xZ4sVuyssYLHJQ7RZs" + "AEnB2UorqgpEzmb4D3kzxMACmMJ3-7lGt-5cl5yocN0YRuSm07AbktGyHjZvyyPS-jFgbncs5kVSrJNNkJlm1osbAWMVxj007g" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDYiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NTYuMTQ0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjU3LjczOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDYiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDYiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjM2MDAiLAogICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMjE6MTA6NTYuMTQ0WiIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDYiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzMuOTQ4WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjM1LjYxOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDYiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDYiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjM2MDAiLAogICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDctMjVUMTg6MjQ6MzMuOTQ4WiIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" } }, { - "ID": "9708af716949fd4b", + "ID": "6429a7682135c355", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0006?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0006?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -35079,13 +35610,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d9e51e2be6a1ea0f9b23a002747a76bf/10938800576620618083;o=0" + "5c8c58f30d785d5e671f7357ca439cae/10488705832363084560;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -35094,7 +35625,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0006?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0006?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -35105,9 +35636,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -35119,13 +35652,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:58 GMT" + "Wed, 25 Jul 2018 18:24:36 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:10:58 GMT" + "Wed, 25 Jul 2018 18:24:36 GMT" ], "Server": [ "UploadServer" @@ -35135,7 +35668,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220556000" + "1532543375000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -35144,16 +35677,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrjp69:4089,/bns/yw/borg/yw/bns/blobstore2/bitpusher/102.scotty,acatli15:443" + "xgiadacd12:4335,/bns/xi/borg/xi/bns/blobstore2/bitpusher/86.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=4U41W9fxOcT2N87Rh_gH" + "eid=Y8BYW5nNMa-1swbWtbjQDQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/102.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/86.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -35162,13 +35695,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/102:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/86:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -35183,14 +35716,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uox2FFuYlPP_4mF8cjGGl150GbWNXtgSflouRjXbVt-y7avH7MgOmsf3D2XO_-FoY5dTif6rouYGb_R1-UCbvwcT7aCZ60VJBgKKZDAnW8wWwjafNo" + "AEnB2UqusmMTGclYIDe6l1a8tHURbahUe_JYRrqZjtxabjauAjVN4_pvkeOkXB1kZKE-X876dAuC1PB9tfG5D3eoCNUaxHAGWA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDYiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NTYuMTQ0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjU3LjczOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDYiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDYiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjM2MDAiLAogICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMjE6MTA6NTYuMTQ0WiIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDYiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzMuOTQ4WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjM1LjYxOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDYiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDYiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjM2MDAiLAogICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDctMjVUMTg6MjQ6MzMuOTQ4WiIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" } }, { - "ID": "7594ffa01886bd65", + "ID": "a5c1b2f6e228702b", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -35212,13 +35745,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "511de0a8e8c41f0ce6960f34b4ede02a/12481879114788103298;o=0" + "368ad3389b61f04260c0c6db374ed23d/18129668954017319981;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -35233,14 +35766,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDA3IiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjYwIn19Cg==" + "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDA3IiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjYwIn19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -35252,7 +35787,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:10:58 GMT" + "Wed, 25 Jul 2018 18:24:36 GMT" ], "Etag": [ "CAE=" @@ -35271,7 +35806,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220555000" + "1532543376000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -35280,16 +35815,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrhr11:4176,/bns/yw/borg/yw/bns/blobstore2/bitpusher/488.scotty,acatli15:443" + "xhiadbaa8:4133,/bns/xi/borg/xi/bns/blobstore2/bitpusher/106.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=4k41W-6FDcaJN5i7i4AF" + "eid=ZMBYW_HpB8m9swbZ6qrAAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/488.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/106.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -35298,13 +35833,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/488:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/106:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -35319,17 +35854,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Up-H_uoxDJZsZo1-oX3pPE11qOanTaEFh2OcgRmZNB-lWjZJKMrRuH0BcFrpTITHwqHcGFKSnHdoGm7C_wwY6XWy1LFzDR_ufcgiklQj9fO1tvnp6I" + "AEnB2Uq1RDr1MEgp23ag8AkJcUwu2aSB2PJLhSw2X_0SIK__4TpzRE7hqUKzZzHxXSr72R75jc5yHL-CuYMTVDHxVO3XnVI0gQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDciLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NTguNjY2WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjU4LjY2NloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI2MCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yOFQyMToxMDo1OC42NjZaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDciLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzYuNzgyWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjM2Ljc4MloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI2MCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQxODoyNDozNi43ODJaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "90da3e36482c8eda", + "ID": "c472f5aece41ecd8", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0007?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0007?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -35348,13 +35883,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a6b134a8266b675d58a222ef75d7f7d2/14097013047986972578;o=0" + "e392c7aedf5aa30bf8101982f0302eb0/7324168373149027657;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -35363,7 +35898,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0007?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0007?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -35374,9 +35909,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -35388,7 +35925,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:00 GMT" + "Wed, 25 Jul 2018 18:24:38 GMT" ], "Etag": [ "CAI=" @@ -35407,7 +35944,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220556000" + "1532543374000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -35416,16 +35953,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrnv1:4379,/bns/yw/borg/yw/bns/blobstore2/bitpusher/59.scotty,acatli15:443" + "xiiadcbi11:4077,/bns/xi/borg/xi/bns/blobstore2/bitpusher/61.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=4k41W7_vM8LvhASL0qegBw" + "eid=ZMBYW-qvPI24swa_vo3gCg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/59.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/61.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -35434,13 +35971,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/59:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/61:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -35455,17 +35992,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrzdInRx0WzC3iUw9uEKEqZ9jOMz_mKCd0H48Z-ndgf9KTg8vXSxDmIECtq-nv6exa8vwaWzYL0AAY6u6FtkjYIBi1gi3Q8IDgJAxrjAmU163r15qw" + "AEnB2UpEtw2C2hzgqsrlvaFReZnOqqkyvRhbZaQg7oumk3-74WlIxb2ge2fjhJFWdY4nUjRIl7HvDjQl0bYEKPEj3T8JK-Au4Q" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDciLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NTguNjY2WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjAwLjEzN1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDciLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDciLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjM2MDAiLAogICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMjE6MTA6NTguNjY2WiIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDciLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzYuNzgyWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjM4LjIzMloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDciLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDciLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjM2MDAiLAogICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDctMjVUMTg6MjQ6MzYuNzgyWiIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" } }, { - "ID": "b09b667761978e68", + "ID": "ef4dca8e13375571", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0007?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0007?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -35478,13 +36015,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fa425123d62904d2a1fa781227fef29b/15640090486659607233;o=0" + "05e0148f52a62b5592247de09295347f/14965131490508361318;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -35493,7 +36030,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0007?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0007?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -35504,9 +36041,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -35518,13 +36057,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:00 GMT" + "Wed, 25 Jul 2018 18:24:38 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:00 GMT" + "Wed, 25 Jul 2018 18:24:38 GMT" ], "Server": [ "UploadServer" @@ -35534,7 +36073,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220560000" + "1532543375000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -35543,16 +36082,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrm187:4148,/bns/yw/borg/yw/bns/blobstore2/bitpusher/572.scotty,acatli15:443" + "xiiadcae12:4379,/bns/xi/borg/xi/bns/blobstore2/bitpusher/76.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=5E41W66QFYazhQSrsq7YAw" + "eid=ZsBYW5L0GbC5swaK1pn4CQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/572.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/76.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -35561,13 +36100,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/572:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/76:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -35582,14 +36121,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrniaI_VKLPTei_C4td-u-2yomhp8wti-YTNRtiqKust62BK6yLRH5HbYULjVzpO9SWS-ryEVqeO3bR1R4ti0wi0YMOHbl-BJj-yLfDarFWCFoRIGA" + "AEnB2Upf4-JBp4nUgSaRnE7Vrce8Gn520K4o9sT3NEpxTWum8Vjj5GA5NVdNwqQlUNm9cFBsLnYpK0ljZbYzL9dJxKLZ8HnDww" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDciLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6NTguNjY2WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjAwLjEzN1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDciLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwNy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDciLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjM2MDAiLAogICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMjE6MTA6NTguNjY2WiIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDciLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzYuNzgyWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjM4LjIzMloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDcvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDciLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwNy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDciLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjM2MDAiLAogICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDctMjVUMTg6MjQ6MzYuNzgyWiIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" } }, { - "ID": "b9a23098ac835b41", + "ID": "ee4170d1b7c23c0c", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -35611,13 +36150,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "31eae1967b91e55b82b99988f857f531/17255224415563574753;o=0" + "de0a296afa7b1fb1d028e961a375659b/4159630909640068994;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -35632,14 +36171,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDA4IiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjYwIn19Cg==" + "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDA4IiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjYwIn19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -35651,7 +36192,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:01 GMT" + "Wed, 25 Jul 2018 18:24:39 GMT" ], "Etag": [ "CAE=" @@ -35670,7 +36211,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220555000" + "1532543376000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -35679,16 +36220,16 @@ "998958384336" ], "X-Google-Backends": [ - "vri10:4099,/bns/yw/borg/yw/bns/blobstore2/bitpusher/4.scotty,acatli15:443" + "xhiadbaa15:4432,/bns/xi/borg/xi/bns/blobstore2/bitpusher/46.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=5E41W4WdJorvhAT60qWICA" + "eid=ZsBYW5ahK6-zswb4gZ04" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/4.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/46.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -35697,13 +36238,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/4:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/46:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -35718,17 +36259,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqV7M7654M2n0B-GGyg3YCtX-cXgXCgbiSLht3y8wcxeUG6x-qoQJul3uVXJ7wncmxBk3cRyNJSj-aY5rNL9_Nl_HLGSvMVarA8paPypxktksC4DSE" + "AEnB2Ur1Ed66ng0eCCUBbWEhujiflLse1kERerSG4Nl2kw7VKjOIANS5AKC_FhgjloyJLxZpXskj2zpOZ39smKGzsLRCQAdtDg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDgiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MDEuMjg5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjAxLjI4OVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI2MCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yOFQyMToxMTowMS4yODlaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDgiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzkuMzAxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjM5LjMwMVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI2MCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQxODoyNDozOS4zMDFaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "09931345e25ba5da", + "ID": "3997d219b2d41b8d", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0008?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0008?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -35747,13 +36288,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b4ca478689cc1a5f6bfc36621c933444/423896849524518912;o=0" + "de47a653bd94c0d67a15721b51996eb7/11800312560612561055;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -35762,7 +36303,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0008?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0008?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -35773,9 +36314,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -35787,7 +36330,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:03 GMT" + "Wed, 25 Jul 2018 18:24:40 GMT" ], "Etag": [ "CAI=" @@ -35806,7 +36349,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220556000" + "1532543379000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -35815,16 +36358,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrlz2:4372,/bns/yw/borg/yw/bns/blobstore2/bitpusher/209.scotty,acatli15:443" + "xiiadcax16:4441,/bns/xi/borg/xi/bns/blobstore2/bitpusher/67.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=5U41W73RHoKlN9Wct9gI" + "eid=Z8BYW_a3H-G8swaRqa_QBQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/209.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/67.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -35833,13 +36376,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/209:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/67:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -35854,17 +36397,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UolvMtErawf4IvGZWGlgEHzDvsk80zLE8ByShOgb3swvY6w3huI2ETBvmFzwE8tuQmAoraTY89Zw3RXMd685uQaoBZr7i_ZycXMwVyNR5Lyyog-Af8" + "AEnB2UrPgEkmPvx_UFBbSoqV-F_XJ3Hl7miIslftAarjgMoXMP0tYVHSR7KR8bNiJOEB9Z4NDqgl4aY40SOwOVWWox_C1-V43g" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDgiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MDEuMjg5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjAzLjAyMVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDgvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDgiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDgiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDgiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzkuMzAxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjQwLjcxNloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDgvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDgiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDgiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "b402a162f98073ea", + "ID": "669bf561d0668dcc", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0008?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0008?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -35877,13 +36420,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "386c626a6e20a3a6597b25de0950a66e/1966692817515344672;o=0" + "8ab3263511c6d53613d447b9aa5aba64/994811979744268731;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -35892,7 +36435,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0008?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0008?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -35903,9 +36446,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -35917,13 +36462,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:03 GMT" + "Wed, 25 Jul 2018 18:24:41 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:03 GMT" + "Wed, 25 Jul 2018 18:24:41 GMT" ], "Server": [ "UploadServer" @@ -35933,7 +36478,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220560000" + "1532543375000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -35942,16 +36487,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqe5:4085,/bns/yw/borg/yw/bns/blobstore2/bitpusher/293.scotty,acatli15:443" + "xgiadabo14:4091,/bns/xi/borg/xi/bns/blobstore2/bitpusher/133.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=5041W9ODDoSchwS8k4SIAw" + "eid=aMBYW7_5Nqm9swaeo4b4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/293.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/133.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -35960,13 +36505,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/293:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/133:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -35981,14 +36526,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uoec1_FK40UQCsecZLs1kYZXuNN-v4z5In_JAnffngxL5QgrDtI0FlaUv1ujlnPJuyHTtcNnPMZ9N6ypdT9CsMIQ-w_FNNfAirYzARvsQaTbgtmJCs" + "AEnB2Up2--vMCfvgiFhNfCZZhzq6yIASygqWz7Ppc6rHjEQi1OlwdI9KqoZ4YWYfLMsJMoIWutbiYGe2hNIlb8579-C01Kb5_A" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDgiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MDEuMjg5WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjAzLjAyMVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDgvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDgiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDgiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDgiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6MzkuMzAxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjQwLjcxNloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDgvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDgiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDgiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "12a6b9f8257e556f", + "ID": "1c0c86843e6b3f8a", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -36010,13 +36555,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "54a5f098f2074bf5d63808179d4eba41/3581826750714279487;o=0" + "87c86b82d4736bec9db47e6c39d09411/8635775097086825432;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -36031,14 +36576,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDA5IiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjYwIn19Cg==" + "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDA5IiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjYwIn19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -36050,7 +36597,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:04 GMT" + "Wed, 25 Jul 2018 18:24:41 GMT" ], "Etag": [ "CAE=" @@ -36069,7 +36616,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220563000" + "1532543373000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -36078,16 +36625,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbd3:4081,/bns/yw/borg/yw/bns/blobstore2/bitpusher/172.scotty,acatli15:443" + "xgiadabf15:4445,/bns/xi/borg/xi/bns/blobstore2/bitpusher/82.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=5041W6anH4eHhgSr9ppQ" + "eid=acBYW_fjDNC2swaw7bzYBQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/172.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/82.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -36096,13 +36643,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/172:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/82:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -36117,17 +36664,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uprqw8GusuJjXhMAo_zptR--uK9myvu3RRV5wGRNaQtzMUAFEL6SkQUWIpYzEg4uqRBi78_Suxnfl1rEPhupZmF_vX2OVYbvEY57igtPJcmoY05j4s" + "AEnB2UqXd-a6qOfpzJuXR3TbEfeE65GrV51yxmxNhoNWcrMcH70Qs66msO7XZ4IGm7XzqmTDU3oj8SrrNJLbgFlChb5i7wZ6iA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDkiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MDMuODQ0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjAzLjg0NFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI2MCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yOFQyMToxMTowMy44NDRaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDkiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NDEuNzg1WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjQxLjc4NVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI2MCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQxODoyNDo0MS43ODVaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "26af0c62dc79d11c", + "ID": "7917810f09ae2b22", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0009?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0009?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -36146,13 +36693,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "76fb3c82f8ea9c11d4312c333ab74c02/5124904185091946847;o=0" + "42732b786ae79b6edf9b0686b49b45b5/16276737114951374068;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -36161,7 +36708,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0009?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0009?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -36172,9 +36719,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -36186,7 +36735,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:05 GMT" + "Wed, 25 Jul 2018 18:24:43 GMT" ], "Etag": [ "CAI=" @@ -36205,7 +36754,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220564000" + "1532543379000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -36214,16 +36763,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqm20:4158,/bns/yw/borg/yw/bns/blobstore2/bitpusher/94.scotty,acatli15:443" + "xiiadcak10:4214,/bns/xi/borg/xi/bns/blobstore2/bitpusher/74.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=6E41W8flA8KKhATFuJ7wBw" + "eid=asBYW8kMzrKzBp-umNgH" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/94.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/74.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -36232,13 +36781,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/94:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/74:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -36253,17 +36802,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq9EKwLaNflgRqGvRYy9ocWGIV5OvaWHTmIKVwpHE1wFVjo6-1_m_yq7o9PWrpX-NNyrZYVVSweJVlw9Z71EjtG1Nt6FE2q4RnIXe9NByPAuBgpbYU" + "AEnB2Uonn6KeuH-AmQtZO3bMOyQjgoVQMfOv4xc5keRCaaT8S_eiLkfi74mNadih9REoj1esUhfZFIeFCrCHci1vCtOeDhj00w" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDkiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MDMuODQ0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjA1LjQxOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDkiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDkiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NDEuNzg1WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjQzLjQxMloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDkiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "fbddae685ed8f722", + "ID": "e692bc50c2bdfe7a", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0009?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0009?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -36276,13 +36825,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d4e9f7085cf1a1a7ae335d1406e3680e/6740039217785732222;o=0" + "5ea0d991dc5a79747dadc6d4c2883e8b/5471237637872768273;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -36291,7 +36840,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0009?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0009?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -36302,9 +36851,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -36316,13 +36867,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:05 GMT" + "Wed, 25 Jul 2018 18:24:43 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:05 GMT" + "Wed, 25 Jul 2018 18:24:43 GMT" ], "Server": [ "UploadServer" @@ -36332,7 +36883,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220556000" + "1532543374000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -36341,16 +36892,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrna5:4014,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "xiiadcbd16:4454,/bns/xi/borg/xi/bns/blobstore2/bitpusher/35.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=6U41W4i3JsPdhQTRkIzQBQ" + "eid=a8BYW-SzJKqyswarpK3gCg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/178.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/35.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -36359,13 +36910,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/178:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/35:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -36380,14 +36931,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpyuBgTMq7_GG5fwJaD3g-BEwoAuqapUGr3zDzReNZim5cve6RZx1V8d7SOug3EMgsML0GDLEB-uIx2JtHbs3ypFg0h0yQ5JwBzm_VI898H_FIlntU" + "AEnB2UpYZ4WY19R208zS6OT2w73ENhED4uzgCipSHKtKdsYCkHsU_LYqP24NQCHT8ghiuA3Z4FIvm64KQISjMh9p4mlR3z8_bg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDkiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MDMuODQ0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjA1LjQxOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwOS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDkiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDkiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NDEuNzg1WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjQzLjQxMloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwOS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDkiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "fab04c573ffac79d", + "ID": "9ae8226c737df950", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -36409,13 +36960,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "91f76af722f16dfc5a27ccd171fe4727/8355173150984601502;o=0" + "4147133f9faa7f3a4f34cc44a28c0572/13112199655737316909;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -36430,14 +36981,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEwIiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjYwIn19Cg==" + "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEwIiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjYwIn19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -36449,7 +37002,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:06 GMT" + "Wed, 25 Jul 2018 18:24:44 GMT" ], "Etag": [ "CAE=" @@ -36468,7 +37021,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220563000" + "1532543373000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -36477,16 +37030,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrgg82:4016,/bns/yw/borg/yw/bns/blobstore2/bitpusher/625.scotty,acatli15:443" + "xgiadaam10:4277,/bns/xi/borg/xi/bns/blobstore2/bitpusher/144.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=6U41W8LwN8LdhAT6tKGwBg" + "eid=a8BYW6DHN6W9swaUiID4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/625.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/144.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -36495,13 +37048,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/625:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/144:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -36516,17 +37069,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpQ3Ue3oHlNWHfIvMnZtmXM95LP9VDlQdWN8U4sQyg0mUQUuxEToufPFKshrHK_6w7a6LtproJ5Lqm98l2V7jrGMDLC8N7UCP66m_DMXPnuDzfc0ps" + "AEnB2UqO7ncHHkW_Z4O5CLwCoDz9FWrjB0P2DSlkgIcGyNnGHua01Z37rsazA8wmkNaUpc9QW6HiWiWkERUGo7cCyGjmDjm1yw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MDYuMzcxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjA2LjM3MVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI2MCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yOFQyMToxMTowNi4zNzFaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NDQuNDczWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjQ0LjQ3M1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI2MCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQxODoyNDo0NC40NzNaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "cc46f59d7dc5e04f", + "ID": "589852d672bf78f2", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0010?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0010?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -36545,13 +37098,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3f4cdb6e2d990943b284bbbfe6b0a9a3/9898250589657170622;o=0" + "b5983c4fb9dd2f002b51276c0ca9bb42/2234362209155766090;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -36560,7 +37113,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0010?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0010?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -36571,9 +37124,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -36585,7 +37140,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:08 GMT" + "Wed, 25 Jul 2018 18:24:46 GMT" ], "Etag": [ "CAI=" @@ -36604,7 +37159,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220564000" + "1532543379000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -36613,16 +37168,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrcw125:4019,/bns/yw/borg/yw/bns/blobstore2/bitpusher/101.scotty,acatli15:443" + "xgiadabc15:4276,/bns/xi/borg/xi/bns/blobstore2/bitpusher/63.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=6k41W_qIKcHvhAS3rbPYCg" + "eid=bMBYW-LgK86zswbii4FI" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/101.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/63.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -36631,13 +37186,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/101:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/63:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -36652,17 +37207,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpQzNwoQrzldBbB0_lq3Rm2I2IWOFeYeLEa9Zl82V95ltGiblfV4yGaGBWQuIaR9nq691jFwlzNnBaLKIDBODym3hSDB5dGk8_FifYWAHGd5mK5ykg" + "AEnB2UqbvAB71VVShazQ15nQEQ_O3JAbX_FUtg6WOeTX8nXhELESRy_QcYZeLmzydqEPb6JYg3OeUldIrO-QBSIatp3rfLllnQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MDYuMzcxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjA4LjAyOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjYwIiwKICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA2LTI4VDIxOjExOjA2LjM3MVoiCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NDQuNDczWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjQ1LjkyOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjYwIiwKICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA3LTI1VDE4OjI0OjQ0LjQ3M1oiCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "020c14e4c847c525", + "ID": "153892c0a78bab4d", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0010?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0010?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -36675,13 +37230,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fa3cf0aeb127aabad02fcd0e03c808a3/11513384518561203677;o=0" + "bc6cee86a765e2739139f19021de78ef/9875324227020314726;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -36690,7 +37245,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0010?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0010?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -36701,9 +37256,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -36715,13 +37272,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:08 GMT" + "Wed, 25 Jul 2018 18:24:46 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:08 GMT" + "Wed, 25 Jul 2018 18:24:46 GMT" ], "Server": [ "UploadServer" @@ -36731,7 +37288,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220560000" + "1532543375000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -36740,16 +37297,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrms12:4089,/bns/yw/borg/yw/bns/blobstore2/bitpusher/87.scotty,acatli15:443" + "xgiadaap16:4483,/bns/xi/borg/xi/bns/blobstore2/bitpusher/26.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=7E41W4axDszuhATb8oXwCw" + "eid=bsBYW7b-BqOxswak0oXADA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/87.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/26.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -36758,13 +37315,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/87:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/26:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -36779,17 +37336,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpDo2YXmdY8LXZgzw90YCh4ruc7jVdPwkGatU2ygOs7lv7PpIe50EzzdE0ir43B9lSNp4MYtRC0WIGK4KjL74CAxujyJwFJBJgLZMCsfjFJlOoBTAk" + "AEnB2UpzRJiq6vHXPGoYQoeMPfxz393K5CoZ3Xw_3SJ8jZJgDpP81VGIa8Nv13nkyMGLK-AbciaumXZtST5VkEKJfiUQ6fhF1w" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MDYuMzcxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjA4LjAyOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjYwIiwKICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA2LTI4VDIxOjExOjA2LjM3MVoiCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NDQuNDczWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjQ1LjkyOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTAiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTAiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjYwIiwKICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA3LTI1VDE4OjI0OjQ0LjQ3M1oiCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "78baf9bd42e6dadb", + "ID": "e5c95c1adaa299f6", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0010?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0010?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -36802,13 +37359,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fa6006d43944a1bdbdeb9f06c5bcb5c2/13056463056728623357;o=0" + "34202306b38b4fdc2b4a134861835302/17516287348674550147;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -36817,7 +37374,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0010?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0010?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -36828,9 +37385,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -36842,7 +37401,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:08 GMT" + "Wed, 25 Jul 2018 18:24:46 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -36858,7 +37417,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220555000" + "1532543373000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -36867,16 +37426,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrdb67:4086,/bns/yw/borg/yw/bns/blobstore2/bitpusher/138.scotty,acatli15:443" + "xgiadaao15:4469,/bns/xi/borg/xi/bns/blobstore2/bitpusher/78.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=7E41W9nVH4q-hQT_maLIAg" + "eid=bsBYW5_4GK22swaWrLTYDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/138.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/78.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -36885,13 +37444,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/138:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/78:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -36906,17 +37465,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpaQBfELX-AGaPgUjCl61XVyTHCgPsbtpYKZ9CkZxzr19CeT64V7_poTQs-sIir3c8PqQMhOOm8yOxmDLoYC6zCn7gYaRntTLKiQpBjwFyNJ7G2dwo" + "AEnB2UqxZMp50IRG7m9SLj1csn4dpKFetQcOZuahYV6Fha0rIcBbm-IGW-eIzB3G9u9qHnQwB6c2Sq6fLA2EN8GqNkbJzOgmLQ" ] }, "Body": "" } }, { - "ID": "71b3d9210b0ac960", + "ID": "252e3447660b6da3", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0009?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0009?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -36929,13 +37488,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a960bda1b822a3b99005d12c8d7ee8e2/14671596989927557916;o=0" + "ddb75baa6a2ffd2c5ca97d1f496ae0fb/6710786767806257823;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -36944,7 +37503,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0009?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0009?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -36955,9 +37514,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -36969,7 +37530,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:09 GMT" + "Wed, 25 Jul 2018 18:24:47 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -36985,7 +37546,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220563000" + "1532543373000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -36994,16 +37555,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrcb124:4240,/bns/yw/borg/yw/bns/blobstore2/bitpusher/111.scotty,acatli15:443" + "xgiadaae2:4286,/bns/xi/borg/xi/bns/blobstore2/bitpusher/89.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=7E41W8nQOo7ShASVqYPICg" + "eid=bsBYW9vJMYO9swaYg4XIAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/111.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/89.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -37012,13 +37573,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/111:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/89:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -37033,17 +37594,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoWx74Ykze9njYOJZLA52xxtJR7WjYWjK248WffqZQyeGjRYuC3pH31VBRMT8uJ70wIpXzJm2BlEGffJVFvB8hojkvY86-7RIeP9xuRSKvuIO9Y7qY" + "AEnB2Ur_Vv12kX96tyRoRq4S6_8BPXPLnzwqO_AM5dOMk9PNQ_n92VA0net9G-CDYfhq2BEU5Iog7s1aGIydxoa_DWsKcL46bg" ] }, "Body": "" } }, { - "ID": "a384a50051fd0b8d", + "ID": "fb9247cf0969ab4c", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0008?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0008?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -37056,13 +37617,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d92b2c5e8b82ddd9f846c8e1529a8d63/16214392957918383676;o=0" + "74f54ef1305b99ed58faec2504c5d37d/14351749885165591484;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -37071,7 +37632,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0008?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0008?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -37082,9 +37643,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -37096,7 +37659,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:09 GMT" + "Wed, 25 Jul 2018 18:24:47 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -37112,7 +37675,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220563000" + "1532543373000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -37121,16 +37684,16 @@ "998958384336" ], "X-Google-Backends": [ - "vroa22:4081,/bns/yw/borg/yw/bns/blobstore2/bitpusher/522.scotty,acatli15:443" + "xgiadabr1:4172,/bns/xi/borg/xi/bns/blobstore2/bitpusher/31.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=7U41W6q4HcSnhQTgoLeoCQ" + "eid=b8BYW7TjDsq8swaH5K8g" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/522.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/31.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -37139,13 +37702,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/522:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/31:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -37160,17 +37723,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur2FexzNqLVfy-G_2zzu6xDMld1C9_zlwSCB26hohfJnjFBC4dNoAp9JSbAlTQm7VK_F3U7PUOh2qvHvGNw1NuZZZvEY_A1zL0VDwrC8NgXgH_CzOU" + "AEnB2Uq88eOLkiumxi4Vr0eTlD3r0l2TXMaZSDOh2j-VTQfovYGAGanPTS4qPdW2dcAOA3HmsCQe5wWlsIReQ8wlGXARHcedGw" ] }, "Body": "" } }, { - "ID": "7f59eed97fe3a6a0", + "ID": "894f214886740d81", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0007?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0007?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -37183,13 +37746,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "44b1c14459990dd486c6fedebca6e062/17829526886822416731;o=0" + "d06fa586a0ce0febdda6189993ae7192/3546250403792149720;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -37198,7 +37761,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0007?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0007?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -37209,9 +37772,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -37223,7 +37788,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:10 GMT" + "Wed, 25 Jul 2018 18:24:48 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -37239,7 +37804,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220563000" + "1532543373000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -37248,16 +37813,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrdh62:4480,/bns/yw/borg/yw/bns/blobstore2/bitpusher/306.scotty,acatli15:443" + "xgiadaap16:4483,/bns/xi/borg/xi/bns/blobstore2/bitpusher/14.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=7U41W-L0OsL7hQTg1oPgDg" + "eid=b8BYW_W_J8K5swbhtJyABg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/306.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/14.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -37266,13 +37831,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/306:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/14:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -37287,17 +37852,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo7fpi3AHC9xQncR9d8booud6w31tXdGf8BnkMfCLHbA0jH2sZme9rgP5pH57vgK-muFnwf0mlaXJ8O0qHR7c7jth6k92WaDXoj5cYEoWIle96wZEw" + "AEnB2UqietgalPyXUgs4kS1sNgLPjcaR_Uxzz5yb2ckwE0jc2Gp8Ogb1OGn8d5O0v14UvMAL8FYHcHeOO0FlVNXbtbJQ8zxa1A" ] }, "Body": "" } }, { - "ID": "d256b404f8656a9a", + "ID": "49c4ab447b84d662", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0006?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0006?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -37310,13 +37875,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "91db821c91014cca6364debe4aec1b38/998199320783295611;o=0" + "7a6734c4324e3eaa74b3f5282f04f75c/11187212425951534581;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -37325,7 +37890,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0006?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0006?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -37336,9 +37901,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -37350,7 +37917,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:10 GMT" + "Wed, 25 Jul 2018 18:24:48 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -37366,7 +37933,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220563000" + "1532543373000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -37375,16 +37942,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrls9:4389,/bns/yw/borg/yw/bns/blobstore2/bitpusher/409.scotty,acatli15:443" + "xgiadabn6:4066,/bns/xi/borg/xi/bns/blobstore2/bitpusher/22.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=7k41W4XEF9XkhQS3p57YBw" + "eid=cMBYW6eNA824swaRxZCoAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/409.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/22.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -37393,13 +37960,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/409:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/22:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVW5odFUyclFOb01LNnE4NFFRRTIzS2VTMEs0dERWOFB4YnpYZVZ3dUlfU0dQMjNxa3pUSUdHOE5xSXFWTVFLenBoQmRHSjJyZFpwV3dmQTZKb1FUVmpKRjI0a0lOOFJjQl9IQ1N4R2JMRlBPdGVGb2JtZ2RsWTlCUHJfRl8xR0pRMEdkOTBEV2NjSDlMQTYyUmJsVTJVM1Zrd0JKS2pCZUw0anRXX2k5cHR1dzItaU16b2lVVzJUVlEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3Wk5qbmpFMTZfaW5fRGhjaG1lcWNjTTJHdU51TzM1ZnVhdVhmalVyaFVpMGNtYlRndURVTkNQUU9MRVpnYmxLekZOSFV0MFhXN0RoUnRxeExJaWd4d3ROVTZkUkxUdUlEbVFXVE1UMUpyMmlTZFlRdjdwOXlyME9XYVlkVjA5NjRUTzB4OVBLMmtadUh6Wk5nb1NzdmVrTFRlMTNQZ2xmTVh2b1VaZTJmSWRMajJqRVhnODdrM3lWZXMwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -37414,14 +37981,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpQkCxoyGu5VVxQDyNDHt2nEK3hEWoamYzfQ2RjTWXtwRFXZF5eNe5W5-5t_VOnsr_Zuqn4LDYQWs40FJbLjluNuavTYwumDqJoDA27wNjbakqhNVs" + "AEnB2UqQ1yrjZrIMYJMReZQlGgiJU6vZMl9C32ys7PHkVOBQ0b0V9E-gazE7aHT8mO4koLlm-e_oARAt4B8x25upf9t42nk2CQ" ] }, "Body": "" } }, { - "ID": "0690b920cefb3cfd", + "ID": "b76fc75b0bcdd7fc", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -37443,13 +38010,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "33d59f7369af3145b96e39338cdbe201/2541276759455930266;o=0" + "65455a9ec65ffdd8216c4dba9c1ddfa5/381431473896349201;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -37464,23 +38031,37 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExIiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjkwMDAwIn19Cg==" + "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDExIiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjkwMDAwIn19Cg==" }, "Response": { - "StatusCode": 429, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "13051" + "563" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:11 GMT" + "Wed, 25 Jul 2018 18:24:49 GMT" + ], + "Etag": [ + "CAE=" + ], + "Expires": [ + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -37490,7 +38071,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220570000" + "1532543388000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -37499,16 +38080,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrm187:4148,/bns/yw/borg/yw/bns/blobstore2/bitpusher/577.scotty,acatli15:443" + "xgiadace2:4438,/bns/xi/borg/xi/bns/blobstore2/bitpusher/58.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=7k41W8vLOcGVhgSpl5CYAw" + "eid=cMBYW4_QINC3swaYoYGgCA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/577.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/58.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -37517,13 +38098,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/577:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/58:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVJFZWVGd1ZTMFY1dElId1RrOUpFWlVKMkppLTk1VktLVGZVVVIxM0ROQjIwbjBOV3hwcFhQekRiTTgtQnNUanlZN0tTRk1YbVU3aVFrV2VPd2RoUE9nTTNOa2dzLW80Z3BKR3pjY2hnZDIzN2czSjBwLTdqRVlWRTRMVjBzTndlYWduaG4tY1BJcUtlMnFyOHdwU2JSZTMzYk00RVQxdWxNTW95cVg4VXFKc1RPd09sQjM5NFlGSVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnY2RnRQVldJdC00ZlBLc3RVNlNlNjZyXzg4M2c3ZVNEUTdoX1hZSUszTURyT3hGWVowWjV6OFRTRGdZc041M2VlbmFzd3NoVk1EZjVfWGVBVnVwaGtoWW5EZ3ZLYUN5elZvandjWFJMTEtCRUo2R0Vvak51b004aDJaNTNIb20xSXBJaU1qZWFUTHVsNUJpXzhBTnkzZ093YXpra2pUMlJ2cVlpVHJLWG9CdVgyb2JSWlJJTVg3d0kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -37532,23 +38113,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqmRCekZyikqumQ4nZhwOwy9K7rPyy6F6_HToH4lBG_A6403yPtOMa0Nd5dN-iPWoMXoDxzNTa8rhXm3r9_uKX_1Tsx9zqC4pO3znn8BNkSX9QUOXE" + "AEnB2UqWvKfGMQ4Vq9VnVowJqHVgTEwAV7kh5MaUSRhMNYfGx8PFGqyHO1dROgsjIJ9dMWTUI1aXaNjalQjxk5BDMCdAYtzccA" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAidXNhZ2VMaW1pdHMiLAogICAgInJlYXNvbiI6ICJyYXRlTGltaXRFeGNlZWRlZCIsCiAgICAibWVzc2FnZSI6ICJUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IENyZWF0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5JbnNlcnRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydEJ1Y2tldC5qYXZhOjE2Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkluc2VydEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0QnVja2V0LmphdmE6MzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLmluc2VydChCdWNrZXRzRGVsZWdhdG9yLmphdmE6ODYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBDcmVhdGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1UT09fTUFOWV9SRVFVRVNUUywgY2F0ZWdvcnk9UVVPVEFfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogQ3JlYXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkluc2VydEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0QnVja2V0LmphdmE6MTYzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuSW5zZXJ0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRCdWNrZXQuamF2YTozOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuaW5zZXJ0KEJ1Y2tldHNEZWxlZ2F0b3IuamF2YTo4Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IENyZWF0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPXVzYWdlTGltaXRzLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9dG9vTWFueVJlcXVlc3RzLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLkNMSUVOVF9RVU9UQV9FWENFRURFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IENyZWF0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5JbnNlcnRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydEJ1Y2tldC5qYXZhOjE2Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkluc2VydEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0QnVja2V0LmphdmE6MzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLmluc2VydChCdWNrZXRzRGVsZWdhdG9yLmphdmE6ODYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBDcmVhdGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPUNMSUVOVF9RVU9UQV9FWENFRURFRCwgZXJyb3JQcm90b0RvbWFpbj1jbG91ZC5iaWdzdG9yZS5hcGkuQmlnc3RvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZS5idWNrZXQubmFtZSwgbWVzc2FnZT1UaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlLmJ1Y2tldC5uYW1lLCBtZXNzYWdlPVRoZSBwcm9qZWN0IGV4Y2VlZGVkIHRoZSByYXRlIGxpbWl0IGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgYnVja2V0cy4sIHJlYXNvbj1yYXRlTGltaXRFeGNlZWRlZCwgcnBjQ29kZT00Mjl9IFRoZSBwcm9qZWN0IGV4Y2VlZGVkIHRoZSByYXRlIGxpbWl0IGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgYnVja2V0cy46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBDcmVhdGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuSW5zZXJ0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRCdWNrZXQuamF2YToxNjMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5JbnNlcnRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydEJ1Y2tldC5qYXZhOjM4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5pbnNlcnQoQnVja2V0c0RlbGVnYXRvci5qYXZhOjg2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogQ3JlYXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQyOSwKICAibWVzc2FnZSI6ICJUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuIgogfQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NDguOTM4WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjQ4LjkzOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQxODoyNDo0OC45MzhaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "babd9716cca9191f", + "ID": "d0d2ac8ca052b2cd", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0011/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -37557,23 +38138,20 @@ "Authorization": [ "REDACTED" ], - "Content-Length": [ - "106" - ], "Content-Type": [ - "application/json" + "multipart/related; boundary=495f3a1078d1fccedf81508e41d6f8a587f7d33a1e4db3ccfc3d3cec1d2f" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "33d59f7369af3145b96e39338cdbe201/3348983911657199786;o=0" + "321bf53cba897aed355b4c47825e6b95/4238080917824216992;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -37582,29 +38160,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0011/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExIiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjkwMDAwIn19Cg==" + "Body": "LS00OTVmM2ExMDc4ZDFmY2NlZGY4MTUwOGU0MWQ2ZjhhNTg3ZjdkMzNhMWU0ZGIzY2NmYzNkM2NlYzFkMmYNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMSIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJzb21lLW9iamVjdCJ9Cg0KLS00OTVmM2ExMDc4ZDFmY2NlZGY4MTUwOGU0MWQ2ZjhhNTg3ZjdkMzNhMWU0ZGIzY2NmYzNkM2NlYzFkMmYNCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbg0KDQpoZWxsbyB3b3JsZA0KLS00OTVmM2ExMDc4ZDFmY2NlZGY4MTUwOGU0MWQ2ZjhhNTg3ZjdkMzNhMWU0ZGIzY2NmYzNkM2NlYzFkMmYtLQ0K" }, "Response": { - "StatusCode": 429, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "13051" + "3753" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:12 GMT" + "Wed, 25 Jul 2018 18:24:49 GMT" + ], + "Etag": [ + "CMffy/PvutwCEAE=" + ], + "Expires": [ + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -37614,7 +38206,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220571000" + "1532543389000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -37623,16 +38215,19 @@ "998958384336" ], "X-Google-Backends": [ - "vras29:4472,/bns/yw/borg/yw/bns/blobstore2/bitpusher/635.scotty,acatli15:443" + "xiiadcbh15:4099,/bns/xi/borg/xi/bns/blobstore2/bitpusher/1.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=7041W4CeKsPrhAT61qjACQ" + "eid=ccBYW7_xBu2yswad5qDADg" + ], + "X-Google-Gfe-Cloud-Project-Number": [ + "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/635.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/1.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -37641,38 +38236,38 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/635:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/1:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVJFZWVGd1ZTMFY1dElId1RrOUpFWlVKMkppLTk1VktLVGZVVVIxM0ROQjIwbjBOV3hwcFhQekRiTTgtQnNUanlZN0tTRk1YbVU3aVFrV2VPd2RoUE9nTTNOa2dzLW80Z3BKR3pjY2hnZDIzN2czSjBwLTdqRVlWRTRMVjBzTndlYWduaG4tY1BJcUtlMnFyOHdwU2JSZTMzYk00RVQxdWxNTW95cVg4VXFKc1RPd09sQjM5NFlGSVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnY2RnRQVldJdC00ZlBLc3RVNlNlNjZyXzg4M2c3ZVNEUTdoX1hZSUszTURyT3hGWVowWjV6OFRTRGdZc041M2VlbmFzd3NoVk1EZjVfWGVBVnVwaGtoWW5EZ3ZLYUN5elZvandjWFJMTEtCRUo2R0Vvak51b004aDJaNTNIb20xSXBJaU1qZWFUTHVsNUJpXzhBTnkzZ093YXpra2pUMlJ2cVlpVHJLWG9CdVgyb2JSWlJJTVg3d0kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" ], "X-Guploader-Customer": [ - "apiary_cloudstorage_metadata" + "apiary_cloudstorage_single_post_uploads" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqGAa2_wjRYB6hOeJ07xbnGGJKEzLNh1mcacNIteqJKt9vPlZ1KDzIBD1Vtn8LpuKueqRaClc_vHV4YXkvghV-x-2WY8DAUn_GfgJVLggZc2WC_GDw" + "AEnB2UpsPge2DN2JK4chM_teOCstlRjPXdqp_zVkiP9_QVj117kwcn0pJEo7btjwDZVos-ZtHExdB237M5_3bh1fuSKM0332dw" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAidXNhZ2VMaW1pdHMiLAogICAgInJlYXNvbiI6ICJyYXRlTGltaXRFeGNlZWRlZCIsCiAgICAibWVzc2FnZSI6ICJUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IENyZWF0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5JbnNlcnRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydEJ1Y2tldC5qYXZhOjE2Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkluc2VydEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0QnVja2V0LmphdmE6MzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLmluc2VydChCdWNrZXRzRGVsZWdhdG9yLmphdmE6ODYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBDcmVhdGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1UT09fTUFOWV9SRVFVRVNUUywgY2F0ZWdvcnk9UVVPVEFfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogQ3JlYXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkluc2VydEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0QnVja2V0LmphdmE6MTYzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuSW5zZXJ0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRCdWNrZXQuamF2YTozOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuaW5zZXJ0KEJ1Y2tldHNEZWxlZ2F0b3IuamF2YTo4Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IENyZWF0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPXVzYWdlTGltaXRzLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9dG9vTWFueVJlcXVlc3RzLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLkNMSUVOVF9RVU9UQV9FWENFRURFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IENyZWF0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5JbnNlcnRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydEJ1Y2tldC5qYXZhOjE2Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkluc2VydEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0QnVja2V0LmphdmE6MzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLmluc2VydChCdWNrZXRzRGVsZWdhdG9yLmphdmE6ODYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBDcmVhdGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPUNMSUVOVF9RVU9UQV9FWENFRURFRCwgZXJyb3JQcm90b0RvbWFpbj1jbG91ZC5iaWdzdG9yZS5hcGkuQmlnc3RvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZS5idWNrZXQubmFtZSwgbWVzc2FnZT1UaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlLmJ1Y2tldC5uYW1lLCBtZXNzYWdlPVRoZSBwcm9qZWN0IGV4Y2VlZGVkIHRoZSByYXRlIGxpbWl0IGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgYnVja2V0cy4sIHJlYXNvbj1yYXRlTGltaXRFeGNlZWRlZCwgcnBjQ29kZT00Mjl9IFRoZSBwcm9qZWN0IGV4Y2VlZGVkIHRoZSByYXRlIGxpbWl0IGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgYnVja2V0cy46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBDcmVhdGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuSW5zZXJ0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRCdWNrZXQuamF2YToxNjMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5JbnNlcnRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydEJ1Y2tldC5qYXZhOjM4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5pbnNlcnQoQnVja2V0c0RlbGVnYXRvci5qYXZhOjg2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogQ3JlYXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQyOSwKICAibWVzc2FnZSI6ICJUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuIgogfQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9zb21lLW9iamVjdC8xNTMyNTQzMDg5NDM4NjYzIiwKICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDExL28vc29tZS1vYmplY3QiLAogIm5hbWUiOiAic29tZS1vYmplY3QiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzA4OTQzODY2MyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNDo0OS40MzhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NDkuNDM4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjQ5LjQzOFoiLAogInNpemUiOiAiMTEiLAogIm1kNUhhc2giOiAiWHJZN3UrQWU3dENUeXlLN2oxck53dz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9vL3NvbWUtb2JqZWN0P2dlbmVyYXRpb249MTUzMjU0MzA4OTQzODY2MyZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEvc29tZS1vYmplY3QvMTUzMjU0MzA4OTQzODY2My9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDExL28vc29tZS1vYmplY3QvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEiLAogICAib2JqZWN0IjogInNvbWUtb2JqZWN0IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzA4OTQzODY2MyIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ01mZnkvUHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9zb21lLW9iamVjdC8xNTMyNTQzMDg5NDM4NjYzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDExL28vc29tZS1vYmplY3QvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDExIiwKICAgIm9iamVjdCI6ICJzb21lLW9iamVjdCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwODk0Mzg2NjMiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ01mZnkvUHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9zb21lLW9iamVjdC8xNTMyNTQzMDg5NDM4NjYzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDExL28vc29tZS1vYmplY3QvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDExIiwKICAgIm9iamVjdCI6ICJzb21lLW9iamVjdCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwODk0Mzg2NjMiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNNZmZ5L1B2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEvc29tZS1vYmplY3QvMTUzMjU0MzA4OTQzODY2My91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEvby9zb21lLW9iamVjdC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDExIiwKICAgIm9iamVjdCI6ICJzb21lLW9iamVjdCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwODk0Mzg2NjMiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNNZmZ5L1B2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJ5WlJscWc9PSIsCiAiZXRhZyI6ICJDTWZmeS9QdnV0d0NFQUU9IiwKICJyZXRlbnRpb25FeHBpcmF0aW9uVGltZSI6ICIyMDE4LTA3LTI2VDE5OjI0OjQ5LjQzOFoiCn0K" } }, { - "ID": "b7ae48d0879d448e", + "ID": "415a57722afae770", "Request": { - "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011/o/some-object?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -37681,23 +38276,17 @@ "Authorization": [ "REDACTED" ], - "Content-Length": [ - "106" - ], - "Content-Type": [ - "application/json" - ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "33d59f7369af3145b96e39338cdbe201/4156410692654799546;o=0" + "5f5ba032448063d8e1f1e1d813a710ea/8022393491760832302;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -37706,29 +38295,37 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011/o/some-object?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExIiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjkwMDAwIn19Cg==" + "Body": "" }, "Response": { - "StatusCode": 429, + "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "private, max-age=0" ], "Content-Length": [ - "13051" + "13204" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:13 GMT" + "Wed, 25 Jul 2018 18:24:49 GMT" + ], + "Expires": [ + "Wed, 25 Jul 2018 18:24:49 GMT" ], "Server": [ "UploadServer" @@ -37738,7 +38335,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220570000" + "1532543389000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -37747,16 +38344,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrlj81:4352,/bns/yw/borg/yw/bns/blobstore2/bitpusher/252.scotty,acatli15:443" + "xhiadbac7:4350,/bns/xi/borg/xi/bns/blobstore2/bitpusher/18.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=8E41W83TKoG0N6SfkrgK" + "eid=ccBYW8SgIeK8swbW8bjYCA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/252.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/18.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -37765,13 +38362,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/252:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/18:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVJFZWVGd1ZTMFY1dElId1RrOUpFWlVKMkppLTk1VktLVGZVVVIxM0ROQjIwbjBOV3hwcFhQekRiTTgtQnNUanlZN0tTRk1YbVU3aVFrV2VPd2RoUE9nTTNOa2dzLW80Z3BKR3pjY2hnZDIzN2czSjBwLTdqRVlWRTRMVjBzTndlYWduaG4tY1BJcUtlMnFyOHdwU2JSZTMzYk00RVQxdWxNTW95cVg4VXFKc1RPd09sQjM5NFlGSVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnY2RnRQVldJdC00ZlBLc3RVNlNlNjZyXzg4M2c3ZVNEUTdoX1hZSUszTURyT3hGWVowWjV6OFRTRGdZc041M2VlbmFzd3NoVk1EZjVfWGVBVnVwaGtoWW5EZ3ZLYUN5elZvandjWFJMTEtCRUo2R0Vvak51b004aDJaNTNIb20xSXBJaU1qZWFUTHVsNUJpXzhBTnkzZ093YXpra2pUMlJ2cVlpVHJLWG9CdVgyb2JSWlJJTVg3d0kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -37786,17 +38383,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UqNthFRhRte4BKdbqCJo3AyjoGRI6QEN_HH1J6rQMQIhG9-BLJ_lgSpcOG0XUMhh5iLV_j948WAJ8OP8I4JsQerRlQMVV4R5NxiMtGO4EZIAVjhr5E" + "AEnB2Uo-SssZ7sOuahkB_eeDLVMCoB5GUY2KDBTzJEnR-ZozMmc6HOlMf_0zL-iHxA_j4NMJ2hZcLLwbxf6Z2chB11v3LhkzUg" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAidXNhZ2VMaW1pdHMiLAogICAgInJlYXNvbiI6ICJyYXRlTGltaXRFeGNlZWRlZCIsCiAgICAibWVzc2FnZSI6ICJUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IENyZWF0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5JbnNlcnRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydEJ1Y2tldC5qYXZhOjE2Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkluc2VydEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0QnVja2V0LmphdmE6MzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLmluc2VydChCdWNrZXRzRGVsZWdhdG9yLmphdmE6ODYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBDcmVhdGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1UT09fTUFOWV9SRVFVRVNUUywgY2F0ZWdvcnk9UVVPVEFfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogQ3JlYXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkluc2VydEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0QnVja2V0LmphdmE6MTYzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuSW5zZXJ0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRCdWNrZXQuamF2YTozOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuaW5zZXJ0KEJ1Y2tldHNEZWxlZ2F0b3IuamF2YTo4Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IENyZWF0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPXVzYWdlTGltaXRzLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9dG9vTWFueVJlcXVlc3RzLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLkNMSUVOVF9RVU9UQV9FWENFRURFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IENyZWF0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5JbnNlcnRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydEJ1Y2tldC5qYXZhOjE2Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkluc2VydEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoSW5zZXJ0QnVja2V0LmphdmE6MzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLmluc2VydChCdWNrZXRzRGVsZWdhdG9yLmphdmE6ODYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBDcmVhdGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPUNMSUVOVF9RVU9UQV9FWENFRURFRCwgZXJyb3JQcm90b0RvbWFpbj1jbG91ZC5iaWdzdG9yZS5hcGkuQmlnc3RvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZS5idWNrZXQubmFtZSwgbWVzc2FnZT1UaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlLmJ1Y2tldC5uYW1lLCBtZXNzYWdlPVRoZSBwcm9qZWN0IGV4Y2VlZGVkIHRoZSByYXRlIGxpbWl0IGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgYnVja2V0cy4sIHJlYXNvbj1yYXRlTGltaXRFeGNlZWRlZCwgcnBjQ29kZT00Mjl9IFRoZSBwcm9qZWN0IGV4Y2VlZGVkIHRoZSByYXRlIGxpbWl0IGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgYnVja2V0cy46IGNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBDcmVhdGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuSW5zZXJ0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChJbnNlcnRCdWNrZXQuamF2YToxNjMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5JbnNlcnRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEluc2VydEJ1Y2tldC5qYXZhOjM4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5pbnNlcnQoQnVja2V0c0RlbGVnYXRvci5qYXZhOjg2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogQ3JlYXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQyOSwKICAibWVzc2FnZSI6ICJUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuIgogfQp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogIkZvcmJpZGRlbiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IFJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBPYmplY3QgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9zb21lLW9iamVjdCcgaXMgc3ViamVjdCB0byBidWNrZXQncyByZXRlbnRpb24gcG9saWN5IGFuZCBjYW5ub3QgYmUgZGVsZXRlZCBvciBvdmVyd3JpdHRlbiB1bnRpbCAyMDE4LTA3LTI2VDEyOjI0OjQ5LjQzODQxNzY0NC0wNzowMFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YTo4NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6MjcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmRlbGV0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTEzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IE9iamVjdCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDExL3NvbWUtb2JqZWN0JyBpcyBzdWJqZWN0IHRvIGJ1Y2tldCdzIHJldGVudGlvbiBwb2xpY3kgYW5kIGNhbm5vdCBiZSBkZWxldGVkIG9yIG92ZXJ3cml0dGVuIHVudGlsIDIwMTgtMDctMjZUMTI6MjQ6NDkuNDM4NDE3NjQ0LTA3OjAwXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IFJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogT2JqZWN0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEvc29tZS1vYmplY3QnIGlzIHN1YmplY3QgdG8gYnVja2V0J3MgcmV0ZW50aW9uIHBvbGljeSBhbmQgY2Fubm90IGJlIGRlbGV0ZWQgb3Igb3ZlcndyaXR0ZW4gdW50aWwgMjAxOC0wNy0yNlQxMjoyNDo0OS40Mzg0MTc2NDQtMDc6MDBcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBPYmplY3QgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9zb21lLW9iamVjdCcgaXMgc3ViamVjdCB0byBidWNrZXQncyByZXRlbnRpb24gcG9saWN5IGFuZCBjYW5ub3QgYmUgZGVsZXRlZCBvciBvdmVyd3JpdHRlbiB1bnRpbCAyMDE4LTA3LTI2VDEyOjI0OjQ5LjQzODQxNzY0NC0wNzowMFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IFJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBPYmplY3QgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9zb21lLW9iamVjdCcgaXMgc3ViamVjdCB0byBidWNrZXQncyByZXRlbnRpb24gcG9saWN5IGFuZCBjYW5ub3QgYmUgZGVsZXRlZCBvciBvdmVyd3JpdHRlbiB1bnRpbCAyMDE4LTA3LTI2VDEyOjI0OjQ5LjQzODQxNzY0NC0wNzowMFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YTo4NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6MjcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmRlbGV0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTEzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IE9iamVjdCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDExL3NvbWUtb2JqZWN0JyBpcyBzdWJqZWN0IHRvIGJ1Y2tldCdzIHJldGVudGlvbiBwb2xpY3kgYW5kIGNhbm5vdCBiZSBkZWxldGVkIG9yIG92ZXJ3cml0dGVuIHVudGlsIDIwMTgtMDctMjZUMTI6MjQ6NDkuNDM4NDE3NjQ0LTA3OjAwXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPUZPUkJJRERFTiwgZXJyb3JQcm90b0RvbWFpbj1nZGF0YS5Db3JlRXJyb3JEb21haW4sIGZpbHRlcmVkTWVzc2FnZT1udWxsLCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPUZvcmJpZGRlbiwgcmVhc29uPWZvcmJpZGRlbiwgcnBjQ29kZT00MDN9IEZvcmJpZGRlbjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IE9iamVjdCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDExL3NvbWUtb2JqZWN0JyBpcyBzdWJqZWN0IHRvIGJ1Y2tldCdzIHJldGVudGlvbiBwb2xpY3kgYW5kIGNhbm5vdCBiZSBkZWxldGVkIG9yIG92ZXJ3cml0dGVuIHVudGlsIDIwMTgtMDctMjZUMTI6MjQ6NDkuNDM4NDE3NjQ0LTA3OjAwXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IFJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogT2JqZWN0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEvc29tZS1vYmplY3QnIGlzIHN1YmplY3QgdG8gYnVja2V0J3MgcmV0ZW50aW9uIHBvbGljeSBhbmQgY2Fubm90IGJlIGRlbGV0ZWQgb3Igb3ZlcndyaXR0ZW4gdW50aWwgMjAxOC0wNy0yNlQxMjoyNDo0OS40Mzg0MTc2NDQtMDc6MDBcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiRm9yYmlkZGVuIgogfQp9Cg==" } }, { - "ID": "4981a73c6d7e88a3", + "ID": "aedeabbd9b2ce927", "Request": { - "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", + "Method": "PATCH", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -37806,7 +38403,7 @@ "REDACTED" ], "Content-Length": [ - "106" + "25" ], "Content-Type": [ "application/json" @@ -37815,13 +38412,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "33d59f7369af3145b96e39338cdbe201/4963837473669241801;o=0" + "ad3627ad60bd43adc97c8be4b3f90ccd/15663356609120231498;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -37830,35 +38427,37 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExIiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjkwMDAwIn19Cg==" + "Body": "eyJyZXRlbnRpb25Qb2xpY3kiOm51bGx9Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "563" + "2734" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:16 GMT" + "Wed, 25 Jul 2018 18:24:51 GMT" ], "Etag": [ - "CAE=" + "CAI=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -37874,25 +38473,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220571000" + "1532543390000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" + "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrbh11:4232,/bns/yw/borg/yw/bns/blobstore2/bitpusher/197.scotty,acatli15:443" + "xgiadaaa9:4028,/bns/xi/borg/xi/bns/blobstore2/bitpusher/129.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=8041W5LQOobRhQSY0oKoCQ" + "eid=ccBYW6LCLee8swagtYXwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/197.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/129.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -37901,13 +38500,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/197:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/129:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVJFZWVGd1ZTMFY1dElId1RrOUpFWlVKMkppLTk1VktLVGZVVVIxM0ROQjIwbjBOV3hwcFhQekRiTTgtQnNUanlZN0tTRk1YbVU3aVFrV2VPd2RoUE9nTTNOa2dzLW80Z3BKR3pjY2hnZDIzN2czSjBwLTdqRVlWRTRMVjBzTndlYWduaG4tY1BJcUtlMnFyOHdwU2JSZTMzYk00RVQxdWxNTW95cVg4VXFKc1RPd09sQjM5NFlGSVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YnY2RnRQVldJdC00ZlBLc3RVNlNlNjZyXzg4M2c3ZVNEUTdoX1hZSUszTURyT3hGWVowWjV6OFRTRGdZc041M2VlbmFzd3NoVk1EZjVfWGVBVnVwaGtoWW5EZ3ZLYUN5elZvandjWFJMTEtCRUo2R0Vvak51b004aDJaNTNIb20xSXBJaU1qZWFUTHVsNUJpXzhBTnkzZ093YXpra2pUMlJ2cVlpVHJLWG9CdVgyb2JSWlJJTVg3d0kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -37922,17 +38521,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqKCokoH0ZPjYud9zX-vaUcb1d2jseeL2ex2pZk3exW3SgL9GnZRFygJJvNaYy6dZzkJB9ohvGY6QcazLRNhA7G6_LgntLMOIiFv2TQnRJVtiPyUqU" + "AEnB2UqFCOroY_JHGYZoHBc1rl2wiiLdo8iZTkGii26W81asA-p0ds5pJ2UhmDOb-Zgh3Fce6HHMPk5mfJUiMYEU8XBsknV63A" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MTYuNDcxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjE2LjQ3MVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yOFQyMToxMToxNi40NzFaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NDguOTM4WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjUxLjExMFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTEiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "c71c8031e10d9e16", + "ID": "226c78ece0a214f6", "Request": { - "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0011/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011/o/some-object?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -37941,20 +38540,17 @@ "Authorization": [ "REDACTED" ], - "Content-Type": [ - "multipart/related; boundary=f6f006ab13a852a6df0838509aee3e0fd7586f73e5759c0afb32ab78e180" - ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c6bed3d5d042d967ebde2c72e1195fdf/5699488127032532441;o=0" + "bdfec95bede82b3fd343b8748195937f/1073543454315258329;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -37963,35 +38559,34 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0011/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011/o/some-object?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1mNmYwMDZhYjEzYTg1MmE2ZGYwODM4NTA5YWVlM2UwZmQ3NTg2ZjczZTU3NTljMGFmYjMyYWI3OGUxODANCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMSIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJzb21lLW9iamVjdCJ9Cg0KLS1mNmYwMDZhYjEzYTg1MmE2ZGYwODM4NTA5YWVlM2UwZmQ3NTg2ZjczZTU3NTljMGFmYjMyYWI3OGUxODANCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbg0KDQpoZWxsbyB3b3JsZA0KLS1mNmYwMDZhYjEzYTg1MmE2ZGYwODM4NTA5YWVlM2UwZmQ3NTg2ZjczZTU3NTljMGFmYjMyYWI3OGUxODAtLQ0K" + "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "3753" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:17 GMT" - ], - "Etag": [ - "CPjTr+Ci99sCEAE=" + "Wed, 25 Jul 2018 18:24:51 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -38007,7 +38602,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220570000" + "1532543388000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -38016,19 +38611,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrat2:4108,/bns/yw/borg/yw/bns/blobstore2/bitpusher/461.scotty,acatli15:443" + "xgiadabo14:4091,/bns/xi/borg/xi/bns/blobstore2/bitpusher/39.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=9E41W_KPMsaNhAT3nLboBA" - ], - "X-Google-Gfe-Cloud-Project-Number": [ - "36639933145" + "eid=c8BYW7KPEs-0swaFr7fwAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/461.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/39.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -38037,19 +38629,19 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/461:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/39:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVJFZWVGd1ZTMFY1dElId1RrOUpFWlVKMkppLTk1VktLVGZVVVIxM0ROQjIwbjBOV3hwcFhQekRiTTgtQnNUanlZN0tTRk1YbVU3aVFrV2VPd2RoUE9nTTNOa2dzLW80Z3BKR3pjY2hnZDIzN2czSjBwLTdqRVlWRTRMVjBzTndlYWduaG4tY1BJcUtlMnFyOHdwU2JSZTMzYk00RVQxdWxNTW95cVg4VXFKc1RPd09sQjM5NFlGSVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnY2RnRQVldJdC00ZlBLc3RVNlNlNjZyXzg4M2c3ZVNEUTdoX1hZSUszTURyT3hGWVowWjV6OFRTRGdZc041M2VlbmFzd3NoVk1EZjVfWGVBVnVwaGtoWW5EZ3ZLYUN5elZvandjWFJMTEtCRUo2R0Vvak51b004aDJaNTNIb20xSXBJaU1qZWFUTHVsNUJpXzhBTnkzZ093YXpra2pUMlJ2cVlpVHJLWG9CdVgyb2JSWlJJTVg3d0kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" ], "X-Guploader-Customer": [ - "apiary_cloudstorage_single_post_uploads" + "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ "success" @@ -38058,17 +38650,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrUprorqrrtnSYhlv1fVmHILLW469ZsqDLuMt2uduopgcTYta6pgxm95BRZyBkQNfl1pFRvWWWIcSS8ldGEorAJTnH6k2d1fwBgy6e-PvYNJ3FOcdo" + "AEnB2UqkRXnL8nL_CSqJ1Dr9t2nE6A4eSKGVfZ82IINll-Z1xcSdN4J1B7sS61_owreTgB1voUPgpuLAQivkAIR0LY9KuupwZQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9zb21lLW9iamVjdC8xNTMwMjIwMjc3MTMxNzY4IiwKICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExL28vc29tZS1vYmplY3QiLAogIm5hbWUiOiAic29tZS1vYmplY3QiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDI3NzEzMTc2OCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMToxNy4xMzFaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MTcuMTMxWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjE3LjEzMVoiLAogInNpemUiOiAiMTEiLAogIm1kNUhhc2giOiAiWHJZN3UrQWU3dENUeXlLN2oxck53dz09IiwKICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9vL3NvbWUtb2JqZWN0P2dlbmVyYXRpb249MTUzMDIyMDI3NzEzMTc2OCZhbHQ9bWVkaWEiLAogImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEvc29tZS1vYmplY3QvMTUzMDIyMDI3NzEzMTc2OC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExL28vc29tZS1vYmplY3QvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEiLAogICAib2JqZWN0IjogInNvbWUtb2JqZWN0IiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDI3NzEzMTc2OCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ1BqVHIrQ2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9zb21lLW9iamVjdC8xNTMwMjIwMjc3MTMxNzY4L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExL28vc29tZS1vYmplY3QvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExIiwKICAgIm9iamVjdCI6ICJzb21lLW9iamVjdCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyNzcxMzE3NjgiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ1BqVHIrQ2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9zb21lLW9iamVjdC8xNTMwMjIwMjc3MTMxNzY4L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExL28vc29tZS1vYmplY3QvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExIiwKICAgIm9iamVjdCI6ICJzb21lLW9iamVjdCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyNzcxMzE3NjgiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNQalRyK0NpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEvc29tZS1vYmplY3QvMTUzMDIyMDI3NzEzMTc2OC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEvby9zb21lLW9iamVjdC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExIiwKICAgIm9iamVjdCI6ICJzb21lLW9iamVjdCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyNzcxMzE3NjgiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNQalRyK0NpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJ5WlJscWc9PSIsCiAiZXRhZyI6ICJDUGpUcitDaTk5c0NFQUU9IiwKICJyZXRlbnRpb25FeHBpcmF0aW9uVGltZSI6ICIyMDE4LTA2LTI5VDIyOjExOjE3LjEzMVoiCn0K" + "Body": "" } }, { - "ID": "16440491587ae189", + "ID": "8298971a1cc6e807", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0011/o/some-object?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -38081,13 +38673,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "1436f680b067919580b7f1fc4107d866/6506914908046909161;o=0" + "bb7d1ad37ac63ea58a36997a01fdd819/8714225100992914165;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -38096,7 +38688,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0011/o/some-object?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -38105,26 +38697,28 @@ "Body": "" }, "Response": { - "StatusCode": 403, + "StatusCode": 429, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0" ], "Content-Length": [ - "13204" + "13043" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:17 GMT" + "Wed, 25 Jul 2018 18:24:51 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:17 GMT" + "Wed, 25 Jul 2018 18:24:51 GMT" ], "Server": [ "UploadServer" @@ -38134,7 +38728,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220571000" + "1532543388000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -38143,16 +38737,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqh26:4149,/bns/yw/borg/yw/bns/blobstore2/bitpusher/25.scotty,acatli15:443" + "xgiadaax14:4175,/bns/xi/borg/xi/bns/blobstore2/bitpusher/131.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=9U41W821F5LuhATIx7SoDA" + "eid=c8BYW-m6Juu8swaT-aHwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/25.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/131.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -38161,13 +38755,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/25:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/131:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVJFZWVGd1ZTMFY1dElId1RrOUpFWlVKMkppLTk1VktLVGZVVVIxM0ROQjIwbjBOV3hwcFhQekRiTTgtQnNUanlZN0tTRk1YbVU3aVFrV2VPd2RoUE9nTTNOa2dzLW80Z3BKR3pjY2hnZDIzN2czSjBwLTdqRVlWRTRMVjBzTndlYWduaG4tY1BJcUtlMnFyOHdwU2JSZTMzYk00RVQxdWxNTW95cVg4VXFKc1RPd09sQjM5NFlGSVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnY2RnRQVldJdC00ZlBLc3RVNlNlNjZyXzg4M2c3ZVNEUTdoX1hZSUszTURyT3hGWVowWjV6OFRTRGdZc041M2VlbmFzd3NoVk1EZjVfWGVBVnVwaGtoWW5EZ3ZLYUN5elZvandjWFJMTEtCRUo2R0Vvak51b004aDJaNTNIb20xSXBJaU1qZWFUTHVsNUJpXzhBTnkzZ093YXpra2pUMlJ2cVlpVHJLWG9CdVgyb2JSWlJJTVg3d0kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -38182,17 +38776,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UpUAh4jFLBaChGoYdE19CRz9QIxtsZVSZanEfW24Ti03P69gzLlVmU_-_3iCpj6zZ7i9uy83BJGOICbkjBOoVB1OHH1xQLvBNB06I-jWJK8Sz9rahA" + "AEnB2UpxEUMj_LICMXHbZ6lbKH6pVLYELW1zDvbrPXkkp3i-V45ybhzP0soayc7wK9_0fuIgNslWIi0raJs3iA_n8kGHv55BkQ" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogIkZvcmJpZGRlbiIsCiAgICAiZGVidWdJbmZvIjogImNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IFJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBPYmplY3QgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9zb21lLW9iamVjdCcgaXMgc3ViamVjdCB0byBidWNrZXQncyByZXRlbnRpb24gcG9saWN5IGFuZCBjYW5ub3QgYmUgZGVsZXRlZCBvciBvdmVyd3JpdHRlbiB1bnRpbCAyMDE4LTA2LTI5VDE1OjExOjE3LjEzMTM3MjAzMS0wNzowMFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YTo4NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6MjcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmRlbGV0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTEzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IE9iamVjdCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExL3NvbWUtb2JqZWN0JyBpcyBzdWJqZWN0IHRvIGJ1Y2tldCdzIHJldGVudGlvbiBwb2xpY3kgYW5kIGNhbm5vdCBiZSBkZWxldGVkIG9yIG92ZXJ3cml0dGVuIHVudGlsIDIwMTgtMDYtMjlUMTU6MTE6MTcuMTMxMzcyMDMxLTA3OjAwXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IFJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogT2JqZWN0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEvc29tZS1vYmplY3QnIGlzIHN1YmplY3QgdG8gYnVja2V0J3MgcmV0ZW50aW9uIHBvbGljeSBhbmQgY2Fubm90IGJlIGRlbGV0ZWQgb3Igb3ZlcndyaXR0ZW4gdW50aWwgMjAxOC0wNi0yOVQxNToxMToxNy4xMzEzNzIwMzEtMDc6MDBcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6ODQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjI3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5kZWxldGUoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjExMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBPYmplY3QgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9zb21lLW9iamVjdCcgaXMgc3ViamVjdCB0byBidWNrZXQncyByZXRlbnRpb24gcG9saWN5IGFuZCBjYW5ub3QgYmUgZGVsZXRlZCBvciBvdmVyd3JpdHRlbiB1bnRpbCAyMDE4LTA2LTI5VDE1OjExOjE3LjEzMTM3MjAzMS0wNzowMFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTcgbW9yZVxuLCBkb21haW49Z2xvYmFsLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9Zm9yYmlkZGVuLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5GT1JCSURERU4sIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IFJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBPYmplY3QgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9zb21lLW9iamVjdCcgaXMgc3ViamVjdCB0byBidWNrZXQncyByZXRlbnRpb24gcG9saWN5IGFuZCBjYW5ub3QgYmUgZGVsZXRlZCBvciBvdmVyd3JpdHRlbiB1bnRpbCAyMDE4LTA2LTI5VDE1OjExOjE3LjEzMTM3MjAzMS0wNzowMFxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YTo4NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkRlbGV0ZU9iamVjdC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlT2JqZWN0LmphdmE6MjcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmRlbGV0ZShPYmplY3RzRGVsZWdhdG9yLmphdmE6MTEzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IE9iamVjdCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExL3NvbWUtb2JqZWN0JyBpcyBzdWJqZWN0IHRvIGJ1Y2tldCdzIHJldGVudGlvbiBwb2xpY3kgYW5kIGNhbm5vdCBiZSBkZWxldGVkIG9yIG92ZXJ3cml0dGVuIHVudGlsIDIwMTgtMDYtMjlUMTU6MTE6MTcuMTMxMzcyMDMxLTA3OjAwXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxNyBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPUZPUkJJRERFTiwgZXJyb3JQcm90b0RvbWFpbj1nZGF0YS5Db3JlRXJyb3JEb21haW4sIGZpbHRlcmVkTWVzc2FnZT1udWxsLCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPW51bGwsIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1udWxsLCBtZXNzYWdlPUZvcmJpZGRlbiwgcmVhc29uPWZvcmJpZGRlbiwgcnBjQ29kZT00MDN9IEZvcmJpZGRlbjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogUkVURU5USU9OX1BPTElDWV9OT1RfTUVUOiBSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IE9iamVjdCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDExL3NvbWUtb2JqZWN0JyBpcyBzdWJqZWN0IHRvIGJ1Y2tldCdzIHJldGVudGlvbiBwb2xpY3kgYW5kIGNhbm5vdCBiZSBkZWxldGVkIG9yIG92ZXJ3cml0dGVuIHVudGlsIDIwMTgtMDYtMjlUMTU6MTE6MTcuMTMxMzcyMDMxLTA3OjAwXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5EZWxldGVPYmplY3QuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZU9iamVjdC5qYXZhOjg0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuRGVsZXRlT2JqZWN0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVPYmplY3QuamF2YToyNylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IuZGVsZXRlKE9iamVjdHNEZWxlZ2F0b3IuamF2YToxMTMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBSRVRFTlRJT05fUE9MSUNZX05PVF9NRVQ6IFJFVEVOVElPTl9QT0xJQ1lfTk9UX01FVDogT2JqZWN0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEvc29tZS1vYmplY3QnIGlzIHN1YmplY3QgdG8gYnVja2V0J3MgcmV0ZW50aW9uIHBvbGljeSBhbmQgY2Fubm90IGJlIGRlbGV0ZWQgb3Igb3ZlcndyaXR0ZW4gdW50aWwgMjAxOC0wNi0yOVQxNToxMToxNy4xMzEzNzIwMzEtMDc6MDBcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE3IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDMsCiAgIm1lc3NhZ2UiOiAiRm9yYmlkZGVuIgogfQp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAidXNhZ2VMaW1pdHMiLAogICAgInJlYXNvbiI6ICJyYXRlTGltaXRFeGNlZWRlZCIsCiAgICAibWVzc2FnZSI6ICJUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuRGVsZXRlQnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVCdWNrZXQuamF2YToyMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZGVsZXRlKEJ1Y2tldHNEZWxlZ2F0b3IuamF2YToxMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBEZWxldGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1UT09fTUFOWV9SRVFVRVNUUywgY2F0ZWdvcnk9UVVPVEFfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogRGVsZXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkRlbGV0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQnVja2V0LmphdmE6NzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjIzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5kZWxldGUoQnVja2V0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPXVzYWdlTGltaXRzLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9dG9vTWFueVJlcXVlc3RzLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLkNMSUVOVF9RVU9UQV9FWENFRURFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuRGVsZXRlQnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVCdWNrZXQuamF2YToyMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZGVsZXRlKEJ1Y2tldHNEZWxlZ2F0b3IuamF2YToxMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBEZWxldGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPUNMSUVOVF9RVU9UQV9FWENFRURFRCwgZXJyb3JQcm90b0RvbWFpbj1jbG91ZC5iaWdzdG9yZS5hcGkuQmlnc3RvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZV9pZC5uYW1lLCBtZXNzYWdlPVRoZSBwcm9qZWN0IGV4Y2VlZGVkIHRoZSByYXRlIGxpbWl0IGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgYnVja2V0cy4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQubmFtZSwgbWVzc2FnZT1UaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuLCByZWFzb249cmF0ZUxpbWl0RXhjZWVkZWQsIHJwY0NvZGU9NDI5fSBUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogRGVsZXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkRlbGV0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQnVja2V0LmphdmE6NzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjIzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5kZWxldGUoQnVja2V0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MjksCiAgIm1lc3NhZ2UiOiAiVGhlIHByb2plY3QgZXhjZWVkZWQgdGhlIHJhdGUgbGltaXQgZm9yIGNyZWF0aW5nIGFuZCBkZWxldGluZyBidWNrZXRzLiIKIH0KfQo=" } }, { - "ID": "02f2cf1213b93166", + "ID": "94e355be30e178e1", "Request": { - "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0011?alt=json\u0026projection=full", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -38201,23 +38795,17 @@ "Authorization": [ "REDACTED" ], - "Content-Length": [ - "25" - ], - "Content-Type": [ - "application/json" - ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d77f3076b53fca38a492f0841b0b1d4c/8122048841245843720;o=0" + "bb7d1ad37ac63ea58a36997a01fdd819/12498819149889397635;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -38226,41 +38814,37 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0011?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJyZXRlbnRpb25Qb2xpY3kiOm51bGx9Cg==" + "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 429, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0" ], "Content-Length": [ - "2734" + "13043" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:19 GMT" - ], - "Etag": [ - "CAI=" + "Wed, 25 Jul 2018 18:24:52 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:52 GMT" ], "Server": [ "UploadServer" @@ -38270,25 +38854,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220577000" + "1532543388000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrqv23:4141,/bns/yw/borg/yw/bns/blobstore2/bitpusher/271.scotty,acatli15:443" + "xgiadaae9:4327,/bns/xi/borg/xi/bns/blobstore2/bitpusher/91.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=9U41W_6DKMW6N4SVrcgJ" + "eid=dMBYW4FkwryzBofSpqAG" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/271.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/91.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -38297,13 +38881,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/271:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/91:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVVJFZWVGd1ZTMFY1dElId1RrOUpFWlVKMkppLTk1VktLVGZVVVIxM0ROQjIwbjBOV3hwcFhQekRiTTgtQnNUanlZN0tTRk1YbVU3aVFrV2VPd2RoUE9nTTNOa2dzLW80Z3BKR3pjY2hnZDIzN2czSjBwLTdqRVlWRTRMVjBzTndlYWduaG4tY1BJcUtlMnFyOHdwU2JSZTMzYk00RVQxdWxNTW95cVg4VXFKc1RPd09sQjM5NFlGSVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnY2RnRQVldJdC00ZlBLc3RVNlNlNjZyXzg4M2c3ZVNEUTdoX1hZSUszTURyT3hGWVowWjV6OFRTRGdZc041M2VlbmFzd3NoVk1EZjVfWGVBVnVwaGtoWW5EZ3ZLYUN5elZvandjWFJMTEtCRUo2R0Vvak51b004aDJaNTNIb20xSXBJaU1qZWFUTHVsNUJpXzhBTnkzZ093YXpra2pUMlJ2cVlpVHJLWG9CdVgyb2JSWlJJTVg3d0kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -38312,23 +38896,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2Uq5DkWX9AyKU3I3AawbQ_ThIbJvrd38UJjkN4tt-iduqEOMEcz1bM8uSAzZ9MVaiDqM6KJxAE1kmF1864a1VSUJ5EjzmQabtWoo2vCOhprVd5oXw6I" + "AEnB2UpvZG4kcRNb8VlbHGkPRGkFuuLB0hLKTxYZeyLtOCFinvRayyyWy4pIAdabqsaqzNJ6FAyLwvYRVP3icW32JtjY5HYjKw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MTYuNDcxWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjE4LjkxOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTEiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAidXNhZ2VMaW1pdHMiLAogICAgInJlYXNvbiI6ICJyYXRlTGltaXRFeGNlZWRlZCIsCiAgICAibWVzc2FnZSI6ICJUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuRGVsZXRlQnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVCdWNrZXQuamF2YToyMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZGVsZXRlKEJ1Y2tldHNEZWxlZ2F0b3IuamF2YToxMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBEZWxldGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1UT09fTUFOWV9SRVFVRVNUUywgY2F0ZWdvcnk9UVVPVEFfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogRGVsZXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkRlbGV0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQnVja2V0LmphdmE6NzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjIzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5kZWxldGUoQnVja2V0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPXVzYWdlTGltaXRzLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9dG9vTWFueVJlcXVlc3RzLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLkNMSUVOVF9RVU9UQV9FWENFRURFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuRGVsZXRlQnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVCdWNrZXQuamF2YToyMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZGVsZXRlKEJ1Y2tldHNEZWxlZ2F0b3IuamF2YToxMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBEZWxldGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPUNMSUVOVF9RVU9UQV9FWENFRURFRCwgZXJyb3JQcm90b0RvbWFpbj1jbG91ZC5iaWdzdG9yZS5hcGkuQmlnc3RvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZV9pZC5uYW1lLCBtZXNzYWdlPVRoZSBwcm9qZWN0IGV4Y2VlZGVkIHRoZSByYXRlIGxpbWl0IGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgYnVja2V0cy4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQubmFtZSwgbWVzc2FnZT1UaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuLCByZWFzb249cmF0ZUxpbWl0RXhjZWVkZWQsIHJwY0NvZGU9NDI5fSBUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogRGVsZXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkRlbGV0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQnVja2V0LmphdmE6NzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjIzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5kZWxldGUoQnVja2V0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MjksCiAgIm1lc3NhZ2UiOiAiVGhlIHByb2plY3QgZXhjZWVkZWQgdGhlIHJhdGUgbGltaXQgZm9yIGNyZWF0aW5nIGFuZCBkZWxldGluZyBidWNrZXRzLiIKIH0KfQo=" } }, { - "ID": "7d9e44f015812e97", + "ID": "bf8a977fbdd18a0c", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0011/o/some-object?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -38341,13 +38925,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "8d5d740f9fed56c3f41c999c40d440f2/8929757092925186840;o=0" + "bb7d1ad37ac63ea58a36997a01fdd819/16355187123152298770;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -38356,7 +38940,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0011/o/some-object?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -38365,29 +38949,28 @@ "Body": "" }, "Response": { - "StatusCode": 204, + "StatusCode": 429, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0" ], "Content-Length": [ - "0" + "13043" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:19 GMT" + "Wed, 25 Jul 2018 18:24:52 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:24:52 GMT" ], "Server": [ "UploadServer" @@ -38397,7 +38980,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220570000" + "1532543388000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -38406,16 +38989,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbc189:4377,/bns/yw/borg/yw/bns/blobstore2/bitpusher/432.scotty,acatli15:443" + "xiiadcbg14:4207,/bns/xi/borg/xi/bns/blobstore2/bitpusher/146.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=9041W-fbB8aLhgTpw42oBw" + "eid=dMBYW7OKKsW8swaY9Jb4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/432.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/146.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -38424,13 +39007,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/432:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/146:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVJFZWVGd1ZTMFY1dElId1RrOUpFWlVKMkppLTk1VktLVGZVVVIxM0ROQjIwbjBOV3hwcFhQekRiTTgtQnNUanlZN0tTRk1YbVU3aVFrV2VPd2RoUE9nTTNOa2dzLW80Z3BKR3pjY2hnZDIzN2czSjBwLTdqRVlWRTRMVjBzTndlYWduaG4tY1BJcUtlMnFyOHdwU2JSZTMzYk00RVQxdWxNTW95cVg4VXFKc1RPd09sQjM5NFlGSVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnY2RnRQVldJdC00ZlBLc3RVNlNlNjZyXzg4M2c3ZVNEUTdoX1hZSUszTURyT3hGWVowWjV6OFRTRGdZc041M2VlbmFzd3NoVk1EZjVfWGVBVnVwaGtoWW5EZ3ZLYUN5elZvandjWFJMTEtCRUo2R0Vvak51b004aDJaNTNIb20xSXBJaU1qZWFUTHVsNUJpXzhBTnkzZ093YXpra2pUMlJ2cVlpVHJLWG9CdVgyb2JSWlJJTVg3d0kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -38439,23 +39022,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UoJAg-mnP-i7L85z4rz0ojbIc83vnbrjfbVBesbO_CnUqs_wlm2JV0gW9DbY38Miv4xoZP18co9KOlI0EI1GtCylTasRk_udaUNE4S1NGWeIZ1mzvs" + "AEnB2Uople64nskXO7Ge2j3i_Lsv6YwM8drsbVr-GSiPHuWwxh_7ydWTnPGhyhPFHyfvY6zFwBCHEepVFrBH00HEVlh-FtQbqA" ] }, - "Body": "" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAidXNhZ2VMaW1pdHMiLAogICAgInJlYXNvbiI6ICJyYXRlTGltaXRFeGNlZWRlZCIsCiAgICAibWVzc2FnZSI6ICJUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuRGVsZXRlQnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVCdWNrZXQuamF2YToyMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZGVsZXRlKEJ1Y2tldHNEZWxlZ2F0b3IuamF2YToxMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBEZWxldGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1UT09fTUFOWV9SRVFVRVNUUywgY2F0ZWdvcnk9UVVPVEFfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogRGVsZXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkRlbGV0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQnVja2V0LmphdmE6NzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjIzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5kZWxldGUoQnVja2V0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPXVzYWdlTGltaXRzLCBleHRlbmRlZEhlbHA9bnVsbCwgaHR0cEhlYWRlcnM9e30sIGh0dHBTdGF0dXM9dG9vTWFueVJlcXVlc3RzLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWNsb3VkLmJpZ3N0b3JlLmFwaS5CaWdzdG9yZUVycm9yRG9tYWluLkNMSUVOVF9RVU9UQV9FWENFRURFRCwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OlBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuRGVsZXRlQnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChEZWxldGVCdWNrZXQuamF2YToyMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZGVsZXRlKEJ1Y2tldHNEZWxlZ2F0b3IuamF2YToxMDYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBQUk9KRUNUX0JVQ0tFVF9PUF9SQVRFX1RPT19ISUdIOiBEZWxldGluZyBidWNrZXRzIHRvbyBxdWlja2x5LCBwbGVhc2Ugc2xvdyBkb3duXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG4sIGVycm9yUHJvdG9Db2RlPUNMSUVOVF9RVU9UQV9FWENFRURFRCwgZXJyb3JQcm90b0RvbWFpbj1jbG91ZC5iaWdzdG9yZS5hcGkuQmlnc3RvcmVFcnJvckRvbWFpbiwgZmlsdGVyZWRNZXNzYWdlPW51bGwsIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZV9pZC5uYW1lLCBtZXNzYWdlPVRoZSBwcm9qZWN0IGV4Y2VlZGVkIHRoZSByYXRlIGxpbWl0IGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgYnVja2V0cy4sIHVubmFtZWRBcmd1bWVudHM9W119LCBsb2NhdGlvbj1lbnRpdHkucmVzb3VyY2VfaWQubmFtZSwgbWVzc2FnZT1UaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuLCByZWFzb249cmF0ZUxpbWl0RXhjZWVkZWQsIHJwY0NvZGU9NDI5fSBUaGUgcHJvamVjdCBleGNlZWRlZCB0aGUgcmF0ZSBsaW1pdCBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIGJ1Y2tldHMuOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6UFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogUFJPSkVDVF9CVUNLRVRfT1BfUkFURV9UT09fSElHSDogRGVsZXRpbmcgYnVja2V0cyB0b28gcXVpY2tseSwgcGxlYXNlIHNsb3cgZG93blxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkRlbGV0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoRGVsZXRlQnVja2V0LmphdmE6NzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5EZWxldGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKERlbGV0ZUJ1Y2tldC5qYXZhOjIzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5kZWxldGUoQnVja2V0c0RlbGVnYXRvci5qYXZhOjEwNilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IFBST0pFQ1RfQlVDS0VUX09QX1JBVEVfVE9PX0hJR0g6IERlbGV0aW5nIGJ1Y2tldHMgdG9vIHF1aWNrbHksIHBsZWFzZSBzbG93IGRvd25cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MjczKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MjksCiAgIm1lc3NhZ2UiOiAiVGhlIHByb2plY3QgZXhjZWVkZWQgdGhlIHJhdGUgbGltaXQgZm9yIGNyZWF0aW5nIGFuZCBkZWxldGluZyBidWNrZXRzLiIKIH0KfQo=" } }, { - "ID": "1352005774b8c470", + "ID": "19953efdd2176ebd", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0011?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -38468,13 +39051,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "907fc07295d8f5d2c9e079cc710811f9/10472834531597755960;o=0" + "bb7d1ad37ac63ea58a36997a01fdd819/1693318569021039776;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -38483,7 +39066,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0011?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0011?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -38494,9 +39077,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -38508,7 +39093,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:19 GMT" + "Wed, 25 Jul 2018 18:24:56 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -38524,7 +39109,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220571000" + "1532543389000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -38533,16 +39118,16 @@ "998958384336" ], "X-Google-Backends": [ - "vruu1:4251,/bns/yw/borg/yw/bns/blobstore2/bitpusher/615.scotty,acatli15:443" + "xhiadbcb12:4159,/bns/xi/borg/xi/bns/blobstore2/bitpusher/118.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=9041W6a4IsuGhASj3anICg" + "eid=d8BYW5P7KOGEygPhuovwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/615.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/118.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -38551,13 +39136,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/615:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/118:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVJFZWVGd1ZTMFY1dElId1RrOUpFWlVKMkppLTk1VktLVGZVVVIxM0ROQjIwbjBOV3hwcFhQekRiTTgtQnNUanlZN0tTRk1YbVU3aVFrV2VPd2RoUE9nTTNOa2dzLW80Z3BKR3pjY2hnZDIzN2czSjBwLTdqRVlWRTRMVjBzTndlYWduaG4tY1BJcUtlMnFyOHdwU2JSZTMzYk00RVQxdWxNTW95cVg4VXFKc1RPd09sQjM5NFlGSVUwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YnY2RnRQVldJdC00ZlBLc3RVNlNlNjZyXzg4M2c3ZVNEUTdoX1hZSUszTURyT3hGWVowWjV6OFRTRGdZc041M2VlbmFzd3NoVk1EZjVfWGVBVnVwaGtoWW5EZ3ZLYUN5elZvandjWFJMTEtCRUo2R0Vvak51b004aDJaNTNIb20xSXBJaU1qZWFUTHVsNUJpXzhBTnkzZ093YXpra2pUMlJ2cVlpVHJLWG9CdVgyb2JSWlJJTVg3d0kwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -38572,14 +39157,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpIBTCVrDDAk_GVIKRxl5B6mNWCndBNT4ZJFGHEQk5u0gQzxE1KKLxoNTVjD5y_KBr3oJJw-gX2rlvfAlt9wjC8CKR_oar4cq9tzaD5D7C8OSvOly8" + "AEnB2UrV92PcTy_di_ZHxo2y-ZRWi72pAxpF0cxRBmIEu7KFQHqZpMfowsMqvjjw69ikr1CvZUBu5_hjMswScD2owYHiv9EGpw" ] }, "Body": "" } }, { - "ID": "45b23549874e8ae9", + "ID": "9b502d579ebf749b", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -38601,13 +39186,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b3691797f8d3655b1ffdba0d25304d42/12087686989820045655;o=0" + "e2247346abab40303a1a864db97be6a4/9334000215698695612;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -38622,14 +39207,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEyIiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjkwMDAwIn19Cg==" + "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEyIiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjkwMDAwIn19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -38641,7 +39228,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:20 GMT" + "Wed, 25 Jul 2018 18:24:56 GMT" ], "Etag": [ "CAE=" @@ -38660,7 +39247,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220580000" + "1532543396000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -38669,16 +39256,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrch2:4197,/bns/yw/borg/yw/bns/blobstore2/bitpusher/444.scotty,acatli15:443" + "xiiadcak10:4214,/bns/xi/borg/xi/bns/blobstore2/bitpusher/24.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=-E41W83ZAtWyhgSNxaeACw" + "eid=eMBYW_u9EIy9swaXoYfwAw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/444.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/24.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -38687,13 +39274,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/444:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/24:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWDBCR1ExX3FULWNJSFZoRV9WUFhuYUlIUFFvNDE5ZEdVRjBuaXhrLVoxeGRGY3l0T29VSDNCWTVSQjV3ZHZsSUhZRjJnMlctUl91dGNzX2dQRHZfOFZ0TU9uX0VpalVvQWhHSkFQQzRTRW9GczBUdzNzV3BwcldMaXVva1F3THBTYlNSQThYYlZCVEtydGg1X3UwMXlUckx5RVFnSzdGUkE3eDV0QlhTX250aE5iTHdIUEpKN1dPOU0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YTAxMW5aamphX1UwRUxQRmptS1dIcGhrei1SUEFvd1FiR2tTOHA0Z3FaRHFMZ0dxTWhONHlpS3dmTV9nVjhaTVpHR1lRSGxTS0NLeEFaV2I5RzlFcWNTOHhORFlZb2gzWE55eE52SkFQWTdMZEwzbTBPYUo4cXpSZ25hc3N6X0g0ZGdCYWN2clZkcWhKWE1XWEhxQm9VZjlCZkVLNVdHVDlaeEVyMFJqLWZJU3M4M2diNUVNSGNVZVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -38708,17 +39295,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoCgsbR8kYCXJeWPS9qex_k1FOxPuD1RH28xp3hs2pd2Acri9QfZZ36FPomW6qSO7IX6tvGnPFoG6Pw135A3j5h7AAF_mXctMElgRyIHTtx-xdyln0" + "AEnB2Ur4lt1KSeUc4etelDH3zaGPKr58z_DUtXuSmeOIFkRuCg0QiJEawbIh0Hhf_4CWDEgv3Oyr6j4WgOR5LzUNbnMjYG38oA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MjAuNDQ0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjIwLjQ0NFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yOFQyMToxMToyMC40NDRaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NTYuNzU1WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjU2Ljc1NVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQxODoyNDo1Ni43NTVaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "89f99f436bbb207e", + "ID": "dbf611e74dabbc16", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0012?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0012?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -38731,13 +39318,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "dc0fcc5349fc150cfef21785dbaed7fb/13630764428492614775;o=0" + "44145a05351884dc7a9e5154d7a0b30b/16974962237858080473;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -38746,7 +39333,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0012?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0012?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -38757,9 +39344,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -38771,13 +39360,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:21 GMT" + "Wed, 25 Jul 2018 18:24:57 GMT" ], "Etag": [ "CAE=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:21 GMT" + "Wed, 25 Jul 2018 18:24:57 GMT" ], "Server": [ "UploadServer" @@ -38787,7 +39376,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220580000" + "1532543397000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -38796,16 +39385,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbp126:4246,/bns/yw/borg/yw/bns/blobstore2/bitpusher/357.scotty,acatli15:443" + "xiiadcca7:4401,/bns/xi/borg/xi/bns/blobstore2/bitpusher/114.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=-E41W-7nKcrIhgS6grugDA" + "eid=ecBYW8w7rL2zBufLq8AB" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/357.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/114.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -38814,13 +39403,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/357:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/114:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWDBCR1ExX3FULWNJSFZoRV9WUFhuYUlIUFFvNDE5ZEdVRjBuaXhrLVoxeGRGY3l0T29VSDNCWTVSQjV3ZHZsSUhZRjJnMlctUl91dGNzX2dQRHZfOFZ0TU9uX0VpalVvQWhHSkFQQzRTRW9GczBUdzNzV3BwcldMaXVva1F3THBTYlNSQThYYlZCVEtydGg1X3UwMXlUckx5RVFnSzdGUkE3eDV0QlhTX250aE5iTHdIUEpKN1dPOU0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YTAxMW5aamphX1UwRUxQRmptS1dIcGhrei1SUEFvd1FiR2tTOHA0Z3FaRHFMZ0dxTWhONHlpS3dmTV9nVjhaTVpHR1lRSGxTS0NLeEFaV2I5RzlFcWNTOHhORFlZb2gzWE55eE52SkFQWTdMZEwzbTBPYUo4cXpSZ25hc3N6X0g0ZGdCYWN2clZkcWhKWE1XWEhxQm9VZjlCZkVLNVdHVDlaeEVyMFJqLWZJU3M4M2diNUVNSGNVZVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -38835,17 +39424,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq7wnR70mJiHSwYOt-i2JfkeeRxxE-94Yc04RSSHPCaq15FvZ2G7o9cKZDNOF8zZ94RX1tPLrJJHKCDSiLEImViAqLbMvBalhbRyxPBKlUk7aXzwdU" + "AEnB2UqL-Yrx_3-VY-m0mmjgy6Zk_Cnuopy9PJpPb10wjhuglxFEEtho1e_kzu960RMPofXJp2_tyr1Aw3Lo6AI8SCttKZYMhA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MjAuNDQ0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjIwLjQ0NFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA2LTI4VDIxOjExOjIwLjQ0NFoiCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NTYuNzU1WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjU2Ljc1NVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMiIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInJldGVudGlvblBvbGljeSI6IHsKICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA3LTI1VDE4OjI0OjU2Ljc1NVoiCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUU9Igp9Cg==" } }, { - "ID": "e2c6bcf418defa80", + "ID": "7709c7abe1c0d234", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0012/lockRetentionPolicy?alt=json\u0026ifMetagenerationMatch=1", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0012/lockRetentionPolicy?alt=json\u0026ifMetagenerationMatch=1", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -38861,13 +39450,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3f7ee2129d5ab03640ed460bae01f60a/14438472680188800390;o=0" + "2f3c37699529bb3e47da134624913666/2313093683743598183;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -38876,7 +39465,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0012/lockRetentionPolicy?alt=json\u0026ifMetagenerationMatch=1" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0012/lockRetentionPolicy?alt=json\u0026ifMetagenerationMatch=1" ] }, "Body": "" @@ -38884,9 +39473,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -38898,7 +39489,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:22 GMT" + "Wed, 25 Jul 2018 18:24:59 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -38914,7 +39505,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220580000" + "1532543396000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -38923,16 +39514,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqf18:4270,/bns/yw/borg/yw/bns/blobstore2/bitpusher/211.scotty,acatli15:443" + "xhiadbal11:4152,/bns/xi/borg/xi/bns/blobstore2/bitpusher/65.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=-U41W47_BsKVN86YjeAJ" + "eid=ecBYW-6kEuSwswah7LfIBA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/211.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/65.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -38941,13 +39532,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/211:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/65:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWDBCR1ExX3FULWNJSFZoRV9WUFhuYUlIUFFvNDE5ZEdVRjBuaXhrLVoxeGRGY3l0T29VSDNCWTVSQjV3ZHZsSUhZRjJnMlctUl91dGNzX2dQRHZfOFZ0TU9uX0VpalVvQWhHSkFQQzRTRW9GczBUdzNzV3BwcldMaXVva1F3THBTYlNSQThYYlZCVEtydGg1X3UwMXlUckx5RVFnSzdGUkE3eDV0QlhTX250aE5iTHdIUEpKN1dPOU0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YTAxMW5aamphX1UwRUxQRmptS1dIcGhrei1SUEFvd1FiR2tTOHA0Z3FaRHFMZ0dxTWhONHlpS3dmTV9nVjhaTVpHR1lRSGxTS0NLeEFaV2I5RzlFcWNTOHhORFlZb2gzWE55eE52SkFQWTdMZEwzbTBPYUo4cXpSZ25hc3N6X0g0ZGdCYWN2clZkcWhKWE1XWEhxQm9VZjlCZkVLNVdHVDlaeEVyMFJqLWZJU3M4M2diNUVNSGNVZVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -38962,17 +39553,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo1PHv5yytKZaAFCeefVpoU4uybeINu99DM7EBAVmpKDLha2TC8brWIjMy8-spOA4LfwWIwSBCO3olCAnAIjjjcINnVSM0sPFTv1GAbKbG6UJDdpu4" + "AEnB2UrvmymmYKd41vPfDRSV2nfCrD8QEQhI9AoUPnSHgbinbJL7Gz5yrudVPDkDXF7wnr5B-6RFoHDQmPTf-V0SJz_wXKtDIQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MjAuNDQ0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjIyLjQzM1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogIm93bmVyIjogewogICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiB9LAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yOFQyMToxMToyMC40NDRaIiwKICAiaXNMb2NrZWQiOiB0cnVlCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMiIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMiIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NTYuNzU1WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjU4LjgyMFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogIm93bmVyIjogewogICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiB9LAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQxODoyNDo1Ni43NTVaIiwKICAiaXNMb2NrZWQiOiB0cnVlCiB9LAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "01dbd286bdf4ebf4", + "ID": "efb118b2024e4420", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0012?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0012?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -38991,13 +39582,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "709abd0fc19307cb027d2bb5538b2efc/16053606613387669670;o=0" + "7902d533465e7c753683c5cc81f9db41/9954056805397833604;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -39006,7 +39597,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0012?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0012?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -39017,9 +39608,11 @@ "Response": { "StatusCode": 403, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "13924" @@ -39028,7 +39621,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:23 GMT" + "Wed, 25 Jul 2018 18:25:00 GMT" ], "Server": [ "UploadServer" @@ -39038,7 +39631,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220582000" + "1532543399000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -39047,16 +39640,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbf20:4478,/bns/yw/borg/yw/bns/blobstore2/bitpusher/221.scotty,acatli15:443" + "xiiadcbk13:4247,/bns/xi/borg/xi/bns/blobstore2/bitpusher/88.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=-k41W5CkJ8LxhATkzq7YCQ" + "eid=e8BYW66RAc62swbPnpToAQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/221.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/88.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -39065,13 +39658,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/221:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/88:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBWDBCR1ExX3FULWNJSFZoRV9WUFhuYUlIUFFvNDE5ZEdVRjBuaXhrLVoxeGRGY3l0T29VSDNCWTVSQjV3ZHZsSUhZRjJnMlctUl91dGNzX2dQRHZfOFZ0TU9uX0VpalVvQWhHSkFQQzRTRW9GczBUdzNzV3BwcldMaXVva1F3THBTYlNSQThYYlZCVEtydGg1X3UwMXlUckx5RVFnSzdGUkE3eDV0QlhTX250aE5iTHdIUEpKN1dPOU0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YTAxMW5aamphX1UwRUxQRmptS1dIcGhrei1SUEFvd1FiR2tTOHA0Z3FaRHFMZ0dxTWhONHlpS3dmTV9nVjhaTVpHR1lRSGxTS0NLeEFaV2I5RzlFcWNTOHhORFlZb2gzWE55eE52SkFQWTdMZEwzbTBPYUo4cXpSZ25hc3N6X0g0ZGdCYWN2clZkcWhKWE1XWEhxQm9VZjlCZkVLNVdHVDlaeEVyMFJqLWZJU3M4M2diNUVNSGNVZVEwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -39086,14 +39679,14 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UrYkUd_dElz4aoQ12AeDvuyb0H5hADoh6JxWT-g0T-trkMJcc07NxYfSH4lQXiQB3h_Q2Wpy29PeLuKaqznGIfPaPMT1hoRK9WzLaDzLRClcGOgWMY" + "AEnB2Uqwx_u55x47dU6z1YVrePh-2ymYXotrLaIbuNuWNS-RHRKq93uMuo12ncdesKjmQ9PGqYzkmZYLkhp6xteFNTIuDHCsag" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogIkNhbm5vdCByZWR1Y2UgcmV0ZW50aW9uIGR1cmF0aW9uIG9mIGEgbG9ja2VkIFJldGVudGlvbiBQb2xpY3kgZm9yIGJ1Y2tldCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEyJy4iLAogICAgImRlYnVnSW5mbyI6ICJjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQ2Fubm90IHJlZHVjZSByZXRlbnRpb24gZHVyYXRpb24gb2YgYSBsb2NrZWQgUmV0ZW50aW9uIFBvbGljeSBmb3IgYnVja2V0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTInLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUFuZFBhdGNoQnVja2V0LnVwZGF0ZUJ1Y2tldChVcGRhdGVBbmRQYXRjaEJ1Y2tldC5qYXZhOjk2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuVXBkYXRlQnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVCdWNrZXQuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQnVja2V0LmphdmE6MTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLnVwZGF0ZShCdWNrZXRzRGVsZWdhdG9yLmphdmE6OTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBDYW5ub3QgcmVkdWNlIHJldGVudGlvbiBkdXJhdGlvbiBvZiBhIGxvY2tlZCBSZXRlbnRpb24gUG9saWN5IGZvciBidWNrZXQgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMicuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQ2Fubm90IHJlZHVjZSByZXRlbnRpb24gZHVyYXRpb24gb2YgYSBsb2NrZWQgUmV0ZW50aW9uIFBvbGljeSBmb3IgYnVja2V0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTInLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUFuZFBhdGNoQnVja2V0LnVwZGF0ZUJ1Y2tldChVcGRhdGVBbmRQYXRjaEJ1Y2tldC5qYXZhOjk2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuVXBkYXRlQnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVCdWNrZXQuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQnVja2V0LmphdmE6MTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLnVwZGF0ZShCdWNrZXRzRGVsZWdhdG9yLmphdmE6OTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBDYW5ub3QgcmVkdWNlIHJldGVudGlvbiBkdXJhdGlvbiBvZiBhIGxvY2tlZCBSZXRlbnRpb24gUG9saWN5IGZvciBidWNrZXQgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMicuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1mb3JiaWRkZW4sIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLkZPUkJJRERFTiwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IENhbm5vdCByZWR1Y2UgcmV0ZW50aW9uIGR1cmF0aW9uIG9mIGEgbG9ja2VkIFJldGVudGlvbiBQb2xpY3kgZm9yIGJ1Y2tldCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEyJy5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5VcGRhdGVBbmRQYXRjaEJ1Y2tldC51cGRhdGVCdWNrZXQoVXBkYXRlQW5kUGF0Y2hCdWNrZXQuamF2YTo5Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQnVja2V0LmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5VcGRhdGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUJ1Y2tldC5qYXZhOjE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci51cGRhdGUoQnVja2V0c0RlbGVnYXRvci5qYXZhOjk0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQ2Fubm90IHJlZHVjZSByZXRlbnRpb24gZHVyYXRpb24gb2YgYSBsb2NrZWQgUmV0ZW50aW9uIFBvbGljeSBmb3IgYnVja2V0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTInLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuLCBlcnJvclByb3RvQ29kZT1GT1JCSURERU4sIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1DYW5ub3QgcmVkdWNlIHJldGVudGlvbiBkdXJhdGlvbiBvZiBhIGxvY2tlZCBSZXRlbnRpb24gUG9saWN5IGZvciBidWNrZXQgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMicuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1DYW5ub3QgcmVkdWNlIHJldGVudGlvbiBkdXJhdGlvbiBvZiBhIGxvY2tlZCBSZXRlbnRpb24gUG9saWN5IGZvciBidWNrZXQgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMicuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gQ2Fubm90IHJlZHVjZSByZXRlbnRpb24gZHVyYXRpb24gb2YgYSBsb2NrZWQgUmV0ZW50aW9uIFBvbGljeSBmb3IgYnVja2V0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTInLjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IENhbm5vdCByZWR1Y2UgcmV0ZW50aW9uIGR1cmF0aW9uIG9mIGEgbG9ja2VkIFJldGVudGlvbiBQb2xpY3kgZm9yIGJ1Y2tldCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEyJy5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5VcGRhdGVBbmRQYXRjaEJ1Y2tldC51cGRhdGVCdWNrZXQoVXBkYXRlQW5kUGF0Y2hCdWNrZXQuamF2YTo5Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQnVja2V0LmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5VcGRhdGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUJ1Y2tldC5qYXZhOjE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci51cGRhdGUoQnVja2V0c0RlbGVnYXRvci5qYXZhOjk0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQ2Fubm90IHJlZHVjZSByZXRlbnRpb24gZHVyYXRpb24gb2YgYSBsb2NrZWQgUmV0ZW50aW9uIFBvbGljeSBmb3IgYnVja2V0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTInLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJDYW5ub3QgcmVkdWNlIHJldGVudGlvbiBkdXJhdGlvbiBvZiBhIGxvY2tlZCBSZXRlbnRpb24gUG9saWN5IGZvciBidWNrZXQgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMicuIgogfQp9Cg==" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiZm9yYmlkZGVuIiwKICAgICJtZXNzYWdlIjogIkNhbm5vdCByZWR1Y2UgcmV0ZW50aW9uIGR1cmF0aW9uIG9mIGEgbG9ja2VkIFJldGVudGlvbiBQb2xpY3kgZm9yIGJ1Y2tldCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEyJy4iLAogICAgImRlYnVnSW5mbyI6ICJjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQ2Fubm90IHJlZHVjZSByZXRlbnRpb24gZHVyYXRpb24gb2YgYSBsb2NrZWQgUmV0ZW50aW9uIFBvbGljeSBmb3IgYnVja2V0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTInLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUFuZFBhdGNoQnVja2V0LnVwZGF0ZUJ1Y2tldChVcGRhdGVBbmRQYXRjaEJ1Y2tldC5qYXZhOjk2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuVXBkYXRlQnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVCdWNrZXQuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQnVja2V0LmphdmE6MTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLnVwZGF0ZShCdWNrZXRzRGVsZWdhdG9yLmphdmE6OTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBDYW5ub3QgcmVkdWNlIHJldGVudGlvbiBkdXJhdGlvbiBvZiBhIGxvY2tlZCBSZXRlbnRpb24gUG9saWN5IGZvciBidWNrZXQgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMicuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1GT1JCSURERU4sIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQ2Fubm90IHJlZHVjZSByZXRlbnRpb24gZHVyYXRpb24gb2YgYSBsb2NrZWQgUmV0ZW50aW9uIFBvbGljeSBmb3IgYnVja2V0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTInLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUFuZFBhdGNoQnVja2V0LnVwZGF0ZUJ1Y2tldChVcGRhdGVBbmRQYXRjaEJ1Y2tldC5qYXZhOjk2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuVXBkYXRlQnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChVcGRhdGVCdWNrZXQuamF2YTo3OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQnVja2V0LmphdmE6MTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLnVwZGF0ZShCdWNrZXRzRGVsZWdhdG9yLmphdmE6OTQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBBQ0NFU1NfREVOSUVEOiBBQ0NFU1NfREVOSUVEOiBDYW5ub3QgcmVkdWNlIHJldGVudGlvbiBkdXJhdGlvbiBvZiBhIGxvY2tlZCBSZXRlbnRpb24gUG9saWN5IGZvciBidWNrZXQgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMicuXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Mylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOSBtb3JlXG4sIGRvbWFpbj1nbG9iYWwsIGV4dGVuZGVkSGVscD1udWxsLCBodHRwSGVhZGVycz17fSwgaHR0cFN0YXR1cz1mb3JiaWRkZW4sIGludGVybmFsUmVhc29uPVJlYXNvbnthcmd1bWVudHM9e30sIGNhdXNlPW51bGwsIGNvZGU9Z2RhdGEuQ29yZUVycm9yRG9tYWluLkZPUkJJRERFTiwgY3JlYXRlZEJ5QmFja2VuZD10cnVlLCBkZWJ1Z01lc3NhZ2U9Y29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IENhbm5vdCByZWR1Y2UgcmV0ZW50aW9uIGR1cmF0aW9uIG9mIGEgbG9ja2VkIFJldGVudGlvbiBQb2xpY3kgZm9yIGJ1Y2tldCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEyJy5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5VcGRhdGVBbmRQYXRjaEJ1Y2tldC51cGRhdGVCdWNrZXQoVXBkYXRlQW5kUGF0Y2hCdWNrZXQuamF2YTo5Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQnVja2V0LmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5VcGRhdGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUJ1Y2tldC5qYXZhOjE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci51cGRhdGUoQnVja2V0c0RlbGVnYXRvci5qYXZhOjk0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQ2Fubm90IHJlZHVjZSByZXRlbnRpb24gZHVyYXRpb24gb2YgYSBsb2NrZWQgUmV0ZW50aW9uIFBvbGljeSBmb3IgYnVja2V0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTInLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuLCBlcnJvclByb3RvQ29kZT1GT1JCSURERU4sIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1DYW5ub3QgcmVkdWNlIHJldGVudGlvbiBkdXJhdGlvbiBvZiBhIGxvY2tlZCBSZXRlbnRpb24gUG9saWN5IGZvciBidWNrZXQgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMicuLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1DYW5ub3QgcmVkdWNlIHJldGVudGlvbiBkdXJhdGlvbiBvZiBhIGxvY2tlZCBSZXRlbnRpb24gUG9saWN5IGZvciBidWNrZXQgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMicuLCByZWFzb249Zm9yYmlkZGVuLCBycGNDb2RlPTQwM30gQ2Fubm90IHJlZHVjZSByZXRlbnRpb24gZHVyYXRpb24gb2YgYSBsb2NrZWQgUmV0ZW50aW9uIFBvbGljeSBmb3IgYnVja2V0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTInLjogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IEFDQ0VTU19ERU5JRUQ6IENhbm5vdCByZWR1Y2UgcmV0ZW50aW9uIGR1cmF0aW9uIG9mIGEgbG9ja2VkIFJldGVudGlvbiBQb2xpY3kgZm9yIGJ1Y2tldCAnZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEyJy5cblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5VcGRhdGVBbmRQYXRjaEJ1Y2tldC51cGRhdGVCdWNrZXQoVXBkYXRlQW5kUGF0Y2hCdWNrZXQuamF2YTo5Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLlVwZGF0ZUJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoVXBkYXRlQnVja2V0LmphdmE6NzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5VcGRhdGVCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKFVwZGF0ZUJ1Y2tldC5qYXZhOjE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci51cGRhdGUoQnVja2V0c0RlbGVnYXRvci5qYXZhOjk0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQUNDRVNTX0RFTklFRDogQUNDRVNTX0RFTklFRDogQ2Fubm90IHJlZHVjZSByZXRlbnRpb24gZHVyYXRpb24gb2YgYSBsb2NrZWQgUmV0ZW50aW9uIFBvbGljeSBmb3IgYnVja2V0ICdnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTInLlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTkgbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQwMywKICAibWVzc2FnZSI6ICJDYW5ub3QgcmVkdWNlIHJldGVudGlvbiBkdXJhdGlvbiBvZiBhIGxvY2tlZCBSZXRlbnRpb24gUG9saWN5IGZvciBidWNrZXQgJ2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMicuIgogfQp9Cg==" } }, { - "ID": "d3232b1ceef0b48f", + "ID": "1b855062e5c90384", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -39115,13 +39708,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a7269b59cf0be008c3892ffdf2547e5a/17596685147260253125;o=0" + "3e5a13ea301e9a0946f3a11bc9c05671/17594737352580638880;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -39136,14 +39729,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEzIiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjkwMDAwIn19Cg==" + "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEzIiwicmV0ZW50aW9uUG9saWN5Ijp7InJldGVudGlvblBlcmlvZCI6IjkwMDAwIn19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -39155,7 +39750,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:24 GMT" + "Wed, 25 Jul 2018 18:25:01 GMT" ], "Etag": [ "CAE=" @@ -39174,7 +39769,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220583000" + "1532543400000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -39183,16 +39778,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrnh11:4427,/bns/yw/borg/yw/bns/blobstore2/bitpusher/282.scotty,acatli15:443" + "xiiadcae5:4486,/bns/xi/borg/xi/bns/blobstore2/bitpusher/73.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=-041W5ngOMytN6euonA" + "eid=fMBYW5_7HcW9swa6lIW4AQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/282.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/73.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -39201,13 +39796,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/282:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/73:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWFJIMHFFZEJ6V29DMXc5NjlVYjcxak1qb2RHR29CYmhJdHhmUkJoVlBLMzJnNEVJT0pxbjRtcHdYWUctVndZdmprOWRWTU4zdm14TFZMcWVBeGd3bzdRMzAtZURLdjJNRlQtLVJoQlR0Zjl4T1JWM05hYlc4d18xbU5HamRLU3lDZmFLYlpCRnhBRV9qZWg2emtld0xDWUVscnV4M2ZNa1lvOUdZbFZoZkpBaFU1N2pXRTIzcWJSOWswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WjNsOTlsRTBHaHd2RlNMWnBPaUl6YS1vNjZPa2tzX2dwVFdfM3hDdVVTa1EtYWIzMFJMT3UzZ2RJVUtHVDRjaGlLclo3d2JNWTVLVlhWZEFSMWVnRXcyX2Nya3F1SVFhWUJXZnQydDYtSV92N0dfN3RUd0tvRF92SWwybmQ0dnZseEt0LUx1anllbmp6MkN1RFRVZEhfYVNFWlJPV1oyMGJDYVdaY2NzajRWSGFJTEFoM19QdmdzTVkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -39222,17 +39817,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urm9vdxpF88E2XlxhyXDsLeenagnBf2F1Cdk1BoNhVi056hxBdwVN7v0g5pvktUDICgetBnV5tfZDHjWcNwvIuL4OqKdEUeWj83gqwUqDM4Zv9Wwko" + "AEnB2UprzT2voIDOxsxV_qFg58DgtN5iugOL2pp2vsDcJlJmrlUWwMVyr1diqkyMaV9QdmK_g1f9_gF-oFI2LKHCX0BOG-yjoQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTMiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MjQuNTg3WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjI0LjU4N1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yOFQyMToxMToyNC41ODdaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMyIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMyIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTMiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MDEuMDg2WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjAxLjA4NloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImxvY2F0aW9uIjogIlVTIiwKICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQxODoyNTowMS4wODZaIgogfSwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "69cd7991b1a2c977", + "ID": "4165abcb0d4ee6bc", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0013/lockRetentionPolicy?alt=json\u0026ifMetagenerationMatch=0", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0013/lockRetentionPolicy?alt=json\u0026ifMetagenerationMatch=0", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -39248,13 +39843,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "308308b9122c01111a40409706e33d38/18404110828763002325;o=0" + "e2e268505270870bf27719ad74be341f/3004925292975679790;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -39263,7 +39858,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0013/lockRetentionPolicy?alt=json\u0026ifMetagenerationMatch=0" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0013/lockRetentionPolicy?alt=json\u0026ifMetagenerationMatch=0" ] }, "Body": "" @@ -39271,9 +39866,11 @@ "Response": { "StatusCode": 412, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Content-Length": [ "13081" @@ -39282,7 +39879,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:26 GMT" + "Wed, 25 Jul 2018 18:25:03 GMT" ], "Server": [ "UploadServer" @@ -39292,7 +39889,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220583000" + "1532543401000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -39301,16 +39898,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrlv18:4344,/bns/yw/borg/yw/bns/blobstore2/bitpusher/623.scotty,acatli15:443" + "xiiadcaa6:4260,/bns/xi/borg/xi/bns/blobstore2/bitpusher/142.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=_E41W76BL4yihwS80rTIBg" + "eid=fcBYW_eqFIq9swbt0Y3oAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/623.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/142.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -39319,13 +39916,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/623:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/142:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWFJIMHFFZEJ6V29DMXc5NjlVYjcxak1qb2RHR29CYmhJdHhmUkJoVlBLMzJnNEVJT0pxbjRtcHdYWUctVndZdmprOWRWTU4zdm14TFZMcWVBeGd3bzdRMzAtZURLdjJNRlQtLVJoQlR0Zjl4T1JWM05hYlc4d18xbU5HamRLU3lDZmFLYlpCRnhBRV9qZWg2emtld0xDWUVscnV4M2ZNa1lvOUdZbFZoZkpBaFU1N2pXRTIzcWJSOWswBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WjNsOTlsRTBHaHd2RlNMWnBPaUl6YS1vNjZPa2tzX2dwVFdfM3hDdVVTa1EtYWIzMFJMT3UzZ2RJVUtHVDRjaGlLclo3d2JNWTVLVlhWZEFSMWVnRXcyX2Nya3F1SVFhWUJXZnQydDYtSV92N0dfN3RUd0tvRF92SWwybmQ0dnZseEt0LUx1anllbmp6MkN1RFRVZEhfYVNFWlJPV1oyMGJDYVdaY2NzajRWSGFJTEFoM19QdmdzTVkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -39340,17 +39937,17 @@ "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UrgND6A5vhpPan7MUDTo9_hSj52zajV4kuJXK-L3S7s3uUkQuV4yafzYBUj1yF8UgUvglt3DaKOjUs9Jn2dYSqpj0I7FaV1UwE3ui_Ct3Ph_MKA8mQ" + "AEnB2Uri7iZoc9O6tDhkHsKD_btca7WG6_JsjPP9RZZqbIVrKSrdQhJvVn7BZmfwqjTWv-0L0-GIZK_wZ8ZERJ4tvY4fGV5jyQ" ] }, "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAiY29uZGl0aW9uTm90TWV0IiwKICAgICJtZXNzYWdlIjogIlByZWNvbmRpdGlvbiBGYWlsZWQiLAogICAgImxvY2F0aW9uVHlwZSI6ICJoZWFkZXIiLAogICAgImxvY2F0aW9uIjogIklmLU1hdGNoIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OklOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IGV4cGVjdGVkIEJ1Y2tldE1ldGFkYXRhLm1ldGFkYXRhX2dlbmVyYXRpb246IDAgYWN0dWFsOiAxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuTG9ja1JldGVudGlvblBvbGljeS5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTG9ja1JldGVudGlvblBvbGljeS5qYXZhOjIxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkxvY2tSZXRlbnRpb25Qb2xpY3kuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExvY2tSZXRlbnRpb25Qb2xpY3kuamF2YTo1OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IubG9ja1JldGVudGlvblBvbGljeShCdWNrZXRzRGVsZWdhdG9yLmphdmE6MTAwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IElOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBleHBlY3RlZCBCdWNrZXRNZXRhZGF0YS5tZXRhZGF0YV9nZW5lcmF0aW9uOiAwIGFjdHVhbDogMVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuXG5jb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5GYXVsdDogSW1tdXRhYmxlRXJyb3JEZWZpbml0aW9ue2Jhc2U9UFJFQ09ORElUSU9OX0ZBSUxFRCwgY2F0ZWdvcnk9VVNFUl9FUlJPUiwgY2F1c2U9bnVsbCwgZGVidWdJbmZvPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IElOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBleHBlY3RlZCBCdWNrZXRNZXRhZGF0YS5tZXRhZGF0YV9nZW5lcmF0aW9uOiAwIGFjdHVhbDogMVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkxvY2tSZXRlbnRpb25Qb2xpY3kuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExvY2tSZXRlbnRpb25Qb2xpY3kuamF2YToyMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5Mb2NrUmV0ZW50aW9uUG9saWN5LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMb2NrUmV0ZW50aW9uUG9saWN5LmphdmE6NTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLmxvY2tSZXRlbnRpb25Qb2xpY3koQnVja2V0c0RlbGVnYXRvci5qYXZhOjEwMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IElOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogZXhwZWN0ZWQgQnVja2V0TWV0YWRhdGEubWV0YWRhdGFfZ2VuZXJhdGlvbjogMCBhY3R1YWw6IDFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPXByZWNvbmRpdGlvbkZhaWxlZCwgaW50ZXJuYWxSZWFzb249UmVhc29ue2FyZ3VtZW50cz17fSwgY2F1c2U9bnVsbCwgY29kZT1nZGF0YS5Db3JlRXJyb3JEb21haW4uQ09ORElUSU9OX05PVF9NRVQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IElOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBleHBlY3RlZCBCdWNrZXRNZXRhZGF0YS5tZXRhZGF0YV9nZW5lcmF0aW9uOiAwIGFjdHVhbDogMVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkxvY2tSZXRlbnRpb25Qb2xpY3kuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExvY2tSZXRlbnRpb25Qb2xpY3kuamF2YToyMTApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5Mb2NrUmV0ZW50aW9uUG9saWN5LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMb2NrUmV0ZW50aW9uUG9saWN5LmphdmE6NTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLmxvY2tSZXRlbnRpb25Qb2xpY3koQnVja2V0c0RlbGVnYXRvci5qYXZhOjEwMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IElOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogZXhwZWN0ZWQgQnVja2V0TWV0YWRhdGEubWV0YWRhdGFfZ2VuZXJhdGlvbjogMCBhY3R1YWw6IDFcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZXJyb3JQcm90b0NvZGU9Q09ORElUSU9OX05PVF9NRVQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249bnVsbCwgbWVzc2FnZT1udWxsLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249aGVhZGVycy5JZi1NYXRjaCwgbWVzc2FnZT1QcmVjb25kaXRpb24gRmFpbGVkLCByZWFzb249Y29uZGl0aW9uTm90TWV0LCBycGNDb2RlPTQxMn0gUHJlY29uZGl0aW9uIEZhaWxlZDogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OklOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBJTkNPUlJFQ1RfTUVUQV9HRU5FUkFUSU9OX1NQRUNJRklFRDogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IGV4cGVjdGVkIEJ1Y2tldE1ldGFkYXRhLm1ldGFkYXRhX2dlbmVyYXRpb246IDAgYWN0dWFsOiAxXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuTG9ja1JldGVudGlvblBvbGljeS5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTG9ja1JldGVudGlvblBvbGljeS5qYXZhOjIxMClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkxvY2tSZXRlbnRpb25Qb2xpY3kuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExvY2tSZXRlbnRpb25Qb2xpY3kuamF2YTo1OClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IubG9ja1JldGVudGlvblBvbGljeShCdWNrZXRzRGVsZWdhdG9yLmphdmE6MTAwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogSU5DT1JSRUNUX01FVEFfR0VORVJBVElPTl9TUEVDSUZJRUQ6IElOQ09SUkVDVF9NRVRBX0dFTkVSQVRJT05fU1BFQ0lGSUVEOiBleHBlY3RlZCBCdWNrZXRNZXRhZGF0YS5tZXRhZGF0YV9nZW5lcmF0aW9uOiAwIGFjdHVhbDogMVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkVycm9yQ29sbGVjdG9yLnRvRmF1bHQoRXJyb3JDb2xsZWN0b3IuamF2YTo1NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lFcnJvckNvbnZlcnRlci50b0ZhdWx0KFJvc3lFcnJvckNvbnZlcnRlci5qYXZhOjY3KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjU4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUhhbmRsZXIkMi5jYWxsKFJvc3lIYW5kbGVyLmphdmE6MjM4KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnRocmVhZC5UaHJlYWRUcmFja2VycyRUaHJlYWRUcmFja2luZ1J1bm5hYmxlLnJ1bihUaHJlYWRUcmFja2Vycy5qYXZhOjEyNilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6NDU1KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuc2VydmVyLkNvbW1vbk1vZHVsZSRDb250ZXh0Q2FycnlpbmdFeGVjdXRvclNlcnZpY2UkMS5ydW5JbkNvbnRleHQoQ29tbW9uTW9kdWxlLmphdmE6ODQ2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlJDEucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ2Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoVHJhY2VDb250ZXh0LmphdmE6MzIxKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjMxMylcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDU5KVxuXHRhdCBjb20uZ29vZ2xlLmdzZS5pbnRlcm5hbC5EaXNwYXRjaFF1ZXVlSW1wbCRXb3JrZXJUaHJlYWQucnVuKERpc3BhdGNoUXVldWVJbXBsLmphdmE6NDAzKVxuIgogICB9CiAgXSwKICAiY29kZSI6IDQxMiwKICAibWVzc2FnZSI6ICJQcmVjb25kaXRpb24gRmFpbGVkIgogfQp9Cg==" } }, { - "ID": "969b3088c4502b9d", + "ID": "42bd95c09f5a155b", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026kmsKeyName=projects%2Fdulcet-port-762%2Flocations%2Fus%2FkeyRings%2Fgo-integration-test%2FcryptoKeys%2Fkey1\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026kmsKeyName=projects%2Fdulcet-port-762%2Flocations%2Fus%2FkeyRings%2Fgo-integration-test%2FcryptoKeys%2Fkey1\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -39360,19 +39957,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=d2d25e5f94ce189cfaf17a0f4bce36bb87e15af84d96fb9f53b4bc954995" + "multipart/related; boundary=fc1557c3ba717fbd0928ea7676433bea4f70fc9ffd483725d57f264d0ac4" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "96859440a2d2c84084883bdc6fb923d5/765075011044538085;o=0" + "94faa56e374d7b287f36920090c3374c/6789237871207131581;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -39381,20 +39978,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026kmsKeyName=projects%2Fdulcet-port-762%2Flocations%2Fus%2FkeyRings%2Fgo-integration-test%2FcryptoKeys%2Fkey1\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026kmsKeyName=projects%2Fdulcet-port-762%2Flocations%2Fus%2FkeyRings%2Fgo-integration-test%2FcryptoKeys%2Fkey1\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS1kMmQyNWU1Zjk0Y2UxODljZmFmMTdhMGY0YmNlMzZiYjg3ZTE1YWY4NGQ5NmZiOWY1M2I0YmM5NTQ5OTUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm5hbWUiOiJrbXMifQoNCi0tZDJkMjVlNWY5NGNlMTg5Y2ZhZjE3YTBmNGJjZTM2YmI4N2UxNWFmODRkOTZmYjlmNTNiNGJjOTU0OTk1DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KbXkgc2VjcmV0DQotLWQyZDI1ZTVmOTRjZTE4OWNmYWYxN2EwZjRiY2UzNmJiODdlMTVhZjg0ZDk2ZmI5ZjUzYjRiYzk1NDk5NS0tDQo=" + "Body": "LS1mYzE1NTdjM2JhNzE3ZmJkMDkyOGVhNzY3NjQzM2JlYTRmNzBmYzlmZmQ0ODM3MjVkNTdmMjY0ZDBhYzQNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm5hbWUiOiJrbXMifQoNCi0tZmMxNTU3YzNiYTcxN2ZiZDA5MjhlYTc2NzY0MzNiZWE0ZjcwZmM5ZmZkNDgzNzI1ZDU3ZjI2NGQwYWM0DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KbXkgc2VjcmV0DQotLWZjMTU1N2MzYmE3MTdmYmQwOTI4ZWE3Njc2NDMzYmVhNGY3MGZjOWZmZDQ4MzcyNWQ1N2YyNjRkMGFjNC0tDQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -39406,10 +40005,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:28 GMT" + "Wed, 25 Jul 2018 18:25:04 GMT" ], "Etag": [ - "CJ3x2uWi99sCEAE=" + "CJ+/4PrvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -39425,7 +40024,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220586000" + "1532543403000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -39434,19 +40033,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrk4:4290,/bns/yw/borg/yw/bns/blobstore2/bitpusher/372.scotty,acatli15:443" + "xgiadaaf2:4331,/bns/xi/borg/xi/bns/blobstore2/bitpusher/48.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=_k41W5-GKdbshgThiaaoCQ" + "eid=f8BYW4TiB4S2swbxoazoAg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/372.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/48.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -39455,13 +40054,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/372:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/48:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -39476,17 +40075,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpuXFLQWTkYV8mHRH1pUbX48SVryy2vZfWkeC66a9EbNlhWXT7CJydejejocEYsWBNDBcEaATe-UGOBMNe8affxTeHS2932d4ZvznUvqSPHa4ZveYU" + "AEnB2UqjsBJ2ZIfK4dL3wqgybmuDvjmuXKUjnFo6UG57-tEuNAWqJxONaOR_ZzJRaaxwqUclIhlYg5jdgIg5jStHoJOPWgXAzQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9rbXMvMTUzMDIyMDI4ODMyNTc4OSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2ttcyIsCiAibmFtZSI6ICJrbXMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDI4ODMyNTc4OSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMToyOC4zMjVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MjguMzI1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjI4LjMyNVoiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28va21zP2dlbmVyYXRpb249MTUzMDIyMDI4ODMyNTc4OSZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAva21zLzE1MzAyMjAyODgzMjU3ODkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2ttcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAia21zIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDI4ODMyNTc4OSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0ozeDJ1V2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9rbXMvMTUzMDIyMDI4ODMyNTc4OS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2ttcy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyODgzMjU3ODkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0ozeDJ1V2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9rbXMvMTUzMDIyMDI4ODMyNTc4OS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2ttcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyODgzMjU3ODkiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNKM3gydVdpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAva21zLzE1MzAyMjAyODgzMjU3ODkvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28va21zL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyODgzMjU3ODkiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNKM3gydVdpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJVSTc4NUE9PSIsCiAiZXRhZyI6ICJDSjN4MnVXaTk5c0NFQUU9IiwKICJrbXNLZXlOYW1lIjogInByb2plY3RzL2R1bGNldC1wb3J0LTc2Mi9sb2NhdGlvbnMvdXMva2V5UmluZ3MvZ28taW50ZWdyYXRpb24tdGVzdC9jcnlwdG9LZXlzL2tleTEvY3J5cHRvS2V5VmVyc2lvbnMvMSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9rbXMvMTUzMjU0MzEwNDQ1ODY1NSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2ttcyIsCiAibmFtZSI6ICJrbXMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzEwNDQ1ODY1NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNTowNC40NTdaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MDQuNDU3WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjA0LjQ1N1oiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28va21zP2dlbmVyYXRpb249MTUzMjU0MzEwNDQ1ODY1NSZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAva21zLzE1MzI1NDMxMDQ0NTg2NTUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2ttcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAia21zIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzEwNDQ1ODY1NSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0orLzRQcnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9rbXMvMTUzMjU0MzEwNDQ1ODY1NS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2ttcy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMDQ0NTg2NTUiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0orLzRQcnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9rbXMvMTUzMjU0MzEwNDQ1ODY1NS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2ttcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMDQ0NTg2NTUiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNKKy80UHJ2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAva21zLzE1MzI1NDMxMDQ0NTg2NTUvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28va21zL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMDQ0NTg2NTUiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNKKy80UHJ2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJVSTc4NUE9PSIsCiAiZXRhZyI6ICJDSisvNFBydnV0d0NFQUU9IiwKICJrbXNLZXlOYW1lIjogInByb2plY3RzL2R1bGNldC1wb3J0LTc2Mi9sb2NhdGlvbnMvdXMva2V5UmluZ3MvZ28taW50ZWdyYXRpb24tdGVzdC9jcnlwdG9LZXlzL2tleTEvY3J5cHRvS2V5VmVyc2lvbnMvMSIKfQo=" } }, { - "ID": "f9a26e520ca61b77", + "ID": "e74ff71e71d77743", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/kms", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/kms", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -39499,13 +40098,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f9684eb1e1d05e8da167a9862727f845/2308152449717172484;o=0" + "7e48cc31e28d1f8501a29fbccfccad3b/14430199889071680217;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -39514,7 +40113,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/kms" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/kms" ] }, "Body": "" @@ -39522,12 +40121,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -39539,16 +40140,16 @@ "text/plain; charset=utf-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:29 GMT" + "Wed, 25 Jul 2018 18:25:05 GMT" ], "Etag": [ - "\"-CJ3x2uWi99sCEAE=\"" + "\"-CJ+/4PrvutwCEAE=\"" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:11:28 GMT" + "Wed, 25 Jul 2018 18:25:04 GMT" ], "Pragma": [ "no-cache" @@ -39560,10 +40161,10 @@ "projects/dulcet-port-762/locations/us/keyRings/go-integration-test/cryptoKeys/key1/cryptoKeyVersions/1" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:11:28 GMT" + "Fri, 24 Aug 2018 18:25:04 GMT" ], "X-Goog-Generation": [ - "1530220288325789" + "1532543104458655" ], "X-Goog-Hash": [ "crc32c=UI785A==", @@ -39582,7 +40183,7 @@ "9" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/59,/bns/xg/borg/xg/bns/blobstore2/bitpusher/150.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/88,/bns/yb/borg/yb/bns/blobstore2/bitpusher/969.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -39591,13 +40192,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=AE81W-ObIom0_QTNlKSoCQ" + "eid=gMBYW_n8IoWAlQGX1oL4Cw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/150.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/969.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -39606,13 +40207,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/150:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/969:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -39627,17 +40228,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoAMUppDLWcJZwslJKEnw2WDtpUnpIvyEkRPHR7FFoflCerdGPmQOiB5rze6KOPsiLdnGEF9l5xazrkfmV9iCL6aFr-mA" + "AEnB2Ur11pO4__pj6Z_HUQZRFtkq1hYNe1up1bews4vLtvV7icwLnQkaEb3nDlGp2HYkifATPEFRpG2nIA7KC2oLExw_8cmSiw" ] }, "Body": "bXkgc2VjcmV0" } }, { - "ID": "0412ebd3de62015a", + "ID": "25e588c1f160ec5e", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/kms?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/kms?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -39650,13 +40251,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "8a383d34cb15ab0c64bcaf3a2c46c1e9/3923286382916041764;o=0" + "2549a182e89fecae8e444d248b404357/3624700411976297718;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -39665,7 +40266,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/kms?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/kms?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -39676,9 +40277,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -39690,10 +40293,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:31 GMT" + "Wed, 25 Jul 2018 18:25:07 GMT" ], "Etag": [ - "CJ3x2uWi99sCEAE=" + "CJ+/4PrvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -39709,7 +40312,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220590000" + "1532543405000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -39718,7 +40321,7 @@ "998958384336" ], "X-Google-Backends": [ - "vrbo126:4288,/bns/yw/borg/yw/bns/blobstore2/bitpusher/410.scotty,acatli15:443" + "xgiadaad3:4296,/bns/xi/borg/xi/bns/blobstore2/bitpusher/20.scotty,aclgag4:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -39727,10 +40330,10 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=Ak81W8v-Ac2_N9XTiegC" + "eid=gcBYW6izOq6wswbUmaUY" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/410.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/20.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -39739,13 +40342,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/410:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/20:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -39760,17 +40363,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo9m0lK3Up2BsDb8sf07LFwtO0lVJr26y1_oYG4D4rWutvIvkZDOlLUTLVyT7_aGm8scE8uhNT7LTwgHrwsCnVMiIbYJhhgb0wmSwFZu8w6g0r7-fY" + "AEnB2Uq4dlY_xIpc418yzsvdv218cENXTeE9FedGO-f_ICxNlDXV2uwjYkAlp82f7RGBFyy6Vv-_20WljTCU5Kv4JKa_D3A1og" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9rbXMvMTUzMDIyMDI4ODMyNTc4OSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2ttcyIsCiAibmFtZSI6ICJrbXMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDI4ODMyNTc4OSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMToyOC4zMjVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MjguMzI1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjI4LjMyNVoiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28va21zP2dlbmVyYXRpb249MTUzMDIyMDI4ODMyNTc4OSZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAva21zLzE1MzAyMjAyODgzMjU3ODkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2ttcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAia21zIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDI4ODMyNTc4OSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0ozeDJ1V2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9rbXMvMTUzMDIyMDI4ODMyNTc4OS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2ttcy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyODgzMjU3ODkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0ozeDJ1V2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9rbXMvMTUzMDIyMDI4ODMyNTc4OS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2ttcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyODgzMjU3ODkiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNKM3gydVdpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAva21zLzE1MzAyMjAyODgzMjU3ODkvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28va21zL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyODgzMjU3ODkiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNKM3gydVdpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJVSTc4NUE9PSIsCiAiZXRhZyI6ICJDSjN4MnVXaTk5c0NFQUU9IiwKICJrbXNLZXlOYW1lIjogInByb2plY3RzL2R1bGNldC1wb3J0LTc2Mi9sb2NhdGlvbnMvdXMva2V5UmluZ3MvZ28taW50ZWdyYXRpb24tdGVzdC9jcnlwdG9LZXlzL2tleTEvY3J5cHRvS2V5VmVyc2lvbnMvMSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9rbXMvMTUzMjU0MzEwNDQ1ODY1NSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2ttcyIsCiAibmFtZSI6ICJrbXMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzEwNDQ1ODY1NSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNTowNC40NTdaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MDQuNDU3WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjA0LjQ1N1oiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28va21zP2dlbmVyYXRpb249MTUzMjU0MzEwNDQ1ODY1NSZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAva21zLzE1MzI1NDMxMDQ0NTg2NTUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2ttcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAia21zIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzEwNDQ1ODY1NSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0orLzRQcnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9rbXMvMTUzMjU0MzEwNDQ1ODY1NS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2ttcy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMDQ0NTg2NTUiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0orLzRQcnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9rbXMvMTUzMjU0MzEwNDQ1ODY1NS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2ttcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMDQ0NTg2NTUiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNKKy80UHJ2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAva21zLzE1MzI1NDMxMDQ0NTg2NTUvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28va21zL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMDQ0NTg2NTUiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNKKy80UHJ2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJVSTc4NUE9PSIsCiAiZXRhZyI6ICJDSisvNFBydnV0d0NFQUU9IiwKICJrbXNLZXlOYW1lIjogInByb2plY3RzL2R1bGNldC1wb3J0LTc2Mi9sb2NhdGlvbnMvdXMva2V5UmluZ3MvZ28taW50ZWdyYXRpb24tdGVzdC9jcnlwdG9LZXlzL2tleTEvY3J5cHRvS2V5VmVyc2lvbnMvMSIKfQo=" } }, { - "ID": "7e6dcf022410ae4e", + "ID": "536431f26c9dec6c", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/kms?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/kms?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -39783,13 +40386,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "7715569a23d3dcf334875c78ff127c2e/4730994634595384884;o=0" + "9b1850d51755c8f7db4881edaa627138/7481068380944362628;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -39798,7 +40401,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/kms?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/kms?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -39809,9 +40412,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -39823,7 +40428,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:31 GMT" + "Wed, 25 Jul 2018 18:25:07 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -39839,7 +40444,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220586000" + "1532543403000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -39848,16 +40453,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrv125:4223,/bns/yw/borg/yw/bns/blobstore2/bitpusher/485.scotty,acatli15:443" + "xiiadcaw14:4032,/bns/xi/borg/xi/bns/blobstore2/bitpusher/59.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=A081W4-XJdPFhgTc2byYBg" + "eid=g8BYW-awEdCzswaRnZSgCA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/485.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/59.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -39866,13 +40471,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/485:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/59:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -39887,17 +40492,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UruJgQ3oLkFnOHqqZNwrk8FxKelE7Vqqd1n11OuF4bT7MBVdjK00NNb5z-xOGFk1dk_dMPHVPOEGMZIRFjuguHcQn-leHE4uWhBLF5_YLgG-RvidOY" + "AEnB2UpO5idx15L5gqI1mphwZhISRAzHCMWhpoqUumtMtThDNlBo0qwektfGlEibPgys5DSlg9pyt8SkeNGaoa5fGFuZDetnqg" ] }, "Body": "" } }, { - "ID": "633aa593fcc27744", + "ID": "b1f6dc708cbabc82", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -39907,19 +40512,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=3de98368efbc140f1e180d7747415edbff8d42e68ba830111d5c3216c21c" + "multipart/related; boundary=2973a100a803ca693f25c2197b33682fca7ed1a5c4fc175ca5e386081967" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "ec02136f82e58d4bf42d03b3ce9d4bbf/5538421411314925379;o=0" + "5941192fc3bb4c9ba98e93dfa6fab0e8/11265662429840846098;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -39928,7 +40533,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -39943,14 +40548,16 @@ "Io4lnOPU+EThO0X0nq7mNEXB1rWxZsBI4L37pBmyfDc=" ] }, - "Body": "LS0zZGU5ODM2OGVmYmMxNDBmMWUxODBkNzc0NzQxNWVkYmZmOGQ0MmU2OGJhODMwMTExZDVjMzIxNmMyMWMNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJjc2VrIn0KDQotLTNkZTk4MzY4ZWZiYzE0MGYxZTE4MGQ3NzQ3NDE1ZWRiZmY4ZDQyZTY4YmE4MzAxMTFkNWMzMjE2YzIxYw0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQoNCm15IHNlY3JldA0KLS0zZGU5ODM2OGVmYmMxNDBmMWUxODBkNzc0NzQxNWVkYmZmOGQ0MmU2OGJhODMwMTExZDVjMzIxNmMyMWMtLQ0K" + "Body": "LS0yOTczYTEwMGE4MDNjYTY5M2YyNWMyMTk3YjMzNjgyZmNhN2VkMWE1YzRmYzE3NWNhNWUzODYwODE5NjcNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsImNhY2hlQ29udHJvbCI6InB1YmxpYywgbWF4LWFnZT02MCIsImNvbnRlbnRUeXBlIjoidGV4dC9wbGFpbiIsIm5hbWUiOiJjc2VrIn0KDQotLTI5NzNhMTAwYTgwM2NhNjkzZjI1YzIxOTdiMzM2ODJmY2E3ZWQxYTVjNGZjMTc1Y2E1ZTM4NjA4MTk2Nw0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluDQoNCm15IHNlY3JldA0KLS0yOTczYTEwMGE4MDNjYTY5M2YyNWMyMTk3YjMzNjgyZmNhN2VkMWE1YzRmYzE3NWNhNWUzODYwODE5NjctLQ0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -39962,10 +40569,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:32 GMT" + "Wed, 25 Jul 2018 18:25:07 GMT" ], "Etag": [ - "CLP9uuei99sCEAE=" + "CLWHnvzvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -39981,7 +40588,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220586000" + "1532543403000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -39990,19 +40597,19 @@ "998958384336" ], "X-Google-Backends": [ - "vran9:4304,/bns/yw/borg/yw/bns/blobstore2/bitpusher/574.scotty,acatli15:443" + "xgiadabq10:4444,/bns/xi/borg/xi/bns/blobstore2/bitpusher/140.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=A081W8_ZN8qfhQTz8pv4CA" + "eid=g8BYW--lHIa9swbN3qfoAg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/574.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/140.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -40011,13 +40618,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/574:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/140:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -40032,17 +40639,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrZIsUm9YSwh1A5EgsdyUuknjbu2J9Vm4tqTDRwu0EM2AnP4Yueq5xLQOTRqHcW7MZ1ZdCltRXjl0LMzXuB2-2muVYffIgY6b06E8SFrTpGw9_JuYQ" + "AEnB2Uqwuxqo4ZFEguMXp0NFus0BfuhYbPD9CMFLsYw73V27hFPwKoFb48aPLobWO4HjjKA32hQ_1NgyhGO2dVWLZ9DiGZkCYg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jc2VrLzE1MzAyMjAyOTE5OTczNjMiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jc2VrIiwKICJuYW1lIjogImNzZWsiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDI5MTk5NzM2MyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMTozMS45OTVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MzEuOTk1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjMxLjk5NVoiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3Nlaz9nZW5lcmF0aW9uPTE1MzAyMjAyOTE5OTczNjMmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NzZWsvMTUzMDIyMDI5MTk5NzM2My9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3Nlay9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY3NlayIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyOTE5OTczNjMiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNMUDl1dWVpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3Nlay8xNTMwMjIwMjkxOTk3MzYzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3Nlay9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNzZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjkxOTk3MzYzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNMUDl1dWVpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3Nlay8xNTMwMjIwMjkxOTk3MzYzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3Nlay9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNzZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjkxOTk3MzYzIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTFA5dXVlaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NzZWsvMTUzMDIyMDI5MTk5NzM2My91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jc2VrL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNzZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjkxOTk3MzYzIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTFA5dXVlaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiVUk3ODVBPT0iLAogImV0YWciOiAiQ0xQOXV1ZWk5OXNDRUFFPSIsCiAiY3VzdG9tZXJFbmNyeXB0aW9uIjogewogICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgImtleVNoYTI1NiI6ICJJbzRsbk9QVStFVGhPMFgwbnE3bU5FWEIxcld4WnNCSTRMMzdwQm15ZkRjPSIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jc2VrLzE1MzI1NDMxMDc1NjQ0NjkiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jc2VrIiwKICJuYW1lIjogImNzZWsiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzEwNzU2NDQ2OSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNTowNy41NjRaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MDcuNTY0WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjA3LjU2NFoiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3Nlaz9nZW5lcmF0aW9uPTE1MzI1NDMxMDc1NjQ0NjkmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NzZWsvMTUzMjU0MzEwNzU2NDQ2OS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3Nlay9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY3NlayIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMDc1NjQ0NjkiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNMV0hudnp2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3Nlay8xNTMyNTQzMTA3NTY0NDY5L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3Nlay9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNzZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTA3NTY0NDY5IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNMV0hudnp2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3Nlay8xNTMyNTQzMTA3NTY0NDY5L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3Nlay9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNzZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTA3NTY0NDY5IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDTFdIbnZ6dnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NzZWsvMTUzMjU0MzEwNzU2NDQ2OS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jc2VrL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNzZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTA3NTY0NDY5IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTFdIbnZ6dnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiVUk3ODVBPT0iLAogImV0YWciOiAiQ0xXSG52enZ1dHdDRUFFPSIsCiAiY3VzdG9tZXJFbmNyeXB0aW9uIjogewogICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgImtleVNoYTI1NiI6ICJJbzRsbk9QVStFVGhPMFgwbnE3bU5FWEIxcld4WnNCSTRMMzdwQm15ZkRjPSIKIH0KfQo=" } }, { - "ID": "4fb40e9e0680264e", + "ID": "f9661ee2e220fc7d", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/csek/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/cmek?alt=json\u0026destinationKmsKeyName=projects%2Fdulcet-port-762%2Flocations%2Fus%2FkeyRings%2Fgo-integration-test%2FcryptoKeys%2Fkey1\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/csek/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/cmek?alt=json\u0026destinationKmsKeyName=projects%2Fdulcet-port-762%2Flocations%2Fus%2FkeyRings%2Fgo-integration-test%2FcryptoKeys%2Fkey1\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -40061,13 +40668,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3de8250c20d101ba4cfe3f60d2f174bc/7081498849987494499;o=0" + "1a3e3731757b421b8bbeb06a05c63cc2/460162948467338799;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -40076,7 +40683,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/csek/rewriteTo/b/go-integration-test-20180628-76155232935339-0000/o/cmek?alt=json\u0026destinationKmsKeyName=projects%2Fdulcet-port-762%2Flocations%2Fus%2FkeyRings%2Fgo-integration-test%2FcryptoKeys%2Fkey1\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/csek/rewriteTo/b/go-integration-test-20180725-66174009628628-0000/o/cmek?alt=json\u0026destinationKmsKeyName=projects%2Fdulcet-port-762%2Flocations%2Fus%2FkeyRings%2Fgo-integration-test%2FcryptoKeys%2Fkey1\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -40096,9 +40703,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -40110,7 +40719,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:33 GMT" + "Wed, 25 Jul 2018 18:25:08 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -40126,7 +40735,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220592000" + "1532543407000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" @@ -40135,16 +40744,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrae2:4360,/bns/yw/borg/yw/bns/blobstore2/bitpusher/168.scotty,acatli15:443" + "xiiadcab13:4337,/bns/xi/borg/xi/bns/blobstore2/bitpusher/103.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=BE81W5zUBoSPN-3XkeAI" + "eid=g8BYW7fJKO60swb07ZvYDA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/168.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/103.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -40153,13 +40762,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/168:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/103:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -40174,17 +40783,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqQhzsgMbzMRcW2A3AmALzM9Exy4kQfBQBm9vkwQpAEINHfk9lRmU8tuSH-rI2guum1BXiU3kLJGad5aRzAtyrv9AywstiSbX08t3LCsn8Rl8ksyeI" + "AEnB2Uq_XDXPv8CUEWrEtE4PvIwh6G--zYPo8RbepMkXzO9_tchtwVqZEOBEd9GyZMIEr5KoAGWs4lkVcTOADbY_-4_uKNkcLQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiOSIsCiAib2JqZWN0U2l6ZSI6ICI5IiwKICJkb25lIjogdHJ1ZSwKICJyZXNvdXJjZSI6IHsKICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jbWVrLzE1MzAyMjAyOTM0OTU3MjciLAogICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY21layIsCiAgIm5hbWUiOiAiY21layIsCiAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyOTM0OTU3MjciLAogICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MzMuNDk1WiIsCiAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMTozMy40OTVaIiwKICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMTozMy40OTVaIiwKICAic2l6ZSI6ICI5IiwKICAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NtZWs/Z2VuZXJhdGlvbj0xNTMwMjIwMjkzNDk1NzI3JmFsdD1tZWRpYSIsCiAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICJhY2wiOiBbCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NtZWsvMTUzMDIyMDI5MzQ5NTcyNy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NtZWsvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICJvYmplY3QiOiAiY21layIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjkzNDk1NzI3IiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJvd25lcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0srM2x1aWk5OXNDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY21lay8xNTMwMjIwMjkzNDk1NzI3L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NtZWsvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAib2JqZWN0IjogImNtZWsiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDI5MzQ5NTcyNyIsCiAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICB9LAogICAgImV0YWciOiAiQ0srM2x1aWk5OXNDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY21lay8xNTMwMjIwMjkzNDk1NzI3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NtZWsvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAib2JqZWN0IjogImNtZWsiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDI5MzQ5NTcyNyIsCiAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJSRUFERVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgfSwKICAgICJldGFnIjogIkNLKzNsdWlpOTlzQ0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NtZWsvMTUzMDIyMDI5MzQ5NTcyNy91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY21lay9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAib2JqZWN0IjogImNtZWsiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDI5MzQ5NTcyNyIsCiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJldGFnIjogIkNLKzNsdWlpOTlzQ0VBRT0iCiAgIH0KICBdLAogICJvd25lciI6IHsKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogIH0sCiAgImNyYzMyYyI6ICJVSTc4NUE9PSIsCiAgImV0YWciOiAiQ0srM2x1aWk5OXNDRUFFPSIsCiAgImttc0tleU5hbWUiOiAicHJvamVjdHMvZHVsY2V0LXBvcnQtNzYyL2xvY2F0aW9ucy91cy9rZXlSaW5ncy9nby1pbnRlZ3JhdGlvbi10ZXN0L2NyeXB0b0tleXMva2V5MS9jcnlwdG9LZXlWZXJzaW9ucy8xIgogfQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiOSIsCiAib2JqZWN0U2l6ZSI6ICI5IiwKICJkb25lIjogdHJ1ZSwKICJyZXNvdXJjZSI6IHsKICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jbWVrLzE1MzI1NDMxMDgwNzg1NjQiLAogICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY21layIsCiAgIm5hbWUiOiAiY21layIsCiAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMDgwNzg1NjQiLAogICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MDguMDc4WiIsCiAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNTowOC4wNzhaIiwKICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNTowOC4wNzhaIiwKICAic2l6ZSI6ICI5IiwKICAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NtZWs/Z2VuZXJhdGlvbj0xNTMyNTQzMTA4MDc4NTY0JmFsdD1tZWRpYSIsCiAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICJhY2wiOiBbCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NtZWsvMTUzMjU0MzEwODA3ODU2NC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NtZWsvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICJvYmplY3QiOiAiY21layIsCiAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTA4MDc4NTY0IiwKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJvd25lcnMiCiAgICB9LAogICAgImV0YWciOiAiQ09TM3ZmenZ1dHdDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY21lay8xNTMyNTQzMTA4MDc4NTY0L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NtZWsvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAib2JqZWN0IjogImNtZWsiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzEwODA3ODU2NCIsCiAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJPV05FUiIsCiAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICB9LAogICAgImV0YWciOiAiQ09TM3ZmenZ1dHdDRUFFPSIKICAgfSwKICAgewogICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY21lay8xNTMyNTQzMTA4MDc4NTY0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NtZWsvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAib2JqZWN0IjogImNtZWsiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzEwODA3ODU2NCIsCiAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAicm9sZSI6ICJSRUFERVIiLAogICAgInByb2plY3RUZWFtIjogewogICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgfSwKICAgICJldGFnIjogIkNPUzN2Znp2dXR3Q0VBRT0iCiAgIH0sCiAgIHsKICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NtZWsvMTUzMjU0MzEwODA3ODU2NC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY21lay9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAib2JqZWN0IjogImNtZWsiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzEwODA3ODU2NCIsCiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgInJvbGUiOiAiT1dORVIiLAogICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJldGFnIjogIkNPUzN2Znp2dXR3Q0VBRT0iCiAgIH0KICBdLAogICJvd25lciI6IHsKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogIH0sCiAgImNyYzMyYyI6ICJVSTc4NUE9PSIsCiAgImV0YWciOiAiQ09TM3ZmenZ1dHdDRUFFPSIsCiAgImttc0tleU5hbWUiOiAicHJvamVjdHMvZHVsY2V0LXBvcnQtNzYyL2xvY2F0aW9ucy91cy9rZXlSaW5ncy9nby1pbnRlZ3JhdGlvbi10ZXN0L2NyeXB0b0tleXMva2V5MS9jcnlwdG9LZXlWZXJzaW9ucy8xIgogfQp9Cg==" } }, { - "ID": "10b258aedc47e787", + "ID": "9ab1afba0e2599f4", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/cmek", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/cmek", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -40197,13 +40806,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9965197569e03b08192cd806f1e8dc07/8696632783186363779;o=0" + "bb182ba754252d7b4e89a867e53b7839/8101124966331887435;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -40212,7 +40821,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/cmek" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/cmek" ] }, "Body": "" @@ -40220,12 +40829,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -40237,16 +40848,16 @@ "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:11:33 GMT" + "Wed, 25 Jul 2018 18:25:09 GMT" ], "Etag": [ - "\"-CK+3luii99sCEAE=\"" + "\"-COS3vfzvutwCEAE=\"" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:11:33 GMT" + "Wed, 25 Jul 2018 18:25:08 GMT" ], "Pragma": [ "no-cache" @@ -40258,10 +40869,10 @@ "projects/dulcet-port-762/locations/us/keyRings/go-integration-test/cryptoKeys/key1/cryptoKeyVersions/1" ], "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:11:33 GMT" + "Fri, 24 Aug 2018 18:25:08 GMT" ], "X-Goog-Generation": [ - "1530220293495727" + "1532543108078564" ], "X-Goog-Hash": [ "crc32c=UI785A==", @@ -40280,7 +40891,7 @@ "9" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/0,/bns/xg/borg/xg/bns/blobstore2/bitpusher/123.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/392,/bns/yb/borg/yb/bns/blobstore2/bitpusher/74.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -40289,13 +40900,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=BU81W_2JKeW9_QTcj5HYDw" + "eid=hMBYW6K3C8GelAH-jJWoCw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/123.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/74.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -40304,13 +40915,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/123:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/74:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -40325,17 +40936,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Url1VekzaPQc_kBlAgBYW3U5lVnnY0WMmbOQGINsumGFJMRiaT8nYXsnOW9sHF2IQBksZ1xSOQOjEvw9UTWApB9duDfWA" + "AEnB2Ur-KKfE5QazX5N78CjHt7Z21YDuyOs75dMBEkjVw4ZIssKfMm8fFR2fHmoed-Evyx0b4VoPH34qoQiD8wuRM3wQHXiFp30cDbAJafugDkgO5Omj8Cg" ] }, "Body": "bXkgc2VjcmV0" } }, { - "ID": "ed523e10269abde4", + "ID": "fcaef1ebf384dba2", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/cmek?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/cmek?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -40348,13 +40959,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "79408e37a31c4897da25aacbe786fc40/10239710221858998434;o=0" + "d08a49c978255b94aec85a05eda5f531/15741806617304379496;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -40363,7 +40974,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/cmek?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/cmek?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -40374,9 +40985,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -40388,10 +41001,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:35 GMT" + "Wed, 25 Jul 2018 18:25:09 GMT" ], "Etag": [ - "CK+3luii99sCEAE=" + "COS3vfzvutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -40407,7 +41020,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220590000" + "1532543409000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -40416,7 +41029,7 @@ "998958384336" ], "X-Google-Backends": [ - "vrbc189:4377,/bns/yw/borg/yw/bns/blobstore2/bitpusher/541.scotty,acatli15:443" + "xiiadcbc16:4387,/bns/xi/borg/xi/bns/blobstore2/bitpusher/80.scotty,aclgag4:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -40425,10 +41038,10 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=Bk81W52HA8mChQTn2LjwAw" + "eid=hcBYW7rkJOyyswbR54r4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/541.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/80.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -40437,13 +41050,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/541:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/80:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -40458,17 +41071,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoFyLBJ6JesuPIsSsBQeLiXaJdaSFHMj9lybgxfR7cIqMx90UTsaaUSyR1hI_v8WCLbWd110uwe3XDPzWROY9GhEItqW7PkezaSiEOXh89KmHR66W4" + "AEnB2UpULWN7xDHhCyow5HN6uZ4fUvWzp99Cu61pTpUjjMnu_9NF-Y3r3pggx2aPkeOe_Y3EYfx9WJmkpUQOmHXKp8KnMNu0RQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jbWVrLzE1MzAyMjAyOTM0OTU3MjciLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jbWVrIiwKICJuYW1lIjogImNtZWsiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDI5MzQ5NTcyNyIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMTozMy40OTVaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MzMuNDk1WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjMzLjQ5NVoiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY21laz9nZW5lcmF0aW9uPTE1MzAyMjAyOTM0OTU3MjcmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NtZWsvMTUzMDIyMDI5MzQ5NTcyNy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY21lay9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiY21layIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyOTM0OTU3MjciLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNLKzNsdWlpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY21lay8xNTMwMjIwMjkzNDk1NzI3L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY21lay9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNtZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjkzNDk1NzI3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNLKzNsdWlpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY21lay8xNTMwMjIwMjkzNDk1NzI3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY21lay9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNtZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjkzNDk1NzI3IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSyszbHVpaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NtZWsvMTUzMDIyMDI5MzQ5NTcyNy91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jbWVrL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogImNtZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjkzNDk1NzI3IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSyszbHVpaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiVUk3ODVBPT0iLAogImV0YWciOiAiQ0srM2x1aWk5OXNDRUFFPSIsCiAia21zS2V5TmFtZSI6ICJwcm9qZWN0cy9kdWxjZXQtcG9ydC03NjIvbG9jYXRpb25zL3VzL2tleVJpbmdzL2dvLWludGVncmF0aW9uLXRlc3QvY3J5cHRvS2V5cy9rZXkxL2NyeXB0b0tleVZlcnNpb25zLzEiCn0K" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jbWVrLzE1MzI1NDMxMDgwNzg1NjQiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jbWVrIiwKICJuYW1lIjogImNtZWsiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzEwODA3ODU2NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNTowOC4wNzhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MDguMDc4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjA4LjA3OFoiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY21laz9nZW5lcmF0aW9uPTE1MzI1NDMxMDgwNzg1NjQmYWx0PW1lZGlhIiwKICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NtZWsvMTUzMjU0MzEwODA3ODU2NC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY21lay9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiY21layIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMDgwNzg1NjQiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNPUzN2Znp2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY21lay8xNTMyNTQzMTA4MDc4NTY0L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY21lay9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNtZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTA4MDc4NTY0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNPUzN2Znp2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY21lay8xNTMyNTQzMTA4MDc4NTY0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY21lay9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNtZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTA4MDc4NTY0IiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDT1MzdmZ6dnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NtZWsvMTUzMjU0MzEwODA3ODU2NC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jbWVrL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogImNtZWsiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTA4MDc4NTY0IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDT1MzdmZ6dnV0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiVUk3ODVBPT0iLAogImV0YWciOiAiQ09TM3ZmenZ1dHdDRUFFPSIsCiAia21zS2V5TmFtZSI6ICJwcm9qZWN0cy9kdWxjZXQtcG9ydC03NjIvbG9jYXRpb25zL3VzL2tleVJpbmdzL2dvLWludGVncmF0aW9uLXRlc3QvY3J5cHRvS2V5cy9rZXkxL2NyeXB0b0tleVZlcnNpb25zLzEiCn0K" } }, { - "ID": "0ba8a56c598e4f64", + "ID": "cb5ea713bb57a9b5", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/csek?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/csek?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -40481,13 +41094,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5872c8c38ee2968e250c907440e78caa/11047137002856598194;o=0" + "e602dd2dc9aeacc04155799058622cfb/1151994557716197622;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -40496,7 +41109,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/csek?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/csek?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -40507,9 +41120,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -40521,7 +41136,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:35 GMT" + "Wed, 25 Jul 2018 18:25:10 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -40537,7 +41152,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220586000" + "1532543403000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -40546,16 +41161,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrlq72:4470,/bns/yw/borg/yw/bns/blobstore2/bitpusher/68.scotty,acatli15:443" + "xgiadabr1:4172,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=B081W6iDH4aihQTOw5HwBg" + "eid=hcBYW4_dLoaxswa5pbcI" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/68.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/5.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -40564,13 +41179,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/68:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/5:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -40585,17 +41200,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uol_Nd6vDCRHiR4dZ6hfayYOJjMe9M5IPoEUlUQu-y6dN3UlpnFKkLdIrv5vCJXsHA3rrwsOO0GwFMm7w-Nt7ZXrnXQP0hj5RReldOk5K31bxO_weI" + "AEnB2UrD0EKcm6Mbtvmq7tLSDN7c_97-xsqokucVYVWhFkEFaA7qJ3n19TS1f3uup2K69HJVMdCC-nWsp7zm1-w-QkZNF7dVMA" ] }, "Body": "" } }, { - "ID": "b3417d30188f7be1", + "ID": "4a92c247352baad5", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/cmek?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/cmek?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -40608,13 +41223,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "3634b9003ebe4fd230bf7e8a6728b936/11854845250257816514;o=0" + "b24f6bfd00b51ddb9d9d9f0e2b29a9f0/4936306036436087172;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -40623,7 +41238,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/cmek?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/cmek?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -40634,9 +41249,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -40648,7 +41265,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:35 GMT" + "Wed, 25 Jul 2018 18:25:10 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -40664,7 +41281,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220586000" + "1532543410000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -40673,16 +41290,16 @@ "998958384336" ], "X-Google-Backends": [ - "vri10:4099,/bns/yw/borg/yw/bns/blobstore2/bitpusher/608.scotty,acatli15:443" + "xiiadcba13:4101,/bns/xi/borg/xi/bns/blobstore2/bitpusher/123.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=B081W8qAKoPThQS6q4CABQ" + "eid=hsBYW-6zAoGGygPZjIDwAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/608.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/123.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -40691,13 +41308,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/608:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/123:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -40712,14 +41329,14 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqAvxEqKRxLF-EvEoFIKun1FVzQu2-v0QGwbyz76LFsPX2598zOVUCO3QzXQoP62uID5CzQtS1Bhke7WjLnTiEHaVXo8ohIpGTlvHA2wYSA1jqH_Qk" + "AEnB2UqV_zCf4tOCpa3beqtCKLJ4S-GC2_bJV8fFmYqdMKuEzZ1BAYpoWZHZooJR6zfnAf6xg96WDTCXA5EWk9gRBk9LrOBfjA" ] }, "Body": "" } }, { - "ID": "51f3b75ec05d1e39", + "ID": "de34262c7aea39a0", "Request": { "Method": "POST", "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026project=dulcet-port-762", @@ -40741,13 +41358,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "6c4dfdf6426ced45c5e20b5d4b4a85b1/13469979183456751329;o=0" + "bcc36332c1257f68f4855eef34de8797/12577269153795420833;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -40762,14 +41379,16 @@ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "eyJlbmNyeXB0aW9uIjp7ImRlZmF1bHRLbXNLZXlOYW1lIjoicHJvamVjdHMvZHVsY2V0LXBvcnQtNzYyL2xvY2F0aW9ucy91cy9rZXlSaW5ncy9nby1pbnRlZ3JhdGlvbi10ZXN0L2NyeXB0b0tleXMva2V5MSJ9LCJsb2NhdGlvbiI6IlVTIiwibmFtZSI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCJ9Cg==" + "Body": "eyJlbmNyeXB0aW9uIjp7ImRlZmF1bHRLbXNLZXlOYW1lIjoicHJvamVjdHMvZHVsY2V0LXBvcnQtNzYyL2xvY2F0aW9ucy91cy9rZXlSaW5ncy9nby1pbnRlZ3JhdGlvbi10ZXN0L2NyeXB0b0tleXMva2V5MSJ9LCJsb2NhdGlvbiI6IlVTIiwibmFtZSI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCJ9Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -40781,7 +41400,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:36 GMT" + "Wed, 25 Jul 2018 18:25:11 GMT" ], "Etag": [ "CAE=" @@ -40800,7 +41419,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220595000" + "1532543403000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -40809,16 +41428,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrqh26:4149,/bns/yw/borg/yw/bns/blobstore2/bitpusher/355.scotty,acatli15:443" + "xgiadaao15:4469,/bns/xi/borg/xi/bns/blobstore2/bitpusher/3.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=B081W43eNIuDhASy3KG4CA" + "eid=hsBYW6a1DaKFygOmqoPoBA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/355.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/3.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -40827,13 +41446,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/355:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/3:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -40848,17 +41467,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Up5facbLg-t46aj-SpMoDGLr39B0exeTDcwQcvrV7xcNr1_687_hIantVgPyvSswFmhgTRrfftx8yoEenyPnMKy_LZ0ZI6JN1WUZugXLUsPxkQH1TI" + "AEnB2Upk4_zMYyiKWEowUw60rmf7qi3cKqBHLAbZUKbxS4qoriPcokREpZdlZt31-zNuEtp9Bo6XiZODdFO_05GxYXTJM3apFA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MzYuMzg1WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjM2LjM4NVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImVuY3J5cHRpb24iOiB7CiAgImRlZmF1bHRLbXNLZXlOYW1lIjogInByb2plY3RzL2R1bGNldC1wb3J0LTc2Mi9sb2NhdGlvbnMvdXMva2V5UmluZ3MvZ28taW50ZWdyYXRpb24tdGVzdC9jcnlwdG9LZXlzL2tleTEiCiB9LAogImxvY2F0aW9uIjogIlVTIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MTAuODAzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjEwLjgwM1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImVuY3J5cHRpb24iOiB7CiAgImRlZmF1bHRLbXNLZXlOYW1lIjogInByb2plY3RzL2R1bGNldC1wb3J0LTc2Mi9sb2NhdGlvbnMvdXMva2V5UmluZ3MvZ28taW50ZWdyYXRpb24tdGVzdC9jcnlwdG9LZXlzL2tleTEiCiB9LAogImxvY2F0aW9uIjogIlVTIiwKICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogImV0YWciOiAiQ0FFPSIKfQo=" } }, { - "ID": "734ba218ec75ead1", + "ID": "a9e71e82fa8c0a13", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -40871,13 +41490,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "84c9ec4586ba3b95e0c17f966096f8e2/15012775151447576833;o=0" + "2aa34a2709e3bbd9c87adbfc5c746150/1771768572927128509;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -40886,7 +41505,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -40897,9 +41516,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -40911,13 +41532,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:36 GMT" + "Wed, 25 Jul 2018 18:25:11 GMT" ], "Etag": [ "CAE=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:36 GMT" + "Wed, 25 Jul 2018 18:25:11 GMT" ], "Server": [ "UploadServer" @@ -40927,7 +41548,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220590000" + "1532543405000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -40936,16 +41557,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrw187:4237,/bns/yw/borg/yw/bns/blobstore2/bitpusher/139.scotty,acatli15:443" + "xiiadcaz15:4214,/bns/xi/borg/xi/bns/blobstore2/bitpusher/110.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=CE81W6rHI9GChQTP5Cs" + "eid=h8BYW4O4A6i9swbA1rXICg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/139.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/110.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -40954,13 +41575,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/139:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/110:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -40975,17 +41596,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoKHsKupRqdR06Ie7XG2fY3d8FhVpKeURODp478yEf59dRq0PVmMxmMDYTz-pKJYCsHHI3FYSy8C_HlXER1s_Vo_yXnRU36PzYiI1cCAL5TM99GKsk" + "AEnB2Urn3xm30BRq9Etk-mrsRZh-CTxI2V5yRmmImGI5u-NvQeuWQ3OYsS91z0eLNtvYpCLw8uoQACLQaSu8fDrDne450ahVSQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MzYuMzg1WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjM2LjM4NVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0KIF0sCiAiZW5jcnlwdGlvbiI6IHsKICAiZGVmYXVsdEttc0tleU5hbWUiOiAicHJvamVjdHMvZHVsY2V0LXBvcnQtNzYyL2xvY2F0aW9ucy91cy9rZXlSaW5ncy9nby1pbnRlZ3JhdGlvbi10ZXN0L2NyeXB0b0tleXMva2V5MSIKIH0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUU9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MTAuODAzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjEwLjgwM1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUU9IgogIH0KIF0sCiAiZW5jcnlwdGlvbiI6IHsKICAiZGVmYXVsdEttc0tleU5hbWUiOiAicHJvamVjdHMvZHVsY2V0LXBvcnQtNzYyL2xvY2F0aW9ucy91cy9rZXlSaW5ncy9nby1pbnRlZ3JhdGlvbi10ZXN0L2NyeXB0b0tleXMva2V5MSIKIH0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUU9Igp9Cg==" } }, { - "ID": "07c5adb8b95cb120", + "ID": "7d55bd9561c85310", "Request": { "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0014/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0014/o?alt=json\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -40995,19 +41616,19 @@ "REDACTED" ], "Content-Type": [ - "multipart/related; boundary=970d1214c5fa9441981e0ff11181b3867adcb94c8a1caeb3e816a8449fe8" + "multipart/related; boundary=efaf8d5b00cf0cf9771216d0934a5671116ca2787bac7036c0734defc17a" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f432548c4efaf8d76cda2d9a7ebdaf6f/15820483403126985488;o=0" + "07e7d7f8ee4f397ab196edead28af09c/5556081151141868619;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -41016,20 +41637,22 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0014/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0014/o?alt=json\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS05NzBkMTIxNGM1ZmE5NDQxOTgxZTBmZjExMTgxYjM4NjdhZGNiOTRjOGExY2FlYjNlODE2YTg0NDlmZTgNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsIm5hbWUiOiJrbXMifQoNCi0tOTcwZDEyMTRjNWZhOTQ0MTk4MWUwZmYxMTE4MWIzODY3YWRjYjk0YzhhMWNhZWIzZTgxNmE4NDQ5ZmU4DQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KbXkgc2VjcmV0DQotLTk3MGQxMjE0YzVmYTk0NDE5ODFlMGZmMTExODFiMzg2N2FkY2I5NGM4YTFjYWViM2U4MTZhODQ0OWZlOC0tDQo=" + "Body": "LS1lZmFmOGQ1YjAwY2YwY2Y5NzcxMjE2ZDA5MzRhNTY3MTExNmNhMjc4N2JhYzcwMzZjMDczNGRlZmMxN2ENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsIm5hbWUiOiJrbXMifQoNCi0tZWZhZjhkNWIwMGNmMGNmOTc3MTIxNmQwOTM0YTU2NzExMTZjYTI3ODdiYWM3MDM2YzA3MzRkZWZjMTdhDQpDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgNCg0KbXkgc2VjcmV0DQotLWVmYWY4ZDViMDBjZjBjZjk3NzEyMTZkMDkzNGE1NjcxMTE2Y2EyNzg3YmFjNzAzNmMwNzM0ZGVmYzE3YS0tDQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -41041,10 +41664,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:38 GMT" + "Wed, 25 Jul 2018 18:25:13 GMT" ], "Etag": [ - "CML6xeqi99sCEAE=" + "CM/k4/7vutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -41060,7 +41683,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220586000" + "1532543403000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -41069,19 +41692,19 @@ "998958384336" ], "X-Google-Backends": [ - "vrt64:4383,/bns/yw/borg/yw/bns/blobstore2/bitpusher/174.scotty,acatli15:443" + "xiiadcbp13:4150,/bns/xi/borg/xi/bns/blobstore2/bitpusher/148.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=CE81W92UOIXbhQTUy7PoAQ" + "eid=h8BYW-i2Gce9swaP-5fwAg" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/174.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/148.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -41090,13 +41713,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/174:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/148:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -41111,17 +41734,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uo1U7rwyBJmMiw8V_ZP5Wm0bd0JQ0PtzQQaaU9TAOjNzQE8z6N-71DPKwbjT6QSms0YHiLmmPgPug-ZlFqA9HdL7x3gJJXtTXFIQo8nf4L86iiABfU" + "AEnB2Urqf0olm2KhWTR9CJDbcPWkQ9mDH0g4QArVT7mkBNxeU3RBtCZL3yEkAIidTVs2gsy8381Vtwx-Sph1lJghYO6xNJrBCA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9rbXMvMTUzMDIyMDI5ODQ2ODY3NCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9vL2ttcyIsCiAibmFtZSI6ICJrbXMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDI5ODQ2ODY3NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMTozOC40NjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MzguNDY4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjM4LjQ2OFoiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDE0L28va21zP2dlbmVyYXRpb249MTUzMDIyMDI5ODQ2ODY3NCZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQva21zLzE1MzAyMjAyOTg0Njg2NzQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9vL2ttcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAgICJvYmplY3QiOiAia21zIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDI5ODQ2ODY3NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ01MNnhlcWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9rbXMvMTUzMDIyMDI5ODQ2ODY3NC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9vL2ttcy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyOTg0Njg2NzQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ01MNnhlcWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9rbXMvMTUzMDIyMDI5ODQ2ODY3NC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9vL2ttcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyOTg0Njg2NzQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNNTDZ4ZXFpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQva21zLzE1MzAyMjAyOTg0Njg2NzQvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDE0L28va21zL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyOTg0Njg2NzQiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNNTDZ4ZXFpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJVSTc4NUE9PSIsCiAiZXRhZyI6ICJDTUw2eGVxaTk5c0NFQUU9IiwKICJrbXNLZXlOYW1lIjogInByb2plY3RzL2R1bGNldC1wb3J0LTc2Mi9sb2NhdGlvbnMvdXMva2V5UmluZ3MvZ28taW50ZWdyYXRpb24tdGVzdC9jcnlwdG9LZXlzL2tleTEvY3J5cHRvS2V5VmVyc2lvbnMvMSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9rbXMvMTUzMjU0MzExMjkwMTE5OSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9vL2ttcyIsCiAibmFtZSI6ICJrbXMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzExMjkwMTE5OSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNToxMi45MDBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MTIuOTAwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjEyLjkwMFoiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE0L28va21zP2dlbmVyYXRpb249MTUzMjU0MzExMjkwMTE5OSZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQva21zLzE1MzI1NDMxMTI5MDExOTkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9vL2ttcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAgICJvYmplY3QiOiAia21zIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzExMjkwMTE5OSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ00vazQvN3Z1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9rbXMvMTUzMjU0MzExMjkwMTE5OS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9vL2ttcy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMTI5MDExOTkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ00vazQvN3Z1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9rbXMvMTUzMjU0MzExMjkwMTE5OS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9vL2ttcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMTI5MDExOTkiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNNL2s0Lzd2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQva21zLzE1MzI1NDMxMTI5MDExOTkvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE0L28va21zL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMTI5MDExOTkiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNNL2s0Lzd2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJVSTc4NUE9PSIsCiAiZXRhZyI6ICJDTS9rNC83dnV0d0NFQUU9IiwKICJrbXNLZXlOYW1lIjogInByb2plY3RzL2R1bGNldC1wb3J0LTc2Mi9sb2NhdGlvbnMvdXMva2V5UmluZ3MvZ28taW50ZWdyYXRpb24tdGVzdC9jcnlwdG9LZXlzL2tleTEvY3J5cHRvS2V5VmVyc2lvbnMvMSIKfQo=" } }, { - "ID": "886edd5b7cdc99fd", + "ID": "d7d1bf9c237ce398", "Request": { "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0014/kms", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0014/kms", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -41134,13 +41757,13 @@ "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "152834c589e924a1092675a002f3aa8d/17435617336325854768;o=0" + "d29732f9dc74fdf49586042c59888b2a/13197044268501202280;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "storage.googleapis.com" @@ -41149,7 +41772,7 @@ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0014/kms" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0014/kms" ] }, "Body": "" @@ -41157,12 +41780,14 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Accept-Ranges": [ "bytes" ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -41174,16 +41799,16 @@ "text/plain; charset=utf-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:38 GMT" + "Wed, 25 Jul 2018 18:25:14 GMT" ], "Etag": [ - "\"-CML6xeqi99sCEAE=\"" + "\"-CM/k4/7vutwCEAE=\"" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" ], "Last-Modified": [ - "Thu, 28 Jun 2018 21:11:38 GMT" + "Wed, 25 Jul 2018 18:25:12 GMT" ], "Pragma": [ "no-cache" @@ -41195,7 +41820,7 @@ "projects/dulcet-port-762/locations/us/keyRings/go-integration-test/cryptoKeys/key1/cryptoKeyVersions/1" ], "X-Goog-Generation": [ - "1530220298468674" + "1532543112901199" ], "X-Goog-Hash": [ "crc32c=UI785A==", @@ -41214,7 +41839,7 @@ "9" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/15,/bns/xg/borg/xg/bns/blobstore2/bitpusher/115.scotty,aclgal16:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/258,/bns/yb/borg/yb/bns/blobstore2/bitpusher/96.scotty,ybpy2-v6:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -41223,13 +41848,13 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=Ck81W6fWI8-5_QSv76r4Dw" + "eid=icBYW5foBouHlgGFkKC4Bw" ], "X-Google-Gfe-Cloud-Project-Number": [ "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/115.scotty,aclgal16:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/96.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -41238,13 +41863,13 @@ "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/115:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/96:caf3" ], "X-Google-Service": [ "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" ], "X-Google-Storage-Location": [ "US" @@ -41259,17 +41884,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoFKgIGqweOR0IZjXNJ80XPpbsC6KBPtJgE08OqphqxZabR2ym_MK0SoVE5FayEz8WNkGBq0mpHCZA_ndlcYF6dguvA0g" + "AEnB2UoNOA4kIoPQxGo5U9AQSUUobw0uQgAYyFwDJCorOjXrGpTAXCe1NzRDNmhGuzKaTQpm6QWYfN-SvL2imOy7yCvM95-0wCz8C46ykp33Hd7JhgPGsUg" ] }, "Body": "bXkgc2VjcmV0" } }, { - "ID": "e828719bfa8f598d", + "ID": "5e6d49a89653d5f2", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014/o/kms?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014/o/kms?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -41282,13 +41907,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d58b2a1fb8f624ab198028501b5f937c/532232171970746703;o=0" + "143edb9bcab6180370e53715386417f2/2391543687632909956;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -41297,7 +41922,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014/o/kms?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014/o/kms?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -41308,9 +41933,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -41322,10 +41949,10 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:38 GMT" + "Wed, 25 Jul 2018 18:25:15 GMT" ], "Etag": [ - "CML6xeqi99sCEAE=" + "CM/k4/7vutwCEAE=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -41341,7 +41968,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220590000" + "1532543405000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -41350,7 +41977,7 @@ "998958384336" ], "X-Google-Backends": [ - "vrjo3:4099,/bns/yw/borg/yw/bns/blobstore2/bitpusher/521.scotty,acatli15:443" + "xiiadcba13:4101,/bns/xi/borg/xi/bns/blobstore2/bitpusher/101.scotty,aclgag4:443" ], "X-Google-Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -41359,10 +41986,10 @@ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=Ck81W5fYNNOkhATsyYKoCg" + "eid=isBYW_vAI423swaa1JGICA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/521.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/101.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -41371,13 +41998,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/521:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/101:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -41392,17 +42019,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpTmBrHuhWqa5u4tmkK6YcFAx3SuPkD9MuB_8X2bGQHRqztfxRyR2YKnQdKy1ajHrXHmu0mGupzbn1qHDYgbq1J2aeq_2UxWrAy5Uom3-p-gIniM6k" + "AEnB2Uq3Etom4w01a-UT2jFFvKPiVEavm5w49O8uYkeE0U7nn-AGR-MheYPNiU53xd3qZZOdv6ElHEyBwUfzEF9WkTGk-tMrFQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9rbXMvMTUzMDIyMDI5ODQ2ODY3NCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9vL2ttcyIsCiAibmFtZSI6ICJrbXMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDI5ODQ2ODY3NCIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMTozOC40NjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MzguNDY4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjM4LjQ2OFoiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDE0L28va21zP2dlbmVyYXRpb249MTUzMDIyMDI5ODQ2ODY3NCZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQva21zLzE1MzAyMjAyOTg0Njg2NzQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9vL2ttcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAgICJvYmplY3QiOiAia21zIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDI5ODQ2ODY3NCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ01MNnhlcWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9rbXMvMTUzMDIyMDI5ODQ2ODY3NC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9vL2ttcy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyOTg0Njg2NzQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ01MNnhlcWk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9rbXMvMTUzMDIyMDI5ODQ2ODY3NC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9vL2ttcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyOTg0Njg2NzQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNNTDZ4ZXFpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQva21zLzE1MzAyMjAyOTg0Njg2NzQvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDE0L28va21zL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyOTg0Njg2NzQiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNNTDZ4ZXFpOTlzQ0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJVSTc4NUE9PSIsCiAiZXRhZyI6ICJDTUw2eGVxaTk5c0NFQUU9IiwKICJrbXNLZXlOYW1lIjogInByb2plY3RzL2R1bGNldC1wb3J0LTc2Mi9sb2NhdGlvbnMvdXMva2V5UmluZ3MvZ28taW50ZWdyYXRpb24tdGVzdC9jcnlwdG9LZXlzL2tleTEvY3J5cHRvS2V5VmVyc2lvbnMvMSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9rbXMvMTUzMjU0MzExMjkwMTE5OSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9vL2ttcyIsCiAibmFtZSI6ICJrbXMiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzExMjkwMTE5OSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNToxMi45MDBaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MTIuOTAwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjEyLjkwMFoiLAogInNpemUiOiAiOSIsCiAibWQ1SGFzaCI6ICJBQVBRUzQ2VHJuTVlucWlLQWJhZ3RRPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE0L28va21zP2dlbmVyYXRpb249MTUzMjU0MzExMjkwMTE5OSZhbHQ9bWVkaWEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQva21zLzE1MzI1NDMxMTI5MDExOTkvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9vL2ttcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAgICJvYmplY3QiOiAia21zIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzExMjkwMTE5OSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ00vazQvN3Z1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9rbXMvMTUzMjU0MzExMjkwMTE5OS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9vL2ttcy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMTI5MDExOTkiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ00vazQvN3Z1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9rbXMvMTUzMjU0MzExMjkwMTE5OS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9vL2ttcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMTI5MDExOTkiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNNL2s0Lzd2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQva21zLzE1MzI1NDMxMTI5MDExOTkvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE0L28va21zL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAib2JqZWN0IjogImttcyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMTI5MDExOTkiLAogICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICJldGFnIjogIkNNL2s0Lzd2dXR3Q0VBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiB9LAogImNyYzMyYyI6ICJVSTc4NUE9PSIsCiAiZXRhZyI6ICJDTS9rNC83dnV0d0NFQUU9IiwKICJrbXNLZXlOYW1lIjogInByb2plY3RzL2R1bGNldC1wb3J0LTc2Mi9sb2NhdGlvbnMvdXMva2V5UmluZ3MvZ28taW50ZWdyYXRpb24tdGVzdC9jcnlwdG9LZXlzL2tleTEvY3J5cHRvS2V5VmVyc2lvbnMvMSIKfQo=" } }, { - "ID": "5ae6c7af1624be28", + "ID": "25e10e9fed5c5396", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014/o/kms?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014/o/kms?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -41415,13 +42042,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "69f40d54336587fa430e7f6708aa2a73/1339658952985123423;o=0" + "5faf77613b3b9511d92d70688896c905/6247912760390661651;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -41430,7 +42057,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014/o/kms?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014/o/kms?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -41441,9 +42068,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -41455,7 +42084,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:39 GMT" + "Wed, 25 Jul 2018 18:25:16 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -41471,7 +42100,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220595000" + "1532543403000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -41480,16 +42109,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrss4:4278,/bns/yw/borg/yw/bns/blobstore2/bitpusher/157.scotty,acatli15:443" + "xiiadcaj11:4432,/bns/xi/borg/xi/bns/blobstore2/bitpusher/121.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=Ck81W4DTPIaIN5_KqfgH" + "eid=i8BYW_KbN8KFygPBwIT4Ag" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/157.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/121.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -41498,13 +42127,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/157:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/121:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -41519,17 +42148,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqCMMx8UJ06wKt2-5YnqdryzZXrRzU7LFtw1XbJglioPHYegazcgX9W_DW7tr33UnaQfF-UnzWQLJAC177CV3vbBuAeSeJC_HXJdMc02Eh6-PYNeRQ" + "AEnB2UppIxbWLaxAf-Zq0nNHkXR5XFS9Rn1w9xLfIe1rTeCyOKE1r-phL4cnLEVyscXJqaIIFhHgNJs2BQNxcMGr6ll-Fs9QLQ" ] }, "Body": "" } }, { - "ID": "b0e29fb8deab476f", + "ID": "4346587d156ca239", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -41548,13 +42177,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "e81d0b0afb20039a77f9775c2a152358/2882736391657692543;o=0" + "ad7dc136f10e1f6eddacd92b38ad53e6/13888874778255210287;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -41563,7 +42192,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -41574,9 +42203,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -41588,7 +42219,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:40 GMT" + "Wed, 25 Jul 2018 18:25:17 GMT" ], "Etag": [ "CAI=" @@ -41607,7 +42238,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220599000" + "1532543416000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -41616,16 +42247,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrcf9:4485,/bns/yw/borg/yw/bns/blobstore2/bitpusher/395.scotty,acatli15:443" + "xgiadaam10:4277,/bns/xi/borg/xi/bns/blobstore2/bitpusher/99.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=C081W7_kE8LBhQTk4ZewAw" + "eid=jMBYW7LEEuu4swbCgq_QBw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/395.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/99.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -41634,13 +42265,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/395:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/99:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -41655,17 +42286,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoB_5FtQd4d7VxKk4tFU6AEmxRIYMp3dXMN9jZsCC6ahLlFZRAHySdM00_xOXlc0BwVgB3aN8DGGmIO39Rb_n7nG1t5bqNViiUuo8JN3ii4RyjmLEI" + "AEnB2UqZeiwBOESI9cjgLJ3jeW78fUbL__YwQhluL10uf669w2iUl6VChmV4zk3zRWdyEovwG-AcV4TIMVIQLvDrLcSwkqzZyQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MzYuMzg1WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjQwLjYxN1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAiZW5jcnlwdGlvbiI6IHsKICAiZGVmYXVsdEttc0tleU5hbWUiOiAicHJvamVjdHMvZHVsY2V0LXBvcnQtNzYyL2xvY2F0aW9ucy91cy9rZXlSaW5ncy9nby1pbnRlZ3JhdGlvbi10ZXN0L2NyeXB0b0tleXMva2V5MiIKIH0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MTAuODAzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjE3LjcwOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAiZW5jcnlwdGlvbiI6IHsKICAiZGVmYXVsdEttc0tleU5hbWUiOiAicHJvamVjdHMvZHVsY2V0LXBvcnQtNzYyL2xvY2F0aW9ucy91cy9rZXlSaW5ncy9nby1pbnRlZ3JhdGlvbi10ZXN0L2NyeXB0b0tleXMva2V5MiIKIH0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "0045e42f95bfa051", + "ID": "61b69385ede693c9", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -41678,13 +42309,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fa6988bb926d3b54c2c5afca944c6ff2/4497870324856627358;o=0" + "bd967b8897e9a326a3d6caaa2ab3a059/3083375301176604748;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -41693,7 +42324,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -41704,9 +42335,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "private, max-age=0, must-revalidate, no-transform" @@ -41718,13 +42351,13 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:41 GMT" + "Wed, 25 Jul 2018 18:25:18 GMT" ], "Etag": [ "CAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:41 GMT" + "Wed, 25 Jul 2018 18:25:18 GMT" ], "Server": [ "UploadServer" @@ -41734,7 +42367,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220600000" + "1532543405000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -41743,16 +42376,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrd4:4404,/bns/yw/borg/yw/bns/blobstore2/bitpusher/198.scotty,acatli15:443" + "xgiadaay12:4070,/bns/xi/borg/xi/bns/blobstore2/bitpusher/95.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=DE81W7fpM4H1N7-RjPgH" + "eid=jcBYW_aPN6y0swbR3ovADQ" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/198.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/95.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -41761,13 +42394,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/198:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/95:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -41782,17 +42415,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrviBH6w3eQrxbrJbdI5roLf-Z43peyXKcawyB3_keVh2XotWdmVMQikTinEmBXWOml3Kfiuh2cPmUIz_CjV7Zw2gj-X2q1aZr5cw3h5HxLWEFYWwY" + "AEnB2UrCM0rGO0-v-HW86MmJdO6O_7YdEcemYLt_ZOju4yWuiOko5XFRpXY0FPUruJ3IW43X-wjqal5QsYgb2N86ym_Rf00PLw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MzYuMzg1WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjQwLjYxN1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAiZW5jcnlwdGlvbiI6IHsKICAiZGVmYXVsdEttc0tleU5hbWUiOiAicHJvamVjdHMvZHVsY2V0LXBvcnQtNzYyL2xvY2F0aW9ucy91cy9rZXlSaW5ncy9nby1pbnRlZ3JhdGlvbi10ZXN0L2NyeXB0b0tleXMva2V5MiIKIH0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MTAuODAzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjE3LjcwOVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQUk9IgogIH0KIF0sCiAiZW5jcnlwdGlvbiI6IHsKICAiZGVmYXVsdEttc0tleU5hbWUiOiAicHJvamVjdHMvZHVsY2V0LXBvcnQtNzYyL2xvY2F0aW9ucy91cy9rZXlSaW5ncy9nby1pbnRlZ3JhdGlvbi10ZXN0L2NyeXB0b0tleXMva2V5MiIKIH0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQUk9Igp9Cg==" } }, { - "ID": "70e1da18e7a00bb1", + "ID": "397134d388f8a1e0", "Request": { "Method": "PATCH", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -41811,13 +42444,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "66684a1fc181903effbfe0f689ace285/6113005353255445438;o=0" + "085d629202743c266b17aa0305c93024/10724338418536003944;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -41826,7 +42459,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -41837,9 +42470,11 @@ "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -41851,7 +42486,7 @@ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:42 GMT" + "Wed, 25 Jul 2018 18:25:19 GMT" ], "Etag": [ "CAM=" @@ -41870,7 +42505,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220601000" + "1532543418000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control" @@ -41879,16 +42514,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrdn3:4337,/bns/yw/borg/yw/bns/blobstore2/bitpusher/435.scotty,acatli15:443" + "xiiadcap15:4034,/bns/xi/borg/xi/bns/blobstore2/bitpusher/149.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=DU81W__0BsfUN9mJjPgB" + "eid=jsBYW8PCDcy8swbYrr3oAg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/435.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/149.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -41897,13 +42532,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/435:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/149:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -41918,17 +42553,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpBzKmsTzUSdbavCHYO8tudKiIyGhZNjT6FaVROMxhEEctBLfXYGyyuBX-FTxm2CKeBYbnJHQzGAbnrkD-j8OkJteesxUTH2CVK-I_o706IFNL9bzI" + "AEnB2UpGNJ8uvytPk-y8xhPBH4UUgKgtuPpdqRNUDRaDi6IyQDkUYNwZv537tzTONGVLB85K9uNsY7o1hskfdWGtj9rrLSEC8Q" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6MzYuMzg1WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjQyLjcxOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjMiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQU09Igp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MTAuODAzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjE5LjQ0NVoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjMiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTQiLAogICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgIH0sCiAgICJldGFnIjogIkNBTT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAib3duZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJyb2xlIjogIk9XTkVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAiZWRpdG9ycyIKICAgfSwKICAgImV0YWciOiAiQ0FNPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQU09IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKIH0sCiAibG9jYXRpb24iOiAiVVMiLAogInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAiZXRhZyI6ICJDQU09Igp9Cg==" } }, { - "ID": "5caf3c5dd237839c", + "ID": "188a609ebd8e15d2", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -41941,13 +42576,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "83cc19b85d39d5c67d62712e56a08e0f/7656082791928080093;o=0" + "23becb51702fe5e01307e4e8da4e1c71/18365300436400487045;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -41956,7 +42591,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0014?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0014?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -41967,9 +42602,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -41981,7 +42618,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:43 GMT" + "Wed, 25 Jul 2018 18:25:20 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -41997,7 +42634,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220586000" + "1532543403000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -42006,16 +42643,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrii75:4136,/bns/yw/borg/yw/bns/blobstore2/bitpusher/575.scotty,acatli15:443" + "xgiadabm11:4101,/bns/xi/borg/xi/bns/blobstore2/bitpusher/41.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=Dk81W4DIOIy7N5zWgrgN" + "eid=j8BYW_OAJ-yzswaYlLDIBg" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/575.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/41.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -42024,13 +42661,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/575:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/41:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBVVdDcWRTdDJLV0ZNb2J2X2hBTTVsbGlPQV9aQVNvVnFKckhLUTR3UnZRNTNkckh2azdXWXZERFR1V3d2U2tVZks0azJEbTMtbF9IYTRwd05tR0xGS2pVMVA2QmlWV01yVWFsYXY4QUp3OGxTOFFVN3VYeTFIdWl2eEtObFg5bzB1RUhCOEdnb3VZbW1HOHVBVHVpZ2ZuQllEXzlyTk5wTU9OVXA4dEh4UUtFXzYybExrdHlneHB5d3cwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWdweWxrZUFDQWNTVkJnYVM0emtvMGU2Z01TcmNmMWVieHdoZnNkU3BrY2JfTVdfN2xvdjgtV05iNGdLRFJqLXQtMG9NeE5BMUt6bk9taWgxTGVRbTFmdmRHaURJODdhaVZYV2dVZWQ4TUtuYjhsSk9VOE5INjFQRmZNMzJXU2hvYmJ6bEZGamYyU0JUQXRCTG15XzJJRW4zNUVmanpnVnJBSmI2Nk45RUhOUWZaRTdvV2Y4MWlpNE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -42045,17 +42682,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Up7H8NuvZUo6ZFGXnwQBBX5Vi-UGGeEGby8YC80LoXt2QfQ1E3TwRaLfCffl1hbw60SSAbr5HK1lUeZ_wX7pebf5DcVYtTjxUxNjNBh-VogZ_GQ5dk" + "AEnB2Uqo1YxFESwukQiPaaNsij_Y8YGS-A1HpZPN-LBxr9UkULUv0JYJDn3P3UXulpK2-s7UwK95Ao6dK4Rj_JJxzPU9YU4PpQ" ] }, "Body": "" } }, { - "ID": "09e2c95b43d436ab", + "ID": "2008c58a82bf99cd", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full", + "Method": "POST", + "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026predefinedAcl=authenticatedRead\u0026predefinedDefaultObjectAcl=publicRead\u0026project=dulcet-port-762", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -42064,17 +42701,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "60" + ], + "Content-Type": [ + "application/json" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "a908f397ddcb46462c7368f3d5ac308d/11621720944797183532;o=1" + "d3f1ef57aa73dc9b92f3a34880428199/7559800955010268321;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -42083,38 +42726,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b?alt=json\u0026predefinedAcl=authenticatedRead\u0026predefinedDefaultObjectAcl=publicRead\u0026project=dulcet-port-762" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "eyJuYW1lIjoiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1In0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "2952" + "1587" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:43 GMT" + "Wed, 25 Jul 2018 18:25:20 GMT" ], "Etag": [ - "CAw=" + "CAE=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:43 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -42124,25 +42772,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220603000" + "1532543420000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vraz190:4268,/bns/yw/borg/yw/bns/blobstore2/bitpusher/288.scotty,acatli15:443" + "xiiadcaz15:4214,/bns/xi/borg/xi/bns/blobstore2/bitpusher/56.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=D081W8nGG4XGhQT1vofYAg" + "eid=kMBYW-aiCa2yswaCrJ3IBA" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/288.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/56.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -42151,13 +42799,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/288:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/56:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWEdYV3VTR2RESGI3UjZIOE1WOEhIU204SEN4MkpOOXpJdXRSSFNqUXFkNW14cnRVaXJYWG1nd1RFUGxVbDlxbE9xZjVydnBVeElid3Z0Nl9BekRaVDl2T0VOLWZBYmlsb2JXUURiSjQ5cGw0azZORFJFUW1wcFNaMS1XMndMcThQZXM2ZWExd3Axc2JGWXVITTBtOHljaHlZWjl0azhvWmVyaW53Y1FUOUg4UW5Na2E5WjcwNUZTSEkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YlNub0Uzd3RNZFppYm9VN3Jmc1dtemdjemRFVUVUS1dOcDVrQUpxNDZBRV9XVlNRSXhCT0lDMERjcHAzOUowLUVrajRNOHNWX3RoU3IxNXVwV2I3RXE1MkstYUVDREozU25DLUhfWXM0Rmg2d0l6ZmJvQnIwX041ZWFjb0N6S0VCRHpPMXFNNjFwMENGZTAzNE0xZm56Ml9RM0RXR3FIVnFYcTBULTRMZmRwX0RZc2hqaXFzSW5NVTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -42172,156 +42820,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Urke2Ehi0gEOjUyMCPa5bdXfek_9vxnYgCOdQmE42yDCJw11w1yOCEKWbhHce-O-fjTH2B0h5WdEjuj24NfHQvYM2DNEhpnXTQm5pgtIF6H1B5XLKs" - ] - }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MTYuMzYzWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjQzLjUxN1oiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEyIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDQXc9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBdz0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQXc9IgogIH0KIF0sCiAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0F3PSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNBdz0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0F3PSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiB9LAogImxvY2F0aW9uIjogIlVTIiwKICJ2ZXJzaW9uaW5nIjogewogICJlbmFibGVkIjogZmFsc2UKIH0sCiAibGlmZWN5Y2xlIjogewogICJydWxlIjogWwogICB7CiAgICAiYWN0aW9uIjogewogICAgICJ0eXBlIjogIkRlbGV0ZSIKICAgIH0sCiAgICAiY29uZGl0aW9uIjogewogICAgICJhZ2UiOiAzMAogICAgfQogICB9CiAgXQogfSwKICJsYWJlbHMiOiB7CiAgImwxIjogInYyIiwKICAibmV3IjogIm5ldyIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBdz0iCn0K" - } - }, - { - "ID": "05180cbd256a8a72", - "Request": { - "Method": "GET", - "URL": "https://storage.googleapis.com/storage-library-test-bucket/Caf%C3%A9", - "Proto": "HTTP/1.1", - "Header": { - "Accept-Encoding": [ - "gzip" - ], - "Authorization": [ - "REDACTED" - ], - "User-Agent": [ - "Go-http-client/1.1" - ], - "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" - ], - "X-Cloud-Trace-Context": [ - "10f82ece6f4b035efd0b8a995bd57964/3870836460309629149;o=1" - ], - "X-Forwarded-For": [ - "::1" - ], - "X-Forwarded-Host": [ - "storage.googleapis.com" - ], - "X-Forwarded-Proto": [ - "https" - ], - "X-Forwarded-Url": [ - "https://storage.googleapis.com/storage-library-test-bucket/Caf%C3%A9" - ] - }, - "Body": "" - }, - "Response": { - "StatusCode": 200, - "Proto": "HTTP/1.1", - "Header": { - "Accept-Ranges": [ - "bytes" - ], - "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "public, max-age=3600" - ], - "Content-Length": [ - "20" - ], - "Content-Type": [ - "text/plain" - ], - "Date": [ - "Thu, 28 Jun 2018 21:11:43 GMT" - ], - "Etag": [ - "\"ade43306cb39336d630e101af5fb51b4\"" - ], - "Expires": [ - "Thu, 28 Jun 2018 22:11:43 GMT" - ], - "Last-Modified": [ - "Fri, 24 Mar 2017 20:04:38 GMT" - ], - "Server": [ - "UploadServer" - ], - "X-Goog-Generation": [ - "1490385878535828" - ], - "X-Goog-Hash": [ - "crc32c=fN3yZg==", - "md5=reQzBss5M21jDhAa9ftRtA==" - ], - "X-Goog-Metageneration": [ - "2" - ], - "X-Goog-Storage-Class": [ - "MULTI_REGIONAL" - ], - "X-Goog-Stored-Content-Encoding": [ - "identity" - ], - "X-Goog-Stored-Content-Length": [ - "20" - ], - "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/1,/bns/xg/borg/xg/bns/blobstore2/bitpusher/67.scotty,aclgal16:443" - ], - "X-Google-Dos-Service-Trace": [ - "main:apps-upload-cloud-storage-unified" - ], - "X-Google-Gfe-Backend-Request-Info": [ - "eid=D081W6izKO-5_QSkq6PACQ" - ], - "X-Google-Gfe-Cloud-Project-Number": [ - "149776848335" - ], - "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/67.scotty,aclgal16:443" - ], - "X-Google-Gfe-Response-Code-Details-Trace": [ - "response_code_set_by_backend" - ], - "X-Google-Gfe-Service-Trace": [ - "bitpusher-cloud-storage" - ], - "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/67:caf3" - ], - "X-Google-Service": [ - "bitpusher-cloud-storage" - ], - "X-Google-Shellfish-Status": [ - "CA0gBEBG" - ], - "X-Google-Storage-Location": [ - "US" - ], - "X-Guploader-Customer": [ - "cloud-storage" - ], - "X-Guploader-Request-Result": [ - "success" - ], - "X-Guploader-Upload-Result": [ - "success" - ], - "X-Guploader-Uploadid": [ - "AEnB2UoIga7kkwZmScwCxNNTyIpUoXivZ13tCdPbTshzlreAJsMGonpNiIK_FuHEiaTOIkavHPvz7RhHhVc3mWQGWm_YbSHPGg" + "AEnB2Ur6JmJ6EjcJ_T5vorvfCES1OXd_6kUJxOC3jy_Pl3v-FrjXxsynf7JN5T_F-tYLJ_ilkL2M2tRDlOgpbbr5yeARm_NHsw" ] }, - "Body": "Tm9ybWFsaXphdGlvbiBGb3JtIEM=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MjAuNjgyWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjIwLjY4MloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9hbGxBdXRoZW50aWNhdGVkVXNlcnMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9hY2wvYWxsQXV0aGVudGljYXRlZFVzZXJzIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogICAiZW50aXR5IjogImFsbEF1dGhlbnRpY2F0ZWRVc2VycyIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJhbGxVc2VycyIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogfSwKICJsb2NhdGlvbiI6ICJVUyIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBRT0iCn0K" } }, { - "ID": "5f7eebff3ddfa531", + "ID": "c341eca080d71ae4", "Request": { "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0015?alt=json\u0026projection=full", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015?alt=json\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -42334,13 +42843,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "36ee8e5a99ebc6e83381d98a814e41e8/4678263241324005869;o=1" + "c2751749e9a43a37a616e967de8a501f/15200762972874751422;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -42349,7 +42858,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0015?alt=json\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015?alt=json\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -42358,26 +42867,31 @@ "Body": "" }, "Response": { - "StatusCode": 404, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "private, max-age=0, must-revalidate, no-transform" ], "Content-Length": [ - "12271" + "1587" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:43 GMT" + "Wed, 25 Jul 2018 18:25:21 GMT" + ], + "Etag": [ + "CAE=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:43 GMT" + "Wed, 25 Jul 2018 18:25:21 GMT" ], "Server": [ "UploadServer" @@ -42387,7 +42901,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220603000" + "1532543420000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" @@ -42396,16 +42910,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrna13:4488,/bns/yw/borg/yw/bns/blobstore2/bitpusher/450.scotty,acatli15:443" + "xgiadaca8:4102,/bns/xi/borg/xi/bns/blobstore2/bitpusher/16.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=D081W9eDKcSIN-P5taAD" + "eid=kMBYW9vENY-wswbzhrDoBw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/450.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/16.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -42414,13 +42928,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/450:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/16:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWEdYV3VTR2RESGI3UjZIOE1WOEhIU204SEN4MkpOOXpJdXRSSFNqUXFkNW14cnRVaXJYWG1nd1RFUGxVbDlxbE9xZjVydnBVeElid3Z0Nl9BekRaVDl2T0VOLWZBYmlsb2JXUURiSjQ5cGw0azZORFJFUW1wcFNaMS1XMndMcThQZXM2ZWExd3Axc2JGWXVITTBtOHljaHlZWjl0azhvWmVyaW53Y1FUOUg4UW5Na2E5WjcwNUZTSEkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YlNub0Uzd3RNZFppYm9VN3Jmc1dtemdjemRFVUVUS1dOcDVrQUpxNDZBRV9XVlNRSXhCT0lDMERjcHAzOUowLUVrajRNOHNWX3RoU3IxNXVwV2I3RXE1MkstYUVDREozU25DLUhfWXM0Rmg2d0l6ZmJvQnIwX041ZWFjb0N6S0VCRHpPMXFNNjFwMENGZTAzNE0xZm56Ml9RM0RXR3FIVnFYcTBULTRMZmRwX0RZc2hqaXFzSW5NVTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -42429,23 +42943,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrBntH1cCTXRHeLtJyhcrP0CaesAsffft-_NYJ2XyivVT_Y5YklJcudNIj5s3BVtXCjCnq7cjGzsYwtb0C9GApHdFDNLU5Ri5bW_NxZgfQXt73SB9E" + "AEnB2UoDAyb13coLcsrWGKMOdNg98t3ToF5GWSJ0RdLLckgVhVQk25lFuiMXn7uIw8s21j0UduvxRgnfUDrqh3hIVMPyKSPU0g" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkJVQ0tFVF9OT1RfRk9VTkQ6IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTVcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5HZXRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldEJ1Y2tldC5qYXZhOjEwMilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkdldEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0QnVja2V0LmphdmE6MzEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLmdldChCdWNrZXRzRGVsZWdhdG9yLmphdmE6NzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBCVUNLRVRfTk9UX0ZPVU5EOiBObyBzdWNoIGJ1Y2tldDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDE1XG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1OT1RfRk9VTkQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QlVDS0VUX05PVF9GT1VORDogQlVDS0VUX05PVF9GT1VORDogTm8gc3VjaCBidWNrZXQ6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkdldEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0QnVja2V0LmphdmE6MTAyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YTozMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZ2V0KEJ1Y2tldHNEZWxlZ2F0b3IuamF2YTo3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTVcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPW5vdEZvdW5kLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5OT1RfRk9VTkQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpCVUNLRVRfTk9UX0ZPVU5EOiBCVUNLRVRfTk9UX0ZPVU5EOiBObyBzdWNoIGJ1Y2tldDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDE1XG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YToxMDIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5HZXRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldEJ1Y2tldC5qYXZhOjMxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5nZXQoQnVja2V0c0RlbGVnYXRvci5qYXZhOjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQlVDS0VUX05PVF9GT1VORDogTm8gc3VjaCBidWNrZXQ6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLm5hbWUsIG1lc3NhZ2U9bnVsbCwgdW5uYW1lZEFyZ3VtZW50cz1bXX0sIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZV9pZC5uYW1lLCBtZXNzYWdlPU5vdCBGb3VuZCwgcmVhc29uPW5vdEZvdW5kLCBycGNDb2RlPTQwNH0gTm90IEZvdW5kOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QlVDS0VUX05PVF9GT1VORDogQlVDS0VUX05PVF9GT1VORDogTm8gc3VjaCBidWNrZXQ6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkdldEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0QnVja2V0LmphdmE6MTAyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YTozMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZ2V0KEJ1Y2tldHNEZWxlZ2F0b3IuamF2YTo3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTVcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDQsCiAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIgogfQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MjAuNjgyWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjIwLjY4MloiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9hbGxBdXRoZW50aWNhdGVkVXNlcnMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9hY2wvYWxsQXV0aGVudGljYXRlZFVzZXJzIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogICAiZW50aXR5IjogImFsbEF1dGhlbnRpY2F0ZWRVc2VycyIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJkZWZhdWx0T2JqZWN0QWNsIjogWwogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJhbGxVc2VycyIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJldGFnIjogIkNBRT0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogfSwKICJsb2NhdGlvbiI6ICJVUyIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBRT0iCn0K" } }, { - "ID": "c43f1bd50fa61a57", + "ID": "79772ad8914752cf", "Request": { - "Method": "POST", - "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "Method": "PATCH", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015?alt=json\u0026predefinedAcl=private\u0026predefinedDefaultObjectAcl=authenticatedRead\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -42454,20 +42968,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "33" + ], "Content-Type": [ - "multipart/related; boundary=2bc79de2a79c362dad599d516755d389d0bd86e52f94845621fe06b300ae" + "application/json" ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "7e85676cff9e30b80bba41052c188a1f/5413632428300454909;o=1" + "359ed29bf1fa5087cb5818b04ec49255/4394982025114468058;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -42476,35 +42993,37 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015?alt=json\u0026predefinedAcl=private\u0026predefinedDefaultObjectAcl=authenticatedRead\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "LS0yYmM3OWRlMmE3OWMzNjJkYWQ1OTlkNTE2NzU1ZDM4OWQwYmQ4NmU1MmY5NDg0NTYyMWZlMDZiMzAwYWUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsIm5hbWUiOiJ6ZXJvIn0KDQotLTJiYzc5ZGUyYTc5YzM2MmRhZDU5OWQ1MTY3NTVkMzg5ZDBiZDg2ZTUyZjk0ODQ1NjIxZmUwNmIzMDBhZQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCg0KLS0yYmM3OWRlMmE3OWMzNjJkYWQ1OTlkNTE2NzU1ZDM4OWQwYmQ4NmU1MmY5NDg0NTYyMWZlMDZiMzAwYWUtLQ0K" + "Body": "eyJhY2wiOltdLCJkZWZhdWx0T2JqZWN0QWNsIjpbXX0K" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "3560" + "1191" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:43 GMT" + "Wed, 25 Jul 2018 18:25:22 GMT" ], "Etag": [ - "CIfKj+2i99sCEAE=" + "CAI=" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -42520,28 +43039,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220603000" + "1532543421000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" + "https://www.googleapis.com/auth/devstorage.full_control" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrlf10:4457,/bns/yw/borg/yw/bns/blobstore2/bitpusher/456.scotty,acatli15:443" + "xgiadaba15:4126,/bns/xi/borg/xi/bns/blobstore2/bitpusher/28.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=D081W_2NL8SGhAS92oPIAw" - ], - "X-Google-Gfe-Cloud-Project-Number": [ - "36639933145" + "eid=kcBYW7mFDoG2swaN3piQDw" ], "X-Google-Gfe-Request-Trace": [ - "acatli15:443,/bns/yw/borg/yw/bns/blobstore2/bitpusher/456.scotty,acatli15:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/28.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -42550,19 +43066,19 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yw/borg/yw/bns/blobstore2/bitpusher/456:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/28:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEdYV3VTR2RESGI3UjZIOE1WOEhIU204SEN4MkpOOXpJdXRSSFNqUXFkNW14cnRVaXJYWG1nd1RFUGxVbDlxbE9xZjVydnBVeElid3Z0Nl9BekRaVDl2T0VOLWZBYmlsb2JXUURiSjQ5cGw0azZORFJFUW1wcFNaMS1XMndMcThQZXM2ZWExd3Axc2JGWXVITTBtOHljaHlZWjl0azhvWmVyaW53Y1FUOUg4UW5Na2E5WjcwNUZTSEkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YlNub0Uzd3RNZFppYm9VN3Jmc1dtemdjemRFVUVUS1dOcDVrQUpxNDZBRV9XVlNRSXhCT0lDMERjcHAzOUowLUVrajRNOHNWX3RoU3IxNXVwV2I3RXE1MkstYUVDREozU25DLUhfWXM0Rmg2d0l6ZmJvQnIwX041ZWFjb0N6S0VCRHpPMXFNNjFwMENGZTAzNE0xZm56Ml9RM0RXR3FIVnFYcTBULTRMZmRwX0RZc2hqaXFzSW5NVTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" ], "X-Guploader-Customer": [ - "apiary_cloudstorage_single_post_uploads" + "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ "success" @@ -42571,17 +43087,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uoyzk0DF9SBps-iwu1yUs4n7G014Hz9ZkBTIhigAphBuZAry7k2vpmxZrLqsEwMyZmoLZqcB8nyzTj9j3Bo637tbYw6-AjWanp6XF_JG-InKHp99bI" + "AEnB2Ur9HjBtrpHRqDHTi6M18v5vg5FvD42ZdjAjDDf9T9UTA-vuXGCGiK1GFcTdwXG87Ib_v9hLvK5P3-TRJ6V5Ao2eV4j6Nw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC96ZXJvLzE1MzAyMjAzMDM4NjkxOTEiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby96ZXJvIiwKICJuYW1lIjogInplcm8iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMDIyMDMwMzg2OTE5MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMTo0My44NjhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTE6NDMuODY4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjExOjQzLjg2OFoiLAogInNpemUiOiAiMCIsCiAibWQ1SGFzaCI6ICIxQjJNMlk4QXNnVHBnQW1ZN1BoQ2ZnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vemVybz9nZW5lcmF0aW9uPTE1MzAyMjAzMDM4NjkxOTEmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3plcm8vMTUzMDIyMDMwMzg2OTE5MS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vemVyby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJvYmplY3QiOiAiemVybyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAzMDM4NjkxOTEiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNJZktqKzJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvemVyby8xNTMwMjIwMzAzODY5MTkxL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vemVyby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInplcm8iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMzAzODY5MTkxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNJZktqKzJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvemVyby8xNTMwMjIwMzAzODY5MTkxL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vemVyby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInplcm8iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMzAzODY5MTkxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDSWZLaisyaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3plcm8vMTUzMDIyMDMwMzg2OTE5MS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby96ZXJvL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAib2JqZWN0IjogInplcm8iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMzAzODY5MTkxIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDSWZLaisyaTk5c0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiQUFBQUFBPT0iLAogImV0YWciOiAiQ0lmS2orMmk5OXNDRUFFPSIKfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNSIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNSIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MjAuNjgyWiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjIyLjQxOFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogImFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNSIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0FJPSIKICB9CiBdLAogImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiZW50aXR5IjogImFsbEF1dGhlbnRpY2F0ZWRVc2VycyIsCiAgICJyb2xlIjogIlJFQURFUiIsCiAgICJldGFnIjogIkNBST0iCiAgfQogXSwKICJvd25lciI6IHsKICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogfSwKICJsb2NhdGlvbiI6ICJVUyIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBST0iCn0K" } }, { - "ID": "94a3065edb567ff7", + "ID": "1b04023c9360deb6", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0015/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false", + "Method": "POST", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o?alt=json\u0026predefinedAcl=authenticatedRead\u0026projection=full\u0026uploadType=multipart", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -42590,17 +43106,20 @@ "Authorization": [ "REDACTED" ], + "Content-Type": [ + "multipart/related; boundary=69868ee313f381d11a8e4a53fe8d67f86ee4a09f195fd94dc415fbb8d49a" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5f5a2f07064707cd37c7634ef43f8d3d/6221340679996574733;o=1" + "d5463f145e9bcb3d0983a3f9de076e8d/8179574970237976168;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -42609,35 +43128,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0015/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o?alt=json\u0026predefinedAcl=authenticatedRead\u0026projection=full\u0026uploadType=multipart" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "LS02OTg2OGVlMzEzZjM4MWQxMWE4ZTRhNTNmZThkNjdmODZlZTRhMDlmMTk1ZmQ5NGRjNDE1ZmJiOGQ0OWENCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNSIsIm5hbWUiOiJwcml2YXRlIn0KDQotLTY5ODY4ZWUzMTNmMzgxZDExYThlNGE1M2ZlOGQ2N2Y4NmVlNGEwOWYxOTVmZDk0ZGM0MTVmYmI4ZDQ5YQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCmhlbGxvDQotLTY5ODY4ZWUzMTNmMzgxZDExYThlNGE1M2ZlOGQ2N2Y4NmVlNGEwOWYxOTVmZDk0ZGM0MTVmYmI4ZDQ5YS0tDQo=" }, "Response": { - "StatusCode": 404, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "12287" + "2274" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:43 GMT" + "Wed, 25 Jul 2018 18:25:23 GMT" + ], + "Etag": [ + "CNy2yIPwutwCEAE=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:43 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -42647,25 +43174,28 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220603000" + "1532543422000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrv6:4082,/bns/yv/borg/yv/bns/blobstore2/bitpusher/501.scotty,yabq4-v6:443" + "xiiadcbl14:4360,/bns/xi/borg/xi/bns/blobstore2/bitpusher/93.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=D081W6StL4GJggS6haTgCw" + "eid=ksBYW8fAJam0swaY5YzYCw" + ], + "X-Google-Gfe-Cloud-Project-Number": [ + "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/501.scotty,yabq4-v6:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/93.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -42674,38 +43204,38 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/501:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/93:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWEdYV3VTR2RESGI3UjZIOE1WOEhIU204SEN4MkpOOXpJdXRSSFNqUXFkNW14cnRVaXJYWG1nd1RFUGxVbDlxbE9xZjVydnBVeElid3Z0Nl9BekRaVDl2T0VOLWZBYmlsb2JXUURiSjQ5cGw0azZORFJFUW1wcFNaMS1XMndMcThQZXM2ZWExd3Axc2JGWXVITTBtOHljaHlZWjl0azhvWmVyaW53Y1FUOUg4UW5Na2E5WjcwNUZTSEkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YlNub0Uzd3RNZFppYm9VN3Jmc1dtemdjemRFVUVUS1dOcDVrQUpxNDZBRV9XVlNRSXhCT0lDMERjcHAzOUowLUVrajRNOHNWX3RoU3IxNXVwV2I3RXE1MkstYUVDREozU25DLUhfWXM0Rmg2d0l6ZmJvQnIwX041ZWFjb0N6S0VCRHpPMXFNNjFwMENGZTAzNE0xZm56Ml9RM0RXR3FIVnFYcTBULTRMZmRwX0RZc2hqaXFzSW5NVTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" ], "X-Guploader-Customer": [ - "apiary_cloudstorage_metadata" + "apiary_cloudstorage_single_post_uploads" ], "X-Guploader-Request-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Upload-Result": [ - "agent_rejected" + "success" ], "X-Guploader-Uploadid": [ - "AEnB2UomILTgAgwPo3qpH_zk--6cVZWm0RqGNTELpNt-JvKWd1Vd0gBUQdpzUOd7nYZVWA1IOO2TVg-sz4pbitGbRjS94Xr9yV3tDbSaMQfCA4W353Stu1s" + "AEnB2UoGOLF3VZKgV1c3Cdh4XICPggP4RdAToqP4KUPO4mN_WKPS9jpiD2spZmk4kYSUwq5vv_N1CU4S9tSAcU9veuM7KKAoBg" ] }, - "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkJVQ0tFVF9OT1RfRk9VTkQ6IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTVcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5MaXN0T2JqZWN0cy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdE9iamVjdHMuamF2YToxNjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5MaXN0T2JqZWN0cy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdE9iamVjdHMuamF2YTozOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IubGlzdChPYmplY3RzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBCVUNLRVRfTk9UX0ZPVU5EOiBObyBzdWNoIGJ1Y2tldDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDE1XG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1OT1RfRk9VTkQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QlVDS0VUX05PVF9GT1VORDogQlVDS0VUX05PVF9GT1VORDogTm8gc3VjaCBidWNrZXQ6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkxpc3RPYmplY3RzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0T2JqZWN0cy5qYXZhOjE2MClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkxpc3RPYmplY3RzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0T2JqZWN0cy5qYXZhOjM4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5saXN0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTVcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPW5vdEZvdW5kLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5OT1RfRk9VTkQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpCVUNLRVRfTk9UX0ZPVU5EOiBCVUNLRVRfTk9UX0ZPVU5EOiBObyBzdWNoIGJ1Y2tldDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDE1XG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuTGlzdE9iamVjdHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RPYmplY3RzLmphdmE6MTYwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuTGlzdE9iamVjdHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RPYmplY3RzLmphdmE6MzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmxpc3QoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQlVDS0VUX05PVF9GT1VORDogTm8gc3VjaCBidWNrZXQ6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxNVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LmJ1Y2tldCwgbWVzc2FnZT1udWxsLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249ZW50aXR5LmJ1Y2tldCwgbWVzc2FnZT1Ob3QgRm91bmQsIHJlYXNvbj1ub3RGb3VuZCwgcnBjQ29kZT00MDR9IE5vdCBGb3VuZDogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkJVQ0tFVF9OT1RfRk9VTkQ6IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTVcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5MaXN0T2JqZWN0cy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdE9iamVjdHMuamF2YToxNjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5MaXN0T2JqZWN0cy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdE9iamVjdHMuamF2YTozOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IubGlzdChPYmplY3RzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBCVUNLRVRfTk9UX0ZPVU5EOiBObyBzdWNoIGJ1Y2tldDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDE1XG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDA0LAogICJtZXNzYWdlIjogIk5vdCBGb3VuZCIKIH0KfQo=" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9wcml2YXRlLzE1MzI1NDMxMjI5Mzg3MTYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUvby9wcml2YXRlIiwKICJuYW1lIjogInByaXZhdGUiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzEyMjkzODcxNiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNToyMi45MzhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MjIuOTM4WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjIyLjkzOFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1L28vcHJpdmF0ZT9nZW5lcmF0aW9uPTE1MzI1NDMxMjI5Mzg3MTYmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1L3ByaXZhdGUvMTUzMjU0MzEyMjkzODcxNi91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUvby9wcml2YXRlL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogICAib2JqZWN0IjogInByaXZhdGUiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTIyOTM4NzE2IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTnkyeUlQd3V0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1L3ByaXZhdGUvMTUzMjU0MzEyMjkzODcxNi9hbGxBdXRoZW50aWNhdGVkVXNlcnMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9vL3ByaXZhdGUvYWNsL2FsbEF1dGhlbnRpY2F0ZWRVc2VycyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1IiwKICAgIm9iamVjdCI6ICJwcml2YXRlIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzEyMjkzODcxNiIsCiAgICJlbnRpdHkiOiAiYWxsQXV0aGVudGljYXRlZFVzZXJzIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImV0YWciOiAiQ055MnlJUHd1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIm1uRzdUQT09IiwKICJldGFnIjogIkNOeTJ5SVB3dXR3Q0VBRT0iCn0K" } }, { - "ID": "a51e4f8fd1aa155e", + "ID": "e6e85ed841a4648f", "Request": { - "Method": "GET", - "URL": "https://storage.googleapis.com/storage-library-test-bucket/Cafe%CC%81", + "Method": "PATCH", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/private?alt=json\u0026predefinedAcl=private\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -42714,263 +43244,117 @@ "Authorization": [ "REDACTED" ], - "User-Agent": [ - "Go-http-client/1.1" - ], - "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" - ], - "X-Cloud-Trace-Context": [ - "5882c263f815f3fa0d532302e1d78edb/7836474608900607788;o=1" - ], - "X-Forwarded-For": [ - "::1" - ], - "X-Forwarded-Host": [ - "storage.googleapis.com" - ], - "X-Forwarded-Proto": [ - "https" - ], - "X-Forwarded-Url": [ - "https://storage.googleapis.com/storage-library-test-bucket/Cafe%CC%81" - ] - }, - "Body": "" - }, - "Response": { - "StatusCode": 200, - "Proto": "HTTP/1.1", - "Header": { - "Accept-Ranges": [ - "bytes" - ], - "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" - ], - "Cache-Control": [ - "public, max-age=3600" - ], "Content-Length": [ - "20" + "62" ], "Content-Type": [ - "text/plain" - ], - "Date": [ - "Thu, 28 Jun 2018 21:11:43 GMT" - ], - "Etag": [ - "\"df597679bac7c6150429ad80a1a05680\"" - ], - "Expires": [ - "Thu, 28 Jun 2018 22:11:43 GMT" - ], - "Last-Modified": [ - "Fri, 24 Mar 2017 20:04:37 GMT" - ], - "Server": [ - "UploadServer" - ], - "X-Goog-Generation": [ - "1490385877705600" - ], - "X-Goog-Hash": [ - "crc32c=qBeWjQ==", - "md5=31l2ebrHxhUEKa2AoaBWgA==" - ], - "X-Goog-Metageneration": [ - "2" - ], - "X-Goog-Storage-Class": [ - "MULTI_REGIONAL" - ], - "X-Goog-Stored-Content-Encoding": [ - "identity" - ], - "X-Goog-Stored-Content-Length": [ - "20" - ], - "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/3,/bns/xg/borg/xg/bns/blobstore2/bitpusher/126.scotty,aclgal16:443" - ], - "X-Google-Dos-Service-Trace": [ - "main:apps-upload-cloud-storage-unified" - ], - "X-Google-Gfe-Backend-Request-Info": [ - "eid=D081W9GgL46y_QTR64OQBw" - ], - "X-Google-Gfe-Cloud-Project-Number": [ - "149776848335" - ], - "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/126.scotty,aclgal16:443" - ], - "X-Google-Gfe-Response-Code-Details-Trace": [ - "response_code_set_by_backend" - ], - "X-Google-Gfe-Service-Trace": [ - "bitpusher-cloud-storage" - ], - "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/126:caf3" - ], - "X-Google-Service": [ - "bitpusher-cloud-storage" - ], - "X-Google-Shellfish-Status": [ - "CA0gBEBG" - ], - "X-Google-Storage-Location": [ - "US" - ], - "X-Guploader-Customer": [ - "cloud-storage" - ], - "X-Guploader-Request-Result": [ - "success" - ], - "X-Guploader-Upload-Result": [ - "success" - ], - "X-Guploader-Uploadid": [ - "AEnB2Uo7uK4P-lh9sM5z2ufgHpSKo6MTssEOrLpV8wrY55uZfq7GmxX21MpEQp8VhexqnenqSbZXqviNviKbM-w71IA-hoAdAw" - ] - }, - "Body": "Tm9ybWFsaXphdGlvbiBGb3JtIEQ=" - } - }, - { - "ID": "1d928209553b71d8", - "Request": { - "Method": "GET", - "URL": "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/zero", - "Proto": "HTTP/1.1", - "Header": { - "Accept-Encoding": [ - "gzip" - ], - "Authorization": [ - "REDACTED" + "application/json" ], "User-Agent": [ - "Go-http-client/1.1" + "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "2303236367f5366b2f537746157615f7/9379553147068027468;o=1" + "15be655323443be0a12b718130ac4800/15820538091892211589;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ - "storage.googleapis.com" + "www.googleapis.com" ], "X-Forwarded-Proto": [ "https" ], "X-Forwarded-Url": [ - "https://storage.googleapis.com/go-integration-test-20180628-76155232935339-0000/zero" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/private?alt=json\u0026predefinedAcl=private\u0026projection=full" + ], + "X-Goog-Api-Client": [ + "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUifQo=" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { - "Accept-Ranges": [ - "bytes" - ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "0" + "1757" ], "Content-Type": [ - "text/plain; charset=utf-8" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:44 GMT" + "Wed, 25 Jul 2018 18:25:23 GMT" ], "Etag": [ - "\"d41d8cd98f00b204e9800998ecf8427e\"" + "CNy2yIPwutwCEAI=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:44 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" ], - "Last-Modified": [ - "Thu, 28 Jun 2018 21:11:43 GMT" + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" ], - "X-Goog-Expiration": [ - "Sat, 28 Jul 2018 21:11:43 GMT" - ], - "X-Goog-Generation": [ - "1530220303869191" - ], - "X-Goog-Hash": [ - "crc32c=AAAAAA==", - "md5=1B2M2Y8AsgTpgAmY7PhCfg==" - ], - "X-Goog-Metageneration": [ - "1" + "Vary": [ + "Origin", + "X-Origin" ], - "X-Goog-Storage-Class": [ - "STANDARD" + "X-Google-Apiary-Auth-Expires": [ + "1532543421000" ], - "X-Goog-Stored-Content-Encoding": [ - "identity" + "X-Google-Apiary-Auth-Scopes": [ + "https://www.googleapis.com/auth/devstorage.full_control" ], - "X-Goog-Stored-Content-Length": [ - "0" + "X-Google-Apiary-Auth-User": [ + "998958384336" ], "X-Google-Backends": [ - "/bns/xg/borg/xg/bns/cloud-storage/prod-cloud-storage-frontend.frontend/41,/bns/xg/borg/xg/bns/blobstore2/bitpusher/132.scotty,aclgal16:443" - ], - "X-Google-Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "xgiadabg14:4408,/bns/xi/borg/xi/bns/blobstore2/bitpusher/52.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=D081W5_IO-6x_QSbt4LwBg" - ], - "X-Google-Gfe-Cloud-Project-Number": [ - "36639933145" + "eid=k8BYW72EA8Wxswbvo6bYDA" ], "X-Google-Gfe-Request-Trace": [ - "aclgal16:443,/bns/xg/borg/xg/bns/blobstore2/bitpusher/132.scotty,aclgal16:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/52.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" ], "X-Google-Gfe-Service-Trace": [ - "bitpusher-cloud-storage" + "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/xg/borg/xg/bns/blobstore2/bitpusher/132:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/52:caf3" ], "X-Google-Service": [ - "bitpusher-cloud-storage" + "bitpusher-gcs-apiary" + ], + "X-Google-Session-Info": [ + "CNCJvbSJHRoCGAYoATpxChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4CtK4wESxgF5YTI5LmMuRW93QkF3YlNub0Uzd3RNZFppYm9VN3Jmc1dtemdjemRFVUVUS1dOcDVrQUpxNDZBRV9XVlNRSXhCT0lDMERjcHAzOUowLUVrajRNOHNWX3RoU3IxNXVwV2I3RXE1MkstYUVDREozU25DLUhfWXM0Rmg2d0l6ZmJvQnIwX041ZWFjb0N6S0VCRHpPMXFNNjFwMENGZTAzNE0xZm56Ml9RM0RXR3FIVnFYcTBULTRMZmRwX0RZc2hqaXFzSW5NVTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" ], - "X-Google-Storage-Location": [ - "US" - ], "X-Guploader-Customer": [ - "cloud-storage" + "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ "success" @@ -42979,17 +43363,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoraO6dMdtdulcNnw0WQQz1WipozkujHGICzDQJkQEsRf8505hb9E1bfr2pZwvzOjb78SWhKA88C147GbE8Yv7333_C2g" + "AEnB2UqxEq91kgH2O4oZuNy-Ml6rN9wtOdeh8Yya5cSwK2bQuFTMBUasebWTioqFl07IwFI72CPsFwq5bVffPI7SKkpinEoR3Q" ] }, - "Body": "" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9wcml2YXRlLzE1MzI1NDMxMjI5Mzg3MTYiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUvby9wcml2YXRlIiwKICJuYW1lIjogInByaXZhdGUiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzEyMjkzODcxNiIsCiAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNToyMi45MzhaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MjMuMTQwWiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjIyLjkzOFoiLAogInNpemUiOiAiNSIsCiAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1L28vcHJpdmF0ZT9nZW5lcmF0aW9uPTE1MzI1NDMxMjI5Mzg3MTYmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1L3ByaXZhdGUvMTUzMjU0MzEyMjkzODcxNi91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUvby9wcml2YXRlL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogICAib2JqZWN0IjogInByaXZhdGUiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTIyOTM4NzE2IiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDTnkyeUlQd3V0d0NFQUk9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAibW5HN1RBPT0iLAogImV0YWciOiAiQ055MnlJUHd1dHdDRUFJPSIKfQo=" } }, { - "ID": "e33713414f77589a", + "ID": "ef74290cf254b171", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/zero?alt=json", + "Method": "POST", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/private/rewriteTo/b/go-integration-test-20180725-66174009628628-0015/o/dst?alt=json\u0026destinationPredefinedAcl=publicRead\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -42998,17 +43382,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "3" + ], + "Content-Type": [ + "application/json" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9852675efe12879bbe9e39edf341e33c/10186978828570842203;o=1" + "21e009860d3a8bda89c8dc2aaa962d20/5015037511023853730;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -43017,32 +43407,34 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/zero?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/private/rewriteTo/b/go-integration-test-20180725-66174009628628-0015/o/dst?alt=json\u0026destinationPredefinedAcl=publicRead\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "e30K" }, "Response": { - "StatusCode": 204, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "0" + "2358" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:44 GMT" + "Wed, 25 Jul 2018 18:25:23 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -43058,25 +43450,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220603000" + "1532543423000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrn2:4338,/bns/yv/borg/yv/bns/blobstore2/bitpusher/375.scotty,yabq4-v6:443" + "xiiadcaa2:4364,/bns/xi/borg/xi/bns/blobstore2/bitpusher/138.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=EE81W5PRApSCggTOibPoAg" + "eid=k8BYW_7vD8m8swae9r34Ag" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/375.scotty,yabq4-v6:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/138.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -43085,13 +43477,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/375:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/138:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEdYV3VTR2RESGI3UjZIOE1WOEhIU204SEN4MkpOOXpJdXRSSFNqUXFkNW14cnRVaXJYWG1nd1RFUGxVbDlxbE9xZjVydnBVeElid3Z0Nl9BekRaVDl2T0VOLWZBYmlsb2JXUURiSjQ5cGw0azZORFJFUW1wcFNaMS1XMndMcThQZXM2ZWExd3Axc2JGWXVITTBtOHljaHlZWjl0azhvWmVyaW53Y1FUOUg4UW5Na2E5WjcwNUZTSEkwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YlNub0Uzd3RNZFppYm9VN3Jmc1dtemdjemRFVUVUS1dOcDVrQUpxNDZBRV9XVlNRSXhCT0lDMERjcHAzOUowLUVrajRNOHNWX3RoU3IxNXVwV2I3RXE1MkstYUVDREozU25DLUhfWXM0Rmg2d0l6ZmJvQnIwX041ZWFjb0N6S0VCRHpPMXFNNjFwMENGZTAzNE0xZm56Ml9RM0RXR3FIVnFYcTBULTRMZmRwX0RZc2hqaXFzSW5NVTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -43106,17 +43498,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqmBdJ5ddrlefVHZ0yOGkiK-95lMEKR8ukUhVT69UAHZ-KAiftKS1pDWokMBvjU6KawImME2aHOod0ZiC-8T4nomvchCopph2pZzIkEFP7EGEbikss" + "AEnB2UqvuKOyqPufWdsHcVUeE4o-dkFcXfBwxc3BzbwWkoHAhYGQ18vWl1qro6nRXtGc-cA0tUPpuj8q2AS_BJLB1vYhz2yKHA" ] }, - "Body": "" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNyZXdyaXRlUmVzcG9uc2UiLAogInRvdGFsQnl0ZXNSZXdyaXR0ZW4iOiAiNSIsCiAib2JqZWN0U2l6ZSI6ICI1IiwKICJkb25lIjogdHJ1ZSwKICJyZXNvdXJjZSI6IHsKICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9kc3QvMTUzMjU0MzEyMzcxNjExMCIsCiAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUvby9kc3QiLAogICJuYW1lIjogImRzdCIsCiAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMjM3MTYxMTAiLAogICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MjMuNzE1WiIsCiAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNToyMy43MTVaIiwKICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNToyMy43MTVaIiwKICAic2l6ZSI6ICI1IiwKICAibWQ1SGFzaCI6ICJYVUZBS3J4TEtuYTVjWjJSRUJmRmtnPT0iLAogICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9vL2RzdD9nZW5lcmF0aW9uPTE1MzI1NDMxMjM3MTYxMTAmYWx0PW1lZGlhIiwKICAiYWNsIjogWwogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9kc3QvMTUzMjU0MzEyMzcxNjExMC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1L28vZHN0L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1IiwKICAgICJvYmplY3QiOiAiZHN0IiwKICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMjM3MTYxMTAiLAogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICJyb2xlIjogIk9XTkVSIiwKICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAiZXRhZyI6ICJDSTd3OTRQd3V0d0NFQUU9IgogICB9LAogICB7CiAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9kc3QvMTUzMjU0MzEyMzcxNjExMC9hbGxVc2VycyIsCiAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9vL2RzdC9hY2wvYWxsVXNlcnMiLAogICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogICAgIm9iamVjdCI6ICJkc3QiLAogICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzEyMzcxNjExMCIsCiAgICAiZW50aXR5IjogImFsbFVzZXJzIiwKICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAiZXRhZyI6ICJDSTd3OTRQd3V0d0NFQUU9IgogICB9CiAgXSwKICAib3duZXIiOiB7CiAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICB9LAogICJjcmMzMmMiOiAibW5HN1RBPT0iLAogICJldGFnIjogIkNJN3c5NFB3dXR3Q0VBRT0iCiB9Cn0K" } }, { - "ID": "2ca3a59c5509ff73", + "ID": "8c50ccffcd7c453d", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false", + "Method": "POST", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/comp/compose?alt=json\u0026destinationPredefinedAcl=authenticatedRead", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -43125,17 +43517,23 @@ "Authorization": [ "REDACTED" ], + "Content-Length": [ + "130" + ], + "Content-Type": [ + "application/json" + ], "User-Agent": [ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "dd49136754e3d6ee4c3cc24e1601a059/10994687080266962283;o=1" + "f0aedb62f85ddfd6872247f484654801/12655719157701509566;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -43144,35 +43542,43 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/comp/compose?alt=json\u0026destinationPredefinedAcl=authenticatedRead" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" ] }, - "Body": "" + "Body": "eyJkZXN0aW5hdGlvbiI6eyJidWNrZXQiOiJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUifSwic291cmNlT2JqZWN0cyI6W3sibmFtZSI6InByaXZhdGUifSx7Im5hbWUiOiJkc3QifV19Cg==" }, "Response": { "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "72775" + "2182" ], "Content-Type": [ "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:47 GMT" + "Wed, 25 Jul 2018 18:25:24 GMT" + ], + "Etag": [ + "CKGEmYTwutwCEAE=" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:47 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -43182,25 +43588,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543423000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vru127:4240,/bns/yv/borg/yv/bns/blobstore2/bitpusher/134.scotty,yabq4-v6:443" + "xiiadccj12:4107,/bns/xi/borg/xi/bns/blobstore2/bitpusher/54.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=E081W62dBYbAggSqio6oAw" + "eid=k8BYW8LTObC6swam3qWoCQ" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/134.scotty,yabq4-v6:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/54.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -43209,13 +43615,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/134:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/54:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp0ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4StK4wESxgF5YTI5LmMuRW93QkF3YlNub0Uzd3RNZFppYm9VN3Jmc1dtemdjemRFVUVUS1dOcDVrQUpxNDZBRV9XVlNRSXhCT0lDMERjcHAzOUowLUVrajRNOHNWX3RoU3IxNXVwV2I3RXE1MkstYUVDREozU25DLUhfWXM0Rmg2d0l6ZmJvQnIwX041ZWFjb0N6S0VCRHpPMXFNNjFwMENGZTAzNE0xZm56Ml9RM0RXR3FIVnFYcTBULTRMZmRwX0RZc2hqaXFzSW5NVTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -43230,17 +43636,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UphSMwktmPWdDMG4Lnhu0yTc4QLdwlWbiUAGNRy8qmwV8O45ori6YvqogDN0hOZd5cN9uMtm7692DcMP2FxQnwQeRbEMne4KBSifJLbBr14r_eary8" + "AEnB2Upj_Qy6jFFHoEP2BauoirZBxyyDlmYztXDmVGMI3M9lMWRgD-XjeIaSAOX12SgE5pOtZyhe5uTIiznrk8QGVeiPmdohEQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wxLzE1MzAyMjAxODcxNDAwMDciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2FjbDEiLAogICAibmFtZSI6ICJhY2wxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg3MTQwMDA3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogICAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDcuMTM5WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDguMTQ0WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0Ny4xMzlaIiwKICAgInNpemUiOiAiMTYiLAogICAibWQ1SGFzaCI6ICJoMWNsc0Y0K0FCVGRvbTFjc04wUWlnPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9hY2wxP2dlbmVyYXRpb249MTUzMDIyMDE4NzE0MDAwNyZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FjbDEvMTUzMDIyMDE4NzE0MDAwNy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9hY2wxL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiYWNsMSIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4NzE0MDAwNyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDS2YvdXJXaTk5c0NFQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsMS8xNTMwMjIwMTg3MTQwMDA3L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9hY2wxL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImFjbDEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODcxNDAwMDciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDS2YvdXJXaTk5c0NFQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsMS8xNTMwMjIwMTg3MTQwMDA3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9hY2wxL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImFjbDEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODcxNDAwMDciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tmL3VyV2k5OXNDRUFJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FjbDEvMTUzMDIyMDE4NzE0MDAwNy91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2FjbDEvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImFjbDEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODcxNDAwMDciLAogICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImV0YWciOiAiQ0tmL3VyV2k5OXNDRUFJPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogICB9LAogICAiY3JjMzJjIjogIks2Ty9Ydz09IiwKICAgImV0YWciOiAiQ0tmL3VyV2k5OXNDRUFJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FjbDIvMTUzMDIyMDE4NzczNjI5OCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYWNsMiIsCiAgICJuYW1lIjogImFjbDIiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODc3MzYyOTgiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0Ny43MzVaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0Ny43MzVaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQ3LjczNVoiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIllQb3NsQnhZYWE4dWZTc0d1MCsxSlE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2FjbDI/Z2VuZXJhdGlvbj0xNTMwMjIwMTg3NzM2Mjk4JmFsdD1tZWRpYSIsCiAgICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsMi8xNTMwMjIwMTg3NzM2Mjk4L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2FjbDIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJhY2wyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg3NzM2Mjk4IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNPcXgzN1dpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wyLzE1MzAyMjAxODc3MzYyOTgvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2FjbDIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiYWNsMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4NzczNjI5OCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNPcXgzN1dpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9hY2wyLzE1MzAyMjAxODc3MzYyOTgvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2FjbDIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiYWNsMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4NzczNjI5OCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDT3F4MzdXaTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvYWNsMi8xNTMwMjIwMTg3NzM2Mjk4L2RvbWFpbi1nb29nbGUuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2FjbDIvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJhY2wyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg3NzM2Mjk4IiwKICAgICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAgICAgImV0YWciOiAiQ09xeDM3V2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2FjbDIvMTUzMDIyMDE4NzczNjI5OC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2FjbDIvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImFjbDIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODc3MzYyOTgiLAogICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImV0YWciOiAiQ09xeDM3V2k5OXNDRUFFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogICB9LAogICAiY3JjMzJjIjogIlhYTUFVZz09IiwKICAgImV0YWciOiAiQ09xeDM3V2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2J1Y2tldEluQ29weUF0dHJzLzE1MzAyMjAyMDcyMzMxOTAiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2J1Y2tldEluQ29weUF0dHJzIiwKICAgIm5hbWUiOiAiYnVja2V0SW5Db3B5QXR0cnMiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDcyMzMxOTAiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDcuMjMxWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDcuMjMxWiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowNy4yMzFaIiwKICAgInNpemUiOiAiMyIsCiAgICJtZDVIYXNoIjogInJMMFkyMHpDK0Z6dDcyVlB6TVNrMkE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2J1Y2tldEluQ29weUF0dHJzP2dlbmVyYXRpb249MTUzMDIyMDIwNzIzMzE5MCZhbHQ9bWVkaWEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9idWNrZXRJbkNvcHlBdHRycy8xNTMwMjIwMjA3MjMzMTkwL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2J1Y2tldEluQ29weUF0dHJzL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiYnVja2V0SW5Db3B5QXR0cnMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDcyMzMxOTAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0theGhiK2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2J1Y2tldEluQ29weUF0dHJzLzE1MzAyMjAyMDcyMzMxOTAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2J1Y2tldEluQ29weUF0dHJzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImJ1Y2tldEluQ29weUF0dHJzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA3MjMzMTkwIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0theGhiK2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2J1Y2tldEluQ29weUF0dHJzLzE1MzAyMjAyMDcyMzMxOTAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2J1Y2tldEluQ29weUF0dHJzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImJ1Y2tldEluQ29weUF0dHJzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA3MjMzMTkwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLYXhoYitpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9idWNrZXRJbkNvcHlBdHRycy8xNTMwMjIwMjA3MjMzMTkwL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vYnVja2V0SW5Db3B5QXR0cnMvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImJ1Y2tldEluQ29weUF0dHJzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA3MjMzMTkwIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLYXhoYitpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJ6OFN1SFE9PSIsCiAgICJldGFnIjogIkNLYXhoYitpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jaGVja3N1bS1vYmplY3QvMTUzMDIyMDE3OTIzNTI1MiIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY2hlY2tzdW0tb2JqZWN0IiwKICAgIm5hbWUiOiAiY2hlY2tzdW0tb2JqZWN0IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc5MjM1MjUyIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjM5LjIzM1oiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjM5LjIzM1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MzkuMjMzWiIsCiAgICJzaXplIjogIjEwIiwKICAgIm1kNUhhc2giOiAiL0Y0RGpUaWxjRElJVkVIbi9uQVFzQT09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY2hlY2tzdW0tb2JqZWN0P2dlbmVyYXRpb249MTUzMDIyMDE3OTIzNTI1MiZhbHQ9bWVkaWEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jaGVja3N1bS1vYmplY3QvMTUzMDIyMDE3OTIzNTI1Mi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jaGVja3N1bS1vYmplY3QvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjaGVja3N1bS1vYmplY3QiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNzkyMzUyNTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xURDJMR2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NoZWNrc3VtLW9iamVjdC8xNTMwMjIwMTc5MjM1MjUyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jaGVja3N1bS1vYmplY3QvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiY2hlY2tzdW0tb2JqZWN0IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc5MjM1MjUyIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xURDJMR2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NoZWNrc3VtLW9iamVjdC8xNTMwMjIwMTc5MjM1MjUyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jaGVja3N1bS1vYmplY3QvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiY2hlY2tzdW0tb2JqZWN0IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc5MjM1MjUyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMVEQyTEdpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jaGVja3N1bS1vYmplY3QvMTUzMDIyMDE3OTIzNTI1Mi91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NoZWNrc3VtLW9iamVjdC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiY2hlY2tzdW0tb2JqZWN0IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc5MjM1MjUyIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMVEQyTEdpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJWc3UwZ0E9PSIsCiAgICJldGFnIjogIkNMVEQyTEdpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb21wb3NlZDEvMTUzMDIyMDE4MTg2NjYxMSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29tcG9zZWQxIiwKICAgIm5hbWUiOiAiY29tcG9zZWQxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTgxODY2NjExIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0MS44NjVaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0MS44NjVaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQxLjg2NVoiLAogICAic2l6ZSI6ICI0OCIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbXBvc2VkMT9nZW5lcmF0aW9uPTE1MzAyMjAxODE4NjY2MTEmYWx0PW1lZGlhIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29tcG9zZWQxLzE1MzAyMjAxODE4NjY2MTEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29tcG9zZWQxL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiY29tcG9zZWQxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTgxODY2NjExIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNQT1ErYktpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb21wb3NlZDEvMTUzMDIyMDE4MTg2NjYxMS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29tcG9zZWQxL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImNvbXBvc2VkMSIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4MTg2NjYxMSIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNQT1ErYktpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb21wb3NlZDEvMTUzMDIyMDE4MTg2NjYxMS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29tcG9zZWQxL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImNvbXBvc2VkMSIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4MTg2NjYxMSIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDUE9RK2JLaTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29tcG9zZWQxLzE1MzAyMjAxODE4NjY2MTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb21wb3NlZDEvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImNvbXBvc2VkMSIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4MTg2NjYxMSIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDUE9RK2JLaTk5c0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAib3VJdTRRPT0iLAogICAiY29tcG9uZW50Q291bnQiOiAzLAogICAiZXRhZyI6ICJDUE9RK2JLaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY29tcG9zZWQyLzE1MzAyMjAxODIzODU2NDIiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbXBvc2VkMiIsCiAgICJuYW1lIjogImNvbXBvc2VkMiIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4MjM4NTY0MiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvanNvbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQyLjM4NVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQyLjM4NVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDIuMzg1WiIsCiAgICJzaXplIjogIjQ4IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29tcG9zZWQyP2dlbmVyYXRpb249MTUzMDIyMDE4MjM4NTY0MiZhbHQ9bWVkaWEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb21wb3NlZDIvMTUzMDIyMDE4MjM4NTY0Mi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb21wb3NlZDIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjb21wb3NlZDIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODIzODU2NDIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ09ybm1MT2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbXBvc2VkMi8xNTMwMjIwMTgyMzg1NjQyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb21wb3NlZDIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiY29tcG9zZWQyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTgyMzg1NjQyIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ09ybm1MT2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbXBvc2VkMi8xNTMwMjIwMTgyMzg1NjQyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb21wb3NlZDIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiY29tcG9zZWQyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTgyMzg1NjQyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNPcm5tTE9pOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb21wb3NlZDIvMTUzMDIyMDE4MjM4NTY0Mi91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbXBvc2VkMi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiY29tcG9zZWQyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTgyMzg1NjQyIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNPcm5tTE9pOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJvdUl1NFE9PSIsCiAgICJjb21wb25lbnRDb3VudCI6IDMsCiAgICJldGFnIjogIkNPcm5tTE9pOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTg4MzA4NDEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2NvbnRlbnQiLAogICAibmFtZSI6ICJjb250ZW50IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4ODMwODQxIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAiaW1hZ2UvanBlZyIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU4LjgyOVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU4LjgyOVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTguODI5WiIsCiAgICJzaXplIjogIjU0IiwKICAgIm1kNUhhc2giOiAiTjhwOC9zOUZ3ZEFBbmx2ci9sRUFqUT09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudD9nZW5lcmF0aW9uPTE1MzAyMjAxOTg4MzA4NDEmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTg4MzA4NDEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImNvbnRlbnQiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTg4MzA4NDEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ1BuRmhMdWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5ODgzMDg0MS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4ODMwODQxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ1BuRmhMdWk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2NvbnRlbnQvMTUzMDIyMDE5ODgzMDg0MS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY29udGVudC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4ODMwODQxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNQbkZoTHVpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jb250ZW50LzE1MzAyMjAxOTg4MzA4NDEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jb250ZW50L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk4ODMwODQxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNQbkZoTHVpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJHb1Vic1E9PSIsCiAgICJldGFnIjogIkNQbkZoTHVpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzAyMjAxOTk0MzAwMTgiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24iLAogICAibmFtZSI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTk5NDMwMDE4IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjMiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU5LjQyOFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjU5Ljk4M1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NTkuNDI4WiIsCiAgICJzaXplIjogIjExIiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbj9nZW5lcmF0aW9uPTE1MzAyMjAxOTk0MzAwMTgmYWx0PW1lZGlhIiwKICAgImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMDIyMDE5OTQzMDAxOC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE5OTQzMDAxOCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDSUtQcWJ1aTk5c0NFQU09IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMwMjIwMTk5NDMwMDE4L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTk0MzAwMTgiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDSUtQcWJ1aTk5c0NFQU09IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMwMjIwMTk5NDMwMDE4L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTk0MzAwMTgiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0lLUHFidWk5OXNDRUFNPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMDIyMDE5OTQzMDAxOC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24vYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxOTk0MzAwMTgiLAogICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImV0YWciOiAiQ0lLUHFidWk5OXNDRUFNPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogICB9LAogICAiZXRhZyI6ICJDSUtQcWJ1aTk5c0NFQU09IiwKICAgImN1c3RvbWVyRW5jcnlwdGlvbiI6IHsKICAgICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgICAia2V5U2hhMjU2IjogIkgrTG1uWGhSb2VJNlRNVzVic1Y2SHlVazZweUdjMklNYnFZYkFYQmNwczA9IgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMDIyMDIwNDQ4Njc5NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgIm5hbWUiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA0NDg2Nzk1IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA0LjQ4NloiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjEwOjA0LjQ4NloiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDQuNDg2WiIsCiAgICJzaXplIjogIjExIiwKICAgIm1kNUhhc2giOiAieHdXTkZhMFZkWFBtbEF3cmxjQUpjZz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yP2dlbmVyYXRpb249MTUzMDIyMDIwNDQ4Njc5NSZhbHQ9bWVkaWEiLAogICAiY29udGVudExhbmd1YWdlIjogImVuIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yLzE1MzAyMjAyMDQ0ODY3OTUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0yIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA0NDg2Nzk1IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNJdmgzYjJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMDIyMDIwNDQ4Njc5NS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNDQ4Njc5NSIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNJdmgzYjJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTIvMTUzMDIyMDIwNDQ4Njc5NS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNDQ4Njc5NSIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDSXZoM2IyaTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yLzE1MzAyMjAyMDQ0ODY3OTUvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uLTIvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNDQ4Njc5NSIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDSXZoM2IyaTk5c0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAicjBOR3JnPT0iLAogICAiZXRhZyI6ICJDSXZoM2IyaTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0zLzE1MzAyMjAyMDM3NjM3MzUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMyIsCiAgICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24tMyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwMzc2MzczNSIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDMuNzYzWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDMuNzYzWiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowMy43NjNaIiwKICAgInNpemUiOiAiMjIiLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uLTM/Z2VuZXJhdGlvbj0xNTMwMjIwMjAzNzYzNzM1JmFsdD1tZWRpYSIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMy8xNTMwMjIwMjAzNzYzNzM1L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24tMyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwMzc2MzczNSIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDSmZRc2IyaTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0zLzE1MzAyMjAyMDM3NjM3MzUvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDM3NjM3MzUiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDSmZRc2IyaTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0zLzE1MzAyMjAyMDM3NjM3MzUvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDM3NjM3MzUiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0pmUXNiMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMy8xNTMwMjIwMjAzNzYzNzM1L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0zL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDM3NjM3MzUiLAogICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImV0YWciOiAiQ0pmUXNiMmk5OXNDRUFFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogICB9LAogICAiY29tcG9uZW50Q291bnQiOiAyLAogICAiZXRhZyI6ICJDSmZRc2IyaTk5c0NFQUU9IiwKICAgImN1c3RvbWVyRW5jcnlwdGlvbiI6IHsKICAgICJlbmNyeXB0aW9uQWxnb3JpdGhtIjogIkFFUzI1NiIsCiAgICAia2V5U2hhMjU2IjogIkgrTG1uWGhSb2VJNlRNVzVic1Y2SHlVazZweUdjMklNYnFZYkFYQmNwczA9IgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9nemlwLXRlc3QvMTUzMDIyMDE4MzAzMDMzNSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vZ3ppcC10ZXN0IiwKICAgIm5hbWUiOiAiZ3ppcC10ZXN0IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTgzMDMwMzM1IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24veC1nemlwIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDMuMDI5WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDMuMDI5WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0My4wMjlaIiwKICAgInNpemUiOiAiMjciLAogICAibWQ1SGFzaCI6ICJPdEN3K2FSUklScUtHRkFFT2F4K3F3PT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9nemlwLXRlc3Q/Z2VuZXJhdGlvbj0xNTMwMjIwMTgzMDMwMzM1JmFsdD1tZWRpYSIsCiAgICJjb250ZW50RW5jb2RpbmciOiAiZ3ppcCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2d6aXAtdGVzdC8xNTMwMjIwMTgzMDMwMzM1L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2d6aXAtdGVzdC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImd6aXAtdGVzdCIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4MzAzMDMzNSIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDTCtVd0xPaTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvZ3ppcC10ZXN0LzE1MzAyMjAxODMwMzAzMzUvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2d6aXAtdGVzdC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJnemlwLXRlc3QiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODMwMzAzMzUiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDTCtVd0xPaTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvZ3ppcC10ZXN0LzE1MzAyMjAxODMwMzAzMzUvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL2d6aXAtdGVzdC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJnemlwLXRlc3QiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODMwMzAzMzUiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wrVXdMT2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2d6aXAtdGVzdC8xNTMwMjIwMTgzMDMwMzM1L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vZ3ppcC10ZXN0L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJnemlwLXRlc3QiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODMwMzAzMzUiLAogICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImV0YWciOiAiQ0wrVXdMT2k5OXNDRUFFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogICB9LAogICAiY3JjMzJjIjogIjlEaHdCQT09IiwKICAgImV0YWciOiAiQ0wrVXdMT2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMDIyMDIwODgzNzk1NiIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vaGFzaGVzT25VcGxvYWQtMSIsCiAgICJuYW1lIjogImhhc2hlc09uVXBsb2FkLTEiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDg4Mzc5NTYiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDguODM3WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDguODM3WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowOC44MzdaIiwKICAgInNpemUiOiAiMjciLAogICAibWQ1SGFzaCI6ICJvZlpqR2xjWFBKaUdPQWZLRmJKbDFRPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9oYXNoZXNPblVwbG9hZC0xP2dlbmVyYXRpb249MTUzMDIyMDIwODgzNzk1NiZhbHQ9bWVkaWEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzAyMjAyMDg4Mzc5NTYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vaGFzaGVzT25VcGxvYWQtMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogImhhc2hlc09uVXBsb2FkLTEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDg4Mzc5NTYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ01TcTU3K2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMDIyMDIwODgzNzk1Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vaGFzaGVzT25VcGxvYWQtMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA4ODM3OTU2IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ01TcTU3K2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL2hhc2hlc09uVXBsb2FkLTEvMTUzMDIyMDIwODgzNzk1Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vaGFzaGVzT25VcGxvYWQtMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA4ODM3OTU2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNNU3E1NytpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzAyMjAyMDg4Mzc5NTYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9oYXNoZXNPblVwbG9hZC0xL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA4ODM3OTU2IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNNU3E1NytpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJjSCtBK3c9PSIsCiAgICJldGFnIjogIkNNU3E1NytpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzIiwKICAgIm5hbWUiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS41NDlaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjU0OVoiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIjY1akFkdktmRzZHaGFTNVcrRXpnNEE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzP2dlbmVyYXRpb249MTUzMDIyMDE2OTU0OTc1NyZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTU0OTc1NyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzAyMjAxNjk1NDk3NTcvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjk1NDk3NTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0wydmlhMmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iai93aXRoL3NsYXNoZXMvMTUzMDIyMDE2OTU0OTc1Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5NTQ5NzU3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIremlJOFE9PSIsCiAgICJldGFnIjogIkNMMnZpYTJpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoxLzE1MzAyMjAxNjg1MzE4OTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEiLAogICAibmFtZSI6ICJvYmoxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjQiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOC41MjlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTo0MC4xMzBaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI4LjUyOVoiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogIjBRODIyN3NlVkw2QlVPTXNLY0ZvOXc9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajE/Z2VuZXJhdGlvbj0xNTMwMjIwMTY4NTMxODk3JmFsdD1tZWRpYSIsCiAgICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMS8xNTMwMjIwMTY4NTMxODk3L2RvbWFpbi1nb29nbGUuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL2RvbWFpbi1nb29nbGUuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY4NTMxODk3IiwKICAgICAiZW50aXR5IjogImRvbWFpbi1nb29nbGUuY29tIiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJkb21haW4iOiAiZ29vZ2xlLmNvbSIsCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFRPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajEvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNjg1MzE4OTciLAogICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImV0YWciOiAiQ0xtZnk2eWk5OXNDRUFRPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL29iajEvMTUzMDIyMDE2ODUzMTg5Ny9hbGxVc2VycyIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoxL2FjbC9hbGxVc2VycyIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqMSIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2ODUzMTg5NyIsCiAgICAgImVudGl0eSI6ICJhbGxVc2VycyIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAiZXRhZyI6ICJDTG1meTZ5aTk5c0NFQVE9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiMFNHNGl3PT0iLAogICAiZXRhZyI6ICJDTG1meTZ5aTk5c0NFQVE9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMi8xNTMwMjIwMTY5MDIxODY2IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9vYmoyIiwKICAgIm5hbWUiOiAib2JqMiIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS4wMjFaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOToyOS4wMjFaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjI5LjAyMVoiLAogICAic2l6ZSI6ICIxNiIsCiAgICJtZDVIYXNoIjogImRTQ09FeEExMS9NMGdMWXh1N1RBWHc9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajI/Z2VuZXJhdGlvbj0xNTMwMjIwMTY5MDIxODY2JmFsdD1tZWRpYSIsCiAgICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMi8xNTMwMjIwMTY5MDIxODY2L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTY5MDIxODY2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNLcVQ2YXlpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vYmoyLzE1MzAyMjAxNjkwMjE4NjYvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL29iajIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDS3FUNmF5aTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvb2JqMi8xNTMwMjIwMTY5MDIxODY2L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vb2JqMi9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE2OTAyMTg2NiIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDS3FUNmF5aTk5c0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiTkV4Q3d3PT0iLAogICAiZXRhZyI6ICJDS3FUNmF5aTk5c0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcG9zYy8xNTMwMjIwMjA2MjM5OTkzIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjIiwKICAgIm5hbWUiOiAicG9zYyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNjIzOTk5MyIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDYuMjM5WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDYuMjM5WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiTVVMVElfUkVHSU9OQUwiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowNi4yMzlaIiwKICAgInNpemUiOiAiMyIsCiAgICJtZDVIYXNoIjogInJMMFkyMHpDK0Z6dDcyVlB6TVNrMkE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3Bvc2M/Z2VuZXJhdGlvbj0xNTMwMjIwMjA2MjM5OTkzJmFsdD1tZWRpYSIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MvMTUzMDIyMDIwNjIzOTk5My9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAicG9zYyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDIwNjIzOTk5MyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDUG5oeUw2aTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcG9zYy8xNTMwMjIwMjA2MjM5OTkzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogInBvc2MiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDYyMzk5OTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDUG5oeUw2aTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvcG9zYy8xNTMwMjIwMjA2MjM5OTkzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvby9wb3NjL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogInBvc2MiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDYyMzk5OTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ1BuaHlMNmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MvMTUzMDIyMDIwNjIzOTk5My91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3Bvc2MvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogInBvc2MiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDYyMzk5OTMiLAogICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImV0YWciOiAiQ1BuaHlMNmk5OXNDRUFFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogICB9LAogICAiY3JjMzJjIjogIno4U3VIUT09IiwKICAgImV0YWciOiAiQ1BuaHlMNmk5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MyLzE1MzAyMjAyMDY2NTQ2NjEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3Bvc2MyIiwKICAgIm5hbWUiOiAicG9zYzIiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDY2NTQ2NjEiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDYuNjU0WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MTA6MDYuNjU0WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiTVVMVElfUkVHSU9OQUwiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMDowNi42NTRaIiwKICAgInNpemUiOiAiMyIsCiAgICJtZDVIYXNoIjogIjlXR3E5dThMOFUxQ0NMdEdwTXl6clE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3Bvc2MyP2dlbmVyYXRpb249MTUzMDIyMDIwNjY1NDY2MSZhbHQ9bWVkaWEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wb3NjMi8xNTMwMjIwMjA2NjU0NjYxL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3Bvc2MyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAicG9zYzIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAyMDY2NTQ2NjEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ01XSjRyNmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MyLzE1MzAyMjAyMDY2NTQ2NjEvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3Bvc2MyL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogInBvc2MyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA2NjU0NjYxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ01XSjRyNmk5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3Bvc2MyLzE1MzAyMjAyMDY2NTQ2NjEvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3Bvc2MyL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogInBvc2MyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA2NjU0NjYxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNNV0o0cjZpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9wb3NjMi8xNTMwMjIwMjA2NjU0NjYxL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vcG9zYzIvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogInBvc2MyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMjA2NjU0NjYxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNNV0o0cjZpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICIxN3FBQlE9PSIsCiAgICJldGFnIjogIkNNV0o0cjZpOTlzQ0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9zaWduZWRVUkwvMTUzMDIyMDE4NDAzNjM3NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vc2lnbmVkVVJMIiwKICAgIm5hbWUiOiAic2lnbmVkVVJMIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTg0MDM2Mzc1IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQ0LjAzNVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDIxOjA5OjQ0LjAzNVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6NDQuMDM1WiIsCiAgICJzaXplIjogIjI5IiwKICAgIm1kNUhhc2giOiAiSnl4dmd3bTluMk1zckdUTVBiTWVZQT09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vc2lnbmVkVVJMP2dlbmVyYXRpb249MTUzMDIyMDE4NDAzNjM3NSZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3NpZ25lZFVSTC8xNTMwMjIwMTg0MDM2Mzc1L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3NpZ25lZFVSTC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogInNpZ25lZFVSTCIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMDIyMDE4NDAzNjM3NSIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDSmZJL2JPaTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvc2lnbmVkVVJMLzE1MzAyMjAxODQwMzYzNzUvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3NpZ25lZFVSTC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJzaWduZWRVUkwiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODQwMzYzNzUiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDSmZJL2JPaTk5c0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAvc2lnbmVkVVJMLzE1MzAyMjAxODQwMzYzNzUvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3NpZ25lZFVSTC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJzaWduZWRVUkwiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODQwMzYzNzUiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0pmSS9iT2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3NpZ25lZFVSTC8xNTMwMjIwMTg0MDM2Mzc1L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vc2lnbmVkVVJML2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICAgIm9iamVjdCI6ICJzaWduZWRVUkwiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxODQwMzYzNzUiLAogICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImV0YWciOiAiQ0pmSS9iT2k5OXNDRUFFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogICB9LAogICAiY3JjMzJjIjogIlpUcUFMdz09IiwKICAgImV0YWciOiAiQ0pmSS9iT2k5OXNDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3plcm8tb2JqZWN0LzE1MzAyMjAxNzk4NjY4MzMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3plcm8tb2JqZWN0IiwKICAgIm5hbWUiOiAiemVyby1vYmplY3QiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNzk4NjY4MzMiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04IiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MzkuODY2WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMjE6MDk6MzkuODY2WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMTowOTozOS44NjZaIiwKICAgInNpemUiOiAiMCIsCiAgICJtZDVIYXNoIjogIjFCMk0yWThBc2dUcGdBbVk3UGhDZmc9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3plcm8tb2JqZWN0P2dlbmVyYXRpb249MTUzMDIyMDE3OTg2NjgzMyZhbHQ9bWVkaWEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC96ZXJvLW9iamVjdC8xNTMwMjIwMTc5ODY2ODMzL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3plcm8tb2JqZWN0L2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMDAiLAogICAgICJvYmplY3QiOiAiemVyby1vYmplY3QiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzAyMjAxNzk4NjY4MzMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05HSi83R2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3plcm8tb2JqZWN0LzE1MzAyMjAxNzk4NjY4MzMvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3plcm8tb2JqZWN0L2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogInplcm8tb2JqZWN0IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc5ODY2ODMzIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05HSi83R2k5OXNDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL3plcm8tb2JqZWN0LzE1MzAyMjAxNzk4NjY4MzMvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC9vL3plcm8tb2JqZWN0L2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogInplcm8tb2JqZWN0IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc5ODY2ODMzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNOR0ovN0dpOTlzQ0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAwMC96ZXJvLW9iamVjdC8xNTMwMjIwMTc5ODY2ODMzL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwL28vemVyby1vYmplY3QvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDAwIiwKICAgICAib2JqZWN0IjogInplcm8tb2JqZWN0IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMwMjIwMTc5ODY2ODMzIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOR0ovN0dpOTlzQ0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJBQUFBQUE9PSIsCiAgICJldGFnIjogIkNOR0ovN0dpOTlzQ0VBRT0iCiAgfQogXQp9Cg==" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9jb21wLzE1MzI1NDMxMjQyNTkzNjEiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUvby9jb21wIiwKICJuYW1lIjogImNvbXAiLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzEyNDI1OTM2MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNToyNC4yNTlaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MjQuMjU5WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjI0LjI1OVoiLAogInNpemUiOiAiMTAiLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1L28vY29tcD9nZW5lcmF0aW9uPTE1MzI1NDMxMjQyNTkzNjEmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1L2NvbXAvMTUzMjU0MzEyNDI1OTM2MS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUvby9jb21wL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTUiLAogICAib2JqZWN0IjogImNvbXAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTI0MjU5MzYxIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDS0dFbVlUd3V0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1L2NvbXAvMTUzMjU0MzEyNDI1OTM2MS9hbGxBdXRoZW50aWNhdGVkVXNlcnMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNS9vL2NvbXAvYWNsL2FsbEF1dGhlbnRpY2F0ZWRVc2VycyIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE1IiwKICAgIm9iamVjdCI6ICJjb21wIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzEyNDI1OTM2MSIsCiAgICJlbnRpdHkiOiAiYWxsQXV0aGVudGljYXRlZFVzZXJzIiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgImV0YWciOiAiQ0tHRW1ZVHd1dHdDRUFFPSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKIH0sCiAiY3JjMzJjIjogIi9SQ09nZz09IiwKICJjb21wb25lbnRDb3VudCI6IDIsCiAiZXRhZyI6ICJDS0dFbVlUd3V0d0NFQUU9Igp9Cg==" } }, { - "ID": "99da45a535dfcc9e", + "ID": "5360d6f075a0c1b1", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/acl1?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/comp?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -43253,13 +43659,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "608dd18fa70204d640b4386f61e1ceb5/11802112761769711483;o=1" + "7684534e3dbb87c5be9a8c4113d41a07/16440313206597993036;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -43268,7 +43674,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/acl1?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/comp?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -43279,9 +43685,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -43293,7 +43701,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:47 GMT" + "Wed, 25 Jul 2018 18:25:24 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -43309,7 +43717,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543420000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -43318,16 +43726,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrss4:4278,/bns/yv/borg/yv/bns/blobstore2/bitpusher/449.scotty,yabq4-v6:443" + "xgiadadq2:4007,/bns/xi/borg/xi/bns/blobstore2/bitpusher/37.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=E081W7rcFsfEgATc4JOACA" + "eid=lMBYW-nGFo60swa29rugDA" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/449.scotty,yabq4-v6:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/37.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -43336,13 +43744,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/449:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/37:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YlNub0Uzd3RNZFppYm9VN3Jmc1dtemdjemRFVUVUS1dOcDVrQUpxNDZBRV9XVlNRSXhCT0lDMERjcHAzOUowLUVrajRNOHNWX3RoU3IxNXVwV2I3RXE1MkstYUVDREozU25DLUhfWXM0Rmg2d0l6ZmJvQnIwX041ZWFjb0N6S0VCRHpPMXFNNjFwMENGZTAzNE0xZm56Ml9RM0RXR3FIVnFYcTBULTRMZmRwX0RZc2hqaXFzSW5NVTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -43357,17 +43765,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq3t6RHhh0Er51BktLVQipa3rKMQQ_zyFfTN02dZ0Opd35TNoZQ2zhg0wgdO1H8DUmDZcC0VNnJ6f0uRAZ1IBxloVwUGR0b8Dd2kA6XOJAuFPs35RA" + "AEnB2UrpzIKzZteRPXZIeSRmcUE7bKcO1YmIrD6zdTEhezzHdn2yy8xiGNC79PWzg7CRTR1g4e6lG2WgPH9J2x0gNY1e18-vpw" ] }, "Body": "" } }, { - "ID": "674fdd70a65d9b0c", + "ID": "ce3d89a95a3aa916", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/acl2?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/dst?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -43380,13 +43788,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "5e6a869933fb11f255140b0427d6b790/12609539542784088203;o=1" + "b97b011a1a0596943acb0f6d3f599961/1850219676328002267;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -43395,7 +43803,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/acl2?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/dst?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -43406,9 +43814,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -43420,7 +43830,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:47 GMT" + "Wed, 25 Jul 2018 18:25:25 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -43436,7 +43846,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543420000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -43445,16 +43855,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrde17:4368,/bns/yv/borg/yv/bns/blobstore2/bitpusher/347.scotty,yabq4-v6:443" + "xiiadcad8:4117,/bns/xi/borg/xi/bns/blobstore2/bitpusher/104.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=E081W5W_IYrLggS1_56wAQ" + "eid=lMBYW8PCJey2swaUwyg" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/347.scotty,yabq4-v6:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/104.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -43463,13 +43873,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/347:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/104:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YlNub0Uzd3RNZFppYm9VN3Jmc1dtemdjemRFVUVUS1dOcDVrQUpxNDZBRV9XVlNRSXhCT0lDMERjcHAzOUowLUVrajRNOHNWX3RoU3IxNXVwV2I3RXE1MkstYUVDREozU25DLUhfWXM0Rmg2d0l6ZmJvQnIwX041ZWFjb0N6S0VCRHpPMXFNNjFwMENGZTAzNE0xZm56Ml9RM0RXR3FIVnFYcTBULTRMZmRwX0RZc2hqaXFzSW5NVTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -43484,17 +43894,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq-CRUi-5EsXazFQ454fFcBjl09Y1uii3jmShyTm0re9IFi-dQGjisRL7nQo6JAGM_B48749aI8uqNSXN8jkbBrT3xra8tCN4__7EQ9OhwmFHwmgHg" + "AEnB2UpONy7PRHUGrPxoCxP4LUezAL4fBdWZNkl3C96nIt794-BDyC89Qj3t8xVoIkdKTc8ZDsbLZ4CDRy_oWZ_AVcv9_7E_Aw" ] }, "Body": "" } }, { - "ID": "9751fac08ed3d2b4", + "ID": "768674231e5ccb2c", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/bucketInCopyAttrs?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/private?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -43507,13 +43917,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "6ce25178e6eafe63d2f3958aebbcbff1/13345191295642294938;o=1" + "c94fcc8cf34fbe19e08d87ced9c28af5/5634812625729635177;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -43522,7 +43932,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/bucketInCopyAttrs?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015/o/private?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -43533,9 +43943,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -43547,7 +43959,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:47 GMT" + "Wed, 25 Jul 2018 18:25:25 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -43563,7 +43975,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543420000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -43572,16 +43984,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrkb18:4263,/bns/yv/borg/yv/bns/blobstore2/bitpusher/438.scotty,yabq4-v6:443" + "xiiadccc1:4324,/bns/xi/borg/xi/bns/blobstore2/bitpusher/134.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=E081W_eOLJDzgQTov4DoBw" + "eid=lcBYW-ebBcq9swamsaLwAg" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/438.scotty,yabq4-v6:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/134.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -43590,13 +44002,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/438:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/134:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YlNub0Uzd3RNZFppYm9VN3Jmc1dtemdjemRFVUVUS1dOcDVrQUpxNDZBRV9XVlNRSXhCT0lDMERjcHAzOUowLUVrajRNOHNWX3RoU3IxNXVwV2I3RXE1MkstYUVDREozU25DLUhfWXM0Rmg2d0l6ZmJvQnIwX041ZWFjb0N6S0VCRHpPMXFNNjFwMENGZTAzNE0xZm56Ml9RM0RXR3FIVnFYcTBULTRMZmRwX0RZc2hqaXFzSW5NVTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -43611,17 +44023,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrW146LeKyvkTfXelvpNzDxpFwRW_l9_-BOM1Zj50_HcVXwM_5_4tcqlBtjyfKbYss2rS7agMkxzi1MsglfIvDRfZMbI4rbQ7U4Z9ZI2uORYUNc11Q" + "AEnB2UqjQ4lbvdT2HfMM_CCREyOdzoHMz5n-GFG0OFjahNCnfLXBysRWC7Nk1tvjduC1OH91V1EIX6Vx_PH3rhFDOgmKAWty0g" ] }, "Body": "" } }, { - "ID": "0a1fc0dcbb7bd603", + "ID": "27e056509d92ecd6", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/checksum-object?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -43634,13 +44046,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "cc030a96e48c78e565c7090c230c2330/14152616977161821098;o=1" + "b7486315ecba778fd29d5f5baf9950a7/13275494272407291013;o=0" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -43649,7 +44061,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/checksum-object?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0015?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -43660,9 +44072,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -43674,7 +44088,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:48 GMT" + "Wed, 25 Jul 2018 18:25:25 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -43690,7 +44104,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543420000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -43699,16 +44113,676 @@ "998958384336" ], "X-Google-Backends": [ - "vrna5:4014,/bns/yv/borg/yv/bns/blobstore2/bitpusher/992.scotty,yabq4-v6:443" + "xgiadacd12:4335,/bns/xi/borg/xi/bns/blobstore2/bitpusher/125.scotty,aclgag4:443" + ], + "X-Google-Dos-Service-Trace": [ + "main:apps-upload-cloud-storage-unified" + ], + "X-Google-Gfe-Backend-Request-Info": [ + "eid=lcBYW5uzIsGFygP35YHoAg" + ], + "X-Google-Gfe-Request-Trace": [ + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/125.scotty,aclgag4:443" + ], + "X-Google-Gfe-Response-Code-Details-Trace": [ + "response_code_set_by_backend" + ], + "X-Google-Gfe-Service-Trace": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Netmon-Label": [ + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/125:caf3" + ], + "X-Google-Service": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Session-Info": [ + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YlNub0Uzd3RNZFppYm9VN3Jmc1dtemdjemRFVUVUS1dOcDVrQUpxNDZBRV9XVlNRSXhCT0lDMERjcHAzOUowLUVrajRNOHNWX3RoU3IxNXVwV2I3RXE1MkstYUVDREozU25DLUhfWXM0Rmg2d0l6ZmJvQnIwX041ZWFjb0N6S0VCRHpPMXFNNjFwMENGZTAzNE0xZm56Ml9RM0RXR3FIVnFYcTBULTRMZmRwX0RZc2hqaXFzSW5NVTQwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + ], + "X-Google-Shellfish-Status": [ + "CA0gBEBG" + ], + "X-Guploader-Customer": [ + "apiary_cloudstorage_metadata" + ], + "X-Guploader-Request-Result": [ + "success" + ], + "X-Guploader-Upload-Result": [ + "success" + ], + "X-Guploader-Uploadid": [ + "AEnB2UowNYSPpp91qjcxy78gSm39jDTlUVKaKLyRYvbGevIB7hUrSrOsOXRCdZ7j2FGmk20qv1T6eJd9iasUqizZzO8G9Bzuww" + ] + }, + "Body": "" + } + }, + { + "ID": "c786bed5a9ffaa28", + "Request": { + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full", + "Proto": "HTTP/1.1", + "Header": { + "Accept-Encoding": [ + "gzip" + ], + "Authorization": [ + "REDACTED" + ], + "User-Agent": [ + "google-api-go-client/0.5" + ], + "Via": [ + "1.1 httpr-2cb544b9dcbba457f48c" + ], + "X-Cloud-Trace-Context": [ + "64c361c97b3756d348b078c1776dac54/13967607352321050445;o=1" + ], + "X-Forwarded-For": [ + "127.0.0.1" + ], + "X-Forwarded-Host": [ + "www.googleapis.com" + ], + "X-Forwarded-Proto": [ + "https" + ], + "X-Forwarded-Url": [ + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json\u0026projection=full" + ], + "X-Goog-Api-Client": [ + "gl-go/1.10.3 gccl/20180226" + ] + }, + "Body": "" + }, + "Response": { + "StatusCode": 200, + "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, + "Header": { + "Alt-Svc": [ + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "private, max-age=0, must-revalidate, no-transform" + ], + "Content-Length": [ + "2952" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Wed, 25 Jul 2018 18:25:26 GMT" + ], + "Etag": [ + "CAw=" + ], + "Expires": [ + "Wed, 25 Jul 2018 18:25:26 GMT" + ], + "Server": [ + "UploadServer" + ], + "Vary": [ + "Origin", + "X-Origin" + ], + "X-Google-Apiary-Auth-Expires": [ + "1532543425000" + ], + "X-Google-Apiary-Auth-Scopes": [ + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + ], + "X-Google-Apiary-Auth-User": [ + "998958384336" + ], + "X-Google-Backends": [ + "xiiadccc1:4324,/bns/xi/borg/xi/bns/blobstore2/bitpusher/9.scotty,aclgag4:443" + ], + "X-Google-Dos-Service-Trace": [ + "main:apps-upload-cloud-storage-unified" + ], + "X-Google-Gfe-Backend-Request-Info": [ + "eid=lcBYW-DOO46xswa4jrSgDA" + ], + "X-Google-Gfe-Request-Trace": [ + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/9.scotty,aclgag4:443" + ], + "X-Google-Gfe-Response-Code-Details-Trace": [ + "response_code_set_by_backend" + ], + "X-Google-Gfe-Service-Trace": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Netmon-Label": [ + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/9:caf3" + ], + "X-Google-Service": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Session-Info": [ + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WlhldUtKMHBwSnlXOFV3TDgxOW40NEtVQmE5VWV3ZjBaWDBUXzlCSUZZNmRJd3hxbURDODhqTkItcjA0RU8tRUh4b0NkY2lSVlFJM2dIcC01RGZaRV9jWUFrN3NvSXVHX0VHa3FvelNiVWRkUUxIeF9hM0tPd05IZWJ6WG9sQVJidmJIV1ZfRlJVbnQxZGlmUFFjMHh4dHJCNnR6MmFsWkJZVTlCSXZEd0JlOVY3NG54MDVyNnB5MzAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + ], + "X-Google-Shellfish-Status": [ + "CA0gBEBG" + ], + "X-Guploader-Customer": [ + "apiary_cloudstorage_metadata" + ], + "X-Guploader-Request-Result": [ + "success" + ], + "X-Guploader-Upload-Result": [ + "success" + ], + "X-Guploader-Uploadid": [ + "AEnB2UoABliFkMkf_6WGKyZWkV7UvZiSbifvZpCsxfPK7u9JmJMp6T5qtP5rPPBdv2NFrsN1yirT8owS9jECckYaZQdl0X51bw" + ] + }, + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjI6NTUuMDg0WiIsCiAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI0OjIyLjUxNFoiLAogIm1ldGFnZW5lcmF0aW9uIjogIjEyIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJlZGl0b3JzIgogICB9LAogICAiZXRhZyI6ICJDQXc9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNBdz0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDQXc9IgogIH0KIF0sCiAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogIm93bmVycyIKICAgfSwKICAgImV0YWciOiAiQ0F3PSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNBdz0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiUkVBREVSIiwKICAgInByb2plY3RUZWFtIjogewogICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgInRlYW0iOiAidmlld2VycyIKICAgfSwKICAgImV0YWciOiAiQ0F3PSIKICB9CiBdLAogIm93bmVyIjogewogICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiB9LAogImxvY2F0aW9uIjogIlVTIiwKICJ2ZXJzaW9uaW5nIjogewogICJlbmFibGVkIjogZmFsc2UKIH0sCiAibGlmZWN5Y2xlIjogewogICJydWxlIjogWwogICB7CiAgICAiYWN0aW9uIjogewogICAgICJ0eXBlIjogIkRlbGV0ZSIKICAgIH0sCiAgICAiY29uZGl0aW9uIjogewogICAgICJhZ2UiOiAzMAogICAgfQogICB9CiAgXQogfSwKICJsYWJlbHMiOiB7CiAgIm5ldyI6ICJuZXciLAogICJsMSI6ICJ2MiIKIH0sCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJldGFnIjogIkNBdz0iCn0K" + } + }, + { + "ID": "e9dd5428b7d2b13c", + "Request": { + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0016?alt=json\u0026projection=full", + "Proto": "HTTP/1.1", + "Header": { + "Accept-Encoding": [ + "gzip" + ], + "Authorization": [ + "REDACTED" + ], + "User-Agent": [ + "google-api-go-client/0.5" + ], + "Via": [ + "1.1 httpr-2cb544b9dcbba457f48c" + ], + "X-Cloud-Trace-Context": [ + "c3da9d7963629d08c2e2a1fef4077f46/3246950289016694692;o=1" + ], + "X-Forwarded-For": [ + "127.0.0.1" + ], + "X-Forwarded-Host": [ + "www.googleapis.com" + ], + "X-Forwarded-Proto": [ + "https" + ], + "X-Forwarded-Url": [ + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0016?alt=json\u0026projection=full" + ], + "X-Goog-Api-Client": [ + "gl-go/1.10.3 gccl/20180226" + ] + }, + "Body": "" + }, + "Response": { + "StatusCode": 404, + "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, + "Header": { + "Alt-Svc": [ + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "private, max-age=0" + ], + "Content-Length": [ + "12271" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Wed, 25 Jul 2018 18:25:26 GMT" + ], + "Expires": [ + "Wed, 25 Jul 2018 18:25:26 GMT" + ], + "Server": [ + "UploadServer" + ], + "Vary": [ + "Origin", + "X-Origin" + ], + "X-Google-Apiary-Auth-Expires": [ + "1532543426000" + ], + "X-Google-Apiary-Auth-Scopes": [ + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + ], + "X-Google-Apiary-Auth-User": [ + "998958384336" + ], + "X-Google-Backends": [ + "xgiadaah14:4439,/bns/xi/borg/xi/bns/blobstore2/bitpusher/33.scotty,aclgag4:443" + ], + "X-Google-Dos-Service-Trace": [ + "main:apps-upload-cloud-storage-unified" + ], + "X-Google-Gfe-Backend-Request-Info": [ + "eid=lsBYW5nKCe-wswb5qKXgCA" + ], + "X-Google-Gfe-Request-Trace": [ + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/33.scotty,aclgag4:443" + ], + "X-Google-Gfe-Response-Code-Details-Trace": [ + "response_code_set_by_backend" + ], + "X-Google-Gfe-Service-Trace": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Netmon-Label": [ + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/33:caf3" + ], + "X-Google-Service": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Session-Info": [ + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YWV1RmZRSlBDbTM4UVlNYkRfakdsdnZ4U25TNE9KSk9nUTJIc3d6cmVSZG1OVjlkOG5iYzYtY3g4SFZyYmwxOHZINURDMUdtNHVNTDNaREpQN0xBRVlVeVVhdGtkd1VoVm41dExBaE1PVUdSa2Y3SlllQllQQ3JkaHc0akJCcnB4eFlPMXVIcXd4eTZxUWNkcHFvNFlaaUtlVG9xNXVFVzhkZkdUV25FcU9McU1EMHdBR3c1VGc0dE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + ], + "X-Google-Shellfish-Status": [ + "CA0gBEBG" + ], + "X-Guploader-Customer": [ + "apiary_cloudstorage_metadata" + ], + "X-Guploader-Request-Result": [ + "agent_rejected" + ], + "X-Guploader-Upload-Result": [ + "agent_rejected" + ], + "X-Guploader-Uploadid": [ + "AEnB2UqhhVs939U2t2MJ-OmlNaAKTzcaHldn7UPN1y2QcX_zVSthe74wQIJ1U8GjgrEQ1rzYUXdz91vGQ33IQ0jW4cD5ifsfYA" + ] + }, + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkJVQ0tFVF9OT1RfRk9VTkQ6IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTZcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5HZXRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldEJ1Y2tldC5qYXZhOjEwMilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkdldEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0QnVja2V0LmphdmE6MzEpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5CdWNrZXRzRGVsZWdhdG9yLmdldChCdWNrZXRzRGVsZWdhdG9yLmphdmE6NzQpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBCVUNLRVRfTk9UX0ZPVU5EOiBObyBzdWNoIGJ1Y2tldDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE2XG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1OT1RfRk9VTkQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QlVDS0VUX05PVF9GT1VORDogQlVDS0VUX05PVF9GT1VORDogTm8gc3VjaCBidWNrZXQ6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkdldEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0QnVja2V0LmphdmE6MTAyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YTozMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZ2V0KEJ1Y2tldHNEZWxlZ2F0b3IuamF2YTo3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTZcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPW5vdEZvdW5kLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5OT1RfRk9VTkQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpCVUNLRVRfTk9UX0ZPVU5EOiBCVUNLRVRfTk9UX0ZPVU5EOiBObyBzdWNoIGJ1Y2tldDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE2XG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YToxMDIpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMuYnVja2V0cy5HZXRCdWNrZXQuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKEdldEJ1Y2tldC5qYXZhOjMxKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uQnVja2V0c0RlbGVnYXRvci5nZXQoQnVja2V0c0RlbGVnYXRvci5qYXZhOjc0KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQlVDS0VUX05PVF9GT1VORDogTm8gc3VjaCBidWNrZXQ6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LnJlc291cmNlX2lkLm5hbWUsIG1lc3NhZ2U9bnVsbCwgdW5uYW1lZEFyZ3VtZW50cz1bXX0sIGxvY2F0aW9uPWVudGl0eS5yZXNvdXJjZV9pZC5uYW1lLCBtZXNzYWdlPU5vdCBGb3VuZCwgcmVhc29uPW5vdEZvdW5kLCBycGNDb2RlPTQwNH0gTm90IEZvdW5kOiBjb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QlVDS0VUX05PVF9GT1VORDogQlVDS0VUX05PVF9GT1VORDogTm8gc3VjaCBidWNrZXQ6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5idWNrZXRzLkdldEJ1Y2tldC5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoR2V0QnVja2V0LmphdmE6MTAyKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLmJ1Y2tldHMuR2V0QnVja2V0LmhhbmRsZVJlcXVlc3RSZWNlaXZlZChHZXRCdWNrZXQuamF2YTozMSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLkJ1Y2tldHNEZWxlZ2F0b3IuZ2V0KEJ1Y2tldHNEZWxlZ2F0b3IuamF2YTo3NClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTZcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcblxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS5FcnJvckNvbGxlY3Rvci50b0ZhdWx0KEVycm9yQ29sbGVjdG9yLmphdmE6NTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5RXJyb3JDb252ZXJ0ZXIudG9GYXVsdChSb3N5RXJyb3JDb252ZXJ0ZXIuamF2YTo2Nylcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjI1OClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnJlc3QuYWRhcHRlci5yb3N5LlJvc3lIYW5kbGVyJDIuY2FsbChSb3N5SGFuZGxlci5qYXZhOjIzOClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuTW9yZUV4ZWN1dG9ycyREaXJlY3RFeGVjdXRvci5leGVjdXRlKE1vcmVFeGVjdXRvcnMuamF2YTo0MDIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5leGVjdXRlTGlzdGVuZXIoQWJzdHJhY3RGdXR1cmUuamF2YToxMDI5KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuY29tcGxldGUoQWJzdHJhY3RGdXR1cmUuamF2YTo4NzEpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5zZXQoQWJzdHJhY3RGdXR1cmUuamF2YTo2OTQpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci50aHJlYWQuVGhyZWFkVHJhY2tlcnMkVGhyZWFkVHJhY2tpbmdSdW5uYWJsZS5ydW4oVGhyZWFkVHJhY2tlcnMuamF2YToxMjYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KFRyYWNlQ29udGV4dC5qYXZhOjQ1NSlcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLnNlcnZlci5Db21tb25Nb2R1bGUkQ29udGV4dENhcnJ5aW5nRXhlY3V0b3JTZXJ2aWNlJDEucnVuSW5Db250ZXh0KENvbW1vbk1vZHVsZS5qYXZhOjg0Nilcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRUcmFjZUNvbnRleHRSdW5uYWJsZSQxLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NjIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKFRyYWNlQ29udGV4dC5qYXZhOjMyMSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLlRyYWNlQ29udGV4dCRBYnN0cmFjdFRyYWNlQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTozMTMpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUucnVuKFRyYWNlQ29udGV4dC5qYXZhOjQ1OSlcblx0YXQgY29tLmdvb2dsZS5nc2UuaW50ZXJuYWwuRGlzcGF0Y2hRdWV1ZUltcGwkV29ya2VyVGhyZWFkLnJ1bihEaXNwYXRjaFF1ZXVlSW1wbC5qYXZhOjQwMylcbiIKICAgfQogIF0sCiAgImNvZGUiOiA0MDQsCiAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIgogfQp9Cg==" + } + }, + { + "ID": "c2be0ce973cff84e", + "Request": { + "Method": "POST", + "URL": "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart", + "Proto": "HTTP/1.1", + "Header": { + "Accept-Encoding": [ + "gzip" + ], + "Authorization": [ + "REDACTED" + ], + "Content-Type": [ + "multipart/related; boundary=ae79d8a23439a70e747f9d54fcb229643b199ba3c851bb9c45e30e238c85" + ], + "User-Agent": [ + "google-api-go-client/0.5" + ], + "Via": [ + "1.1 httpr-2cb544b9dcbba457f48c" + ], + "X-Cloud-Trace-Context": [ + "4078d9f02e1f528fbf48d8bb04b722e2/7103319357479610162;o=1" + ], + "X-Forwarded-For": [ + "127.0.0.1" + ], + "X-Forwarded-Host": [ + "www.googleapis.com" + ], + "X-Forwarded-Proto": [ + "https" + ], + "X-Forwarded-Url": [ + "https://www.googleapis.com/upload/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026projection=full\u0026uploadType=multipart" + ], + "X-Goog-Api-Client": [ + "gl-go/1.10.3 gccl/20180226" + ] + }, + "Body": "LS1hZTc5ZDhhMjM0MzlhNzBlNzQ3ZjlkNTRmY2IyMjk2NDNiMTk5YmEzYzg1MWJiOWM0NWUzMGUyMzhjODUNCkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbg0KDQp7ImJ1Y2tldCI6ImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsIm5hbWUiOiJ6ZXJvIn0KDQotLWFlNzlkOGEyMzQzOWE3MGU3NDdmOWQ1NGZjYjIyOTY0M2IxOTliYTNjODUxYmI5YzQ1ZTMwZTIzOGM4NQ0KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04DQoNCg0KLS1hZTc5ZDhhMjM0MzlhNzBlNzQ3ZjlkNTRmY2IyMjk2NDNiMTk5YmEzYzg1MWJiOWM0NWUzMGUyMzhjODUtLQ0K" + }, + "Response": { + "StatusCode": 200, + "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, + "Header": { + "Alt-Svc": [ + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" + ], + "Content-Length": [ + "3560" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Wed, 25 Jul 2018 18:25:26 GMT" + ], + "Etag": [ + "COGml4XwutwCEAE=" + ], + "Expires": [ + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" + ], + "Server": [ + "UploadServer" + ], + "Vary": [ + "Origin", + "X-Origin" + ], + "X-Google-Apiary-Auth-Expires": [ + "1532543426000" + ], + "X-Google-Apiary-Auth-Scopes": [ + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" + ], + "X-Google-Apiary-Auth-User": [ + "998958384336" + ], + "X-Google-Backends": [ + "xgiadacc2:4342,/bns/xi/borg/xi/bns/blobstore2/bitpusher/141.scotty,aclgag9:443" + ], + "X-Google-Dos-Service-Trace": [ + "main:apps-upload-cloud-storage-unified" + ], + "X-Google-Gfe-Backend-Request-Info": [ + "eid=lsBYW4_cDOS8swbfgrT4Ag" + ], + "X-Google-Gfe-Cloud-Project-Number": [ + "36639933145" + ], + "X-Google-Gfe-Request-Trace": [ + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/141.scotty,aclgag9:443" + ], + "X-Google-Gfe-Response-Code-Details-Trace": [ + "response_code_set_by_backend" + ], + "X-Google-Gfe-Service-Trace": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Netmon-Label": [ + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/141:caf3" + ], + "X-Google-Service": [ + "bitpusher-gcs-apiary" + ], + "X-Google-Session-Info": [ + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YWV1RmZRSlBDbTM4UVlNYkRfakdsdnZ4U25TNE9KSk9nUTJIc3d6cmVSZG1OVjlkOG5iYzYtY3g4SFZyYmwxOHZINURDMUdtNHVNTDNaREpQN0xBRVlVeVVhdGtkd1VoVm41dExBaE1PVUdSa2Y3SlllQllQQ3JkaHc0akJCcnB4eFlPMXVIcXd4eTZxUWNkcHFvNFlaaUtlVG9xNXVFVzhkZkdUV25FcU9McU1EMHdBR3c1VGc0dE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + ], + "X-Google-Shellfish-Status": [ + "CA0gBEBG" + ], + "X-Guploader-Customer": [ + "apiary_cloudstorage_single_post_uploads" + ], + "X-Guploader-Request-Result": [ + "success" + ], + "X-Guploader-Upload-Result": [ + "success" + ], + "X-Guploader-Uploadid": [ + "AEnB2UpPy59662ny9_UVVu_GMsKzTKsi8eqHTMyYqYYlnupDGXK5cNm1iZrBo1flSqIFcblz-dWMjlHU20QzNSi25Mxjd8-m9Q" + ] + }, + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC96ZXJvLzE1MzI1NDMxMjYzMjgxNjEiLAogInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby96ZXJvIiwKICJuYW1lIjogInplcm8iLAogImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogImdlbmVyYXRpb24iOiAiMTUzMjU0MzEyNjMyODE2MSIsCiAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyNToyNi4zMjdaIiwKICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MjYuMzI3WiIsCiAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjI1OjI2LjMyN1oiLAogInNpemUiOiAiMCIsCiAibWQ1SGFzaCI6ICIxQjJNMlk4QXNnVHBnQW1ZN1BoQ2ZnPT0iLAogIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vemVybz9nZW5lcmF0aW9uPTE1MzI1NDMxMjYzMjgxNjEmYWx0PW1lZGlhIiwKICJhY2wiOiBbCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3plcm8vMTUzMjU0MzEyNjMyODE2MS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vemVyby9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJvYmplY3QiOiAiemVybyIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMxMjYzMjgxNjEiLAogICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgInJvbGUiOiAiT1dORVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJvd25lcnMiCiAgIH0sCiAgICJldGFnIjogIkNPR21sNFh3dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvemVyby8xNTMyNTQzMTI2MzI4MTYxL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vemVyby9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInplcm8iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTI2MzI4MTYxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJPV05FUiIsCiAgICJwcm9qZWN0VGVhbSI6IHsKICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgIH0sCiAgICJldGFnIjogIkNPR21sNFh3dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvemVyby8xNTMyNTQzMTI2MzI4MTYxL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vemVyby9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInplcm8iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTI2MzI4MTYxIiwKICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAicm9sZSI6ICJSRUFERVIiLAogICAicHJvamVjdFRlYW0iOiB7CiAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICB9LAogICAiZXRhZyI6ICJDT0dtbDRYd3V0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3plcm8vMTUzMjU0MzEyNjMyODE2MS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby96ZXJvL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAib2JqZWN0IjogInplcm8iLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMTI2MzI4MTYxIiwKICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgInJvbGUiOiAiT1dORVIiLAogICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAiZXRhZyI6ICJDT0dtbDRYd3V0d0NFQUU9IgogIH0KIF0sCiAib3duZXIiOiB7CiAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogfSwKICJjcmMzMmMiOiAiQUFBQUFBPT0iLAogImV0YWciOiAiQ09HbWw0WHd1dHdDRUFFPSIKfQo=" + } + }, + { + "ID": "1571b7dd08822890", + "Request": { + "Method": "GET", + "URL": "https://storage.googleapis.com/storage-library-test-bucket/Caf%C3%A9", + "Proto": "HTTP/1.1", + "Header": { + "Accept-Encoding": [ + "gzip" + ], + "Authorization": [ + "REDACTED" + ], + "User-Agent": [ + "Go-http-client/1.1" + ], + "Via": [ + "1.1 httpr-2cb544b9dcbba457f48c" + ], + "X-Cloud-Trace-Context": [ + "66d0047fed0cd17e0b1edd6fe6c7d64e/10887913406376093888;o=1" + ], + "X-Forwarded-For": [ + "127.0.0.1" + ], + "X-Forwarded-Host": [ + "storage.googleapis.com" + ], + "X-Forwarded-Proto": [ + "https" + ], + "X-Forwarded-Url": [ + "https://storage.googleapis.com/storage-library-test-bucket/Caf%C3%A9" + ] + }, + "Body": "" + }, + "Response": { + "StatusCode": 200, + "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, + "Header": { + "Accept-Ranges": [ + "bytes" + ], + "Alt-Svc": [ + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "public, max-age=3600" + ], + "Content-Length": [ + "20" + ], + "Content-Type": [ + "text/plain" + ], + "Date": [ + "Wed, 25 Jul 2018 18:25:26 GMT" + ], + "Etag": [ + "\"ade43306cb39336d630e101af5fb51b4\"" + ], + "Expires": [ + "Wed, 25 Jul 2018 19:25:26 GMT" + ], + "Last-Modified": [ + "Fri, 24 Mar 2017 20:04:38 GMT" + ], + "Server": [ + "UploadServer" + ], + "X-Goog-Generation": [ + "1490385878535828" + ], + "X-Goog-Hash": [ + "crc32c=fN3yZg==", + "md5=reQzBss5M21jDhAa9ftRtA==" + ], + "X-Goog-Metageneration": [ + "2" + ], + "X-Goog-Storage-Class": [ + "MULTI_REGIONAL" + ], + "X-Goog-Stored-Content-Encoding": [ + "identity" + ], + "X-Goog-Stored-Content-Length": [ + "20" + ], + "X-Google-Backends": [ + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/514,/bns/yb/borg/yb/bns/blobstore2/bitpusher/620.scotty,ybpy2-v6:443" + ], + "X-Google-Dos-Service-Trace": [ + "main:apps-upload-cloud-storage-unified" + ], + "X-Google-Gfe-Backend-Request-Info": [ + "eid=lsBYW-SLC8ajlAGOmon4AQ" + ], + "X-Google-Gfe-Cloud-Project-Number": [ + "149776848335" + ], + "X-Google-Gfe-Request-Trace": [ + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/620.scotty,ybpy2-v6:443" + ], + "X-Google-Gfe-Response-Code-Details-Trace": [ + "response_code_set_by_backend" + ], + "X-Google-Gfe-Service-Trace": [ + "bitpusher-cloud-storage" + ], + "X-Google-Netmon-Label": [ + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/620:caf3" + ], + "X-Google-Service": [ + "bitpusher-cloud-storage" + ], + "X-Google-Shellfish-Status": [ + "CA0gBEBJ" + ], + "X-Google-Storage-Location": [ + "US" + ], + "X-Guploader-Customer": [ + "cloud-storage" + ], + "X-Guploader-Request-Result": [ + "success" + ], + "X-Guploader-Upload-Result": [ + "success" + ], + "X-Guploader-Uploadid": [ + "AEnB2Uq9wPkJ3Qf3GdQhgRbiDDu-RKGoe6ODiYoPkuLSzNylFEQ62Sby92vKwacoODKO-FfgAgybNX5OxWimcynu1dfYXlvtpmcV4Frddc8bFJ8kCej7IPU" + ] + }, + "Body": "Tm9ybWFsaXphdGlvbiBGb3JtIEM=" + } + }, + { + "ID": "0c6bd3b67e47f5a4", + "Request": { + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0016/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false", + "Proto": "HTTP/1.1", + "Header": { + "Accept-Encoding": [ + "gzip" + ], + "Authorization": [ + "REDACTED" + ], + "User-Agent": [ + "google-api-go-client/0.5" + ], + "Via": [ + "1.1 httpr-2cb544b9dcbba457f48c" + ], + "X-Cloud-Trace-Context": [ + "a20060bf013704f7356a613369f0f5d7/14744282479133911118;o=1" + ], + "X-Forwarded-For": [ + "127.0.0.1" + ], + "X-Forwarded-Host": [ + "www.googleapis.com" + ], + "X-Forwarded-Proto": [ + "https" + ], + "X-Forwarded-Url": [ + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0016/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false" + ], + "X-Goog-Api-Client": [ + "gl-go/1.10.3 gccl/20180226" + ] + }, + "Body": "" + }, + "Response": { + "StatusCode": 404, + "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, + "Header": { + "Alt-Svc": [ + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" + ], + "Cache-Control": [ + "private, max-age=0" + ], + "Content-Length": [ + "12287" + ], + "Content-Type": [ + "application/json; charset=UTF-8" + ], + "Date": [ + "Wed, 25 Jul 2018 18:25:26 GMT" + ], + "Expires": [ + "Wed, 25 Jul 2018 18:25:26 GMT" + ], + "Server": [ + "UploadServer" + ], + "Vary": [ + "Origin", + "X-Origin" + ], + "X-Google-Apiary-Auth-Expires": [ + "1532543426000" + ], + "X-Google-Apiary-Auth-Scopes": [ + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + ], + "X-Google-Apiary-Auth-User": [ + "998958384336" + ], + "X-Google-Backends": [ + "xiiadcah5:4482,/bns/xi/borg/xi/bns/blobstore2/bitpusher/11.scotty,aclgag4:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=E081W5vCNs-NgQTlgp7gAg" + "eid=lsBYW4zkDZC3swb1pLGIDQ" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/992.scotty,yabq4-v6:443" + "aclgag4:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/11.scotty,aclgag4:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -43717,13 +44791,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/992:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/11:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3YWV1RmZRSlBDbTM4UVlNYkRfakdsdnZ4U25TNE9KSk9nUTJIc3d6cmVSZG1OVjlkOG5iYzYtY3g4SFZyYmwxOHZINURDMUdtNHVNTDNaREpQN0xBRVlVeVVhdGtkd1VoVm41dExBaE1PVUdSa2Y3SlllQllQQ3JkaHc0akJCcnB4eFlPMXVIcXd4eTZxUWNkcHFvNFlaaUtlVG9xNXVFVzhkZkdUV25FcU9McU1EMHdBR3c1VGc0dE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -43732,23 +44806,23 @@ "apiary_cloudstorage_metadata" ], "X-Guploader-Request-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Upload-Result": [ - "success" + "agent_rejected" ], "X-Guploader-Uploadid": [ - "AEnB2UrbF34gEFtIaYF5hDBng4rcMmk-Kgr9SkFjcOt6YKzbvRXgiPHHqUYvg9CZp1RE8WkCxuB8JycfwI_pXfRE0QJvK88lT2qWTqWBI8WwSxoNpKczCi0" + "AEnB2UpQRRpazFPvdvBBoP9cJ21EhjuqXHssK-BCyriN_NENEDKOxN3_0frAyhXjhzV1l0V_Bxer2PnA8DKDtnHOsNWCXz0jjA" ] }, - "Body": "" + "Body": "ewogImVycm9yIjogewogICJlcnJvcnMiOiBbCiAgIHsKICAgICJkb21haW4iOiAiZ2xvYmFsIiwKICAgICJyZWFzb24iOiAibm90Rm91bmQiLAogICAgIm1lc3NhZ2UiOiAiTm90IEZvdW5kIiwKICAgICJkZWJ1Z0luZm8iOiAiY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkJVQ0tFVF9OT1RfRk9VTkQ6IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTZcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5MaXN0T2JqZWN0cy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdE9iamVjdHMuamF2YToxNjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5MaXN0T2JqZWN0cy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdE9iamVjdHMuamF2YTozOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IubGlzdChPYmplY3RzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBCVUNLRVRfTk9UX0ZPVU5EOiBObyBzdWNoIGJ1Y2tldDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE2XG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cbmNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLkZhdWx0OiBJbW11dGFibGVFcnJvckRlZmluaXRpb257YmFzZT1OT1RfRk9VTkQsIGNhdGVnb3J5PVVTRVJfRVJST1IsIGNhdXNlPW51bGwsIGRlYnVnSW5mbz1jb20uZ29vZ2xlLm5ldC5ycGMzLlJwY0V4Y2VwdGlvbjogY2xvdWQuYmlnc3RvcmUuUmVzcG9uc2VDb2RlLkVycm9yQ29kZTo6QlVDS0VUX05PVF9GT1VORDogQlVDS0VUX05PVF9GT1VORDogTm8gc3VjaCBidWNrZXQ6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50b1JwYzNFeGNlcHRpb24oQmlnc3RvcmVFeGNlcHRpb24uamF2YToxMTgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjk3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo1Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkxpc3RPYmplY3RzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0T2JqZWN0cy5qYXZhOjE2MClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5oYW5kbGVycy5vYmplY3RzLkxpc3RPYmplY3RzLmhhbmRsZVJlcXVlc3RSZWNlaXZlZChMaXN0T2JqZWN0cy5qYXZhOjM4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5SZXF1ZXN0SGFuZGxlci5oYW5kbGUoUmVxdWVzdEhhbmRsZXIuamF2YTozMDMpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uT2JqZWN0c0RlbGVnYXRvci5saXN0KE9iamVjdHNEZWxlZ2F0b3IuamF2YTo4OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uUnBjUmVjZWl2ZXIubGFtYmRhJHByb2Nlc3NSZXF1ZXN0QXN5bmMkMyhScGNSZWNlaXZlci5qYXZhOjE2OSlcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5pc29sYXRpb24uQXN5bmNFeGVjdXRvci5sYW1iZGEkc3VibWl0JDAoQXN5bmNFeGVjdXRvci5qYXZhOjI0Mylcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuSW5Db250ZXh0KENvbnRleHRSdW5uYWJsZS5qYXZhOjUwKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZSQxLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozOSlcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkN1cnJlbnRDb250ZXh0LnJ1bkluQ29udGV4dChDdXJyZW50Q29udGV4dC5qYXZhOjMyMClcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NzIpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dChHZW5lcmljQ29udGV4dENhbGxiYWNrLmphdmE6NjQpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bihDb250ZXh0UnVubmFibGUuamF2YTozNilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JzJFJ1bm5hYmxlQWRhcHRlci5jYWxsKEV4ZWN1dG9ycy5qYXZhOjUxMSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzay5ydW4oRnV0dXJlVGFzay5qYXZhOjI2Nilcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTQ5KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IkV29ya2VyLnJ1bihUaHJlYWRQb29sRXhlY3V0b3IuamF2YTo2MjQpXG5cdGF0IGphdmEubGFuZy5UaHJlYWQucnVuKFRocmVhZC5qYXZhOjc0OClcbkNhdXNlZCBieTogY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb246IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTZcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udGhyb3dPbkVycm9yKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6Mjc2KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Mylcblx0Li4uIDE4IG1vcmVcbiwgZG9tYWluPWdsb2JhbCwgZXh0ZW5kZWRIZWxwPW51bGwsIGh0dHBIZWFkZXJzPXt9LCBodHRwU3RhdHVzPW5vdEZvdW5kLCBpbnRlcm5hbFJlYXNvbj1SZWFzb257YXJndW1lbnRzPXt9LCBjYXVzZT1udWxsLCBjb2RlPWdkYXRhLkNvcmVFcnJvckRvbWFpbi5OT1RfRk9VTkQsIGNyZWF0ZWRCeUJhY2tlbmQ9dHJ1ZSwgZGVidWdNZXNzYWdlPWNvbS5nb29nbGUubmV0LnJwYzMuUnBjRXhjZXB0aW9uOiBjbG91ZC5iaWdzdG9yZS5SZXNwb25zZUNvZGUuRXJyb3JDb2RlOjpCVUNLRVRfTk9UX0ZPVU5EOiBCVUNLRVRfTk9UX0ZPVU5EOiBObyBzdWNoIGJ1Y2tldDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE2XG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRvUnBjM0V4Y2VwdGlvbihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjExOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjU3KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuTGlzdE9iamVjdHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RPYmplY3RzLmphdmE6MTYwKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmhhbmRsZXJzLm9iamVjdHMuTGlzdE9iamVjdHMuaGFuZGxlUmVxdWVzdFJlY2VpdmVkKExpc3RPYmplY3RzLmphdmE6MzgpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLlJlcXVlc3RIYW5kbGVyLmhhbmRsZShSZXF1ZXN0SGFuZGxlci5qYXZhOjMwMylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5PYmplY3RzRGVsZWdhdG9yLmxpc3QoT2JqZWN0c0RlbGVnYXRvci5qYXZhOjg5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5ScGNSZWNlaXZlci5sYW1iZGEkcHJvY2Vzc1JlcXVlc3RBc3luYyQzKFJwY1JlY2VpdmVyLmphdmE6MTY5KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmlzb2xhdGlvbi5Bc3luY0V4ZWN1dG9yLmxhbWJkYSRzdWJtaXQkMChBc3luY0V4ZWN1dG9yLmphdmE6MjQzKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW5JbkNvbnRleHQoQ29udGV4dFJ1bm5hYmxlLmphdmE6NTApXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlJDEucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM5KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHROb1VucmVmKEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo3Milcblx0YXQgY29tLmdvb2dsZS50cmFjaW5nLkdlbmVyaWNDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0KEdlbmVyaWNDb250ZXh0Q2FsbGJhY2suamF2YTo2NClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUucnVuKENvbnRleHRSdW5uYWJsZS5qYXZhOjM2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvcnMkUnVubmFibGVBZGFwdGVyLmNhbGwoRXhlY3V0b3JzLmphdmE6NTExKVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrLnJ1bihGdXR1cmVUYXNrLmphdmE6MjY2KVxuXHRhdCBqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IucnVuV29ya2VyKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjExNDkpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjYyNClcblx0YXQgamF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6NzQ4KVxuQ2F1c2VkIGJ5OiBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbjogQlVDS0VUX05PVF9GT1VORDogTm8gc3VjaCBidWNrZXQ6IGdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxNlxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmNvbW1vbi5CaWdzdG9yZUV4Y2VwdGlvbi50aHJvd09uRXJyb3IoQmlnc3RvcmVFeGNlcHRpb24uamF2YToyNzYpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uZnJhbWV3b3JrLkJhY2tlbmRDYWxsVXRpbC5jYWxsKEJhY2tlbmRDYWxsVXRpbC5qYXZhOjkzKVxuXHQuLi4gMTggbW9yZVxuLCBlcnJvclByb3RvQ29kZT1OT1RfRk9VTkQsIGVycm9yUHJvdG9Eb21haW49Z2RhdGEuQ29yZUVycm9yRG9tYWluLCBmaWx0ZXJlZE1lc3NhZ2U9bnVsbCwgbG9jYXRpb249ZW50aXR5LmJ1Y2tldCwgbWVzc2FnZT1udWxsLCB1bm5hbWVkQXJndW1lbnRzPVtdfSwgbG9jYXRpb249ZW50aXR5LmJ1Y2tldCwgbWVzc2FnZT1Ob3QgRm91bmQsIHJlYXNvbj1ub3RGb3VuZCwgcnBjQ29kZT00MDR9IE5vdCBGb3VuZDogY29tLmdvb2dsZS5uZXQucnBjMy5ScGNFeGNlcHRpb246IGNsb3VkLmJpZ3N0b3JlLlJlc3BvbnNlQ29kZS5FcnJvckNvZGU6OkJVQ0tFVF9OT1RfRk9VTkQ6IEJVQ0tFVF9OT1RfRk9VTkQ6IE5vIHN1Y2ggYnVja2V0OiBnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTZcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5jb21tb24uQmlnc3RvcmVFeGNlcHRpb24udG9ScGMzRXhjZXB0aW9uKEJpZ3N0b3JlRXhjZXB0aW9uLmphdmE6MTE4KVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLmZyYW1ld29yay5CYWNrZW5kQ2FsbFV0aWwuY2FsbChCYWNrZW5kQ2FsbFV0aWwuamF2YTo5Nylcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6NTcpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5MaXN0T2JqZWN0cy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdE9iamVjdHMuamF2YToxNjApXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuYXBpLmpzb24uaGFuZGxlcnMub2JqZWN0cy5MaXN0T2JqZWN0cy5oYW5kbGVSZXF1ZXN0UmVjZWl2ZWQoTGlzdE9iamVjdHMuamF2YTozOClcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuUmVxdWVzdEhhbmRsZXIuaGFuZGxlKFJlcXVlc3RIYW5kbGVyLmphdmE6MzAzKVxuXHRhdCBjb20uZ29vZ2xlLmNsb3VkLmJpZ3N0b3JlLmFwaS5qc29uLk9iamVjdHNEZWxlZ2F0b3IubGlzdChPYmplY3RzRGVsZWdhdG9yLmphdmE6ODkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLlJwY1JlY2VpdmVyLmxhbWJkYSRwcm9jZXNzUmVxdWVzdEFzeW5jJDMoUnBjUmVjZWl2ZXIuamF2YToxNjkpXG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuaXNvbGF0aW9uLkFzeW5jRXhlY3V0b3IubGFtYmRhJHN1Ym1pdCQwKEFzeW5jRXhlY3V0b3IuamF2YToyNDMpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLmNvbnRleHQuQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChDb250ZXh0UnVubmFibGUuamF2YTo1MClcblx0YXQgY29tLmdvb2dsZS5jb21tb24uY29udGV4dC5Db250ZXh0UnVubmFibGUkMS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzkpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5DdXJyZW50Q29udGV4dC5ydW5JbkNvbnRleHQoQ3VycmVudENvbnRleHQuamF2YTozMjApXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5HZW5lcmljQ29udGV4dENhbGxiYWNrLnJ1bkluSW5oZXJpdGVkQ29udGV4dE5vVW5yZWYoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjcyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuR2VuZXJpY0NvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoR2VuZXJpY0NvbnRleHRDYWxsYmFjay5qYXZhOjY0KVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi5jb250ZXh0LkNvbnRleHRSdW5uYWJsZS5ydW4oQ29udGV4dFJ1bm5hYmxlLmphdmE6MzYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9ycyRSdW5uYWJsZUFkYXB0ZXIuY2FsbChFeGVjdXRvcnMuamF2YTo1MTEpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZVRhc2sucnVuKEZ1dHVyZVRhc2suamF2YToyNjYpXG5cdGF0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvci5ydW5Xb3JrZXIoVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6MTE0OSlcblx0YXQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yJFdvcmtlci5ydW4oVGhyZWFkUG9vbEV4ZWN1dG9yLmphdmE6NjI0KVxuXHRhdCBqYXZhLmxhbmcuVGhyZWFkLnJ1bihUaHJlYWQuamF2YTo3NDgpXG5DYXVzZWQgYnk6IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uOiBCVUNLRVRfTk9UX0ZPVU5EOiBObyBzdWNoIGJ1Y2tldDogZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDE2XG5cdGF0IGNvbS5nb29nbGUuY2xvdWQuYmlnc3RvcmUuY29tbW9uLkJpZ3N0b3JlRXhjZXB0aW9uLnRocm93T25FcnJvcihCaWdzdG9yZUV4Y2VwdGlvbi5qYXZhOjI3Nilcblx0YXQgY29tLmdvb2dsZS5jbG91ZC5iaWdzdG9yZS5hcGkuanNvbi5mcmFtZXdvcmsuQmFja2VuZENhbGxVdGlsLmNhbGwoQmFja2VuZENhbGxVdGlsLmphdmE6OTMpXG5cdC4uLiAxOCBtb3JlXG5cblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUuRXJyb3JDb2xsZWN0b3IudG9GYXVsdChFcnJvckNvbGxlY3Rvci5qYXZhOjU0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIucmVzdC5hZGFwdGVyLnJvc3kuUm9zeUVycm9yQ29udmVydGVyLnRvRmF1bHQoUm9zeUVycm9yQ29udmVydGVyLmphdmE6NjcpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyNTgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5yZXN0LmFkYXB0ZXIucm9zeS5Sb3N5SGFuZGxlciQyLmNhbGwoUm9zeUhhbmRsZXIuamF2YToyMzgpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5jb3JlLnV0aWwuQ2FsbGFibGVGdXR1cmUucnVuKENhbGxhYmxlRnV0dXJlLmphdmE6NjIpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5Nb3JlRXhlY3V0b3JzJERpcmVjdEV4ZWN1dG9yLmV4ZWN1dGUoTW9yZUV4ZWN1dG9ycy5qYXZhOjQwMilcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmV4ZWN1dGVMaXN0ZW5lcihBYnN0cmFjdEZ1dHVyZS5qYXZhOjEwMjkpXG5cdGF0IGNvbS5nb29nbGUuY29tbW9uLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEZ1dHVyZS5jb21wbGV0ZShBYnN0cmFjdEZ1dHVyZS5qYXZhOjg3MSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLnNldChBYnN0cmFjdEZ1dHVyZS5qYXZhOjY5NClcblx0YXQgY29tLmdvb2dsZS5hcGkuc2VydmVyLmNvcmUudXRpbC5DYWxsYWJsZUZ1dHVyZS5ydW4oQ2FsbGFibGVGdXR1cmUuamF2YTo2Milcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50Lk1vcmVFeGVjdXRvcnMkRGlyZWN0RXhlY3V0b3IuZXhlY3V0ZShNb3JlRXhlY3V0b3JzLmphdmE6NDAyKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuZXhlY3V0ZUxpc3RlbmVyKEFic3RyYWN0RnV0dXJlLmphdmE6MTAyOSlcblx0YXQgY29tLmdvb2dsZS5jb21tb24udXRpbC5jb25jdXJyZW50LkFic3RyYWN0RnV0dXJlLmNvbXBsZXRlKEFic3RyYWN0RnV0dXJlLmphdmE6ODcxKVxuXHRhdCBjb20uZ29vZ2xlLmNvbW1vbi51dGlsLmNvbmN1cnJlbnQuQWJzdHJhY3RGdXR1cmUuc2V0KEFic3RyYWN0RnV0dXJlLmphdmE6Njk0KVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIuY29yZS51dGlsLkNhbGxhYmxlRnV0dXJlLnJ1bihDYWxsYWJsZUZ1dHVyZS5qYXZhOjYyKVxuXHRhdCBjb20uZ29vZ2xlLmFwaS5zZXJ2ZXIudGhyZWFkLlRocmVhZFRyYWNrZXJzJFRocmVhZFRyYWNraW5nUnVubmFibGUucnVuKFRocmVhZFRyYWNrZXJzLmphdmE6MTI2KVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bkluQ29udGV4dChUcmFjZUNvbnRleHQuamF2YTo0NTUpXG5cdGF0IGNvbS5nb29nbGUuYXBpLnNlcnZlci5zZXJ2ZXIuQ29tbW9uTW9kdWxlJENvbnRleHRDYXJyeWluZ0V4ZWN1dG9yU2VydmljZSQxLnJ1bkluQ29udGV4dChDb21tb25Nb2R1bGUuamF2YTo4NDYpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkVHJhY2VDb250ZXh0UnVubmFibGUkMS5ydW4oVHJhY2VDb250ZXh0LmphdmE6NDYyKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuQ3VycmVudENvbnRleHQucnVuSW5Db250ZXh0KEN1cnJlbnRDb250ZXh0LmphdmE6MzIwKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JEFic3RyYWN0VHJhY2VDb250ZXh0Q2FsbGJhY2sucnVuSW5Jbmhlcml0ZWRDb250ZXh0Tm9VbnJlZihUcmFjZUNvbnRleHQuamF2YTozMjEpXG5cdGF0IGNvbS5nb29nbGUudHJhY2luZy5UcmFjZUNvbnRleHQkQWJzdHJhY3RUcmFjZUNvbnRleHRDYWxsYmFjay5ydW5JbkluaGVyaXRlZENvbnRleHQoVHJhY2VDb250ZXh0LmphdmE6MzEzKVxuXHRhdCBjb20uZ29vZ2xlLnRyYWNpbmcuVHJhY2VDb250ZXh0JFRyYWNlQ29udGV4dFJ1bm5hYmxlLnJ1bihUcmFjZUNvbnRleHQuamF2YTo0NTkpXG5cdGF0IGNvbS5nb29nbGUuZ3NlLmludGVybmFsLkRpc3BhdGNoUXVldWVJbXBsJFdvcmtlclRocmVhZC5ydW4oRGlzcGF0Y2hRdWV1ZUltcGwuamF2YTo0MDMpXG4iCiAgIH0KICBdLAogICJjb2RlIjogNDA0LAogICJtZXNzYWdlIjogIk5vdCBGb3VuZCIKIH0KfQo=" } }, { - "ID": "3f44ca719bbbef0e", + "ID": "017fcebaf548cf3b", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/composed1?alt=json", + "Method": "GET", + "URL": "https://storage.googleapis.com/storage-library-test-bucket/Cafe%CC%81", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -43758,105 +44832,119 @@ "REDACTED" ], "User-Agent": [ - "google-api-go-client/0.5" + "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d23f5a58aba3f35442898f79836abfbc/14960325228841164218;o=1" + "989de3ddd04e71366c109926d5b97db4/3938781898265553259;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ - "www.googleapis.com" + "storage.googleapis.com" ], "X-Forwarded-Proto": [ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/composed1?alt=json" - ], - "X-Goog-Api-Client": [ - "gl-go/1.10.3 gccl/20180226" + "https://storage.googleapis.com/storage-library-test-bucket/Cafe%CC%81" ] }, "Body": "" }, "Response": { - "StatusCode": 204, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { + "Accept-Ranges": [ + "bytes" + ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "public, max-age=3600" ], "Content-Length": [ - "0" + "20" ], "Content-Type": [ - "application/json" + "text/plain" ], "Date": [ - "Thu, 28 Jun 2018 21:11:48 GMT" + "Wed, 25 Jul 2018 18:25:26 GMT" + ], + "Etag": [ + "\"df597679bac7c6150429ad80a1a05680\"" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" + "Wed, 25 Jul 2018 19:25:26 GMT" ], - "Pragma": [ - "no-cache" + "Last-Modified": [ + "Fri, 24 Mar 2017 20:04:37 GMT" ], "Server": [ "UploadServer" ], - "Vary": [ - "Origin", - "X-Origin" + "X-Goog-Generation": [ + "1490385877705600" ], - "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "X-Goog-Hash": [ + "crc32c=qBeWjQ==", + "md5=31l2ebrHxhUEKa2AoaBWgA==" ], - "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" + "X-Goog-Metageneration": [ + "2" ], - "X-Google-Apiary-Auth-User": [ - "998958384336" + "X-Goog-Storage-Class": [ + "MULTI_REGIONAL" + ], + "X-Goog-Stored-Content-Encoding": [ + "identity" + ], + "X-Goog-Stored-Content-Length": [ + "20" ], "X-Google-Backends": [ - "vrae22:4190,/bns/yv/borg/yv/bns/blobstore2/bitpusher/365.scotty,yabq4-v6:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/152,/bns/yb/borg/yb/bns/blobstore2/bitpusher/204.scotty,ybpy2-v6:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=FE81W9bpBoSOggTG3pLAAg" + "eid=lsBYW42kEsiA7AKriaOYBg" + ], + "X-Google-Gfe-Cloud-Project-Number": [ + "149776848335" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/365.scotty,yabq4-v6:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/204.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" ], "X-Google-Gfe-Service-Trace": [ - "bitpusher-gcs-apiary" + "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/365:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/204:caf3" ], "X-Google-Service": [ - "bitpusher-gcs-apiary" - ], - "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" + ], + "X-Google-Storage-Location": [ + "US" ], "X-Guploader-Customer": [ - "apiary_cloudstorage_metadata" + "cloud-storage" ], "X-Guploader-Request-Result": [ "success" @@ -43865,17 +44953,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur4rSMY4KaBrnrBgCgyfP4uWofPSRerp2zhOs3flZp0qkWu_D_TRL4x_RU2Ei5_akUAorSv856n8NiM6c6q3AtugIqdPXQq3zsZfL6IvXeGU17bLhA" + "AEnB2Uo0h15hScJvRNmMwatVxUgo_x8wRG6FrZP2WzvozRii_JIG4yo6Yc0MxFlXt5sEPkDV8h-jq39Anc-GYI1_ex8QOjcpyGc3iOYu1zeMiQuWGxOyQIM" ] }, - "Body": "" + "Body": "Tm9ybWFsaXphdGlvbiBGb3JtIEQ=" } }, { - "ID": "0b071fb24fc3fcc1", + "ID": "e4925d1924454d4b", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/composed2?alt=json", + "Method": "GET", + "URL": "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/zero", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -43885,105 +44973,125 @@ "REDACTED" ], "User-Agent": [ - "google-api-go-client/0.5" + "Go-http-client/1.1" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "83182f25d90fb5ad1fc17cd935f62bd6/15767752009855540938;o=1" + "097128dee5151539c8a3c3331f7fab4c/11579745015624952455;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ - "www.googleapis.com" + "storage.googleapis.com" ], "X-Forwarded-Proto": [ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/composed2?alt=json" - ], - "X-Goog-Api-Client": [ - "gl-go/1.10.3 gccl/20180226" + "https://storage.googleapis.com/go-integration-test-20180725-66174009628628-0000/zero" ] }, "Body": "" }, "Response": { - "StatusCode": 204, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { + "Accept-Ranges": [ + "bytes" + ], "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0" ], "Content-Length": [ "0" ], "Content-Type": [ - "application/json" + "text/plain; charset=utf-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:48 GMT" + "Wed, 25 Jul 2018 18:25:26 GMT" + ], + "Etag": [ + "\"d41d8cd98f00b204e9800998ecf8427e\"" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" + "Wed, 25 Jul 2018 18:25:26 GMT" ], - "Pragma": [ - "no-cache" + "Last-Modified": [ + "Wed, 25 Jul 2018 18:25:26 GMT" ], "Server": [ "UploadServer" ], - "Vary": [ - "Origin", - "X-Origin" + "X-Goog-Expiration": [ + "Fri, 24 Aug 2018 18:25:26 GMT" ], - "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "X-Goog-Generation": [ + "1532543126328161" ], - "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" + "X-Goog-Hash": [ + "crc32c=AAAAAA==", + "md5=1B2M2Y8AsgTpgAmY7PhCfg==" ], - "X-Google-Apiary-Auth-User": [ - "998958384336" + "X-Goog-Metageneration": [ + "1" + ], + "X-Goog-Storage-Class": [ + "STANDARD" + ], + "X-Goog-Stored-Content-Encoding": [ + "identity" + ], + "X-Goog-Stored-Content-Length": [ + "0" ], "X-Google-Backends": [ - "vrhm7:4367,/bns/yv/borg/yv/bns/blobstore2/bitpusher/953.scotty,yabq4-v6:443" + "/bns/vn/borg/vn/bns/cloud-storage/prod-cloud-storage-frontend.frontend/384,/bns/yb/borg/yb/bns/blobstore2/bitpusher/279.scotty,ybpy2-v6:443" + ], + "X-Google-Cache-Control": [ + "no-cache, no-store, max-age=0, must-revalidate" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=FE81W6HQEcrYgQTUhLqADw" + "eid=lsBYW-HKG4i7lgGFtKfoCw" + ], + "X-Google-Gfe-Cloud-Project-Number": [ + "36639933145" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/953.scotty,yabq4-v6:443" + "ybpy2-v6:443,/bns/yb/borg/yb/bns/blobstore2/bitpusher/279.scotty,ybpy2-v6:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" ], "X-Google-Gfe-Service-Trace": [ - "bitpusher-gcs-apiary" + "bitpusher-cloud-storage" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/953:caf3" + "/bns/yb/borg/yb/bns/blobstore2/bitpusher/279:caf3" ], "X-Google-Service": [ - "bitpusher-gcs-apiary" - ], - "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "bitpusher-cloud-storage" ], "X-Google-Shellfish-Status": [ - "CA0gBEBG" + "CA0gBEBJ" + ], + "X-Google-Storage-Location": [ + "US" ], "X-Guploader-Customer": [ - "apiary_cloudstorage_metadata" + "cloud-storage" ], "X-Guploader-Request-Result": [ "success" @@ -43992,17 +45100,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrJgpjtairKPdhvXmzYv-MkBDa-tVyTB1JqVXOMRpoMv8IKY1wisFCSjGWGGU1KXSCUnDrou9MmovhbiMPU6lk8wa0scw88S6z3gQkN8AgUE345u9Y" + "AEnB2Uod6Eq_7U_fBUxiwXVPSqVHf_FioCpc8c7sXxd4CmLhygsVMgP_qjM4_WKSscSfqxN2CkgKkAji5WpaxnDgeTZ2clvcUCNmEFS9lkAdtDPf70QQdzw" ] }, "Body": "" } }, { - "ID": "01d09ce74da19cc0", + "ID": "4ebbf41b4fb66605", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/content?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/zero?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -44015,13 +45123,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "b99cec3bbd0a67624c24e0fe3d87b8fb/16503402667513798873;o=1" + "cfa18e9458c5397ea282548431f9234e/15364057593839627030;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -44030,7 +45138,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/content?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/zero?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -44041,9 +45149,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -44055,7 +45165,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:48 GMT" + "Wed, 25 Jul 2018 18:25:26 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -44071,7 +45181,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543426000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -44080,16 +45190,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrfn12:4237,/bns/yv/borg/yv/bns/blobstore2/bitpusher/371.scotty,yabq4-v6:443" + "xiiadcak10:4214,/bns/xi/borg/xi/bns/blobstore2/bitpusher/19.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=FE81W_zoI4HMgQSH7pz4Aw" + "eid=lsBYW_2xIKq9swbDjZfoCQ" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/371.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/19.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -44098,13 +45208,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/371:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/19:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3YWV1RmZRSlBDbTM4UVlNYkRfakdsdnZ4U25TNE9KSk9nUTJIc3d6cmVSZG1OVjlkOG5iYzYtY3g4SFZyYmwxOHZINURDMUdtNHVNTDNaREpQN0xBRVlVeVVhdGtkd1VoVm41dExBaE1PVUdSa2Y3SlllQllQQ3JkaHc0akJCcnB4eFlPMXVIcXd4eTZxUWNkcHFvNFlaaUtlVG9xNXVFVzhkZkdUV25FcU9McU1EMHdBR3c1VGc0dE0wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -44119,17 +45229,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqdnIZxv_LoKM4wv-zOvNSyDb4WPv98lYHPRRK6b3uoB2ytHakHqW3Y9EELijP_p02hHqls8VrlPbVdlCMpTIbxH-t4GK4KFcZZkeANpRxdQElZJ04" + "AEnB2Uo7DEValD47whSTXCxQWI_zXdNAK6LMJR01WjDBeaQ07TYdOAvYl0_9Xhr_6rD3IRleeLhV4OGHTxy2HCCi-x8Cghfecw" ] }, "Body": "" } }, { - "ID": "4706e83991b3d511", + "ID": "f287344a585a1ef4", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption?alt=json", + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -44142,13 +45252,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "448c389cfaf76c1ea190b016851299b2/17310829448528175593;o=1" + "f434fec58b300ab04cc7abada52d1cdc/774244434756594596;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -44157,7 +45267,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -44166,29 +45276,28 @@ "Body": "" }, "Response": { - "StatusCode": 204, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0, must-revalidate, no-transform" ], "Content-Length": [ - "0" + "72776" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:48 GMT" + "Wed, 25 Jul 2018 18:25:31 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:25:31 GMT" ], "Server": [ "UploadServer" @@ -44198,25 +45307,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrar3:4282,/bns/yv/borg/yv/bns/blobstore2/bitpusher/304.scotty,yabq4-v6:443" + "xhiadbat10:4221,/bns/xi/borg/xi/bns/blobstore2/bitpusher/122.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=FE81W9eaL86gggSLx7LIDg" + "eid=m8BYW-2yCYKGygOlr4XwAg" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/304.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/122.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -44225,13 +45334,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/304:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/122:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -44246,17 +45355,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UqfPIkjSxcfmR1udreZ1nfIDUVif6NXwqoHIu6srUKigANDtAXmsYy3dnadUZi7pRATMeS6d32YYFn1K3LwY7LxEoYHOw0hISFg3uMthuqrGn7WrAs" + "AEnB2UpJIhxuy_eqNDdLmThyNt4UL7VVtN0tIXH-QEBIRE0oNJd7KtNGpfTL9uCl50YxtYiMBy1ilXNYuIMZQl1XFi2Yis-w-w" ] }, - "Body": "" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wxLzE1MzI1NDMwMDU1NTQwMTUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2FjbDEiLAogICAibmFtZSI6ICJhY2wxIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA1NTU0MDE1IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjI1LjU1MloiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjI2LjQ0M1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjUuNTUyWiIsCiAgICJzaXplIjogIjE2IiwKICAgIm1kNUhhc2giOiAiQXRlNS9sRENZanNiUFVhSXVoaE95UT09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMT9nZW5lcmF0aW9uPTE1MzI1NDMwMDU1NTQwMTUmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wxLzE1MzI1NDMwMDU1NTQwMTUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImFjbDEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDU1NTQwMTUiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ04vcXk4dnZ1dHdDRUFJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FjbDEvMTUzMjU0MzAwNTU1NDAxNS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJhY2wxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA1NTU0MDE1IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ04vcXk4dnZ1dHdDRUFJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FjbDEvMTUzMjU0MzAwNTU1NDAxNS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vYWNsMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJhY2wxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA1NTU0MDE1IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNOL3F5OHZ2dXR3Q0VBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wxLzE1MzI1NDMwMDU1NTQwMTUvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hY2wxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJhY2wxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA1NTU0MDE1IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOL3F5OHZ2dXR3Q0VBST0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJtaU1Xcmc9PSIsCiAgICJldGFnIjogIkNOL3F5OHZ2dXR3Q0VBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wyLzE1MzI1NDMwMDYwNDczMTciLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2FjbDIiLAogICAibmFtZSI6ICJhY2wyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA2MDQ3MzE3IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjYuMDQ3WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjYuMDQ3WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyNi4wNDdaIiwKICAgInNpemUiOiAiMTYiLAogICAibWQ1SGFzaCI6ICJDcUN1cXRjMldUQ08zWEpvMVYzREtnPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hY2wyP2dlbmVyYXRpb249MTUzMjU0MzAwNjA0NzMxNyZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FjbDIvMTUzMjU0MzAwNjA0NzMxNy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hY2wyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiYWNsMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwNjA0NzMxNyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDTlg0NmN2dnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsMi8xNTMyNTQzMDA2MDQ3MzE3L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hY2wyL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImFjbDIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDYwNDczMTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDTlg0NmN2dnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYWNsMi8xNTMyNTQzMDA2MDQ3MzE3L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hY2wyL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImFjbDIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDYwNDczMTciLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05YNDZjdnZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2FjbDIvMTUzMjU0MzAwNjA0NzMxNy9kb21haW4tZ29vZ2xlLmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hY2wyL2FjbC9kb21haW4tZ29vZ2xlLmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiYWNsMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwNjA0NzMxNyIsCiAgICAgImVudGl0eSI6ICJkb21haW4tZ29vZ2xlLmNvbSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAiZG9tYWluIjogImdvb2dsZS5jb20iLAogICAgICJldGFnIjogIkNOWDQ2Y3Z2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9hY2wyLzE1MzI1NDMwMDYwNDczMTcvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9hY2wyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJhY2wyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDA2MDQ3MzE3IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNOWDQ2Y3Z2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJwNHNkSmc9PSIsCiAgICJldGFnIjogIkNOWDQ2Y3Z2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9idWNrZXRJbkNvcHlBdHRycy8xNTMyNTQzMDI2NDM4Njk1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9idWNrZXRJbkNvcHlBdHRycyIsCiAgICJuYW1lIjogImJ1Y2tldEluQ29weUF0dHJzIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI2NDM4Njk1IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ2LjQzOFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ2LjQzOFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDYuNDM4WiIsCiAgICJzaXplIjogIjMiLAogICAibWQ1SGFzaCI6ICJyTDBZMjB6QytGenQ3MlZQek1TazJBPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9idWNrZXRJbkNvcHlBdHRycz9nZW5lcmF0aW9uPTE1MzI1NDMwMjY0Mzg2OTUmYWx0PW1lZGlhIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYnVja2V0SW5Db3B5QXR0cnMvMTUzMjU0MzAyNjQzODY5NS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9idWNrZXRJbkNvcHlBdHRycy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImJ1Y2tldEluQ29weUF0dHJzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI2NDM4Njk1IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNLZkV4dFh2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9idWNrZXRJbkNvcHlBdHRycy8xNTMyNTQzMDI2NDM4Njk1L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9idWNrZXRJbkNvcHlBdHRycy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJidWNrZXRJbkNvcHlBdHRycyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNjQzODY5NSIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNLZkV4dFh2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9idWNrZXRJbkNvcHlBdHRycy8xNTMyNTQzMDI2NDM4Njk1L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9idWNrZXRJbkNvcHlBdHRycy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJidWNrZXRJbkNvcHlBdHRycyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNjQzODY5NSIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDS2ZFeHRYdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvYnVja2V0SW5Db3B5QXR0cnMvMTUzMjU0MzAyNjQzODY5NS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2J1Y2tldEluQ29weUF0dHJzL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJidWNrZXRJbkNvcHlBdHRycyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNjQzODY5NSIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDS2ZFeHRYdnV0d0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiejhTdUhRPT0iLAogICAiZXRhZyI6ICJDS2ZFeHRYdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY2hlY2tzdW0tb2JqZWN0LzE1MzI1NDI5OTc4MjYxODYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NoZWNrc3VtLW9iamVjdCIsCiAgICJuYW1lIjogImNoZWNrc3VtLW9iamVjdCIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5NzgyNjE4NiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoxNy44MjVaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoxNy44MjVaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjE3LjgyNVoiLAogICAic2l6ZSI6ICIxMCIsCiAgICJtZDVIYXNoIjogIi9GNERqVGlsY0RJSVZFSG4vbkFRc0E9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NoZWNrc3VtLW9iamVjdD9nZW5lcmF0aW9uPTE1MzI1NDI5OTc4MjYxODYmYWx0PW1lZGlhIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY2hlY2tzdW0tb2JqZWN0LzE1MzI1NDI5OTc4MjYxODYvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY2hlY2tzdW0tb2JqZWN0L2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiY2hlY2tzdW0tb2JqZWN0IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTk3ODI2MTg2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNJcVY5TWZ2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jaGVja3N1bS1vYmplY3QvMTUzMjU0Mjk5NzgyNjE4Ni9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY2hlY2tzdW0tb2JqZWN0L2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImNoZWNrc3VtLW9iamVjdCIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5NzgyNjE4NiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNJcVY5TWZ2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jaGVja3N1bS1vYmplY3QvMTUzMjU0Mjk5NzgyNjE4Ni9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY2hlY2tzdW0tb2JqZWN0L2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImNoZWNrc3VtLW9iamVjdCIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5NzgyNjE4NiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDSXFWOU1mdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY2hlY2tzdW0tb2JqZWN0LzE1MzI1NDI5OTc4MjYxODYvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jaGVja3N1bS1vYmplY3QvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImNoZWNrc3VtLW9iamVjdCIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5NzgyNjE4NiIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDSXFWOU1mdnV0d0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiVnN1MGdBPT0iLAogICAiZXRhZyI6ICJDSXFWOU1mdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29tcG9zZWQxLzE1MzI1NDMwMDAxNDY2NDUiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbXBvc2VkMSIsCiAgICJuYW1lIjogImNvbXBvc2VkMSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwMDE0NjY0NSIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjAuMTQ2WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjAuMTQ2WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyMC4xNDZaIiwKICAgInNpemUiOiAiNDgiLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb21wb3NlZDE/Z2VuZXJhdGlvbj0xNTMyNTQzMDAwMTQ2NjQ1JmFsdD1tZWRpYSIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbXBvc2VkMS8xNTMyNTQzMDAwMTQ2NjQ1L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbXBvc2VkMS9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImNvbXBvc2VkMSIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwMDE0NjY0NSIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDTlhsZ2NudnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29tcG9zZWQxLzE1MzI1NDMwMDAxNDY2NDUvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbXBvc2VkMS9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjb21wb3NlZDEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDAxNDY2NDUiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDTlhsZ2NudnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29tcG9zZWQxLzE1MzI1NDMwMDAxNDY2NDUvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbXBvc2VkMS9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjb21wb3NlZDEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDAxNDY2NDUiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05YbGdjbnZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbXBvc2VkMS8xNTMyNTQzMDAwMTQ2NjQ1L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29tcG9zZWQxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjb21wb3NlZDEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDAxNDY2NDUiLAogICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImV0YWciOiAiQ05YbGdjbnZ1dHdDRUFFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogICB9LAogICAiY3JjMzJjIjogIk1SQWZ5Zz09IiwKICAgImNvbXBvbmVudENvdW50IjogMywKICAgImV0YWciOiAiQ05YbGdjbnZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2NvbXBvc2VkMi8xNTMyNTQzMDAwNzQ3NDMzIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb21wb3NlZDIiLAogICAibmFtZSI6ICJjb21wb3NlZDIiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDA3NDc0MzMiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJ0ZXh0L2pzb24iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyMC43NDdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyMC43NDdaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjIwLjc0N1oiLAogICAic2l6ZSI6ICI0OCIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbXBvc2VkMj9nZW5lcmF0aW9uPTE1MzI1NDMwMDA3NDc0MzMmYWx0PW1lZGlhIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29tcG9zZWQyLzE1MzI1NDMwMDA3NDc0MzMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29tcG9zZWQyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiY29tcG9zZWQyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAwNzQ3NDMzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNLbTdwc252dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb21wb3NlZDIvMTUzMjU0MzAwMDc0NzQzMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29tcG9zZWQyL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImNvbXBvc2VkMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwMDc0NzQzMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNLbTdwc252dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb21wb3NlZDIvMTUzMjU0MzAwMDc0NzQzMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29tcG9zZWQyL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImNvbXBvc2VkMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwMDc0NzQzMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDS203cHNudnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29tcG9zZWQyLzE1MzI1NDMwMDA3NDc0MzMvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb21wb3NlZDIvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImNvbXBvc2VkMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwMDc0NzQzMyIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDS203cHNudnV0d0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiTVJBZnlnPT0iLAogICAiY29tcG9uZW50Q291bnQiOiAzLAogICAiZXRhZyI6ICJDS203cHNudnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29udGVudC8xNTMyNTQzMDE3MzIzNTI2IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jb250ZW50IiwKICAgIm5hbWUiOiAiY29udGVudCIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogImltYWdlL2pwZWciLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNy4zMjNaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNy4zMjNaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM3LjMyM1oiLAogICAic2l6ZSI6ICI1NCIsCiAgICJtZDVIYXNoIjogIk44cDgvczlGd2RBQW5sdnIvbEVBalE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQ/Z2VuZXJhdGlvbj0xNTMyNTQzMDE3MzIzNTI2JmFsdD1tZWRpYSIsCiAgICJjYWNoZUNvbnRyb2wiOiAicHVibGljLCBtYXgtYWdlPTYwIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29udGVudC8xNTMyNTQzMDE3MzIzNTI2L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjb250ZW50IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3MzIzNTI2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNJYVltdEh2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTczMjM1MjYvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiY29udGVudCIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNJYVltdEh2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jb250ZW50LzE1MzI1NDMwMTczMjM1MjYvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2NvbnRlbnQvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiY29udGVudCIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDSWFZbXRIdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY29udGVudC8xNTMyNTQzMDE3MzIzNTI2L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY29udGVudC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiY29udGVudCIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzMyMzUyNiIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDSWFZbXRIdnV0d0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiR29VYnNRPT0iLAogICAiZXRhZyI6ICJDSWFZbXRIdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi8xNTMyNTQzMDE3OTI5MDg1IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uIiwKICAgIm5hbWUiOiAiY3VzdG9tZXItZW5jcnlwdGlvbiIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAxNzkyOTA4NSIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIzIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozNy45MjhaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzozOC41MjFaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjM3LjkyOFoiLAogICAic2l6ZSI6ICIxMSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24/Z2VuZXJhdGlvbj0xNTMyNTQzMDE3OTI5MDg1JmFsdD1tZWRpYSIsCiAgICJjb250ZW50TGFuZ3VhZ2UiOiAiZW4iLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24iLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMTc5MjkwODUiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ1AyU3Y5SHZ1dHdDRUFNPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMjU0MzAxNzkyOTA4NS9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3OTI5MDg1IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ1AyU3Y5SHZ1dHdDRUFNPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24vMTUzMjU0MzAxNzkyOTA4NS9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3OTI5MDg1IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNQMlN2OUh2dXR3Q0VBTT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLzE1MzI1NDMwMTc5MjkwODUvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDE3OTI5MDg1IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNQMlN2OUh2dXR3Q0VBTT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImV0YWciOiAiQ1AyU3Y5SHZ1dHdDRUFNPSIsCiAgICJjdXN0b21lckVuY3J5cHRpb24iOiB7CiAgICAiZW5jcnlwdGlvbkFsZ29yaXRobSI6ICJBRVMyNTYiLAogICAgImtleVNoYTI1NiI6ICJIK0xtblhoUm9lSTZUTVc1YnNWNkh5VWs2cHlHYzJJTWJxWWJBWEJjcHMwPSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yLzE1MzI1NDMwMjM4MDg4MDQiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgICJuYW1lIjogImN1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyMzgwODgwNCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0My44MDhaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzo0My44MDhaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQzLjgwOFoiLAogICAic2l6ZSI6ICIxMSIsCiAgICJtZDVIYXNoIjogInh3V05GYTBWZFhQbWxBd3JsY0FKY2c9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMj9nZW5lcmF0aW9uPTE1MzI1NDMwMjM4MDg4MDQmYWx0PW1lZGlhIiwKICAgImNvbnRlbnRMYW5ndWFnZSI6ICJlbiIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDIzODA4ODA0L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogImN1c3RvbWVyLWVuY3J5cHRpb24tMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyMzgwODgwNCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDS1NDcHRUdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yLzE1MzI1NDMwMjM4MDg4MDQvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjM4MDg4MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDS1NDcHRUdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvY3VzdG9tZXItZW5jcnlwdGlvbi0yLzE1MzI1NDMwMjM4MDg4MDQvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjM4MDg4MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0tTQ3B0VHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMi8xNTMyNTQzMDIzODA4ODA0L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0yL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjM4MDg4MDQiLAogICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImV0YWciOiAiQ0tTQ3B0VHZ1dHdDRUFFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogICB9LAogICAiY3JjMzJjIjogInIwTkdyZz09IiwKICAgImV0YWciOiAiQ0tTQ3B0VHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMy8xNTMyNTQzMDIyODExNDAwIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uLTMiLAogICAibmFtZSI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTMiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjI4MTE0MDAiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQyLjgxMVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQyLjgxMVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDIuODExWiIsCiAgICJzaXplIjogIjIyIiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vY3VzdG9tZXItZW5jcnlwdGlvbi0zP2dlbmVyYXRpb249MTUzMjU0MzAyMjgxMTQwMCZhbHQ9bWVkaWEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTMvMTUzMjU0MzAyMjgxMTQwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uLTMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJjdXN0b21lci1lbmNyeXB0aW9uLTMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjI4MTE0MDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0lpUzZkUHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMy8xNTMyNTQzMDIyODExNDAwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uLTMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0zIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDIyODExNDAwIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0lpUzZkUHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2N1c3RvbWVyLWVuY3J5cHRpb24tMy8xNTMyNTQzMDIyODExNDAwL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9jdXN0b21lci1lbmNyeXB0aW9uLTMvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0zIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDIyODExNDAwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNJaVM2ZFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9jdXN0b21lci1lbmNyeXB0aW9uLTMvMTUzMjU0MzAyMjgxMTQwMC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2N1c3RvbWVyLWVuY3J5cHRpb24tMy9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiY3VzdG9tZXItZW5jcnlwdGlvbi0zIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDIyODExNDAwIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNJaVM2ZFB2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNvbXBvbmVudENvdW50IjogMiwKICAgImV0YWciOiAiQ0lpUzZkUHZ1dHdDRUFFPSIsCiAgICJjdXN0b21lckVuY3J5cHRpb24iOiB7CiAgICAiZW5jcnlwdGlvbkFsZ29yaXRobSI6ICJBRVMyNTYiLAogICAgImtleVNoYTI1NiI6ICJIK0xtblhoUm9lSTZUTVc1YnNWNkh5VWs2cHlHYzJJTWJxWWJBWEJjcHMwPSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvZ3ppcC10ZXN0LzE1MzI1NDMwMDE1NDE5NDQiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2d6aXAtdGVzdCIsCiAgICJuYW1lIjogImd6aXAtdGVzdCIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwMTU0MTk0NCIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogImFwcGxpY2F0aW9uL3gtZ3ppcCIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjIxLjU0MVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjIxLjU0MVoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MjEuNTQxWiIsCiAgICJzaXplIjogIjI3IiwKICAgIm1kNUhhc2giOiAiT3RDdythUlJJUnFLR0ZBRU9heCtxdz09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vZ3ppcC10ZXN0P2dlbmVyYXRpb249MTUzMjU0MzAwMTU0MTk0NCZhbHQ9bWVkaWEiLAogICAiY29udGVudEVuY29kaW5nIjogImd6aXAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9nemlwLXRlc3QvMTUzMjU0MzAwMTU0MTk0NC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9nemlwLXRlc3QvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJnemlwLXRlc3QiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDE1NDE5NDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xqNjFzbnZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2d6aXAtdGVzdC8xNTMyNTQzMDAxNTQxOTQ0L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9nemlwLXRlc3QvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiZ3ppcC10ZXN0IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAxNTQxOTQ0IiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xqNjFzbnZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL2d6aXAtdGVzdC8xNTMyNTQzMDAxNTQxOTQ0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9nemlwLXRlc3QvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiZ3ppcC10ZXN0IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAxNTQxOTQ0IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMajYxc252dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9nemlwLXRlc3QvMTUzMjU0MzAwMTU0MTk0NC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2d6aXAtdGVzdC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiZ3ppcC10ZXN0IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAxNTQxOTQ0IiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMajYxc252dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICI5RGh3QkE9PSIsCiAgICJldGFnIjogIkNMajYxc252dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjgxMjQxNDYiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEiLAogICAibmFtZSI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI4MTI0MTQ2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ4LjEyM1oiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ4LjEyM1oiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDguMTIzWiIsCiAgICJzaXplIjogIjI3IiwKICAgIm1kNUhhc2giOiAib2ZaakdsY1hQSmlHT0FmS0ZiSmwxUT09IiwKICAgIm1lZGlhTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9kb3dubG9hZC9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vaGFzaGVzT25VcGxvYWQtMT9nZW5lcmF0aW9uPTE1MzI1NDMwMjgxMjQxNDYmYWx0PW1lZGlhIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvaGFzaGVzT25VcGxvYWQtMS8xNTMyNTQzMDI4MTI0MTQ2L3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJoYXNoZXNPblVwbG9hZC0xIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI4MTI0MTQ2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNQS3pyZGJ2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjgxMjQxNDYvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiaGFzaGVzT25VcGxvYWQtMSIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyODEyNDE0NiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNQS3pyZGJ2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9oYXNoZXNPblVwbG9hZC0xLzE1MzI1NDMwMjgxMjQxNDYvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL2hhc2hlc09uVXBsb2FkLTEvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiaGFzaGVzT25VcGxvYWQtMSIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyODEyNDE0NiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDUEt6cmRidnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvaGFzaGVzT25VcGxvYWQtMS8xNTMyNTQzMDI4MTI0MTQ2L3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vaGFzaGVzT25VcGxvYWQtMS9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAiaGFzaGVzT25VcGxvYWQtMSIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyODEyNDE0NiIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDUEt6cmRidnV0d0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiY0grQSt3PT0iLAogICAiZXRhZyI6ICJDUEt6cmRidnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqL3dpdGgvc2xhc2hlcy8xNTMyNTQyOTg3NzI3NDA0IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcyIsCiAgICJuYW1lIjogIm9iai93aXRoL3NsYXNoZXMiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuNzI3WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuNzI3WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy43MjdaIiwKICAgInNpemUiOiAiMTYiLAogICAibWQ1SGFzaCI6ICJNSWJSa3Erb0pmT3FWOWQ5MUxwZzh3PT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcz9nZW5lcmF0aW9uPTE1MzI1NDI5ODc3Mjc0MDQmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqJTJGd2l0aCUyRnNsYXNoZXMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iaiUyRndpdGglMkZzbGFzaGVzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iai93aXRoL3NsYXNoZXMiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODc3Mjc0MDQiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqL3dpdGgvc2xhc2hlcy8xNTMyNTQyOTg3NzI3NDA0L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmovd2l0aC9zbGFzaGVzIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg3NzI3NDA0IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNLemtpOFB2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmovd2l0aC9zbGFzaGVzLzE1MzI1NDI5ODc3Mjc0MDQvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmolMkZ3aXRoJTJGc2xhc2hlcy9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqL3dpdGgvc2xhc2hlcyIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzcyNzQwNCIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiaHkvZXBBPT0iLAogICAiZXRhZyI6ICJDS3praThQdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMS8xNTMyNTQyOTg2ODQxMjUxIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxIiwKICAgIm5hbWUiOiAib2JqMSIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICI0IiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDYuODQwWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MTguNTA1WiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNi44NDBaIiwKICAgInNpemUiOiAiMTYiLAogICAibWQ1SGFzaCI6ICJud1VYQUhxVVFKcTVueXk2ejNqTmt3PT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxP2dlbmVyYXRpb249MTUzMjU0Mjk4Njg0MTI1MSZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajEvMTUzMjU0Mjk4Njg0MTI1MS9kb21haW4tZ29vZ2xlLmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC9kb21haW4tZ29vZ2xlLmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqMSIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4Njg0MTI1MSIsCiAgICAgImVudGl0eSI6ICJkb21haW4tZ29vZ2xlLmNvbSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAiZG9tYWluIjogImdvb2dsZS5jb20iLAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBUT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoxL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJvYmoxIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTg2ODQxMjUxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNLUFoxY0x2dXR3Q0VBUT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vYmoxLzE1MzI1NDI5ODY4NDEyNTEvYWxsVXNlcnMiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMS9hY2wvYWxsVXNlcnMiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajEiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODY4NDEyNTEiLAogICAgICJlbnRpdHkiOiAiYWxsVXNlcnMiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFRPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogICB9LAogICAiY3JjMzJjIjogIkZMamV3QT09IiwKICAgImV0YWciOiAiQ0tQWjFjTHZ1dHdDRUFRPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2NiIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vb2JqMiIsCiAgICJuYW1lIjogIm9iajIiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJjb250ZW50VHlwZSI6ICJ0ZXh0L3BsYWluIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MDcuMzUzWiIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAidGltZVN0b3JhZ2VDbGFzc1VwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzowNy4zNTNaIiwKICAgInNpemUiOiAiMTYiLAogICAibWQ1SGFzaCI6ICJnK1VmYVM4dWlsanRVenFNWnJ5Vjd3PT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyP2dlbmVyYXRpb249MTUzMjU0Mjk4NzM1NDA2NiZhbHQ9bWVkaWEiLAogICAiY2FjaGVDb250cm9sIjogInB1YmxpYywgbWF4LWFnZT02MCIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAib2JqMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk4NzM1NDA2NiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDTkwvOU1MdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMi8xNTMyNTQyOTg3MzU0MDY2L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDTkwvOU1MdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvb2JqMi8xNTMyNTQyOTg3MzU0MDY2L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9vYmoyL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL29iajIvMTUzMjU0Mjk4NzM1NDA2Ni91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL29iajIvYWNsL3VzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogIm9iajIiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDI5ODczNTQwNjYiLAogICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJlbWFpbCI6ICIzNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIgogICB9LAogICAiY3JjMzJjIjogIlNxaVo3dz09IiwKICAgImV0YWciOiAiQ05MLzlNTHZ1dHdDRUFFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3QiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Bvc2MvMTUzMjU0MzAyNTQ2MTgxMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYyIsCiAgICJuYW1lIjogInBvc2MiLAogICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjU0NjE4MTAiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ1LjQ2MVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ1LjQ2MVoiLAogICAic3RvcmFnZUNsYXNzIjogIk1VTFRJX1JFR0lPTkFMIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDUuNDYxWiIsCiAgICJzaXplIjogIjMiLAogICAibWQ1SGFzaCI6ICJyTDBZMjB6QytGenQ3MlZQek1TazJBPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjP2dlbmVyYXRpb249MTUzMjU0MzAyNTQ2MTgxMCZhbHQ9bWVkaWEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjLzE1MzI1NDMwMjU0NjE4MTAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogInBvc2MiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMjU0NjE4MTAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xMMGl0WHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Bvc2MvMTUzMjU0MzAyNTQ2MTgxMC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJwb3NjIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI1NDYxODEwIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xMMGl0WHZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3Bvc2MvMTUzMjU0MzAyNTQ2MTgxMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL28vcG9zYy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJwb3NjIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI1NDYxODEwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMTDBpdFh2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjLzE1MzI1NDMwMjU0NjE4MTAvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJwb3NjIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI1NDYxODEwIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMTDBpdFh2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJ6OFN1SFE9PSIsCiAgICJldGFnIjogIkNMTDBpdFh2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjMi8xNTMyNTQzMDI1OTU2NTI2IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjMiIsCiAgICJuYW1lIjogInBvc2MyIiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI1OTU2NTI2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ1Ljk1NloiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjQ1Ljk1NloiLAogICAic3RvcmFnZUNsYXNzIjogIk1VTFRJX1JFR0lPTkFMIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6NDUuOTU2WiIsCiAgICJzaXplIjogIjMiLAogICAibWQ1SGFzaCI6ICI5V0dxOXU4TDhVMUNDTHRHcE15enJRPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjMj9nZW5lcmF0aW9uPTE1MzI1NDMwMjU5NTY1MjYmYWx0PW1lZGlhIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcG9zYzIvMTUzMjU0MzAyNTk1NjUyNi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogInBvc2MyIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDI1OTU2NTI2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNLNk5xZFh2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjMi8xNTMyNTQzMDI1OTU2NTI2L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJwb3NjMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNTk1NjUyNiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNLNk5xZFh2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9wb3NjMi8xNTMyNTQzMDI1OTU2NTI2L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9wb3NjMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJwb3NjMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNTk1NjUyNiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDSzZOcWRYdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvcG9zYzIvMTUzMjU0MzAyNTk1NjUyNi91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL3Bvc2MyL2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJwb3NjMiIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAyNTk1NjUyNiIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDSzZOcWRYdnV0d0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiMTdxQUJRPT0iLAogICAiZXRhZyI6ICJDSzZOcWRYdnV0d0NFQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI29iamVjdCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvc2lnbmVkVVJMLzE1MzI1NDMwMDI0MzU4OTEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL3NpZ25lZFVSTCIsCiAgICJuYW1lIjogInNpZ25lZFVSTCIsCiAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgImdlbmVyYXRpb24iOiAiMTUzMjU0MzAwMjQzNTg5MSIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImNvbnRlbnRUeXBlIjogInRleHQvcGxhaW4iLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyMi40MzRaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxODoyMzoyMi40MzRaIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJ0aW1lU3RvcmFnZUNsYXNzVXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjIyLjQzNFoiLAogICAic2l6ZSI6ICIyOSIsCiAgICJtZDVIYXNoIjogIkp5eHZnd205bjJNc3JHVE1QYk1lWUE9PSIsCiAgICJtZWRpYUxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZG93bmxvYWQvc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL3NpZ25lZFVSTD9nZW5lcmF0aW9uPTE1MzI1NDMwMDI0MzU4OTEmYWx0PW1lZGlhIiwKICAgImNhY2hlQ29udHJvbCI6ICJwdWJsaWMsIG1heC1hZ2U9NjAiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9zaWduZWRVUkwvMTUzMjU0MzAwMjQzNTg5MS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9zaWduZWRVUkwvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJzaWduZWRVUkwiLAogICAgICJnZW5lcmF0aW9uIjogIjE1MzI1NDMwMDI0MzU4OTEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xQQ2pjcnZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3NpZ25lZFVSTC8xNTMyNTQzMDAyNDM1ODkxL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9zaWduZWRVUkwvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAic2lnbmVkVVJMIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAyNDM1ODkxIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0xQQ2pjcnZ1dHdDRUFFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwL3NpZ25lZFVSTC8xNTMyNTQzMDAyNDM1ODkxL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby9zaWduZWRVUkwvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAic2lnbmVkVVJMIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAyNDM1ODkxIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNMUENqY3J2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9zaWduZWRVUkwvMTUzMjU0MzAwMjQzNTg5MS91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL3NpZ25lZFVSTC9hY2wvdXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAgICJvYmplY3QiOiAic2lnbmVkVVJMIiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQzMDAyNDM1ODkxIiwKICAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAiZW1haWwiOiAiMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iLAogICAgICJldGFnIjogIkNMUENqY3J2dXR3Q0VBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAidXNlci0zNjYzOTkzMzE0NS1iMTh0MDFvbXQ5YTI3OWtjM2djZ2lxaHFrbDhib2JodUBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSIKICAgfSwKICAgImNyYzMyYyI6ICJaVHFBTHc9PSIsCiAgICJldGFnIjogIkNMUENqY3J2dXR3Q0VBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC96ZXJvLW9iamVjdC8xNTMyNTQyOTk4MjM4Nzg2IiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby96ZXJvLW9iamVjdCIsCiAgICJuYW1lIjogInplcm8tb2JqZWN0IiwKICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAiLAogICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTk4MjM4Nzg2IiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiY29udGVudFR5cGUiOiAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjE4LjIzOFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjIzOjE4LjIzOFoiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgInRpbWVTdG9yYWdlQ2xhc3NVcGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjM6MTguMjM4WiIsCiAgICJzaXplIjogIjAiLAogICAibWQ1SGFzaCI6ICIxQjJNMlk4QXNnVHBnQW1ZN1BoQ2ZnPT0iLAogICAibWVkaWFMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2Rvd25sb2FkL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby96ZXJvLW9iamVjdD9nZW5lcmF0aW9uPTE1MzI1NDI5OTgyMzg3ODYmYWx0PW1lZGlhIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvemVyby1vYmplY3QvMTUzMjU0Mjk5ODIzODc4Ni9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby96ZXJvLW9iamVjdC9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDAwIiwKICAgICAib2JqZWN0IjogInplcm8tb2JqZWN0IiwKICAgICAiZ2VuZXJhdGlvbiI6ICIxNTMyNTQyOTk4MjM4Nzg2IiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNNS3NqY2p2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC96ZXJvLW9iamVjdC8xNTMyNTQyOTk4MjM4Nzg2L3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby96ZXJvLW9iamVjdC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJ6ZXJvLW9iamVjdCIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5ODIzODc4NiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNNS3NqY2p2dXR3Q0VBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC96ZXJvLW9iamVjdC8xNTMyNTQyOTk4MjM4Nzg2L3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvby96ZXJvLW9iamVjdC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJ6ZXJvLW9iamVjdCIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5ODIzODc4NiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDTUtzamNqdnV0d0NFQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMDAvemVyby1vYmplY3QvMTUzMjU0Mjk5ODIzODc4Ni91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMC9vL3plcm8tb2JqZWN0L2FjbC91c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAwMCIsCiAgICAgIm9iamVjdCI6ICJ6ZXJvLW9iamVjdCIsCiAgICAgImdlbmVyYXRpb24iOiAiMTUzMjU0Mjk5ODIzODc4NiIsCiAgICAgImVudGl0eSI6ICJ1c2VyLTM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgImVtYWlsIjogIjM2NjM5OTMzMTQ1LWIxOHQwMW9tdDlhMjc5a2MzZ2NnaXFocWtsOGJvYmh1QGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29tIiwKICAgICAiZXRhZyI6ICJDTUtzamNqdnV0d0NFQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInVzZXItMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNjb3VudC5jb20iCiAgIH0sCiAgICJjcmMzMmMiOiAiQUFBQUFBPT0iLAogICAiZXRhZyI6ICJDTUtzamNqdnV0d0NFQUU9IgogIH0KIF0KfQo=" } }, { - "ID": "b75004afb49f4a60", + "ID": "01d4836787dbfb48", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/acl1?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -44269,13 +45378,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "d5680956f98168526456cdee469a205e/18118536600712668153;o=1" + "f8bdd6c34db90a5b8b1e3397a2c27b75/4558557012971334706;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -44284,7 +45393,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-2?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/acl1?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -44295,9 +45404,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -44309,7 +45420,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:49 GMT" + "Wed, 25 Jul 2018 18:25:31 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -44325,7 +45436,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -44334,16 +45445,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrcb9:4119,/bns/yv/borg/yv/bns/blobstore2/bitpusher/879.scotty,yabq4-v6:443" + "xhiadbaf16:4318,/bns/xi/borg/xi/bns/blobstore2/bitpusher/41.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=FE81W8CTOpPvgQTx_ILgCw" + "eid=m8BYW5qsG-yzswaYlLDIBg" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/879.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/41.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -44352,13 +45463,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/879:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/41:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -44373,17 +45484,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uoktpj__NgESZGfT9NWpMbYc5sOevTkUNILVa5VRCqaRc9JF-RK5vvaRZmLzeYZsSu6YagJ1eMMQS8QLAXnrOV5j2WjFtvQkGTvNfaBlJIqB-kgq4s" + "AEnB2UpWPa8RkVu7Yd6NPOQARsSmW5zbKn0OfkEj9HvjZiO6xJBZg3KC2MEVd67fwbx3WS7j1TI9LpCmi7MNWr_6zAbhhI1DJQ" ] }, "Body": "" } }, { - "ID": "1d68f72e75cc1bbe", + "ID": "d56ed12627d066f9", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-3?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/acl2?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -44396,13 +45507,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "6da7c341016883fdba2b498b26eb3d60/479500782994203657;o=1" + "f1ea7829458667e3a6f4898cd2d09de2/8415207556394118592;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -44411,7 +45522,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/customer-encryption-3?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/acl2?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -44422,9 +45533,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -44436,7 +45549,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:49 GMT" + "Wed, 25 Jul 2018 18:25:31 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -44452,7 +45565,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -44461,16 +45574,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrbj127:4134,/bns/yv/borg/yv/bns/blobstore2/bitpusher/709.scotty,yabq4-v6:443" + "xiiadcaa2:4364,/bns/xi/borg/xi/bns/blobstore2/bitpusher/11.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=FU81W9epDYXPgQTy4byIDA" + "eid=m8BYW47_JZC3swb1pLGIDQ" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/709.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/11.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -44479,13 +45592,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/709:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/11:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -44500,17 +45613,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uox22PlRYbJr1cxKCZMtn679GcYH3E8FL_3vDsyataBh0OrVxTmUw5redH7RvtKIu45yHYaJ6w-3_9zis5wE5bRBI-BRZ9hjLSL79W9WDPL7vhjSes" + "AEnB2UqCnkt7Uo2qbCatvG5fxkAXBlCpbiJO07CC9HF06kvlUTFn-GjrRY-m_lCIrsDV8Ws_S4MQJWXf5U1_paqfaHzPT28lPw" ] }, "Body": "" } }, { - "ID": "e7062eb2267a4be7", + "ID": "94bf1e5a95fd8251", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/gzip-test?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/bucketInCopyAttrs?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -44523,13 +45636,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "386b2071c0e43962acd1a0fd3d4fb104/1286927559696967192;o=1" + "2b17f9da13eb6ce0c6b8edbef6bf84c0/12199520130330668367;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -44538,7 +45651,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/gzip-test?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/bucketInCopyAttrs?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -44549,9 +45662,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -44563,7 +45678,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:49 GMT" + "Wed, 25 Jul 2018 18:25:32 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -44579,7 +45694,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -44588,16 +45703,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrax68:4128,/bns/yv/borg/yv/bns/blobstore2/bitpusher/876.scotty,yabq4-v6:443" + "xgiadabf13:4076,/bns/xi/borg/xi/bns/blobstore2/bitpusher/55.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=FU81W_baF5PrgQTw24awDA" + "eid=m8BYW96xOcawswbcr6XYDw" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/876.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/55.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -44606,13 +45721,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/876:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/55:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -44627,17 +45742,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoxK0H-jyFlwpwubBx8Mxudipkeka-syXtXIqn-XeyL8IC-4Uqi2707T6p9WziguGrdElAZSuRzj9aeU_V_P9Cz0aACpkidQexZDY8jpctiUT0-sYk" + "AEnB2UrCmHNyLyFn16HWfS_z5eCxduzKPN5Y65GUK3JtXypSjmUO6WaC13amPgP1oqBTwE5rvvYqn-0XnLuDTOll2i7klzBPgQ" ] }, "Body": "" } }, { - "ID": "c33e5f22f3db2450", + "ID": "22237c662dd457c6", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/hashesOnUpload-1?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/checksum-object?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -44650,13 +45765,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "871a1b16ecd9b52935f09baed95d9c02/2022578217371936552;o=1" + "f23c3f81c556ef316f6cc26883d95ecb/16056169574258601693;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -44665,7 +45780,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/hashesOnUpload-1?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/checksum-object?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -44676,9 +45791,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -44690,7 +45807,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:49 GMT" + "Wed, 25 Jul 2018 18:25:32 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -44706,7 +45823,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -44715,16 +45832,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrlk21:4108,/bns/yv/borg/yv/bns/blobstore2/bitpusher/624.scotty,yabq4-v6:443" + "xgiadabe13:4160,/bns/xi/borg/xi/bns/blobstore2/bitpusher/60.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=FU81W7qNLY_iggTIoLzACA" + "eid=nMBYW6rKG662swalh4DYCg" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/624.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/60.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -44733,13 +45850,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/624:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/60:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -44754,17 +45871,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UocuTT1I_KYJzU4r6AuKdcQCrL7FXV3uoofO1YsIPuiwR4tjs5QFE5srG27tiGBF_NcdeI0VE_XcY0iNu7qDzYBo9rAZzWSDW7qT0wTV_I9jvygsB8" + "AEnB2UpWg79m1KPdCodCdEFtaIYNGkxlmGIe3buCTuiLmHXv_hwmGGqfHQvxZIE38ynVrz7VWHn_X6f2w3lpVXWC6IiWZaaPEA" ] }, "Body": "" } }, { - "ID": "62d700bdc068c567", + "ID": "7dbaa7f2efb8187a", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj%2Fwith%2Fslashes?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/composed1?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -44777,13 +45894,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "4c8a9c74ac0754415bf19e09d8c4d7f9/2830004998369536312;o=1" + "eae6406d66855307e4e3e8217a9e9b24/1394019553757277803;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -44792,7 +45909,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj%2Fwith%2Fslashes?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/composed1?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -44803,9 +45920,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -44817,7 +45936,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:50 GMT" + "Wed, 25 Jul 2018 18:25:32 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -44833,7 +45952,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -44842,16 +45961,16 @@ "998958384336" ], "X-Google-Backends": [ - "vroa22:4081,/bns/yv/borg/yv/bns/blobstore2/bitpusher/681.scotty,yabq4-v6:443" + "xiiadcay15:4104,/bns/xi/borg/xi/bns/blobstore2/bitpusher/25.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=FU81W8TtOdTLgATElKDYCA" + "eid=nMBYW8nMJcG8swbqjIGYBA" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/681.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/25.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -44860,13 +45979,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/681:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/25:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -44881,17 +46000,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoUtZrt6UXQ6KdXeslkKuukWgGgtprBb9OTh9ry2T1N6_PKbP4__C8pnHOpf0c2Un_aPmZQvF64CgQo6JKg43k3wbmtsj-zVvnZ9OP-sa_UFdezmf4" + "AEnB2Uon8413KFqQ9BzJBvvm0l9EMT_MNeVNuiU4bm3zUSB1JnQYkHlNAeDB42SI1NgPlyZpns8hUhxOeBXy621kLYEGHTHSOA" ] }, "Body": "" } }, { - "ID": "383ef4a6fcac1f9d", + "ID": "6bfa8537ac499c9c", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/composed2?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -44904,13 +46023,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "2d0e93d1c1226d49179bd8b588fb16d2/3637713250065656392;o=1" + "cb571a37b611babf251831599aa3165f/5250388622203416569;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -44919,7 +46038,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj1?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/composed2?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -44930,9 +46049,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -44944,7 +46065,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:50 GMT" + "Wed, 25 Jul 2018 18:25:33 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -44960,7 +46081,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543432000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -44969,16 +46090,16 @@ "998958384336" ], "X-Google-Backends": [ - "vruu1:4251,/bns/yv/borg/yv/bns/blobstore2/bitpusher/172.scotty,yabq4-v6:443" + "xhiadbaz16:4186,/bns/xi/borg/xi/bns/blobstore2/bitpusher/124.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=Fk81W62WCcjigwTbnoCQDQ" + "eid=nMBYW_bKNoGFygPStIPwAg" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/172.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/124.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -44987,13 +46108,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/172:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/124:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -45008,17 +46129,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UoCXQKnrr4K9hkXaq6pLeMd3w_R1jLvIMEn0CbB-h1IBGiFdYaRM7CkokBI3GdX3_uAGCximfhCGYuGPHqlTHAv50edhTpnS3I91tVNLMedvRgcLFE" + "AEnB2Ur8YrB1X06D3oCHmvXDkJf1v56p0QsGkX65gSZ56jaEZAzB1NdKzutLqJZOtftc0MsufuMpTgZrIkbUH4ZU6pAcWWthQw" ] }, "Body": "" } }, { - "ID": "98bb1efd62eee4aa", + "ID": "bd7f3da6e7c5f033", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj2?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/content?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -45031,13 +46152,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "fd7ec434f24f91015a9a57173a4bcfbe/4445138931568471127;o=1" + "8a00eb66b4417c690b696b0b6df8d171/9034982671116611464;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -45046,7 +46167,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/obj2?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/content?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -45057,9 +46178,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -45071,7 +46194,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:50 GMT" + "Wed, 25 Jul 2018 18:25:33 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -45087,7 +46210,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543432000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -45096,16 +46219,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrns11:4000,/bns/yv/borg/yv/bns/blobstore2/bitpusher/64.scotty,yabq4-v6:443" + "xhiadbbe16:4150,/bns/xi/borg/xi/bns/blobstore2/bitpusher/83.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=Fk81W7LpE5DuggSQnrGQDQ" + "eid=ncBYW7bCCa-3swas5an4Bg" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/64.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/83.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -45114,13 +46237,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/64:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/83:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -45135,17 +46258,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrFo7VIoudKyDe0k9iB2mmF3iXe6HapY6vIYSm7GwMGsJTQj3O1_MkIvCyafIXI67YDpziFRof58iBbeOKiudXu0mC-YqS-oQukYXh49mgrxHX5Uz8" + "AEnB2UoHK6ETgn6d7GTHw4ytswXvInJYL3w7KGhs8q5CleY2uVOaiwb8yA_1XMc4E5O4U0O9nJ0v0aNbKJZWudJhYt8Fz9Cs-g" ] }, "Body": "" } }, { - "ID": "2864574fde06ad30", + "ID": "95ad48702da061a9", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/posc?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -45158,13 +46281,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "f04f700bc32639adc6cd3a4d75b4ef2c/5252847183264591207;o=1" + "adf6c95a55f6c8485225c940cc9cc4a8/12891350640067899414;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -45173,7 +46296,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/posc?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -45184,9 +46307,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -45198,7 +46323,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:50 GMT" + "Wed, 25 Jul 2018 18:25:33 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -45214,7 +46339,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543432000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -45223,16 +46348,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrdv2:4288,/bns/yv/borg/yv/bns/blobstore2/bitpusher/233.scotty,yabq4-v6:443" + "xiiadcbh13:4060,/bns/xi/borg/xi/bns/blobstore2/bitpusher/51.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=Fk81W4ulHtDqgASVw5yIDg" + "eid=ncBYW7-gGMGxswaD46-QCg" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/233.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/51.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -45241,13 +46366,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/233:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/51:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -45262,17 +46387,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UrMi8tXywghy7YH-xwJ6uwTxRncglFNSEstbB2woGYRFtugfWjC4pgAGuEVN6BKVHTv_DbrffPkL4P-KLnjJmKUKM0Lew" + "AEnB2UpfwhF9eqqkRa3aJsLAoLPOnK371SAXjlY6uL79fGGGVUUP1DI1nK6afrPtkyQXiOJTCq5vlYBZ-AYCxTsNIyNck0BhgQ" ] }, "Body": "" } }, { - "ID": "0b38bc202e8eb3aa", + "ID": "0c4bb7b9a03b9619", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/posc2?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -45285,13 +46410,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "7107db2416933ec17ad3253d0e3fe39b/5988216370241040247;o=1" + "92ddd5a432470fe08d9c883bc253eff8/16675944688981160100;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -45300,7 +46425,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/posc2?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-2?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -45311,9 +46436,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -45325,7 +46452,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:50 GMT" + "Wed, 25 Jul 2018 18:25:33 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -45341,7 +46468,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543432000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -45350,16 +46477,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrry5:4201,/bns/yv/borg/yv/bns/blobstore2/bitpusher/342.scotty,yabq4-v6:443" + "xhiadbau10:4359,/bns/xi/borg/xi/bns/blobstore2/bitpusher/88.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=Fk81W9TGKMnRgQSt85KoAw" + "eid=ncBYW_WKK862swbPnpToAQ" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/342.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/88.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -45368,13 +46495,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/342:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/88:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -45389,17 +46516,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UovZ9RSmw0HjJzn4ImzHNUEpMZDv4_4sv-6gthxJwLWYs0ruEoguDSDF-1GEq3doTRW9xLWCzk7lthkpUU-6MrQgxeYMA" + "AEnB2UrNjTc5HZDExqKl6w-7Hcza3w1m5n_WYlJTegWkIzpWSueZb3ki0qAC2nx5SqZLw2Mt3N0qbNmib1wuIOrzCx4Egr22Xg" ] }, "Body": "" } }, { - "ID": "673aba3e99cca295", + "ID": "89d91ef55f2dfd10", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/signedURL?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-3?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -45412,13 +46539,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "86a6d01c653eb58ec17bcfb62af090aa/6795924621937160327;o=1" + "e21d97e24928f7c616af143a01fc310b/2085851162989359410;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -45427,7 +46554,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/signedURL?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/customer-encryption-3?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -45438,9 +46565,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -45452,7 +46581,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:51 GMT" + "Wed, 25 Jul 2018 18:25:34 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -45468,7 +46597,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543432000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -45477,16 +46606,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrd1:4007,/bns/yv/borg/yv/bns/blobstore2/bitpusher/495.scotty,yabq4-v6:443" + "xiiadcbo12:4395,/bns/xi/borg/xi/bns/blobstore2/bitpusher/13.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=Fk81W6PtM42YgQTBnbXIDA" + "eid=ncBYW9nENau_swbmtYzYDQ" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/495.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/13.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -45495,13 +46624,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/495:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/13:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -45516,17 +46645,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpZQQ-3o4Y5mirs3sMMwCsfvLQ_VSTlAP6-3oE64QLTWAnz-tvz85JBpv5W8tCPSBy7sJENU3jjpp4hL2Vlg4NYzEwM8g" + "AEnB2UrEXStNuAM0PVO7AimkvMJIsOKOHpaTo0fH6G9einvp9v6tcqRmDCIlHo_of-zreaPsl6maffcvdVQefi2OVKKs9gqiDw" ] }, "Body": "" } }, { - "ID": "0d82e2e35e856663", + "ID": "69ccf0e4eead94d3", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/zero-object?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/gzip-test?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -45539,13 +46668,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "233be859e998acc62b1e37122d42a35d/7603351398639923862;o=1" + "04fe92f93c598678e7e711e0b5092a5e/5870163736925909441;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -45554,7 +46683,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000/o/zero-object?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/gzip-test?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -45565,9 +46694,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -45579,7 +46710,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:51 GMT" + "Wed, 25 Jul 2018 18:25:34 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -45595,7 +46726,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -45604,16 +46735,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrdb67:4086,/bns/yv/borg/yv/bns/blobstore2/bitpusher/243.scotty,yabq4-v6:443" + "xgiadaaz14:4326,/bns/xi/borg/xi/bns/blobstore2/bitpusher/43.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=F081W9fUAYaYgwT8mZroBA" + "eid=nsBYW5CcAu65swarrY6wBw" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/243.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/43.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -45622,13 +46753,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/243:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/43:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -45643,17 +46774,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur_4VFSCBrHWJ_5apya96vZMMUwhDB8iRoBGY6ipXh22BbCccc3B0oJnITh9A_kT1JVFOvpGiERhtfVd0lj9Ub8NyJuZ0VrXEdvcHjeK16BMLCOvfI" + "AEnB2UoHUpLY3v8-NzGQ5GOgp8dAw2r0izsB8rmxgTYzeAW-f1eXrWa2RZ1DPHqMnvGxShy9jdIWTnDrJkUGJZ5JkURKTiAHIw" ] }, "Body": "" } }, { - "ID": "1d01c1ab0a81e7e1", + "ID": "80d53fdd19e61bf6", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/hashesOnUpload-1?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -45666,13 +46797,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "e763b9bfdc100972cdb67400cc6fb82e/9218485331838793142;o=1" + "a3421dd63c75b5ed2d0410d160db5dd3/9726813180853842511;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -45681,7 +46812,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180628-76155232935339-0000?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/hashesOnUpload-1?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -45692,9 +46823,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -45706,7 +46839,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:51 GMT" + "Wed, 25 Jul 2018 18:25:34 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -45722,7 +46855,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -45731,16 +46864,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrjn1:4228,/bns/yv/borg/yv/bns/blobstore2/bitpusher/642.scotty,yabq4-v6:443" + "xgiadaal14:4213,/bns/xi/borg/xi/bns/blobstore2/bitpusher/40.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=F081W5XCDI2kggSh2J_QCA" + "eid=nsBYW47tDa-5swa-lI7QBA" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/642.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/40.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -45749,13 +46882,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/642:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/40:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -45770,17 +46903,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uov7Uxd_3MsyBSW8-Yy4K4JgzlaJ5lRKPqp5ep2nDc7kAfSxd6c-Ft0JDTDtsLyevMqSg2PFk3uerMzKS5_0ggKFSGGBDQPSAF-jU1xtUgt6XkDcGw" + "AEnB2UrYyqbpJg1NS73g8J5PpCMIvmvtX6vgm-PfPeIxKymeKQC0UPg5XvX2FjEdjxS2yVdzkwrQjZp2qQ3PS-AKdzSBysDhkQ" ] }, "Body": "" } }, { - "ID": "3857ae628bc8a644", + "ID": "c1e64ffa4efb3cf5", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026pageToken=\u0026prefix=go-integration-test\u0026project=dulcet-port-762\u0026projection=full", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj%2Fwith%2Fslashes?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -45793,13 +46926,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "2edcbdafb98ffee681c853966bbafe2c/9953855618326869702;o=1" + "00860d467825177290132dd77656ed86/13511125759085359837;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -45808,7 +46941,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b?alt=json\u0026pageToken=\u0026prefix=go-integration-test\u0026project=dulcet-port-762\u0026projection=full" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj%2Fwith%2Fslashes?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -45817,26 +46950,31 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "129365" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:51 GMT" + "Wed, 25 Jul 2018 18:25:34 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:51 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -45846,25 +46984,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrk71:4158,/bns/yv/borg/yv/bns/blobstore2/bitpusher/534.scotty,yabq4-v6:443" + "xgiadaaj8:4280,/bns/xi/borg/xi/bns/blobstore2/bitpusher/145.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=F081W5ukIMSigQSG64bwDQ" + "eid=nsBYW62OGci8swad7L7wAg" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/534.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/145.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -45873,13 +47011,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/534:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/145:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -45894,17 +47032,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Up3RLMLpxfMIUg6cJCHgoGzsiq3iN-T8erFRhkRpBIbCLCecb2J6tpqNu7oq1S08ngJzxw3SvasBgy8ocL7qwNWNcXi05imqSDs1n8oOwsJQIn4-hg" + "AEnB2UqcL0ec0pZ6PwZV9cZ2rIR-gNVw7_1MHrHj0bx2eK_3ZKgCN7gYS2bGVNbMxoRx28LX9Y7eWTqvRz6R0jHghMHOCU7xtg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMiIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy02NDU3ODEwMTI4ODcxNy0wMDEyIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTY0NTc4MTAxMjg4NzE3LTAwMTIiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yN1QxNzo1ODoyOS40ODRaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yN1QxNzo1ODozMS42MjJaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTY0NTc4MTAxMjg4NzE3LTAwMTIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTY0NTc4MTAxMjg4NzE3LTAwMTIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy02NDU3ODEwMTI4ODcxNy0wMDEyL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy02NDU3ODEwMTI4ODcxNy0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yN1QxNzo1ODoyOS40ODRaIiwKICAgICJpc0xvY2tlZCI6IHRydWUKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMyIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy02NDU3ODEwMTI4ODcxNy0wMDEzIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTY0NTc4MTAxMjg4NzE3LTAwMTMiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yN1QxNzo1ODozMy45ODRaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yN1QxNzo1ODozMy45ODRaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTY0NTc4MTAxMjg4NzE3LTAwMTMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTY0NTc4MTAxMjg4NzE3LTAwMTMvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNjQ1NzgxMDEyODg3MTctMDAxMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy02NDU3ODEwMTI4ODcxNy0wMDEzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy02NDU3ODEwMTI4ODcxNy0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yN1QxNzo1ODozMy45ODRaIgogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEyIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc1ODMzNDM0Nzk4NjgzLTAwMTIiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzU4MzM0MzQ3OTg2ODMtMDAxMiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI3VDIxOjA2OjA3LjUwMFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI3VDIxOjA2OjA5LjcyMFoiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzU4MzM0MzQ3OTg2ODMtMDAxMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzU4MzM0MzQ3OTg2ODMtMDAxMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEyL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc1ODMzNDM0Nzk4NjgzLTAwMTIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc1ODMzNDM0Nzk4NjgzLTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA2LTI3VDIxOjA2OjA3LjUwMFoiLAogICAgImlzTG9ja2VkIjogdHJ1ZQogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEzIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc1ODMzNDM0Nzk4NjgzLTAwMTMiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzU4MzM0MzQ3OTg2ODMtMDAxMyIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI3VDIxOjA2OjEyLjA4NFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI3VDIxOjA2OjEyLjA4NFoiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEzL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzU4MzM0MzQ3OTg2ODMtMDAxMy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzU4MzM0MzQ3OTg2ODMtMDAxMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NTgzMzQzNDc5ODY4My0wMDEzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc1ODMzNDM0Nzk4NjgzLTAwMTMvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc1ODMzNDM0Nzk4NjgzLTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA2LTI3VDIxOjA2OjEyLjA4NFoiCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTIiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzYzNTEwNjgxNzY2NzQtMDAxMiIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NjM1MTA2ODE3NjY3NC0wMDEyIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjdUMjE6MTQ6NDQuMzgyWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjdUMjE6MTQ6NDYuNjE5WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NjM1MTA2ODE3NjY3NC0wMDEyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NjM1MTA2ODE3NjY3NC0wMDEyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzYzNTEwNjgxNzY2NzQtMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzYzNTEwNjgxNzY2NzQtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjdUMjE6MTQ6NDQuMzgyWiIsCiAgICAiaXNMb2NrZWQiOiB0cnVlCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzYzNTEwNjgxNzY2NzQtMDAxMyIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NjM1MTA2ODE3NjY3NC0wMDEzIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjdUMjE6MTQ6NDguOTY0WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjdUMjE6MTQ6NDguOTY0WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NjM1MTA2ODE3NjY3NC0wMDEzL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NjM1MTA2ODE3NjY3NC0wMDEzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2MzUxMDY4MTc2Njc0LTAwMTMvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzYzNTEwNjgxNzY2NzQtMDAxMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzYzNTEwNjgxNzY2NzQtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjdUMjE6MTQ6NDguOTY0WiIKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMiIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03Njg3MTIyODA1NTg4NC0wMDEyIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2ODcxMjI4MDU1ODg0LTAwMTIiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yN1QyMToyMzozMi45MDVaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yN1QyMToyMzozNS4yNDRaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2ODcxMjI4MDU1ODg0LTAwMTIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2ODcxMjI4MDU1ODg0LTAwMTIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03Njg3MTIyODA1NTg4NC0wMDEyL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03Njg3MTIyODA1NTg4NC0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yN1QyMToyMzozMi45MDVaIiwKICAgICJpc0xvY2tlZCI6IHRydWUKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMyIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03Njg3MTIyODA1NTg4NC0wMDEzIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2ODcxMjI4MDU1ODg0LTAwMTMiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yN1QyMToyMzozOC4wMDRaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yN1QyMToyMzozOC4wMDRaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2ODcxMjI4MDU1ODg0LTAwMTMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc2ODcxMjI4MDU1ODg0LTAwMTMvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzY4NzEyMjgwNTU4ODQtMDAxMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03Njg3MTIyODA1NTg4NC0wMDEzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03Njg3MTIyODA1NTg4NC0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yN1QyMToyMzozOC4wMDRaIgogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEyIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc3NDQ0Njc3MzU1Nzg3LTAwMTIiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzc0NDQ2NzczNTU3ODctMDAxMiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI3VDIxOjMzOjAxLjYwNFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI3VDIxOjMzOjAzLjc0MloiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzc0NDQ2NzczNTU3ODctMDAxMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzc0NDQ2NzczNTU3ODctMDAxMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEyL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc3NDQ0Njc3MzU1Nzg3LTAwMTIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc3NDQ0Njc3MzU1Nzg3LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA2LTI3VDIxOjMzOjAxLjYwNFoiLAogICAgImlzTG9ja2VkIjogdHJ1ZQogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEzIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc3NDQ0Njc3MzU1Nzg3LTAwMTMiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzc0NDQ2NzczNTU3ODctMDAxMyIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI3VDIxOjMzOjA2LjIwOVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI3VDIxOjMzOjA2LjIwOVoiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEzL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzc0NDQ2NzczNTU3ODctMDAxMy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzc0NDQ2NzczNTU3ODctMDAxMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03NzQ0NDY3NzM1NTc4Ny0wMDEzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc3NDQ0Njc3MzU1Nzg3LTAwMTMvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc3NDQ0Njc3MzU1Nzg3LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA2LTI3VDIxOjMzOjA2LjIwOVoiCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NjY2MTczMTkyMTI5LTAwMDAiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzg2NjYxNzMxOTIxMjktMDAwMCIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03ODY2NjE3MzE5MjEyOS0wMDAwIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjdUMjE6NTE6MDcuNDY4WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjdUMjE6NTE6MDcuNDY4WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NjY2MTczMTkyMTI5LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03ODY2NjE3MzE5MjEyOS0wMDAwL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NjY2MTczMTkyMTI5LTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03ODY2NjE3MzE5MjEyOS0wMDAwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NjY2MTczMTkyMTI5LTAwMDAvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NjY2MTczMTkyMTI5LTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NjY2MTczMTkyMTI5LTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzg2NjYxNzMxOTIxMjktMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzg2NjYxNzMxOTIxMjktMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NzU4Mzg2MzEyNzg4LTAwMDAiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzg3NTgzODYzMTI3ODgtMDAwMCIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03ODc1ODM4NjMxMjc4OC0wMDAwIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjdUMjE6NTI6MzkuNjAyWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjdUMjE6NTI6MzkuNjAyWiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NzU4Mzg2MzEyNzg4LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03ODc1ODM4NjMxMjc4OC0wMDAwL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NzU4Mzg2MzEyNzg4LTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03ODc1ODM4NjMxMjc4OC0wMDAwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NzU4Mzg2MzEyNzg4LTAwMDAvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NzU4Mzg2MzEyNzg4LTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc4NzU4Mzg2MzEyNzg4LTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzg3NTgzODYzMTI3ODgtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzg3NTgzODYzMTI3ODgtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc5MDAyNzI1NTA0ODYzLTAwMDAiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzkwMDI3MjU1MDQ4NjMtMDAwMCIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03OTAwMjcyNTUwNDg2My0wMDAwIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjdUMjE6NTY6NDQuMTA0WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjdUMjE6NTY6NDQuMTA0WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc5MDAyNzI1NTA0ODYzLTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03OTAwMjcyNTUwNDg2My0wMDAwL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc5MDAyNzI1NTA0ODYzLTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy03OTAwMjcyNTUwNDg2My0wMDAwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc5MDAyNzI1NTA0ODYzLTAwMDAvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc5MDAyNzI1NTA0ODYzLTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTc5MDAyNzI1NTA0ODYzLTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzkwMDI3MjU1MDQ4NjMtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctNzkwMDI3MjU1MDQ4NjMtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTIiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODUxNTkzMjA2NTQyNTctMDAxMiIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTE1OTMyMDY1NDI1Ny0wMDEyIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjdUMjM6NDE6MjguMjY2WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjdUMjM6NDE6MzAuMzkwWiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTE1OTMyMDY1NDI1Ny0wMDEyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTE1OTMyMDY1NDI1Ny0wMDEyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODUxNTkzMjA2NTQyNTctMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODUxNTkzMjA2NTQyNTctMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjdUMjM6NDE6MjguMjY2WiIsCiAgICAiaXNMb2NrZWQiOiB0cnVlCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODUxNTkzMjA2NTQyNTctMDAxMyIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTE1OTMyMDY1NDI1Ny0wMDEzIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjdUMjM6NDE6MzIuNzU3WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjdUMjM6NDE6MzIuNzU3WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTE1OTMyMDY1NDI1Ny0wMDEzL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTE1OTMyMDY1NDI1Ny0wMDEzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1MTU5MzIwNjU0MjU3LTAwMTMvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODUxNTkzMjA2NTQyNTctMDAxMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODUxNTkzMjA2NTQyNTctMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjdUMjM6NDE6MzIuNzU3WiIKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMiIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTYxNzU0NzkyMTM3Mi0wMDEyIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1NjE3NTQ3OTIxMzcyLTAwMTIiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yN1QyMzo0OTowNy4zODNaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yN1QyMzo0OTowOS4zMjNaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1NjE3NTQ3OTIxMzcyLTAwMTIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1NjE3NTQ3OTIxMzcyLTAwMTIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTYxNzU0NzkyMTM3Mi0wMDEyL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTYxNzU0NzkyMTM3Mi0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yN1QyMzo0OTowNy4zODNaIiwKICAgICJpc0xvY2tlZCI6IHRydWUKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMyIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTYxNzU0NzkyMTM3Mi0wMDEzIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1NjE3NTQ3OTIxMzcyLTAwMTMiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yN1QyMzo0OToxMS43OTJaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yN1QyMzo0OToxMS43OTJaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1NjE3NTQ3OTIxMzcyLTAwMTMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg1NjE3NTQ3OTIxMzcyLTAwMTMvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODU2MTc1NDc5MjEzNzItMDAxMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTYxNzU0NzkyMTM3Mi0wMDEzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NTYxNzU0NzkyMTM3Mi0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yN1QyMzo0OToxMS43OTJaIgogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEyIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg2MTA1NDU3MDg3NDM0LTAwMTIiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODYxMDU0NTcwODc0MzQtMDAxMiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI3VDIzOjU3OjIzLjQ4OVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI3VDIzOjU3OjI1Ljc0MloiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODYxMDU0NTcwODc0MzQtMDAxMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODYxMDU0NTcwODc0MzQtMDAxMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEyL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg2MTA1NDU3MDg3NDM0LTAwMTIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg2MTA1NDU3MDg3NDM0LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA2LTI3VDIzOjU3OjIzLjQ4OVoiLAogICAgImlzTG9ja2VkIjogdHJ1ZQogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEzIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg2MTA1NDU3MDg3NDM0LTAwMTMiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODYxMDU0NTcwODc0MzQtMDAxMyIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI3VDIzOjU3OjI4LjAwMloiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI3VDIzOjU3OjI4LjAwMloiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEzL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODYxMDU0NTcwODc0MzQtMDAxMy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjctODYxMDU0NTcwODc0MzQtMDAxMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyNy04NjEwNTQ1NzA4NzQzNC0wMDEzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg2MTA1NDU3MDg3NDM0LTAwMTMvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI3LTg2MTA1NDU3MDg3NDM0LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA2LTI3VDIzOjU3OjI4LjAwMloiCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEyIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEyIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEyIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMDA6MDU6NTkuODY5WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMDA6MDY6MDIuMDI3WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMjI3OTI2NzM1NTEzLTAwMTIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMjI3OTI2NzM1NTEzLTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0yMjc5MjY3MzU1MTMtMDAxMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0yMjc5MjY3MzU1MTMtMDAxMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMjI3OTI2NzM1NTEzLTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEyL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0yMjc5MjY3MzU1MTMtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMDA6MDU6NTkuODY5WiIsCiAgICAiaXNMb2NrZWQiOiB0cnVlCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEzIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEzIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEzIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMDA6MDY6MDQuMjAwWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMDA6MDY6MDQuMjAwWiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEzL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMjI3OTI2NzM1NTEzLTAwMTMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMjI3OTI2NzM1NTEzLTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0yMjc5MjY3MzU1MTMtMDAxMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0yMjc5MjY3MzU1MTMtMDAxMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMjI3OTI2NzM1NTEzLTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTIyNzkyNjczNTUxMy0wMDEzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0yMjc5MjY3MzU1MTMtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMDA6MDY6MDQuMjAwWiIKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzI5NDE0MTA5NDg1ODUtMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMjk0MTQxMDk0ODU4NS0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMyOTQxNDEwOTQ4NTg1LTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQwOTowOTowMi41NTZaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQwOTowOTowMi41NTZaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzI5NDE0MTA5NDg1ODUtMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMyOTQxNDEwOTQ4NTg1LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzI5NDE0MTA5NDg1ODUtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMyOTQxNDEwOTQ4NTg1LTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzI5NDE0MTA5NDg1ODUtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzI5NDE0MTA5NDg1ODUtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzI5NDE0MTA5NDg1ODUtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMjk0MTQxMDk0ODU4NS0wMDAwL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMjk0MTQxMDk0ODU4NS0wMDAwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMyNjc4MjUzNjEzMTItMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzI2NzgyNTM2MTMxMi0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzMjY3ODI1MzYxMzEyLTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQwOToxNDoyOC45NTdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQwOToxNDoyOC45NTdaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMyNjc4MjUzNjEzMTItMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzMjY3ODI1MzYxMzEyLTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMyNjc4MjUzNjEzMTItMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzMjY3ODI1MzYxMzEyLTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMyNjc4MjUzNjEzMTItMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMyNjc4MjUzNjEzMTItMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMyNjc4MjUzNjEzMTItMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzI2NzgyNTM2MTMxMi0wMDAwL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzI2NzgyNTM2MTMxMi0wMDAwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzMDYzNjA1ODYzOTgtMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzMwNjM2MDU4NjM5OC0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzMzA2MzYwNTg2Mzk4LTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQwOToxNTowNy42MDFaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQwOToxNTowNy42MDFaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzMDYzNjA1ODYzOTgtMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzMzA2MzYwNTg2Mzk4LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzMDYzNjA1ODYzOTgtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzMzA2MzYwNTg2Mzk4LTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzMDYzNjA1ODYzOTgtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzMDYzNjA1ODYzOTgtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzMDYzNjA1ODYzOTgtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzMwNjM2MDU4NjM5OC0wMDAwL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzMwNjM2MDU4NjM5OC0wMDAwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzNDUyMjAxNDgyMjMtMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzM0NTIyMDE0ODIyMy0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzMzQ1MjIwMTQ4MjIzLTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQwOToxNTo0Ni41MDBaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQwOToxNTo0Ni41MDBaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzNDUyMjAxNDgyMjMtMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzMzQ1MjIwMTQ4MjIzLTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzNDUyMjAxNDgyMjMtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzMzQ1MjIwMTQ4MjIzLTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzNDUyMjAxNDgyMjMtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzNDUyMjAxNDgyMjMtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzMzNDUyMjAxNDgyMjMtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzM0NTIyMDE0ODIyMy0wMDAwL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzM0NTIyMDE0ODIyMy0wMDAwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzQxMjkzNDcwMzkyNi0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQwOToxNjo1NC4xNjlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQwOToxODoyMi4xMThaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBdz0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQXc9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQXc9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0F3PSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0F3PSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBdz0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJ2ZXJzaW9uaW5nIjogewogICAgImVuYWJsZWQiOiBmYWxzZQogICB9LAogICAibGlmZWN5Y2xlIjogewogICAgInJ1bGUiOiBbCiAgICAgewogICAgICAiYWN0aW9uIjogewogICAgICAgInR5cGUiOiAiRGVsZXRlIgogICAgICB9LAogICAgICAiY29uZGl0aW9uIjogewogICAgICAgImFnZSI6IDMwCiAgICAgIH0KICAgICB9CiAgICBdCiAgIH0sCiAgICJsYWJlbHMiOiB7CiAgICAibDEiOiAidjIiLAogICAgIm5ldyI6ICJuZXciCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQXc9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTIiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAxMiIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzQxMjkzNDcwMzkyNi0wMDEyIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMDk6MTg6NTQuMjAzWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMDk6MTg6NTYuNDMyWiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzQxMjkzNDcwMzkyNi0wMDEyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzQxMjkzNDcwMzkyNi0wMDEyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMDk6MTg6NTQuMjAzWiIsCiAgICAiaXNMb2NrZWQiOiB0cnVlCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAxMyIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzQxMjkzNDcwMzkyNi0wMDEzIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMDk6MTg6NTguNjAwWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMDk6MTg6NTguNjAwWiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzQxMjkzNDcwMzkyNi0wMDEzL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzQxMjkzNDcwMzkyNi0wMDEzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzNDEyOTM0NzAzOTI2LTAwMTMvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAxMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM0MTI5MzQ3MDM5MjYtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMDk6MTg6NTguNjAwWiIKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM5NDk5NDAzOTQxMzctMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzk0OTk0MDM5NDEzNy0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzOTQ5OTQwMzk0MTM3LTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQwOToyNTo1MS4xMDdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQwOToyNTo1MS4xMDdaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM5NDk5NDAzOTQxMzctMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzOTQ5OTQwMzk0MTM3LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM5NDk5NDAzOTQxMzctMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTMzOTQ5OTQwMzk0MTM3LTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM5NDk5NDAzOTQxMzctMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM5NDk5NDAzOTQxMzctMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzM5NDk5NDAzOTQxMzctMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzk0OTk0MDM5NDEzNy0wMDAwL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zMzk0OTk0MDM5NDEzNy0wMDAwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzU1Njg4MjY1OTY1MzctMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zNTU2ODgyNjU5NjUzNy0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM1NTY4ODI2NTk2NTM3LTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQwOTo1Mjo1MC4xODdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQwOTo1Mjo1MC4xODdaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzU1Njg4MjY1OTY1MzctMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM1NTY4ODI2NTk2NTM3LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzU1Njg4MjY1OTY1MzctMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM1NTY4ODI2NTk2NTM3LTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzU1Njg4MjY1OTY1MzctMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzU1Njg4MjY1OTY1MzctMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzU1Njg4MjY1OTY1MzctMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zNTU2ODgyNjU5NjUzNy0wMDAwL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zNTU2ODgyNjU5NjUzNy0wMDAwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxNjQ5NjQwNDMwMDktMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODE2NDk2NDA0MzAwOS0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MTY0OTY0MDQzMDA5LTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQxMDozNjowNi4wODhaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQxMDozNjowNi4wODhaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxNjQ5NjQwNDMwMDktMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MTY0OTY0MDQzMDA5LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxNjQ5NjQwNDMwMDktMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MTY0OTY0MDQzMDA5LTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxNjQ5NjQwNDMwMDktMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxNjQ5NjQwNDMwMDktMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxNjQ5NjQwNDMwMDktMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODE2NDk2NDA0MzAwOS0wMDAwL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODE2NDk2NDA0MzAwOS0wMDAwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxOTA1MzQ2NjAyMDUtMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODE5MDUzNDY2MDIwNS0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MTkwNTM0NjYwMjA1LTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQxMDozNjozMS44NTZaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQxMDozNjozMS44NTZaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxOTA1MzQ2NjAyMDUtMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MTkwNTM0NjYwMjA1LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxOTA1MzQ2NjAyMDUtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MTkwNTM0NjYwMjA1LTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxOTA1MzQ2NjAyMDUtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxOTA1MzQ2NjAyMDUtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgxOTA1MzQ2NjAyMDUtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODE5MDUzNDY2MDIwNS0wMDAwL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODE5MDUzNDY2MDIwNS0wMDAwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODI0MjExMjE0ODgxNC0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQxMDozNzoyMy4yODdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQxMDozODo1Mi4xMTdaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBdz0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQXc9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQXc9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0F3PSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0F3PSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBdz0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJ2ZXJzaW9uaW5nIjogewogICAgImVuYWJsZWQiOiBmYWxzZQogICB9LAogICAibGlmZWN5Y2xlIjogewogICAgInJ1bGUiOiBbCiAgICAgewogICAgICAiYWN0aW9uIjogewogICAgICAgInR5cGUiOiAiRGVsZXRlIgogICAgICB9LAogICAgICAiY29uZGl0aW9uIjogewogICAgICAgImFnZSI6IDMwCiAgICAgIH0KICAgICB9CiAgICBdCiAgIH0sCiAgICJsYWJlbHMiOiB7CiAgICAibDEiOiAidjIiLAogICAgIm5ldyI6ICJuZXciCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQXc9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTIiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAxMiIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODI0MjExMjE0ODgxNC0wMDEyIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMTA6Mzk6MjguMDkxWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMTA6Mzk6MzAuNDQ0WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODI0MjExMjE0ODgxNC0wMDEyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODI0MjExMjE0ODgxNC0wMDEyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMTA6Mzk6MjguMDkxWiIsCiAgICAiaXNMb2NrZWQiOiB0cnVlCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAxMyIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODI0MjExMjE0ODgxNC0wMDEzIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMTA6Mzk6MzIuNzk5WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMTA6Mzk6MzIuNzk5WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODI0MjExMjE0ODgxNC0wMDEzL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zODI0MjExMjE0ODgxNC0wMDEzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM4MjQyMTEyMTQ4ODE0LTAwMTMvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAxMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzgyNDIxMTIxNDg4MTQtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMTA6Mzk6MzIuNzk5WiIKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzNjg4MzgxOTM0NjEtMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zOTM2ODgzODE5MzQ2MS0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5MzY4ODM4MTkzNDYxLTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQxMDo1NjowOS43MzlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQxMDo1NjowOS43MzlaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzNjg4MzgxOTM0NjEtMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5MzY4ODM4MTkzNDYxLTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzNjg4MzgxOTM0NjEtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5MzY4ODM4MTkzNDYxLTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzNjg4MzgxOTM0NjEtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzNjg4MzgxOTM0NjEtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzNjg4MzgxOTM0NjEtMDAwMC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zOTM2ODgzODE5MzQ2MS0wMDAwL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zOTM2ODgzODE5MzQ2MS0wMDAwIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAwMCIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zOTM5NzIxODM0NTAzOC0wMDAwIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMDAiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQxMDo1NjozOC40NzRaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQxMDo1ODoxNC4yMTZaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMDAvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAwMC9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBdz0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAwMC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMDAvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQXc9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQXc9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0F3PSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0F3PSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBdz0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJ2ZXJzaW9uaW5nIjogewogICAgImVuYWJsZWQiOiBmYWxzZQogICB9LAogICAibGlmZWN5Y2xlIjogewogICAgInJ1bGUiOiBbCiAgICAgewogICAgICAiYWN0aW9uIjogewogICAgICAgInR5cGUiOiAiRGVsZXRlIgogICAgICB9LAogICAgICAiY29uZGl0aW9uIjogewogICAgICAgImFnZSI6IDMwCiAgICAgIH0KICAgICB9CiAgICBdCiAgIH0sCiAgICJsYWJlbHMiOiB7CiAgICAibDEiOiAidjIiLAogICAgIm5ldyI6ICJuZXciCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQXc9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTIiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAxMiIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zOTM5NzIxODM0NTAzOC0wMDEyIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMTA6NTg6NTAuNzg4WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMTA6NTg6NTMuMTMyWiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zOTM5NzIxODM0NTAzOC0wMDEyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zOTM5NzIxODM0NTAzOC0wMDEyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMTA6NTg6NTAuNzg4WiIsCiAgICAiaXNMb2NrZWQiOiB0cnVlCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAxMyIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zOTM5NzIxODM0NTAzOC0wMDEzIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDYtMjhUMTA6NTg6NTUuMjc3WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDYtMjhUMTA6NTg6NTUuMjc3WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zOTM5NzIxODM0NTAzOC0wMDEzL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC0zOTM5NzIxODM0NTAzOC0wMDEzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTM5Mzk3MjE4MzQ1MDM4LTAwMTMvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAxMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtMzkzOTcyMTgzNDUwMzgtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDYtMjhUMTA6NTg6NTUuMjc3WiIKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMiIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEyIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTIiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMToyMC40NDRaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMToyMi40MzNaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEyL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yOFQyMToxMToyMC40NDRaIiwKICAgICJpc0xvY2tlZCI6IHRydWUKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMyIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEzIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTMiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMToyNC41ODdaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNi0yOFQyMToxMToyNC41ODdaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc2MTU1MjMyOTM1MzM5LTAwMTMvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzYxNTUyMzI5MzUzMzktMDAxMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NjE1NTIzMjkzNTMzOS0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNi0yOFQyMToxMToyNC41ODdaIgogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMiIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMiIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDAwOjE1OjAzLjMwNloiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDAwOjE1OjA1LjY0MloiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc3NDg2NzM4NzQ1Ni0wMDEyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc3NDg2NzM4NzQ1Ni0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzc0ODY3Mzg3NDU2LTAwMTIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzc0ODY3Mzg3NDU2LTAwMTIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc3NDg2NzM4NzQ1Ni0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzc0ODY3Mzg3NDU2LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA2LTI4VDAwOjE1OjAzLjMwNloiLAogICAgImlzTG9ja2VkIjogdHJ1ZQogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMyIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMyIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMyIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA2LTI4VDAwOjE1OjA3LjgwMFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA2LTI4VDAwOjE1OjA3LjgwMFoiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc3NDg2NzM4NzQ1Ni0wMDEzL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc3NDg2NzM4NzQ1Ni0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzc0ODY3Mzg3NDU2LTAwMTMvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzc0ODY3Mzg3NDU2LTAwMTMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNjI4LTc3NDg2NzM4NzQ1Ni0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDYyOC03NzQ4NjczODc0NTYtMDAxMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA2MjgtNzc0ODY3Mzg3NDU2LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA2LTI4VDAwOjE1OjA3LjgwMFoiCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0KIF0KfQo=" + "Body": "" } }, { - "ID": "ff43a73f40bf3372", + "ID": "8c89e93dd654ae68", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-64578101288717-0012/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -45917,13 +47055,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "eb2ec52c69b2d4ad7a84e6e020f094b0/10761562770511427797;o=1" + "821c0ef89151bbda1952f0a298bb86fb/17295719803686941547;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -45932,7 +47070,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-64578101288717-0012/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj1?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -45941,26 +47079,31 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "31" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:52 GMT" + "Wed, 25 Jul 2018 18:25:34 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:52 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -45970,25 +47113,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrjo3:4099,/bns/yv/borg/yv/bns/blobstore2/bitpusher/833.scotty,yabq4-v6:443" + "xgiadabf13:4076,/bns/xi/borg/xi/bns/blobstore2/bitpusher/79.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=F081W6_MPMSEggSEz7ngBg" + "eid=nsBYW_yiKOKEygP4sYagBQ" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/833.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/79.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -45997,13 +47140,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/833:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/79:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -46018,17 +47161,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpG2yNf3WZQD7fTjw5CBMK8fIyYjxkpVOhlvByO2h3AgeLpCFV3NqKOu93F6J8ZQACgMKktdbzf0v5OFO7zghDO8Ik7rFc7s2v_5-BTISsExKP5sXY" + "AEnB2Upy0J8WI0BeIN2fT94t6laOXGaGM3p99uSWZdzw0_aUZIWd3oU7Y1zCtFtiwamHQDIWihJRciDSBtm8-7MEjdYYMetUrA" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIgp9Cg==" + "Body": "" } }, { - "ID": "93e25768947f298f", + "ID": "483626da9ec7e59b", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-64578101288717-0012?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj2?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -46041,13 +47184,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "c7229284c23cffc8580d9fb1ded30942/12376696703710297077;o=1" + "5932be5f1ca14a4bb02256d2e6ace463/2705626277711852538;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -46056,7 +47199,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-64578101288717-0012?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/obj2?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -46067,9 +47210,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -46081,7 +47226,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:52 GMT" + "Wed, 25 Jul 2018 18:25:35 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -46097,7 +47242,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -46106,16 +47251,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrrr1:4228,/bns/yv/borg/yv/bns/blobstore2/bitpusher/911.scotty,yabq4-v6:443" + "xgiadabh15:4103,/bns/xi/borg/xi/bns/blobstore2/bitpusher/77.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=GE81W53ZDM6fgQT0pK3wDA" + "eid=nsBYW_iYMs-1swbwzJDYDA" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/911.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/77.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -46124,13 +47269,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/911:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/77:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -46145,17 +47290,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpRX42gflr0_tdFDa5BqfChfcv5btRUhRVFA38rZrPyFr-hjmHcI0ZCEHRYNdUfF-Jt3L3j6_lqh3yDkKQn_bJTkI-REpM_Gc5emeeRMsQ36ptQGrI" + "AEnB2UpjnA2pzid91zFr893ip4xoxKiAiNDSkg_EuKOhGlaB4msh55Q6AtlGh7LO45fqcI3BL3SZxZeXf1UWsP1Ldvpn1lxChQ" ] }, "Body": "" } }, { - "ID": "890adf016aca6ef7", + "ID": "4b44c69cbda04eae", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-64578101288717-0013/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/posc?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -46168,13 +47313,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9f1d7b46f3892a3a85d2fd062c2828dc/13184123484724673541;o=1" + "e57a9c4d94126e4940c80e6eb7d2543b/6490220322313434248;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -46183,7 +47328,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-64578101288717-0013/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/posc?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -46192,26 +47337,31 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "31" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:52 GMT" + "Wed, 25 Jul 2018 18:25:35 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:52 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -46221,25 +47371,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vree2:4061,/bns/yv/borg/yv/bns/blobstore2/bitpusher/300.scotty,yabq4-v6:443" + "xgiadaan8:4230,/bns/xi/borg/xi/bns/blobstore2/bitpusher/113.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=GE81W9mUIpbLggSio7fwDg" + "eid=n8BYW5LqAsi9swak95YI" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/300.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/113.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -46248,13 +47398,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/300:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/113:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -46269,17 +47419,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Ur6yI-5-iIWgSLsncrRsVpuQN5bUSy-48dG0Y2ZAczsWxR5J5rIGeIxpp82CuKkkbDptwxHQbQ8GnEvQmxJZZ1oQYJUgtXeiS-vWEY_t5VYUcK0SBQ" + "AEnB2Up1-BBeF8YQAGEXM56pi5rwDPHPLRazvKm6IPYp4uZn6ypJxDc1wQ7jSBtxhYzSXGGrH8JSltjwinCIVRMO6VzmIS4OUQ" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIgp9Cg==" + "Body": "" } }, { - "ID": "e9636835c8c03f3f", + "ID": "5e1e7ba2a93b08c7", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-64578101288717-0013?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/posc2?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -46292,13 +47442,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "faeda15f89a7b3341adacb13ebd167b2/14727200919102406436;o=1" + "67f73aa48a6480403c00fa52f64e2f7d/10346588295559623958;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -46307,7 +47457,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-64578101288717-0013?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/posc2?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -46318,9 +47468,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -46332,7 +47484,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:53 GMT" + "Wed, 25 Jul 2018 18:25:35 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -46348,7 +47500,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -46357,16 +47509,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrkw75:4001,/bns/yv/borg/yv/bns/blobstore2/bitpusher/761.scotty,yabq4-v6:443" + "xgiadaam10:4277,/bns/xi/borg/xi/bns/blobstore2/bitpusher/131.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=GE81W--qMYT4gQTxpIKAAQ" + "eid=n8BYW5yAD-u8swaT-aHwAg" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/761.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/131.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -46375,13 +47527,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/761:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/131:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -46396,17 +47548,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uob2KwX0-qi1vYsvWnxXGn7PxY_0DghiIQ3_F01gr8IeU8n8pYTEIXd-gHfYKf2mOO4NLR2W9CrHHbqsehNTn_NNSBDEW1Zj-ITOMv0UVu3X8aBH_A" + "AEnB2UpFp4IhY-MCRsqePuJ5RJG0DLv2QJCqKZT5yQ6DhI6LjyGk9fw-tCVA6LTIISOwOfJBTxHCfWzxcn_RUt3OAWJtNVA-RQ" ] }, "Body": "" } }, { - "ID": "583e9ad50717be12", + "ID": "cca3704c457a82f4", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-75833434798683-0012/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/signedURL?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -46419,13 +47571,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "0b42658f5438c69d046fc0e8d93ef1d0/15534627700100006196;o=1" + "78e5667fad21494d66c45c457314aa44/14130900873791141284;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -46434,7 +47586,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-75833434798683-0012/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/signedURL?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -46443,26 +47595,31 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "31" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:53 GMT" + "Wed, 25 Jul 2018 18:25:35 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:53 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -46472,25 +47629,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543432000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrk71:4158,/bns/yv/borg/yv/bns/blobstore2/bitpusher/284.scotty,yabq4-v6:443" + "xiiadcbm12:4132,/bns/xi/borg/xi/bns/blobstore2/bitpusher/146.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=GU81W9DICJGvgASSkZWIDQ" + "eid=n8BYW6PjGcW8swaY9Jb4Ag" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/284.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/146.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -46499,13 +47656,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/284:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/146:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -46520,17 +47677,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UpaLTahTavEGo1WUwv21q9W44dfY5M4FwuOeQh8s1g_OiqSlRr0sbr36yVevYpA4bCAS-8GdRfIEGqyKwlZurbPhGRQf4c4kpPwHzNn2UtaFXp-Z5Q" + "AEnB2UqJw-ZJvtzQUbdHrB7tFO34uOjeIRDTQ4szFH5yMfoip2u9sLbawCpeyPAO0-jFyzJm2Ele8Z0kfqHxOYFC3vyy5ecBGg" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIgp9Cg==" + "Body": "" } }, { - "ID": "360876fc6e05a92a", + "ID": "4f77b9cfa7d10ab5", "Request": { "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-75833434798683-0012?alt=json", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/zero-object?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -46543,13 +47700,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "6f6848b118702925dabf2f092db0cdfb/17077705138772575316;o=1" + "e668547fc26a7e0afc1fe87316ed5671/17987551412918957619;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -46558,7 +47715,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-75833434798683-0012?alt=json" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000/o/zero-object?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -46569,9 +47726,11 @@ "Response": { "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ "no-cache, no-store, max-age=0, must-revalidate" @@ -46583,7 +47742,7 @@ "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:53 GMT" + "Wed, 25 Jul 2018 18:25:35 GMT" ], "Expires": [ "Mon, 01 Jan 1990 00:00:00 GMT" @@ -46599,7 +47758,7 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" @@ -46608,16 +47767,16 @@ "998958384336" ], "X-Google-Backends": [ - "vrgm125:4144,/bns/yv/borg/yv/bns/blobstore2/bitpusher/773.scotty,yabq4-v6:443" + "xgiadaad9:4278,/bns/xi/borg/xi/bns/blobstore2/bitpusher/120.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=GU81W631GIi0gQSqyJ_4DQ" + "eid=n8BYW4LoJKGFygP9lpvwAg" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/773.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/120.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -46626,13 +47785,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/773:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/120:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -46647,17 +47806,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2UowYxFDBOKl19fI3oq6WuOdLCmCBSw7vgibYT_tsVfWMnvNX87uj5njyfmguwimz25xrRF2YxsY1Gym39PuLwhDYkIxeVlC0HM4a2mjuMtE5MdZ854" + "AEnB2UoEILCubGLq1xpRuPMZC5hLFBSRiLHRNPsIT4i1GIbH-DnKDVzjISMmjx9j7WZ_eVcqbogS2sxvVAg--it1b3v-3Cx9Rw" ] }, "Body": "" } }, { - "ID": "03214a84d67fe129", + "ID": "7d77148ff3e41002", "Request": { - "Method": "GET", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-75833434798683-0013/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false", + "Method": "DELETE", + "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -46670,13 +47829,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "4309b8485eb74db44e17c0377a79d541/17885413390468760931;o=1" + "cef7b40b0c2f61ee40a9e92059340300/7182050836345567055;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -46685,7 +47844,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-75833434798683-0013/o?alt=json\u0026delimiter=\u0026pageToken=\u0026prefix=\u0026projection=full\u0026versions=false" + "https://www.googleapis.com/storage/v1/b/go-integration-test-20180725-66174009628628-0000?alt=json" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -46694,26 +47853,31 @@ "Body": "" }, "Response": { - "StatusCode": 200, + "StatusCode": 204, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "private, max-age=0, must-revalidate, no-transform" + "no-cache, no-store, max-age=0, must-revalidate" ], "Content-Length": [ - "31" + "0" ], "Content-Type": [ - "application/json; charset=UTF-8" + "application/json" ], "Date": [ - "Thu, 28 Jun 2018 21:11:53 GMT" + "Wed, 25 Jul 2018 18:25:36 GMT" ], "Expires": [ - "Thu, 28 Jun 2018 21:11:53 GMT" + "Mon, 01 Jan 1990 00:00:00 GMT" + ], + "Pragma": [ + "no-cache" ], "Server": [ "UploadServer" @@ -46723,25 +47887,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543432000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrns12:4246,/bns/yv/borg/yv/bns/blobstore2/bitpusher/738.scotty,yabq4-v6:443" + "xiiadcby9:4035,/bns/xi/borg/xi/bns/blobstore2/bitpusher/17.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=GU81W7GxK8WhgQSkk5G4Cw" + "eid=n8BYW8fnL4-5swaUhavYCA" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/738.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/17.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -46750,13 +47914,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/738:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/17:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -46771,17 +47935,17 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq-26mV4XCP1ZF6TrJbI3x_RoorYJx6xod5vWuSmo9CnNBxqZTcT3mPEEL1zrnqylNmbSokUqcJ3VVxnre5EBwErkTYbMLH0Qy2LpWKpWSPt2vvrnI" + "AEnB2UqAK3vPe1VZwLK5E42KRl8e2NgII3c9oqKmFG5LYzPq2j83xITrPUCIt_ULCMSpiFl-Zecm3n40EdtqI8YD-lHicVS8lw" ] }, - "Body": "ewogImtpbmQiOiAic3RvcmFnZSNvYmplY3RzIgp9Cg==" + "Body": "" } }, { - "ID": "001fb38821dc2cfd", + "ID": "5255ffacca751f02", "Request": { - "Method": "DELETE", - "URL": "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-75833434798683-0013?alt=json", + "Method": "GET", + "URL": "https://www.googleapis.com/storage/v1/b?alt=json\u0026pageToken=\u0026prefix=go-integration-test\u0026project=dulcet-port-762\u0026projection=full", "Proto": "HTTP/1.1", "Header": { "Accept-Encoding": [ @@ -46794,13 +47958,13 @@ "google-api-go-client/0.5" ], "Via": [ - "1.1 httpr-8adfd5c90fff562f61d6" + "1.1 httpr-2cb544b9dcbba457f48c" ], "X-Cloud-Trace-Context": [ - "9c26a269125cb20c48b9243e692fb0ac/1054084724934789251;o=1" + "e028fd273916fdf0b65964ec3763cf31/10966363410282182621;o=1" ], "X-Forwarded-For": [ - "::1" + "127.0.0.1" ], "X-Forwarded-Host": [ "www.googleapis.com" @@ -46809,7 +47973,7 @@ "https" ], "X-Forwarded-Url": [ - "https://www.googleapis.com/storage/v1/b/go-integration-test-20180627-75833434798683-0013?alt=json" + "https://www.googleapis.com/storage/v1/b?alt=json\u0026pageToken=\u0026prefix=go-integration-test\u0026project=dulcet-port-762\u0026projection=full" ], "X-Goog-Api-Client": [ "gl-go/1.10.3 gccl/20180226" @@ -46818,29 +47982,28 @@ "Body": "" }, "Response": { - "StatusCode": 204, + "StatusCode": 200, "Proto": "HTTP/1.1", + "ProtoMajor": 1, + "ProtoMinor": 1, "Header": { "Alt-Svc": [ - "quic=\":443\"; ma=2592000; v=\"43,42,41,39,35\"" + "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ], "Cache-Control": [ - "no-cache, no-store, max-age=0, must-revalidate" + "private, max-age=0, must-revalidate, no-transform" ], "Content-Length": [ - "0" + "66669" ], "Content-Type": [ - "application/json" + "application/json; charset=UTF-8" ], "Date": [ - "Thu, 28 Jun 2018 21:11:54 GMT" + "Wed, 25 Jul 2018 18:25:36 GMT" ], "Expires": [ - "Mon, 01 Jan 1990 00:00:00 GMT" - ], - "Pragma": [ - "no-cache" + "Wed, 25 Jul 2018 18:25:36 GMT" ], "Server": [ "UploadServer" @@ -46850,25 +48013,25 @@ "X-Origin" ], "X-Google-Apiary-Auth-Expires": [ - "1530220607000" + "1532543431000" ], "X-Google-Apiary-Auth-Scopes": [ - "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.write_only" + "https://www.googleapis.com/auth/devstorage.full_control https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/devstorage.read_only" ], "X-Google-Apiary-Auth-User": [ "998958384336" ], "X-Google-Backends": [ - "vrjd6:4010,/bns/yv/borg/yv/bns/blobstore2/bitpusher/492.scotty,yabq4-v6:443" + "xiiadcbg14:4207,/bns/xi/borg/xi/bns/blobstore2/bitpusher/92.scotty,aclgag9:443" ], "X-Google-Dos-Service-Trace": [ "main:apps-upload-cloud-storage-unified" ], "X-Google-Gfe-Backend-Request-Info": [ - "eid=GU81W4rCN5G2gQT8qJmACw" + "eid=oMBYW7uvBoG9swbtxpj4CA" ], "X-Google-Gfe-Request-Trace": [ - "yabq4-v6:443,/bns/yv/borg/yv/bns/blobstore2/bitpusher/492.scotty,yabq4-v6:443" + "aclgag9:443,/bns/xi/borg/xi/bns/blobstore2/bitpusher/92.scotty,aclgag9:443" ], "X-Google-Gfe-Response-Code-Details-Trace": [ "response_code_set_by_backend" @@ -46877,13 +48040,13 @@ "bitpusher-gcs-apiary" ], "X-Google-Netmon-Label": [ - "/bns/yv/borg/yv/bns/blobstore2/bitpusher/492:caf3" + "/bns/xi/borg/xi/bns/blobstore2/bitpusher/92:caf3" ], "X-Google-Service": [ "bitpusher-gcs-apiary" ], "X-Google-Session-Info": [ - "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4ytK4wESxgF5YTI5LmMuRW93QjZBWEQzamVjdmNLTTQ5bXh3NjZJRjJSQm9xbmlMSGN0RnJPSTZVRDVWT0paMTJNLW1hSEpoUFBueU9aZncyb2c3aDh5LXFkMVBjekxPNV9HUW1NbC1aT2twcHpWR3pYb3c2OHRSOGZsdDZzNUowSGx6M0x4ZWlaVHhQOW5zUEFNc1pkNWQ5MVowbG1KbjU3UmVQbktDU0dhNkR3eGY1X0FQOG1FUEZ1RmRDdzhWZzY4ZFVUYmhCTk00STAwBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" + "CNCJvbSJHRoCGAYoATp3ChJjbG91ZC1zdG9yYWdlLXJvc3kSCGJpZ3N0b3JlGNmFpL-IASJHMzY2Mzk5MzMxNDUtYjE4dDAxb210OWEyNzlrYzNnY2dpcWhxa2w4Ym9iaHUuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20w4Csw4Ssw4itK4wESxgF5YTI5LmMuRW93QkF3WWMtdWlkTEZTMktXSUNKME1Zb25jSlE2Z1FhZUMxRmowaWNoVnZtcnpYMDVBc3lpMFJCMlM1bFFuV1pQUGcxb2VMQTV6V0U0VnJISk56QU9Cb3MzZXVvQ0I0SkNUZE1QcTdlVVZPNWdtcUFoUlNZempnVjZ0RWhHbmdQLVduV1B5MWpKc3p1TDVydDFjTVN3a0VQX3dzX0dBbC1QRUk5WlpwbXJOYTBXbTZ0VWN4ajFVWFVudDFFQm8wBDoWTk9UX0FfUEVSU0lTVEVOVF9UT0tFTg" ], "X-Google-Shellfish-Status": [ "CA0gBEBG" @@ -46898,10 +48061,10 @@ "success" ], "X-Guploader-Uploadid": [ - "AEnB2Uq1DO0Vl260ZjCOVTrGhgDDOZ5lQPIYmrK6mwKKLGTuDtY5LTDBJD4s1FHWoajL27SPNXPPxhtj6_j95UhaQjhY909A4bykI6nSNP5HGFc88bK2XvQ" + "AEnB2Up2odJMbb2TKTwmEPan1VAZnvzP8IZpt4f-GP_wUv0tOaYXzT260R_j-rnzMEEu388No5a6VJFqz3VBiNwwK4T5K646ag" ] }, - "Body": "" + "Body": "ewogImtpbmQiOiAic3RvcmFnZSNidWNrZXRzIiwKICJpdGVtcyI6IFsKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzIzNDg2NzI4MDYzNDgtMDAwMSIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MjM0ODY3MjgwNjM0OC0wMDAxIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTcyMzQ4NjcyODA2MzQ4LTAwMDEiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNFQyMDowNTo1MC40NTVaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNFQyMDowNTo1MC40NTVaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzIzNDg2NzI4MDYzNDgtMDAwMS9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTcyMzQ4NjcyODA2MzQ4LTAwMDEvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzIzNDg2NzI4MDYzNDgtMDAwMSIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTcyMzQ4NjcyODA2MzQ4LTAwMDEvYWxsQXV0aGVudGljYXRlZFVzZXJzIiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzIzNDg2NzI4MDYzNDgtMDAwMS9hY2wvYWxsQXV0aGVudGljYXRlZFVzZXJzIiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzIzNDg2NzI4MDYzNDgtMDAwMSIsCiAgICAgImVudGl0eSI6ICJhbGxBdXRoZW50aWNhdGVkVXNlcnMiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogImFsbFVzZXJzIiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTczMTE2NTI0NTg1OTEyLTAwMDEiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzMxMTY1MjQ1ODU5MTItMDAwMSIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzExNjUyNDU4NTkxMi0wMDAxIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjRUMjA6MTg6MzguMjg2WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjRUMjA6MTg6MzguMjg2WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTczMTE2NTI0NTg1OTEyLTAwMDEvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzExNjUyNDU4NTkxMi0wMDAxL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTczMTE2NTI0NTg1OTEyLTAwMDEiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzExNjUyNDU4NTkxMi0wMDAxL2FsbEF1dGhlbnRpY2F0ZWRVc2VycyIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTczMTE2NTI0NTg1OTEyLTAwMDEvYWNsL2FsbEF1dGhlbnRpY2F0ZWRVc2VycyIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTczMTE2NTI0NTg1OTEyLTAwMDEiLAogICAgICJlbnRpdHkiOiAiYWxsQXV0aGVudGljYXRlZFVzZXJzIiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJhbGxVc2VycyIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEyIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTczMzU3MjYzMjA0NTc2LTAwMTIiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzMzNTcyNjMyMDQ1NzYtMDAxMiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI0VDIwOjI0OjQzLjk1OFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI0VDIwOjI0OjQ2LjEyNFoiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzMzNTcyNjMyMDQ1NzYtMDAxMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzMzNTcyNjMyMDQ1NzYtMDAxMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEyL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTczMzU3MjYzMjA0NTc2LTAwMTIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTczMzU3MjYzMjA0NTc2LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA3LTI0VDIwOjI0OjQzLjk1OFoiLAogICAgImlzTG9ja2VkIjogdHJ1ZQogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEzIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTczMzU3MjYzMjA0NTc2LTAwMTMiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzMzNTcyNjMyMDQ1NzYtMDAxMyIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI0VDIwOjI0OjQ4LjM5NVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI0VDIwOjI0OjQ4LjM5NVoiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEzL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzMzNTcyNjMyMDQ1NzYtMDAxMy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjQtNzMzNTcyNjMyMDQ1NzYtMDAxMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNC03MzM1NzI2MzIwNDU3Ni0wMDEzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTczMzU3MjYzMjA0NTc2LTAwMTMvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI0LTczMzU3MjYzMjA0NTc2LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA3LTI0VDIwOjI0OjQ4LjM5NVoiCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDA0NzY0NjAxMDE2LTAwMDAiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNDIwMDQ3NjQ2MDEwMTYtMDAwMCIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS00MjAwNDc2NDYwMTAxNi0wMDAwIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTE6NDA6MDUuNjg2WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTE6NDA6MDUuNjg2WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDA0NzY0NjAxMDE2LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS00MjAwNDc2NDYwMTAxNi0wMDAwL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDA0NzY0NjAxMDE2LTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS00MjAwNDc2NDYwMTAxNi0wMDAwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDA0NzY0NjAxMDE2LTAwMDAvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDA0NzY0NjAxMDE2LTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDA0NzY0NjAxMDE2LTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNDIwMDQ3NjQ2MDEwMTYtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNDIwMDQ3NjQ2MDEwMTYtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDQyNzA3MTQ3NDA4LTAwMDAiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNDIwNDI3MDcxNDc0MDgtMDAwMCIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS00MjA0MjcwNzE0NzQwOC0wMDAwIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTE6NDA6NDMuNjAyWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTE6NDA6NDMuNjAyWiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDQyNzA3MTQ3NDA4LTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS00MjA0MjcwNzE0NzQwOC0wMDAwL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDQyNzA3MTQ3NDA4LTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS00MjA0MjcwNzE0NzQwOC0wMDAwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDQyNzA3MTQ3NDA4LTAwMDAvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDQyNzA3MTQ3NDA4LTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDQyNzA3MTQ3NDA4LTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNDIwNDI3MDcxNDc0MDgtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNDIwNDI3MDcxNDc0MDgtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDU0NjYyODY4MzAzLTAwMDAiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNDIwNTQ2NjI4NjgzMDMtMDAwMCIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS00MjA1NDY2Mjg2ODMwMy0wMDAwIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTE6NDA6NTUuMzM5WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTE6NDA6NTUuMzM5WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDU0NjYyODY4MzAzLTAwMDAvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS00MjA1NDY2Mjg2ODMwMy0wMDAwL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDU0NjYyODY4MzAzLTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS00MjA1NDY2Mjg2ODMwMy0wMDAwL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDU0NjYyODY4MzAzLTAwMDAvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDU0NjYyODY4MzAzLTAwMDAiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTQyMDU0NjYyODY4MzAzLTAwMDAvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNDIwNTQ2NjI4NjgzMDMtMDAwMC9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNDIwNTQ2NjI4NjgzMDMtMDAwMCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTIiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjMxOTExMTIwNTY4NDQtMDAxMiIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02MzE5MTExMjA1Njg0NC0wMDEyIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTc6MzU6MjMuMjQwWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTc6MzU6MjUuMDM3WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02MzE5MTExMjA1Njg0NC0wMDEyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02MzE5MTExMjA1Njg0NC0wMDEyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjMxOTExMTIwNTY4NDQtMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjMxOTExMTIwNTY4NDQtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDctMjVUMTc6MzU6MjMuMjQwWiIsCiAgICAiaXNMb2NrZWQiOiB0cnVlCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjMxOTExMTIwNTY4NDQtMDAxMyIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02MzE5MTExMjA1Njg0NC0wMDEzIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTc6MzU6MjcuMjAwWiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTc6MzU6MjcuMjAwWiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02MzE5MTExMjA1Njg0NC0wMDEzL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02MzE5MTExMjA1Njg0NC0wMDEzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTYzMTkxMTEyMDU2ODQ0LTAwMTMvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjMxOTExMTIwNTY4NDQtMDAxMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjMxOTExMTIwNTY4NDQtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDctMjVUMTc6MzU6MjcuMjAwWiIKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMiIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDI1Nzg0ODk3OTM1OC0wMDEyIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0MjU3ODQ4OTc5MzU4LTAwMTIiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxNzo1MzowNS4wNDRaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxNzo1MzowNy4zMzdaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0MjU3ODQ4OTc5MzU4LTAwMTIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0MjU3ODQ4OTc5MzU4LTAwMTIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDI1Nzg0ODk3OTM1OC0wMDEyL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDI1Nzg0ODk3OTM1OC0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQxNzo1MzowNS4wNDRaIiwKICAgICJpc0xvY2tlZCI6IHRydWUKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMyIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDI1Nzg0ODk3OTM1OC0wMDEzIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0MjU3ODQ4OTc5MzU4LTAwMTMiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQxNzo1MzowOS40NzFaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQxNzo1MzowOS40NzFaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0MjU3ODQ4OTc5MzU4LTAwMTMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0MjU3ODQ4OTc5MzU4LTAwMTMvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQyNTc4NDg5NzkzNTgtMDAxMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDI1Nzg0ODk3OTM1OC0wMDEzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDI1Nzg0ODk3OTM1OC0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQxNzo1MzowOS40NzFaIgogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEyIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0ODM5MTEyNDcwNzE1LTAwMTIiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQ4MzkxMTI0NzA3MTUtMDAxMiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjAyOjQ3LjYwNVoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjAyOjQ5LjYzNloiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQ4MzkxMTI0NzA3MTUtMDAxMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQ4MzkxMTI0NzA3MTUtMDAxMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEyL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0ODM5MTEyNDcwNzE1LTAwMTIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0ODM5MTEyNDcwNzE1LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA3LTI1VDE4OjAyOjQ3LjYwNVoiLAogICAgImlzTG9ja2VkIjogdHJ1ZQogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEzIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0ODM5MTEyNDcwNzE1LTAwMTMiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQ4MzkxMTI0NzA3MTUtMDAxMyIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjAyOjUxLjUzNloiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDE4OjAyOjUxLjUzNloiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEzL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQ4MzkxMTI0NzA3MTUtMDAxMy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjQ4MzkxMTI0NzA3MTUtMDAxMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NDgzOTExMjQ3MDcxNS0wMDEzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0ODM5MTEyNDcwNzE1LTAwMTMvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY0ODM5MTEyNDcwNzE1LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA3LTI1VDE4OjAyOjUxLjUzNloiCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMiIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEyIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NTYuNzU1WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjQ6NTguODIwWiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDctMjVUMTg6MjQ6NTYuNzU1WiIsCiAgICAiaXNMb2NrZWQiOiB0cnVlCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMyIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEzIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MDEuMDg2WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMTg6MjU6MDEuMDg2WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEzL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02NjE3NDAwOTYyODYyOC0wMDEzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY2MTc0MDA5NjI4NjI4LTAwMTMvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjYxNzQwMDk2Mjg2MjgtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDctMjVUMTg6MjU6MDEuMDg2WiIKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjg0NDg5NDc0MjEyMC0wMDEyIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY4NDQ4OTQ3NDIxMjAtMDAxMiIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02ODQ0ODk0NzQyMTIwLTAwMTIiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQwMTo1NjoxMi44MDFaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQwMTo1NjoxNS4xMzVaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjg0NDg5NDc0MjEyMC0wMDEyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjg0NDg5NDc0MjEyMC0wMDEyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY4NDQ4OTQ3NDIxMjAtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY4NDQ4OTQ3NDIxMjAtMDAxMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02ODQ0ODk0NzQyMTIwLTAwMTIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY4NDQ4OTQ3NDIxMjAtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjg0NDg5NDc0MjEyMC0wMDEyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY4NDQ4OTQ3NDIxMjAtMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjg0NDg5NDc0MjEyMC0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQwMTo1NjoxMi44MDFaIiwKICAgICJpc0xvY2tlZCI6IHRydWUKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjg0NDg5NDc0MjEyMC0wMDEzIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY4NDQ4OTQ3NDIxMjAtMDAxMyIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02ODQ0ODk0NzQyMTIwLTAwMTMiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQwMTo1NjoxNy4zNDlaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQwMTo1NjoxNy4zNDlaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjg0NDg5NDc0MjEyMC0wMDEzL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjg0NDg5NDc0MjEyMC0wMDEzL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY4NDQ4OTQ3NDIxMjAtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY4NDQ4OTQ3NDIxMjAtMDAxMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS02ODQ0ODk0NzQyMTIwLTAwMTMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY4NDQ4OTQ3NDIxMjAtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjg0NDg5NDc0MjEyMC0wMDEzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTY4NDQ4OTQ3NDIxMjAtMDAxMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNjg0NDg5NDc0MjEyMC0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQwMTo1NjoxNy4zNDlaIgogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FFPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS03NDM0MzgxMzQ2MDY3LTAwMTIiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNzQzNDM4MTM0NjA2Ny0wMDEyIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTc0MzQzODEzNDYwNjctMDAxMiIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDAyOjA2OjAxLjU0MloiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDAyOjA2OjAzLjkyMVoiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMiIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS03NDM0MzgxMzQ2MDY3LTAwMTIvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS03NDM0MzgxMzQ2MDY3LTAwMTIvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNzQzNDM4MTM0NjA2Ny0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNzQzNDM4MTM0NjA2Ny0wMDEyL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTc0MzQzODEzNDYwNjctMDAxMi9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNzQzNDM4MTM0NjA2Ny0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS03NDM0MzgxMzQ2MDY3LTAwMTIvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNzQzNDM4MTM0NjA2Ny0wMDEyL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS03NDM0MzgxMzQ2MDY3LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA3LTI1VDAyOjA2OjAxLjU0MloiLAogICAgImlzTG9ja2VkIjogdHJ1ZQogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FJPSIKICB9LAogIHsKICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXQiLAogICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS03NDM0MzgxMzQ2MDY3LTAwMTMiLAogICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNzQzNDM4MTM0NjA2Ny0wMDEzIiwKICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAibmFtZSI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTc0MzQzODEzNDYwNjctMDAxMyIsCiAgICJ0aW1lQ3JlYXRlZCI6ICIyMDE4LTA3LTI1VDAyOjA2OjA1Ljk5OFoiLAogICAidXBkYXRlZCI6ICIyMDE4LTA3LTI1VDAyOjA2OjA1Ljk5OFoiLAogICAibWV0YWdlbmVyYXRpb24iOiAiMSIsCiAgICJhY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS03NDM0MzgxMzQ2MDY3LTAwMTMvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS03NDM0MzgxMzQ2MDY3LTAwMTMvYWNsL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNzQzNDM4MTM0NjA2Ny0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNzQzNDM4MTM0NjA2Ny0wMDEzL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTc0MzQzODEzNDYwNjctMDAxMy9hY2wvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNzQzNDM4MTM0NjA2Ny0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS03NDM0MzgxMzQ2MDY3LTAwMTMvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtNzQzNDM4MTM0NjA2Ny0wMDEzL2FjbC9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS03NDM0MzgxMzQ2MDY3LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgImRlZmF1bHRPYmplY3RBY2wiOiBbCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogIm93bmVycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAib3duZXIiOiB7CiAgICAiZW50aXR5IjogInByb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IgogICB9LAogICAibG9jYXRpb24iOiAiVVMiLAogICAicmV0ZW50aW9uUG9saWN5IjogewogICAgInJldGVudGlvblBlcmlvZCI6ICI5MDAwMCIsCiAgICAiZWZmZWN0aXZlVGltZSI6ICIyMDE4LTA3LTI1VDAyOjA2OjA1Ljk5OFoiCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUU9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTgwMTUzMTU1MzU4MjUtMDAxMiIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04MDE1MzE1NTM1ODI1LTAwMTIiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODAxNTMxNTUzNTgyNS0wMDEyIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMDI6MTU6NDIuODg2WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMDI6MTU6NDQuODIzWiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIyIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTgwMTUzMTU1MzU4MjUtMDAxMi9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTgwMTUzMTU1MzU4MjUtMDAxMi9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04MDE1MzE1NTM1ODI1LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04MDE1MzE1NTM1ODI1LTAwMTIvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODAxNTMxNTUzNTgyNS0wMDEyL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04MDE1MzE1NTM1ODI1LTAwMTIiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTgwMTUzMTU1MzU4MjUtMDAxMi9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04MDE1MzE1NTM1ODI1LTAwMTIvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTgwMTUzMTU1MzU4MjUtMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDctMjVUMDI6MTU6NDIuODg2WiIsCiAgICAiaXNMb2NrZWQiOiB0cnVlCiAgIH0sCiAgICJzdG9yYWdlQ2xhc3MiOiAiU1RBTkRBUkQiLAogICAiZXRhZyI6ICJDQUk9IgogIH0sCiAgewogICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldCIsCiAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTgwMTUzMTU1MzU4MjUtMDAxMyIsCiAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04MDE1MzE1NTM1ODI1LTAwMTMiLAogICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICJuYW1lIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODAxNTMxNTUzNTgyNS0wMDEzIiwKICAgInRpbWVDcmVhdGVkIjogIjIwMTgtMDctMjVUMDI6MTU6NDYuODY4WiIsCiAgICJ1cGRhdGVkIjogIjIwMTgtMDctMjVUMDI6MTU6NDYuODY4WiIsCiAgICJtZXRhZ2VuZXJhdGlvbiI6ICIxIiwKICAgImFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTgwMTUzMTU1MzU4MjUtMDAxMy9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTgwMTUzMTU1MzU4MjUtMDAxMy9hY2wvcHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04MDE1MzE1NTM1ODI1LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNidWNrZXRBY2Nlc3NDb250cm9sIiwKICAgICAiaWQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04MDE1MzE1NTM1ODI1LTAwMTMvcHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODAxNTMxNTUzNTgyNS0wMDEzL2FjbC9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJidWNrZXQiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04MDE1MzE1NTM1ODI1LTAwMTMiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTgwMTUzMTU1MzU4MjUtMDAxMy9wcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04MDE1MzE1NTM1ODI1LTAwMTMvYWNsL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTgwMTUzMTU1MzU4MjUtMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LXZpZXdlcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIlJFQURFUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogInZpZXdlcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfQogICBdLAogICAiZGVmYXVsdE9iamVjdEFjbCI6IFsKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAib3duZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJlZGl0b3JzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0sCiAgICB7CiAgICAgImtpbmQiOiAic3RvcmFnZSNvYmplY3RBY2Nlc3NDb250cm9sIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJvd25lciI6IHsKICAgICJlbnRpdHkiOiAicHJvamVjdC1vd25lcnMtMzY2Mzk5MzMxNDUiCiAgIH0sCiAgICJsb2NhdGlvbiI6ICJVUyIsCiAgICJyZXRlbnRpb25Qb2xpY3kiOiB7CiAgICAicmV0ZW50aW9uUGVyaW9kIjogIjkwMDAwIiwKICAgICJlZmZlY3RpdmVUaW1lIjogIjIwMTgtMDctMjVUMDI6MTU6NDYuODY4WiIKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBRT0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODU2MzgzMzE2NDM1Ny0wMDEyIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTg1NjM4MzMxNjQzNTctMDAxMiIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04NTYzODMzMTY0MzU3LTAwMTIiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQwMjoyNDo0OS43ODNaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQwMjoyNDo1Mi4xMzNaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjIiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODU2MzgzMzE2NDM1Ny0wMDEyL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODU2MzgzMzE2NDM1Ny0wMDEyL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTg1NjM4MzMxNjQzNTctMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTg1NjM4MzMxNjQzNTctMDAxMi9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04NTYzODMzMTY0MzU3LTAwMTIvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTg1NjM4MzMxNjQzNTctMDAxMiIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODU2MzgzMzE2NDM1Ny0wMDEyL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTg1NjM4MzMxNjQzNTctMDAxMi9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODU2MzgzMzE2NDM1Ny0wMDEyIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBST0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUk9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FJPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQwMjoyNDo0OS43ODNaIiwKICAgICJpc0xvY2tlZCI6IHRydWUKICAgfSwKICAgInN0b3JhZ2VDbGFzcyI6ICJTVEFOREFSRCIsCiAgICJldGFnIjogIkNBST0iCiAgfSwKICB7CiAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0IiwKICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODU2MzgzMzE2NDM1Ny0wMDEzIiwKICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTg1NjM4MzMxNjQzNTctMDAxMyIsCiAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgIm5hbWUiOiAiZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04NTYzODMzMTY0MzU3LTAwMTMiLAogICAidGltZUNyZWF0ZWQiOiAiMjAxOC0wNy0yNVQwMjoyNDo1NS41NTNaIiwKICAgInVwZGF0ZWQiOiAiMjAxOC0wNy0yNVQwMjoyNDo1NS41NTNaIiwKICAgIm1ldGFnZW5lcmF0aW9uIjogIjEiLAogICAiYWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODU2MzgzMzE2NDM1Ny0wMDEzL3Byb2plY3Qtb3duZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAic2VsZkxpbmsiOiAiaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vc3RvcmFnZS92MS9iL2dvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODU2MzgzMzE2NDM1Ny0wMDEzL2FjbC9wcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTg1NjM4MzMxNjQzNTctMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI2J1Y2tldEFjY2Vzc0NvbnRyb2wiLAogICAgICJpZCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTg1NjM4MzMxNjQzNTctMDAxMy9wcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJzZWxmTGluayI6ICJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9zdG9yYWdlL3YxL2IvZ28taW50ZWdyYXRpb24tdGVzdC0yMDE4MDcyNS04NTYzODMzMTY0MzU3LTAwMTMvYWNsL3Byb2plY3QtZWRpdG9ycy0zNjYzOTkzMzE0NSIsCiAgICAgImJ1Y2tldCI6ICJnby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTg1NjM4MzMxNjQzNTctMDAxMyIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LWVkaXRvcnMtMzY2Mzk5MzMxNDUiLAogICAgICJyb2xlIjogIk9XTkVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAiZWRpdG9ycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9LAogICAgewogICAgICJraW5kIjogInN0b3JhZ2UjYnVja2V0QWNjZXNzQ29udHJvbCIsCiAgICAgImlkIjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODU2MzgzMzE2NDM1Ny0wMDEzL3Byb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInNlbGZMaW5rIjogImh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3N0b3JhZ2UvdjEvYi9nby1pbnRlZ3JhdGlvbi10ZXN0LTIwMTgwNzI1LTg1NjM4MzMxNjQzNTctMDAxMy9hY2wvcHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAiYnVja2V0IjogImdvLWludGVncmF0aW9uLXRlc3QtMjAxODA3MjUtODU2MzgzMzE2NDM1Ny0wMDEzIiwKICAgICAiZW50aXR5IjogInByb2plY3Qtdmlld2Vycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiUkVBREVSIiwKICAgICAicHJvamVjdFRlYW0iOiB7CiAgICAgICJwcm9qZWN0TnVtYmVyIjogIjM2NjM5OTMzMTQ1IiwKICAgICAgInRlYW0iOiAidmlld2VycyIKICAgICB9LAogICAgICJldGFnIjogIkNBRT0iCiAgICB9CiAgIF0sCiAgICJkZWZhdWx0T2JqZWN0QWNsIjogWwogICAgewogICAgICJraW5kIjogInN0b3JhZ2Ujb2JqZWN0QWNjZXNzQ29udHJvbCIsCiAgICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIsCiAgICAgInJvbGUiOiAiT1dORVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJvd25lcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC1lZGl0b3JzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJPV05FUiIsCiAgICAgInByb2plY3RUZWFtIjogewogICAgICAicHJvamVjdE51bWJlciI6ICIzNjYzOTkzMzE0NSIsCiAgICAgICJ0ZWFtIjogImVkaXRvcnMiCiAgICAgfSwKICAgICAiZXRhZyI6ICJDQUU9IgogICAgfSwKICAgIHsKICAgICAia2luZCI6ICJzdG9yYWdlI29iamVjdEFjY2Vzc0NvbnRyb2wiLAogICAgICJlbnRpdHkiOiAicHJvamVjdC12aWV3ZXJzLTM2NjM5OTMzMTQ1IiwKICAgICAicm9sZSI6ICJSRUFERVIiLAogICAgICJwcm9qZWN0VGVhbSI6IHsKICAgICAgInByb2plY3ROdW1iZXIiOiAiMzY2Mzk5MzMxNDUiLAogICAgICAidGVhbSI6ICJ2aWV3ZXJzIgogICAgIH0sCiAgICAgImV0YWciOiAiQ0FFPSIKICAgIH0KICAgXSwKICAgIm93bmVyIjogewogICAgImVudGl0eSI6ICJwcm9qZWN0LW93bmVycy0zNjYzOTkzMzE0NSIKICAgfSwKICAgImxvY2F0aW9uIjogIlVTIiwKICAgInJldGVudGlvblBvbGljeSI6IHsKICAgICJyZXRlbnRpb25QZXJpb2QiOiAiOTAwMDAiLAogICAgImVmZmVjdGl2ZVRpbWUiOiAiMjAxOC0wNy0yNVQwMjoyNDo1NS41NTNaIgogICB9LAogICAic3RvcmFnZUNsYXNzIjogIlNUQU5EQVJEIiwKICAgImV0YWciOiAiQ0FFPSIKICB9CiBdCn0K" } } ] diff --git a/vendor/cloud.google.com/go/storage/writer.go b/vendor/cloud.google.com/go/storage/writer.go index 93597c8d6d..7f7827d83d 100644 --- a/vendor/cloud.google.com/go/storage/writer.go +++ b/vendor/cloud.google.com/go/storage/writer.go @@ -125,6 +125,9 @@ func (w *Writer) open() error { if attrs.KMSKeyName != "" { call.KmsKeyName(attrs.KMSKeyName) } + if attrs.PredefinedACL != "" { + call.PredefinedAcl(attrs.PredefinedACL) + } if err := setEncryptionHeaders(call.Header(), w.o.encryptionKey, false); err != nil { w.mu.Lock() w.err = err diff --git a/vendor/github.com/Azure/azure-sdk-for-go/version/version.go b/vendor/github.com/Azure/azure-sdk-for-go/version/version.go index 3153043875..0b6023ad05 100644 --- a/vendor/github.com/Azure/azure-sdk-for-go/version/version.go +++ b/vendor/github.com/Azure/azure-sdk-for-go/version/version.go @@ -18,4 +18,4 @@ package version // Changes may cause incorrect behavior and will be lost if the code is regenerated. // Number contains the semantic version of this SDK. -const Number = "v19.1.0" +const Number = "v19.1.1" diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/async.go b/vendor/github.com/Azure/go-autorest/autorest/azure/async.go index cda1e180ac..9dd7a1d27c 100644 --- a/vendor/github.com/Azure/go-autorest/autorest/azure/async.go +++ b/vendor/github.com/Azure/go-autorest/autorest/azure/async.go @@ -119,7 +119,10 @@ func (f *Future) Done(sender autorest.Sender) (bool, error) { if err := f.pt.updatePollingState(f.pt.provisioningStateApplicable()); err != nil { return false, err } - if err := f.pt.updateHeaders(); err != nil { + if err := f.pt.initPollingMethod(); err != nil { + return false, err + } + if err := f.pt.updatePollingMethod(); err != nil { return false, err } return f.pt.hasTerminated(), f.pt.pollingError() @@ -264,7 +267,7 @@ type pollingTracker interface { // these methods can differ per tracker // checks the response headers and status code to determine the polling mechanism - updateHeaders() error + updatePollingMethod() error // checks the response for tracker-specific error conditions checkForErrors() error @@ -274,6 +277,10 @@ type pollingTracker interface { // methods common to all trackers + // initializes a tracker's polling URL and method, called for each iteration. + // these values can be overridden by each polling tracker as required. + initPollingMethod() error + // initializes the tracker's internal state, call this when the tracker is created initializeState() error @@ -348,6 +355,10 @@ func (pt *pollingTrackerBase) initializeState() error { case http.StatusOK: if ps := pt.getProvisioningState(); ps != nil { pt.State = *ps + if pt.hasFailed() { + pt.updateErrorFromResponse() + return pt.pollingError() + } } else { pt.State = operationSucceeded } @@ -364,8 +375,9 @@ func (pt *pollingTrackerBase) initializeState() error { default: pt.State = operationFailed pt.updateErrorFromResponse() + return pt.pollingError() } - return nil + return pt.initPollingMethod() } func (pt pollingTrackerBase) getProvisioningState() *string { @@ -416,12 +428,14 @@ func (pt *pollingTrackerBase) pollForStatus(sender autorest.Sender) error { } else { // check response body for error content pt.updateErrorFromResponse() + err = pt.pollingError() } return err } // attempts to unmarshal a ServiceError type from the response body. // if that fails then make a best attempt at creating something meaningful. +// NOTE: this assumes that the async operation has failed. func (pt *pollingTrackerBase) updateErrorFromResponse() { var err error if pt.resp.ContentLength != 0 { @@ -431,8 +445,7 @@ func (pt *pollingTrackerBase) updateErrorFromResponse() { re := respErr{} defer pt.resp.Body.Close() var b []byte - b, err = ioutil.ReadAll(pt.resp.Body) - if err != nil { + if b, err = ioutil.ReadAll(pt.resp.Body); err != nil { goto Default } if err = json.Unmarshal(b, &re); err != nil { @@ -445,20 +458,29 @@ func (pt *pollingTrackerBase) updateErrorFromResponse() { goto Default } } - if re.ServiceError != nil { + // the unmarshaller will ensure re.ServiceError is non-nil + // even if there was no content unmarshalled so check the code. + if re.ServiceError.Code != "" { pt.Err = re.ServiceError return } } Default: se := &ServiceError{ - Code: fmt.Sprintf("HTTP status code %v", pt.resp.StatusCode), - Message: pt.resp.Status, + Code: pt.pollingStatus(), + Message: "The async operation failed.", } if err != nil { se.InnerError = make(map[string]interface{}) se.InnerError["unmarshalError"] = err.Error() } + // stick the response body into the error object in hopes + // it contains something useful to help diagnose the failure. + if len(pt.rawBody) > 0 { + se.AdditionalInfo = []map[string]interface{}{ + pt.rawBody, + } + } pt.Err = se } @@ -538,13 +560,33 @@ func (pt pollingTrackerBase) baseCheckForErrors() error { return nil } +// default initialization of polling URL/method. each verb tracker will update this as required. +func (pt *pollingTrackerBase) initPollingMethod() error { + if ao, err := getURLFromAsyncOpHeader(pt.resp); err != nil { + return err + } else if ao != "" { + pt.URI = ao + pt.Pm = PollingAsyncOperation + return nil + } + if lh, err := getURLFromLocationHeader(pt.resp); err != nil { + return err + } else if lh != "" { + pt.URI = lh + pt.Pm = PollingLocation + return nil + } + // it's ok if we didn't find a polling header, this will be handled elsewhere + return nil +} + // DELETE type pollingTrackerDelete struct { pollingTrackerBase } -func (pt *pollingTrackerDelete) updateHeaders() error { +func (pt *pollingTrackerDelete) updatePollingMethod() error { // for 201 the Location header is required if pt.resp.StatusCode == http.StatusCreated { if lh, err := getURLFromLocationHeader(pt.resp); err != nil { @@ -600,7 +642,7 @@ type pollingTrackerPatch struct { pollingTrackerBase } -func (pt *pollingTrackerPatch) updateHeaders() error { +func (pt *pollingTrackerPatch) updatePollingMethod() error { // by default we can use the original URL for polling and final GET if pt.URI == "" { pt.URI = pt.resp.Request.URL.String() @@ -658,7 +700,7 @@ type pollingTrackerPost struct { pollingTrackerBase } -func (pt *pollingTrackerPost) updateHeaders() error { +func (pt *pollingTrackerPost) updatePollingMethod() error { // 201 requires Location header if pt.resp.StatusCode == http.StatusCreated { if lh, err := getURLFromLocationHeader(pt.resp); err != nil { @@ -714,7 +756,7 @@ type pollingTrackerPut struct { pollingTrackerBase } -func (pt *pollingTrackerPut) updateHeaders() error { +func (pt *pollingTrackerPut) updatePollingMethod() error { // by default we can use the original URL for polling and final GET if pt.URI == "" { pt.URI = pt.resp.Request.URL.String() @@ -808,7 +850,7 @@ func createPollingTracker(resp *http.Response) (pollingTracker, error) { // this initializes the polling header values, we do this during creation in case the // initial response send us invalid values; this way the API call will return a non-nil // error (not doing this means the error shows up in Future.Done) - return pt, pt.updateHeaders() + return pt, pt.updatePollingMethod() } // gets the polling URL from the Azure-AsyncOperation header. diff --git a/vendor/github.com/Azure/go-autorest/autorest/sender.go b/vendor/github.com/Azure/go-autorest/autorest/sender.go index cacbd81571..e8893a282e 100644 --- a/vendor/github.com/Azure/go-autorest/autorest/sender.go +++ b/vendor/github.com/Azure/go-autorest/autorest/sender.go @@ -234,7 +234,7 @@ func DoRetryForStatusCodes(attempts int, backoff time.Duration, codes ...int) Se } delayed := DelayWithRetryAfter(resp, r.Context().Done()) if !delayed && !DelayForBackoff(backoff, attempt, r.Context().Done()) { - return nil, r.Context().Err() + return resp, r.Context().Err() } // don't count a 429 against the number of attempts // so that we continue to retry until it succeeds diff --git a/vendor/github.com/Azure/go-autorest/logger/logger.go b/vendor/github.com/Azure/go-autorest/logger/logger.go index b3cf876d47..756fd80cab 100644 --- a/vendor/github.com/Azure/go-autorest/logger/logger.go +++ b/vendor/github.com/Azure/go-autorest/logger/logger.go @@ -282,7 +282,7 @@ func (fl fileLogger) WriteRequest(req *http.Request, filter Filter) { } fl.mu.Lock() defer fl.mu.Unlock() - fmt.Fprintf(fl.logFile, b.String()) + fmt.Fprint(fl.logFile, b.String()) fl.logFile.Sync() } @@ -311,7 +311,7 @@ func (fl fileLogger) WriteResponse(resp *http.Response, filter Filter) { } fl.mu.Lock() defer fl.mu.Unlock() - fmt.Fprintf(fl.logFile, b.String()) + fmt.Fprint(fl.logFile, b.String()) fl.logFile.Sync() } diff --git a/vendor/github.com/Azure/go-autorest/version/version.go b/vendor/github.com/Azure/go-autorest/version/version.go index b9e3e96d87..94de7c51e7 100644 --- a/vendor/github.com/Azure/go-autorest/version/version.go +++ b/vendor/github.com/Azure/go-autorest/version/version.go @@ -20,7 +20,7 @@ import ( ) // Number contains the semantic version of this SDK. -const Number = "v10.15.0" +const Number = "v10.15.5" var ( userAgent = fmt.Sprintf("Go/%s (%s-%s) go-autorest/%s", diff --git a/vendor/github.com/Microsoft/go-winio/ea.go b/vendor/github.com/Microsoft/go-winio/ea.go index b37e930d6a..4051c1b33b 100644 --- a/vendor/github.com/Microsoft/go-winio/ea.go +++ b/vendor/github.com/Microsoft/go-winio/ea.go @@ -1,137 +1,137 @@ -package winio - -import ( - "bytes" - "encoding/binary" - "errors" -) - -type fileFullEaInformation struct { - NextEntryOffset uint32 - Flags uint8 - NameLength uint8 - ValueLength uint16 -} - -var ( - fileFullEaInformationSize = binary.Size(&fileFullEaInformation{}) - - errInvalidEaBuffer = errors.New("invalid extended attribute buffer") - errEaNameTooLarge = errors.New("extended attribute name too large") - errEaValueTooLarge = errors.New("extended attribute value too large") -) - -// ExtendedAttribute represents a single Windows EA. -type ExtendedAttribute struct { - Name string - Value []byte - Flags uint8 -} - -func parseEa(b []byte) (ea ExtendedAttribute, nb []byte, err error) { - var info fileFullEaInformation - err = binary.Read(bytes.NewReader(b), binary.LittleEndian, &info) - if err != nil { - err = errInvalidEaBuffer - return - } - - nameOffset := fileFullEaInformationSize - nameLen := int(info.NameLength) - valueOffset := nameOffset + int(info.NameLength) + 1 - valueLen := int(info.ValueLength) - nextOffset := int(info.NextEntryOffset) - if valueLen+valueOffset > len(b) || nextOffset < 0 || nextOffset > len(b) { - err = errInvalidEaBuffer - return - } - - ea.Name = string(b[nameOffset : nameOffset+nameLen]) - ea.Value = b[valueOffset : valueOffset+valueLen] - ea.Flags = info.Flags - if info.NextEntryOffset != 0 { - nb = b[info.NextEntryOffset:] - } - return -} - -// DecodeExtendedAttributes decodes a list of EAs from a FILE_FULL_EA_INFORMATION -// buffer retrieved from BackupRead, ZwQueryEaFile, etc. -func DecodeExtendedAttributes(b []byte) (eas []ExtendedAttribute, err error) { - for len(b) != 0 { - ea, nb, err := parseEa(b) - if err != nil { - return nil, err - } - - eas = append(eas, ea) - b = nb - } - return -} - -func writeEa(buf *bytes.Buffer, ea *ExtendedAttribute, last bool) error { - if int(uint8(len(ea.Name))) != len(ea.Name) { - return errEaNameTooLarge - } - if int(uint16(len(ea.Value))) != len(ea.Value) { - return errEaValueTooLarge - } - entrySize := uint32(fileFullEaInformationSize + len(ea.Name) + 1 + len(ea.Value)) - withPadding := (entrySize + 3) &^ 3 - nextOffset := uint32(0) - if !last { - nextOffset = withPadding - } - info := fileFullEaInformation{ - NextEntryOffset: nextOffset, - Flags: ea.Flags, - NameLength: uint8(len(ea.Name)), - ValueLength: uint16(len(ea.Value)), - } - - err := binary.Write(buf, binary.LittleEndian, &info) - if err != nil { - return err - } - - _, err = buf.Write([]byte(ea.Name)) - if err != nil { - return err - } - - err = buf.WriteByte(0) - if err != nil { - return err - } - - _, err = buf.Write(ea.Value) - if err != nil { - return err - } - - _, err = buf.Write([]byte{0, 0, 0}[0 : withPadding-entrySize]) - if err != nil { - return err - } - - return nil -} - -// EncodeExtendedAttributes encodes a list of EAs into a FILE_FULL_EA_INFORMATION -// buffer for use with BackupWrite, ZwSetEaFile, etc. -func EncodeExtendedAttributes(eas []ExtendedAttribute) ([]byte, error) { - var buf bytes.Buffer - for i := range eas { - last := false - if i == len(eas)-1 { - last = true - } - - err := writeEa(&buf, &eas[i], last) - if err != nil { - return nil, err - } - } - return buf.Bytes(), nil -} +package winio + +import ( + "bytes" + "encoding/binary" + "errors" +) + +type fileFullEaInformation struct { + NextEntryOffset uint32 + Flags uint8 + NameLength uint8 + ValueLength uint16 +} + +var ( + fileFullEaInformationSize = binary.Size(&fileFullEaInformation{}) + + errInvalidEaBuffer = errors.New("invalid extended attribute buffer") + errEaNameTooLarge = errors.New("extended attribute name too large") + errEaValueTooLarge = errors.New("extended attribute value too large") +) + +// ExtendedAttribute represents a single Windows EA. +type ExtendedAttribute struct { + Name string + Value []byte + Flags uint8 +} + +func parseEa(b []byte) (ea ExtendedAttribute, nb []byte, err error) { + var info fileFullEaInformation + err = binary.Read(bytes.NewReader(b), binary.LittleEndian, &info) + if err != nil { + err = errInvalidEaBuffer + return + } + + nameOffset := fileFullEaInformationSize + nameLen := int(info.NameLength) + valueOffset := nameOffset + int(info.NameLength) + 1 + valueLen := int(info.ValueLength) + nextOffset := int(info.NextEntryOffset) + if valueLen+valueOffset > len(b) || nextOffset < 0 || nextOffset > len(b) { + err = errInvalidEaBuffer + return + } + + ea.Name = string(b[nameOffset : nameOffset+nameLen]) + ea.Value = b[valueOffset : valueOffset+valueLen] + ea.Flags = info.Flags + if info.NextEntryOffset != 0 { + nb = b[info.NextEntryOffset:] + } + return +} + +// DecodeExtendedAttributes decodes a list of EAs from a FILE_FULL_EA_INFORMATION +// buffer retrieved from BackupRead, ZwQueryEaFile, etc. +func DecodeExtendedAttributes(b []byte) (eas []ExtendedAttribute, err error) { + for len(b) != 0 { + ea, nb, err := parseEa(b) + if err != nil { + return nil, err + } + + eas = append(eas, ea) + b = nb + } + return +} + +func writeEa(buf *bytes.Buffer, ea *ExtendedAttribute, last bool) error { + if int(uint8(len(ea.Name))) != len(ea.Name) { + return errEaNameTooLarge + } + if int(uint16(len(ea.Value))) != len(ea.Value) { + return errEaValueTooLarge + } + entrySize := uint32(fileFullEaInformationSize + len(ea.Name) + 1 + len(ea.Value)) + withPadding := (entrySize + 3) &^ 3 + nextOffset := uint32(0) + if !last { + nextOffset = withPadding + } + info := fileFullEaInformation{ + NextEntryOffset: nextOffset, + Flags: ea.Flags, + NameLength: uint8(len(ea.Name)), + ValueLength: uint16(len(ea.Value)), + } + + err := binary.Write(buf, binary.LittleEndian, &info) + if err != nil { + return err + } + + _, err = buf.Write([]byte(ea.Name)) + if err != nil { + return err + } + + err = buf.WriteByte(0) + if err != nil { + return err + } + + _, err = buf.Write(ea.Value) + if err != nil { + return err + } + + _, err = buf.Write([]byte{0, 0, 0}[0 : withPadding-entrySize]) + if err != nil { + return err + } + + return nil +} + +// EncodeExtendedAttributes encodes a list of EAs into a FILE_FULL_EA_INFORMATION +// buffer for use with BackupWrite, ZwSetEaFile, etc. +func EncodeExtendedAttributes(eas []ExtendedAttribute) ([]byte, error) { + var buf bytes.Buffer + for i := range eas { + last := false + if i == len(eas)-1 { + last = true + } + + err := writeEa(&buf, &eas[i], last) + if err != nil { + return nil, err + } + } + return buf.Bytes(), nil +} diff --git a/vendor/github.com/Microsoft/go-winio/file.go b/vendor/github.com/Microsoft/go-winio/file.go index 4334ff1cbe..0385e41081 100644 --- a/vendor/github.com/Microsoft/go-winio/file.go +++ b/vendor/github.com/Microsoft/go-winio/file.go @@ -16,6 +16,7 @@ import ( //sys createIoCompletionPort(file syscall.Handle, port syscall.Handle, key uintptr, threadCount uint32) (newport syscall.Handle, err error) = CreateIoCompletionPort //sys getQueuedCompletionStatus(port syscall.Handle, bytes *uint32, key *uintptr, o **ioOperation, timeout uint32) (err error) = GetQueuedCompletionStatus //sys setFileCompletionNotificationModes(h syscall.Handle, flags uint8) (err error) = SetFileCompletionNotificationModes +//sys wsaGetOverlappedResult(h syscall.Handle, o *syscall.Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) = ws2_32.WSAGetOverlappedResult type atomicBool int32 @@ -79,6 +80,7 @@ type win32File struct { wg sync.WaitGroup wgLock sync.RWMutex closing atomicBool + socket bool readDeadline deadlineHandler writeDeadline deadlineHandler } @@ -109,7 +111,13 @@ func makeWin32File(h syscall.Handle) (*win32File, error) { } func MakeOpenFile(h syscall.Handle) (io.ReadWriteCloser, error) { - return makeWin32File(h) + // If we return the result of makeWin32File directly, it can result in an + // interface-wrapped nil, rather than a nil interface value. + f, err := makeWin32File(h) + if err != nil { + return nil, err + } + return f, nil } // closeHandle closes the resources associated with a Win32 handle @@ -190,6 +198,10 @@ func (f *win32File) asyncIo(c *ioOperation, d *deadlineHandler, bytes uint32, er if f.closing.isSet() { err = ErrFileClosed } + } else if err != nil && f.socket { + // err is from Win32. Query the overlapped structure to get the winsock error. + var bytes, flags uint32 + err = wsaGetOverlappedResult(f.handle, &c.o, &bytes, false, &flags) } case <-timeout: cancelIoEx(f.handle, &c.o) @@ -265,6 +277,10 @@ func (f *win32File) Flush() error { return syscall.FlushFileBuffers(f.handle) } +func (f *win32File) Fd() uintptr { + return uintptr(f.handle) +} + func (d *deadlineHandler) set(deadline time.Time) error { d.setLock.Lock() defer d.setLock.Unlock() diff --git a/vendor/github.com/Microsoft/go-winio/fileinfo.go b/vendor/github.com/Microsoft/go-winio/fileinfo.go index b1d60abb83..ada2fbab63 100644 --- a/vendor/github.com/Microsoft/go-winio/fileinfo.go +++ b/vendor/github.com/Microsoft/go-winio/fileinfo.go @@ -20,7 +20,8 @@ const ( // FileBasicInfo contains file access time and file attributes information. type FileBasicInfo struct { CreationTime, LastAccessTime, LastWriteTime, ChangeTime syscall.Filetime - FileAttributes uintptr // includes padding + FileAttributes uint32 + pad uint32 // padding } // GetFileBasicInfo retrieves times and attributes for a file. diff --git a/vendor/github.com/Microsoft/go-winio/go.mod b/vendor/github.com/Microsoft/go-winio/go.mod new file mode 100644 index 0000000000..b3846826b4 --- /dev/null +++ b/vendor/github.com/Microsoft/go-winio/go.mod @@ -0,0 +1,9 @@ +module github.com/Microsoft/go-winio + +go 1.12 + +require ( + github.com/pkg/errors v0.8.1 + github.com/sirupsen/logrus v1.4.1 + golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b +) diff --git a/vendor/github.com/Microsoft/go-winio/go.sum b/vendor/github.com/Microsoft/go-winio/go.sum new file mode 100644 index 0000000000..babb4a70df --- /dev/null +++ b/vendor/github.com/Microsoft/go-winio/go.sum @@ -0,0 +1,16 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b h1:ag/x1USPSsqHud38I9BAC88qdNLDHHtQ4mlgQIZPPNA= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/vendor/github.com/Microsoft/go-winio/hvsock.go b/vendor/github.com/Microsoft/go-winio/hvsock.go new file mode 100644 index 0000000000..dbfe790ee0 --- /dev/null +++ b/vendor/github.com/Microsoft/go-winio/hvsock.go @@ -0,0 +1,305 @@ +package winio + +import ( + "fmt" + "io" + "net" + "os" + "syscall" + "time" + "unsafe" + + "github.com/Microsoft/go-winio/pkg/guid" +) + +//sys bind(s syscall.Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socketError] = ws2_32.bind + +const ( + afHvSock = 34 // AF_HYPERV + + socketError = ^uintptr(0) +) + +// An HvsockAddr is an address for a AF_HYPERV socket. +type HvsockAddr struct { + VMID guid.GUID + ServiceID guid.GUID +} + +type rawHvsockAddr struct { + Family uint16 + _ uint16 + VMID guid.GUID + ServiceID guid.GUID +} + +// Network returns the address's network name, "hvsock". +func (addr *HvsockAddr) Network() string { + return "hvsock" +} + +func (addr *HvsockAddr) String() string { + return fmt.Sprintf("%s:%s", &addr.VMID, &addr.ServiceID) +} + +// VsockServiceID returns an hvsock service ID corresponding to the specified AF_VSOCK port. +func VsockServiceID(port uint32) guid.GUID { + g, _ := guid.FromString("00000000-facb-11e6-bd58-64006a7986d3") + g.Data1 = port + return g +} + +func (addr *HvsockAddr) raw() rawHvsockAddr { + return rawHvsockAddr{ + Family: afHvSock, + VMID: addr.VMID, + ServiceID: addr.ServiceID, + } +} + +func (addr *HvsockAddr) fromRaw(raw *rawHvsockAddr) { + addr.VMID = raw.VMID + addr.ServiceID = raw.ServiceID +} + +// HvsockListener is a socket listener for the AF_HYPERV address family. +type HvsockListener struct { + sock *win32File + addr HvsockAddr +} + +// HvsockConn is a connected socket of the AF_HYPERV address family. +type HvsockConn struct { + sock *win32File + local, remote HvsockAddr +} + +func newHvSocket() (*win32File, error) { + fd, err := syscall.Socket(afHvSock, syscall.SOCK_STREAM, 1) + if err != nil { + return nil, os.NewSyscallError("socket", err) + } + f, err := makeWin32File(fd) + if err != nil { + syscall.Close(fd) + return nil, err + } + f.socket = true + return f, nil +} + +// ListenHvsock listens for connections on the specified hvsock address. +func ListenHvsock(addr *HvsockAddr) (_ *HvsockListener, err error) { + l := &HvsockListener{addr: *addr} + sock, err := newHvSocket() + if err != nil { + return nil, l.opErr("listen", err) + } + sa := addr.raw() + err = bind(sock.handle, unsafe.Pointer(&sa), int32(unsafe.Sizeof(sa))) + if err != nil { + return nil, l.opErr("listen", os.NewSyscallError("socket", err)) + } + err = syscall.Listen(sock.handle, 16) + if err != nil { + return nil, l.opErr("listen", os.NewSyscallError("listen", err)) + } + return &HvsockListener{sock: sock, addr: *addr}, nil +} + +func (l *HvsockListener) opErr(op string, err error) error { + return &net.OpError{Op: op, Net: "hvsock", Addr: &l.addr, Err: err} +} + +// Addr returns the listener's network address. +func (l *HvsockListener) Addr() net.Addr { + return &l.addr +} + +// Accept waits for the next connection and returns it. +func (l *HvsockListener) Accept() (_ net.Conn, err error) { + sock, err := newHvSocket() + if err != nil { + return nil, l.opErr("accept", err) + } + defer func() { + if sock != nil { + sock.Close() + } + }() + c, err := l.sock.prepareIo() + if err != nil { + return nil, l.opErr("accept", err) + } + defer l.sock.wg.Done() + + // AcceptEx, per documentation, requires an extra 16 bytes per address. + const addrlen = uint32(16 + unsafe.Sizeof(rawHvsockAddr{})) + var addrbuf [addrlen * 2]byte + + var bytes uint32 + err = syscall.AcceptEx(l.sock.handle, sock.handle, &addrbuf[0], 0, addrlen, addrlen, &bytes, &c.o) + _, err = l.sock.asyncIo(c, nil, bytes, err) + if err != nil { + return nil, l.opErr("accept", os.NewSyscallError("acceptex", err)) + } + conn := &HvsockConn{ + sock: sock, + } + conn.local.fromRaw((*rawHvsockAddr)(unsafe.Pointer(&addrbuf[0]))) + conn.remote.fromRaw((*rawHvsockAddr)(unsafe.Pointer(&addrbuf[addrlen]))) + sock = nil + return conn, nil +} + +// Close closes the listener, causing any pending Accept calls to fail. +func (l *HvsockListener) Close() error { + return l.sock.Close() +} + +/* Need to finish ConnectEx handling +func DialHvsock(ctx context.Context, addr *HvsockAddr) (*HvsockConn, error) { + sock, err := newHvSocket() + if err != nil { + return nil, err + } + defer func() { + if sock != nil { + sock.Close() + } + }() + c, err := sock.prepareIo() + if err != nil { + return nil, err + } + defer sock.wg.Done() + var bytes uint32 + err = windows.ConnectEx(windows.Handle(sock.handle), sa, nil, 0, &bytes, &c.o) + _, err = sock.asyncIo(ctx, c, nil, bytes, err) + if err != nil { + return nil, err + } + conn := &HvsockConn{ + sock: sock, + remote: *addr, + } + sock = nil + return conn, nil +} +*/ + +func (conn *HvsockConn) opErr(op string, err error) error { + return &net.OpError{Op: op, Net: "hvsock", Source: &conn.local, Addr: &conn.remote, Err: err} +} + +func (conn *HvsockConn) Read(b []byte) (int, error) { + c, err := conn.sock.prepareIo() + if err != nil { + return 0, conn.opErr("read", err) + } + defer conn.sock.wg.Done() + buf := syscall.WSABuf{Buf: &b[0], Len: uint32(len(b))} + var flags, bytes uint32 + err = syscall.WSARecv(conn.sock.handle, &buf, 1, &bytes, &flags, &c.o, nil) + n, err := conn.sock.asyncIo(c, &conn.sock.readDeadline, bytes, err) + if err != nil { + if _, ok := err.(syscall.Errno); ok { + err = os.NewSyscallError("wsarecv", err) + } + return 0, conn.opErr("read", err) + } else if n == 0 { + err = io.EOF + } + return n, err +} + +func (conn *HvsockConn) Write(b []byte) (int, error) { + t := 0 + for len(b) != 0 { + n, err := conn.write(b) + if err != nil { + return t + n, err + } + t += n + b = b[n:] + } + return t, nil +} + +func (conn *HvsockConn) write(b []byte) (int, error) { + c, err := conn.sock.prepareIo() + if err != nil { + return 0, conn.opErr("write", err) + } + defer conn.sock.wg.Done() + buf := syscall.WSABuf{Buf: &b[0], Len: uint32(len(b))} + var bytes uint32 + err = syscall.WSASend(conn.sock.handle, &buf, 1, &bytes, 0, &c.o, nil) + n, err := conn.sock.asyncIo(c, &conn.sock.writeDeadline, bytes, err) + if err != nil { + if _, ok := err.(syscall.Errno); ok { + err = os.NewSyscallError("wsasend", err) + } + return 0, conn.opErr("write", err) + } + return n, err +} + +// Close closes the socket connection, failing any pending read or write calls. +func (conn *HvsockConn) Close() error { + return conn.sock.Close() +} + +func (conn *HvsockConn) shutdown(how int) error { + err := syscall.Shutdown(conn.sock.handle, syscall.SHUT_RD) + if err != nil { + return os.NewSyscallError("shutdown", err) + } + return nil +} + +// CloseRead shuts down the read end of the socket. +func (conn *HvsockConn) CloseRead() error { + err := conn.shutdown(syscall.SHUT_RD) + if err != nil { + return conn.opErr("close", err) + } + return nil +} + +// CloseWrite shuts down the write end of the socket, notifying the other endpoint that +// no more data will be written. +func (conn *HvsockConn) CloseWrite() error { + err := conn.shutdown(syscall.SHUT_WR) + if err != nil { + return conn.opErr("close", err) + } + return nil +} + +// LocalAddr returns the local address of the connection. +func (conn *HvsockConn) LocalAddr() net.Addr { + return &conn.local +} + +// RemoteAddr returns the remote address of the connection. +func (conn *HvsockConn) RemoteAddr() net.Addr { + return &conn.remote +} + +// SetDeadline implements the net.Conn SetDeadline method. +func (conn *HvsockConn) SetDeadline(t time.Time) error { + conn.SetReadDeadline(t) + conn.SetWriteDeadline(t) + return nil +} + +// SetReadDeadline implements the net.Conn SetReadDeadline method. +func (conn *HvsockConn) SetReadDeadline(t time.Time) error { + return conn.sock.SetReadDeadline(t) +} + +// SetWriteDeadline implements the net.Conn SetWriteDeadline method. +func (conn *HvsockConn) SetWriteDeadline(t time.Time) error { + return conn.sock.SetWriteDeadline(t) +} diff --git a/vendor/github.com/Microsoft/go-winio/pipe.go b/vendor/github.com/Microsoft/go-winio/pipe.go index d99eedb648..d6a46f6a24 100644 --- a/vendor/github.com/Microsoft/go-winio/pipe.go +++ b/vendor/github.com/Microsoft/go-winio/pipe.go @@ -3,10 +3,13 @@ package winio import ( + "context" "errors" + "fmt" "io" "net" "os" + "runtime" "syscall" "time" "unsafe" @@ -18,6 +21,48 @@ import ( //sys getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) = GetNamedPipeInfo //sys getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW //sys localAlloc(uFlags uint32, length uint32) (ptr uintptr) = LocalAlloc +//sys ntCreateNamedPipeFile(pipe *syscall.Handle, access uint32, oa *objectAttributes, iosb *ioStatusBlock, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (status ntstatus) = ntdll.NtCreateNamedPipeFile +//sys rtlNtStatusToDosError(status ntstatus) (winerr error) = ntdll.RtlNtStatusToDosErrorNoTeb +//sys rtlDosPathNameToNtPathName(name *uint16, ntName *unicodeString, filePart uintptr, reserved uintptr) (status ntstatus) = ntdll.RtlDosPathNameToNtPathName_U +//sys rtlDefaultNpAcl(dacl *uintptr) (status ntstatus) = ntdll.RtlDefaultNpAcl + +type ioStatusBlock struct { + Status, Information uintptr +} + +type objectAttributes struct { + Length uintptr + RootDirectory uintptr + ObjectName *unicodeString + Attributes uintptr + SecurityDescriptor *securityDescriptor + SecurityQoS uintptr +} + +type unicodeString struct { + Length uint16 + MaximumLength uint16 + Buffer uintptr +} + +type securityDescriptor struct { + Revision byte + Sbz1 byte + Control uint16 + Owner uintptr + Group uintptr + Sacl uintptr + Dacl uintptr +} + +type ntstatus int32 + +func (status ntstatus) Err() error { + if status >= 0 { + return nil + } + return rtlNtStatusToDosError(status) +} const ( cERROR_PIPE_BUSY = syscall.Errno(231) @@ -25,21 +70,20 @@ const ( cERROR_PIPE_CONNECTED = syscall.Errno(535) cERROR_SEM_TIMEOUT = syscall.Errno(121) - cPIPE_ACCESS_DUPLEX = 0x3 - cFILE_FLAG_FIRST_PIPE_INSTANCE = 0x80000 - cSECURITY_SQOS_PRESENT = 0x100000 - cSECURITY_ANONYMOUS = 0 + cSECURITY_SQOS_PRESENT = 0x100000 + cSECURITY_ANONYMOUS = 0 - cPIPE_REJECT_REMOTE_CLIENTS = 0x8 + cPIPE_TYPE_MESSAGE = 4 - cPIPE_UNLIMITED_INSTANCES = 255 + cPIPE_READMODE_MESSAGE = 2 - cNMPWAIT_USE_DEFAULT_WAIT = 0 - cNMPWAIT_NOWAIT = 1 + cFILE_OPEN = 1 + cFILE_CREATE = 2 - cPIPE_TYPE_MESSAGE = 4 + cFILE_PIPE_MESSAGE_TYPE = 1 + cFILE_PIPE_REJECT_REMOTE_CLIENTS = 2 - cPIPE_READMODE_MESSAGE = 2 + cSE_DACL_PRESENT = 4 ) var ( @@ -137,9 +181,30 @@ func (s pipeAddress) String() string { return string(s) } +// tryDialPipe attempts to dial the pipe at `path` until `ctx` cancellation or timeout. +func tryDialPipe(ctx context.Context, path *string) (syscall.Handle, error) { + for { + select { + case <-ctx.Done(): + return syscall.Handle(0), ctx.Err() + default: + h, err := createFile(*path, syscall.GENERIC_READ|syscall.GENERIC_WRITE, 0, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_OVERLAPPED|cSECURITY_SQOS_PRESENT|cSECURITY_ANONYMOUS, 0) + if err == nil { + return h, nil + } + if err != cERROR_PIPE_BUSY { + return h, &os.PathError{Err: err, Op: "open", Path: *path} + } + // Wait 10 msec and try again. This is a rather simplistic + // view, as we always try each 10 milliseconds. + time.Sleep(time.Millisecond * 10) + } + } +} + // DialPipe connects to a named pipe by path, timing out if the connection // takes longer than the specified duration. If timeout is nil, then we use -// a default timeout of 5 seconds. (We do not use WaitNamedPipe.) +// a default timeout of 2 seconds. (We do not use WaitNamedPipe.) func DialPipe(path string, timeout *time.Duration) (net.Conn, error) { var absTimeout time.Time if timeout != nil { @@ -147,23 +212,22 @@ func DialPipe(path string, timeout *time.Duration) (net.Conn, error) { } else { absTimeout = time.Now().Add(time.Second * 2) } + ctx, _ := context.WithDeadline(context.Background(), absTimeout) + conn, err := DialPipeContext(ctx, path) + if err == context.DeadlineExceeded { + return nil, ErrTimeout + } + return conn, err +} + +// DialPipeContext attempts to connect to a named pipe by `path` until `ctx` +// cancellation or timeout. +func DialPipeContext(ctx context.Context, path string) (net.Conn, error) { var err error var h syscall.Handle - for { - h, err = createFile(path, syscall.GENERIC_READ|syscall.GENERIC_WRITE, 0, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_OVERLAPPED|cSECURITY_SQOS_PRESENT|cSECURITY_ANONYMOUS, 0) - if err != cERROR_PIPE_BUSY { - break - } - if time.Now().After(absTimeout) { - return nil, ErrTimeout - } - - // Wait 10 msec and try again. This is a rather simplistic - // view, as we always try each 10 milliseconds. - time.Sleep(time.Millisecond * 10) - } + h, err = tryDialPipe(ctx, &path) if err != nil { - return nil, &os.PathError{Op: "open", Path: path, Err: err} + return nil, err } var flags uint32 @@ -194,43 +258,87 @@ type acceptResponse struct { } type win32PipeListener struct { - firstHandle syscall.Handle - path string - securityDescriptor []byte - config PipeConfig - acceptCh chan (chan acceptResponse) - closeCh chan int - doneCh chan int + firstHandle syscall.Handle + path string + config PipeConfig + acceptCh chan (chan acceptResponse) + closeCh chan int + doneCh chan int } -func makeServerPipeHandle(path string, securityDescriptor []byte, c *PipeConfig, first bool) (syscall.Handle, error) { - var flags uint32 = cPIPE_ACCESS_DUPLEX | syscall.FILE_FLAG_OVERLAPPED +func makeServerPipeHandle(path string, sd []byte, c *PipeConfig, first bool) (syscall.Handle, error) { + path16, err := syscall.UTF16FromString(path) + if err != nil { + return 0, &os.PathError{Op: "open", Path: path, Err: err} + } + + var oa objectAttributes + oa.Length = unsafe.Sizeof(oa) + + var ntPath unicodeString + if err := rtlDosPathNameToNtPathName(&path16[0], &ntPath, 0, 0).Err(); err != nil { + return 0, &os.PathError{Op: "open", Path: path, Err: err} + } + defer localFree(ntPath.Buffer) + oa.ObjectName = &ntPath + + // The security descriptor is only needed for the first pipe. if first { - flags |= cFILE_FLAG_FIRST_PIPE_INSTANCE + if sd != nil { + len := uint32(len(sd)) + sdb := localAlloc(0, len) + defer localFree(sdb) + copy((*[0xffff]byte)(unsafe.Pointer(sdb))[:], sd) + oa.SecurityDescriptor = (*securityDescriptor)(unsafe.Pointer(sdb)) + } else { + // Construct the default named pipe security descriptor. + var dacl uintptr + if err := rtlDefaultNpAcl(&dacl).Err(); err != nil { + return 0, fmt.Errorf("getting default named pipe ACL: %s", err) + } + defer localFree(dacl) + + sdb := &securityDescriptor{ + Revision: 1, + Control: cSE_DACL_PRESENT, + Dacl: dacl, + } + oa.SecurityDescriptor = sdb + } } - var mode uint32 = cPIPE_REJECT_REMOTE_CLIENTS + typ := uint32(cFILE_PIPE_REJECT_REMOTE_CLIENTS) if c.MessageMode { - mode |= cPIPE_TYPE_MESSAGE + typ |= cFILE_PIPE_MESSAGE_TYPE } - sa := &syscall.SecurityAttributes{} - sa.Length = uint32(unsafe.Sizeof(*sa)) - if securityDescriptor != nil { - len := uint32(len(securityDescriptor)) - sa.SecurityDescriptor = localAlloc(0, len) - defer localFree(sa.SecurityDescriptor) - copy((*[0xffff]byte)(unsafe.Pointer(sa.SecurityDescriptor))[:], securityDescriptor) + disposition := uint32(cFILE_OPEN) + access := uint32(syscall.GENERIC_READ | syscall.GENERIC_WRITE | syscall.SYNCHRONIZE) + if first { + disposition = cFILE_CREATE + // By not asking for read or write access, the named pipe file system + // will put this pipe into an initially disconnected state, blocking + // client connections until the next call with first == false. + access = syscall.SYNCHRONIZE } - h, err := createNamedPipe(path, flags, mode, cPIPE_UNLIMITED_INSTANCES, uint32(c.OutputBufferSize), uint32(c.InputBufferSize), 0, sa) + + timeout := int64(-50 * 10000) // 50ms + + var ( + h syscall.Handle + iosb ioStatusBlock + ) + err = ntCreateNamedPipeFile(&h, access, &oa, &iosb, syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE, disposition, 0, typ, 0, 0, 0xffffffff, uint32(c.InputBufferSize), uint32(c.OutputBufferSize), &timeout).Err() if err != nil { return 0, &os.PathError{Op: "open", Path: path, Err: err} } + + runtime.KeepAlive(ntPath) return h, nil } func (l *win32PipeListener) makeServerPipe() (*win32File, error) { - h, err := makeServerPipeHandle(l.path, l.securityDescriptor, &l.config, false) + h, err := makeServerPipeHandle(l.path, nil, &l.config, false) if err != nil { return nil, err } @@ -341,32 +449,13 @@ func ListenPipe(path string, c *PipeConfig) (net.Listener, error) { if err != nil { return nil, err } - // Create a client handle and connect it. This results in the pipe - // instance always existing, so that clients see ERROR_PIPE_BUSY - // rather than ERROR_FILE_NOT_FOUND. This ties the first instance - // up so that no other instances can be used. This would have been - // cleaner if the Win32 API matched CreateFile with ConnectNamedPipe - // instead of CreateNamedPipe. (Apparently created named pipes are - // considered to be in listening state regardless of whether any - // active calls to ConnectNamedPipe are outstanding.) - h2, err := createFile(path, 0, 0, nil, syscall.OPEN_EXISTING, cSECURITY_SQOS_PRESENT|cSECURITY_ANONYMOUS, 0) - if err != nil { - syscall.Close(h) - return nil, err - } - // Close the client handle. The server side of the instance will - // still be busy, leading to ERROR_PIPE_BUSY instead of - // ERROR_NOT_FOUND, as long as we don't close the server handle, - // or disconnect the client with DisconnectNamedPipe. - syscall.Close(h2) l := &win32PipeListener{ - firstHandle: h, - path: path, - securityDescriptor: sd, - config: *c, - acceptCh: make(chan (chan acceptResponse)), - closeCh: make(chan int), - doneCh: make(chan int), + firstHandle: h, + path: path, + config: *c, + acceptCh: make(chan (chan acceptResponse)), + closeCh: make(chan int), + doneCh: make(chan int), } go l.listenerRoutine() return l, nil diff --git a/vendor/github.com/Microsoft/go-winio/pkg/guid/guid.go b/vendor/github.com/Microsoft/go-winio/pkg/guid/guid.go new file mode 100644 index 0000000000..5864065770 --- /dev/null +++ b/vendor/github.com/Microsoft/go-winio/pkg/guid/guid.go @@ -0,0 +1,235 @@ +// Package guid provides a GUID type. The backing structure for a GUID is +// identical to that used by the golang.org/x/sys/windows GUID type. +// There are two main binary encodings used for a GUID, the big-endian encoding, +// and the Windows (mixed-endian) encoding. See here for details: +// https://en.wikipedia.org/wiki/Universally_unique_identifier#Encoding +package guid + +import ( + "crypto/rand" + "crypto/sha1" + "encoding" + "encoding/binary" + "fmt" + "strconv" + + "golang.org/x/sys/windows" +) + +// Variant specifies which GUID variant (or "type") of the GUID. It determines +// how the entirety of the rest of the GUID is interpreted. +type Variant uint8 + +// The variants specified by RFC 4122. +const ( + // VariantUnknown specifies a GUID variant which does not conform to one of + // the variant encodings specified in RFC 4122. + VariantUnknown Variant = iota + VariantNCS + VariantRFC4122 + VariantMicrosoft + VariantFuture +) + +// Version specifies how the bits in the GUID were generated. For instance, a +// version 4 GUID is randomly generated, and a version 5 is generated from the +// hash of an input string. +type Version uint8 + +var _ = (encoding.TextMarshaler)(GUID{}) +var _ = (encoding.TextUnmarshaler)(&GUID{}) + +// GUID represents a GUID/UUID. It has the same structure as +// golang.org/x/sys/windows.GUID so that it can be used with functions expecting +// that type. It is defined as its own type so that stringification and +// marshaling can be supported. The representation matches that used by native +// Windows code. +type GUID windows.GUID + +// NewV4 returns a new version 4 (pseudorandom) GUID, as defined by RFC 4122. +func NewV4() (GUID, error) { + var b [16]byte + if _, err := rand.Read(b[:]); err != nil { + return GUID{}, err + } + + g := FromArray(b) + g.setVersion(4) // Version 4 means randomly generated. + g.setVariant(VariantRFC4122) + + return g, nil +} + +// NewV5 returns a new version 5 (generated from a string via SHA-1 hashing) +// GUID, as defined by RFC 4122. The RFC is unclear on the encoding of the name, +// and the sample code treats it as a series of bytes, so we do the same here. +// +// Some implementations, such as those found on Windows, treat the name as a +// big-endian UTF16 stream of bytes. If that is desired, the string can be +// encoded as such before being passed to this function. +func NewV5(namespace GUID, name []byte) (GUID, error) { + b := sha1.New() + namespaceBytes := namespace.ToArray() + b.Write(namespaceBytes[:]) + b.Write(name) + + a := [16]byte{} + copy(a[:], b.Sum(nil)) + + g := FromArray(a) + g.setVersion(5) // Version 5 means generated from a string. + g.setVariant(VariantRFC4122) + + return g, nil +} + +func fromArray(b [16]byte, order binary.ByteOrder) GUID { + var g GUID + g.Data1 = order.Uint32(b[0:4]) + g.Data2 = order.Uint16(b[4:6]) + g.Data3 = order.Uint16(b[6:8]) + copy(g.Data4[:], b[8:16]) + return g +} + +func (g GUID) toArray(order binary.ByteOrder) [16]byte { + b := [16]byte{} + order.PutUint32(b[0:4], g.Data1) + order.PutUint16(b[4:6], g.Data2) + order.PutUint16(b[6:8], g.Data3) + copy(b[8:16], g.Data4[:]) + return b +} + +// FromArray constructs a GUID from a big-endian encoding array of 16 bytes. +func FromArray(b [16]byte) GUID { + return fromArray(b, binary.BigEndian) +} + +// ToArray returns an array of 16 bytes representing the GUID in big-endian +// encoding. +func (g GUID) ToArray() [16]byte { + return g.toArray(binary.BigEndian) +} + +// FromWindowsArray constructs a GUID from a Windows encoding array of bytes. +func FromWindowsArray(b [16]byte) GUID { + return fromArray(b, binary.LittleEndian) +} + +// ToWindowsArray returns an array of 16 bytes representing the GUID in Windows +// encoding. +func (g GUID) ToWindowsArray() [16]byte { + return g.toArray(binary.LittleEndian) +} + +func (g GUID) String() string { + return fmt.Sprintf( + "%08x-%04x-%04x-%04x-%012x", + g.Data1, + g.Data2, + g.Data3, + g.Data4[:2], + g.Data4[2:]) +} + +// FromString parses a string containing a GUID and returns the GUID. The only +// format currently supported is the `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` +// format. +func FromString(s string) (GUID, error) { + if len(s) != 36 { + return GUID{}, fmt.Errorf("invalid GUID %q", s) + } + if s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-' { + return GUID{}, fmt.Errorf("invalid GUID %q", s) + } + + var g GUID + + data1, err := strconv.ParseUint(s[0:8], 16, 32) + if err != nil { + return GUID{}, fmt.Errorf("invalid GUID %q", s) + } + g.Data1 = uint32(data1) + + data2, err := strconv.ParseUint(s[9:13], 16, 16) + if err != nil { + return GUID{}, fmt.Errorf("invalid GUID %q", s) + } + g.Data2 = uint16(data2) + + data3, err := strconv.ParseUint(s[14:18], 16, 16) + if err != nil { + return GUID{}, fmt.Errorf("invalid GUID %q", s) + } + g.Data3 = uint16(data3) + + for i, x := range []int{19, 21, 24, 26, 28, 30, 32, 34} { + v, err := strconv.ParseUint(s[x:x+2], 16, 8) + if err != nil { + return GUID{}, fmt.Errorf("invalid GUID %q", s) + } + g.Data4[i] = uint8(v) + } + + return g, nil +} + +func (g *GUID) setVariant(v Variant) { + d := g.Data4[0] + switch v { + case VariantNCS: + d = (d & 0x7f) + case VariantRFC4122: + d = (d & 0x3f) | 0x80 + case VariantMicrosoft: + d = (d & 0x1f) | 0xc0 + case VariantFuture: + d = (d & 0x0f) | 0xe0 + case VariantUnknown: + fallthrough + default: + panic(fmt.Sprintf("invalid variant: %d", v)) + } + g.Data4[0] = d +} + +// Variant returns the GUID variant, as defined in RFC 4122. +func (g GUID) Variant() Variant { + b := g.Data4[0] + if b&0x80 == 0 { + return VariantNCS + } else if b&0xc0 == 0x80 { + return VariantRFC4122 + } else if b&0xe0 == 0xc0 { + return VariantMicrosoft + } else if b&0xe0 == 0xe0 { + return VariantFuture + } + return VariantUnknown +} + +func (g *GUID) setVersion(v Version) { + g.Data3 = (g.Data3 & 0x0fff) | (uint16(v) << 12) +} + +// Version returns the GUID version, as defined in RFC 4122. +func (g GUID) Version() Version { + return Version((g.Data3 & 0xF000) >> 12) +} + +// MarshalText returns the textual representation of the GUID. +func (g GUID) MarshalText() ([]byte, error) { + return []byte(g.String()), nil +} + +// UnmarshalText takes the textual representation of a GUID, and unmarhals it +// into this GUID. +func (g *GUID) UnmarshalText(text []byte) error { + g2, err := FromString(string(text)) + if err != nil { + return err + } + *g = g2 + return nil +} diff --git a/vendor/github.com/Microsoft/go-winio/syscall.go b/vendor/github.com/Microsoft/go-winio/syscall.go index 20d64cf41d..5cb52bc746 100644 --- a/vendor/github.com/Microsoft/go-winio/syscall.go +++ b/vendor/github.com/Microsoft/go-winio/syscall.go @@ -1,3 +1,3 @@ package winio -//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go file.go pipe.go sd.go fileinfo.go privilege.go backup.go +//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go file.go pipe.go sd.go fileinfo.go privilege.go backup.go hvsock.go diff --git a/vendor/github.com/Microsoft/go-winio/zsyscall_windows.go b/vendor/github.com/Microsoft/go-winio/zsyscall_windows.go index 3f527639a4..e26b01fafb 100644 --- a/vendor/github.com/Microsoft/go-winio/zsyscall_windows.go +++ b/vendor/github.com/Microsoft/go-winio/zsyscall_windows.go @@ -1,4 +1,4 @@ -// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT +// Code generated by 'go generate'; DO NOT EDIT. package winio @@ -38,19 +38,25 @@ func errnoErr(e syscall.Errno) error { var ( modkernel32 = windows.NewLazySystemDLL("kernel32.dll") + modws2_32 = windows.NewLazySystemDLL("ws2_32.dll") + modntdll = windows.NewLazySystemDLL("ntdll.dll") modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") procCancelIoEx = modkernel32.NewProc("CancelIoEx") procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes") + procWSAGetOverlappedResult = modws2_32.NewProc("WSAGetOverlappedResult") procConnectNamedPipe = modkernel32.NewProc("ConnectNamedPipe") procCreateNamedPipeW = modkernel32.NewProc("CreateNamedPipeW") procCreateFileW = modkernel32.NewProc("CreateFileW") - procWaitNamedPipeW = modkernel32.NewProc("WaitNamedPipeW") procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo") procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW") procLocalAlloc = modkernel32.NewProc("LocalAlloc") + procNtCreateNamedPipeFile = modntdll.NewProc("NtCreateNamedPipeFile") + procRtlNtStatusToDosErrorNoTeb = modntdll.NewProc("RtlNtStatusToDosErrorNoTeb") + procRtlDosPathNameToNtPathName_U = modntdll.NewProc("RtlDosPathNameToNtPathName_U") + procRtlDefaultNpAcl = modntdll.NewProc("RtlDefaultNpAcl") procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW") @@ -69,6 +75,7 @@ var ( procLookupPrivilegeDisplayNameW = modadvapi32.NewProc("LookupPrivilegeDisplayNameW") procBackupRead = modkernel32.NewProc("BackupRead") procBackupWrite = modkernel32.NewProc("BackupWrite") + procbind = modws2_32.NewProc("bind") ) func cancelIoEx(file syscall.Handle, o *syscall.Overlapped) (err error) { @@ -120,6 +127,24 @@ func setFileCompletionNotificationModes(h syscall.Handle, flags uint8) (err erro return } +func wsaGetOverlappedResult(h syscall.Handle, o *syscall.Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) { + var _p0 uint32 + if wait { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall6(procWSAGetOverlappedResult.Addr(), 5, uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func connectNamedPipe(pipe syscall.Handle, o *syscall.Overlapped) (err error) { r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(o)), 0) if r1 == 0 { @@ -176,27 +201,6 @@ func _createFile(name *uint16, access uint32, mode uint32, sa *syscall.SecurityA return } -func waitNamedPipe(name string, timeout uint32) (err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(name) - if err != nil { - return - } - return _waitNamedPipe(_p0, timeout) -} - -func _waitNamedPipe(name *uint16, timeout uint32) (err error) { - r1, _, e1 := syscall.Syscall(procWaitNamedPipeW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(timeout), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - func getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) { r1, _, e1 := syscall.Syscall6(procGetNamedPipeInfo.Addr(), 5, uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)), 0) if r1 == 0 { @@ -227,6 +231,32 @@ func localAlloc(uFlags uint32, length uint32) (ptr uintptr) { return } +func ntCreateNamedPipeFile(pipe *syscall.Handle, access uint32, oa *objectAttributes, iosb *ioStatusBlock, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (status ntstatus) { + r0, _, _ := syscall.Syscall15(procNtCreateNamedPipeFile.Addr(), 14, uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout)), 0) + status = ntstatus(r0) + return +} + +func rtlNtStatusToDosError(status ntstatus) (winerr error) { + r0, _, _ := syscall.Syscall(procRtlNtStatusToDosErrorNoTeb.Addr(), 1, uintptr(status), 0, 0) + if r0 != 0 { + winerr = syscall.Errno(r0) + } + return +} + +func rtlDosPathNameToNtPathName(name *uint16, ntName *unicodeString, filePart uintptr, reserved uintptr) (status ntstatus) { + r0, _, _ := syscall.Syscall6(procRtlDosPathNameToNtPathName_U.Addr(), 4, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(ntName)), uintptr(filePart), uintptr(reserved), 0, 0) + status = ntstatus(r0) + return +} + +func rtlDefaultNpAcl(dacl *uintptr) (status ntstatus) { + r0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(dacl)), 0, 0) + status = ntstatus(r0) + return +} + func lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) { var _p0 *uint16 _p0, err = syscall.UTF16PtrFromString(accountName) @@ -518,3 +548,15 @@ func backupWrite(h syscall.Handle, b []byte, bytesWritten *uint32, abort bool, p } return } + +func bind(s syscall.Handle, name unsafe.Pointer, namelen int32) (err error) { + r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) + if r1 == socketError { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} diff --git a/vendor/github.com/Nvveen/Gotty/LICENSE b/vendor/github.com/Nvveen/Gotty/LICENSE deleted file mode 100644 index 0b71c97360..0000000000 --- a/vendor/github.com/Nvveen/Gotty/LICENSE +++ /dev/null @@ -1,26 +0,0 @@ -Copyright (c) 2012, Neal van Veen (nealvanveen@gmail.com) -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation are those -of the authors and should not be interpreted as representing official policies, -either expressed or implied, of the FreeBSD Project. diff --git a/vendor/github.com/Nvveen/Gotty/README b/vendor/github.com/Nvveen/Gotty/README deleted file mode 100644 index a6b0d9a8fe..0000000000 --- a/vendor/github.com/Nvveen/Gotty/README +++ /dev/null @@ -1,5 +0,0 @@ -Gotty is a library written in Go that determines and reads termcap database -files to produce an interface for interacting with the capabilities of a -terminal. -See the godoc documentation or the source code for more information about -function usage. diff --git a/vendor/github.com/Nvveen/Gotty/TODO b/vendor/github.com/Nvveen/Gotty/TODO deleted file mode 100644 index 470460531c..0000000000 --- a/vendor/github.com/Nvveen/Gotty/TODO +++ /dev/null @@ -1,3 +0,0 @@ -gotty.go:// TODO add more concurrency to name lookup, look for more opportunities. -all:// TODO add more documentation, with function usage in a doc.go file. -all:// TODO add more testing/benchmarking with go test. diff --git a/vendor/github.com/Nvveen/Gotty/attributes.go b/vendor/github.com/Nvveen/Gotty/attributes.go deleted file mode 100644 index a4c005fae5..0000000000 --- a/vendor/github.com/Nvveen/Gotty/attributes.go +++ /dev/null @@ -1,514 +0,0 @@ -// Copyright 2012 Neal van Veen. All rights reserved. -// Usage of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package gotty - -// Boolean capabilities -var BoolAttr = [...]string{ - "auto_left_margin", "bw", - "auto_right_margin", "am", - "no_esc_ctlc", "xsb", - "ceol_standout_glitch", "xhp", - "eat_newline_glitch", "xenl", - "erase_overstrike", "eo", - "generic_type", "gn", - "hard_copy", "hc", - "has_meta_key", "km", - "has_status_line", "hs", - "insert_null_glitch", "in", - "memory_above", "da", - "memory_below", "db", - "move_insert_mode", "mir", - "move_standout_mode", "msgr", - "over_strike", "os", - "status_line_esc_ok", "eslok", - "dest_tabs_magic_smso", "xt", - "tilde_glitch", "hz", - "transparent_underline", "ul", - "xon_xoff", "nxon", - "needs_xon_xoff", "nxon", - "prtr_silent", "mc5i", - "hard_cursor", "chts", - "non_rev_rmcup", "nrrmc", - "no_pad_char", "npc", - "non_dest_scroll_region", "ndscr", - "can_change", "ccc", - "back_color_erase", "bce", - "hue_lightness_saturation", "hls", - "col_addr_glitch", "xhpa", - "cr_cancels_micro_mode", "crxm", - "has_print_wheel", "daisy", - "row_addr_glitch", "xvpa", - "semi_auto_right_margin", "sam", - "cpi_changes_res", "cpix", - "lpi_changes_res", "lpix", - "backspaces_with_bs", "", - "crt_no_scrolling", "", - "no_correctly_working_cr", "", - "gnu_has_meta_key", "", - "linefeed_is_newline", "", - "has_hardware_tabs", "", - "return_does_clr_eol", "", -} - -// Numerical capabilities -var NumAttr = [...]string{ - "columns", "cols", - "init_tabs", "it", - "lines", "lines", - "lines_of_memory", "lm", - "magic_cookie_glitch", "xmc", - "padding_baud_rate", "pb", - "virtual_terminal", "vt", - "width_status_line", "wsl", - "num_labels", "nlab", - "label_height", "lh", - "label_width", "lw", - "max_attributes", "ma", - "maximum_windows", "wnum", - "max_colors", "colors", - "max_pairs", "pairs", - "no_color_video", "ncv", - "buffer_capacity", "bufsz", - "dot_vert_spacing", "spinv", - "dot_horz_spacing", "spinh", - "max_micro_address", "maddr", - "max_micro_jump", "mjump", - "micro_col_size", "mcs", - "micro_line_size", "mls", - "number_of_pins", "npins", - "output_res_char", "orc", - "output_res_line", "orl", - "output_res_horz_inch", "orhi", - "output_res_vert_inch", "orvi", - "print_rate", "cps", - "wide_char_size", "widcs", - "buttons", "btns", - "bit_image_entwining", "bitwin", - "bit_image_type", "bitype", - "magic_cookie_glitch_ul", "", - "carriage_return_delay", "", - "new_line_delay", "", - "backspace_delay", "", - "horizontal_tab_delay", "", - "number_of_function_keys", "", -} - -// String capabilities -var StrAttr = [...]string{ - "back_tab", "cbt", - "bell", "bel", - "carriage_return", "cr", - "change_scroll_region", "csr", - "clear_all_tabs", "tbc", - "clear_screen", "clear", - "clr_eol", "el", - "clr_eos", "ed", - "column_address", "hpa", - "command_character", "cmdch", - "cursor_address", "cup", - "cursor_down", "cud1", - "cursor_home", "home", - "cursor_invisible", "civis", - "cursor_left", "cub1", - "cursor_mem_address", "mrcup", - "cursor_normal", "cnorm", - "cursor_right", "cuf1", - "cursor_to_ll", "ll", - "cursor_up", "cuu1", - "cursor_visible", "cvvis", - "delete_character", "dch1", - "delete_line", "dl1", - "dis_status_line", "dsl", - "down_half_line", "hd", - "enter_alt_charset_mode", "smacs", - "enter_blink_mode", "blink", - "enter_bold_mode", "bold", - "enter_ca_mode", "smcup", - "enter_delete_mode", "smdc", - "enter_dim_mode", "dim", - "enter_insert_mode", "smir", - "enter_secure_mode", "invis", - "enter_protected_mode", "prot", - "enter_reverse_mode", "rev", - "enter_standout_mode", "smso", - "enter_underline_mode", "smul", - "erase_chars", "ech", - "exit_alt_charset_mode", "rmacs", - "exit_attribute_mode", "sgr0", - "exit_ca_mode", "rmcup", - "exit_delete_mode", "rmdc", - "exit_insert_mode", "rmir", - "exit_standout_mode", "rmso", - "exit_underline_mode", "rmul", - "flash_screen", "flash", - "form_feed", "ff", - "from_status_line", "fsl", - "init_1string", "is1", - "init_2string", "is2", - "init_3string", "is3", - "init_file", "if", - "insert_character", "ich1", - "insert_line", "il1", - "insert_padding", "ip", - "key_backspace", "kbs", - "key_catab", "ktbc", - "key_clear", "kclr", - "key_ctab", "kctab", - "key_dc", "kdch1", - "key_dl", "kdl1", - "key_down", "kcud1", - "key_eic", "krmir", - "key_eol", "kel", - "key_eos", "ked", - "key_f0", "kf0", - "key_f1", "kf1", - "key_f10", "kf10", - "key_f2", "kf2", - "key_f3", "kf3", - "key_f4", "kf4", - "key_f5", "kf5", - "key_f6", "kf6", - "key_f7", "kf7", - "key_f8", "kf8", - "key_f9", "kf9", - "key_home", "khome", - "key_ic", "kich1", - "key_il", "kil1", - "key_left", "kcub1", - "key_ll", "kll", - "key_npage", "knp", - "key_ppage", "kpp", - "key_right", "kcuf1", - "key_sf", "kind", - "key_sr", "kri", - "key_stab", "khts", - "key_up", "kcuu1", - "keypad_local", "rmkx", - "keypad_xmit", "smkx", - "lab_f0", "lf0", - "lab_f1", "lf1", - "lab_f10", "lf10", - "lab_f2", "lf2", - "lab_f3", "lf3", - "lab_f4", "lf4", - "lab_f5", "lf5", - "lab_f6", "lf6", - "lab_f7", "lf7", - "lab_f8", "lf8", - "lab_f9", "lf9", - "meta_off", "rmm", - "meta_on", "smm", - "newline", "_glitch", - "pad_char", "npc", - "parm_dch", "dch", - "parm_delete_line", "dl", - "parm_down_cursor", "cud", - "parm_ich", "ich", - "parm_index", "indn", - "parm_insert_line", "il", - "parm_left_cursor", "cub", - "parm_right_cursor", "cuf", - "parm_rindex", "rin", - "parm_up_cursor", "cuu", - "pkey_key", "pfkey", - "pkey_local", "pfloc", - "pkey_xmit", "pfx", - "print_screen", "mc0", - "prtr_off", "mc4", - "prtr_on", "mc5", - "repeat_char", "rep", - "reset_1string", "rs1", - "reset_2string", "rs2", - "reset_3string", "rs3", - "reset_file", "rf", - "restore_cursor", "rc", - "row_address", "mvpa", - "save_cursor", "row_address", - "scroll_forward", "ind", - "scroll_reverse", "ri", - "set_attributes", "sgr", - "set_tab", "hts", - "set_window", "wind", - "tab", "s_magic_smso", - "to_status_line", "tsl", - "underline_char", "uc", - "up_half_line", "hu", - "init_prog", "iprog", - "key_a1", "ka1", - "key_a3", "ka3", - "key_b2", "kb2", - "key_c1", "kc1", - "key_c3", "kc3", - "prtr_non", "mc5p", - "char_padding", "rmp", - "acs_chars", "acsc", - "plab_norm", "pln", - "key_btab", "kcbt", - "enter_xon_mode", "smxon", - "exit_xon_mode", "rmxon", - "enter_am_mode", "smam", - "exit_am_mode", "rmam", - "xon_character", "xonc", - "xoff_character", "xoffc", - "ena_acs", "enacs", - "label_on", "smln", - "label_off", "rmln", - "key_beg", "kbeg", - "key_cancel", "kcan", - "key_close", "kclo", - "key_command", "kcmd", - "key_copy", "kcpy", - "key_create", "kcrt", - "key_end", "kend", - "key_enter", "kent", - "key_exit", "kext", - "key_find", "kfnd", - "key_help", "khlp", - "key_mark", "kmrk", - "key_message", "kmsg", - "key_move", "kmov", - "key_next", "knxt", - "key_open", "kopn", - "key_options", "kopt", - "key_previous", "kprv", - "key_print", "kprt", - "key_redo", "krdo", - "key_reference", "kref", - "key_refresh", "krfr", - "key_replace", "krpl", - "key_restart", "krst", - "key_resume", "kres", - "key_save", "ksav", - "key_suspend", "kspd", - "key_undo", "kund", - "key_sbeg", "kBEG", - "key_scancel", "kCAN", - "key_scommand", "kCMD", - "key_scopy", "kCPY", - "key_screate", "kCRT", - "key_sdc", "kDC", - "key_sdl", "kDL", - "key_select", "kslt", - "key_send", "kEND", - "key_seol", "kEOL", - "key_sexit", "kEXT", - "key_sfind", "kFND", - "key_shelp", "kHLP", - "key_shome", "kHOM", - "key_sic", "kIC", - "key_sleft", "kLFT", - "key_smessage", "kMSG", - "key_smove", "kMOV", - "key_snext", "kNXT", - "key_soptions", "kOPT", - "key_sprevious", "kPRV", - "key_sprint", "kPRT", - "key_sredo", "kRDO", - "key_sreplace", "kRPL", - "key_sright", "kRIT", - "key_srsume", "kRES", - "key_ssave", "kSAV", - "key_ssuspend", "kSPD", - "key_sundo", "kUND", - "req_for_input", "rfi", - "key_f11", "kf11", - "key_f12", "kf12", - "key_f13", "kf13", - "key_f14", "kf14", - "key_f15", "kf15", - "key_f16", "kf16", - "key_f17", "kf17", - "key_f18", "kf18", - "key_f19", "kf19", - "key_f20", "kf20", - "key_f21", "kf21", - "key_f22", "kf22", - "key_f23", "kf23", - "key_f24", "kf24", - "key_f25", "kf25", - "key_f26", "kf26", - "key_f27", "kf27", - "key_f28", "kf28", - "key_f29", "kf29", - "key_f30", "kf30", - "key_f31", "kf31", - "key_f32", "kf32", - "key_f33", "kf33", - "key_f34", "kf34", - "key_f35", "kf35", - "key_f36", "kf36", - "key_f37", "kf37", - "key_f38", "kf38", - "key_f39", "kf39", - "key_f40", "kf40", - "key_f41", "kf41", - "key_f42", "kf42", - "key_f43", "kf43", - "key_f44", "kf44", - "key_f45", "kf45", - "key_f46", "kf46", - "key_f47", "kf47", - "key_f48", "kf48", - "key_f49", "kf49", - "key_f50", "kf50", - "key_f51", "kf51", - "key_f52", "kf52", - "key_f53", "kf53", - "key_f54", "kf54", - "key_f55", "kf55", - "key_f56", "kf56", - "key_f57", "kf57", - "key_f58", "kf58", - "key_f59", "kf59", - "key_f60", "kf60", - "key_f61", "kf61", - "key_f62", "kf62", - "key_f63", "kf63", - "clr_bol", "el1", - "clear_margins", "mgc", - "set_left_margin", "smgl", - "set_right_margin", "smgr", - "label_format", "fln", - "set_clock", "sclk", - "display_clock", "dclk", - "remove_clock", "rmclk", - "create_window", "cwin", - "goto_window", "wingo", - "hangup", "hup", - "dial_phone", "dial", - "quick_dial", "qdial", - "tone", "tone", - "pulse", "pulse", - "flash_hook", "hook", - "fixed_pause", "pause", - "wait_tone", "wait", - "user0", "u0", - "user1", "u1", - "user2", "u2", - "user3", "u3", - "user4", "u4", - "user5", "u5", - "user6", "u6", - "user7", "u7", - "user8", "u8", - "user9", "u9", - "orig_pair", "op", - "orig_colors", "oc", - "initialize_color", "initc", - "initialize_pair", "initp", - "set_color_pair", "scp", - "set_foreground", "setf", - "set_background", "setb", - "change_char_pitch", "cpi", - "change_line_pitch", "lpi", - "change_res_horz", "chr", - "change_res_vert", "cvr", - "define_char", "defc", - "enter_doublewide_mode", "swidm", - "enter_draft_quality", "sdrfq", - "enter_italics_mode", "sitm", - "enter_leftward_mode", "slm", - "enter_micro_mode", "smicm", - "enter_near_letter_quality", "snlq", - "enter_normal_quality", "snrmq", - "enter_shadow_mode", "sshm", - "enter_subscript_mode", "ssubm", - "enter_superscript_mode", "ssupm", - "enter_upward_mode", "sum", - "exit_doublewide_mode", "rwidm", - "exit_italics_mode", "ritm", - "exit_leftward_mode", "rlm", - "exit_micro_mode", "rmicm", - "exit_shadow_mode", "rshm", - "exit_subscript_mode", "rsubm", - "exit_superscript_mode", "rsupm", - "exit_upward_mode", "rum", - "micro_column_address", "mhpa", - "micro_down", "mcud1", - "micro_left", "mcub1", - "micro_right", "mcuf1", - "micro_row_address", "mvpa", - "micro_up", "mcuu1", - "order_of_pins", "porder", - "parm_down_micro", "mcud", - "parm_left_micro", "mcub", - "parm_right_micro", "mcuf", - "parm_up_micro", "mcuu", - "select_char_set", "scs", - "set_bottom_margin", "smgb", - "set_bottom_margin_parm", "smgbp", - "set_left_margin_parm", "smglp", - "set_right_margin_parm", "smgrp", - "set_top_margin", "smgt", - "set_top_margin_parm", "smgtp", - "start_bit_image", "sbim", - "start_char_set_def", "scsd", - "stop_bit_image", "rbim", - "stop_char_set_def", "rcsd", - "subscript_characters", "subcs", - "superscript_characters", "supcs", - "these_cause_cr", "docr", - "zero_motion", "zerom", - "char_set_names", "csnm", - "key_mouse", "kmous", - "mouse_info", "minfo", - "req_mouse_pos", "reqmp", - "get_mouse", "getm", - "set_a_foreground", "setaf", - "set_a_background", "setab", - "pkey_plab", "pfxl", - "device_type", "devt", - "code_set_init", "csin", - "set0_des_seq", "s0ds", - "set1_des_seq", "s1ds", - "set2_des_seq", "s2ds", - "set3_des_seq", "s3ds", - "set_lr_margin", "smglr", - "set_tb_margin", "smgtb", - "bit_image_repeat", "birep", - "bit_image_newline", "binel", - "bit_image_carriage_return", "bicr", - "color_names", "colornm", - "define_bit_image_region", "defbi", - "end_bit_image_region", "endbi", - "set_color_band", "setcolor", - "set_page_length", "slines", - "display_pc_char", "dispc", - "enter_pc_charset_mode", "smpch", - "exit_pc_charset_mode", "rmpch", - "enter_scancode_mode", "smsc", - "exit_scancode_mode", "rmsc", - "pc_term_options", "pctrm", - "scancode_escape", "scesc", - "alt_scancode_esc", "scesa", - "enter_horizontal_hl_mode", "ehhlm", - "enter_left_hl_mode", "elhlm", - "enter_low_hl_mode", "elohlm", - "enter_right_hl_mode", "erhlm", - "enter_top_hl_mode", "ethlm", - "enter_vertical_hl_mode", "evhlm", - "set_a_attributes", "sgr1", - "set_pglen_inch", "slength", - "termcap_init2", "", - "termcap_reset", "", - "linefeed_if_not_lf", "", - "backspace_if_not_bs", "", - "other_non_function_keys", "", - "arrow_key_map", "", - "acs_ulcorner", "", - "acs_llcorner", "", - "acs_urcorner", "", - "acs_lrcorner", "", - "acs_ltee", "", - "acs_rtee", "", - "acs_btee", "", - "acs_ttee", "", - "acs_hline", "", - "acs_vline", "", - "acs_plus", "", - "memory_lock", "", - "memory_unlock", "", - "box_chars_1", "", -} diff --git a/vendor/github.com/Nvveen/Gotty/gotty.go b/vendor/github.com/Nvveen/Gotty/gotty.go deleted file mode 100644 index 093cbf37e1..0000000000 --- a/vendor/github.com/Nvveen/Gotty/gotty.go +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright 2012 Neal van Veen. All rights reserved. -// Usage of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Gotty is a Go-package for reading and parsing the terminfo database -package gotty - -// TODO add more concurrency to name lookup, look for more opportunities. - -import ( - "encoding/binary" - "errors" - "fmt" - "os" - "reflect" - "strings" - "sync" -) - -// Open a terminfo file by the name given and construct a TermInfo object. -// If something went wrong reading the terminfo database file, an error is -// returned. -func OpenTermInfo(termName string) (*TermInfo, error) { - var term *TermInfo - var err error - // Find the environment variables - termloc := os.Getenv("TERMINFO") - if len(termloc) == 0 { - // Search like ncurses - locations := []string{os.Getenv("HOME") + "/.terminfo/", "/etc/terminfo/", - "/lib/terminfo/", "/usr/share/terminfo/"} - var path string - for _, str := range locations { - // Construct path - path = str + string(termName[0]) + "/" + termName - // Check if path can be opened - file, _ := os.Open(path) - if file != nil { - // Path can open, fall out and use current path - file.Close() - break - } - } - if len(path) > 0 { - term, err = readTermInfo(path) - } else { - err = errors.New(fmt.Sprintf("No terminfo file(-location) found")) - } - } - return term, err -} - -// Open a terminfo file from the environment variable containing the current -// terminal name and construct a TermInfo object. If something went wrong -// reading the terminfo database file, an error is returned. -func OpenTermInfoEnv() (*TermInfo, error) { - termenv := os.Getenv("TERM") - return OpenTermInfo(termenv) -} - -// Return an attribute by the name attr provided. If none can be found, -// an error is returned. -func (term *TermInfo) GetAttribute(attr string) (stacker, error) { - // Channel to store the main value in. - var value stacker - // Add a blocking WaitGroup - var block sync.WaitGroup - // Keep track of variable being written. - written := false - // Function to put into goroutine. - f := func(ats interface{}) { - var ok bool - var v stacker - // Switch on type of map to use and assign value to it. - switch reflect.TypeOf(ats).Elem().Kind() { - case reflect.Bool: - v, ok = ats.(map[string]bool)[attr] - case reflect.Int16: - v, ok = ats.(map[string]int16)[attr] - case reflect.String: - v, ok = ats.(map[string]string)[attr] - } - // If ok, a value is found, so we can write. - if ok { - value = v - written = true - } - // Goroutine is done - block.Done() - } - block.Add(3) - // Go for all 3 attribute lists. - go f(term.boolAttributes) - go f(term.numAttributes) - go f(term.strAttributes) - // Wait until every goroutine is done. - block.Wait() - // If a value has been written, return it. - if written { - return value, nil - } - // Otherwise, error. - return nil, fmt.Errorf("Erorr finding attribute") -} - -// Return an attribute by the name attr provided. If none can be found, -// an error is returned. A name is first converted to its termcap value. -func (term *TermInfo) GetAttributeName(name string) (stacker, error) { - tc := GetTermcapName(name) - return term.GetAttribute(tc) -} - -// A utility function that finds and returns the termcap equivalent of a -// variable name. -func GetTermcapName(name string) string { - // Termcap name - var tc string - // Blocking group - var wait sync.WaitGroup - // Function to put into a goroutine - f := func(attrs []string) { - // Find the string corresponding to the name - for i, s := range attrs { - if s == name { - tc = attrs[i+1] - } - } - // Goroutine is finished - wait.Done() - } - wait.Add(3) - // Go for all 3 attribute lists - go f(BoolAttr[:]) - go f(NumAttr[:]) - go f(StrAttr[:]) - // Wait until every goroutine is done - wait.Wait() - // Return the termcap name - return tc -} - -// This function takes a path to a terminfo file and reads it in binary -// form to construct the actual TermInfo file. -func readTermInfo(path string) (*TermInfo, error) { - // Open the terminfo file - file, err := os.Open(path) - defer file.Close() - if err != nil { - return nil, err - } - - // magic, nameSize, boolSize, nrSNum, nrOffsetsStr, strSize - // Header is composed of the magic 0432 octal number, size of the name - // section, size of the boolean section, the amount of number values, - // the number of offsets of strings, and the size of the string section. - var header [6]int16 - // Byte array is used to read in byte values - var byteArray []byte - // Short array is used to read in short values - var shArray []int16 - // TermInfo object to store values - var term TermInfo - - // Read in the header - err = binary.Read(file, binary.LittleEndian, &header) - if err != nil { - return nil, err - } - // If magic number isn't there or isn't correct, we have the wrong filetype - if header[0] != 0432 { - return nil, errors.New(fmt.Sprintf("Wrong filetype")) - } - - // Read in the names - byteArray = make([]byte, header[1]) - err = binary.Read(file, binary.LittleEndian, &byteArray) - if err != nil { - return nil, err - } - term.Names = strings.Split(string(byteArray), "|") - - // Read in the booleans - byteArray = make([]byte, header[2]) - err = binary.Read(file, binary.LittleEndian, &byteArray) - if err != nil { - return nil, err - } - term.boolAttributes = make(map[string]bool) - for i, b := range byteArray { - if b == 1 { - term.boolAttributes[BoolAttr[i*2+1]] = true - } - } - // If the number of bytes read is not even, a byte for alignment is added - if len(byteArray)%2 != 0 { - err = binary.Read(file, binary.LittleEndian, make([]byte, 1)) - if err != nil { - return nil, err - } - } - - // Read in shorts - shArray = make([]int16, header[3]) - err = binary.Read(file, binary.LittleEndian, &shArray) - if err != nil { - return nil, err - } - term.numAttributes = make(map[string]int16) - for i, n := range shArray { - if n != 0377 && n > -1 { - term.numAttributes[NumAttr[i*2+1]] = n - } - } - - // Read the offsets into the short array - shArray = make([]int16, header[4]) - err = binary.Read(file, binary.LittleEndian, &shArray) - if err != nil { - return nil, err - } - // Read the actual strings in the byte array - byteArray = make([]byte, header[5]) - err = binary.Read(file, binary.LittleEndian, &byteArray) - if err != nil { - return nil, err - } - term.strAttributes = make(map[string]string) - // We get an offset, and then iterate until the string is null-terminated - for i, offset := range shArray { - if offset > -1 { - r := offset - for ; byteArray[r] != 0; r++ { - } - term.strAttributes[StrAttr[i*2+1]] = string(byteArray[offset:r]) - } - } - return &term, nil -} diff --git a/vendor/github.com/Nvveen/Gotty/parser.go b/vendor/github.com/Nvveen/Gotty/parser.go deleted file mode 100644 index a9d5d23c54..0000000000 --- a/vendor/github.com/Nvveen/Gotty/parser.go +++ /dev/null @@ -1,362 +0,0 @@ -// Copyright 2012 Neal van Veen. All rights reserved. -// Usage of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package gotty - -import ( - "bytes" - "errors" - "fmt" - "regexp" - "strconv" - "strings" -) - -var exp = [...]string{ - "%%", - "%c", - "%s", - "%p(\\d)", - "%P([A-z])", - "%g([A-z])", - "%'(.)'", - "%{([0-9]+)}", - "%l", - "%\\+|%-|%\\*|%/|%m", - "%&|%\\||%\\^", - "%=|%>|%<", - "%A|%O", - "%!|%~", - "%i", - "%(:[\\ #\\-\\+]{0,4})?(\\d+\\.\\d+|\\d+)?[doxXs]", - "%\\?(.*?);", -} - -var regex *regexp.Regexp -var staticVar map[byte]stacker - -// Parses the attribute that is received with name attr and parameters params. -func (term *TermInfo) Parse(attr string, params ...interface{}) (string, error) { - // Get the attribute name first. - iface, err := term.GetAttribute(attr) - str, ok := iface.(string) - if err != nil { - return "", err - } - if !ok { - return str, errors.New("Only string capabilities can be parsed.") - } - // Construct the hidden parser struct so we can use a recursive stack based - // parser. - ps := &parser{} - // Dynamic variables only exist in this context. - ps.dynamicVar = make(map[byte]stacker, 26) - ps.parameters = make([]stacker, len(params)) - // Convert the parameters to insert them into the parser struct. - for i, x := range params { - ps.parameters[i] = x - } - // Recursively walk and return. - result, err := ps.walk(str) - return result, err -} - -// Parses the attribute that is received with name attr and parameters params. -// Only works on full name of a capability that is given, which it uses to -// search for the termcap name. -func (term *TermInfo) ParseName(attr string, params ...interface{}) (string, error) { - tc := GetTermcapName(attr) - return term.Parse(tc, params) -} - -// Identify each token in a stack based manner and do the actual parsing. -func (ps *parser) walk(attr string) (string, error) { - // We use a buffer to get the modified string. - var buf bytes.Buffer - // Next, find and identify all tokens by their indices and strings. - tokens := regex.FindAllStringSubmatch(attr, -1) - if len(tokens) == 0 { - return attr, nil - } - indices := regex.FindAllStringIndex(attr, -1) - q := 0 // q counts the matches of one token - // Iterate through the string per character. - for i := 0; i < len(attr); i++ { - // If the current position is an identified token, execute the following - // steps. - if q < len(indices) && i >= indices[q][0] && i < indices[q][1] { - // Switch on token. - switch { - case tokens[q][0][:2] == "%%": - // Literal percentage character. - buf.WriteByte('%') - case tokens[q][0][:2] == "%c": - // Pop a character. - c, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - buf.WriteByte(c.(byte)) - case tokens[q][0][:2] == "%s": - // Pop a string. - str, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - if _, ok := str.(string); !ok { - return buf.String(), errors.New("Stack head is not a string") - } - buf.WriteString(str.(string)) - case tokens[q][0][:2] == "%p": - // Push a parameter on the stack. - index, err := strconv.ParseInt(tokens[q][1], 10, 8) - index-- - if err != nil { - return buf.String(), err - } - if int(index) >= len(ps.parameters) { - return buf.String(), errors.New("Parameters index out of bound") - } - ps.st.push(ps.parameters[index]) - case tokens[q][0][:2] == "%P": - // Pop a variable from the stack as a dynamic or static variable. - val, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - index := tokens[q][2] - if len(index) > 1 { - errorStr := fmt.Sprintf("%s is not a valid dynamic variables index", - index) - return buf.String(), errors.New(errorStr) - } - // Specify either dynamic or static. - if index[0] >= 'a' && index[0] <= 'z' { - ps.dynamicVar[index[0]] = val - } else if index[0] >= 'A' && index[0] <= 'Z' { - staticVar[index[0]] = val - } - case tokens[q][0][:2] == "%g": - // Push a variable from the stack as a dynamic or static variable. - index := tokens[q][3] - if len(index) > 1 { - errorStr := fmt.Sprintf("%s is not a valid static variables index", - index) - return buf.String(), errors.New(errorStr) - } - var val stacker - if index[0] >= 'a' && index[0] <= 'z' { - val = ps.dynamicVar[index[0]] - } else if index[0] >= 'A' && index[0] <= 'Z' { - val = staticVar[index[0]] - } - ps.st.push(val) - case tokens[q][0][:2] == "%'": - // Push a character constant. - con := tokens[q][4] - if len(con) > 1 { - errorStr := fmt.Sprintf("%s is not a valid character constant", con) - return buf.String(), errors.New(errorStr) - } - ps.st.push(con[0]) - case tokens[q][0][:2] == "%{": - // Push an integer constant. - con, err := strconv.ParseInt(tokens[q][5], 10, 32) - if err != nil { - return buf.String(), err - } - ps.st.push(con) - case tokens[q][0][:2] == "%l": - // Push the length of the string that is popped from the stack. - popStr, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - if _, ok := popStr.(string); !ok { - errStr := fmt.Sprintf("Stack head is not a string") - return buf.String(), errors.New(errStr) - } - ps.st.push(len(popStr.(string))) - case tokens[q][0][:2] == "%?": - // If-then-else construct. First, the whole string is identified and - // then inside this substring, we can specify which parts to switch on. - ifReg, _ := regexp.Compile("%\\?(.*)%t(.*)%e(.*);|%\\?(.*)%t(.*);") - ifTokens := ifReg.FindStringSubmatch(tokens[q][0]) - var ( - ifStr string - err error - ) - // Parse the if-part to determine if-else. - if len(ifTokens[1]) > 0 { - ifStr, err = ps.walk(ifTokens[1]) - } else { // else - ifStr, err = ps.walk(ifTokens[4]) - } - // Return any errors - if err != nil { - return buf.String(), err - } else if len(ifStr) > 0 { - // Self-defined limitation, not sure if this is correct, but didn't - // seem like it. - return buf.String(), errors.New("If-clause cannot print statements") - } - var thenStr string - // Pop the first value that is set by parsing the if-clause. - choose, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - // Switch to if or else. - if choose.(int) == 0 && len(ifTokens[1]) > 0 { - thenStr, err = ps.walk(ifTokens[3]) - } else if choose.(int) != 0 { - if len(ifTokens[1]) > 0 { - thenStr, err = ps.walk(ifTokens[2]) - } else { - thenStr, err = ps.walk(ifTokens[5]) - } - } - if err != nil { - return buf.String(), err - } - buf.WriteString(thenStr) - case tokens[q][0][len(tokens[q][0])-1] == 'd': // Fallthrough for printing - fallthrough - case tokens[q][0][len(tokens[q][0])-1] == 'o': // digits. - fallthrough - case tokens[q][0][len(tokens[q][0])-1] == 'x': - fallthrough - case tokens[q][0][len(tokens[q][0])-1] == 'X': - fallthrough - case tokens[q][0][len(tokens[q][0])-1] == 's': - token := tokens[q][0] - // Remove the : that comes before a flag. - if token[1] == ':' { - token = token[:1] + token[2:] - } - digit, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - // The rest is determined like the normal formatted prints. - digitStr := fmt.Sprintf(token, digit.(int)) - buf.WriteString(digitStr) - case tokens[q][0][:2] == "%i": - // Increment the parameters by one. - if len(ps.parameters) < 2 { - return buf.String(), errors.New("Not enough parameters to increment.") - } - val1, val2 := ps.parameters[0].(int), ps.parameters[1].(int) - val1++ - val2++ - ps.parameters[0], ps.parameters[1] = val1, val2 - default: - // The rest of the tokens is a special case, where two values are - // popped and then operated on by the token that comes after them. - op1, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - op2, err := ps.st.pop() - if err != nil { - return buf.String(), err - } - var result stacker - switch tokens[q][0][:2] { - case "%+": - // Addition - result = op2.(int) + op1.(int) - case "%-": - // Subtraction - result = op2.(int) - op1.(int) - case "%*": - // Multiplication - result = op2.(int) * op1.(int) - case "%/": - // Division - result = op2.(int) / op1.(int) - case "%m": - // Modulo - result = op2.(int) % op1.(int) - case "%&": - // Bitwise AND - result = op2.(int) & op1.(int) - case "%|": - // Bitwise OR - result = op2.(int) | op1.(int) - case "%^": - // Bitwise XOR - result = op2.(int) ^ op1.(int) - case "%=": - // Equals - result = op2 == op1 - case "%>": - // Greater-than - result = op2.(int) > op1.(int) - case "%<": - // Lesser-than - result = op2.(int) < op1.(int) - case "%A": - // Logical AND - result = op2.(bool) && op1.(bool) - case "%O": - // Logical OR - result = op2.(bool) || op1.(bool) - case "%!": - // Logical complement - result = !op1.(bool) - case "%~": - // Bitwise complement - result = ^(op1.(int)) - } - ps.st.push(result) - } - - i = indices[q][1] - 1 - q++ - } else { - // We are not "inside" a token, so just skip until the end or the next - // token, and add all characters to the buffer. - j := i - if q != len(indices) { - for !(j >= indices[q][0] && j < indices[q][1]) { - j++ - } - } else { - j = len(attr) - } - buf.WriteString(string(attr[i:j])) - i = j - } - } - // Return the buffer as a string. - return buf.String(), nil -} - -// Push a stacker-value onto the stack. -func (st *stack) push(s stacker) { - *st = append(*st, s) -} - -// Pop a stacker-value from the stack. -func (st *stack) pop() (stacker, error) { - if len(*st) == 0 { - return nil, errors.New("Stack is empty.") - } - newStack := make(stack, len(*st)-1) - val := (*st)[len(*st)-1] - copy(newStack, (*st)[:len(*st)-1]) - *st = newStack - return val, nil -} - -// Initialize regexes and the static vars (that don't get changed between -// calls. -func init() { - // Initialize the main regex. - expStr := strings.Join(exp[:], "|") - regex, _ = regexp.Compile(expStr) - // Initialize the static variables. - staticVar = make(map[byte]stacker, 26) -} diff --git a/vendor/github.com/Nvveen/Gotty/types.go b/vendor/github.com/Nvveen/Gotty/types.go deleted file mode 100644 index 9bcc65e9b8..0000000000 --- a/vendor/github.com/Nvveen/Gotty/types.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2012 Neal van Veen. All rights reserved. -// Usage of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package gotty - -type TermInfo struct { - boolAttributes map[string]bool - numAttributes map[string]int16 - strAttributes map[string]string - // The various names of the TermInfo file. - Names []string -} - -type stacker interface { -} -type stack []stacker - -type parser struct { - st stack - parameters []stacker - dynamicVar map[byte]stacker -} diff --git a/vendor/github.com/boltdb/bolt/Makefile b/vendor/github.com/boltdb/bolt/Makefile deleted file mode 100644 index e035e63adc..0000000000 --- a/vendor/github.com/boltdb/bolt/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -BRANCH=`git rev-parse --abbrev-ref HEAD` -COMMIT=`git rev-parse --short HEAD` -GOLDFLAGS="-X main.branch $(BRANCH) -X main.commit $(COMMIT)" - -default: build - -race: - @go test -v -race -test.run="TestSimulate_(100op|1000op)" - -# go get github.com/kisielk/errcheck -errcheck: - @errcheck -ignorepkg=bytes -ignore=os:Remove github.com/boltdb/bolt - -test: - @go test -v -cover . - @go test -v ./cmd/bolt - -.PHONY: fmt test diff --git a/vendor/github.com/boltdb/bolt/appveyor.yml b/vendor/github.com/boltdb/bolt/appveyor.yml deleted file mode 100644 index 6e26e941d6..0000000000 --- a/vendor/github.com/boltdb/bolt/appveyor.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: "{build}" - -os: Windows Server 2012 R2 - -clone_folder: c:\gopath\src\github.com\boltdb\bolt - -environment: - GOPATH: c:\gopath - -install: - - echo %PATH% - - echo %GOPATH% - - go version - - go env - - go get -v -t ./... - -build_script: - - go test -v ./... diff --git a/vendor/github.com/boltdb/bolt/freelist.go b/vendor/github.com/boltdb/bolt/freelist.go deleted file mode 100644 index aba48f58c6..0000000000 --- a/vendor/github.com/boltdb/bolt/freelist.go +++ /dev/null @@ -1,252 +0,0 @@ -package bolt - -import ( - "fmt" - "sort" - "unsafe" -) - -// freelist represents a list of all pages that are available for allocation. -// It also tracks pages that have been freed but are still in use by open transactions. -type freelist struct { - ids []pgid // all free and available free page ids. - pending map[txid][]pgid // mapping of soon-to-be free page ids by tx. - cache map[pgid]bool // fast lookup of all free and pending page ids. -} - -// newFreelist returns an empty, initialized freelist. -func newFreelist() *freelist { - return &freelist{ - pending: make(map[txid][]pgid), - cache: make(map[pgid]bool), - } -} - -// size returns the size of the page after serialization. -func (f *freelist) size() int { - n := f.count() - if n >= 0xFFFF { - // The first element will be used to store the count. See freelist.write. - n++ - } - return pageHeaderSize + (int(unsafe.Sizeof(pgid(0))) * n) -} - -// count returns count of pages on the freelist -func (f *freelist) count() int { - return f.free_count() + f.pending_count() -} - -// free_count returns count of free pages -func (f *freelist) free_count() int { - return len(f.ids) -} - -// pending_count returns count of pending pages -func (f *freelist) pending_count() int { - var count int - for _, list := range f.pending { - count += len(list) - } - return count -} - -// copyall copies into dst a list of all free ids and all pending ids in one sorted list. -// f.count returns the minimum length required for dst. -func (f *freelist) copyall(dst []pgid) { - m := make(pgids, 0, f.pending_count()) - for _, list := range f.pending { - m = append(m, list...) - } - sort.Sort(m) - mergepgids(dst, f.ids, m) -} - -// allocate returns the starting page id of a contiguous list of pages of a given size. -// If a contiguous block cannot be found then 0 is returned. -func (f *freelist) allocate(n int) pgid { - if len(f.ids) == 0 { - return 0 - } - - var initial, previd pgid - for i, id := range f.ids { - if id <= 1 { - panic(fmt.Sprintf("invalid page allocation: %d", id)) - } - - // Reset initial page if this is not contiguous. - if previd == 0 || id-previd != 1 { - initial = id - } - - // If we found a contiguous block then remove it and return it. - if (id-initial)+1 == pgid(n) { - // If we're allocating off the beginning then take the fast path - // and just adjust the existing slice. This will use extra memory - // temporarily but the append() in free() will realloc the slice - // as is necessary. - if (i + 1) == n { - f.ids = f.ids[i+1:] - } else { - copy(f.ids[i-n+1:], f.ids[i+1:]) - f.ids = f.ids[:len(f.ids)-n] - } - - // Remove from the free cache. - for i := pgid(0); i < pgid(n); i++ { - delete(f.cache, initial+i) - } - - return initial - } - - previd = id - } - return 0 -} - -// free releases a page and its overflow for a given transaction id. -// If the page is already free then a panic will occur. -func (f *freelist) free(txid txid, p *page) { - if p.id <= 1 { - panic(fmt.Sprintf("cannot free page 0 or 1: %d", p.id)) - } - - // Free page and all its overflow pages. - var ids = f.pending[txid] - for id := p.id; id <= p.id+pgid(p.overflow); id++ { - // Verify that page is not already free. - if f.cache[id] { - panic(fmt.Sprintf("page %d already freed", id)) - } - - // Add to the freelist and cache. - ids = append(ids, id) - f.cache[id] = true - } - f.pending[txid] = ids -} - -// release moves all page ids for a transaction id (or older) to the freelist. -func (f *freelist) release(txid txid) { - m := make(pgids, 0) - for tid, ids := range f.pending { - if tid <= txid { - // Move transaction's pending pages to the available freelist. - // Don't remove from the cache since the page is still free. - m = append(m, ids...) - delete(f.pending, tid) - } - } - sort.Sort(m) - f.ids = pgids(f.ids).merge(m) -} - -// rollback removes the pages from a given pending tx. -func (f *freelist) rollback(txid txid) { - // Remove page ids from cache. - for _, id := range f.pending[txid] { - delete(f.cache, id) - } - - // Remove pages from pending list. - delete(f.pending, txid) -} - -// freed returns whether a given page is in the free list. -func (f *freelist) freed(pgid pgid) bool { - return f.cache[pgid] -} - -// read initializes the freelist from a freelist page. -func (f *freelist) read(p *page) { - // If the page.count is at the max uint16 value (64k) then it's considered - // an overflow and the size of the freelist is stored as the first element. - idx, count := 0, int(p.count) - if count == 0xFFFF { - idx = 1 - count = int(((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[0]) - } - - // Copy the list of page ids from the freelist. - if count == 0 { - f.ids = nil - } else { - ids := ((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[idx:count] - f.ids = make([]pgid, len(ids)) - copy(f.ids, ids) - - // Make sure they're sorted. - sort.Sort(pgids(f.ids)) - } - - // Rebuild the page cache. - f.reindex() -} - -// write writes the page ids onto a freelist page. All free and pending ids are -// saved to disk since in the event of a program crash, all pending ids will -// become free. -func (f *freelist) write(p *page) error { - // Combine the old free pgids and pgids waiting on an open transaction. - - // Update the header flag. - p.flags |= freelistPageFlag - - // The page.count can only hold up to 64k elements so if we overflow that - // number then we handle it by putting the size in the first element. - lenids := f.count() - if lenids == 0 { - p.count = uint16(lenids) - } else if lenids < 0xFFFF { - p.count = uint16(lenids) - f.copyall(((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[:]) - } else { - p.count = 0xFFFF - ((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[0] = pgid(lenids) - f.copyall(((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[1:]) - } - - return nil -} - -// reload reads the freelist from a page and filters out pending items. -func (f *freelist) reload(p *page) { - f.read(p) - - // Build a cache of only pending pages. - pcache := make(map[pgid]bool) - for _, pendingIDs := range f.pending { - for _, pendingID := range pendingIDs { - pcache[pendingID] = true - } - } - - // Check each page in the freelist and build a new available freelist - // with any pages not in the pending lists. - var a []pgid - for _, id := range f.ids { - if !pcache[id] { - a = append(a, id) - } - } - f.ids = a - - // Once the available list is rebuilt then rebuild the free cache so that - // it includes the available and pending free pages. - f.reindex() -} - -// reindex rebuilds the free cache based on available and pending free lists. -func (f *freelist) reindex() { - f.cache = make(map[pgid]bool, len(f.ids)) - for _, id := range f.ids { - f.cache[id] = true - } - for _, pendingIDs := range f.pending { - for _, pendingID := range pendingIDs { - f.cache[pendingID] = true - } - } -} diff --git a/vendor/github.com/containerd/containerd/cio/io.go b/vendor/github.com/containerd/containerd/cio/io.go index 100efa5295..c7cf4f0bcb 100644 --- a/vendor/github.com/containerd/containerd/cio/io.go +++ b/vendor/github.com/containerd/containerd/cio/io.go @@ -18,9 +18,13 @@ package cio import ( "context" + "errors" "fmt" "io" + "net/url" "os" + "path/filepath" + "strings" "sync" "github.com/containerd/containerd/defaults" @@ -140,6 +144,15 @@ func NewCreator(opts ...Opt) Creator { if err != nil { return nil, err } + if streams.Stdin == nil { + fifos.Stdin = "" + } + if streams.Stdout == nil { + fifos.Stdout = "" + } + if streams.Stderr == nil { + fifos.Stderr = "" + } return copyIO(fifos, streams) } } @@ -212,7 +225,90 @@ type DirectIO struct { cio } -var _ IO = &DirectIO{} +var ( + _ IO = &DirectIO{} + _ IO = &logURI{} +) + +// LogURI provides the raw logging URI +func LogURI(uri *url.URL) Creator { + return func(_ string) (IO, error) { + return &logURI{ + config: Config{ + Stdout: uri.String(), + Stderr: uri.String(), + }, + }, nil + } +} + +// BinaryIO forwards container STDOUT|STDERR directly to a logging binary +func BinaryIO(binary string, args map[string]string) Creator { + return func(_ string) (IO, error) { + binary = filepath.Clean(binary) + if !strings.HasPrefix(binary, "/") { + return nil, errors.New("absolute path needed") + } + uri := &url.URL{ + Scheme: "binary", + Path: binary, + } + q := uri.Query() + for k, v := range args { + q.Set(k, v) + } + uri.RawQuery = q.Encode() + res := uri.String() + return &logURI{ + config: Config{ + Stdout: res, + Stderr: res, + }, + }, nil + } +} + +// LogFile creates a file on disk that logs the task's STDOUT,STDERR. +// If the log file already exists, the logs will be appended to the file. +func LogFile(path string) Creator { + return func(_ string) (IO, error) { + path = filepath.Clean(path) + if !strings.HasPrefix(path, "/") { + return nil, errors.New("absolute path needed") + } + uri := &url.URL{ + Scheme: "file", + Path: path, + } + res := uri.String() + return &logURI{ + config: Config{ + Stdout: res, + Stderr: res, + }, + }, nil + } +} + +type logURI struct { + config Config +} + +func (l *logURI) Config() Config { + return l.config +} + +func (l *logURI) Cancel() { + +} + +func (l *logURI) Wait() { + +} + +func (l *logURI) Close() error { + return nil +} // Load the io for a container but do not attach // @@ -224,3 +320,7 @@ func Load(set *FIFOSet) (IO, error) { closers: []io.Closer{set}, }, nil } + +func (p *pipes) closers() []io.Closer { + return []io.Closer{p.Stdin, p.Stdout, p.Stderr} +} diff --git a/vendor/github.com/containerd/containerd/cio/io_unix.go b/vendor/github.com/containerd/containerd/cio/io_unix.go index 3ab2a30b0c..42d320933b 100644 --- a/vendor/github.com/containerd/containerd/cio/io_unix.go +++ b/vendor/github.com/containerd/containerd/cio/io_unix.go @@ -72,17 +72,19 @@ func copyIO(fifos *FIFOSet, ioset *Streams) (*cio, error) { } var wg = &sync.WaitGroup{} - wg.Add(1) - go func() { - p := bufPool.Get().(*[]byte) - defer bufPool.Put(p) - - io.CopyBuffer(ioset.Stdout, pipes.Stdout, *p) - pipes.Stdout.Close() - wg.Done() - }() + if fifos.Stdout != "" { + wg.Add(1) + go func() { + p := bufPool.Get().(*[]byte) + defer bufPool.Put(p) - if !fifos.Terminal { + io.CopyBuffer(ioset.Stdout, pipes.Stdout, *p) + pipes.Stdout.Close() + wg.Done() + }() + } + + if !fifos.Terminal && fifos.Stderr != "" { wg.Add(1) go func() { p := bufPool.Get().(*[]byte) @@ -152,7 +154,3 @@ func NewDirectIO(ctx context.Context, fifos *FIFOSet) (*DirectIO, error) { }, }, err } - -func (p *pipes) closers() []io.Closer { - return []io.Closer{p.Stdin, p.Stdout, p.Stderr} -} diff --git a/vendor/github.com/containerd/containerd/cio/io_windows.go b/vendor/github.com/containerd/containerd/cio/io_windows.go index fa9532a3bd..ca6cd54a44 100644 --- a/vendor/github.com/containerd/containerd/cio/io_windows.go +++ b/vendor/github.com/containerd/containerd/cio/io_windows.go @@ -17,10 +17,10 @@ package cio import ( + "context" "fmt" "io" "net" - "sync" winio "github.com/Microsoft/go-winio" "github.com/containerd/containerd/log" @@ -31,17 +31,20 @@ const pipeRoot = `\\.\pipe` // NewFIFOSetInDir returns a new set of fifos for the task func NewFIFOSetInDir(_, id string, terminal bool) (*FIFOSet, error) { + stderrPipe := "" + if !terminal { + stderrPipe = fmt.Sprintf(`%s\ctr-%s-stderr`, pipeRoot, id) + } return NewFIFOSet(Config{ Terminal: terminal, Stdin: fmt.Sprintf(`%s\ctr-%s-stdin`, pipeRoot, id), Stdout: fmt.Sprintf(`%s\ctr-%s-stdout`, pipeRoot, id), - Stderr: fmt.Sprintf(`%s\ctr-%s-stderr`, pipeRoot, id), + Stderr: stderrPipe, }, nil), nil } func copyIO(fifos *FIFOSet, ioset *Streams) (*cio, error) { var ( - wg sync.WaitGroup set []io.Closer ) @@ -76,7 +79,7 @@ func copyIO(fifos *FIFOSet, ioset *Streams) (*cio, error) { if fifos.Stdout != "" { l, err := winio.ListenPipe(fifos.Stdout, nil) if err != nil { - return nil, errors.Wrapf(err, "failed to create stdin pipe %s", fifos.Stdout) + return nil, errors.Wrapf(err, "failed to create stdout pipe %s", fifos.Stdout) } defer func(l net.Listener) { if err != nil { @@ -85,9 +88,7 @@ func copyIO(fifos *FIFOSet, ioset *Streams) (*cio, error) { }(l) set = append(set, l) - wg.Add(1) go func() { - defer wg.Done() c, err := l.Accept() if err != nil { log.L.WithError(err).Errorf("failed to accept stdout connection on %s", fifos.Stdout) @@ -103,7 +104,7 @@ func copyIO(fifos *FIFOSet, ioset *Streams) (*cio, error) { }() } - if !fifos.Terminal && fifos.Stderr != "" { + if fifos.Stderr != "" { l, err := winio.ListenPipe(fifos.Stderr, nil) if err != nil { return nil, errors.Wrapf(err, "failed to create stderr pipe %s", fifos.Stderr) @@ -115,9 +116,7 @@ func copyIO(fifos *FIFOSet, ioset *Streams) (*cio, error) { }(l) set = append(set, l) - wg.Add(1) go func() { - defer wg.Done() c, err := l.Accept() if err != nil { log.L.WithError(err).Errorf("failed to accept stderr connection on %s", fifos.Stderr) @@ -150,3 +149,22 @@ func NewDirectIO(stdin io.WriteCloser, stdout, stderr io.ReadCloser, terminal bo }, } } + +// NewDirectIOFromFIFOSet returns an IO implementation that exposes the IO streams as io.ReadCloser +// and io.WriteCloser. +func NewDirectIOFromFIFOSet(ctx context.Context, stdin io.WriteCloser, stdout, stderr io.ReadCloser, fifos *FIFOSet) *DirectIO { + _, cancel := context.WithCancel(ctx) + pipes := pipes{ + Stdin: stdin, + Stdout: stdout, + Stderr: stderr, + } + return &DirectIO{ + pipes: pipes, + cio: cio{ + config: fifos.Config, + closers: append(pipes.closers(), fifos), + cancel: cancel, + }, + } +} diff --git a/vendor/github.com/containerd/containerd/defaults/defaults.go b/vendor/github.com/containerd/containerd/defaults/defaults.go index 7040f5b85a..6f5b122ecf 100644 --- a/vendor/github.com/containerd/containerd/defaults/defaults.go +++ b/vendor/github.com/containerd/containerd/defaults/defaults.go @@ -23,4 +23,10 @@ const ( // DefaultMaxSendMsgSize defines the default maximum message size for // sending protobufs passed over the GRPC API. DefaultMaxSendMsgSize = 16 << 20 + // DefaultRuntimeNSLabel defines the namespace label to check for the + // default runtime + DefaultRuntimeNSLabel = "containerd.io/defaults/runtime" + // DefaultSnapshotterNSLabel defines the namespace label to check for the + // default snapshotter + DefaultSnapshotterNSLabel = "containerd.io/defaults/snapshotter" ) diff --git a/vendor/github.com/containerd/containerd/defaults/defaults_unix.go b/vendor/github.com/containerd/containerd/defaults/defaults_unix.go index 30ed42235e..319e8777bf 100644 --- a/vendor/github.com/containerd/containerd/defaults/defaults_unix.go +++ b/vendor/github.com/containerd/containerd/defaults/defaults_unix.go @@ -32,4 +32,6 @@ const ( // DefaultFIFODir is the default location used by client-side cio library // to store FIFOs. DefaultFIFODir = "/run/containerd/fifo" + // DefaultRuntime is the default linux runtime + DefaultRuntime = "io.containerd.runc.v2" ) diff --git a/vendor/github.com/containerd/containerd/defaults/defaults_windows.go b/vendor/github.com/containerd/containerd/defaults/defaults_windows.go index 983bf762f7..5eede8de83 100644 --- a/vendor/github.com/containerd/containerd/defaults/defaults_windows.go +++ b/vendor/github.com/containerd/containerd/defaults/defaults_windows.go @@ -26,10 +26,10 @@ import ( var ( // DefaultRootDir is the default location used by containerd to store // persistent data - DefaultRootDir = filepath.Join(os.Getenv("programfiles"), "containerd", "root") + DefaultRootDir = filepath.Join(os.Getenv("ProgramData"), "containerd", "root") // DefaultStateDir is the default location used by containerd to store // transient data - DefaultStateDir = filepath.Join(os.Getenv("programfiles"), "containerd", "state") + DefaultStateDir = filepath.Join(os.Getenv("ProgramData"), "containerd", "state") ) const ( @@ -40,4 +40,6 @@ const ( // DefaultFIFODir is the default location used by client-side cio library // to store FIFOs. Unused on Windows. DefaultFIFODir = "" + // DefaultRuntime is the default windows runtime + DefaultRuntime = "io.containerd.runhcs.v1" ) diff --git a/vendor/github.com/containerd/containerd/errdefs/errors.go b/vendor/github.com/containerd/containerd/errdefs/errors.go new file mode 100644 index 0000000000..b5200afc0e --- /dev/null +++ b/vendor/github.com/containerd/containerd/errdefs/errors.go @@ -0,0 +1,93 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +// Package errdefs defines the common errors used throughout containerd +// packages. +// +// Use with errors.Wrap and error.Wrapf to add context to an error. +// +// To detect an error class, use the IsXXX functions to tell whether an error +// is of a certain type. +// +// The functions ToGRPC and FromGRPC can be used to map server-side and +// client-side errors to the correct types. +package errdefs + +import ( + "context" + + "github.com/pkg/errors" +) + +// Definitions of common error types used throughout containerd. All containerd +// errors returned by most packages will map into one of these errors classes. +// Packages should return errors of these types when they want to instruct a +// client to take a particular action. +// +// For the most part, we just try to provide local grpc errors. Most conditions +// map very well to those defined by grpc. +var ( + ErrUnknown = errors.New("unknown") // used internally to represent a missed mapping. + ErrInvalidArgument = errors.New("invalid argument") + ErrNotFound = errors.New("not found") + ErrAlreadyExists = errors.New("already exists") + ErrFailedPrecondition = errors.New("failed precondition") + ErrUnavailable = errors.New("unavailable") + ErrNotImplemented = errors.New("not implemented") // represents not supported and unimplemented +) + +// IsInvalidArgument returns true if the error is due to an invalid argument +func IsInvalidArgument(err error) bool { + return errors.Cause(err) == ErrInvalidArgument +} + +// IsNotFound returns true if the error is due to a missing object +func IsNotFound(err error) bool { + return errors.Cause(err) == ErrNotFound +} + +// IsAlreadyExists returns true if the error is due to an already existing +// metadata item +func IsAlreadyExists(err error) bool { + return errors.Cause(err) == ErrAlreadyExists +} + +// IsFailedPrecondition returns true if an operation could not proceed to the +// lack of a particular condition +func IsFailedPrecondition(err error) bool { + return errors.Cause(err) == ErrFailedPrecondition +} + +// IsUnavailable returns true if the error is due to a resource being unavailable +func IsUnavailable(err error) bool { + return errors.Cause(err) == ErrUnavailable +} + +// IsNotImplemented returns true if the error is due to not being implemented +func IsNotImplemented(err error) bool { + return errors.Cause(err) == ErrNotImplemented +} + +// IsCanceled returns true if the error is due to `context.Canceled`. +func IsCanceled(err error) bool { + return errors.Cause(err) == context.Canceled +} + +// IsDeadlineExceeded returns true if the error is due to +// `context.DeadlineExceeded`. +func IsDeadlineExceeded(err error) bool { + return errors.Cause(err) == context.DeadlineExceeded +} diff --git a/vendor/github.com/containerd/containerd/errdefs/grpc.go b/vendor/github.com/containerd/containerd/errdefs/grpc.go new file mode 100644 index 0000000000..209f63bd0f --- /dev/null +++ b/vendor/github.com/containerd/containerd/errdefs/grpc.go @@ -0,0 +1,147 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package errdefs + +import ( + "context" + "strings" + + "github.com/pkg/errors" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +// ToGRPC will attempt to map the backend containerd error into a grpc error, +// using the original error message as a description. +// +// Further information may be extracted from certain errors depending on their +// type. +// +// If the error is unmapped, the original error will be returned to be handled +// by the regular grpc error handling stack. +func ToGRPC(err error) error { + if err == nil { + return nil + } + + if isGRPCError(err) { + // error has already been mapped to grpc + return err + } + + switch { + case IsInvalidArgument(err): + return status.Errorf(codes.InvalidArgument, err.Error()) + case IsNotFound(err): + return status.Errorf(codes.NotFound, err.Error()) + case IsAlreadyExists(err): + return status.Errorf(codes.AlreadyExists, err.Error()) + case IsFailedPrecondition(err): + return status.Errorf(codes.FailedPrecondition, err.Error()) + case IsUnavailable(err): + return status.Errorf(codes.Unavailable, err.Error()) + case IsNotImplemented(err): + return status.Errorf(codes.Unimplemented, err.Error()) + case IsCanceled(err): + return status.Errorf(codes.Canceled, err.Error()) + case IsDeadlineExceeded(err): + return status.Errorf(codes.DeadlineExceeded, err.Error()) + } + + return err +} + +// ToGRPCf maps the error to grpc error codes, assembling the formatting string +// and combining it with the target error string. +// +// This is equivalent to errors.ToGRPC(errors.Wrapf(err, format, args...)) +func ToGRPCf(err error, format string, args ...interface{}) error { + return ToGRPC(errors.Wrapf(err, format, args...)) +} + +// FromGRPC returns the underlying error from a grpc service based on the grpc error code +func FromGRPC(err error) error { + if err == nil { + return nil + } + + var cls error // divide these into error classes, becomes the cause + + switch code(err) { + case codes.InvalidArgument: + cls = ErrInvalidArgument + case codes.AlreadyExists: + cls = ErrAlreadyExists + case codes.NotFound: + cls = ErrNotFound + case codes.Unavailable: + cls = ErrUnavailable + case codes.FailedPrecondition: + cls = ErrFailedPrecondition + case codes.Unimplemented: + cls = ErrNotImplemented + case codes.Canceled: + cls = context.Canceled + case codes.DeadlineExceeded: + cls = context.DeadlineExceeded + default: + cls = ErrUnknown + } + + msg := rebaseMessage(cls, err) + if msg != "" { + err = errors.Wrap(cls, msg) + } else { + err = errors.WithStack(cls) + } + + return err +} + +// rebaseMessage removes the repeats for an error at the end of an error +// string. This will happen when taking an error over grpc then remapping it. +// +// Effectively, we just remove the string of cls from the end of err if it +// appears there. +func rebaseMessage(cls error, err error) string { + desc := errDesc(err) + clss := cls.Error() + if desc == clss { + return "" + } + + return strings.TrimSuffix(desc, ": "+clss) +} + +func isGRPCError(err error) bool { + _, ok := status.FromError(err) + return ok +} + +func code(err error) codes.Code { + if s, ok := status.FromError(err); ok { + return s.Code() + } + return codes.Unknown +} + +func errDesc(err error) string { + if s, ok := status.FromError(err); ok { + return s.Message() + } + return err.Error() +} diff --git a/vendor/github.com/containerd/containerd/log/context.go b/vendor/github.com/containerd/containerd/log/context.go index f40603b17b..31f1a3ac09 100644 --- a/vendor/github.com/containerd/containerd/log/context.go +++ b/vendor/github.com/containerd/containerd/log/context.go @@ -30,7 +30,7 @@ var ( // messages. G = GetLogger - // L is an alias for the the standard logger. + // L is an alias for the standard logger. L = logrus.NewEntry(logrus.StandardLogger()) ) @@ -42,6 +42,10 @@ type ( // and is usually used to trace detailed behavior of the program. const TraceLevel = logrus.Level(uint32(logrus.DebugLevel + 1)) +// RFC3339NanoFixed is time.RFC3339Nano with nanoseconds padded using zeros to +// ensure the formatted time is always the same number of characters. +const RFC3339NanoFixed = "2006-01-02T15:04:05.000000000Z07:00" + // ParseLevel takes a string level and returns the Logrus log level constant. // It supports trace level. func ParseLevel(lvl string) (logrus.Level, error) { diff --git a/vendor/github.com/containerd/containerd/platforms/compare.go b/vendor/github.com/containerd/containerd/platforms/compare.go new file mode 100644 index 0000000000..3ad22a10d0 --- /dev/null +++ b/vendor/github.com/containerd/containerd/platforms/compare.go @@ -0,0 +1,229 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package platforms + +import specs "github.com/opencontainers/image-spec/specs-go/v1" + +// MatchComparer is able to match and compare platforms to +// filter and sort platforms. +type MatchComparer interface { + Matcher + + Less(specs.Platform, specs.Platform) bool +} + +// Only returns a match comparer for a single platform +// using default resolution logic for the platform. +// +// For ARMv8, will also match ARMv7, ARMv6 and ARMv5 (for 32bit runtimes) +// For ARMv7, will also match ARMv6 and ARMv5 +// For ARMv6, will also match ARMv5 +func Only(platform specs.Platform) MatchComparer { + platform = Normalize(platform) + if platform.Architecture == "arm" { + if platform.Variant == "v8" { + return orderedPlatformComparer{ + matchers: []Matcher{ + &matcher{ + Platform: platform, + }, + &matcher{ + Platform: specs.Platform{ + Architecture: platform.Architecture, + OS: platform.OS, + OSVersion: platform.OSVersion, + OSFeatures: platform.OSFeatures, + Variant: "v7", + }, + }, + &matcher{ + Platform: specs.Platform{ + Architecture: platform.Architecture, + OS: platform.OS, + OSVersion: platform.OSVersion, + OSFeatures: platform.OSFeatures, + Variant: "v6", + }, + }, + &matcher{ + Platform: specs.Platform{ + Architecture: platform.Architecture, + OS: platform.OS, + OSVersion: platform.OSVersion, + OSFeatures: platform.OSFeatures, + Variant: "v5", + }, + }, + }, + } + } + if platform.Variant == "v7" { + return orderedPlatformComparer{ + matchers: []Matcher{ + &matcher{ + Platform: platform, + }, + &matcher{ + Platform: specs.Platform{ + Architecture: platform.Architecture, + OS: platform.OS, + OSVersion: platform.OSVersion, + OSFeatures: platform.OSFeatures, + Variant: "v6", + }, + }, + &matcher{ + Platform: specs.Platform{ + Architecture: platform.Architecture, + OS: platform.OS, + OSVersion: platform.OSVersion, + OSFeatures: platform.OSFeatures, + Variant: "v5", + }, + }, + }, + } + } + if platform.Variant == "v6" { + return orderedPlatformComparer{ + matchers: []Matcher{ + &matcher{ + Platform: platform, + }, + &matcher{ + Platform: specs.Platform{ + Architecture: platform.Architecture, + OS: platform.OS, + OSVersion: platform.OSVersion, + OSFeatures: platform.OSFeatures, + Variant: "v5", + }, + }, + }, + } + } + } + + return singlePlatformComparer{ + Matcher: &matcher{ + Platform: platform, + }, + } +} + +// Ordered returns a platform MatchComparer which matches any of the platforms +// but orders them in order they are provided. +func Ordered(platforms ...specs.Platform) MatchComparer { + matchers := make([]Matcher, len(platforms)) + for i := range platforms { + matchers[i] = NewMatcher(platforms[i]) + } + return orderedPlatformComparer{ + matchers: matchers, + } +} + +// Any returns a platform MatchComparer which matches any of the platforms +// with no preference for ordering. +func Any(platforms ...specs.Platform) MatchComparer { + matchers := make([]Matcher, len(platforms)) + for i := range platforms { + matchers[i] = NewMatcher(platforms[i]) + } + return anyPlatformComparer{ + matchers: matchers, + } +} + +// All is a platform MatchComparer which matches all platforms +// with preference for ordering. +var All MatchComparer = allPlatformComparer{} + +type singlePlatformComparer struct { + Matcher +} + +func (c singlePlatformComparer) Less(p1, p2 specs.Platform) bool { + return c.Match(p1) && !c.Match(p2) +} + +type orderedPlatformComparer struct { + matchers []Matcher +} + +func (c orderedPlatformComparer) Match(platform specs.Platform) bool { + for _, m := range c.matchers { + if m.Match(platform) { + return true + } + } + return false +} + +func (c orderedPlatformComparer) Less(p1 specs.Platform, p2 specs.Platform) bool { + for _, m := range c.matchers { + p1m := m.Match(p1) + p2m := m.Match(p2) + if p1m && !p2m { + return true + } + if p1m || p2m { + return false + } + } + return false +} + +type anyPlatformComparer struct { + matchers []Matcher +} + +func (c anyPlatformComparer) Match(platform specs.Platform) bool { + for _, m := range c.matchers { + if m.Match(platform) { + return true + } + } + return false +} + +func (c anyPlatformComparer) Less(p1, p2 specs.Platform) bool { + var p1m, p2m bool + for _, m := range c.matchers { + if !p1m && m.Match(p1) { + p1m = true + } + if !p2m && m.Match(p2) { + p2m = true + } + if p1m && p2m { + return false + } + } + // If one matches, and the other does, sort match first + return p1m && !p2m +} + +type allPlatformComparer struct{} + +func (allPlatformComparer) Match(specs.Platform) bool { + return true +} + +func (allPlatformComparer) Less(specs.Platform, specs.Platform) bool { + return false +} diff --git a/vendor/github.com/containerd/containerd/platforms/cpuinfo.go b/vendor/github.com/containerd/containerd/platforms/cpuinfo.go new file mode 100644 index 0000000000..69b336d67f --- /dev/null +++ b/vendor/github.com/containerd/containerd/platforms/cpuinfo.go @@ -0,0 +1,117 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package platforms + +import ( + "bufio" + "os" + "runtime" + "strings" + + "github.com/containerd/containerd/errdefs" + "github.com/containerd/containerd/log" + "github.com/pkg/errors" +) + +// Present the ARM instruction set architecture, eg: v7, v8 +var cpuVariant string + +func init() { + if isArmArch(runtime.GOARCH) { + cpuVariant = getCPUVariant() + } else { + cpuVariant = "" + } +} + +// For Linux, the kernel has already detected the ABI, ISA and Features. +// So we don't need to access the ARM registers to detect platform information +// by ourselves. We can just parse these information from /proc/cpuinfo +func getCPUInfo(pattern string) (info string, err error) { + if !isLinuxOS(runtime.GOOS) { + return "", errors.Wrapf(errdefs.ErrNotImplemented, "getCPUInfo for OS %s", runtime.GOOS) + } + + cpuinfo, err := os.Open("/proc/cpuinfo") + if err != nil { + return "", err + } + defer cpuinfo.Close() + + // Start to Parse the Cpuinfo line by line. For SMP SoC, we parse + // the first core is enough. + scanner := bufio.NewScanner(cpuinfo) + for scanner.Scan() { + newline := scanner.Text() + list := strings.Split(newline, ":") + + if len(list) > 1 && strings.EqualFold(strings.TrimSpace(list[0]), pattern) { + return strings.TrimSpace(list[1]), nil + } + } + + // Check whether the scanner encountered errors + err = scanner.Err() + if err != nil { + return "", err + } + + return "", errors.Wrapf(errdefs.ErrNotFound, "getCPUInfo for pattern: %s", pattern) +} + +func getCPUVariant() string { + if runtime.GOOS == "windows" { + // Windows only supports v7 for ARM32 and v8 for ARM64 and so we can use + // runtime.GOARCH to determine the variants + var variant string + switch runtime.GOARCH { + case "arm64": + variant = "v8" + case "arm": + variant = "v7" + default: + variant = "unknown" + } + + return variant + } + + variant, err := getCPUInfo("Cpu architecture") + if err != nil { + log.L.WithError(err).Error("failure getting variant") + return "" + } + + switch variant { + case "8", "AArch64": + variant = "v8" + case "7", "7M", "?(12)", "?(13)", "?(14)", "?(15)", "?(16)", "?(17)": + variant = "v7" + case "6", "6TEJ": + variant = "v6" + case "5", "5T", "5TE", "5TEJ": + variant = "v5" + case "4", "4T": + variant = "v4" + case "3": + variant = "v3" + default: + variant = "unknown" + } + + return variant +} diff --git a/vendor/github.com/containerd/containerd/platforms/database.go b/vendor/github.com/containerd/containerd/platforms/database.go new file mode 100644 index 0000000000..6ede94061e --- /dev/null +++ b/vendor/github.com/containerd/containerd/platforms/database.go @@ -0,0 +1,114 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package platforms + +import ( + "runtime" + "strings" +) + +// isLinuxOS returns true if the operating system is Linux. +// +// The OS value should be normalized before calling this function. +func isLinuxOS(os string) bool { + return os == "linux" +} + +// These function are generated from https://golang.org/src/go/build/syslist.go. +// +// We use switch statements because they are slightly faster than map lookups +// and use a little less memory. + +// isKnownOS returns true if we know about the operating system. +// +// The OS value should be normalized before calling this function. +func isKnownOS(os string) bool { + switch os { + case "aix", "android", "darwin", "dragonfly", "freebsd", "hurd", "illumos", "js", "linux", "nacl", "netbsd", "openbsd", "plan9", "solaris", "windows", "zos": + return true + } + return false +} + +// isArmArch returns true if the architecture is ARM. +// +// The arch value should be normalized before being passed to this function. +func isArmArch(arch string) bool { + switch arch { + case "arm", "arm64": + return true + } + return false +} + +// isKnownArch returns true if we know about the architecture. +// +// The arch value should be normalized before being passed to this function. +func isKnownArch(arch string) bool { + switch arch { + case "386", "amd64", "amd64p32", "arm", "armbe", "arm64", "arm64be", "ppc64", "ppc64le", "mips", "mipsle", "mips64", "mips64le", "mips64p32", "mips64p32le", "ppc", "riscv", "riscv64", "s390", "s390x", "sparc", "sparc64", "wasm": + return true + } + return false +} + +func normalizeOS(os string) string { + if os == "" { + return runtime.GOOS + } + os = strings.ToLower(os) + + switch os { + case "macos": + os = "darwin" + } + return os +} + +// normalizeArch normalizes the architecture. +func normalizeArch(arch, variant string) (string, string) { + arch, variant = strings.ToLower(arch), strings.ToLower(variant) + switch arch { + case "i386": + arch = "386" + variant = "" + case "x86_64", "x86-64": + arch = "amd64" + variant = "" + case "aarch64", "arm64": + arch = "arm64" + switch variant { + case "8", "v8": + variant = "" + } + case "armhf": + arch = "arm" + variant = "v7" + case "armel": + arch = "arm" + variant = "v6" + case "arm": + switch variant { + case "", "7": + variant = "v7" + case "5", "6", "8": + variant = "v" + variant + } + } + + return arch, variant +} diff --git a/vendor/github.com/containerd/containerd/platforms/defaults.go b/vendor/github.com/containerd/containerd/platforms/defaults.go new file mode 100644 index 0000000000..a14d80e58c --- /dev/null +++ b/vendor/github.com/containerd/containerd/platforms/defaults.go @@ -0,0 +1,38 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package platforms + +import ( + "runtime" + + specs "github.com/opencontainers/image-spec/specs-go/v1" +) + +// DefaultString returns the default string specifier for the platform. +func DefaultString() string { + return Format(DefaultSpec()) +} + +// DefaultSpec returns the current platform's default platform specification. +func DefaultSpec() specs.Platform { + return specs.Platform{ + OS: runtime.GOOS, + Architecture: runtime.GOARCH, + // The Variant field will be empty if arch != ARM. + Variant: cpuVariant, + } +} diff --git a/vendor/github.com/containerd/containerd/platforms/defaults_unix.go b/vendor/github.com/containerd/containerd/platforms/defaults_unix.go new file mode 100644 index 0000000000..e8a7d5ffa0 --- /dev/null +++ b/vendor/github.com/containerd/containerd/platforms/defaults_unix.go @@ -0,0 +1,24 @@ +// +build !windows + +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package platforms + +// Default returns the default matcher for the platform. +func Default() MatchComparer { + return Only(DefaultSpec()) +} diff --git a/vendor/github.com/containerd/containerd/platforms/defaults_windows.go b/vendor/github.com/containerd/containerd/platforms/defaults_windows.go new file mode 100644 index 0000000000..0defbd36c0 --- /dev/null +++ b/vendor/github.com/containerd/containerd/platforms/defaults_windows.go @@ -0,0 +1,31 @@ +// +build windows + +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package platforms + +import ( + specs "github.com/opencontainers/image-spec/specs-go/v1" +) + +// Default returns the default matcher for the platform. +func Default() MatchComparer { + return Ordered(DefaultSpec(), specs.Platform{ + OS: "linux", + Architecture: "amd64", + }) +} diff --git a/vendor/github.com/containerd/containerd/platforms/platforms.go b/vendor/github.com/containerd/containerd/platforms/platforms.go new file mode 100644 index 0000000000..d2b73ac3d3 --- /dev/null +++ b/vendor/github.com/containerd/containerd/platforms/platforms.go @@ -0,0 +1,279 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +// Package platforms provides a toolkit for normalizing, matching and +// specifying container platforms. +// +// Centered around OCI platform specifications, we define a string-based +// specifier syntax that can be used for user input. With a specifier, users +// only need to specify the parts of the platform that are relevant to their +// context, providing an operating system or architecture or both. +// +// How do I use this package? +// +// The vast majority of use cases should simply use the match function with +// user input. The first step is to parse a specifier into a matcher: +// +// m, err := Parse("linux") +// if err != nil { ... } +// +// Once you have a matcher, use it to match against the platform declared by a +// component, typically from an image or runtime. Since extracting an images +// platform is a little more involved, we'll use an example against the +// platform default: +// +// if ok := m.Match(Default()); !ok { /* doesn't match */ } +// +// This can be composed in loops for resolving runtimes or used as a filter for +// fetch and select images. +// +// More details of the specifier syntax and platform spec follow. +// +// Declaring Platform Support +// +// Components that have strict platform requirements should use the OCI +// platform specification to declare their support. Typically, this will be +// images and runtimes that should make these declaring which platform they +// support specifically. This looks roughly as follows: +// +// type Platform struct { +// Architecture string +// OS string +// Variant string +// } +// +// Most images and runtimes should at least set Architecture and OS, according +// to their GOARCH and GOOS values, respectively (follow the OCI image +// specification when in doubt). ARM should set variant under certain +// discussions, which are outlined below. +// +// Platform Specifiers +// +// While the OCI platform specifications provide a tool for components to +// specify structured information, user input typically doesn't need the full +// context and much can be inferred. To solve this problem, we introduced +// "specifiers". A specifier has the format +// `||/[/]`. The user can provide either the +// operating system or the architecture or both. +// +// An example of a common specifier is `linux/amd64`. If the host has a default +// of runtime that matches this, the user can simply provide the component that +// matters. For example, if a image provides amd64 and arm64 support, the +// operating system, `linux` can be inferred, so they only have to provide +// `arm64` or `amd64`. Similar behavior is implemented for operating systems, +// where the architecture may be known but a runtime may support images from +// different operating systems. +// +// Normalization +// +// Because not all users are familiar with the way the Go runtime represents +// platforms, several normalizations have been provided to make this package +// easier to user. +// +// The following are performed for architectures: +// +// Value Normalized +// aarch64 arm64 +// armhf arm +// armel arm/v6 +// i386 386 +// x86_64 amd64 +// x86-64 amd64 +// +// We also normalize the operating system `macos` to `darwin`. +// +// ARM Support +// +// To qualify ARM architecture, the Variant field is used to qualify the arm +// version. The most common arm version, v7, is represented without the variant +// unless it is explicitly provided. This is treated as equivalent to armhf. A +// previous architecture, armel, will be normalized to arm/v6. +// +// While these normalizations are provided, their support on arm platforms has +// not yet been fully implemented and tested. +package platforms + +import ( + "regexp" + "runtime" + "strconv" + "strings" + + "github.com/containerd/containerd/errdefs" + specs "github.com/opencontainers/image-spec/specs-go/v1" + "github.com/pkg/errors" +) + +var ( + specifierRe = regexp.MustCompile(`^[A-Za-z0-9_-]+$`) +) + +// Matcher matches platforms specifications, provided by an image or runtime. +type Matcher interface { + Match(platform specs.Platform) bool +} + +// NewMatcher returns a simple matcher based on the provided platform +// specification. The returned matcher only looks for equality based on os, +// architecture and variant. +// +// One may implement their own matcher if this doesn't provide the required +// functionality. +// +// Applications should opt to use `Match` over directly parsing specifiers. +func NewMatcher(platform specs.Platform) Matcher { + return &matcher{ + Platform: Normalize(platform), + } +} + +type matcher struct { + specs.Platform +} + +func (m *matcher) Match(platform specs.Platform) bool { + normalized := Normalize(platform) + return m.OS == normalized.OS && + m.Architecture == normalized.Architecture && + m.Variant == normalized.Variant +} + +func (m *matcher) String() string { + return Format(m.Platform) +} + +// Parse parses the platform specifier syntax into a platform declaration. +// +// Platform specifiers are in the format `||/[/]`. +// The minimum required information for a platform specifier is the operating +// system or architecture. If there is only a single string (no slashes), the +// value will be matched against the known set of operating systems, then fall +// back to the known set of architectures. The missing component will be +// inferred based on the local environment. +func Parse(specifier string) (specs.Platform, error) { + if strings.Contains(specifier, "*") { + // TODO(stevvooe): need to work out exact wildcard handling + return specs.Platform{}, errors.Wrapf(errdefs.ErrInvalidArgument, "%q: wildcards not yet supported", specifier) + } + + parts := strings.Split(specifier, "/") + + for _, part := range parts { + if !specifierRe.MatchString(part) { + return specs.Platform{}, errors.Wrapf(errdefs.ErrInvalidArgument, "%q is an invalid component of %q: platform specifier component must match %q", part, specifier, specifierRe.String()) + } + } + + var p specs.Platform + switch len(parts) { + case 1: + // in this case, we will test that the value might be an OS, then look + // it up. If it is not known, we'll treat it as an architecture. Since + // we have very little information about the platform here, we are + // going to be a little more strict if we don't know about the argument + // value. + p.OS = normalizeOS(parts[0]) + if isKnownOS(p.OS) { + // picks a default architecture + p.Architecture = runtime.GOARCH + if p.Architecture == "arm" { + // TODO(stevvooe): Resolve arm variant, if not v6 (default) + return specs.Platform{}, errors.Wrapf(errdefs.ErrNotImplemented, "arm support not fully implemented") + } + + return p, nil + } + + p.Architecture, p.Variant = normalizeArch(parts[0], "") + if p.Architecture == "arm" && p.Variant == "v7" { + p.Variant = "" + } + if isKnownArch(p.Architecture) { + p.OS = runtime.GOOS + return p, nil + } + + return specs.Platform{}, errors.Wrapf(errdefs.ErrInvalidArgument, "%q: unknown operating system or architecture", specifier) + case 2: + // In this case, we treat as a regular os/arch pair. We don't care + // about whether or not we know of the platform. + p.OS = normalizeOS(parts[0]) + p.Architecture, p.Variant = normalizeArch(parts[1], "") + if p.Architecture == "arm" && p.Variant == "v7" { + p.Variant = "" + } + + return p, nil + case 3: + // we have a fully specified variant, this is rare + p.OS = normalizeOS(parts[0]) + p.Architecture, p.Variant = normalizeArch(parts[1], parts[2]) + if p.Architecture == "arm64" && p.Variant == "" { + p.Variant = "v8" + } + + return p, nil + } + + return specs.Platform{}, errors.Wrapf(errdefs.ErrInvalidArgument, "%q: cannot parse platform specifier", specifier) +} + +// MustParse is like Parses but panics if the specifier cannot be parsed. +// Simplifies initialization of global variables. +func MustParse(specifier string) specs.Platform { + p, err := Parse(specifier) + if err != nil { + panic("platform: Parse(" + strconv.Quote(specifier) + "): " + err.Error()) + } + return p +} + +// Format returns a string specifier from the provided platform specification. +func Format(platform specs.Platform) string { + if platform.OS == "" { + return "unknown" + } + + return joinNotEmpty(platform.OS, platform.Architecture, platform.Variant) +} + +func joinNotEmpty(s ...string) string { + var ss []string + for _, s := range s { + if s == "" { + continue + } + + ss = append(ss, s) + } + + return strings.Join(ss, "/") +} + +// Normalize validates and translate the platform to the canonical value. +// +// For example, if "Aarch64" is encountered, we change it to "arm64" or if +// "x86_64" is encountered, it becomes "amd64". +func Normalize(platform specs.Platform) specs.Platform { + platform.OS = normalizeOS(platform.OS) + platform.Architecture, platform.Variant = normalizeArch(platform.Architecture, platform.Variant) + + // these fields are deprecated, remove them + platform.OSFeatures = nil + platform.OSVersion = "" + + return platform +} diff --git a/vendor/github.com/containerd/continuity/LICENSE b/vendor/github.com/containerd/continuity/LICENSE index 8f71f43fee..584149b6ee 100644 --- a/vendor/github.com/containerd/continuity/LICENSE +++ b/vendor/github.com/containerd/continuity/LICENSE @@ -1,6 +1,7 @@ + Apache License Version 2.0, January 2004 - http://www.apache.org/licenses/ + https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -175,28 +176,16 @@ END OF TERMS AND CONDITIONS - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} + Copyright The containerd Authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - diff --git a/vendor/github.com/containerd/continuity/devices/devices.go b/vendor/github.com/containerd/continuity/devices/devices.go index 7086407047..e4d4a03704 100644 --- a/vendor/github.com/containerd/continuity/devices/devices.go +++ b/vendor/github.com/containerd/continuity/devices/devices.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package devices import "fmt" diff --git a/vendor/github.com/containerd/continuity/devices/devices_unix.go b/vendor/github.com/containerd/continuity/devices/devices_unix.go index 97fe6b19d2..520a5a6f3b 100644 --- a/vendor/github.com/containerd/continuity/devices/devices_unix.go +++ b/vendor/github.com/containerd/continuity/devices/devices_unix.go @@ -1,5 +1,21 @@ // +build linux darwin freebsd solaris +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package devices import ( diff --git a/vendor/github.com/containerd/continuity/devices/devices_windows.go b/vendor/github.com/containerd/continuity/devices/devices_windows.go index 6099d1d779..04627c8058 100644 --- a/vendor/github.com/containerd/continuity/devices/devices_windows.go +++ b/vendor/github.com/containerd/continuity/devices/devices_windows.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package devices import ( diff --git a/vendor/github.com/containerd/continuity/driver/driver.go b/vendor/github.com/containerd/continuity/driver/driver.go index 6a0f76dba4..327e96af15 100644 --- a/vendor/github.com/containerd/continuity/driver/driver.go +++ b/vendor/github.com/containerd/continuity/driver/driver.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package driver import ( diff --git a/vendor/github.com/containerd/continuity/driver/driver_unix.go b/vendor/github.com/containerd/continuity/driver/driver_unix.go index c7d4e6ba15..6cb5d10fb9 100644 --- a/vendor/github.com/containerd/continuity/driver/driver_unix.go +++ b/vendor/github.com/containerd/continuity/driver/driver_unix.go @@ -1,5 +1,21 @@ // +build linux darwin freebsd solaris +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package driver import ( @@ -13,7 +29,11 @@ import ( ) func (d *driver) Mknod(path string, mode os.FileMode, major, minor int) error { - return devices.Mknod(path, mode, major, minor) + err := devices.Mknod(path, mode, major, minor) + if err != nil { + err = &os.PathError{Op: "mknod", Path: path, Err: err} + } + return err } func (d *driver) Mkfifo(path string, mode os.FileMode) error { @@ -22,7 +42,11 @@ func (d *driver) Mkfifo(path string, mode os.FileMode) error { } // mknod with a mode that has ModeNamedPipe set creates a fifo, not a // device. - return devices.Mknod(path, mode, 0, 0) + err := devices.Mknod(path, mode, 0, 0) + if err != nil { + err = &os.PathError{Op: "mkfifo", Path: path, Err: err} + } + return err } // Getxattr returns all of the extended attributes for the file at path p. diff --git a/vendor/github.com/containerd/continuity/driver/driver_windows.go b/vendor/github.com/containerd/continuity/driver/driver_windows.go index 21c9cf9612..f1dcea32af 100644 --- a/vendor/github.com/containerd/continuity/driver/driver_windows.go +++ b/vendor/github.com/containerd/continuity/driver/driver_windows.go @@ -1,18 +1,33 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package driver import ( "os" "github.com/containerd/continuity/sysx" - "github.com/pkg/errors" ) func (d *driver) Mknod(path string, mode os.FileMode, major, minor int) error { - return errors.Wrap(ErrNotSupported, "cannot create device node on Windows") + return &os.PathError{Op: "mknod", Path: path, Err: ErrNotSupported} } func (d *driver) Mkfifo(path string, mode os.FileMode) error { - return errors.Wrap(ErrNotSupported, "cannot create fifo on Windows") + return &os.PathError{Op: "mkfifo", Path: path, Err: ErrNotSupported} } // Lchmod changes the mode of an file not following symlinks. diff --git a/vendor/github.com/containerd/continuity/driver/lchmod_linux.go b/vendor/github.com/containerd/continuity/driver/lchmod_linux.go index 39ffe9cc32..06be285277 100644 --- a/vendor/github.com/containerd/continuity/driver/lchmod_linux.go +++ b/vendor/github.com/containerd/continuity/driver/lchmod_linux.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package driver import ( @@ -15,5 +31,9 @@ func (d *driver) Lchmod(path string, mode os.FileMode) error { return nil } - return unix.Fchmodat(unix.AT_FDCWD, path, uint32(mode), 0) + err := unix.Fchmodat(unix.AT_FDCWD, path, uint32(mode), 0) + if err != nil { + err = &os.PathError{Op: "lchmod", Path: path, Err: err} + } + return err } diff --git a/vendor/github.com/containerd/continuity/driver/lchmod_unix.go b/vendor/github.com/containerd/continuity/driver/lchmod_unix.go index 1b539f78e3..b8877a8ae5 100644 --- a/vendor/github.com/containerd/continuity/driver/lchmod_unix.go +++ b/vendor/github.com/containerd/continuity/driver/lchmod_unix.go @@ -1,5 +1,21 @@ // +build darwin freebsd solaris +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package driver import ( @@ -10,5 +26,9 @@ import ( // Lchmod changes the mode of a file not following symlinks. func (d *driver) Lchmod(path string, mode os.FileMode) error { - return unix.Fchmodat(unix.AT_FDCWD, path, uint32(mode), unix.AT_SYMLINK_NOFOLLOW) + err := unix.Fchmodat(unix.AT_FDCWD, path, uint32(mode), unix.AT_SYMLINK_NOFOLLOW) + if err != nil { + err = &os.PathError{Op: "lchmod", Path: path, Err: err} + } + return err } diff --git a/vendor/github.com/containerd/continuity/driver/utils.go b/vendor/github.com/containerd/continuity/driver/utils.go index 9e0edd7bca..0c688d158f 100644 --- a/vendor/github.com/containerd/continuity/driver/utils.go +++ b/vendor/github.com/containerd/continuity/driver/utils.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package driver import ( diff --git a/vendor/github.com/containerd/continuity/fs/copy.go b/vendor/github.com/containerd/continuity/fs/copy.go index 2ac474b926..97053d7e5c 100644 --- a/vendor/github.com/containerd/continuity/fs/copy.go +++ b/vendor/github.com/containerd/continuity/fs/copy.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( @@ -16,20 +32,55 @@ var bufferPool = &sync.Pool{ }, } +// XAttrErrorHandlers transform a non-nil xattr error. +// Return nil to ignore an error. +// xattrKey can be empty for listxattr operation. +type XAttrErrorHandler func(dst, src, xattrKey string, err error) error + +type copyDirOpts struct { + xeh XAttrErrorHandler +} + +type CopyDirOpt func(*copyDirOpts) error + +// WithXAttrErrorHandler allows specifying XAttrErrorHandler +// If nil XAttrErrorHandler is specified (default), CopyDir stops +// on a non-nil xattr error. +func WithXAttrErrorHandler(xeh XAttrErrorHandler) CopyDirOpt { + return func(o *copyDirOpts) error { + o.xeh = xeh + return nil + } +} + +// WithAllowXAttrErrors allows ignoring xattr errors. +func WithAllowXAttrErrors() CopyDirOpt { + xeh := func(dst, src, xattrKey string, err error) error { + return nil + } + return WithXAttrErrorHandler(xeh) +} + // CopyDir copies the directory from src to dst. // Most efficient copy of files is attempted. -func CopyDir(dst, src string) error { +func CopyDir(dst, src string, opts ...CopyDirOpt) error { + var o copyDirOpts + for _, opt := range opts { + if err := opt(&o); err != nil { + return err + } + } inodes := map[uint64]string{} - return copyDirectory(dst, src, inodes) + return copyDirectory(dst, src, inodes, &o) } -func copyDirectory(dst, src string, inodes map[uint64]string) error { +func copyDirectory(dst, src string, inodes map[uint64]string, o *copyDirOpts) error { stat, err := os.Stat(src) if err != nil { return errors.Wrapf(err, "failed to stat %s", src) } if !stat.IsDir() { - return errors.Errorf("source is not directory") + return errors.Errorf("source %s is not directory", src) } if st, err := os.Stat(dst); err != nil { @@ -59,7 +110,7 @@ func copyDirectory(dst, src string, inodes map[uint64]string) error { switch { case fi.IsDir(): - if err := copyDirectory(target, source, inodes); err != nil { + if err := copyDirectory(target, source, inodes, o); err != nil { return err } continue @@ -95,7 +146,7 @@ func copyDirectory(dst, src string, inodes map[uint64]string) error { return errors.Wrap(err, "failed to copy file info") } - if err := copyXAttrs(target, source); err != nil { + if err := copyXAttrs(target, source, o.xeh); err != nil { return errors.Wrap(err, "failed to copy xattrs") } } diff --git a/vendor/github.com/containerd/continuity/fs/copy_linux.go b/vendor/github.com/containerd/continuity/fs/copy_linux.go index b244e3185b..81c71522aa 100644 --- a/vendor/github.com/containerd/continuity/fs/copy_linux.go +++ b/vendor/github.com/containerd/continuity/fs/copy_linux.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( @@ -43,6 +59,8 @@ func copyFileInfo(fi os.FileInfo, name string) error { return nil } +const maxSSizeT = int64(^uint(0) >> 1) + func copyFileContent(dst, src *os.File) error { st, err := src.Stat() if err != nil { @@ -55,7 +73,16 @@ func copyFileContent(dst, src *os.File) error { dstFd := int(dst.Fd()) for size > 0 { - n, err := unix.CopyFileRange(srcFd, nil, dstFd, nil, int(size), 0) + // Ensure that we are never trying to copy more than SSIZE_MAX at a + // time and at the same time avoids overflows when the file is larger + // than 4GB on 32-bit systems. + var copySize int + if size > maxSSizeT { + copySize = int(maxSSizeT) + } else { + copySize = int(size) + } + n, err := unix.CopyFileRange(srcFd, nil, dstFd, nil, copySize, 0) if err != nil { if (err != unix.ENOSYS && err != unix.EXDEV) || !first { return errors.Wrap(err, "copy file range failed") @@ -74,18 +101,34 @@ func copyFileContent(dst, src *os.File) error { return nil } -func copyXAttrs(dst, src string) error { +func copyXAttrs(dst, src string, xeh XAttrErrorHandler) error { xattrKeys, err := sysx.LListxattr(src) if err != nil { - return errors.Wrapf(err, "failed to list xattrs on %s", src) + e := errors.Wrapf(err, "failed to list xattrs on %s", src) + if xeh != nil { + e = xeh(dst, src, "", e) + } + return e } for _, xattr := range xattrKeys { data, err := sysx.LGetxattr(src, xattr) if err != nil { - return errors.Wrapf(err, "failed to get xattr %q on %s", xattr, src) + e := errors.Wrapf(err, "failed to get xattr %q on %s", xattr, src) + if xeh != nil { + if e = xeh(dst, src, xattr, e); e == nil { + continue + } + } + return e } if err := sysx.LSetxattr(dst, xattr, data, 0); err != nil { - return errors.Wrapf(err, "failed to set xattr %q on %s", xattr, dst) + e := errors.Wrapf(err, "failed to set xattr %q on %s", xattr, dst) + if xeh != nil { + if e = xeh(dst, src, xattr, e); e == nil { + continue + } + } + return e } } diff --git a/vendor/github.com/containerd/continuity/fs/copy_unix.go b/vendor/github.com/containerd/continuity/fs/copy_unix.go index 29cbb81ed5..73c01a46dd 100644 --- a/vendor/github.com/containerd/continuity/fs/copy_unix.go +++ b/vendor/github.com/containerd/continuity/fs/copy_unix.go @@ -1,5 +1,21 @@ // +build solaris darwin freebsd +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( @@ -53,18 +69,34 @@ func copyFileContent(dst, src *os.File) error { return err } -func copyXAttrs(dst, src string) error { +func copyXAttrs(dst, src string, xeh XAttrErrorHandler) error { xattrKeys, err := sysx.LListxattr(src) if err != nil { - return errors.Wrapf(err, "failed to list xattrs on %s", src) + e := errors.Wrapf(err, "failed to list xattrs on %s", src) + if xeh != nil { + e = xeh(dst, src, "", e) + } + return e } for _, xattr := range xattrKeys { data, err := sysx.LGetxattr(src, xattr) if err != nil { - return errors.Wrapf(err, "failed to get xattr %q on %s", xattr, src) + e := errors.Wrapf(err, "failed to get xattr %q on %s", xattr, src) + if xeh != nil { + if e = xeh(dst, src, xattr, e); e == nil { + continue + } + } + return e } if err := sysx.LSetxattr(dst, xattr, data, 0); err != nil { - return errors.Wrapf(err, "failed to set xattr %q on %s", xattr, dst) + e := errors.Wrapf(err, "failed to set xattr %q on %s", xattr, dst) + if xeh != nil { + if e = xeh(dst, src, xattr, e); e == nil { + continue + } + } + return e } } diff --git a/vendor/github.com/containerd/continuity/fs/copy_windows.go b/vendor/github.com/containerd/continuity/fs/copy_windows.go index 6fb3de5710..27c7d7dbb9 100644 --- a/vendor/github.com/containerd/continuity/fs/copy_windows.go +++ b/vendor/github.com/containerd/continuity/fs/copy_windows.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( @@ -24,7 +40,7 @@ func copyFileContent(dst, src *os.File) error { return err } -func copyXAttrs(dst, src string) error { +func copyXAttrs(dst, src string, xeh XAttrErrorHandler) error { return nil } diff --git a/vendor/github.com/containerd/continuity/fs/diff.go b/vendor/github.com/containerd/continuity/fs/diff.go index f2300e845d..e64f9e73d3 100644 --- a/vendor/github.com/containerd/continuity/fs/diff.go +++ b/vendor/github.com/containerd/continuity/fs/diff.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( diff --git a/vendor/github.com/containerd/continuity/fs/diff_unix.go b/vendor/github.com/containerd/continuity/fs/diff_unix.go index 3751814443..7913af27d9 100644 --- a/vendor/github.com/containerd/continuity/fs/diff_unix.go +++ b/vendor/github.com/containerd/continuity/fs/diff_unix.go @@ -1,5 +1,21 @@ // +build !windows +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( diff --git a/vendor/github.com/containerd/continuity/fs/diff_windows.go b/vendor/github.com/containerd/continuity/fs/diff_windows.go index 8eed36507e..4bfa72d3a1 100644 --- a/vendor/github.com/containerd/continuity/fs/diff_windows.go +++ b/vendor/github.com/containerd/continuity/fs/diff_windows.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( diff --git a/vendor/github.com/containerd/continuity/fs/dtype_linux.go b/vendor/github.com/containerd/continuity/fs/dtype_linux.go index cc06573f1b..10510d8dec 100644 --- a/vendor/github.com/containerd/continuity/fs/dtype_linux.go +++ b/vendor/github.com/containerd/continuity/fs/dtype_linux.go @@ -1,5 +1,21 @@ // +build linux +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( diff --git a/vendor/github.com/containerd/continuity/fs/du.go b/vendor/github.com/containerd/continuity/fs/du.go index f8fc9a9946..fccc985dc5 100644 --- a/vendor/github.com/containerd/continuity/fs/du.go +++ b/vendor/github.com/containerd/continuity/fs/du.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import "context" diff --git a/vendor/github.com/containerd/continuity/fs/du_unix.go b/vendor/github.com/containerd/continuity/fs/du_unix.go index 9f6bc55fd9..e22ffbea37 100644 --- a/vendor/github.com/containerd/continuity/fs/du_unix.go +++ b/vendor/github.com/containerd/continuity/fs/du_unix.go @@ -1,5 +1,21 @@ // +build !windows +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( diff --git a/vendor/github.com/containerd/continuity/fs/du_windows.go b/vendor/github.com/containerd/continuity/fs/du_windows.go index faa443feda..8f25ec59c5 100644 --- a/vendor/github.com/containerd/continuity/fs/du_windows.go +++ b/vendor/github.com/containerd/continuity/fs/du_windows.go @@ -1,5 +1,21 @@ // +build windows +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( diff --git a/vendor/github.com/containerd/continuity/fs/hardlink.go b/vendor/github.com/containerd/continuity/fs/hardlink.go index 38da93813c..762aa45e69 100644 --- a/vendor/github.com/containerd/continuity/fs/hardlink.go +++ b/vendor/github.com/containerd/continuity/fs/hardlink.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import "os" diff --git a/vendor/github.com/containerd/continuity/fs/hardlink_unix.go b/vendor/github.com/containerd/continuity/fs/hardlink_unix.go index a6f99778de..f95f0904c1 100644 --- a/vendor/github.com/containerd/continuity/fs/hardlink_unix.go +++ b/vendor/github.com/containerd/continuity/fs/hardlink_unix.go @@ -1,5 +1,21 @@ // +build !windows +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( diff --git a/vendor/github.com/containerd/continuity/fs/hardlink_windows.go b/vendor/github.com/containerd/continuity/fs/hardlink_windows.go index ad8845a7fb..7485547147 100644 --- a/vendor/github.com/containerd/continuity/fs/hardlink_windows.go +++ b/vendor/github.com/containerd/continuity/fs/hardlink_windows.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import "os" diff --git a/vendor/github.com/containerd/continuity/fs/path.go b/vendor/github.com/containerd/continuity/fs/path.go index 13fb826385..8863caa9df 100644 --- a/vendor/github.com/containerd/continuity/fs/path.go +++ b/vendor/github.com/containerd/continuity/fs/path.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( @@ -6,7 +22,6 @@ import ( "io" "os" "path/filepath" - "strings" "github.com/pkg/errors" ) @@ -31,9 +46,8 @@ func pathChange(lower, upper *currentPath) (ChangeKind, string) { if upper == nil { return ChangeKindDelete, lower.path } - // TODO: compare by directory - switch i := strings.Compare(lower.path, upper.path); { + switch i := directoryCompare(lower.path, upper.path); { case i < 0: // File in lower that is not in upper return ChangeKindDelete, lower.path @@ -45,6 +59,35 @@ func pathChange(lower, upper *currentPath) (ChangeKind, string) { } } +func directoryCompare(a, b string) int { + l := len(a) + if len(b) < l { + l = len(b) + } + for i := 0; i < l; i++ { + c1, c2 := a[i], b[i] + if c1 == filepath.Separator { + c1 = byte(0) + } + if c2 == filepath.Separator { + c2 = byte(0) + } + if c1 < c2 { + return -1 + } + if c1 > c2 { + return +1 + } + } + if len(a) < len(b) { + return -1 + } + if len(a) > len(b) { + return +1 + } + return 0 +} + func sameFile(f1, f2 *currentPath) (bool, error) { if os.SameFile(f1.f, f2.f) { return true, nil @@ -232,12 +275,6 @@ func walkLink(root, path string, linksWalked *int) (newpath string, islink bool, if err != nil { return "", false, err } - if filepath.IsAbs(newpath) && strings.HasPrefix(newpath, root) { - newpath = newpath[:len(root)] - if !strings.HasPrefix(newpath, "/") { - newpath = "/" + newpath - } - } *linksWalked++ return newpath, true, nil } diff --git a/vendor/github.com/containerd/continuity/fs/stat_bsd.go b/vendor/github.com/containerd/continuity/fs/stat_bsd.go index a1b776fdf5..cb7400a33e 100644 --- a/vendor/github.com/containerd/continuity/fs/stat_bsd.go +++ b/vendor/github.com/containerd/continuity/fs/stat_bsd.go @@ -1,5 +1,21 @@ // +build darwin freebsd +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( diff --git a/vendor/github.com/containerd/continuity/fs/stat_linux.go b/vendor/github.com/containerd/continuity/fs/stat_linux.go index 1dbb0212b6..4a678dd1fd 100644 --- a/vendor/github.com/containerd/continuity/fs/stat_linux.go +++ b/vendor/github.com/containerd/continuity/fs/stat_linux.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import ( diff --git a/vendor/github.com/containerd/continuity/fs/time.go b/vendor/github.com/containerd/continuity/fs/time.go index c336f4d881..cde4561233 100644 --- a/vendor/github.com/containerd/continuity/fs/time.go +++ b/vendor/github.com/containerd/continuity/fs/time.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package fs import "time" diff --git a/vendor/github.com/containerd/continuity/pathdriver/path_driver.go b/vendor/github.com/containerd/continuity/pathdriver/path_driver.go index b43d55fe95..b0d5a6b567 100644 --- a/vendor/github.com/containerd/continuity/pathdriver/path_driver.go +++ b/vendor/github.com/containerd/continuity/pathdriver/path_driver.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package pathdriver import ( diff --git a/vendor/github.com/containerd/continuity/syscallx/syscall_unix.go b/vendor/github.com/containerd/continuity/syscallx/syscall_unix.go index 4205d1e82c..0bfa6a0409 100644 --- a/vendor/github.com/containerd/continuity/syscallx/syscall_unix.go +++ b/vendor/github.com/containerd/continuity/syscallx/syscall_unix.go @@ -1,5 +1,21 @@ // +build !windows +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package syscallx import "syscall" diff --git a/vendor/github.com/containerd/continuity/syscallx/syscall_windows.go b/vendor/github.com/containerd/continuity/syscallx/syscall_windows.go index 9637a2875a..2ba8149905 100644 --- a/vendor/github.com/containerd/continuity/syscallx/syscall_windows.go +++ b/vendor/github.com/containerd/continuity/syscallx/syscall_windows.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package syscallx import ( diff --git a/vendor/github.com/containerd/continuity/sysx/README.md b/vendor/github.com/containerd/continuity/sysx/README.md new file mode 100644 index 0000000000..ad7aee5331 --- /dev/null +++ b/vendor/github.com/containerd/continuity/sysx/README.md @@ -0,0 +1,3 @@ +This package is for internal use only. It is intended to only have +temporary changes before they are upstreamed to golang.org/x/sys/ +(a.k.a. https://github.com/golang/sys). diff --git a/vendor/github.com/containerd/continuity/sysx/asm.s b/vendor/github.com/containerd/continuity/sysx/asm.s deleted file mode 100644 index 8ed2fdb94b..0000000000 --- a/vendor/github.com/containerd/continuity/sysx/asm.s +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !gccgo - -#include "textflag.h" - -TEXT ·use(SB),NOSPLIT,$0 - RET diff --git a/vendor/github.com/containerd/continuity/sysx/file_posix.go b/vendor/github.com/containerd/continuity/sysx/file_posix.go index d0784f819e..e28f3a1b57 100644 --- a/vendor/github.com/containerd/continuity/sysx/file_posix.go +++ b/vendor/github.com/containerd/continuity/sysx/file_posix.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package sysx import ( diff --git a/vendor/github.com/containerd/continuity/sysx/generate.sh b/vendor/github.com/containerd/continuity/sysx/generate.sh index ff432dfdd0..87d708d7ae 100644 --- a/vendor/github.com/containerd/continuity/sysx/generate.sh +++ b/vendor/github.com/containerd/continuity/sysx/generate.sh @@ -1,5 +1,20 @@ #!/bin/bash +# Copyright The containerd Authors. + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + set -e mksyscall="$(go env GOROOT)/src/syscall/mksyscall.pl" diff --git a/vendor/github.com/containerd/continuity/sysx/nodata_linux.go b/vendor/github.com/containerd/continuity/sysx/nodata_linux.go index fc47ddb8dc..28ce5d8de3 100644 --- a/vendor/github.com/containerd/continuity/sysx/nodata_linux.go +++ b/vendor/github.com/containerd/continuity/sysx/nodata_linux.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package sysx import ( diff --git a/vendor/github.com/containerd/continuity/sysx/nodata_solaris.go b/vendor/github.com/containerd/continuity/sysx/nodata_solaris.go index 53cc8e068f..e0575f4468 100644 --- a/vendor/github.com/containerd/continuity/sysx/nodata_solaris.go +++ b/vendor/github.com/containerd/continuity/sysx/nodata_solaris.go @@ -1,3 +1,19 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package sysx import ( diff --git a/vendor/github.com/containerd/continuity/sysx/nodata_unix.go b/vendor/github.com/containerd/continuity/sysx/nodata_unix.go index 7e6851209f..b26f5b3d03 100644 --- a/vendor/github.com/containerd/continuity/sysx/nodata_unix.go +++ b/vendor/github.com/containerd/continuity/sysx/nodata_unix.go @@ -1,5 +1,21 @@ // +build darwin freebsd +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package sysx import ( diff --git a/vendor/github.com/containerd/continuity/sysx/sys.go b/vendor/github.com/containerd/continuity/sysx/sys.go deleted file mode 100644 index 0bb1676283..0000000000 --- a/vendor/github.com/containerd/continuity/sysx/sys.go +++ /dev/null @@ -1,37 +0,0 @@ -package sysx - -import ( - "syscall" - "unsafe" -) - -var _zero uintptr - -// use is a no-op, but the compiler cannot see that it is. -// Calling use(p) ensures that p is kept live until that point. -//go:noescape -func use(p unsafe.Pointer) - -// Do the interface allocations only once for common -// Errno values. -var ( - errEAGAIN error = syscall.EAGAIN - errEINVAL error = syscall.EINVAL - errENOENT error = syscall.ENOENT -) - -// errnoErr returns common boxed Errno values, to prevent -// allocations at runtime. -func errnoErr(e syscall.Errno) error { - switch e { - case 0: - return nil - case syscall.EAGAIN: - return errEAGAIN - case syscall.EINVAL: - return errEINVAL - case syscall.ENOENT: - return errENOENT - } - return e -} diff --git a/vendor/github.com/containerd/continuity/sysx/xattr.go b/vendor/github.com/containerd/continuity/sysx/xattr.go index 20937c2d4d..9e4326dcfe 100644 --- a/vendor/github.com/containerd/continuity/sysx/xattr.go +++ b/vendor/github.com/containerd/continuity/sysx/xattr.go @@ -1,14 +1,72 @@ +// +build linux darwin + +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + package sysx import ( "bytes" - "fmt" "syscall" + + "golang.org/x/sys/unix" ) -const defaultXattrBufferSize = 5 +// Listxattr calls syscall listxattr and reads all content +// and returns a string array +func Listxattr(path string) ([]string, error) { + return listxattrAll(path, unix.Listxattr) +} + +// Removexattr calls syscall removexattr +func Removexattr(path string, attr string) (err error) { + return unix.Removexattr(path, attr) +} + +// Setxattr calls syscall setxattr +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + return unix.Setxattr(path, attr, data, flags) +} -var ErrNotSupported = fmt.Errorf("not supported") +// Getxattr calls syscall getxattr +func Getxattr(path, attr string) ([]byte, error) { + return getxattrAll(path, attr, unix.Getxattr) +} + +// LListxattr lists xattrs, not following symlinks +func LListxattr(path string) ([]string, error) { + return listxattrAll(path, unix.Llistxattr) +} + +// LRemovexattr removes an xattr, not following symlinks +func LRemovexattr(path string, attr string) (err error) { + return unix.Lremovexattr(path, attr) +} + +// LSetxattr sets an xattr, not following symlinks +func LSetxattr(path string, attr string, data []byte, flags int) (err error) { + return unix.Lsetxattr(path, attr, data, flags) +} + +// LGetxattr gets an xattr, not following symlinks +func LGetxattr(path, attr string) ([]byte, error) { + return getxattrAll(path, attr, unix.Lgetxattr) +} + +const defaultXattrBufferSize = 5 type listxattrFunc func(path string, dest []byte) (int, error) diff --git a/vendor/github.com/containerd/continuity/sysx/xattr_darwin.go b/vendor/github.com/containerd/continuity/sysx/xattr_darwin.go deleted file mode 100644 index 58da430706..0000000000 --- a/vendor/github.com/containerd/continuity/sysx/xattr_darwin.go +++ /dev/null @@ -1,70 +0,0 @@ -package sysx - -// These functions will be generated by generate.sh -// $ GOOS=darwin GOARCH=386 ./generate.sh xattr -// $ GOOS=darwin GOARCH=amd64 ./generate.sh xattr - -//sys getxattr(path string, attr string, dest []byte, pos int, options int) (sz int, err error) -//sys setxattr(path string, attr string, data []byte, flags int) (err error) -//sys removexattr(path string, attr string, options int) (err error) -//sys listxattr(path string, dest []byte, options int) (sz int, err error) - -const ( - xattrNoFollow = 0x01 -) - -func listxattrFollow(path string, dest []byte) (sz int, err error) { - return listxattr(path, dest, 0) -} - -// Listxattr calls syscall getxattr -func Listxattr(path string) ([]string, error) { - return listxattrAll(path, listxattrFollow) -} - -// Removexattr calls syscall getxattr -func Removexattr(path string, attr string) (err error) { - return removexattr(path, attr, 0) -} - -// Setxattr calls syscall setxattr -func Setxattr(path string, attr string, data []byte, flags int) (err error) { - return setxattr(path, attr, data, flags) -} - -func getxattrFollow(path, attr string, dest []byte) (sz int, err error) { - return getxattr(path, attr, dest, 0, 0) -} - -// Getxattr calls syscall getxattr -func Getxattr(path, attr string) ([]byte, error) { - return getxattrAll(path, attr, getxattrFollow) -} - -func listxattrNoFollow(path string, dest []byte) (sz int, err error) { - return listxattr(path, dest, xattrNoFollow) -} - -// LListxattr calls syscall listxattr with XATTR_NOFOLLOW -func LListxattr(path string) ([]string, error) { - return listxattrAll(path, listxattrNoFollow) -} - -// LRemovexattr calls syscall removexattr with XATTR_NOFOLLOW -func LRemovexattr(path string, attr string) (err error) { - return removexattr(path, attr, xattrNoFollow) -} - -// Setxattr calls syscall setxattr with XATTR_NOFOLLOW -func LSetxattr(path string, attr string, data []byte, flags int) (err error) { - return setxattr(path, attr, data, flags|xattrNoFollow) -} - -func getxattrNoFollow(path, attr string, dest []byte) (sz int, err error) { - return getxattr(path, attr, dest, 0, xattrNoFollow) -} - -// LGetxattr calls syscall getxattr with XATTR_NOFOLLOW -func LGetxattr(path, attr string) ([]byte, error) { - return getxattrAll(path, attr, getxattrNoFollow) -} diff --git a/vendor/github.com/containerd/continuity/sysx/xattr_darwin_386.go b/vendor/github.com/containerd/continuity/sysx/xattr_darwin_386.go deleted file mode 100644 index aa896b57fc..0000000000 --- a/vendor/github.com/containerd/continuity/sysx/xattr_darwin_386.go +++ /dev/null @@ -1,111 +0,0 @@ -// mksyscall.pl -l32 xattr_darwin.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT - -package sysx - -import ( - "syscall" - "unsafe" -) - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func getxattr(path string, attr string, dest []byte, pos int, options int) (sz int, err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(path) - if err != nil { - return - } - var _p1 *byte - _p1, err = syscall.BytePtrFromString(attr) - if err != nil { - return - } - var _p2 unsafe.Pointer - if len(dest) > 0 { - _p2 = unsafe.Pointer(&dest[0]) - } else { - _p2 = unsafe.Pointer(&_zero) - } - r0, _, e1 := syscall.Syscall6(syscall.SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), uintptr(pos), uintptr(options)) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - sz = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func setxattr(path string, attr string, data []byte, flags int) (err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(path) - if err != nil { - return - } - var _p1 *byte - _p1, err = syscall.BytePtrFromString(attr) - if err != nil { - return - } - var _p2 unsafe.Pointer - if len(data) > 0 { - _p2 = unsafe.Pointer(&data[0]) - } else { - _p2 = unsafe.Pointer(&_zero) - } - _, _, e1 := syscall.Syscall6(syscall.SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func removexattr(path string, attr string, options int) (err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(path) - if err != nil { - return - } - var _p1 *byte - _p1, err = syscall.BytePtrFromString(attr) - if err != nil { - return - } - _, _, e1 := syscall.Syscall(syscall.SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func listxattr(path string, dest []byte, options int) (sz int, err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(path) - if err != nil { - return - } - var _p1 unsafe.Pointer - if len(dest) > 0 { - _p1 = unsafe.Pointer(&dest[0]) - } else { - _p1 = unsafe.Pointer(&_zero) - } - r0, _, e1 := syscall.Syscall6(syscall.SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(options), 0, 0) - use(unsafe.Pointer(_p0)) - sz = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} diff --git a/vendor/github.com/containerd/continuity/sysx/xattr_darwin_amd64.go b/vendor/github.com/containerd/continuity/sysx/xattr_darwin_amd64.go deleted file mode 100644 index 6ff27e2703..0000000000 --- a/vendor/github.com/containerd/continuity/sysx/xattr_darwin_amd64.go +++ /dev/null @@ -1,111 +0,0 @@ -// mksyscall.pl xattr_darwin.go -// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT - -package sysx - -import ( - "syscall" - "unsafe" -) - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func getxattr(path string, attr string, dest []byte, pos int, options int) (sz int, err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(path) - if err != nil { - return - } - var _p1 *byte - _p1, err = syscall.BytePtrFromString(attr) - if err != nil { - return - } - var _p2 unsafe.Pointer - if len(dest) > 0 { - _p2 = unsafe.Pointer(&dest[0]) - } else { - _p2 = unsafe.Pointer(&_zero) - } - r0, _, e1 := syscall.Syscall6(syscall.SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), uintptr(pos), uintptr(options)) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - sz = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func setxattr(path string, attr string, data []byte, flags int) (err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(path) - if err != nil { - return - } - var _p1 *byte - _p1, err = syscall.BytePtrFromString(attr) - if err != nil { - return - } - var _p2 unsafe.Pointer - if len(data) > 0 { - _p2 = unsafe.Pointer(&data[0]) - } else { - _p2 = unsafe.Pointer(&_zero) - } - _, _, e1 := syscall.Syscall6(syscall.SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func removexattr(path string, attr string, options int) (err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(path) - if err != nil { - return - } - var _p1 *byte - _p1, err = syscall.BytePtrFromString(attr) - if err != nil { - return - } - _, _, e1 := syscall.Syscall(syscall.SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) - use(unsafe.Pointer(_p0)) - use(unsafe.Pointer(_p1)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func listxattr(path string, dest []byte, options int) (sz int, err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(path) - if err != nil { - return - } - var _p1 unsafe.Pointer - if len(dest) > 0 { - _p1 = unsafe.Pointer(&dest[0]) - } else { - _p1 = unsafe.Pointer(&_zero) - } - r0, _, e1 := syscall.Syscall6(syscall.SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(options), 0, 0) - use(unsafe.Pointer(_p0)) - sz = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} diff --git a/vendor/github.com/containerd/continuity/sysx/xattr_freebsd.go b/vendor/github.com/containerd/continuity/sysx/xattr_freebsd.go deleted file mode 100644 index e8017d317f..0000000000 --- a/vendor/github.com/containerd/continuity/sysx/xattr_freebsd.go +++ /dev/null @@ -1,12 +0,0 @@ -package sysx - -import ( - "errors" -) - -// Initial stub version for FreeBSD. FreeBSD has a different -// syscall API from Darwin and Linux for extended attributes; -// it is also not widely used. It is not exposed at all by the -// Go syscall package, so we need to implement directly eventually. - -var unsupported = errors.New("extended attributes unsupported on FreeBSD") diff --git a/vendor/github.com/containerd/continuity/sysx/xattr_linux.go b/vendor/github.com/containerd/continuity/sysx/xattr_linux.go deleted file mode 100644 index 311b896d9e..0000000000 --- a/vendor/github.com/containerd/continuity/sysx/xattr_linux.go +++ /dev/null @@ -1,44 +0,0 @@ -package sysx - -import "golang.org/x/sys/unix" - -// Listxattr calls syscall listxattr and reads all content -// and returns a string array -func Listxattr(path string) ([]string, error) { - return listxattrAll(path, unix.Listxattr) -} - -// Removexattr calls syscall removexattr -func Removexattr(path string, attr string) (err error) { - return unix.Removexattr(path, attr) -} - -// Setxattr calls syscall setxattr -func Setxattr(path string, attr string, data []byte, flags int) (err error) { - return unix.Setxattr(path, attr, data, flags) -} - -// Getxattr calls syscall getxattr -func Getxattr(path, attr string) ([]byte, error) { - return getxattrAll(path, attr, unix.Getxattr) -} - -// LListxattr lists xattrs, not following symlinks -func LListxattr(path string) ([]string, error) { - return listxattrAll(path, unix.Llistxattr) -} - -// LRemovexattr removes an xattr, not following symlinks -func LRemovexattr(path string, attr string) (err error) { - return unix.Lremovexattr(path, attr) -} - -// LSetxattr sets an xattr, not following symlinks -func LSetxattr(path string, attr string, data []byte, flags int) (err error) { - return unix.Lsetxattr(path, attr, data, flags) -} - -// LGetxattr gets an xattr, not following symlinks -func LGetxattr(path, attr string) ([]byte, error) { - return getxattrAll(path, attr, unix.Lgetxattr) -} diff --git a/vendor/github.com/containerd/continuity/sysx/xattr_openbsd.go b/vendor/github.com/containerd/continuity/sysx/xattr_openbsd.go deleted file mode 100644 index 723619977d..0000000000 --- a/vendor/github.com/containerd/continuity/sysx/xattr_openbsd.go +++ /dev/null @@ -1,7 +0,0 @@ -package sysx - -import ( - "errors" -) - -var unsupported = errors.New("extended attributes unsupported on OpenBSD") diff --git a/vendor/github.com/containerd/continuity/sysx/xattr_solaris.go b/vendor/github.com/containerd/continuity/sysx/xattr_solaris.go deleted file mode 100644 index fc523fcbbe..0000000000 --- a/vendor/github.com/containerd/continuity/sysx/xattr_solaris.go +++ /dev/null @@ -1,12 +0,0 @@ -package sysx - -import ( - "errors" -) - -// Initial stub version for Solaris. Solaris has a different -// syscall API from Darwin and Linux for extended attributes; -// it is also not widely used. It is not exposed at all by the -// Go syscall package, so we need to implement directly eventually. - -var unsupported = errors.New("extended attributes unsupported on Solaris") diff --git a/vendor/github.com/containerd/continuity/sysx/xattr_unsupported.go b/vendor/github.com/containerd/continuity/sysx/xattr_unsupported.go index c8389bc136..c9ef3a1d25 100644 --- a/vendor/github.com/containerd/continuity/sysx/xattr_unsupported.go +++ b/vendor/github.com/containerd/continuity/sysx/xattr_unsupported.go @@ -1,7 +1,30 @@ -// +build freebsd openbsd solaris +// +build !linux,!darwin + +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ package sysx +import ( + "errors" + "runtime" +) + +var unsupported = errors.New("extended attributes unsupported on " + runtime.GOOS) + // Listxattr calls syscall listxattr and reads all content // and returns a string array func Listxattr(path string) ([]string, error) { diff --git a/vendor/github.com/containerd/fifo/.gitignore b/vendor/github.com/containerd/fifo/.gitignore new file mode 100644 index 0000000000..c57100a595 --- /dev/null +++ b/vendor/github.com/containerd/fifo/.gitignore @@ -0,0 +1 @@ +coverage.txt diff --git a/vendor/github.com/containerd/fifo/.travis.yml b/vendor/github.com/containerd/fifo/.travis.yml index 9d3ff221ba..c6eaba0597 100644 --- a/vendor/github.com/containerd/fifo/.travis.yml +++ b/vendor/github.com/containerd/fifo/.travis.yml @@ -1,3 +1,22 @@ language: go go: - - 1.7.x + - 1.11.x + - tip + +install: + - go get -u github.com/vbatts/git-validation + - go get -u github.com/kunalkushwaha/ltag + +before_script: + - pushd ..; git clone https://github.com/containerd/project; popd + +script: + - DCO_VERBOSITY=-q ../project/script/validate/dco + - ../project/script/validate/fileheader ../project/ + - make deps + - make fmt + - make vet + - make test + +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/containerd/fifo/Makefile b/vendor/github.com/containerd/fifo/Makefile index c10cb3c95f..96be48d48b 100644 --- a/vendor/github.com/containerd/fifo/Makefile +++ b/vendor/github.com/containerd/fifo/Makefile @@ -15,7 +15,7 @@ .PHONY: fmt vet test deps test: deps - go test -v ./... + go test -v -race -covermode=atomic -coverprofile=coverage.txt ./... deps: go get -d -t ./... diff --git a/vendor/github.com/containerd/fifo/errors.go b/vendor/github.com/containerd/fifo/errors.go new file mode 100644 index 0000000000..d2ff3e8b60 --- /dev/null +++ b/vendor/github.com/containerd/fifo/errors.go @@ -0,0 +1,30 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package fifo + +import ( + "errors" +) + +var ( + ErrClosed = errors.New("fifo closed") + ErrCtrlClosed = errors.New("control of closed fifo") + ErrRdFrmWRONLY = errors.New("reading from write-only fifo") + ErrReadClosed = errors.New("reading from a closed fifo") + ErrWrToRDONLY = errors.New("writing to read-only fifo") + ErrWriteClosed = errors.New("writing to a closed fifo") +) diff --git a/vendor/github.com/containerd/fifo/fifo.go b/vendor/github.com/containerd/fifo/fifo.go index e79813da7d..7a2d18c744 100644 --- a/vendor/github.com/containerd/fifo/fifo.go +++ b/vendor/github.com/containerd/fifo/fifo.go @@ -147,7 +147,7 @@ func OpenFifo(ctx context.Context, fn string, flag int, perm os.FileMode) (io.Re // Read from a fifo to a byte array. func (f *fifo) Read(b []byte) (int, error) { if f.flag&syscall.O_WRONLY > 0 { - return 0, errors.New("reading from write-only fifo") + return 0, ErrRdFrmWRONLY } select { case <-f.opened: @@ -158,14 +158,14 @@ func (f *fifo) Read(b []byte) (int, error) { case <-f.opened: return f.file.Read(b) case <-f.closed: - return 0, errors.New("reading from a closed fifo") + return 0, ErrReadClosed } } // Write from byte array to a fifo. func (f *fifo) Write(b []byte) (int, error) { if f.flag&(syscall.O_WRONLY|syscall.O_RDWR) == 0 { - return 0, errors.New("writing to read-only fifo") + return 0, ErrWrToRDONLY } select { case <-f.opened: @@ -176,7 +176,7 @@ func (f *fifo) Write(b []byte) (int, error) { case <-f.opened: return f.file.Write(b) case <-f.closed: - return 0, errors.New("writing to a closed fifo") + return 0, ErrWriteClosed } } diff --git a/vendor/github.com/containerd/fifo/raw.go b/vendor/github.com/containerd/fifo/raw.go new file mode 100644 index 0000000000..27b8976cde --- /dev/null +++ b/vendor/github.com/containerd/fifo/raw.go @@ -0,0 +1,114 @@ +// +build go1.12 + +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package fifo + +import ( + "syscall" +) + +// SyscallConn provides raw access to the fifo's underlying filedescrptor. +// See syscall.Conn for guarentees provided by this interface. +func (f *fifo) SyscallConn() (syscall.RawConn, error) { + // deterministic check for closed + select { + case <-f.closed: + return nil, ErrClosed + default: + } + + select { + case <-f.closed: + return nil, ErrClosed + case <-f.opened: + return f.file.SyscallConn() + default: + } + + // Not opened and not closed, this means open is non-blocking AND it's not open yet + // Use rawConn to deal with non-blocking open. + rc := &rawConn{f: f, ready: make(chan struct{})} + go func() { + select { + case <-f.closed: + return + case <-f.opened: + rc.raw, rc.err = f.file.SyscallConn() + close(rc.ready) + } + }() + + return rc, nil +} + +type rawConn struct { + f *fifo + ready chan struct{} + raw syscall.RawConn + err error +} + +func (r *rawConn) Control(f func(fd uintptr)) error { + select { + case <-r.f.closed: + return ErrCtrlClosed + case <-r.ready: + } + + if r.err != nil { + return r.err + } + + return r.raw.Control(f) +} + +func (r *rawConn) Read(f func(fd uintptr) (done bool)) error { + if r.f.flag&syscall.O_WRONLY > 0 { + return ErrRdFrmWRONLY + } + + select { + case <-r.f.closed: + return ErrReadClosed + case <-r.ready: + } + + if r.err != nil { + return r.err + } + + return r.raw.Read(f) +} + +func (r *rawConn) Write(f func(fd uintptr) (done bool)) error { + if r.f.flag&(syscall.O_WRONLY|syscall.O_RDWR) == 0 { + return ErrWrToRDONLY + } + + select { + case <-r.f.closed: + return ErrWriteClosed + case <-r.ready: + } + + if r.err != nil { + return r.err + } + + return r.raw.Write(f) +} diff --git a/vendor/github.com/containerd/fifo/readme.md b/vendor/github.com/containerd/fifo/readme.md index 2b41b3b1ca..30e233cc69 100644 --- a/vendor/github.com/containerd/fifo/readme.md +++ b/vendor/github.com/containerd/fifo/readme.md @@ -1,6 +1,7 @@ ### fifo [![Build Status](https://travis-ci.org/containerd/fifo.svg?branch=master)](https://travis-ci.org/containerd/fifo) +[![codecov](https://codecov.io/gh/containerd/fifo/branch/master/graph/badge.svg)](https://codecov.io/gh/containerd/fifo) Go package for handling fifos in a sane way. @@ -30,3 +31,14 @@ func (f *fifo) Write(b []byte) (int, error) // before open(2) has returned and fifo was never opened. func (f *fifo) Close() error ``` + +## Project details + +The fifo is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE). +As a containerd sub-project, you will find the: + + * [Project governance](https://github.com/containerd/project/blob/master/GOVERNANCE.md), + * [Maintainers](https://github.com/containerd/project/blob/master/MAINTAINERS), + * and [Contributing guidelines](https://github.com/containerd/project/blob/master/CONTRIBUTING.md) + +information in our [`containerd/project`](https://github.com/containerd/project) repository. diff --git a/vendor/github.com/docker/cli/AUTHORS b/vendor/github.com/docker/cli/AUTHORS new file mode 100644 index 0000000000..ecb6251ba0 --- /dev/null +++ b/vendor/github.com/docker/cli/AUTHORS @@ -0,0 +1,723 @@ +# This file lists all individuals having contributed content to the repository. +# For how it is generated, see `scripts/docs/generate-authors.sh`. + +Aanand Prasad +Aaron L. Xu +Aaron Lehmann +Aaron.L.Xu +Abdur Rehman +Abhinandan Prativadi +Abin Shahab +Ace Tang +Addam Hardy +Adolfo Ochagavía +Adrian Plata +Adrien Duermael +Adrien Folie +Ahmet Alp Balkan +Aidan Feldman +Aidan Hobson Sayers +AJ Bowen +Akihiro Suda +Akim Demaille +Alan Thompson +Albert Callarisa +Aleksa Sarai +Alessandro Boch +Alex Mavrogiannis +Alex Mayer +Alexander Boyd +Alexander Larsson +Alexander Morozov +Alexander Ryabov +Alexandre González +Alfred Landrum +Alicia Lauerman +Allen Sun +Alvin Deng +Amen Belayneh +Amir Goldstein +Amit Krishnan +Amit Shukla +Amy Lindburg +Anda Xu +Andrea Luzzardi +Andreas Köhler +Andrew France +Andrew Hsu +Andrew Macpherson +Andrew McDonnell +Andrew Po +Andrey Petrov +André Martins +Andy Goldstein +Andy Rothfusz +Anil Madhavapeddy +Ankush Agarwal +Anne Henmi +Anton Polonskiy +Antonio Murdaca +Antonis Kalipetis +Anusha Ragunathan +Ao Li +Arash Deshmeh +Arnaud Porterie +Ashwini Oruganti +Azat Khuyiyakhmetov +Bardia Keyoumarsi +Barnaby Gray +Bastiaan Bakker +BastianHofmann +Ben Bonnefoy +Ben Creasy +Ben Firshman +Benjamin Boudreau +Benoit Sigoure +Bhumika Bayani +Bill Wang +Bin Liu +Bingshen Wang +Boaz Shuster +Bogdan Anton +Boris Pruessmann +Bradley Cicenas +Brandon Mitchell +Brandon Philips +Brent Salisbury +Bret Fisher +Brian (bex) Exelbierd +Brian Goff +Bryan Bess +Bryan Boreham +Bryan Murphy +bryfry +Cameron Spear +Cao Weiwei +Carlo Mion +Carlos Alexandro Becker +Ce Gao +Cedric Davies +Cezar Sa Espinola +Chad Faragher +Chao Wang +Charles Chan +Charles Law +Charles Smith +Charlie Drage +ChaYoung You +Chen Chuanliang +Chen Hanxiao +Chen Mingjie +Chen Qiu +Chris Gavin +Chris Gibson +Chris McKinnel +Chris Snow +Chris Weyl +Christian Persson +Christian Stefanescu +Christophe Robin +Christophe Vidal +Christopher Biscardi +Christopher Crone +Christopher Jones +Christy Norman +Chun Chen +Clinton Kitson +Coenraad Loubser +Colin Hebert +Collin Guarino +Colm Hally +Corey Farrell +Corey Quon +Craig Wilhite +Cristian Staretu +Daehyeok Mun +Dafydd Crosby +dalanlan +Damien Nadé +Dan Cotora +Daniel Cassidy +Daniel Dao +Daniel Farrell +Daniel Gasienica +Daniel Goosen +Daniel Hiltgen +Daniel J Walsh +Daniel Nephin +Daniel Norberg +Daniel Watkins +Daniel Zhang +Danny Berger +Darren Shepherd +Darren Stahl +Dattatraya Kumbhar +Dave Goodchild +Dave Henderson +Dave Tucker +David Beitey +David Calavera +David Cramer +David Dooling +David Gageot +David Lechner +David Scott +David Sheets +David Williamson +David Xia +David Young +Deng Guangxing +Denis Defreyne +Denis Gladkikh +Denis Ollier +Dennis Docter +Derek McGowan +Deshi Xiao +Dharmit Shah +Dhawal Yogesh Bhanushali +Dieter Reuter +Dima Stopel +Dimitry Andric +Ding Fei +Diogo Monica +Dmitry Gusev +Dmitry Smirnov +Dmitry V. Krivenok +Don Kjer +Dong Chen +Doug Davis +Drew Erny +Ed Costello +Elango Sivanandam +Eli Uriegas +Eli Uriegas +Elias Faxö +Elliot Luo <956941328@qq.com> +Eric Curtin +Eric G. Noriega +Eric Rosenberg +Eric Sage +Eric-Olivier Lamey +Erica Windisch +Erik Hollensbe +Erik St. Martin +Essam A. Hassan +Ethan Haynes +Euan Kemp +Eugene Yakubovich +Evan Allrich +Evan Hazlett +Evan Krall +Evelyn Xu +Everett Toews +Fabio Falci +Fabrizio Soppelsa +Felix Hupfeld +Felix Rabe +Filip Jareš +Flavio Crisciani +Florian Klein +Forest Johnson +Foysal Iqbal +François Scala +Fred Lifton +Frederic Hemberger +Frederick F. Kautz IV +Frederik Nordahl Jul Sabroe +Frieder Bluemle +Gabriel Nicolas Avellaneda +Gaetan de Villele +Gang Qiao +Gary Schaetz +Genki Takiuchi +George MacRorie +George Xie +Gianluca Borello +Gildas Cuisinier +Goksu Toprak +Gou Rao +Grant Reaber +Greg Pflaum +Guilhem Lettron +Guillaume J. Charmes +Guillaume Le Floch +gwx296173 +Günther Jungbluth +Hakan Özler +Hao Zhang <21521210@zju.edu.cn> +Harald Albers +Harold Cooper +Harry Zhang +He Simei +Helen Xie +Henning Sprang +Henry N +Hernan Garcia +Hongbin Lu +Hu Keping +Huayi Zhang +huqun +Huu Nguyen +Hyzhou Zhy +Ian Campbell +Ian Philpot +Ignacio Capurro +Ilya Dmitrichenko +Ilya Khlopotov +Ilya Sotkov +Ioan Eugen Stan +Isabel Jimenez +Ivan Grcic +Ivan Markin +Jacob Atzen +Jacob Tomlinson +Jaivish Kothari +Jake Lambert +Jake Sanders +James Nesbitt +James Turnbull +Jamie Hannaford +Jan Koprowski +Jan Pazdziora +Jan-Jaap Driessen +Jana Radhakrishnan +Jared Hocutt +Jasmine Hegman +Jason Heiss +Jason Plum +Jay Kamat +Jean Rouge +Jean-Christophe Sirot +Jean-Pierre Huynh +Jeff Lindsay +Jeff Nickoloff +Jeff Silberman +Jeremy Chambers +Jeremy Unruh +Jeremy Yallop +Jeroen Franse +Jesse Adametz +Jessica Frazelle +Jezeniel Zapanta +Jian Zhang +Jie Luo +Jilles Oldenbeuving +Jim Galasyn +Jimmy Leger +Jimmy Song +jimmyxian +Jintao Zhang +Joao Fernandes +Joe Doliner +Joe Gordon +Joel Handwell +Joey Geiger +Joffrey F +Johan Euphrosine +Johannes 'fish' Ziemke +John Feminella +John Harris +John Howard (VM) +John Laswell +John Maguire +John Mulhausen +John Starks +John Stephens +John Tims +John V. Martinez +John Willis +Jonathan Boulle +Jonathan Lee +Jonathan Lomas +Jonathan McCrohan +Jonh Wendell +Jordan Jennings +Joseph Kern +Josh Bodah +Josh Chorlton +Josh Hawn +Josh Horwitz +Josh Soref +Julien Barbier +Julien Kassar +Julien Maitrehenry +Justas Brazauskas +Justin Cormack +Justin Simonelis +Justyn Temme +Jyrki Puttonen +Jérémie Drouet +Jérôme Petazzoni +Jörg Thalheim +Kai Blin +Kai Qiang Wu (Kennan) +Kara Alexandra +Kareem Khazem +Karthik Nayak +Kat Samperi +Kathryn Spiers +Katie McLaughlin +Ke Xu +Kei Ohmura +Keith Hudgins +Ken Cochrane +Ken ICHIKAWA +Kenfe-Mickaël Laventure +Kevin Burke +Kevin Feyrer +Kevin Kern +Kevin Kirsche +Kevin Meredith +Kevin Richardson +khaled souf +Kim Eik +Kir Kolyshkin +Kotaro Yoshimatsu +Krasi Georgiev +Kris-Mikael Krister +Kun Zhang +Kunal Kushwaha +Lachlan Cooper +Lai Jiangshan +Lars Kellogg-Stedman +Laura Frank +Laurent Erignoux +Lee Gaines +Lei Jitang +Lennie +Leo Gallucci +Lewis Daly +Li Yi +Li Yi +Liang-Chi Hsieh +Lifubang +Lihua Tang +Lily Guo +Lin Lu +Linus Heckemann +Liping Xue +Liron Levin +liwenqi +lixiaobing10051267 +Lloyd Dewolf +Lorenzo Fontana +Louis Opter +Luca Favatella +Luca Marturana +Lucas Chan +Luka Hartwig +Lukasz Zajaczkowski +Lydell Manganti +Lénaïc Huard +Ma Shimiao +Mabin +Madhav Puri +Madhu Venugopal +Malte Janduda +Manjunath A Kumatagi +Mansi Nahar +mapk0y +Marc Bihlmaier +Marco Mariani +Marco Vedovati +Marcus Martins +Marianna Tessel +Marius Sturm +Mark Oates +Marsh Macy +Martin Mosegaard Amdisen +Mary Anthony +Mason Fish +Mason Malone +Mateusz Major +Mathieu Champlon +Matt Gucci +Matt Robenolt +Matteo Orefice +Matthew Heon +Matthieu Hauglustaine +Mauro Porras P +Max Shytikov +Maxime Petazzoni +Mei ChunTao +Micah Zoltu +Michael A. Smith +Michael Bridgen +Michael Crosby +Michael Friis +Michael Irwin +Michael Käufl +Michael Prokop +Michael Scharf +Michael Spetsiotis +Michael Steinert +Michael West +Michal Minář +Michał Czeraszkiewicz +Miguel Angel Alvarez Cabrerizo +Mihai Borobocea +Mihuleacc Sergiu +Mike Brown +Mike Casas +Mike Danese +Mike Dillon +Mike Goelzer +Mike MacCana +mikelinjie <294893458@qq.com> +Mikhail Vasin +Milind Chawre +Mindaugas Rukas +Misty Stanley-Jones +Mohammad Banikazemi +Mohammed Aaqib Ansari +Mohini Anne Dsouza +Moorthy RS +Morgan Bauer +Moysés Borges +Mrunal Patel +muicoder +Muthukumar R +Máximo Cuadros +Mårten Cassel +Nace Oroz +Nahum Shalman +Nalin Dahyabhai +Nao YONASHIRO +Nassim 'Nass' Eddequiouaq +Natalie Parker +Nate Brennand +Nathan Hsieh +Nathan LeClaire +Nathan McCauley +Neil Peterson +Nick Adcock +Nico Stapelbroek +Nicola Kabar +Nicolas Borboën +Nicolas De Loof +Nikhil Chawla +Nikolas Garofil +Nikolay Milovanov +Nir Soffer +Nishant Totla +NIWA Hideyuki +Noah Treuhaft +O.S. Tezer +ohmystack +Olle Jonsson +Olli Janatuinen +Otto Kekäläinen +Ovidio Mallo +Pascal Borreli +Patrick Böänziger +Patrick Hemmer +Patrick Lang +Paul +Paul Kehrer +Paul Lietar +Paul Weaver +Pavel Pospisil +Paweł Szczekutowicz +Peeyush Gupta +Per Lundberg +Peter Edge +Peter Hsu +Peter Jaffe +Peter Kehl +Peter Nagy +Peter Salvatore +Peter Waller +Phil Estes +Philip Alexander Etling +Philipp Gillé +Philipp Schmied +pidster +pixelistik +Pratik Karki +Prayag Verma +Preston Cowley +Pure White +Qiang Huang +Qinglan Peng +qudongfang +Raghavendra K T +Ravi Shekhar Jethani +Ray Tsang +Reficul +Remy Suen +Renaud Gaubert +Ricardo N Feliciano +Rich Moyse +Richard Mathie +Richard Scothern +Rick Wieman +Ritesh H Shukla +Riyaz Faizullabhoy +Robert Wallis +Robin Naundorf +Robin Speekenbrink +Rodolfo Ortiz +Rogelio Canedo +Rohan Verma +Roland Kammerer +Roman Dudin +Rory Hunter +Ross Boucher +Rubens Figueiredo +Rui Cao +Ryan Belgrave +Ryan Detzel +Ryan Stelly +Ryan Wilson-Perkin +Ryan Zhang +Sainath Grandhi +Sakeven Jiang +Sally O'Malley +Sam Neirinck +Sambuddha Basu +Sami Tabet +Samuel Karp +Santhosh Manohar +Scott Brenner +Scott Collier +Sean Christopherson +Sean Rodman +Sebastiaan van Stijn +Sergey Tryuber +Serhat Gülçiçek +Sevki Hasirci +Shaun Kaasten +Sheng Yang +Shijiang Wei +Shishir Mahajan +Shoubhik Bose +Shukui Yang +Sian Lerk Lau +Sidhartha Mani +sidharthamani +Silvin Lubecki +Simei He +Simon Ferquel +Sindhu S +Slava Semushin +Solomon Hykes +Song Gao +Spencer Brown +squeegels <1674195+squeegels@users.noreply.github.com> +Srini Brahmaroutu +Stefan S. +Stefan Scherer +Stefan Weil +Stephane Jeandeaux +Stephen Day +Stephen Rust +Steve Durrheimer +Steve Richards +Steven Burgess +Subhajit Ghosh +Sun Jianbo +Sune Keller +Sungwon Han +Sunny Gogoi +Sven Dowideit +Sylvain Baubeau +Sébastien HOUZÉ +T K Sourabh +TAGOMORI Satoshi +taiji-tech +Taylor Jones +Tejaswini Duggaraju +Thatcher Peskens +Thomas Gazagnaire +Thomas Krzero +Thomas Leonard +Thomas Léveil +Thomas Riccardi +Thomas Swift +Tianon Gravi +Tianyi Wang +Tibor Vass +Tim Dettrick +Tim Hockin +Tim Smith +Tim Waugh +Tim Wraight +timfeirg +Timothy Hobbs +Tobias Bradtke +Tobias Gesellchen +Todd Whiteman +Tom Denham +Tom Fotherby +Tom Klingenberg +Tom Milligan +Tom X. Tobin +Tomas Tomecek +Tomasz Kopczynski +Tomáš Hrčka +Tony Abboud +Tõnis Tiigi +Trapier Marshall +Travis Cline +Tristan Carel +Tycho Andersen +Tycho Andersen +uhayate +Ulysses Souza +Umesh Yadav +Valentin Lorentz +Veres Lajos +Victor Vieux +Victoria Bialas +Viktor Stanchev +Vimal Raghubir +Vincent Batts +Vincent Bernat +Vincent Demeester +Vincent Woo +Vishnu Kannan +Vivek Goyal +Wang Jie +Wang Lei +Wang Long +Wang Ping +Wang Xing +Wang Yuexiao +Wataru Ishida +Wayne Song +Wen Cheng Ma +Wenzhi Liang +Wes Morgan +Wewang Xiaorenfine +William Henry +Xianglin Gao +Xiaodong Zhang +Xiaoxi He +Xinbo Weng +Xuecong Liao +Yan Feng +Yanqiang Miao +Yassine Tijani +Yi EungJun +Ying Li +Yong Tang +Yosef Fertel +Yu Peng +Yuan Sun +Yue Zhang +Yunxiang Huang +Zachary Romero +Zander Mackie +zebrilee +Zhang Kun +Zhang Wei +Zhang Wentao +ZhangHang +zhenghenghuo +Zhou Hao +Zhoulin Xie +Zhu Guihua +Álex González +Álvaro Lázaro +Átila Camurça Alves +徐俊杰 diff --git a/vendor/github.com/docker/cli/LICENSE b/vendor/github.com/docker/cli/LICENSE new file mode 100644 index 0000000000..9c8e20ab85 --- /dev/null +++ b/vendor/github.com/docker/cli/LICENSE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2013-2017 Docker, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/docker/cli/NOTICE b/vendor/github.com/docker/cli/NOTICE new file mode 100644 index 0000000000..58b19b6d15 --- /dev/null +++ b/vendor/github.com/docker/cli/NOTICE @@ -0,0 +1,19 @@ +Docker +Copyright 2012-2017 Docker, Inc. + +This product includes software developed at Docker, Inc. (https://www.docker.com). + +This product contains software (https://github.com/creack/pty) developed +by Keith Rarick, licensed under the MIT License. + +The following is courtesy of our legal counsel: + + +Use and transfer of Docker may be subject to certain restrictions by the +United States and other governments. +It is your responsibility to ensure that your use and/or transfer does not +violate applicable laws. + +For more information, please see https://www.bis.doc.gov + +See also https://www.apache.org/dev/crypto.html and/or seek legal counsel. diff --git a/vendor/github.com/docker/cli/cli/config/config.go b/vendor/github.com/docker/cli/cli/config/config.go new file mode 100644 index 0000000000..c860cf7125 --- /dev/null +++ b/vendor/github.com/docker/cli/cli/config/config.go @@ -0,0 +1,140 @@ +package config + +import ( + "fmt" + "io" + "os" + "path/filepath" + "strings" + + "github.com/docker/cli/cli/config/configfile" + "github.com/docker/cli/cli/config/credentials" + "github.com/docker/cli/cli/config/types" + "github.com/docker/docker/pkg/homedir" + "github.com/pkg/errors" +) + +const ( + // ConfigFileName is the name of config file + ConfigFileName = "config.json" + configFileDir = ".docker" + oldConfigfile = ".dockercfg" + contextsDir = "contexts" +) + +var ( + configDir = os.Getenv("DOCKER_CONFIG") +) + +func init() { + if configDir == "" { + configDir = filepath.Join(homedir.Get(), configFileDir) + } +} + +// Dir returns the directory the configuration file is stored in +func Dir() string { + return configDir +} + +// ContextStoreDir returns the directory the docker contexts are stored in +func ContextStoreDir() string { + return filepath.Join(Dir(), contextsDir) +} + +// SetDir sets the directory the configuration file is stored in +func SetDir(dir string) { + configDir = filepath.Clean(dir) +} + +// Path returns the path to a file relative to the config dir +func Path(p ...string) (string, error) { + path := filepath.Join(append([]string{Dir()}, p...)...) + if !strings.HasPrefix(path, Dir()+string(filepath.Separator)) { + return "", errors.Errorf("path %q is outside of root config directory %q", path, Dir()) + } + return path, nil +} + +// LegacyLoadFromReader is a convenience function that creates a ConfigFile object from +// a non-nested reader +func LegacyLoadFromReader(configData io.Reader) (*configfile.ConfigFile, error) { + configFile := configfile.ConfigFile{ + AuthConfigs: make(map[string]types.AuthConfig), + } + err := configFile.LegacyLoadFromReader(configData) + return &configFile, err +} + +// LoadFromReader is a convenience function that creates a ConfigFile object from +// a reader +func LoadFromReader(configData io.Reader) (*configfile.ConfigFile, error) { + configFile := configfile.ConfigFile{ + AuthConfigs: make(map[string]types.AuthConfig), + } + err := configFile.LoadFromReader(configData) + return &configFile, err +} + +// Load reads the configuration files in the given directory, and sets up +// the auth config information and returns values. +// FIXME: use the internal golang config parser +func Load(configDir string) (*configfile.ConfigFile, error) { + if configDir == "" { + configDir = Dir() + } + + filename := filepath.Join(configDir, ConfigFileName) + configFile := configfile.New(filename) + + // Try happy path first - latest config file + if _, err := os.Stat(filename); err == nil { + file, err := os.Open(filename) + if err != nil { + return configFile, errors.Wrap(err, filename) + } + defer file.Close() + err = configFile.LoadFromReader(file) + if err != nil { + err = errors.Wrap(err, filename) + } + return configFile, err + } else if !os.IsNotExist(err) { + // if file is there but we can't stat it for any reason other + // than it doesn't exist then stop + return configFile, errors.Wrap(err, filename) + } + + // Can't find latest config file so check for the old one + homedir, err := os.UserHomeDir() + if err != nil { + return configFile, errors.Wrap(err, oldConfigfile) + } + confFile := filepath.Join(homedir, oldConfigfile) + if _, err := os.Stat(confFile); err != nil { + return configFile, nil //missing file is not an error + } + file, err := os.Open(confFile) + if err != nil { + return configFile, errors.Wrap(err, filename) + } + defer file.Close() + err = configFile.LegacyLoadFromReader(file) + if err != nil { + return configFile, errors.Wrap(err, filename) + } + return configFile, nil +} + +// LoadDefaultConfigFile attempts to load the default config file and returns +// an initialized ConfigFile struct if none is found. +func LoadDefaultConfigFile(stderr io.Writer) *configfile.ConfigFile { + configFile, err := Load(Dir()) + if err != nil { + fmt.Fprintf(stderr, "WARNING: Error loading config file: %v\n", err) + } + if !configFile.ContainsAuth() { + configFile.CredentialsStore = credentials.DetectDefaultStore(configFile.CredentialsStore) + } + return configFile +} diff --git a/vendor/github.com/docker/cli/cli/config/configfile/file.go b/vendor/github.com/docker/cli/cli/config/configfile/file.go new file mode 100644 index 0000000000..388a5d54d6 --- /dev/null +++ b/vendor/github.com/docker/cli/cli/config/configfile/file.go @@ -0,0 +1,387 @@ +package configfile + +import ( + "encoding/base64" + "encoding/json" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strings" + + "github.com/docker/cli/cli/config/credentials" + "github.com/docker/cli/cli/config/types" + "github.com/pkg/errors" +) + +const ( + // This constant is only used for really old config files when the + // URL wasn't saved as part of the config file and it was just + // assumed to be this value. + defaultIndexServer = "https://index.docker.io/v1/" +) + +// ConfigFile ~/.docker/config.json file info +type ConfigFile struct { + AuthConfigs map[string]types.AuthConfig `json:"auths"` + HTTPHeaders map[string]string `json:"HttpHeaders,omitempty"` + PsFormat string `json:"psFormat,omitempty"` + ImagesFormat string `json:"imagesFormat,omitempty"` + NetworksFormat string `json:"networksFormat,omitempty"` + PluginsFormat string `json:"pluginsFormat,omitempty"` + VolumesFormat string `json:"volumesFormat,omitempty"` + StatsFormat string `json:"statsFormat,omitempty"` + DetachKeys string `json:"detachKeys,omitempty"` + CredentialsStore string `json:"credsStore,omitempty"` + CredentialHelpers map[string]string `json:"credHelpers,omitempty"` + Filename string `json:"-"` // Note: for internal use only + ServiceInspectFormat string `json:"serviceInspectFormat,omitempty"` + ServicesFormat string `json:"servicesFormat,omitempty"` + TasksFormat string `json:"tasksFormat,omitempty"` + SecretFormat string `json:"secretFormat,omitempty"` + ConfigFormat string `json:"configFormat,omitempty"` + NodesFormat string `json:"nodesFormat,omitempty"` + PruneFilters []string `json:"pruneFilters,omitempty"` + Proxies map[string]ProxyConfig `json:"proxies,omitempty"` + Experimental string `json:"experimental,omitempty"` + StackOrchestrator string `json:"stackOrchestrator,omitempty"` + Kubernetes *KubernetesConfig `json:"kubernetes,omitempty"` + CurrentContext string `json:"currentContext,omitempty"` + CLIPluginsExtraDirs []string `json:"cliPluginsExtraDirs,omitempty"` + Plugins map[string]map[string]string `json:"plugins,omitempty"` + Aliases map[string]string `json:"aliases,omitempty"` +} + +// ProxyConfig contains proxy configuration settings +type ProxyConfig struct { + HTTPProxy string `json:"httpProxy,omitempty"` + HTTPSProxy string `json:"httpsProxy,omitempty"` + NoProxy string `json:"noProxy,omitempty"` + FTPProxy string `json:"ftpProxy,omitempty"` +} + +// KubernetesConfig contains Kubernetes orchestrator settings +type KubernetesConfig struct { + AllNamespaces string `json:"allNamespaces,omitempty"` +} + +// New initializes an empty configuration file for the given filename 'fn' +func New(fn string) *ConfigFile { + return &ConfigFile{ + AuthConfigs: make(map[string]types.AuthConfig), + HTTPHeaders: make(map[string]string), + Filename: fn, + Plugins: make(map[string]map[string]string), + Aliases: make(map[string]string), + } +} + +// LegacyLoadFromReader reads the non-nested configuration data given and sets up the +// auth config information with given directory and populates the receiver object +func (configFile *ConfigFile) LegacyLoadFromReader(configData io.Reader) error { + b, err := ioutil.ReadAll(configData) + if err != nil { + return err + } + + if err := json.Unmarshal(b, &configFile.AuthConfigs); err != nil { + arr := strings.Split(string(b), "\n") + if len(arr) < 2 { + return errors.Errorf("The Auth config file is empty") + } + authConfig := types.AuthConfig{} + origAuth := strings.Split(arr[0], " = ") + if len(origAuth) != 2 { + return errors.Errorf("Invalid Auth config file") + } + authConfig.Username, authConfig.Password, err = decodeAuth(origAuth[1]) + if err != nil { + return err + } + authConfig.ServerAddress = defaultIndexServer + configFile.AuthConfigs[defaultIndexServer] = authConfig + } else { + for k, authConfig := range configFile.AuthConfigs { + authConfig.Username, authConfig.Password, err = decodeAuth(authConfig.Auth) + if err != nil { + return err + } + authConfig.Auth = "" + authConfig.ServerAddress = k + configFile.AuthConfigs[k] = authConfig + } + } + return nil +} + +// LoadFromReader reads the configuration data given and sets up the auth config +// information with given directory and populates the receiver object +func (configFile *ConfigFile) LoadFromReader(configData io.Reader) error { + if err := json.NewDecoder(configData).Decode(&configFile); err != nil { + return err + } + var err error + for addr, ac := range configFile.AuthConfigs { + if ac.Auth != "" { + ac.Username, ac.Password, err = decodeAuth(ac.Auth) + if err != nil { + return err + } + } + ac.Auth = "" + ac.ServerAddress = addr + configFile.AuthConfigs[addr] = ac + } + return checkKubernetesConfiguration(configFile.Kubernetes) +} + +// ContainsAuth returns whether there is authentication configured +// in this file or not. +func (configFile *ConfigFile) ContainsAuth() bool { + return configFile.CredentialsStore != "" || + len(configFile.CredentialHelpers) > 0 || + len(configFile.AuthConfigs) > 0 +} + +// GetAuthConfigs returns the mapping of repo to auth configuration +func (configFile *ConfigFile) GetAuthConfigs() map[string]types.AuthConfig { + return configFile.AuthConfigs +} + +// SaveToWriter encodes and writes out all the authorization information to +// the given writer +func (configFile *ConfigFile) SaveToWriter(writer io.Writer) error { + // Encode sensitive data into a new/temp struct + tmpAuthConfigs := make(map[string]types.AuthConfig, len(configFile.AuthConfigs)) + for k, authConfig := range configFile.AuthConfigs { + authCopy := authConfig + // encode and save the authstring, while blanking out the original fields + authCopy.Auth = encodeAuth(&authCopy) + authCopy.Username = "" + authCopy.Password = "" + authCopy.ServerAddress = "" + tmpAuthConfigs[k] = authCopy + } + + saveAuthConfigs := configFile.AuthConfigs + configFile.AuthConfigs = tmpAuthConfigs + defer func() { configFile.AuthConfigs = saveAuthConfigs }() + + data, err := json.MarshalIndent(configFile, "", "\t") + if err != nil { + return err + } + _, err = writer.Write(data) + return err +} + +// Save encodes and writes out all the authorization information +func (configFile *ConfigFile) Save() error { + if configFile.Filename == "" { + return errors.Errorf("Can't save config with empty filename") + } + + dir := filepath.Dir(configFile.Filename) + if err := os.MkdirAll(dir, 0700); err != nil { + return err + } + temp, err := ioutil.TempFile(dir, filepath.Base(configFile.Filename)) + if err != nil { + return err + } + err = configFile.SaveToWriter(temp) + temp.Close() + if err != nil { + os.Remove(temp.Name()) + return err + } + return os.Rename(temp.Name(), configFile.Filename) +} + +// ParseProxyConfig computes proxy configuration by retrieving the config for the provided host and +// then checking this against any environment variables provided to the container +func (configFile *ConfigFile) ParseProxyConfig(host string, runOpts map[string]*string) map[string]*string { + var cfgKey string + + if _, ok := configFile.Proxies[host]; !ok { + cfgKey = "default" + } else { + cfgKey = host + } + + config := configFile.Proxies[cfgKey] + permitted := map[string]*string{ + "HTTP_PROXY": &config.HTTPProxy, + "HTTPS_PROXY": &config.HTTPSProxy, + "NO_PROXY": &config.NoProxy, + "FTP_PROXY": &config.FTPProxy, + } + m := runOpts + if m == nil { + m = make(map[string]*string) + } + for k := range permitted { + if *permitted[k] == "" { + continue + } + if _, ok := m[k]; !ok { + m[k] = permitted[k] + } + if _, ok := m[strings.ToLower(k)]; !ok { + m[strings.ToLower(k)] = permitted[k] + } + } + return m +} + +// encodeAuth creates a base64 encoded string to containing authorization information +func encodeAuth(authConfig *types.AuthConfig) string { + if authConfig.Username == "" && authConfig.Password == "" { + return "" + } + + authStr := authConfig.Username + ":" + authConfig.Password + msg := []byte(authStr) + encoded := make([]byte, base64.StdEncoding.EncodedLen(len(msg))) + base64.StdEncoding.Encode(encoded, msg) + return string(encoded) +} + +// decodeAuth decodes a base64 encoded string and returns username and password +func decodeAuth(authStr string) (string, string, error) { + if authStr == "" { + return "", "", nil + } + + decLen := base64.StdEncoding.DecodedLen(len(authStr)) + decoded := make([]byte, decLen) + authByte := []byte(authStr) + n, err := base64.StdEncoding.Decode(decoded, authByte) + if err != nil { + return "", "", err + } + if n > decLen { + return "", "", errors.Errorf("Something went wrong decoding auth config") + } + arr := strings.SplitN(string(decoded), ":", 2) + if len(arr) != 2 { + return "", "", errors.Errorf("Invalid auth configuration file") + } + password := strings.Trim(arr[1], "\x00") + return arr[0], password, nil +} + +// GetCredentialsStore returns a new credentials store from the settings in the +// configuration file +func (configFile *ConfigFile) GetCredentialsStore(registryHostname string) credentials.Store { + if helper := getConfiguredCredentialStore(configFile, registryHostname); helper != "" { + return newNativeStore(configFile, helper) + } + return credentials.NewFileStore(configFile) +} + +// var for unit testing. +var newNativeStore = func(configFile *ConfigFile, helperSuffix string) credentials.Store { + return credentials.NewNativeStore(configFile, helperSuffix) +} + +// GetAuthConfig for a repository from the credential store +func (configFile *ConfigFile) GetAuthConfig(registryHostname string) (types.AuthConfig, error) { + return configFile.GetCredentialsStore(registryHostname).Get(registryHostname) +} + +// getConfiguredCredentialStore returns the credential helper configured for the +// given registry, the default credsStore, or the empty string if neither are +// configured. +func getConfiguredCredentialStore(c *ConfigFile, registryHostname string) string { + if c.CredentialHelpers != nil && registryHostname != "" { + if helper, exists := c.CredentialHelpers[registryHostname]; exists { + return helper + } + } + return c.CredentialsStore +} + +// GetAllCredentials returns all of the credentials stored in all of the +// configured credential stores. +func (configFile *ConfigFile) GetAllCredentials() (map[string]types.AuthConfig, error) { + auths := make(map[string]types.AuthConfig) + addAll := func(from map[string]types.AuthConfig) { + for reg, ac := range from { + auths[reg] = ac + } + } + + defaultStore := configFile.GetCredentialsStore("") + newAuths, err := defaultStore.GetAll() + if err != nil { + return nil, err + } + addAll(newAuths) + + // Auth configs from a registry-specific helper should override those from the default store. + for registryHostname := range configFile.CredentialHelpers { + newAuth, err := configFile.GetAuthConfig(registryHostname) + if err != nil { + return nil, err + } + auths[registryHostname] = newAuth + } + return auths, nil +} + +// GetFilename returns the file name that this config file is based on. +func (configFile *ConfigFile) GetFilename() string { + return configFile.Filename +} + +// PluginConfig retrieves the requested option for the given plugin. +func (configFile *ConfigFile) PluginConfig(pluginname, option string) (string, bool) { + if configFile.Plugins == nil { + return "", false + } + pluginConfig, ok := configFile.Plugins[pluginname] + if !ok { + return "", false + } + value, ok := pluginConfig[option] + return value, ok +} + +// SetPluginConfig sets the option to the given value for the given +// plugin. Passing a value of "" will remove the option. If removing +// the final config item for a given plugin then also cleans up the +// overall plugin entry. +func (configFile *ConfigFile) SetPluginConfig(pluginname, option, value string) { + if configFile.Plugins == nil { + configFile.Plugins = make(map[string]map[string]string) + } + pluginConfig, ok := configFile.Plugins[pluginname] + if !ok { + pluginConfig = make(map[string]string) + configFile.Plugins[pluginname] = pluginConfig + } + if value != "" { + pluginConfig[option] = value + } else { + delete(pluginConfig, option) + } + if len(pluginConfig) == 0 { + delete(configFile.Plugins, pluginname) + } +} + +func checkKubernetesConfiguration(kubeConfig *KubernetesConfig) error { + if kubeConfig == nil { + return nil + } + switch kubeConfig.AllNamespaces { + case "": + case "enabled": + case "disabled": + default: + return fmt.Errorf("invalid 'kubernetes.allNamespaces' value, should be 'enabled' or 'disabled': %s", kubeConfig.AllNamespaces) + } + return nil +} diff --git a/vendor/github.com/docker/cli/cli/config/credentials/credentials.go b/vendor/github.com/docker/cli/cli/config/credentials/credentials.go new file mode 100644 index 0000000000..28d58ec48d --- /dev/null +++ b/vendor/github.com/docker/cli/cli/config/credentials/credentials.go @@ -0,0 +1,17 @@ +package credentials + +import ( + "github.com/docker/cli/cli/config/types" +) + +// Store is the interface that any credentials store must implement. +type Store interface { + // Erase removes credentials from the store for a given server. + Erase(serverAddress string) error + // Get retrieves credentials from the store for a given server. + Get(serverAddress string) (types.AuthConfig, error) + // GetAll retrieves all the credentials from the store. + GetAll() (map[string]types.AuthConfig, error) + // Store saves credentials in the store. + Store(authConfig types.AuthConfig) error +} diff --git a/vendor/github.com/docker/cli/cli/config/credentials/default_store.go b/vendor/github.com/docker/cli/cli/config/credentials/default_store.go new file mode 100644 index 0000000000..7a760f1a97 --- /dev/null +++ b/vendor/github.com/docker/cli/cli/config/credentials/default_store.go @@ -0,0 +1,21 @@ +package credentials + +import ( + "os/exec" +) + +// DetectDefaultStore return the default credentials store for the platform if +// the store executable is available. +func DetectDefaultStore(store string) string { + platformDefault := defaultCredentialsStore() + + // user defined or no default for platform + if store != "" || platformDefault == "" { + return store + } + + if _, err := exec.LookPath(remoteCredentialsPrefix + platformDefault); err == nil { + return platformDefault + } + return "" +} diff --git a/vendor/github.com/docker/cli/cli/config/credentials/default_store_darwin.go b/vendor/github.com/docker/cli/cli/config/credentials/default_store_darwin.go new file mode 100644 index 0000000000..5d42dec622 --- /dev/null +++ b/vendor/github.com/docker/cli/cli/config/credentials/default_store_darwin.go @@ -0,0 +1,5 @@ +package credentials + +func defaultCredentialsStore() string { + return "osxkeychain" +} diff --git a/vendor/github.com/docker/cli/cli/config/credentials/default_store_linux.go b/vendor/github.com/docker/cli/cli/config/credentials/default_store_linux.go new file mode 100644 index 0000000000..a9012c6d4a --- /dev/null +++ b/vendor/github.com/docker/cli/cli/config/credentials/default_store_linux.go @@ -0,0 +1,13 @@ +package credentials + +import ( + "os/exec" +) + +func defaultCredentialsStore() string { + if _, err := exec.LookPath("pass"); err == nil { + return "pass" + } + + return "secretservice" +} diff --git a/vendor/github.com/docker/cli/cli/config/credentials/default_store_unsupported.go b/vendor/github.com/docker/cli/cli/config/credentials/default_store_unsupported.go new file mode 100644 index 0000000000..3028168ac2 --- /dev/null +++ b/vendor/github.com/docker/cli/cli/config/credentials/default_store_unsupported.go @@ -0,0 +1,7 @@ +// +build !windows,!darwin,!linux + +package credentials + +func defaultCredentialsStore() string { + return "" +} diff --git a/vendor/github.com/docker/cli/cli/config/credentials/default_store_windows.go b/vendor/github.com/docker/cli/cli/config/credentials/default_store_windows.go new file mode 100644 index 0000000000..bb799ca61b --- /dev/null +++ b/vendor/github.com/docker/cli/cli/config/credentials/default_store_windows.go @@ -0,0 +1,5 @@ +package credentials + +func defaultCredentialsStore() string { + return "wincred" +} diff --git a/vendor/github.com/docker/cli/cli/config/credentials/file_store.go b/vendor/github.com/docker/cli/cli/config/credentials/file_store.go new file mode 100644 index 0000000000..e509820b73 --- /dev/null +++ b/vendor/github.com/docker/cli/cli/config/credentials/file_store.go @@ -0,0 +1,81 @@ +package credentials + +import ( + "strings" + + "github.com/docker/cli/cli/config/types" +) + +type store interface { + Save() error + GetAuthConfigs() map[string]types.AuthConfig + GetFilename() string +} + +// fileStore implements a credentials store using +// the docker configuration file to keep the credentials in plain text. +type fileStore struct { + file store +} + +// NewFileStore creates a new file credentials store. +func NewFileStore(file store) Store { + return &fileStore{file: file} +} + +// Erase removes the given credentials from the file store. +func (c *fileStore) Erase(serverAddress string) error { + delete(c.file.GetAuthConfigs(), serverAddress) + return c.file.Save() +} + +// Get retrieves credentials for a specific server from the file store. +func (c *fileStore) Get(serverAddress string) (types.AuthConfig, error) { + authConfig, ok := c.file.GetAuthConfigs()[serverAddress] + if !ok { + // Maybe they have a legacy config file, we will iterate the keys converting + // them to the new format and testing + for r, ac := range c.file.GetAuthConfigs() { + if serverAddress == ConvertToHostname(r) { + return ac, nil + } + } + + authConfig = types.AuthConfig{} + } + return authConfig, nil +} + +func (c *fileStore) GetAll() (map[string]types.AuthConfig, error) { + return c.file.GetAuthConfigs(), nil +} + +// Store saves the given credentials in the file store. +func (c *fileStore) Store(authConfig types.AuthConfig) error { + c.file.GetAuthConfigs()[authConfig.ServerAddress] = authConfig + return c.file.Save() +} + +func (c *fileStore) GetFilename() string { + return c.file.GetFilename() +} + +func (c *fileStore) IsFileStore() bool { + return true +} + +// ConvertToHostname converts a registry url which has http|https prepended +// to just an hostname. +// Copied from github.com/docker/docker/registry.ConvertToHostname to reduce dependencies. +func ConvertToHostname(url string) string { + stripped := url + if strings.HasPrefix(url, "http://") { + stripped = strings.TrimPrefix(url, "http://") + } else if strings.HasPrefix(url, "https://") { + stripped = strings.TrimPrefix(url, "https://") + } + + nameParts := strings.SplitN(stripped, "/", 2) + + return nameParts[0] +} diff --git a/vendor/github.com/docker/cli/cli/config/credentials/native_store.go b/vendor/github.com/docker/cli/cli/config/credentials/native_store.go new file mode 100644 index 0000000000..afe542cc3c --- /dev/null +++ b/vendor/github.com/docker/cli/cli/config/credentials/native_store.go @@ -0,0 +1,143 @@ +package credentials + +import ( + "github.com/docker/cli/cli/config/types" + "github.com/docker/docker-credential-helpers/client" + "github.com/docker/docker-credential-helpers/credentials" +) + +const ( + remoteCredentialsPrefix = "docker-credential-" + tokenUsername = "" +) + +// nativeStore implements a credentials store +// using native keychain to keep credentials secure. +// It piggybacks into a file store to keep users' emails. +type nativeStore struct { + programFunc client.ProgramFunc + fileStore Store +} + +// NewNativeStore creates a new native store that +// uses a remote helper program to manage credentials. +func NewNativeStore(file store, helperSuffix string) Store { + name := remoteCredentialsPrefix + helperSuffix + return &nativeStore{ + programFunc: client.NewShellProgramFunc(name), + fileStore: NewFileStore(file), + } +} + +// Erase removes the given credentials from the native store. +func (c *nativeStore) Erase(serverAddress string) error { + if err := client.Erase(c.programFunc, serverAddress); err != nil { + return err + } + + // Fallback to plain text store to remove email + return c.fileStore.Erase(serverAddress) +} + +// Get retrieves credentials for a specific server from the native store. +func (c *nativeStore) Get(serverAddress string) (types.AuthConfig, error) { + // load user email if it exist or an empty auth config. + auth, _ := c.fileStore.Get(serverAddress) + + creds, err := c.getCredentialsFromStore(serverAddress) + if err != nil { + return auth, err + } + auth.Username = creds.Username + auth.IdentityToken = creds.IdentityToken + auth.Password = creds.Password + + return auth, nil +} + +// GetAll retrieves all the credentials from the native store. +func (c *nativeStore) GetAll() (map[string]types.AuthConfig, error) { + auths, err := c.listCredentialsInStore() + if err != nil { + return nil, err + } + + // Emails are only stored in the file store. + // This call can be safely eliminated when emails are removed. + fileConfigs, _ := c.fileStore.GetAll() + + authConfigs := make(map[string]types.AuthConfig) + for registry := range auths { + creds, err := c.getCredentialsFromStore(registry) + if err != nil { + return nil, err + } + ac := fileConfigs[registry] // might contain Email + ac.Username = creds.Username + ac.Password = creds.Password + ac.IdentityToken = creds.IdentityToken + authConfigs[registry] = ac + } + + return authConfigs, nil +} + +// Store saves the given credentials in the file store. +func (c *nativeStore) Store(authConfig types.AuthConfig) error { + if err := c.storeCredentialsInStore(authConfig); err != nil { + return err + } + authConfig.Username = "" + authConfig.Password = "" + authConfig.IdentityToken = "" + + // Fallback to old credential in plain text to save only the email + return c.fileStore.Store(authConfig) +} + +// storeCredentialsInStore executes the command to store the credentials in the native store. +func (c *nativeStore) storeCredentialsInStore(config types.AuthConfig) error { + creds := &credentials.Credentials{ + ServerURL: config.ServerAddress, + Username: config.Username, + Secret: config.Password, + } + + if config.IdentityToken != "" { + creds.Username = tokenUsername + creds.Secret = config.IdentityToken + } + + return client.Store(c.programFunc, creds) +} + +// getCredentialsFromStore executes the command to get the credentials from the native store. +func (c *nativeStore) getCredentialsFromStore(serverAddress string) (types.AuthConfig, error) { + var ret types.AuthConfig + + creds, err := client.Get(c.programFunc, serverAddress) + if err != nil { + if credentials.IsErrCredentialsNotFound(err) { + // do not return an error if the credentials are not + // in the keychain. Let docker ask for new credentials. + return ret, nil + } + return ret, err + } + + if creds.Username == tokenUsername { + ret.IdentityToken = creds.Secret + } else { + ret.Password = creds.Secret + ret.Username = creds.Username + } + + ret.ServerAddress = serverAddress + return ret, nil +} + +// listCredentialsInStore returns a listing of stored credentials as a map of +// URL -> username. +func (c *nativeStore) listCredentialsInStore() (map[string]string, error) { + return client.List(c.programFunc) +} diff --git a/vendor/github.com/docker/cli/cli/config/types/authconfig.go b/vendor/github.com/docker/cli/cli/config/types/authconfig.go new file mode 100644 index 0000000000..056af6b842 --- /dev/null +++ b/vendor/github.com/docker/cli/cli/config/types/authconfig.go @@ -0,0 +1,22 @@ +package types + +// AuthConfig contains authorization information for connecting to a Registry +type AuthConfig struct { + Username string `json:"username,omitempty"` + Password string `json:"password,omitempty"` + Auth string `json:"auth,omitempty"` + + // Email is an optional value associated with the username. + // This field is deprecated and will be removed in a later + // version of docker. + Email string `json:"email,omitempty"` + + ServerAddress string `json:"serveraddress,omitempty"` + + // IdentityToken is used to authenticate the user and get + // an access token for the registry. + IdentityToken string `json:"identitytoken,omitempty"` + + // RegistryToken is a bearer token to be sent to a registry + RegistryToken string `json:"registrytoken,omitempty"` +} diff --git a/vendor/github.com/docker/distribution/.gometalinter.json b/vendor/github.com/docker/distribution/.gometalinter.json new file mode 100644 index 0000000000..9df5b14bcb --- /dev/null +++ b/vendor/github.com/docker/distribution/.gometalinter.json @@ -0,0 +1,16 @@ +{ + "Vendor": true, + "Deadline": "2m", + "Sort": ["linter", "severity", "path", "line"], + "EnableGC": true, + "Enable": [ + "structcheck", + "staticcheck", + "unconvert", + + "gofmt", + "goimports", + "golint", + "vet" + ] +} diff --git a/vendor/github.com/docker/distribution/.mailmap b/vendor/github.com/docker/distribution/.mailmap index d991060198..0f48321d49 100644 --- a/vendor/github.com/docker/distribution/.mailmap +++ b/vendor/github.com/docker/distribution/.mailmap @@ -1,9 +1,9 @@ -Stephen J Day Stephen Day -Stephen J Day Stephen Day -Olivier Gambier Olivier Gambier -Brian Bland Brian Bland +Stephen J Day Stephen Day +Stephen J Day Stephen Day +Olivier Gambier Olivier Gambier +Brian Bland Brian Bland Brian Bland Brian Bland -Josh Hawn Josh Hawn +Josh Hawn Josh Hawn Richard Scothern Richard Richard Scothern Richard Scothern Andrew Meredith Andrew Meredith @@ -16,3 +16,17 @@ davidli davidli Omer Cohen Omer Cohen Eric Yang Eric Yang Nikita Tarasov Nikita +Yu Wang yuwaMSFT2 +Yu Wang Yu Wang (UC) +Olivier Gambier dmp +Olivier Gambier Olivier +Olivier Gambier Olivier +Elsan Li 李楠 elsanli(李楠) +Rui Cao ruicao +Gwendolynne Barr gbarr01 +Haibing Zhou 周海兵 zhouhaibing089 +Feng Honglin tifayuki +Helen Xie Helen-xie +Mike Brown Mike Brown +Manish Tomar Manish Tomar +Sakeven Jiang sakeven diff --git a/vendor/github.com/docker/distribution/.travis.yml b/vendor/github.com/docker/distribution/.travis.yml new file mode 100644 index 0000000000..44ced60451 --- /dev/null +++ b/vendor/github.com/docker/distribution/.travis.yml @@ -0,0 +1,51 @@ +dist: trusty +sudo: required +# setup travis so that we can run containers for integration tests +services: + - docker + +language: go + +go: + - "1.11.x" + +go_import_path: github.com/docker/distribution + +addons: + apt: + packages: + - python-minimal + + +env: + - TRAVIS_GOOS=linux DOCKER_BUILDTAGS="include_oss include_gcs" TRAVIS_CGO_ENABLED=1 + +before_install: + - uname -r + - sudo apt-get -q update + +install: + - go get -u github.com/vbatts/git-validation + # TODO: Add enforcement of license + # - go get -u github.com/kunalkushwaha/ltag + - cd $TRAVIS_BUILD_DIR + +script: + - export GOOS=$TRAVIS_GOOS + - export CGO_ENABLED=$TRAVIS_CGO_ENABLED + - DCO_VERBOSITY=-q script/validate/dco + - GOOS=linux script/setup/install-dev-tools + - script/validate/vendor + - go build -i . + - make check + - make build + - make binaries + # Currently takes too long + #- if [ "$GOOS" = "linux" ]; then make test-race ; fi + - if [ "$GOOS" = "linux" ]; then make coverage ; fi + +after_success: + - bash <(curl -s https://codecov.io/bash) -F linux + +before_deploy: + # Run tests with storage driver configurations diff --git a/vendor/github.com/docker/distribution/AUTHORS b/vendor/github.com/docker/distribution/AUTHORS deleted file mode 100644 index 252ff8aa2a..0000000000 --- a/vendor/github.com/docker/distribution/AUTHORS +++ /dev/null @@ -1,182 +0,0 @@ -a-palchikov -Aaron Lehmann -Aaron Schlesinger -Aaron Vinson -Adam Duke -Adam Enger -Adrian Mouat -Ahmet Alp Balkan -Alex Chan -Alex Elman -Alexey Gladkov -allencloud -amitshukla -Amy Lindburg -Andrew Hsu -Andrew Meredith -Andrew T Nguyen -Andrey Kostov -Andy Goldstein -Anis Elleuch -Anton Tiurin -Antonio Mercado -Antonio Murdaca -Anusha Ragunathan -Arien Holthuizen -Arnaud Porterie -Arthur Baars -Asuka Suzuki -Avi Miller -Ayose Cazorla -BadZen -Ben Bodenmiller -Ben Firshman -bin liu -Brian Bland -burnettk -Carson A -Cezar Sa Espinola -Charles Smith -Chris Dillon -cuiwei13 -cyli -Daisuke Fujita -Daniel Huhn -Darren Shepherd -Dave Trombley -Dave Tucker -David Lawrence -David Verhasselt -David Xia -davidli -Dejan Golja -Derek McGowan -Diogo Mónica -DJ Enriquez -Donald Huang -Doug Davis -Edgar Lee -Eric Yang -Fabio Berchtold -Fabio Huser -farmerworking -Felix Yan -Florentin Raud -Frank Chen -Frederick F. Kautz IV -gabriell nascimento -Gleb Schukin -harche -Henri Gomez -Hu Keping -Hua Wang -HuKeping -Ian Babrou -igayoso -Jack Griffin -James Findley -Jason Freidman -Jason Heiss -Jeff Nickoloff -Jess Frazelle -Jessie Frazelle -jhaohai -Jianqing Wang -Jihoon Chung -Joao Fernandes -John Mulhausen -John Starks -Jon Johnson -Jon Poler -Jonathan Boulle -Jordan Liggitt -Josh Chorlton -Josh Hawn -Julien Fernandez -Ke Xu -Keerthan Mala -Kelsey Hightower -Kenneth Lim -Kenny Leung -Li Yi -Liu Hua -liuchang0812 -Lloyd Ramey -Louis Kottmann -Luke Carpenter -Marcus Martins -Mary Anthony -Matt Bentley -Matt Duch -Matt Moore -Matt Robenolt -Matthew Green -Michael Prokop -Michal Minar -Michal Minář -Mike Brown -Miquel Sabaté -Misty Stanley-Jones -Misty Stanley-Jones -Morgan Bauer -moxiegirl -Nathan Sullivan -nevermosby -Nghia Tran -Nikita Tarasov -Noah Treuhaft -Nuutti Kotivuori -Oilbeater -Olivier Gambier -Olivier Jacques -Omer Cohen -Patrick Devine -Phil Estes -Philip Misiowiec -Pierre-Yves Ritschard -Qiao Anran -Randy Barlow -Richard Scothern -Rodolfo Carvalho -Rusty Conover -Sean Boran -Sebastiaan van Stijn -Sebastien Coavoux -Serge Dubrouski -Sharif Nassar -Shawn Falkner-Horine -Shreyas Karnik -Simon Thulbourn -spacexnice -Spencer Rinehart -Stan Hu -Stefan Majewsky -Stefan Weil -Stephen J Day -Sungho Moon -Sven Dowideit -Sylvain Baubeau -Ted Reed -tgic -Thomas Sjögren -Tianon Gravi -Tibor Vass -Tonis Tiigi -Tony Holdstock-Brown -Trevor Pounds -Troels Thomsen -Victor Vieux -Victoria Bialas -Vincent Batts -Vincent Demeester -Vincent Giersch -W. Trevor King -weiyuan.yl -xg.song -xiekeyang -Yann ROBERT -yaoyao.xyy -yuexiao-wang -yuzou -zhouhaibing089 -姜继忠 diff --git a/vendor/github.com/docker/distribution/CHANGELOG.md b/vendor/github.com/docker/distribution/CHANGELOG.md deleted file mode 100644 index e7b16b3c25..0000000000 --- a/vendor/github.com/docker/distribution/CHANGELOG.md +++ /dev/null @@ -1,108 +0,0 @@ -# Changelog - -## 2.6.0 (2017-01-18) - -#### Storage -- S3: fixed bug in delete due to read-after-write inconsistency -- S3: allow EC2 IAM roles to be used when authorizing region endpoints -- S3: add Object ACL Support -- S3: fix delete method's notion of subpaths -- S3: use multipart upload API in `Move` method for performance -- S3: add v2 signature signing for legacy S3 clones -- Swift: add simple heuristic to detect incomplete DLOs during read ops -- Swift: support different user and tenant domains -- Swift: bulk deletes in chunks -- Aliyun OSS: fix delete method's notion of subpaths -- Aliyun OSS: optimize data copy after upload finishes -- Azure: close leaking response body -- Fix storage drivers dropping non-EOF errors when listing repositories -- Compare path properly when listing repositories in catalog -- Add a foreign layer URL host whitelist -- Improve catalog enumerate runtime - -#### Registry -- Export `storage.CreateOptions` in top-level package -- Enable notifications to endpoints that use self-signed certificates -- Properly validate multi-URL foreign layers -- Add control over validation of URLs in pushed manifests -- Proxy mode: fix socket leak when pull is cancelled -- Tag service: properly handle error responses on HEAD request -- Support for custom authentication URL in proxying registry -- Add configuration option to disable access logging -- Add notification filtering by target media type -- Manifest: `References()` returns all children -- Honor `X-Forwarded-Port` and Forwarded headers -- Reference: Preserve tag and digest in With* functions -- Add policy configuration for enforcing repository classes - -#### Client -- Changes the client Tags `All()` method to follow links -- Allow registry clients to connect via HTTP2 -- Better handling of OAuth errors in client - -#### Spec -- Manifest: clarify relationship between urls and foreign layers -- Authorization: add support for repository classes - -#### Manifest -- Override media type returned from `Stat()` for existing manifests -- Add plugin mediatype to distribution manifest - -#### Docs -- Document `TOOMANYREQUESTS` error code -- Document required Let's Encrypt port -- Improve documentation around implementation of OAuth2 -- Improve documentation for configuration - -#### Auth -- Add support for registry type in scope -- Add support for using v2 ping challenges for v1 -- Add leeway to JWT `nbf` and `exp` checking -- htpasswd: dynamically parse htpasswd file -- Fix missing auth headers with PATCH HTTP request when pushing to default port - -#### Dockerfile -- Update to go1.7 -- Reorder Dockerfile steps for better layer caching - -#### Notes - -Documentation has moved to the documentation repository at -`github.com/docker/docker.github.io/tree/master/registry` - -The registry is go 1.7 compliant, and passes newer, more restrictive `lint` and `vet` ing. - - -## 2.5.0 (2016-06-14) - -#### Storage -- Ensure uploads directory is cleaned after upload is committed -- Add ability to cap concurrent operations in filesystem driver -- S3: Add 'us-gov-west-1' to the valid region list -- Swift: Handle ceph not returning Last-Modified header for HEAD requests -- Add redirect middleware - -#### Registry -- Add support for blobAccessController middleware -- Add support for layers from foreign sources -- Remove signature store -- Add support for Let's Encrypt -- Correct yaml key names in configuration - -#### Client -- Add option to get content digest from manifest get - -#### Spec -- Update the auth spec scope grammar to reflect the fact that hostnames are optionally supported -- Clarify API documentation around catalog fetch behavior - -#### API -- Support returning HTTP 429 (Too Many Requests) - -#### Documentation -- Update auth documentation examples to show "expires in" as int - -#### Docker Image -- Use Alpine Linux as base image - - diff --git a/vendor/github.com/docker/distribution/Dockerfile b/vendor/github.com/docker/distribution/Dockerfile index e0d74684af..612e62ce12 100644 --- a/vendor/github.com/docker/distribution/Dockerfile +++ b/vendor/github.com/docker/distribution/Dockerfile @@ -1,20 +1,22 @@ -FROM golang:1.10-alpine +FROM golang:1.11-alpine AS build ENV DISTRIBUTION_DIR /go/src/github.com/docker/distribution ENV DOCKER_BUILDTAGS include_oss include_gcs ARG GOOS=linux ARG GOARCH=amd64 +ARG GOARM=6 RUN set -ex \ - && apk add --no-cache make git + && apk add --no-cache make git file WORKDIR $DISTRIBUTION_DIR COPY . $DISTRIBUTION_DIR -COPY cmd/registry/config-dev.yml /etc/docker/registry/config.yml - -RUN make PREFIX=/go clean binaries +RUN CGO_ENABLED=0 make PREFIX=/go clean binaries && file ./bin/registry | grep "statically linked" +FROM alpine +COPY cmd/registry/config-dev.yml /etc/docker/registry/config.yml +COPY --from=build /go/src/github.com/docker/distribution/bin/registry /bin/registry VOLUME ["/var/lib/registry"] EXPOSE 5000 ENTRYPOINT ["registry"] diff --git a/vendor/github.com/docker/distribution/MAINTAINERS b/vendor/github.com/docker/distribution/MAINTAINERS index bda400150c..3183620c57 100644 --- a/vendor/github.com/docker/distribution/MAINTAINERS +++ b/vendor/github.com/docker/distribution/MAINTAINERS @@ -6,18 +6,198 @@ # It is structured to be consumable by both humans and programs. # To extract its contents programmatically, use any TOML-compliant parser. # -# This file is compiled into the MAINTAINERS file in docker/opensource. -# + +[Rules] + + [Rules.maintainers] + + title = "What is a maintainer?" + + text = """ +There are different types of maintainers, with different responsibilities, but +all maintainers have 3 things in common: + +1) They share responsibility in the project's success. +2) They have made a long-term, recurring time investment to improve the project. +3) They spend that time doing whatever needs to be done, not necessarily what +is the most interesting or fun. + +Maintainers are often under-appreciated, because their work is harder to appreciate. +It's easy to appreciate a really cool and technically advanced feature. It's harder +to appreciate the absence of bugs, the slow but steady improvement in stability, +or the reliability of a release process. But those things distinguish a good +project from a great one. +""" + + [Rules.reviewer] + + title = "What is a reviewer?" + + text = """ +A reviewer is a core role within the project. +They share in reviewing issues and pull requests and their LGTM count towards the +required LGTM count to merge a code change into the project. + +Reviewers are part of the organization but do not have write access. +Becoming a reviewer is a core aspect in the journey to becoming a maintainer. +""" + + [Rules.adding-maintainers] + + title = "How are maintainers added?" + + text = """ +Maintainers are first and foremost contributors that have shown they are +committed to the long term success of a project. Contributors wanting to become +maintainers are expected to be deeply involved in contributing code, pull +request review, and triage of issues in the project for more than three months. + +Just contributing does not make you a maintainer, it is about building trust +with the current maintainers of the project and being a person that they can +depend on and trust to make decisions in the best interest of the project. + +Periodically, the existing maintainers curate a list of contributors that have +shown regular activity on the project over the prior months. From this list, +maintainer candidates are selected and proposed on the maintainers mailing list. + +After a candidate has been announced on the maintainers mailing list, the +existing maintainers are given five business days to discuss the candidate, +raise objections and cast their vote. Candidates must be approved by at least 66% of the current maintainers by adding their vote on the mailing +list. Only maintainers of the repository that the candidate is proposed for are +allowed to vote. + +If a candidate is approved, a maintainer will contact the candidate to invite +the candidate to open a pull request that adds the contributor to the +MAINTAINERS file. The candidate becomes a maintainer once the pull request is +merged. +""" + + [Rules.stepping-down-policy] + + title = "Stepping down policy" + + text = """ +Life priorities, interests, and passions can change. If you're a maintainer but +feel you must remove yourself from the list, inform other maintainers that you +intend to step down, and if possible, help find someone to pick up your work. +At the very least, ensure your work can be continued where you left off. + +After you've informed other maintainers, create a pull request to remove +yourself from the MAINTAINERS file. +""" + + [Rules.inactive-maintainers] + + title = "Removal of inactive maintainers" + + text = """ +Similar to the procedure for adding new maintainers, existing maintainers can +be removed from the list if they do not show significant activity on the +project. Periodically, the maintainers review the list of maintainers and their +activity over the last three months. + +If a maintainer has shown insufficient activity over this period, a neutral +person will contact the maintainer to ask if they want to continue being +a maintainer. If the maintainer decides to step down as a maintainer, they +open a pull request to be removed from the MAINTAINERS file. + +If the maintainer wants to remain a maintainer, but is unable to perform the +required duties they can be removed with a vote of at least 66% of +the current maintainers. An e-mail is sent to the +mailing list, inviting maintainers of the project to vote. The voting period is +five business days. Issues related to a maintainer's performance should be +discussed with them among the other maintainers so that they are not surprised +by a pull request removing them. +""" + + [Rules.decisions] + + title = "How are decisions made?" + + text = """ +Short answer: EVERYTHING IS A PULL REQUEST. + +distribution is an open-source project with an open design philosophy. This means +that the repository is the source of truth for EVERY aspect of the project, +including its philosophy, design, road map, and APIs. *If it's part of the +project, it's in the repo. If it's in the repo, it's part of the project.* + +As a result, all decisions can be expressed as changes to the repository. An +implementation change is a change to the source code. An API change is a change +to the API specification. A philosophy change is a change to the philosophy +manifesto, and so on. + +All decisions affecting distribution, big and small, follow the same 3 steps: + +* Step 1: Open a pull request. Anyone can do this. + +* Step 2: Discuss the pull request. Anyone can do this. + +* Step 3: Merge or refuse the pull request. Who does this depends on the nature +of the pull request and which areas of the project it affects. +""" + + [Rules.DCO] + + title = "Helping contributors with the DCO" + + text = """ +The [DCO or `Sign your work`]( +https://github.com/moby/moby/blob/master/CONTRIBUTING.md#sign-your-work) +requirement is not intended as a roadblock or speed bump. + +Some distribution contributors are not as familiar with `git`, or have used a web +based editor, and thus asking them to `git commit --amend -s` is not the best +way forward. + +In this case, maintainers can update the commits based on clause (c) of the DCO. +The most trivial way for a contributor to allow the maintainer to do this, is to +add a DCO signature in a pull requests's comment, or a maintainer can simply +note that the change is sufficiently trivial that it does not substantially +change the existing contribution - i.e., a spelling change. + +When you add someone's DCO, please also add your own to keep a log. +""" + + [Rules."no direct push"] + + title = "I'm a maintainer. Should I make pull requests too?" + + text = """ +Yes. Nobody should ever push to master directly. All changes should be +made through a pull request. +""" + + [Rules.tsc] + + title = "Conflict Resolution and technical disputes" + + text = """ +distribution defers to the [Technical Steering Committee](https://github.com/moby/tsc) for escalations and resolution on disputes for technical matters." + """ + + [Rules.meta] + + title = "How is this process changed?" + + text = "Just like everything else: by making a pull request :)" + +# Current project organization [Org] - [Org."Core maintainers"] + + [Org.Maintainers] people = [ - "aaronlehmann", "dmcgowan", "dmp42", - "richardscothern", - "shykes", "stevvooe", ] + [Org.Reviewers] + people = [ + "manishtomar", + "caervs", + "davidswu", + "RobbKistler" + ] [people] @@ -27,10 +207,15 @@ # ADD YOURSELF HERE IN ALPHABETICAL ORDER - [people.aaronlehmann] - Name = "Aaron Lehmann" - Email = "aaron.lehmann@docker.com" - GitHub = "aaronlehmann" + [people.caervs] + Name = "Ryan Abrams" + Email = "rdabrams@gmail.com" + GitHub = "caervs" + + [people.davidswu] + Name = "David Wu" + Email = "dwu7401@gmail.com" + GitHub = "davidswu" [people.dmcgowan] Name = "Derek McGowan" @@ -42,15 +227,15 @@ Email = "olivier@docker.com" GitHub = "dmp42" - [people.richardscothern] - Name = "Richard Scothern" - Email = "richard.scothern@gmail.com" - GitHub = "richardscothern" + [people.manishtomar] + Name = "Manish Tomar" + Email = "manish.tomar@docker.com" + GitHub = "manishtomar" - [people.shykes] - Name = "Solomon Hykes" - Email = "solomon@docker.com" - GitHub = "shykes" + [people.RobbKistler] + Name = "Robb Kistler" + Email = "robb.kistler@docker.com" + GitHub = "RobbKistler" [people.stevvooe] Name = "Stephen Day" diff --git a/vendor/github.com/docker/distribution/Makefile b/vendor/github.com/docker/distribution/Makefile index 7c6f9c7a6c..4635c6eca8 100644 --- a/vendor/github.com/docker/distribution/Makefile +++ b/vendor/github.com/docker/distribution/Makefile @@ -1,9 +1,21 @@ -# Set an output prefix, which is the local directory if not specified -PREFIX?=$(shell pwd) - +# Root directory of the project (absolute path). +ROOTDIR=$(dir $(abspath $(lastword $(MAKEFILE_LIST)))) # Used to populate version variable in main package. VERSION=$(shell git describe --match 'v[0-9]*' --dirty='.m' --always) +REVISION=$(shell git rev-parse HEAD)$(shell if ! git diff --no-ext-diff --quiet --exit-code; then echo .m; fi) + + +PKG=github.com/docker/distribution + +# Project packages. +PACKAGES=$(shell go list -tags "${BUILDTAGS}" ./... | grep -v /vendor/) +INTEGRATION_PACKAGE=${PKG} +COVERAGE_PACKAGES=$(filter-out ${PKG}/registry/storage/driver/%,${PACKAGES}) + + +# Project binaries. +COMMANDS=registry digest registry-api-descriptor-template # Allow turning off function inlining and variable registerization ifeq (${DISABLE_OPTIMIZATION},true) @@ -11,89 +23,80 @@ ifeq (${DISABLE_OPTIMIZATION},true) VERSION:="$(VERSION)-noopt" endif -GO_LDFLAGS=-ldflags "-X `go list ./version`.Version=$(VERSION)" - -.PHONY: all build binaries clean dep-restore dep-save dep-validate fmt lint test test-full vet -.DEFAULT: all -all: fmt vet lint build test binaries - -AUTHORS: .mailmap .git/HEAD - git log --format='%aN <%aE>' | sort -fu > $@ - -# This only needs to be generated by hand when cutting full releases. -version/version.go: - ./version/version.sh > $@ - -# Required for go 1.5 to build -GO15VENDOREXPERIMENT := 1 +WHALE = "+" # Go files +# +TESTFLAGS_RACE= GOFILES=$(shell find . -type f -name '*.go') +GO_TAGS=$(if $(BUILDTAGS),-tags "$(BUILDTAGS)",) +GO_LDFLAGS=-ldflags '-s -w -X $(PKG)/version.Version=$(VERSION) -X $(PKG)/version.Revision=$(REVISION) -X $(PKG)/version.Package=$(PKG) $(EXTRA_LDFLAGS)' -# Package list -PKGS=$(shell go list -tags "${DOCKER_BUILDTAGS}" ./... | grep -v ^github.com/docker/distribution/vendor/) - -# Resolving binary dependencies for specific targets -GOLINT=$(shell which golint || echo '') -VNDR=$(shell which vndr || echo '') - -${PREFIX}/bin/registry: $(GOFILES) - @echo "+ $@" - @go build -tags "${DOCKER_BUILDTAGS}" -o $@ ${GO_LDFLAGS} ${GO_GCFLAGS} ./cmd/registry - -${PREFIX}/bin/digest: $(GOFILES) - @echo "+ $@" - @go build -tags "${DOCKER_BUILDTAGS}" -o $@ ${GO_LDFLAGS} ${GO_GCFLAGS} ./cmd/digest +BINARIES=$(addprefix bin/,$(COMMANDS)) -${PREFIX}/bin/registry-api-descriptor-template: $(GOFILES) - @echo "+ $@" - @go build -o $@ ${GO_LDFLAGS} ${GO_GCFLAGS} ./cmd/registry-api-descriptor-template +# Flags passed to `go test` +TESTFLAGS ?= -v $(TESTFLAGS_RACE) +TESTFLAGS_PARALLEL ?= 8 -docs/spec/api.md: docs/spec/api.md.tmpl ${PREFIX}/bin/registry-api-descriptor-template - ./bin/registry-api-descriptor-template $< > $@ +.PHONY: all build binaries check clean test test-race test-full integration coverage +.DEFAULT: all -vet: - @echo "+ $@" - @go vet -tags "${DOCKER_BUILDTAGS}" $(PKGS) +all: binaries -fmt: - @echo "+ $@" - @test -z "$$(gofmt -s -l . 2>&1 | grep -v ^vendor/ | tee /dev/stderr)" || \ - (echo >&2 "+ please format Go code with 'gofmt -s'" && false) +# This only needs to be generated by hand when cutting full releases. +version/version.go: + @echo "$(WHALE) $@" + ./version/version.sh > $@ -lint: - @echo "+ $@" - $(if $(GOLINT), , \ - $(error Please install golint: `go get -u github.com/golang/lint/golint`)) - @test -z "$$($(GOLINT) ./... 2>&1 | grep -v ^vendor/ | tee /dev/stderr)" +check: ## run all linters (TODO: enable "unused", "varcheck", "ineffassign", "unconvert", "staticheck", "goimports", "structcheck") + @echo "$(WHALE) $@" + gometalinter --config .gometalinter.json ./... + +test: ## run tests, except integration test with test.short + @echo "$(WHALE) $@" + @go test ${GO_TAGS} -test.short ${TESTFLAGS} $(filter-out ${INTEGRATION_PACKAGE},${PACKAGES}) + +test-race: ## run tests, except integration test with test.short and race + @echo "$(WHALE) $@" + @go test ${GO_TAGS} -race -test.short ${TESTFLAGS} $(filter-out ${INTEGRATION_PACKAGE},${PACKAGES}) + +test-full: ## run tests, except integration tests + @echo "$(WHALE) $@" + @go test ${GO_TAGS} ${TESTFLAGS} $(filter-out ${INTEGRATION_PACKAGE},${PACKAGES}) + +integration: ## run integration tests + @echo "$(WHALE) $@" + @go test ${TESTFLAGS} -parallel ${TESTFLAGS_PARALLEL} ${INTEGRATION_PACKAGE} + +coverage: ## generate coverprofiles from the unit tests + @echo "$(WHALE) $@" + @rm -f coverage.txt + @go test ${GO_TAGS} -i ${TESTFLAGS} $(filter-out ${INTEGRATION_PACKAGE},${COVERAGE_PACKAGES}) 2> /dev/null + @( for pkg in $(filter-out ${INTEGRATION_PACKAGE},${COVERAGE_PACKAGES}); do \ + go test ${GO_TAGS} ${TESTFLAGS} \ + -cover \ + -coverprofile=profile.out \ + -covermode=atomic $$pkg || exit; \ + if [ -f profile.out ]; then \ + cat profile.out >> coverage.txt; \ + rm profile.out; \ + fi; \ + done ) + +FORCE: + +# Build a binary from a cmd. +bin/%: cmd/% FORCE + @echo "$(WHALE) $@${BINARY_SUFFIX}" + @go build ${GO_GCFLAGS} ${GO_BUILD_FLAGS} -o $@${BINARY_SUFFIX} ${GO_LDFLAGS} ${GO_TAGS} ./$< + +binaries: $(BINARIES) ## build binaries + @echo "$(WHALE) $@" build: - @echo "+ $@" - @go build -tags "${DOCKER_BUILDTAGS}" -v ${GO_LDFLAGS} $(PKGS) - -test: - @echo "+ $@" - @go test -test.short -tags "${DOCKER_BUILDTAGS}" $(PKGS) - -test-full: - @echo "+ $@" - @go test -tags "${DOCKER_BUILDTAGS}" $(PKGS) - -binaries: ${PREFIX}/bin/registry ${PREFIX}/bin/digest ${PREFIX}/bin/registry-api-descriptor-template - @echo "+ $@" - -clean: - @echo "+ $@" - @rm -rf "${PREFIX}/bin/registry" "${PREFIX}/bin/digest" "${PREFIX}/bin/registry-api-descriptor-template" - -dep-validate: - @echo "+ $@" - $(if $(VNDR), , \ - $(error Please install vndr: go get github.com/lk4d4/vndr)) - @rm -Rf .vendor.bak - @mv vendor .vendor.bak - @$(VNDR) - @test -z "$$(diff -r vendor .vendor.bak 2>&1 | tee /dev/stderr)" || \ - (echo >&2 "+ inconsistent dependencies! what you have in vendor.conf does not match with what you have in vendor" && false) - @rm -Rf vendor - @mv .vendor.bak vendor + @echo "$(WHALE) $@" + @go build ${GO_GCFLAGS} ${GO_BUILD_FLAGS} ${GO_LDFLAGS} ${GO_TAGS} $(PACKAGES) + +clean: ## clean up binaries + @echo "$(WHALE) $@" + @rm -f $(BINARIES) diff --git a/vendor/github.com/docker/distribution/RELEASE-CHECKLIST.md b/vendor/github.com/docker/distribution/RELEASE-CHECKLIST.md deleted file mode 100644 index 73eba5a871..0000000000 --- a/vendor/github.com/docker/distribution/RELEASE-CHECKLIST.md +++ /dev/null @@ -1,44 +0,0 @@ -## Registry Release Checklist - -10. Compile release notes detailing features and since the last release. - - Update the `CHANGELOG.md` file and create a PR to master with the updates. -Once that PR has been approved by maintainers the change may be cherry-picked -to the release branch (new release branches may be forked from this commit). - -20. Update the version file: `https://github.com/docker/distribution/blob/master/version/version.go` - -30. Update the `MAINTAINERS` (if necessary), `AUTHORS` and `.mailmap` files. - -``` -make AUTHORS -``` - -40. Create a signed tag. - - Distribution uses semantic versioning. Tags are of the format -`vx.y.z[-rcn]`. You will need PGP installed and a PGP key which has been added -to your Github account. The comment for the tag should include the release -notes, use previous tags as a guide for formatting consistently. Run -`git tag -s vx.y.z[-rcn]` to create tag and `git -v vx.y.z[-rcn]` to verify tag, -check comment and correct commit hash. - -50. Push the signed tag - -60. Create a new [release](https://github.com/docker/distribution/releases). In the case of a release candidate, tick the `pre-release` checkbox. - -70. Update the registry binary in [distribution library image repo](https://github.com/docker/distribution-library-image) by running the update script and opening a pull request. - -80. Update the official image. Add the new version in the [official images repo](https://github.com/docker-library/official-images) by appending a new version to the `registry/registry` file with the git hash pointed to by the signed tag. Update the major version to point to the latest version and the minor version to point to new patch release if necessary. -e.g. to release `2.3.1` - - `2.3.1 (new)` - - `2.3.0 -> 2.3.0` can be removed - - `2 -> 2.3.1` - - `2.3 -> 2.3.1` - -90. Build a new distribution/registry image on [Docker hub](https://hub.docker.com/u/distribution/dashboard) by adding a new automated build with the new tag and re-building the images. - diff --git a/vendor/github.com/docker/distribution/blobs.go b/vendor/github.com/docker/distribution/blobs.go index 42a437738e..c0e9261be9 100644 --- a/vendor/github.com/docker/distribution/blobs.go +++ b/vendor/github.com/docker/distribution/blobs.go @@ -67,7 +67,7 @@ type Descriptor struct { Size int64 `json:"size,omitempty"` // Digest uniquely identifies the content. A byte stream can be verified - // against against this digest. + // against this digest. Digest digest.Digest `json:"digest,omitempty"` // URLs contains the source URLs of this content. diff --git a/vendor/github.com/docker/distribution/circle.yml b/vendor/github.com/docker/distribution/circle.yml deleted file mode 100644 index 085ef4f73c..0000000000 --- a/vendor/github.com/docker/distribution/circle.yml +++ /dev/null @@ -1,94 +0,0 @@ -# Pony-up! -machine: - pre: - # Install gvm - - bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/1.0.22/binscripts/gvm-installer) - # Install codecov for coverage - - pip install --user codecov - - post: - # go - - gvm install go1.10 --prefer-binary --name=stable - - environment: - # Convenient shortcuts to "common" locations - CHECKOUT: /home/ubuntu/$CIRCLE_PROJECT_REPONAME - BASE_DIR: src/github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME - # Trick circle brainflat "no absolute path" behavior - BASE_STABLE: ../../../$HOME/.gvm/pkgsets/stable/global/$BASE_DIR - DOCKER_BUILDTAGS: "include_oss include_gcs" - # Workaround Circle parsing dumb bugs and/or YAML wonkyness - CIRCLE_PAIN: "mode: set" - - hosts: - # Not used yet - fancy: 127.0.0.1 - -dependencies: - pre: - # Copy the code to the gopath of all go versions - - > - gvm use stable && - mkdir -p "$(dirname $BASE_STABLE)" && - cp -R "$CHECKOUT" "$BASE_STABLE" - - override: - # Install dependencies for every copied clone/go version - - gvm use stable && go get github.com/lk4d4/vndr: - pwd: $BASE_STABLE - - post: - # For the stable go version, additionally install linting tools - - > - gvm use stable && - go get github.com/axw/gocov/gocov github.com/golang/lint/golint - -test: - pre: - # Output the go versions we are going to test - # - gvm use old && go version - - gvm use stable && go version - - # Ensure validation of dependencies - - git fetch origin: - pwd: $BASE_STABLE - - gvm use stable && if test -n "`git diff --stat=1000 origin/master | grep -E \"^[[:space:]]*vendor\"`"; then make dep-validate; fi: - pwd: $BASE_STABLE - - # First thing: build everything. This will catch compile errors, and it's - # also necessary for go vet to work properly (see #807). - - gvm use stable && go install $(go list ./... | grep -v "/vendor/"): - pwd: $BASE_STABLE - - # FMT - - gvm use stable && make fmt: - pwd: $BASE_STABLE - - # VET - - gvm use stable && make vet: - pwd: $BASE_STABLE - - # LINT - - gvm use stable && make lint: - pwd: $BASE_STABLE - - override: - # Test stable, and report - - gvm use stable; export ROOT_PACKAGE=$(go list .); go list -tags "$DOCKER_BUILDTAGS" ./... | grep -v "/vendor/" | xargs -L 1 -I{} bash -c 'export PACKAGE={}; go test -tags "$DOCKER_BUILDTAGS" -test.short -coverprofile=$GOPATH/src/$PACKAGE/coverage.out -coverpkg=$(./coverpkg.sh $PACKAGE $ROOT_PACKAGE) $PACKAGE': - timeout: 1000 - pwd: $BASE_STABLE - - # Test stable with race - - gvm use stable; export ROOT_PACKAGE=$(go list .); go list -tags "$DOCKER_BUILDTAGS" ./... | grep -v "/vendor/" | grep -v "registry/handlers" | grep -v "registry/storage/driver" | xargs -L 1 -I{} bash -c 'export PACKAGE={}; go test -race -tags "$DOCKER_BUILDTAGS" -test.short $PACKAGE': - timeout: 1000 - pwd: $BASE_STABLE - post: - # Report to codecov - - bash <(curl -s https://codecov.io/bash): - pwd: $BASE_STABLE - - ## Notes - # Do we want these as well? - # - go get code.google.com/p/go.tools/cmd/goimports - # - test -z "$(goimports -l -w ./... | tee /dev/stderr)" - # http://labix.org/gocheck diff --git a/vendor/github.com/docker/distribution/coverpkg.sh b/vendor/github.com/docker/distribution/coverpkg.sh deleted file mode 100644 index 25d419ae82..0000000000 --- a/vendor/github.com/docker/distribution/coverpkg.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env bash -# Given a subpackage and the containing package, figures out which packages -# need to be passed to `go test -coverpkg`: this includes all of the -# subpackage's dependencies within the containing package, as well as the -# subpackage itself. -DEPENDENCIES="$(go list -f $'{{range $f := .Deps}}{{$f}}\n{{end}}' ${1} | grep ${2} | grep -v github.com/docker/distribution/vendor)" -echo "${1} ${DEPENDENCIES}" | xargs echo -n | tr ' ' ',' diff --git a/vendor/github.com/docker/distribution/errors.go b/vendor/github.com/docker/distribution/errors.go index 020d33258b..8e0b788d6c 100644 --- a/vendor/github.com/docker/distribution/errors.go +++ b/vendor/github.com/docker/distribution/errors.go @@ -20,6 +20,10 @@ var ErrManifestNotModified = errors.New("manifest not modified") // performed var ErrUnsupported = errors.New("operation unsupported") +// ErrSchemaV1Unsupported is returned when a client tries to upload a schema v1 +// manifest but the registry is configured to reject it +var ErrSchemaV1Unsupported = errors.New("manifest schema v1 unsupported") + // ErrTagUnknown is returned if the given tag is not known by the tag service type ErrTagUnknown struct { Tag string diff --git a/vendor/github.com/docker/distribution/manifests.go b/vendor/github.com/docker/distribution/manifests.go index 1816baea1d..8f84a220a9 100644 --- a/vendor/github.com/docker/distribution/manifests.go +++ b/vendor/github.com/docker/distribution/manifests.go @@ -87,7 +87,7 @@ func ManifestMediaTypes() (mediaTypes []string) { // UnmarshalFunc implements manifest unmarshalling a given MediaType type UnmarshalFunc func([]byte) (Manifest, Descriptor, error) -var mappings = make(map[string]UnmarshalFunc, 0) +var mappings = make(map[string]UnmarshalFunc) // UnmarshalManifest looks up manifest unmarshal functions based on // MediaType diff --git a/vendor/github.com/docker/distribution/reference/normalize.go b/vendor/github.com/docker/distribution/reference/normalize.go index 2d71fc5e9f..b3dfb7a6d7 100644 --- a/vendor/github.com/docker/distribution/reference/normalize.go +++ b/vendor/github.com/docker/distribution/reference/normalize.go @@ -56,6 +56,35 @@ func ParseNormalizedNamed(s string) (Named, error) { return named, nil } +// ParseDockerRef normalizes the image reference following the docker convention. This is added +// mainly for backward compatibility. +// The reference returned can only be either tagged or digested. For reference contains both tag +// and digest, the function returns digested reference, e.g. docker.io/library/busybox:latest@ +// sha256:7cc4b5aefd1d0cadf8d97d4350462ba51c694ebca145b08d7d41b41acc8db5aa will be returned as +// docker.io/library/busybox@sha256:7cc4b5aefd1d0cadf8d97d4350462ba51c694ebca145b08d7d41b41acc8db5aa. +func ParseDockerRef(ref string) (Named, error) { + named, err := ParseNormalizedNamed(ref) + if err != nil { + return nil, err + } + if _, ok := named.(NamedTagged); ok { + if canonical, ok := named.(Canonical); ok { + // The reference is both tagged and digested, only + // return digested. + newNamed, err := WithName(canonical.Name()) + if err != nil { + return nil, err + } + newCanonical, err := WithDigest(newNamed, canonical.Digest()) + if err != nil { + return nil, err + } + return newCanonical, nil + } + } + return TagNameOnly(named), nil +} + // splitDockerDomain splits a repository name to domain and remotename string. // If no valid domain is found, the default domain is used. Repository name // needs to be already validated before. diff --git a/vendor/github.com/docker/distribution/reference/reference.go b/vendor/github.com/docker/distribution/reference/reference.go index 2f66cca87a..8c0c23b2fe 100644 --- a/vendor/github.com/docker/distribution/reference/reference.go +++ b/vendor/github.com/docker/distribution/reference/reference.go @@ -205,7 +205,7 @@ func Parse(s string) (Reference, error) { var repo repository nameMatch := anchoredNameRegexp.FindStringSubmatch(matches[1]) - if nameMatch != nil && len(nameMatch) == 3 { + if len(nameMatch) == 3 { repo.domain = nameMatch[1] repo.path = nameMatch[2] } else { diff --git a/vendor/github.com/docker/distribution/registry.go b/vendor/github.com/docker/distribution/registry.go index a3a80ab884..6c32109894 100644 --- a/vendor/github.com/docker/distribution/registry.go +++ b/vendor/github.com/docker/distribution/registry.go @@ -54,6 +54,11 @@ type RepositoryEnumerator interface { Enumerate(ctx context.Context, ingester func(string) error) error } +// RepositoryRemover removes given repository +type RepositoryRemover interface { + Remove(ctx context.Context, name reference.Named) error +} + // ManifestServiceOption is a function argument for Manifest Service methods type ManifestServiceOption interface { Apply(ManifestService) error diff --git a/vendor/github.com/docker/distribution/registry/api/errcode/errors.go b/vendor/github.com/docker/distribution/registry/api/errcode/errors.go new file mode 100644 index 0000000000..4c35b879af --- /dev/null +++ b/vendor/github.com/docker/distribution/registry/api/errcode/errors.go @@ -0,0 +1,267 @@ +package errcode + +import ( + "encoding/json" + "fmt" + "strings" +) + +// ErrorCoder is the base interface for ErrorCode and Error allowing +// users of each to just call ErrorCode to get the real ID of each +type ErrorCoder interface { + ErrorCode() ErrorCode +} + +// ErrorCode represents the error type. The errors are serialized via strings +// and the integer format may change and should *never* be exported. +type ErrorCode int + +var _ error = ErrorCode(0) + +// ErrorCode just returns itself +func (ec ErrorCode) ErrorCode() ErrorCode { + return ec +} + +// Error returns the ID/Value +func (ec ErrorCode) Error() string { + // NOTE(stevvooe): Cannot use message here since it may have unpopulated args. + return strings.ToLower(strings.Replace(ec.String(), "_", " ", -1)) +} + +// Descriptor returns the descriptor for the error code. +func (ec ErrorCode) Descriptor() ErrorDescriptor { + d, ok := errorCodeToDescriptors[ec] + + if !ok { + return ErrorCodeUnknown.Descriptor() + } + + return d +} + +// String returns the canonical identifier for this error code. +func (ec ErrorCode) String() string { + return ec.Descriptor().Value +} + +// Message returned the human-readable error message for this error code. +func (ec ErrorCode) Message() string { + return ec.Descriptor().Message +} + +// MarshalText encodes the receiver into UTF-8-encoded text and returns the +// result. +func (ec ErrorCode) MarshalText() (text []byte, err error) { + return []byte(ec.String()), nil +} + +// UnmarshalText decodes the form generated by MarshalText. +func (ec *ErrorCode) UnmarshalText(text []byte) error { + desc, ok := idToDescriptors[string(text)] + + if !ok { + desc = ErrorCodeUnknown.Descriptor() + } + + *ec = desc.Code + + return nil +} + +// WithMessage creates a new Error struct based on the passed-in info and +// overrides the Message property. +func (ec ErrorCode) WithMessage(message string) Error { + return Error{ + Code: ec, + Message: message, + } +} + +// WithDetail creates a new Error struct based on the passed-in info and +// set the Detail property appropriately +func (ec ErrorCode) WithDetail(detail interface{}) Error { + return Error{ + Code: ec, + Message: ec.Message(), + }.WithDetail(detail) +} + +// WithArgs creates a new Error struct and sets the Args slice +func (ec ErrorCode) WithArgs(args ...interface{}) Error { + return Error{ + Code: ec, + Message: ec.Message(), + }.WithArgs(args...) +} + +// Error provides a wrapper around ErrorCode with extra Details provided. +type Error struct { + Code ErrorCode `json:"code"` + Message string `json:"message"` + Detail interface{} `json:"detail,omitempty"` + + // TODO(duglin): See if we need an "args" property so we can do the + // variable substitution right before showing the message to the user +} + +var _ error = Error{} + +// ErrorCode returns the ID/Value of this Error +func (e Error) ErrorCode() ErrorCode { + return e.Code +} + +// Error returns a human readable representation of the error. +func (e Error) Error() string { + return fmt.Sprintf("%s: %s", e.Code.Error(), e.Message) +} + +// WithDetail will return a new Error, based on the current one, but with +// some Detail info added +func (e Error) WithDetail(detail interface{}) Error { + return Error{ + Code: e.Code, + Message: e.Message, + Detail: detail, + } +} + +// WithArgs uses the passed-in list of interface{} as the substitution +// variables in the Error's Message string, but returns a new Error +func (e Error) WithArgs(args ...interface{}) Error { + return Error{ + Code: e.Code, + Message: fmt.Sprintf(e.Code.Message(), args...), + Detail: e.Detail, + } +} + +// ErrorDescriptor provides relevant information about a given error code. +type ErrorDescriptor struct { + // Code is the error code that this descriptor describes. + Code ErrorCode + + // Value provides a unique, string key, often captilized with + // underscores, to identify the error code. This value is used as the + // keyed value when serializing api errors. + Value string + + // Message is a short, human readable decription of the error condition + // included in API responses. + Message string + + // Description provides a complete account of the errors purpose, suitable + // for use in documentation. + Description string + + // HTTPStatusCode provides the http status code that is associated with + // this error condition. + HTTPStatusCode int +} + +// ParseErrorCode returns the value by the string error code. +// `ErrorCodeUnknown` will be returned if the error is not known. +func ParseErrorCode(value string) ErrorCode { + ed, ok := idToDescriptors[value] + if ok { + return ed.Code + } + + return ErrorCodeUnknown +} + +// Errors provides the envelope for multiple errors and a few sugar methods +// for use within the application. +type Errors []error + +var _ error = Errors{} + +func (errs Errors) Error() string { + switch len(errs) { + case 0: + return "" + case 1: + return errs[0].Error() + default: + msg := "errors:\n" + for _, err := range errs { + msg += err.Error() + "\n" + } + return msg + } +} + +// Len returns the current number of errors. +func (errs Errors) Len() int { + return len(errs) +} + +// MarshalJSON converts slice of error, ErrorCode or Error into a +// slice of Error - then serializes +func (errs Errors) MarshalJSON() ([]byte, error) { + var tmpErrs struct { + Errors []Error `json:"errors,omitempty"` + } + + for _, daErr := range errs { + var err Error + + switch daErr := daErr.(type) { + case ErrorCode: + err = daErr.WithDetail(nil) + case Error: + err = daErr + default: + err = ErrorCodeUnknown.WithDetail(daErr) + + } + + // If the Error struct was setup and they forgot to set the + // Message field (meaning its "") then grab it from the ErrCode + msg := err.Message + if msg == "" { + msg = err.Code.Message() + } + + tmpErrs.Errors = append(tmpErrs.Errors, Error{ + Code: err.Code, + Message: msg, + Detail: err.Detail, + }) + } + + return json.Marshal(tmpErrs) +} + +// UnmarshalJSON deserializes []Error and then converts it into slice of +// Error or ErrorCode +func (errs *Errors) UnmarshalJSON(data []byte) error { + var tmpErrs struct { + Errors []Error + } + + if err := json.Unmarshal(data, &tmpErrs); err != nil { + return err + } + + var newErrs Errors + for _, daErr := range tmpErrs.Errors { + // If Message is empty or exactly matches the Code's message string + // then just use the Code, no need for a full Error struct + if daErr.Detail == nil && (daErr.Message == "" || daErr.Message == daErr.Code.Message()) { + // Error's w/o details get converted to ErrorCode + newErrs = append(newErrs, daErr.Code) + } else { + // Error's w/ details are untouched + newErrs = append(newErrs, Error{ + Code: daErr.Code, + Message: daErr.Message, + Detail: daErr.Detail, + }) + } + } + + *errs = newErrs + return nil +} diff --git a/vendor/github.com/docker/distribution/registry/api/errcode/handler.go b/vendor/github.com/docker/distribution/registry/api/errcode/handler.go new file mode 100644 index 0000000000..d77e70473e --- /dev/null +++ b/vendor/github.com/docker/distribution/registry/api/errcode/handler.go @@ -0,0 +1,40 @@ +package errcode + +import ( + "encoding/json" + "net/http" +) + +// ServeJSON attempts to serve the errcode in a JSON envelope. It marshals err +// and sets the content-type header to 'application/json'. It will handle +// ErrorCoder and Errors, and if necessary will create an envelope. +func ServeJSON(w http.ResponseWriter, err error) error { + w.Header().Set("Content-Type", "application/json; charset=utf-8") + var sc int + + switch errs := err.(type) { + case Errors: + if len(errs) < 1 { + break + } + + if err, ok := errs[0].(ErrorCoder); ok { + sc = err.ErrorCode().Descriptor().HTTPStatusCode + } + case ErrorCoder: + sc = errs.ErrorCode().Descriptor().HTTPStatusCode + err = Errors{err} // create an envelope. + default: + // We just have an unhandled error type, so just place in an envelope + // and move along. + err = Errors{err} + } + + if sc == 0 { + sc = http.StatusInternalServerError + } + + w.WriteHeader(sc) + + return json.NewEncoder(w).Encode(err) +} diff --git a/vendor/github.com/docker/distribution/registry/api/errcode/register.go b/vendor/github.com/docker/distribution/registry/api/errcode/register.go new file mode 100644 index 0000000000..d1e8826c6d --- /dev/null +++ b/vendor/github.com/docker/distribution/registry/api/errcode/register.go @@ -0,0 +1,138 @@ +package errcode + +import ( + "fmt" + "net/http" + "sort" + "sync" +) + +var ( + errorCodeToDescriptors = map[ErrorCode]ErrorDescriptor{} + idToDescriptors = map[string]ErrorDescriptor{} + groupToDescriptors = map[string][]ErrorDescriptor{} +) + +var ( + // ErrorCodeUnknown is a generic error that can be used as a last + // resort if there is no situation-specific error message that can be used + ErrorCodeUnknown = Register("errcode", ErrorDescriptor{ + Value: "UNKNOWN", + Message: "unknown error", + Description: `Generic error returned when the error does not have an + API classification.`, + HTTPStatusCode: http.StatusInternalServerError, + }) + + // ErrorCodeUnsupported is returned when an operation is not supported. + ErrorCodeUnsupported = Register("errcode", ErrorDescriptor{ + Value: "UNSUPPORTED", + Message: "The operation is unsupported.", + Description: `The operation was unsupported due to a missing + implementation or invalid set of parameters.`, + HTTPStatusCode: http.StatusMethodNotAllowed, + }) + + // ErrorCodeUnauthorized is returned if a request requires + // authentication. + ErrorCodeUnauthorized = Register("errcode", ErrorDescriptor{ + Value: "UNAUTHORIZED", + Message: "authentication required", + Description: `The access controller was unable to authenticate + the client. Often this will be accompanied by a + Www-Authenticate HTTP response header indicating how to + authenticate.`, + HTTPStatusCode: http.StatusUnauthorized, + }) + + // ErrorCodeDenied is returned if a client does not have sufficient + // permission to perform an action. + ErrorCodeDenied = Register("errcode", ErrorDescriptor{ + Value: "DENIED", + Message: "requested access to the resource is denied", + Description: `The access controller denied access for the + operation on a resource.`, + HTTPStatusCode: http.StatusForbidden, + }) + + // ErrorCodeUnavailable provides a common error to report unavailability + // of a service or endpoint. + ErrorCodeUnavailable = Register("errcode", ErrorDescriptor{ + Value: "UNAVAILABLE", + Message: "service unavailable", + Description: "Returned when a service is not available", + HTTPStatusCode: http.StatusServiceUnavailable, + }) + + // ErrorCodeTooManyRequests is returned if a client attempts too many + // times to contact a service endpoint. + ErrorCodeTooManyRequests = Register("errcode", ErrorDescriptor{ + Value: "TOOMANYREQUESTS", + Message: "too many requests", + Description: `Returned when a client attempts to contact a + service too many times`, + HTTPStatusCode: http.StatusTooManyRequests, + }) +) + +var nextCode = 1000 +var registerLock sync.Mutex + +// Register will make the passed-in error known to the environment and +// return a new ErrorCode +func Register(group string, descriptor ErrorDescriptor) ErrorCode { + registerLock.Lock() + defer registerLock.Unlock() + + descriptor.Code = ErrorCode(nextCode) + + if _, ok := idToDescriptors[descriptor.Value]; ok { + panic(fmt.Sprintf("ErrorValue %q is already registered", descriptor.Value)) + } + if _, ok := errorCodeToDescriptors[descriptor.Code]; ok { + panic(fmt.Sprintf("ErrorCode %v is already registered", descriptor.Code)) + } + + groupToDescriptors[group] = append(groupToDescriptors[group], descriptor) + errorCodeToDescriptors[descriptor.Code] = descriptor + idToDescriptors[descriptor.Value] = descriptor + + nextCode++ + return descriptor.Code +} + +type byValue []ErrorDescriptor + +func (a byValue) Len() int { return len(a) } +func (a byValue) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +func (a byValue) Less(i, j int) bool { return a[i].Value < a[j].Value } + +// GetGroupNames returns the list of Error group names that are registered +func GetGroupNames() []string { + keys := []string{} + + for k := range groupToDescriptors { + keys = append(keys, k) + } + sort.Strings(keys) + return keys +} + +// GetErrorCodeGroup returns the named group of error descriptors +func GetErrorCodeGroup(name string) []ErrorDescriptor { + desc := groupToDescriptors[name] + sort.Sort(byValue(desc)) + return desc +} + +// GetErrorAllDescriptors returns a slice of all ErrorDescriptors that are +// registered, irrespective of what group they're in +func GetErrorAllDescriptors() []ErrorDescriptor { + result := []ErrorDescriptor{} + + for _, group := range GetGroupNames() { + result = append(result, GetErrorCodeGroup(group)...) + } + sort.Sort(byValue(result)) + return result +} diff --git a/vendor/github.com/docker/distribution/vendor.conf b/vendor/github.com/docker/distribution/vendor.conf index df06259ebb..12f71672f3 100644 --- a/vendor/github.com/docker/distribution/vendor.conf +++ b/vendor/github.com/docker/distribution/vendor.conf @@ -1,16 +1,15 @@ github.com/Azure/azure-sdk-for-go 4650843026a7fdec254a8d9cf893693a254edd0b github.com/Azure/go-autorest eaa7994b2278094c904d31993d26f56324db3052 github.com/sirupsen/logrus 3d4380f53a34dcdc95f0c1db702615992b38d9a4 -github.com/aws/aws-sdk-go 5bcc0a238d880469f949fc7cd24e35f32ab80cbd +github.com/aws/aws-sdk-go f831d5a0822a1ad72420ab18c6269bca1ddaf490 github.com/bshuster-repo/logrus-logstash-hook d2c0ecc1836d91814e15e23bb5dc309c3ef51f4a github.com/beorn7/perks 4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9 github.com/bugsnag/bugsnag-go b1d153021fcd90ca3f080db36bec96dc690fb274 github.com/bugsnag/osext 0dd3f918b21bec95ace9dc86c7e70266cfc5c702 github.com/bugsnag/panicwrap e2c28503fcd0675329da73bf48b33404db873782 -github.com/denverdino/aliyungo afedced274aa9a7fcdd47ac97018f0f8db4e5de2 +github.com/denverdino/aliyungo 6df11717a253d9c7d4141f9af4deaa7c580cd531 github.com/dgrijalva/jwt-go a601269ab70c205d26370c16f7c81e9017c14e04 github.com/docker/go-metrics 399ea8c73916000c64c2c76e8da00ca82f8387ab -github.com/docker/goamz f0a21f5b2e12f83a505ecf79b633bb2035cf6f85 github.com/docker/libtrust fa567046d9b14f6aa788882a950d69651d230b21 github.com/garyburd/redigo 535138d7bcd717d6531c701ef5933d98b1866257 github.com/go-ini/ini 2ba15ac2dc9cdf88c110ec2dc0ced7fa45f5678c @@ -24,14 +23,14 @@ github.com/satori/go.uuid f58768cc1a7a7e77a3bd49e98cdd21419399b6a3 github.com/matttproud/golang_protobuf_extensions c12348ce28de40eed0136aa2b644d0ee0650e56c github.com/miekg/dns 271c58e0c14f552178ea321a545ff9af38930f39 github.com/mitchellh/mapstructure 482a9fd5fa83e8c4e7817413b80f3eb8feec03ef -github.com/ncw/swift b964f2ca856aac39885e258ad25aec08d5f64ee6 +github.com/ncw/swift a0320860b16212c2b59b4912bb6508cda1d7cee6 github.com/prometheus/client_golang c332b6f63c0658a65eca15c0e5247ded801cf564 github.com/prometheus/client_model 99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c github.com/prometheus/common 89604d197083d4781071d3c65855d24ecfb0a563 github.com/prometheus/procfs cb4147076ac75738c9a7d279075a253c0cc5acbd +github.com/Shopify/logrus-bugsnag 577dee27f20dd8f1a529f82210094af593be12bd github.com/spf13/cobra 312092086bed4968099259622145a0c9ae280064 github.com/spf13/pflag 5644820622454e71517561946e3d94b9f9db6842 -github.com/stevvooe/resumable 2aaf90b2ceea5072cb503ef2a620b08ff3119870 github.com/xenolf/lego a9d8cec0e6563575e5868a005359ac97911b5985 github.com/yvasiyarov/go-metrics 57bccd1ccd43f94bb17fdd8bf3007059b802f85e github.com/yvasiyarov/gorelic a9bba5b9ab508a086f9a12b8c51fab68478e2128 @@ -46,7 +45,7 @@ google.golang.org/cloud 975617b05ea8a58727e6c1a06b6161ff4185a9f2 google.golang.org/grpc d3ddb4469d5a1b949fc7a7da7c1d6a0d1b6de994 gopkg.in/check.v1 64131543e7896d5bcc6bd5a76287eb75ea96c673 gopkg.in/square/go-jose.v1 40d457b439244b546f023d056628e5184136899b -gopkg.in/yaml.v2 bef53efd0c76e49e6de55ead051f886bea7e9420 +gopkg.in/yaml.v2 v2.2.1 rsc.io/letsencrypt e770c10b0f1a64775ae91d240407ce00d1a5bdeb https://github.com/dmcgowan/letsencrypt.git github.com/opencontainers/go-digest a6d0ee40d4207ea02364bd3b9e8e77b9159ba1eb github.com/opencontainers/image-spec ab7389ef9f50030c9b245bc16b981c7ddf192882 diff --git a/vendor/github.com/docker/docker-credential-helpers/LICENSE b/vendor/github.com/docker/docker-credential-helpers/LICENSE new file mode 100644 index 0000000000..1ea555e2af --- /dev/null +++ b/vendor/github.com/docker/docker-credential-helpers/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2016 David Calavera + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/docker/docker-credential-helpers/client/client.go b/vendor/github.com/docker/docker-credential-helpers/client/client.go new file mode 100644 index 0000000000..d1d0434cb5 --- /dev/null +++ b/vendor/github.com/docker/docker-credential-helpers/client/client.go @@ -0,0 +1,121 @@ +package client + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" + + "github.com/docker/docker-credential-helpers/credentials" +) + +// isValidCredsMessage checks if 'msg' contains invalid credentials error message. +// It returns whether the logs are free of invalid credentials errors and the error if it isn't. +// error values can be errCredentialsMissingServerURL or errCredentialsMissingUsername. +func isValidCredsMessage(msg string) error { + if credentials.IsCredentialsMissingServerURLMessage(msg) { + return credentials.NewErrCredentialsMissingServerURL() + } + + if credentials.IsCredentialsMissingUsernameMessage(msg) { + return credentials.NewErrCredentialsMissingUsername() + } + + return nil +} + +// Store uses an external program to save credentials. +func Store(program ProgramFunc, creds *credentials.Credentials) error { + cmd := program("store") + + buffer := new(bytes.Buffer) + if err := json.NewEncoder(buffer).Encode(creds); err != nil { + return err + } + cmd.Input(buffer) + + out, err := cmd.Output() + if err != nil { + t := strings.TrimSpace(string(out)) + + if isValidErr := isValidCredsMessage(t); isValidErr != nil { + err = isValidErr + } + + return fmt.Errorf("error storing credentials - err: %v, out: `%s`", err, t) + } + + return nil +} + +// Get executes an external program to get the credentials from a native store. +func Get(program ProgramFunc, serverURL string) (*credentials.Credentials, error) { + cmd := program("get") + cmd.Input(strings.NewReader(serverURL)) + + out, err := cmd.Output() + if err != nil { + t := strings.TrimSpace(string(out)) + + if credentials.IsErrCredentialsNotFoundMessage(t) { + return nil, credentials.NewErrCredentialsNotFound() + } + + if isValidErr := isValidCredsMessage(t); isValidErr != nil { + err = isValidErr + } + + return nil, fmt.Errorf("error getting credentials - err: %v, out: `%s`", err, t) + } + + resp := &credentials.Credentials{ + ServerURL: serverURL, + } + + if err := json.NewDecoder(bytes.NewReader(out)).Decode(resp); err != nil { + return nil, err + } + + return resp, nil +} + +// Erase executes a program to remove the server credentials from the native store. +func Erase(program ProgramFunc, serverURL string) error { + cmd := program("erase") + cmd.Input(strings.NewReader(serverURL)) + out, err := cmd.Output() + if err != nil { + t := strings.TrimSpace(string(out)) + + if isValidErr := isValidCredsMessage(t); isValidErr != nil { + err = isValidErr + } + + return fmt.Errorf("error erasing credentials - err: %v, out: `%s`", err, t) + } + + return nil +} + +// List executes a program to list server credentials in the native store. +func List(program ProgramFunc) (map[string]string, error) { + cmd := program("list") + cmd.Input(strings.NewReader("unused")) + out, err := cmd.Output() + if err != nil { + t := strings.TrimSpace(string(out)) + + if isValidErr := isValidCredsMessage(t); isValidErr != nil { + err = isValidErr + } + + return nil, fmt.Errorf("error listing credentials - err: %v, out: `%s`", err, t) + } + + var resp map[string]string + if err = json.NewDecoder(bytes.NewReader(out)).Decode(&resp); err != nil { + return nil, err + } + + return resp, nil +} diff --git a/vendor/github.com/docker/docker-credential-helpers/client/command.go b/vendor/github.com/docker/docker-credential-helpers/client/command.go new file mode 100644 index 0000000000..8da3343065 --- /dev/null +++ b/vendor/github.com/docker/docker-credential-helpers/client/command.go @@ -0,0 +1,56 @@ +package client + +import ( + "fmt" + "io" + "os" + "os/exec" +) + +// Program is an interface to execute external programs. +type Program interface { + Output() ([]byte, error) + Input(in io.Reader) +} + +// ProgramFunc is a type of function that initializes programs based on arguments. +type ProgramFunc func(args ...string) Program + +// NewShellProgramFunc creates programs that are executed in a Shell. +func NewShellProgramFunc(name string) ProgramFunc { + return NewShellProgramFuncWithEnv(name, nil) +} + +// NewShellProgramFuncWithEnv creates programs that are executed in a Shell with environment variables +func NewShellProgramFuncWithEnv(name string, env *map[string]string) ProgramFunc { + return func(args ...string) Program { + return &Shell{cmd: createProgramCmdRedirectErr(name, args, env)} + } +} + +func createProgramCmdRedirectErr(commandName string, args []string, env *map[string]string) *exec.Cmd { + programCmd := exec.Command(commandName, args...) + programCmd.Env = os.Environ() + if env != nil { + for k, v := range *env { + programCmd.Env = append(programCmd.Env, fmt.Sprintf("%s=%s", k, v)) + } + } + programCmd.Stderr = os.Stderr + return programCmd +} + +// Shell invokes shell commands to talk with a remote credentials helper. +type Shell struct { + cmd *exec.Cmd +} + +// Output returns responses from the remote credentials helper. +func (s *Shell) Output() ([]byte, error) { + return s.cmd.Output() +} + +// Input sets the input to send to a remote credentials helper. +func (s *Shell) Input(in io.Reader) { + s.cmd.Stdin = in +} diff --git a/vendor/github.com/docker/docker-credential-helpers/credentials/credentials.go b/vendor/github.com/docker/docker-credential-helpers/credentials/credentials.go new file mode 100644 index 0000000000..da8b594e7f --- /dev/null +++ b/vendor/github.com/docker/docker-credential-helpers/credentials/credentials.go @@ -0,0 +1,186 @@ +package credentials + +import ( + "bufio" + "bytes" + "encoding/json" + "fmt" + "io" + "os" + "strings" +) + +// Credentials holds the information shared between docker and the credentials store. +type Credentials struct { + ServerURL string + Username string + Secret string +} + +// isValid checks the integrity of Credentials object such that no credentials lack +// a server URL or a username. +// It returns whether the credentials are valid and the error if it isn't. +// error values can be errCredentialsMissingServerURL or errCredentialsMissingUsername +func (c *Credentials) isValid() (bool, error) { + if len(c.ServerURL) == 0 { + return false, NewErrCredentialsMissingServerURL() + } + + if len(c.Username) == 0 { + return false, NewErrCredentialsMissingUsername() + } + + return true, nil +} + +// CredsLabel holds the way Docker credentials should be labeled as such in credentials stores that allow labelling. +// That label allows to filter out non-Docker credentials too at lookup/search in macOS keychain, +// Windows credentials manager and Linux libsecret. Default value is "Docker Credentials" +var CredsLabel = "Docker Credentials" + +// SetCredsLabel is a simple setter for CredsLabel +func SetCredsLabel(label string) { + CredsLabel = label +} + +// Serve initializes the credentials helper and parses the action argument. +// This function is designed to be called from a command line interface. +// It uses os.Args[1] as the key for the action. +// It uses os.Stdin as input and os.Stdout as output. +// This function terminates the program with os.Exit(1) if there is an error. +func Serve(helper Helper) { + var err error + if len(os.Args) != 2 { + err = fmt.Errorf("Usage: %s ", os.Args[0]) + } + + if err == nil { + err = HandleCommand(helper, os.Args[1], os.Stdin, os.Stdout) + } + + if err != nil { + fmt.Fprintf(os.Stdout, "%v\n", err) + os.Exit(1) + } +} + +// HandleCommand uses a helper and a key to run a credential action. +func HandleCommand(helper Helper, key string, in io.Reader, out io.Writer) error { + switch key { + case "store": + return Store(helper, in) + case "get": + return Get(helper, in, out) + case "erase": + return Erase(helper, in) + case "list": + return List(helper, out) + case "version": + return PrintVersion(out) + } + return fmt.Errorf("Unknown credential action `%s`", key) +} + +// Store uses a helper and an input reader to save credentials. +// The reader must contain the JSON serialization of a Credentials struct. +func Store(helper Helper, reader io.Reader) error { + scanner := bufio.NewScanner(reader) + + buffer := new(bytes.Buffer) + for scanner.Scan() { + buffer.Write(scanner.Bytes()) + } + + if err := scanner.Err(); err != nil && err != io.EOF { + return err + } + + var creds Credentials + if err := json.NewDecoder(buffer).Decode(&creds); err != nil { + return err + } + + if ok, err := creds.isValid(); !ok { + return err + } + + return helper.Add(&creds) +} + +// Get retrieves the credentials for a given server url. +// The reader must contain the server URL to search. +// The writer is used to write the JSON serialization of the credentials. +func Get(helper Helper, reader io.Reader, writer io.Writer) error { + scanner := bufio.NewScanner(reader) + + buffer := new(bytes.Buffer) + for scanner.Scan() { + buffer.Write(scanner.Bytes()) + } + + if err := scanner.Err(); err != nil && err != io.EOF { + return err + } + + serverURL := strings.TrimSpace(buffer.String()) + if len(serverURL) == 0 { + return NewErrCredentialsMissingServerURL() + } + + username, secret, err := helper.Get(serverURL) + if err != nil { + return err + } + + resp := Credentials{ + ServerURL: serverURL, + Username: username, + Secret: secret, + } + + buffer.Reset() + if err := json.NewEncoder(buffer).Encode(resp); err != nil { + return err + } + + fmt.Fprint(writer, buffer.String()) + return nil +} + +// Erase removes credentials from the store. +// The reader must contain the server URL to remove. +func Erase(helper Helper, reader io.Reader) error { + scanner := bufio.NewScanner(reader) + + buffer := new(bytes.Buffer) + for scanner.Scan() { + buffer.Write(scanner.Bytes()) + } + + if err := scanner.Err(); err != nil && err != io.EOF { + return err + } + + serverURL := strings.TrimSpace(buffer.String()) + if len(serverURL) == 0 { + return NewErrCredentialsMissingServerURL() + } + + return helper.Delete(serverURL) +} + +//List returns all the serverURLs of keys in +//the OS store as a list of strings +func List(helper Helper, writer io.Writer) error { + accts, err := helper.List() + if err != nil { + return err + } + return json.NewEncoder(writer).Encode(accts) +} + +//PrintVersion outputs the current version. +func PrintVersion(writer io.Writer) error { + fmt.Fprintln(writer, Version) + return nil +} diff --git a/vendor/github.com/docker/docker-credential-helpers/credentials/error.go b/vendor/github.com/docker/docker-credential-helpers/credentials/error.go new file mode 100644 index 0000000000..fe6a5aef45 --- /dev/null +++ b/vendor/github.com/docker/docker-credential-helpers/credentials/error.go @@ -0,0 +1,102 @@ +package credentials + +const ( + // ErrCredentialsNotFound standardizes the not found error, so every helper returns + // the same message and docker can handle it properly. + errCredentialsNotFoundMessage = "credentials not found in native keychain" + + // ErrCredentialsMissingServerURL and ErrCredentialsMissingUsername standardize + // invalid credentials or credentials management operations + errCredentialsMissingServerURLMessage = "no credentials server URL" + errCredentialsMissingUsernameMessage = "no credentials username" +) + +// errCredentialsNotFound represents an error +// raised when credentials are not in the store. +type errCredentialsNotFound struct{} + +// Error returns the standard error message +// for when the credentials are not in the store. +func (errCredentialsNotFound) Error() string { + return errCredentialsNotFoundMessage +} + +// NewErrCredentialsNotFound creates a new error +// for when the credentials are not in the store. +func NewErrCredentialsNotFound() error { + return errCredentialsNotFound{} +} + +// IsErrCredentialsNotFound returns true if the error +// was caused by not having a set of credentials in a store. +func IsErrCredentialsNotFound(err error) bool { + _, ok := err.(errCredentialsNotFound) + return ok +} + +// IsErrCredentialsNotFoundMessage returns true if the error +// was caused by not having a set of credentials in a store. +// +// This function helps to check messages returned by an +// external program via its standard output. +func IsErrCredentialsNotFoundMessage(err string) bool { + return err == errCredentialsNotFoundMessage +} + +// errCredentialsMissingServerURL represents an error raised +// when the credentials object has no server URL or when no +// server URL is provided to a credentials operation requiring +// one. +type errCredentialsMissingServerURL struct{} + +func (errCredentialsMissingServerURL) Error() string { + return errCredentialsMissingServerURLMessage +} + +// errCredentialsMissingUsername represents an error raised +// when the credentials object has no username or when no +// username is provided to a credentials operation requiring +// one. +type errCredentialsMissingUsername struct{} + +func (errCredentialsMissingUsername) Error() string { + return errCredentialsMissingUsernameMessage +} + +// NewErrCredentialsMissingServerURL creates a new error for +// errCredentialsMissingServerURL. +func NewErrCredentialsMissingServerURL() error { + return errCredentialsMissingServerURL{} +} + +// NewErrCredentialsMissingUsername creates a new error for +// errCredentialsMissingUsername. +func NewErrCredentialsMissingUsername() error { + return errCredentialsMissingUsername{} +} + +// IsCredentialsMissingServerURL returns true if the error +// was an errCredentialsMissingServerURL. +func IsCredentialsMissingServerURL(err error) bool { + _, ok := err.(errCredentialsMissingServerURL) + return ok +} + +// IsCredentialsMissingServerURLMessage checks for an +// errCredentialsMissingServerURL in the error message. +func IsCredentialsMissingServerURLMessage(err string) bool { + return err == errCredentialsMissingServerURLMessage +} + +// IsCredentialsMissingUsername returns true if the error +// was an errCredentialsMissingUsername. +func IsCredentialsMissingUsername(err error) bool { + _, ok := err.(errCredentialsMissingUsername) + return ok +} + +// IsCredentialsMissingUsernameMessage checks for an +// errCredentialsMissingUsername in the error message. +func IsCredentialsMissingUsernameMessage(err string) bool { + return err == errCredentialsMissingUsernameMessage +} diff --git a/vendor/github.com/docker/docker-credential-helpers/credentials/helper.go b/vendor/github.com/docker/docker-credential-helpers/credentials/helper.go new file mode 100644 index 0000000000..135acd254d --- /dev/null +++ b/vendor/github.com/docker/docker-credential-helpers/credentials/helper.go @@ -0,0 +1,14 @@ +package credentials + +// Helper is the interface a credentials store helper must implement. +type Helper interface { + // Add appends credentials to the store. + Add(*Credentials) error + // Delete removes credentials from the store. + Delete(serverURL string) error + // Get retrieves credentials from the store. + // It returns username and secret as strings. + Get(serverURL string) (string, string, error) + // List returns the stored serverURLs and their associated usernames. + List() (map[string]string, error) +} diff --git a/vendor/github.com/docker/docker-credential-helpers/credentials/version.go b/vendor/github.com/docker/docker-credential-helpers/credentials/version.go new file mode 100644 index 0000000000..c2cc3e2e02 --- /dev/null +++ b/vendor/github.com/docker/docker-credential-helpers/credentials/version.go @@ -0,0 +1,4 @@ +package credentials + +// Version holds a string describing the current version +const Version = "0.6.3" diff --git a/vendor/github.com/docker/docker/AUTHORS b/vendor/github.com/docker/docker/AUTHORS index 46102d7402..c6c8fb40e3 100644 --- a/vendor/github.com/docker/docker/AUTHORS +++ b/vendor/github.com/docker/docker/AUTHORS @@ -201,6 +201,7 @@ Ben Severson Ben Toews Ben Wiklund Benjamin Atkin +Benjamin Baker Benjamin Boudreau Benjamin Yolken Benoit Chesneau @@ -246,6 +247,7 @@ Brian Torres-Gil Brian Trump Brice Jaglin Briehan Lombaard +Brielle Broder Bruno Bigras Bruno Binet Bruno Gazzera @@ -325,9 +327,11 @@ Chris Swan Chris Telfer Chris Wahl Chris Weyl +Chris White Christian Berendt Christian Brauner Christian Böhme +Christian Muehlhaeuser Christian Persson Christian Rotzoll Christian Simon @@ -444,6 +448,7 @@ David Röthlisberger David Sheets David Sissitka David Trott +David Wang <00107082@163.com> David Williamson David Xia David Young @@ -451,6 +456,7 @@ Davide Ceretti Dawn Chen dbdd dcylabs +Debayan De Deborah Gertrude Digges deed02392 Deng Guangxing @@ -503,6 +509,7 @@ Don Kjer Don Spaulding Donald Huang Dong Chen +Donghwa Kim Donovan Jones Doron Podoleanu Doug Davis @@ -580,6 +587,7 @@ Eystein Måløy Stenberg ezbercih Ezra Silvera Fabian Lauer +Fabian Raetz Fabiano Rosas Fabio Falci Fabio Kung @@ -591,6 +599,7 @@ Faiz Khan falmp Fangming Fang Fangyuan Gao <21551127@zju.edu.cn> +fanjiyun Fareed Dudhia Fathi Boudra Federico Gimenez @@ -621,6 +630,7 @@ Florin Patan fonglh Foysal Iqbal Francesc Campoy +Francesco Mari Francis Chuang Francisco Carriedo Francisco Souza @@ -653,6 +663,7 @@ Gaël PORTAY Genki Takiuchi GennadySpb Geoffrey Bachelet +Geon Kim George Kontridze George MacRorie George Xie @@ -676,6 +687,7 @@ Gopikannan Venugopalsamy Gosuke Miyashita Gou Rao Govinda Fichtner +Grant Millar Grant Reaber Graydon Hoare Greg Fausak @@ -694,6 +706,7 @@ Guruprasad Gustav Sinder gwx296173 Günter Zöchbauer +haikuoliu Hakan Özler Hans Kristian Flaatten Hans Rødtang @@ -735,6 +748,7 @@ Ian Bishop Ian Bull Ian Calvert Ian Campbell +Ian Chen Ian Lee Ian Main Ian Philpot @@ -755,6 +769,7 @@ Ingo Gottwald Isaac Dupree Isabel Jimenez Isao Jonas +Iskander Sharipov Ivan Babrou Ivan Fraixedes Ivan Grcic @@ -847,7 +862,7 @@ Jeroen Franse Jeroen Jacobs Jesse Dearing Jesse Dubay -Jessica Frazelle +Jessica Frazelle Jezeniel Zapanta Jhon Honce Ji.Zhilong @@ -983,6 +998,7 @@ Karl Grzeszczak Karol Duleba Karthik Karanth Karthik Nayak +Kasper Fabæch Brandt Kate Heddleston Katie McLaughlin Kato Kazuyoshi @@ -990,6 +1006,7 @@ Katrina Owen Kawsar Saiyeed Kay Yan kayrus +Kazuhiro Sera Ke Li Ke Xu Kei Ohmura @@ -998,6 +1015,7 @@ Keli Hu Ken Cochrane Ken Herner Ken ICHIKAWA +Ken Reese Kenfe-Mickaël Laventure Kenjiro Nakayama Kent Johnson @@ -1035,9 +1053,9 @@ Krasimir Georgiev Kris-Mikael Krister Kristian Haugene Kristina Zabunova -krrg Kun Zhang Kunal Kushwaha +Kunal Tyagi Kyle Conroy Kyle Linden kyu @@ -1060,6 +1078,7 @@ Leandro Siqueira Lee Chao <932819864@qq.com> Lee, Meng-Han leeplay +Lei Gong Lei Jitang Len Weincier Lennie @@ -1095,6 +1114,7 @@ Lokesh Mandvekar longliqiang88 <394564827@qq.com> Lorenz Leutgeb Lorenzo Fontana +Lotus Fenn Louis Opter Luca Favatella Luca Marturana @@ -1167,6 +1187,7 @@ Martijn van Oosterhout Martin Honermeyer Martin Kelly Martin Mosegaard Amdisen +Martin Muzatko Martin Redmond Mary Anthony Masahito Zembutsu @@ -1248,8 +1269,9 @@ Michal Wieczorek Michaël Pailloncy Michał Czeraszkiewicz Michał Gryko -Michiel@unhosted -Mickaël FORTUNATO +Michiel de Jong +Mickaël Fortunato +Mickaël Remars Miguel Angel Fernández Miguel Morales Mihai Borobocea @@ -1337,6 +1359,7 @@ Nicolas Dudebout Nicolas Goy Nicolas Kaiser Nicolas Sterchele +Nicolas V Castet Nicolás Hock Isaza Nigel Poulton Nik Nyby @@ -1452,6 +1475,7 @@ Prasanna Gautam Pratik Karki Prayag Verma Priya Wadhwa +Projjol Banerji Przemek Hejman Pure White pysqz @@ -1546,6 +1570,7 @@ Rozhnov Alexandr Rudolph Gottesheim Rui Lopes Runshen Zhu +Russ Magee Ryan Abrams Ryan Anderson Ryan Aslett @@ -1572,6 +1597,7 @@ Sachin Joshi Sagar Hani Sainath Grandhi Sakeven Jiang +Salahuddin Khan Sally O'Malley Sam Abed Sam Alba @@ -1620,6 +1646,7 @@ Sergey Alekseev Sergey Evstifeev Sergii Kabashniuk Serhat Gülçiçek +SeungUkLee Sevki Hasirci Shane Canon Shane da Silva @@ -1714,10 +1741,11 @@ tang0th Tangi Colin Tatsuki Sugiura Tatsushi Inagaki +Taylan Isikdemir Taylor Jones -tbonza Ted M. Young Tehmasp Chaudhri +Tejaswini Duggaraju Tejesh Mehta terryding77 <550147740@qq.com> tgic @@ -1811,6 +1839,7 @@ Tristan Carel Troy Denton Tycho Andersen Tyler Brock +Tyler Brown Tzu-Jung Lee uhayate Ulysse Carion @@ -1906,11 +1935,13 @@ XiaoBing Jiang Xiaoxu Chen Xiaoyu Zhang xiekeyang +Ximo Guanter Gonzálbez Xinbo Weng Xinzi Zhou Xiuming Chen Xuecong Liao xuzhaokui +Yadnyawalkya Tale Yahya YAMADA Tsuyoshi Yamasaki Masahide @@ -1941,6 +1972,7 @@ Yu-Ju Hong Yuan Sun Yuanhong Peng Yuhao Fang +Yuichiro Kaneko Yunxiang Huang Yurii Rashkovskii Yves Junqueira diff --git a/vendor/github.com/docker/docker/LICENSE b/vendor/github.com/docker/docker/LICENSE index 9c8e20ab85..6d8d58fb67 100644 --- a/vendor/github.com/docker/docker/LICENSE +++ b/vendor/github.com/docker/docker/LICENSE @@ -176,7 +176,7 @@ END OF TERMS AND CONDITIONS - Copyright 2013-2017 Docker, Inc. + Copyright 2013-2018 Docker, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/docker/docker/api/common.go b/vendor/github.com/docker/docker/api/common.go index 255a81aedd..aa146cdaeb 100644 --- a/vendor/github.com/docker/docker/api/common.go +++ b/vendor/github.com/docker/docker/api/common.go @@ -3,7 +3,7 @@ package api // import "github.com/docker/docker/api" // Common constants for daemon and client. const ( // DefaultVersion of Current REST API - DefaultVersion = "1.38" + DefaultVersion = "1.40" // NoBaseImageSpecifier is the symbol used by the FROM // command to specify that no base image is to be used. diff --git a/vendor/github.com/docker/docker/api/swagger.yaml b/vendor/github.com/docker/docker/api/swagger.yaml index af3bd6d484..78c576cef2 100644 --- a/vendor/github.com/docker/docker/api/swagger.yaml +++ b/vendor/github.com/docker/docker/api/swagger.yaml @@ -19,10 +19,10 @@ produces: consumes: - "application/json" - "text/plain" -basePath: "/v1.38" +basePath: "/v1.40" info: title: "Docker Engine API" - version: "1.38" + version: "1.40" x-logo: url: "https://docs.docker.com/images/logo-docker-main.png" description: | @@ -49,8 +49,8 @@ info: the URL is not supported by the daemon, a HTTP `400 Bad Request` error message is returned. - If you omit the version-prefix, the current version of the API (v1.38) is used. - For example, calling `/info` is the same as calling `/v1.38/info`. Using the + If you omit the version-prefix, the current version of the API (v1.40) is used. + For example, calling `/info` is the same as calling `/v1.40/info`. Using the API without a version-prefix is deprecated and will be removed in a future release. Engine releases in the near future should support this version of the API, @@ -210,6 +210,43 @@ definitions: PathInContainer: "/dev/deviceName" CgroupPermissions: "mrw" + DeviceRequest: + type: "object" + description: "A request for devices to be sent to device drivers" + properties: + Driver: + type: "string" + example: "nvidia" + Count: + type: "integer" + example: -1 + DeviceIDs: + type: "array" + items: + type: "string" + example: + - "0" + - "1" + - "GPU-fef8089b-4820-abfc-e83e-94318197576e" + Capabilities: + description: | + A list of capabilities; an OR list of AND lists of capabilities. + type: "array" + items: + type: "array" + items: + type: "string" + example: + # gpu AND nvidia AND compute + - ["gpu", "nvidia", "compute"] + Options: + description: | + Driver-specific options, specified as a key/value pairs. These options + are passed directly to the driver. + type: "object" + additionalProperties: + type: "string" + ThrottleDevice: type: "object" properties: @@ -238,11 +275,13 @@ definitions: - `bind` Mounts a file or directory from the host into the container. Must exist prior to creating the container. - `volume` Creates a volume with the given name and options (or uses a pre-existing volume with the same name and options). These are **not** removed when the container is removed. - `tmpfs` Create a tmpfs with the given options. The mount source cannot be specified for tmpfs. + - `npipe` Mounts a named pipe from the host into the container. Must exist prior to creating the container. type: "string" enum: - "bind" - "volume" - "tmpfs" + - "npipe" ReadOnly: description: "Whether the mount should be read-only." type: "boolean" @@ -263,6 +302,10 @@ definitions: - "rshared" - "slave" - "rslave" + NonRecursive: + description: "Disable recursive bind mount." + type: "boolean" + default: false VolumeOptions: description: "Optional configuration for the `volume` type." type: "object" @@ -415,6 +458,11 @@ definitions: items: type: "string" example: "c 13:* rwm" + DeviceRequests: + description: "a list of requests for devices to be sent to device drivers" + type: "array" + items: + $ref: "#/definitions/DeviceRequest" DiskQuota: description: "Disk limit (in bytes)." type: "integer" @@ -423,6 +471,11 @@ definitions: description: "Kernel memory limit in bytes." type: "integer" format: "int64" + example: 209715200 + KernelMemoryTCP: + description: "Hard limit for kernel TCP buffer memory (in bytes)." + type: "integer" + format: "int64" MemoryReservation: description: "Memory soft limit in bytes." type: "integer" @@ -449,9 +502,11 @@ definitions: type: "boolean" x-nullable: true PidsLimit: - description: "Tune a container's pids limit. Set -1 for unlimited." + description: | + Tune a container's PIDs limit. Set `0` or `-1` for unlimited, or `null` to not change. type: "integer" format: "int64" + x-nullable: true Ulimits: description: | A list of resource limits to set in the container. For example: `{"Name": "nofile", "Soft": 1024, "Hard": 2048}`" @@ -634,14 +689,22 @@ definitions: $ref: "#/definitions/Mount" # Applicable to UNIX platforms + Capabilities: + type: "array" + description: | + A list of kernel capabilities to be available for container (this overrides the default set). + + Conflicts with options 'CapAdd' and 'CapDrop'" + items: + type: "string" CapAdd: type: "array" - description: "A list of kernel capabilities to add to the container." + description: "A list of kernel capabilities to add to the container. Conflicts with option 'Capabilities'" items: type: "string" CapDrop: type: "array" - description: "A list of kernel capabilities to drop from the container." + description: "A list of kernel capabilities to drop from the container. Conflicts with option 'Capabilities'" items: type: "string" Dns: @@ -772,6 +835,16 @@ definitions: - "default" - "process" - "hyperv" + MaskedPaths: + type: "array" + description: "The list of paths to be masked inside the container (this overrides the default set of paths)" + items: + type: "string" + ReadonlyPaths: + type: "array" + description: "The list of paths to be set as read-only inside the container (this overrides the default set of paths)" + items: + type: "string" ContainerConfig: description: "Configuration for a container that is portable between hosts" @@ -1463,11 +1536,9 @@ definitions: type: "string" Options: description: "Driver-specific options, specified as a map." - type: "array" - items: - type: "object" - additionalProperties: - type: "string" + type: "object" + additionalProperties: + type: "string" NetworkContainer: type: "object" @@ -1503,6 +1574,31 @@ definitions: aux: $ref: "#/definitions/ImageID" + BuildCache: + type: "object" + properties: + ID: + type: "string" + Parent: + type: "string" + Type: + type: "string" + Description: + type: "string" + InUse: + type: "boolean" + Shared: + type: "boolean" + Size: + type: "integer" + CreatedAt: + type: "integer" + LastUsedAt: + type: "integer" + x-nullable: true + UsageCount: + type: "integer" + ImageID: type: "object" description: "Image ID or Digest" @@ -2424,6 +2520,31 @@ definitions: description: "Whether there is currently a root CA rotation in progress for the swarm" type: "boolean" example: false + DataPathPort: + description: | + DataPathPort specifies the data path port number for data traffic. + Acceptable port range is 1024 to 49151. + If no port is set or is set to 0, the default port (4789) is used. + type: "integer" + format: "uint32" + default: 4789 + example: 4789 + DefaultAddrPool: + description: | + Default Address Pool specifies default subnet pools for global scope networks. + type: "array" + items: + type: "string" + format: "CIDR" + example: ["10.10.0.0/16", "20.20.0.0/16"] + SubnetSize: + description: | + SubnetSize specifies the subnet size of the networks created from the default subnet pool + type: "integer" + format: "uint32" + maximum: 29 + default: 24 + example: 24 JoinTokens: description: | @@ -2546,8 +2667,20 @@ definitions: type: "object" description: "CredentialSpec for managed service account (Windows only)" properties: + Config: + type: "string" + example: "0bt9dmxjvjiqermk6xrop3ekq" + description: | + Load credential spec from a Swarm Config with the given ID. + The specified config must also be present in the Configs field with the Runtime property set. + +


+ + + > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and `CredentialSpec.Config` are mutually exclusive. File: type: "string" + example: "spec.json" description: | Load credential spec from this file. The file is read by the daemon, and must be present in the `CredentialSpecs` subdirectory in the docker data directory, which defaults to @@ -2557,7 +2690,7 @@ definitions:


- > **Note**: `CredentialSpec.File` and `CredentialSpec.Registry` are mutually exclusive. + > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and `CredentialSpec.Config` are mutually exclusive. Registry: type: "string" description: | @@ -2569,7 +2702,7 @@ definitions:


- > **Note**: `CredentialSpec.File` and `CredentialSpec.Registry` are mutually exclusive. + > **Note**: `CredentialSpec.File`, `CredentialSpec.Registry`, and `CredentialSpec.Config` are mutually exclusive. SELinuxContext: type: "object" description: "SELinux labels of the container" @@ -2680,7 +2813,12 @@ definitions: type: "object" properties: File: - description: "File represents a specific target that is backed by a file." + description: | + File represents a specific target that is backed by a file. + +


+ + > **Note**: `Configs.File` and `Configs.Runtime` are mutually exclusive type: "object" properties: Name: @@ -2696,6 +2834,14 @@ definitions: description: "Mode represents the FileMode of the file." type: "integer" format: "uint32" + Runtime: + description: | + Runtime represents a target that is not mounted into the container but is used by the task + +


+ + > **Note**: `Configs.File` and `Configs.Runtime` are mutually exclusive + type: "object" ConfigID: description: "ConfigID represents the ID of the specific config that we're referencing." type: "string" @@ -2711,6 +2857,22 @@ definitions: - "default" - "process" - "hyperv" + Init: + description: "Run an init inside the container that forwards signals and reaps processes. This field is omitted if empty, and the default (as configured on the daemon) is used." + type: "boolean" + x-nullable: true + Sysctls: + description: | + Set kernel namedspaced parameters (sysctls) in the container. + The Sysctls option on services accepts the same sysctls as the + are supported on containers. Note that while the same sysctls are + supported, no guarantees or checks are made about their + suitability for a clustered environment, and it's up to the user + to determine whether a given sysctl will work properly in a + Service. + type: "object" + additionalProperties: + type: "string" NetworkAttachmentSpec: description: | Read-only spec type for non-swarm containers attached to swarm overlay @@ -2791,6 +2953,11 @@ definitions: SpreadDescriptor: "node.labels.datacenter" - Spread: SpreadDescriptor: "node.labels.rack" + MaxReplicas: + description: "Maximum number of replicas for per node (default value is 0, which is unlimited)" + type: "integer" + format: "int64" + default: 0 Platforms: description: | Platforms stores all the platforms that the service's image can @@ -3591,6 +3758,10 @@ definitions: See [cpuset(7)](https://www.kernel.org/doc/Documentation/cgroup-v1/cpusets.txt) type: "boolean" example: true + PidsLimit: + description: "Indicates if the host kernel has PID limit support enabled." + type: "boolean" + example: true OomKillDisable: description: "Indicates if OOM killer disable is supported on the host." type: "boolean" @@ -3708,18 +3879,22 @@ definitions: description: | HTTP-proxy configured for the daemon. This value is obtained from the [`HTTP_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html) environment variable. + Credentials ([user info component](https://tools.ietf.org/html/rfc3986#section-3.2.1)) in the proxy URL + are masked in the API response. Containers do not automatically inherit this configuration. type: "string" - example: "http://user:pass@proxy.corp.example.com:8080" + example: "http://xxxxx:xxxxx@proxy.corp.example.com:8080" HttpsProxy: description: | HTTPS-proxy configured for the daemon. This value is obtained from the [`HTTPS_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html) environment variable. + Credentials ([user info component](https://tools.ietf.org/html/rfc3986#section-3.2.1)) in the proxy URL + are masked in the API response. Containers do not automatically inherit this configuration. type: "string" - example: "https://user:pass@proxy.corp.example.com:4443" + example: "https://xxxxx:xxxxx@proxy.corp.example.com:4443" NoProxy: description: | Comma-separated list of domain extensions for which no proxy should be @@ -3809,10 +3984,10 @@ definitions: $ref: "#/definitions/Runtime" default: runc: - path: "docker-runc" + path: "runc" example: runc: - path: "docker-runc" + path: "runc" runc-master: path: "/go/bin/runc" custom: @@ -3882,6 +4057,27 @@ definitions: - "name=seccomp,profile=default" - "name=selinux" - "name=userns" + ProductLicense: + description: | + Reports a summary of the product license on the daemon. + + If a commercial license has been applied to the daemon, information + such as number of nodes, and expiration are included. + type: "string" + example: "Community Engine" + Warnings: + description: | + List of warnings / informational messages about missing features, or + issues related to the daemon configuration. + + These messages can be printed by the client as information to the user. + type: "array" + items: + type: "string" + example: + - "WARNING: No memory limit support" + - "WARNING: bridge-nf-call-iptables is disabled" + - "WARNING: bridge-nf-call-ip6tables is disabled" # PluginsInfo is a temp struct holding Plugins name @@ -4502,7 +4698,7 @@ paths: OomKillDisable: false OomScoreAdj: 500 PidMode: "" - PidsLimit: -1 + PidsLimit: 0 PortBindings: 22/tcp: - HostPort: "11022" @@ -5908,7 +6104,7 @@ paths: headers: X-Docker-Container-Path-Stat: type: "string" - description: "TODO" + description: "A base64 - encoded JSON object with some filesystem header information about the path" 400: description: "Bad parameter" schema: @@ -6305,6 +6501,11 @@ paths: description: "Target build stage" type: "string" default: "" + - name: "outputs" + in: "query" + description: "BuildKit output configuration" + type: "string" + default: "" responses: 200: description: "no error" @@ -6323,6 +6524,29 @@ paths: produces: - "application/json" operationId: "BuildPrune" + parameters: + - name: "keep-storage" + in: "query" + description: "Amount of disk space in bytes to keep for cache" + type: "integer" + format: "int64" + - name: "all" + in: "query" + type: "boolean" + description: "Remove all types of build cache" + - name: "filters" + in: "query" + type: "string" + description: | + A JSON encoded value of the filters (a `map[string][]string`) to process on the list of build cache objects. Available filters: + - `until=`: duration relative to daemon's time, during which build cache was not used, in Go's duration format (e.g., '24h') + - `id=` + - `parent=` + - `type=` + - `description=` + - `inuse` + - `shared` + - `private` responses: 200: description: "No error" @@ -6330,6 +6554,11 @@ paths: type: "object" title: "BuildPruneResponse" properties: + CachesDeleted: + type: "array" + items: + description: "ID of build cache object" + type: "string" SpaceReclaimed: description: "Disk space reclaimed in bytes" type: "integer" @@ -6958,9 +7187,57 @@ paths: API-Version: type: "string" description: "Max API Version the server supports" + BuildKit-Version: + type: "string" + description: "Default version of docker image builder" + Docker-Experimental: + type: "boolean" + description: "If the server is running with experimental mode enabled" + Cache-Control: + type: "string" + default: "no-cache, no-store, must-revalidate" + Pragma: + type: "string" + default: "no-cache" + 500: + description: "server error" + schema: + $ref: "#/definitions/ErrorResponse" + headers: + Cache-Control: + type: "string" + default: "no-cache, no-store, must-revalidate" + Pragma: + type: "string" + default: "no-cache" + tags: ["System"] + head: + summary: "Ping" + description: "This is a dummy endpoint you can use to test if the server is accessible." + operationId: "SystemPingHead" + produces: ["text/plain"] + responses: + 200: + description: "no error" + schema: + type: "string" + example: "(empty)" + headers: + API-Version: + type: "string" + description: "Max API Version the server supports" + BuildKit-Version: + type: "string" + description: "Default version of docker image builder" Docker-Experimental: type: "boolean" description: "If the server is running with experimental mode enabled" + Cache-Control: + type: "string" + default: "no-cache, no-store, must-revalidate" + Pragma: + type: "string" + default: "no-cache" 500: description: "server error" schema: @@ -7161,6 +7438,10 @@ paths: type: "array" items: $ref: "#/definitions/Volume" + BuildCache: + type: "array" + items: + $ref: "#/definitions/BuildCache" example: LayersSize: 1092588 Images: @@ -7575,6 +7856,7 @@ paths: schema: type: "object" title: "VolumeListResponse" + description: "Volume list response" required: [Volumes, Warnings] properties: Volumes: @@ -7651,6 +7933,8 @@ paths: description: "Volume configuration" schema: type: "object" + description: "Volume configuration" + title: "VolumeConfig" properties: Name: description: "The new volume's name. If not specified, Docker generates a name." @@ -7851,6 +8135,10 @@ paths: description: | JSON encoded value of the filters (a `map[string][]string`) to process on the networks list. Available filters: + - `dangling=` When set to `true` (or `1`), returns all + networks that are not in use by a container. When set to `false` + (or `0`), only networks that are in use by one or more + containers are returned. - `driver=` Matches a network's driver. - `id=` Matches all or part of a network ID. - `label=` or `label==` of a network label. @@ -8568,6 +8856,7 @@ paths: - `label=` - `membership=`(`accepted`|`pending`)` - `name=` + - `node.label=` - `role=`(`manager`|`worker`)` type: "string" tags: ["Node"] @@ -8740,14 +9029,36 @@ paths: nodes in order to reach the containers running on this node. Using this parameter it is possible to separate the container data traffic from the management traffic of the cluster. type: "string" + DataPathPort: + description: | + DataPathPort specifies the data path port number for data traffic. + Acceptable port range is 1024 to 49151. + if no port is set or is set to 0, default port 4789 will be used. + type: "integer" + format: "uint32" + DefaultAddrPool: + description: | + Default Address Pool specifies default subnet pools for global scope networks. + type: "array" + items: + type: "string" + example: ["10.10.0.0/16", "20.20.0.0/16"] ForceNewCluster: description: "Force creation of a new swarm." type: "boolean" + SubnetSize: + description: | + SubnetSize specifies the subnet size of the networks created from the default subnet pool + type: "integer" + format: "uint32" Spec: $ref: "#/definitions/SwarmSpec" example: ListenAddr: "0.0.0.0:2377" AdvertiseAddr: "192.168.1.1:2377" + DataPathPort: 4789 + DefaultAddrPool: ["10.10.0.0/8", "20.20.0.0/8"] + SubnetSize: 24 ForceNewCluster: false Spec: Orchestration: {} @@ -9229,7 +9540,10 @@ paths: - name: "version" in: "query" - description: "The version number of the service object being updated. This is required to avoid conflicting writes." + description: "The version number of the service object being updated. + This is required to avoid conflicting writes. + This version number should be the value as currently set on the service *before* the update. + You can find the current version by calling `GET /services/{id}`" required: true type: "integer" - name: "registryAuthFrom" @@ -9588,6 +9902,7 @@ paths: description: "Only return this number of log lines from the end of the logs. Specify as an integer or `all` to output all log lines." type: "string" default: "all" + tags: ["Task"] /secrets: get: summary: "List secrets" diff --git a/vendor/github.com/docker/docker/api/types/backend/build.go b/vendor/github.com/docker/docker/api/types/backend/build.go index 31e00ec6ce..1a2e59f2f7 100644 --- a/vendor/github.com/docker/docker/api/types/backend/build.go +++ b/vendor/github.com/docker/docker/api/types/backend/build.go @@ -5,6 +5,7 @@ import ( "github.com/docker/docker/api/types" "github.com/docker/docker/pkg/streamformatter" + specs "github.com/opencontainers/image-spec/specs-go/v1" ) // PullOption defines different modes for accessing images @@ -40,5 +41,5 @@ type GetImageAndLayerOptions struct { PullOption PullOption AuthConfig map[string]types.AuthConfig Output io.Writer - OS string + Platform *specs.Platform } diff --git a/vendor/github.com/docker/docker/api/types/client.go b/vendor/github.com/docker/docker/api/types/client.go index 3d2e057c9a..4b9f50282b 100644 --- a/vendor/github.com/docker/docker/api/types/client.go +++ b/vendor/github.com/docker/docker/api/types/client.go @@ -7,7 +7,7 @@ import ( "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/filters" - "github.com/docker/go-units" + units "github.com/docker/go-units" ) // CheckpointCreateOptions holds parameters to create a checkpoint from a container @@ -181,8 +181,33 @@ type ImageBuildOptions struct { Target string SessionID string Platform string + // Version specifies the version of the unerlying builder to use + Version BuilderVersion + // BuildID is an optional identifier that can be passed together with the + // build request. The same identifier can be used to gracefully cancel the + // build with the cancel request. + BuildID string + // Outputs defines configurations for exporting build results. Only supported + // in BuildKit mode + Outputs []ImageBuildOutput } +// ImageBuildOutput defines configuration for exporting a build result +type ImageBuildOutput struct { + Type string + Attrs map[string]string +} + +// BuilderVersion sets the version of underlying builder to use +type BuilderVersion string + +const ( + // BuilderV1 is the first generation builder in docker daemon + BuilderV1 BuilderVersion = "1" + // BuilderBuildKit is builder based on moby/buildkit project + BuilderBuildKit = "2" +) + // ImageBuildResponse holds information // returned by a server after building // an image. diff --git a/vendor/github.com/docker/docker/api/types/configs.go b/vendor/github.com/docker/docker/api/types/configs.go index f6537a27f2..178e911a7a 100644 --- a/vendor/github.com/docker/docker/api/types/configs.go +++ b/vendor/github.com/docker/docker/api/types/configs.go @@ -55,3 +55,10 @@ type PluginEnableConfig struct { type PluginDisableConfig struct { ForceDisable bool } + +// NetworkListConfig stores the options available for listing networks +type NetworkListConfig struct { + // TODO(@cpuguy83): naming is hard, this is pulled from what was being used in the router before moving here + Detailed bool + Verbose bool +} diff --git a/vendor/github.com/docker/docker/api/types/container/host_config.go b/vendor/github.com/docker/docker/api/types/container/host_config.go index 02271ecd98..c710107702 100644 --- a/vendor/github.com/docker/docker/api/types/container/host_config.go +++ b/vendor/github.com/docker/docker/api/types/container/host_config.go @@ -244,6 +244,16 @@ func (n PidMode) Container() string { return "" } +// DeviceRequest represents a request for devices from a device driver. +// Used by GPU device drivers. +type DeviceRequest struct { + Driver string // Name of device driver + Count int // Number of devices to request (-1 = All) + DeviceIDs []string // List of device IDs as recognizable by the device driver + Capabilities [][]string // An OR list of AND lists of device capabilities (e.g. "gpu") + Options map[string]string // Options to pass onto the device driver +} + // DeviceMapping represents the device mapping between the host and the container. type DeviceMapping struct { PathOnHost string @@ -327,13 +337,15 @@ type Resources struct { CpusetMems string // CpusetMems 0-2, 0,1 Devices []DeviceMapping // List of devices to map inside the container DeviceCgroupRules []string // List of rule to be added to the device cgroup + DeviceRequests []DeviceRequest // List of device requests for device drivers DiskQuota int64 // Disk limit (in bytes) KernelMemory int64 // Kernel memory limit (in bytes) + KernelMemoryTCP int64 // Hard limit for kernel TCP buffer memory (in bytes) MemoryReservation int64 // Memory soft limit (in bytes) MemorySwap int64 // Total memory usage (memory + swap); set `-1` to enable unlimited swap MemorySwappiness *int64 // Tuning container memory swappiness behaviour OomKillDisable *bool // Whether to disable OOM Killer or not - PidsLimit int64 // Setting pids limit for a container + PidsLimit *int64 // Setting PIDs limit for a container; Set `0` or `-1` for unlimited, or `null` to not change. Ulimits []*units.Ulimit // List of ulimits to be set in the container // Applicable to Windows @@ -369,9 +381,10 @@ type HostConfig struct { // Applicable to UNIX platforms CapAdd strslice.StrSlice // List of kernel capabilities to add to the container CapDrop strslice.StrSlice // List of kernel capabilities to remove from the container - DNS []string `json:"Dns"` // List of DNS server to lookup - DNSOptions []string `json:"DnsOptions"` // List of DNSOption to look for - DNSSearch []string `json:"DnsSearch"` // List of DNSSearch to look for + Capabilities []string `json:"Capabilities"` // List of kernel capabilities to be available for container (this overrides the default set) + DNS []string `json:"Dns"` // List of DNS server to lookup + DNSOptions []string `json:"DnsOptions"` // List of DNSOption to look for + DNSSearch []string `json:"DnsSearch"` // List of DNSSearch to look for ExtraHosts []string // List of extra hosts GroupAdd []string // List of additional groups that the container process will run as IpcMode IpcMode // IPC namespace to use for the container @@ -401,6 +414,12 @@ type HostConfig struct { // Mounts specs used by the container Mounts []mount.Mount `json:",omitempty"` + // MaskedPaths is the list of paths to be masked inside the container (this overrides the default set of paths) + MaskedPaths []string + + // ReadonlyPaths is the list of paths to be set as read-only inside the container (this overrides the default set of paths) + ReadonlyPaths []string + // Run a custom init inside the container, if null, use the daemon's configured settings Init *bool `json:",omitempty"` } diff --git a/vendor/github.com/docker/docker/api/types/filters/parse.go b/vendor/github.com/docker/docker/api/types/filters/parse.go index a41e3d8d96..d8f19ae227 100644 --- a/vendor/github.com/docker/docker/api/types/filters/parse.go +++ b/vendor/github.com/docker/docker/api/types/filters/parse.go @@ -323,6 +323,22 @@ func (args Args) WalkValues(field string, op func(value string) error) error { return nil } +// Clone returns a copy of args. +func (args Args) Clone() (newArgs Args) { + newArgs.fields = make(map[string]map[string]bool, len(args.fields)) + for k, m := range args.fields { + var mm map[string]bool + if m != nil { + mm = make(map[string]bool, len(m)) + for kk, v := range m { + mm[kk] = v + } + } + newArgs.fields[k] = mm + } + return newArgs +} + func deprecatedArgs(d map[string][]string) map[string]map[string]bool { m := map[string]map[string]bool{} for k, v := range d { diff --git a/vendor/github.com/docker/docker/api/types/mount/mount.go b/vendor/github.com/docker/docker/api/types/mount/mount.go index 3fef974df8..ab4446b38f 100644 --- a/vendor/github.com/docker/docker/api/types/mount/mount.go +++ b/vendor/github.com/docker/docker/api/types/mount/mount.go @@ -79,7 +79,8 @@ const ( // BindOptions defines options specific to mounts of type "bind". type BindOptions struct { - Propagation Propagation `json:",omitempty"` + Propagation Propagation `json:",omitempty"` + NonRecursive bool `json:",omitempty"` } // VolumeOptions represents the options for a mount of type volume. diff --git a/vendor/github.com/docker/docker/api/types/network/network.go b/vendor/github.com/docker/docker/api/types/network/network.go index 761d0b34f2..71e97338fd 100644 --- a/vendor/github.com/docker/docker/api/types/network/network.go +++ b/vendor/github.com/docker/docker/api/types/network/network.go @@ -1,4 +1,8 @@ package network // import "github.com/docker/docker/api/types/network" +import ( + "github.com/docker/docker/api/types/filters" + "github.com/docker/docker/errdefs" +) // Address represents an IP address type Address struct { @@ -106,3 +110,18 @@ type NetworkingConfig struct { type ConfigReference struct { Network string } + +var acceptedFilters = map[string]bool{ + "dangling": true, + "driver": true, + "id": true, + "label": true, + "name": true, + "scope": true, + "type": true, +} + +// ValidateFilters validates the list of filter args with the available filters. +func ValidateFilters(filter filters.Args) error { + return errdefs.InvalidParameter(filter.Validate(acceptedFilters)) +} diff --git a/vendor/github.com/docker/docker/api/types/plugins/logdriver/entry.pb.go b/vendor/github.com/docker/docker/api/types/plugins/logdriver/entry.pb.go index 5d7d8b4c41..5ced16895c 100644 --- a/vendor/github.com/docker/docker/api/types/plugins/logdriver/entry.pb.go +++ b/vendor/github.com/docker/docker/api/types/plugins/logdriver/entry.pb.go @@ -10,6 +10,7 @@ It has these top-level messages: LogEntry + PartialLogEntryMetadata */ package logdriver @@ -31,10 +32,11 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package type LogEntry struct { - Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` - TimeNano int64 `protobuf:"varint,2,opt,name=time_nano,json=timeNano,proto3" json:"time_nano,omitempty"` - Line []byte `protobuf:"bytes,3,opt,name=line,proto3" json:"line,omitempty"` - Partial bool `protobuf:"varint,4,opt,name=partial,proto3" json:"partial,omitempty"` + Source string `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + TimeNano int64 `protobuf:"varint,2,opt,name=time_nano,json=timeNano,proto3" json:"time_nano,omitempty"` + Line []byte `protobuf:"bytes,3,opt,name=line,proto3" json:"line,omitempty"` + Partial bool `protobuf:"varint,4,opt,name=partial,proto3" json:"partial,omitempty"` + PartialLogMetadata *PartialLogEntryMetadata `protobuf:"bytes,5,opt,name=partial_log_metadata,json=partialLogMetadata" json:"partial_log_metadata,omitempty"` } func (m *LogEntry) Reset() { *m = LogEntry{} } @@ -70,8 +72,48 @@ func (m *LogEntry) GetPartial() bool { return false } +func (m *LogEntry) GetPartialLogMetadata() *PartialLogEntryMetadata { + if m != nil { + return m.PartialLogMetadata + } + return nil +} + +type PartialLogEntryMetadata struct { + Last bool `protobuf:"varint,1,opt,name=last,proto3" json:"last,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Ordinal int32 `protobuf:"varint,3,opt,name=ordinal,proto3" json:"ordinal,omitempty"` +} + +func (m *PartialLogEntryMetadata) Reset() { *m = PartialLogEntryMetadata{} } +func (m *PartialLogEntryMetadata) String() string { return proto.CompactTextString(m) } +func (*PartialLogEntryMetadata) ProtoMessage() {} +func (*PartialLogEntryMetadata) Descriptor() ([]byte, []int) { return fileDescriptorEntry, []int{1} } + +func (m *PartialLogEntryMetadata) GetLast() bool { + if m != nil { + return m.Last + } + return false +} + +func (m *PartialLogEntryMetadata) GetId() string { + if m != nil { + return m.Id + } + return "" +} + +func (m *PartialLogEntryMetadata) GetOrdinal() int32 { + if m != nil { + return m.Ordinal + } + return 0 +} + func init() { proto.RegisterType((*LogEntry)(nil), "LogEntry") + proto.RegisterType((*PartialLogEntryMetadata)(nil), "PartialLogEntryMetadata") } func (m *LogEntry) Marshal() (dAtA []byte, err error) { size := m.Size() @@ -115,6 +157,55 @@ func (m *LogEntry) MarshalTo(dAtA []byte) (int, error) { } i++ } + if m.PartialLogMetadata != nil { + dAtA[i] = 0x2a + i++ + i = encodeVarintEntry(dAtA, i, uint64(m.PartialLogMetadata.Size())) + n1, err := m.PartialLogMetadata.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n1 + } + return i, nil +} + +func (m *PartialLogEntryMetadata) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PartialLogEntryMetadata) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if m.Last { + dAtA[i] = 0x8 + i++ + if m.Last { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i++ + } + if len(m.Id) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintEntry(dAtA, i, uint64(len(m.Id))) + i += copy(dAtA[i:], m.Id) + } + if m.Ordinal != 0 { + dAtA[i] = 0x18 + i++ + i = encodeVarintEntry(dAtA, i, uint64(m.Ordinal)) + } return i, nil } @@ -162,6 +253,26 @@ func (m *LogEntry) Size() (n int) { if m.Partial { n += 2 } + if m.PartialLogMetadata != nil { + l = m.PartialLogMetadata.Size() + n += 1 + l + sovEntry(uint64(l)) + } + return n +} + +func (m *PartialLogEntryMetadata) Size() (n int) { + var l int + _ = l + if m.Last { + n += 2 + } + l = len(m.Id) + if l > 0 { + n += 1 + l + sovEntry(uint64(l)) + } + if m.Ordinal != 0 { + n += 1 + sovEntry(uint64(m.Ordinal)) + } return n } @@ -306,6 +417,157 @@ func (m *LogEntry) Unmarshal(dAtA []byte) error { } } m.Partial = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PartialLogMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEntry + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEntry + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PartialLogMetadata == nil { + m.PartialLogMetadata = &PartialLogEntryMetadata{} + } + if err := m.PartialLogMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEntry(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthEntry + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PartialLogEntryMetadata) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEntry + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PartialLogEntryMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PartialLogEntryMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Last", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEntry + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Last = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEntry + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEntry + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Ordinal", wireType) + } + m.Ordinal = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEntry + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Ordinal |= (int32(b) & 0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipEntry(dAtA[iNdEx:]) @@ -435,15 +697,20 @@ var ( func init() { proto.RegisterFile("entry.proto", fileDescriptorEntry) } var fileDescriptorEntry = []byte{ - // 149 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x4e, 0xcd, 0x2b, 0x29, - 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x57, 0xca, 0xe5, 0xe2, 0xf0, 0xc9, 0x4f, 0x77, 0x05, - 0x89, 0x08, 0x89, 0x71, 0xb1, 0x15, 0xe7, 0x97, 0x16, 0x25, 0xa7, 0x4a, 0x30, 0x2a, 0x30, 0x6a, - 0x70, 0x06, 0x41, 0x79, 0x42, 0xd2, 0x5c, 0x9c, 0x25, 0x99, 0xb9, 0xa9, 0xf1, 0x79, 0x89, 0x79, - 0xf9, 0x12, 0x4c, 0x0a, 0x8c, 0x1a, 0xcc, 0x41, 0x1c, 0x20, 0x01, 0xbf, 0xc4, 0xbc, 0x7c, 0x21, - 0x21, 0x2e, 0x96, 0x9c, 0xcc, 0xbc, 0x54, 0x09, 0x66, 0x05, 0x46, 0x0d, 0x9e, 0x20, 0x30, 0x5b, - 0x48, 0x82, 0x8b, 0xbd, 0x20, 0xb1, 0xa8, 0x24, 0x33, 0x31, 0x47, 0x82, 0x45, 0x81, 0x51, 0x83, - 0x23, 0x08, 0xc6, 0x75, 0xe2, 0x39, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, - 0xe4, 0x18, 0x93, 0xd8, 0xc0, 0x6e, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x2d, 0x24, 0x5a, - 0xd4, 0x92, 0x00, 0x00, 0x00, + // 237 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x90, 0xbd, 0x4a, 0x04, 0x31, + 0x14, 0x85, 0xb9, 0xb3, 0x3f, 0xce, 0xdc, 0x5d, 0x2c, 0x82, 0x68, 0x40, 0x18, 0xc2, 0x56, 0xa9, + 0xb6, 0xd0, 0x37, 0x10, 0x6c, 0x44, 0x45, 0xd2, 0x58, 0x0e, 0x57, 0x27, 0x2c, 0x81, 0xd9, 0xdc, + 0x21, 0x13, 0x0b, 0x1f, 0xcd, 0x37, 0xb0, 0xf4, 0x11, 0x64, 0x9e, 0x44, 0x26, 0x4e, 0xec, 0xec, + 0xce, 0x39, 0x5f, 0x8a, 0x2f, 0x17, 0x37, 0xd6, 0xc7, 0xf0, 0xbe, 0xef, 0x03, 0x47, 0xde, 0x7d, + 0x00, 0x96, 0xf7, 0x7c, 0xb8, 0x9d, 0x26, 0x71, 0x8e, 0xeb, 0x81, 0xdf, 0xc2, 0xab, 0x95, 0xa0, + 0x40, 0x57, 0x66, 0x6e, 0xe2, 0x12, 0xab, 0xe8, 0x8e, 0xb6, 0xf1, 0xe4, 0x59, 0x16, 0x0a, 0xf4, + 0xc2, 0x94, 0xd3, 0xf0, 0x48, 0x9e, 0x85, 0xc0, 0x65, 0xe7, 0xbc, 0x95, 0x0b, 0x05, 0x7a, 0x6b, + 0x52, 0x16, 0x12, 0x4f, 0x7a, 0x0a, 0xd1, 0x51, 0x27, 0x97, 0x0a, 0x74, 0x69, 0x72, 0x15, 0x77, + 0x78, 0x36, 0xc7, 0xa6, 0xe3, 0x43, 0x73, 0xb4, 0x91, 0x5a, 0x8a, 0x24, 0x57, 0x0a, 0xf4, 0xe6, + 0x4a, 0xee, 0x9f, 0x7e, 0x61, 0x56, 0x7a, 0x98, 0xb9, 0x11, 0xfd, 0x1f, 0xc8, 0xdb, 0xee, 0x19, + 0x2f, 0xfe, 0x79, 0x9e, 0xa4, 0x68, 0x88, 0xe9, 0x1f, 0xa5, 0x49, 0x59, 0x9c, 0x62, 0xe1, 0xda, + 0xa4, 0x5f, 0x99, 0xc2, 0xb5, 0x93, 0x24, 0x87, 0xd6, 0x79, 0xea, 0x92, 0xfb, 0xca, 0xe4, 0x7a, + 0xb3, 0xfd, 0x1c, 0x6b, 0xf8, 0x1a, 0x6b, 0xf8, 0x1e, 0x6b, 0x78, 0x59, 0xa7, 0x4b, 0x5d, 0xff, + 0x04, 0x00, 0x00, 0xff, 0xff, 0x8f, 0xed, 0x9f, 0xb6, 0x38, 0x01, 0x00, 0x00, } diff --git a/vendor/github.com/docker/docker/api/types/plugins/logdriver/entry.proto b/vendor/github.com/docker/docker/api/types/plugins/logdriver/entry.proto index a4e96ea5f4..75be3d6416 100644 --- a/vendor/github.com/docker/docker/api/types/plugins/logdriver/entry.proto +++ b/vendor/github.com/docker/docker/api/types/plugins/logdriver/entry.proto @@ -5,4 +5,12 @@ message LogEntry { int64 time_nano = 2; bytes line = 3; bool partial = 4; + PartialLogEntryMetadata partial_log_metadata = 5; } + +message PartialLogEntryMetadata { + bool last = 1; + string id = 2; + int32 ordinal = 3; +} + diff --git a/vendor/github.com/docker/docker/api/types/seccomp.go b/vendor/github.com/docker/docker/api/types/seccomp.go index 67a41e1a89..2259c6be1e 100644 --- a/vendor/github.com/docker/docker/api/types/seccomp.go +++ b/vendor/github.com/docker/docker/api/types/seccomp.go @@ -77,8 +77,9 @@ type Arg struct { // Filter is used to conditionally apply Seccomp rules type Filter struct { - Caps []string `json:"caps,omitempty"` - Arches []string `json:"arches,omitempty"` + Caps []string `json:"caps,omitempty"` + Arches []string `json:"arches,omitempty"` + MinKernel string `json:"minKernel,omitempty"` } // Syscall is used to match a group of syscalls in Seccomp diff --git a/vendor/github.com/docker/docker/api/types/stats.go b/vendor/github.com/docker/docker/api/types/stats.go index 60175c0613..20daebed14 100644 --- a/vendor/github.com/docker/docker/api/types/stats.go +++ b/vendor/github.com/docker/docker/api/types/stats.go @@ -120,7 +120,7 @@ type NetworkStats struct { RxBytes uint64 `json:"rx_bytes"` // Packets received. Windows and Linux. RxPackets uint64 `json:"rx_packets"` - // Received errors. Not used on Windows. Note that we dont `omitempty` this + // Received errors. Not used on Windows. Note that we don't `omitempty` this // field as it is expected in the >=v1.21 API stats structure. RxErrors uint64 `json:"rx_errors"` // Incoming packets dropped. Windows and Linux. @@ -129,7 +129,7 @@ type NetworkStats struct { TxBytes uint64 `json:"tx_bytes"` // Packets sent. Windows and Linux. TxPackets uint64 `json:"tx_packets"` - // Sent errors. Not used on Windows. Note that we dont `omitempty` this + // Sent errors. Not used on Windows. Note that we don't `omitempty` this // field as it is expected in the >=v1.21 API stats structure. TxErrors uint64 `json:"tx_errors"` // Outgoing packets dropped. Windows and Linux. diff --git a/vendor/github.com/docker/docker/api/types/swarm/config.go b/vendor/github.com/docker/docker/api/types/swarm/config.go index a1555cf43e..16202ccce6 100644 --- a/vendor/github.com/docker/docker/api/types/swarm/config.go +++ b/vendor/github.com/docker/docker/api/types/swarm/config.go @@ -27,9 +27,14 @@ type ConfigReferenceFileTarget struct { Mode os.FileMode } +// ConfigReferenceRuntimeTarget is a target for a config specifying that it +// isn't mounted into the container but instead has some other purpose. +type ConfigReferenceRuntimeTarget struct{} + // ConfigReference is a reference to a config in swarm type ConfigReference struct { - File *ConfigReferenceFileTarget + File *ConfigReferenceFileTarget `json:",omitempty"` + Runtime *ConfigReferenceRuntimeTarget `json:",omitempty"` ConfigID string ConfigName string } diff --git a/vendor/github.com/docker/docker/api/types/swarm/container.go b/vendor/github.com/docker/docker/api/types/swarm/container.go index 0041653c9d..48190c1762 100644 --- a/vendor/github.com/docker/docker/api/types/swarm/container.go +++ b/vendor/github.com/docker/docker/api/types/swarm/container.go @@ -33,6 +33,7 @@ type SELinuxContext struct { // CredentialSpec for managed service account (Windows only) type CredentialSpec struct { + Config string File string Registry string } @@ -55,6 +56,7 @@ type ContainerSpec struct { User string `json:",omitempty"` Groups []string `json:",omitempty"` Privileges *Privileges `json:",omitempty"` + Init *bool `json:",omitempty"` StopSignal string `json:",omitempty"` TTY bool `json:",omitempty"` OpenStdin bool `json:",omitempty"` @@ -70,4 +72,5 @@ type ContainerSpec struct { Secrets []*SecretReference `json:",omitempty"` Configs []*ConfigReference `json:",omitempty"` Isolation container.Isolation `json:",omitempty"` + Sysctls map[string]string `json:",omitempty"` } diff --git a/vendor/github.com/docker/docker/api/types/swarm/swarm.go b/vendor/github.com/docker/docker/api/types/swarm/swarm.go index 1b111d725b..b25f999646 100644 --- a/vendor/github.com/docker/docker/api/types/swarm/swarm.go +++ b/vendor/github.com/docker/docker/api/types/swarm/swarm.go @@ -1,6 +1,8 @@ package swarm // import "github.com/docker/docker/api/types/swarm" -import "time" +import ( + "time" +) // ClusterInfo represents info about the cluster for outputting in "info" // it contains the same information as "Swarm", but without the JoinTokens @@ -10,6 +12,9 @@ type ClusterInfo struct { Spec Spec TLSInfo TLSInfo RootRotationInProgress bool + DefaultAddrPool []string + SubnetSize uint32 + DataPathPort uint32 } // Swarm represents a swarm. @@ -149,10 +154,13 @@ type InitRequest struct { ListenAddr string AdvertiseAddr string DataPathAddr string + DataPathPort uint32 ForceNewCluster bool Spec Spec AutoLockManagers bool Availability NodeAvailability + DefaultAddrPool []string + SubnetSize uint32 } // JoinRequest is the request used to join a swarm. @@ -201,6 +209,8 @@ type Info struct { Managers int `json:",omitempty"` Cluster *ClusterInfo `json:",omitempty"` + + Warnings []string `json:",omitempty"` } // Peer represents a peer. diff --git a/vendor/github.com/docker/docker/api/types/swarm/task.go b/vendor/github.com/docker/docker/api/types/swarm/task.go index b35605d12f..d5a57df5db 100644 --- a/vendor/github.com/docker/docker/api/types/swarm/task.go +++ b/vendor/github.com/docker/docker/api/types/swarm/task.go @@ -127,6 +127,7 @@ type ResourceRequirements struct { type Placement struct { Constraints []string `json:",omitempty"` Preferences []PlacementPreference `json:",omitempty"` + MaxReplicas uint64 `json:",omitempty"` // Platforms stores all the platforms that the image can run on. // This field is used in the platform filter for scheduling. If empty, diff --git a/vendor/github.com/docker/docker/api/types/types.go b/vendor/github.com/docker/docker/api/types/types.go index 729f4eb6c4..a39ffcb7be 100644 --- a/vendor/github.com/docker/docker/api/types/types.go +++ b/vendor/github.com/docker/docker/api/types/types.go @@ -102,9 +102,10 @@ type ContainerStats struct { // Ping contains response of Engine API: // GET "/_ping" type Ping struct { - APIVersion string - OSType string - Experimental bool + APIVersion string + OSType string + Experimental bool + BuilderVersion BuilderVersion } // ComponentVersion describes the version information for a specific component. @@ -157,10 +158,12 @@ type Info struct { MemoryLimit bool SwapLimit bool KernelMemory bool + KernelMemoryTCP bool CPUCfsPeriod bool `json:"CpuCfsPeriod"` CPUCfsQuota bool `json:"CpuCfsQuota"` CPUShares bool CPUSet bool + PidsLimit bool IPv4Forwarding bool BridgeNfIptables bool BridgeNfIP6tables bool `json:"BridgeNfIp6tables"` @@ -204,6 +207,8 @@ type Info struct { RuncCommit Commit InitCommit Commit SecurityOptions []string + ProductLicense string `json:",omitempty"` + Warnings []string } // KeyValue holds a key/value pair @@ -512,7 +517,8 @@ type DiskUsage struct { Images []*ImageSummary Containers []*Container Volumes []*Volume - BuilderSize int64 + BuildCache []*BuildCache + BuilderSize int64 // deprecated } // ContainersPruneReport contains the response for Engine API: @@ -539,6 +545,7 @@ type ImagesPruneReport struct { // BuildCachePruneReport contains the response for Engine API: // POST "/build/prune" type BuildCachePruneReport struct { + CachesDeleted []string SpaceReclaimed uint64 } @@ -585,3 +592,24 @@ type PushResult struct { type BuildResult struct { ID string } + +// BuildCache contains information about a build cache record +type BuildCache struct { + ID string + Parent string + Type string + Description string + InUse bool + Shared bool + Size int64 + CreatedAt time.Time + LastUsedAt *time.Time + UsageCount int +} + +// BuildCachePruneOptions hold parameters to prune the build cache +type BuildCachePruneOptions struct { + All bool + KeepStorage int64 + Filters filters.Args +} diff --git a/vendor/github.com/docker/docker/api/types/volume/volume_create.go b/vendor/github.com/docker/docker/api/types/volume/volume_create.go index 539e9b97d9..f12e48612c 100644 --- a/vendor/github.com/docker/docker/api/types/volume/volume_create.go +++ b/vendor/github.com/docker/docker/api/types/volume/volume_create.go @@ -7,7 +7,7 @@ package volume // See hack/generate-swagger-api.sh // ---------------------------------------------------------------------------- -// VolumeCreateBody +// VolumeCreateBody Volume configuration // swagger:model VolumeCreateBody type VolumeCreateBody struct { diff --git a/vendor/github.com/docker/docker/api/types/volume/volume_list.go b/vendor/github.com/docker/docker/api/types/volume/volume_list.go index 1bb279dbb3..020198f737 100644 --- a/vendor/github.com/docker/docker/api/types/volume/volume_list.go +++ b/vendor/github.com/docker/docker/api/types/volume/volume_list.go @@ -9,7 +9,7 @@ package volume import "github.com/docker/docker/api/types" -// VolumeListOKBody +// VolumeListOKBody Volume list response // swagger:model VolumeListOKBody type VolumeListOKBody struct { diff --git a/vendor/github.com/docker/docker/builder/dockerfile/buildargs.go b/vendor/github.com/docker/docker/builder/dockerfile/buildargs.go index f9cceaa05c..aa794fb7bc 100644 --- a/vendor/github.com/docker/docker/builder/dockerfile/buildargs.go +++ b/vendor/github.com/docker/docker/builder/dockerfile/buildargs.go @@ -113,7 +113,7 @@ func (b *BuildArgs) GetAllAllowed() map[string]string { return b.getAllFromMapping(b.allowedBuildArgs) } -// GetAllMeta returns a mapping with all the meta meta args +// GetAllMeta returns a mapping with all the meta args func (b *BuildArgs) GetAllMeta() map[string]string { return b.getAllFromMapping(b.allowedMetaArgs) } diff --git a/vendor/github.com/docker/docker/builder/dockerfile/builder.go b/vendor/github.com/docker/docker/builder/dockerfile/builder.go index 890e7b89fd..a6094a8973 100644 --- a/vendor/github.com/docker/docker/builder/dockerfile/builder.go +++ b/vendor/github.com/docker/docker/builder/dockerfile/builder.go @@ -10,13 +10,11 @@ import ( "strings" "time" + "github.com/containerd/containerd/platforms" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/backend" "github.com/docker/docker/api/types/container" "github.com/docker/docker/builder" - "github.com/docker/docker/builder/dockerfile/instructions" - "github.com/docker/docker/builder/dockerfile/parser" - "github.com/docker/docker/builder/dockerfile/shell" "github.com/docker/docker/builder/fscache" "github.com/docker/docker/builder/remotecontext" "github.com/docker/docker/errdefs" @@ -24,7 +22,11 @@ import ( "github.com/docker/docker/pkg/streamformatter" "github.com/docker/docker/pkg/stringid" "github.com/docker/docker/pkg/system" + "github.com/moby/buildkit/frontend/dockerfile/instructions" + "github.com/moby/buildkit/frontend/dockerfile/parser" + "github.com/moby/buildkit/frontend/dockerfile/shell" "github.com/moby/buildkit/session" + specs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/pkg/errors" "github.com/sirupsen/logrus" "golang.org/x/sync/syncmap" @@ -54,21 +56,21 @@ type SessionGetter interface { // BuildManager is shared across all Builder objects type BuildManager struct { - idMappings *idtools.IDMappings - backend builder.Backend - pathCache pathCache // TODO: make this persistent - sg SessionGetter - fsCache *fscache.FSCache + idMapping *idtools.IdentityMapping + backend builder.Backend + pathCache pathCache // TODO: make this persistent + sg SessionGetter + fsCache *fscache.FSCache } // NewBuildManager creates a BuildManager -func NewBuildManager(b builder.Backend, sg SessionGetter, fsCache *fscache.FSCache, idMappings *idtools.IDMappings) (*BuildManager, error) { +func NewBuildManager(b builder.Backend, sg SessionGetter, fsCache *fscache.FSCache, identityMapping *idtools.IdentityMapping) (*BuildManager, error) { bm := &BuildManager{ - backend: b, - pathCache: &syncmap.Map{}, - sg: sg, - idMappings: idMappings, - fsCache: fsCache, + backend: b, + pathCache: &syncmap.Map{}, + sg: sg, + idMapping: identityMapping, + fsCache: fsCache, } if err := fsCache.RegisterTransport(remotecontext.ClientSessionRemote, NewClientSessionTransport()); err != nil { return nil, err @@ -104,21 +106,18 @@ func (bm *BuildManager) Build(ctx context.Context, config backend.BuildConfig) ( source = src } - os := "" - apiPlatform := system.ParsePlatform(config.Options.Platform) - if apiPlatform.OS != "" { - os = apiPlatform.OS - } - config.Options.Platform = os - builderOptions := builderOptions{ Options: config.Options, ProgressWriter: config.ProgressWriter, Backend: bm.backend, PathCache: bm.pathCache, - IDMappings: bm.idMappings, + IDMapping: bm.idMapping, + } + b, err := newBuilder(ctx, builderOptions) + if err != nil { + return nil, err } - return newBuilder(ctx, builderOptions).build(source, dockerfile) + return b.build(source, dockerfile) } func (bm *BuildManager) initializeClientSession(ctx context.Context, cancel func(), options *types.ImageBuildOptions) (builder.Source, error) { @@ -160,7 +159,7 @@ type builderOptions struct { Backend builder.Backend ProgressWriter backend.ProgressWriter PathCache pathCache - IDMappings *idtools.IDMappings + IDMapping *idtools.IdentityMapping } // Builder is a Dockerfile builder @@ -176,16 +175,17 @@ type Builder struct { docker builder.Backend clientCtx context.Context - idMappings *idtools.IDMappings + idMapping *idtools.IdentityMapping disableCommit bool imageSources *imageSources pathCache pathCache containerManager *containerManager imageProber ImageProber + platform *specs.Platform } // newBuilder creates a new Dockerfile builder from an optional dockerfile and a Options. -func newBuilder(clientCtx context.Context, options builderOptions) *Builder { +func newBuilder(clientCtx context.Context, options builderOptions) (*Builder, error) { config := options.Options if config == nil { config = new(types.ImageBuildOptions) @@ -199,14 +199,27 @@ func newBuilder(clientCtx context.Context, options builderOptions) *Builder { Aux: options.ProgressWriter.AuxFormatter, Output: options.ProgressWriter.Output, docker: options.Backend, - idMappings: options.IDMappings, + idMapping: options.IDMapping, imageSources: newImageSources(clientCtx, options), pathCache: options.PathCache, imageProber: newImageProber(options.Backend, config.CacheFrom, config.NoCache), containerManager: newContainerManager(options.Backend), } - return b + // same as in Builder.Build in builder/builder-next/builder.go + // TODO: remove once config.Platform is of type specs.Platform + if config.Platform != "" { + sp, err := platforms.Parse(config.Platform) + if err != nil { + return nil, err + } + if err := system.ValidatePlatform(sp); err != nil { + return nil, err + } + b.platform = &sp + } + + return b, nil } // Build 'LABEL' command(s) from '--label' options and add to the last stage @@ -264,7 +277,7 @@ func emitImageID(aux *streamformatter.AuxFormatter, state *dispatchState) error if aux == nil || state.imageID == "" { return nil } - return aux.Emit(types.BuildResult{ID: state.imageID}) + return aux.Emit("", types.BuildResult{ID: state.imageID}) } func processMetaArg(meta instructions.ArgCommand, shlex *shell.Lex, args *BuildArgs) error { @@ -372,9 +385,12 @@ func BuildFromConfig(config *container.Config, changes []string, os string) (*co return nil, errdefs.InvalidParameter(err) } - b := newBuilder(context.Background(), builderOptions{ + b, err := newBuilder(context.Background(), builderOptions{ Options: &types.ImageBuildOptions{NoCache: true}, }) + if err != nil { + return nil, err + } // ensure that the commands are valid for _, n := range dockerfile.AST.Children { diff --git a/vendor/github.com/docker/docker/builder/dockerfile/command/command.go b/vendor/github.com/docker/docker/builder/dockerfile/command/command.go deleted file mode 100644 index 303b59096b..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/command/command.go +++ /dev/null @@ -1,46 +0,0 @@ -// Package command contains the set of Dockerfile commands. -package command // import "github.com/docker/docker/builder/dockerfile/command" - -// Define constants for the command strings -const ( - Add = "add" - Arg = "arg" - Cmd = "cmd" - Copy = "copy" - Entrypoint = "entrypoint" - Env = "env" - Expose = "expose" - From = "from" - Healthcheck = "healthcheck" - Label = "label" - Maintainer = "maintainer" - Onbuild = "onbuild" - Run = "run" - Shell = "shell" - StopSignal = "stopsignal" - User = "user" - Volume = "volume" - Workdir = "workdir" -) - -// Commands is list of all Dockerfile commands -var Commands = map[string]struct{}{ - Add: {}, - Arg: {}, - Cmd: {}, - Copy: {}, - Entrypoint: {}, - Env: {}, - Expose: {}, - From: {}, - Healthcheck: {}, - Label: {}, - Maintainer: {}, - Onbuild: {}, - Run: {}, - Shell: {}, - StopSignal: {}, - User: {}, - Volume: {}, - Workdir: {}, -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/copy.go b/vendor/github.com/docker/docker/builder/dockerfile/copy.go index 43f40b62f9..ad9b08dfef 100644 --- a/vendor/github.com/docker/docker/builder/dockerfile/copy.go +++ b/vendor/github.com/docker/docker/builder/dockerfile/copy.go @@ -24,6 +24,7 @@ import ( "github.com/docker/docker/pkg/streamformatter" "github.com/docker/docker/pkg/system" "github.com/docker/docker/pkg/urlutil" + specs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/pkg/errors" ) @@ -72,7 +73,7 @@ type copier struct { source builder.Source pathCache pathCache download sourceDownloader - platform string + platform *specs.Platform // for cleanup. TODO: having copier.cleanup() is error prone and hard to // follow. Code calling performCopy should manage the lifecycle of its params. // Copier should take override source as input, not imageMount. @@ -81,13 +82,28 @@ type copier struct { } func copierFromDispatchRequest(req dispatchRequest, download sourceDownloader, imageSource *imageMount) copier { + platform := req.builder.platform + if platform == nil { + // May be nil if not explicitly set in API/dockerfile + platform = &specs.Platform{} + } + if platform.OS == "" { + // Default to the dispatch requests operating system if not explicit in API/dockerfile + platform.OS = req.state.operatingSystem + } + if platform.OS == "" { + // This is a failsafe just in case. Shouldn't be hit. + platform.OS = runtime.GOOS + } + return copier{ source: req.source, pathCache: req.builder.pathCache, download: download, imageSource: imageSource, - platform: req.builder.options.Platform, + platform: platform, } + } func (o *copier) createCopyInstruction(args []string, cmdName string) (copyInstruction, error) { @@ -95,8 +111,14 @@ func (o *copier) createCopyInstruction(args []string, cmdName string) (copyInstr last := len(args) - 1 // Work in platform-specific filepath semantics - inst.dest = fromSlash(args[last], o.platform) - separator := string(separator(o.platform)) + // TODO: This OS switch for paths is NOT correct and should not be supported. + // Maintained for backwards compatibility + pathOS := runtime.GOOS + if o.platform != nil { + pathOS = o.platform.OS + } + inst.dest = fromSlash(args[last], pathOS) + separator := string(separator(pathOS)) infos, err := o.getCopyInfosForSourcePaths(args[0:last], inst.dest) if err != nil { return inst, errors.Wrapf(err, "%s failed", cmdName) @@ -444,7 +466,7 @@ func downloadSource(output io.Writer, stdout io.Writer, srcURL string) (remote b type copyFileOptions struct { decompress bool - chownPair idtools.IDPair + identity idtools.Identity archiver Archiver } @@ -474,7 +496,7 @@ func performCopyForInfo(dest copyInfo, source copyInfo, options copyFileOptions) return errors.Wrapf(err, "source path not found") } if src.IsDir() { - return copyDirectory(archiver, srcEndpoint, destEndpoint, options.chownPair) + return copyDirectory(archiver, srcEndpoint, destEndpoint, options.identity) } if options.decompress && isArchivePath(source.root, srcPath) && !source.noDecompress { return archiver.UntarPath(srcPath, destPath) @@ -492,7 +514,7 @@ func performCopyForInfo(dest copyInfo, source copyInfo, options copyFileOptions) destPath = dest.root.Join(destPath, source.root.Base(source.path)) destEndpoint = ©Endpoint{driver: dest.root, path: destPath} } - return copyFile(archiver, srcEndpoint, destEndpoint, options.chownPair) + return copyFile(archiver, srcEndpoint, destEndpoint, options.identity) } func isArchivePath(driver containerfs.ContainerFS, path string) bool { @@ -510,7 +532,7 @@ func isArchivePath(driver containerfs.ContainerFS, path string) bool { return err == nil } -func copyDirectory(archiver Archiver, source, dest *copyEndpoint, chownPair idtools.IDPair) error { +func copyDirectory(archiver Archiver, source, dest *copyEndpoint, identity idtools.Identity) error { destExists, err := isExistingDirectory(dest) if err != nil { return errors.Wrapf(err, "failed to query destination path") @@ -520,17 +542,17 @@ func copyDirectory(archiver Archiver, source, dest *copyEndpoint, chownPair idto return errors.Wrapf(err, "failed to copy directory") } // TODO: @gupta-ak. Investigate how LCOW permission mappings will work. - return fixPermissions(source.path, dest.path, chownPair, !destExists) + return fixPermissions(source.path, dest.path, identity, !destExists) } -func copyFile(archiver Archiver, source, dest *copyEndpoint, chownPair idtools.IDPair) error { +func copyFile(archiver Archiver, source, dest *copyEndpoint, identity idtools.Identity) error { if runtime.GOOS == "windows" && dest.driver.OS() == "linux" { // LCOW if err := dest.driver.MkdirAll(dest.driver.Dir(dest.path), 0755); err != nil { return errors.Wrapf(err, "failed to create new directory") } } else { - if err := idtools.MkdirAllAndChownNew(filepath.Dir(dest.path), 0755, chownPair); err != nil { + if err := idtools.MkdirAllAndChownNew(filepath.Dir(dest.path), 0755, identity); err != nil { // Normal containers return errors.Wrapf(err, "failed to create new directory") } @@ -540,7 +562,7 @@ func copyFile(archiver Archiver, source, dest *copyEndpoint, chownPair idtools.I return errors.Wrapf(err, "failed to copy file") } // TODO: @gupta-ak. Investigate how LCOW permission mappings will work. - return fixPermissions(source.path, dest.path, chownPair, false) + return fixPermissions(source.path, dest.path, identity, false) } func endsInSlash(driver containerfs.Driver, path string) bool { diff --git a/vendor/github.com/docker/docker/builder/dockerfile/copy_unix.go b/vendor/github.com/docker/docker/builder/dockerfile/copy_unix.go index 15453452e5..7702264445 100644 --- a/vendor/github.com/docker/docker/builder/dockerfile/copy_unix.go +++ b/vendor/github.com/docker/docker/builder/dockerfile/copy_unix.go @@ -10,7 +10,7 @@ import ( "github.com/docker/docker/pkg/idtools" ) -func fixPermissions(source, destination string, rootIDs idtools.IDPair, overrideSkip bool) error { +func fixPermissions(source, destination string, identity idtools.Identity, overrideSkip bool) error { var ( skipChownRoot bool err error @@ -39,7 +39,7 @@ func fixPermissions(source, destination string, rootIDs idtools.IDPair, override } fullpath = filepath.Join(destination, cleaned) - return os.Lchown(fullpath, rootIDs.UID, rootIDs.GID) + return os.Lchown(fullpath, identity.UID, identity.GID) }) } diff --git a/vendor/github.com/docker/docker/builder/dockerfile/copy_windows.go b/vendor/github.com/docker/docker/builder/dockerfile/copy_windows.go index 907c34407c..59c1a4b7c3 100644 --- a/vendor/github.com/docker/docker/builder/dockerfile/copy_windows.go +++ b/vendor/github.com/docker/docker/builder/dockerfile/copy_windows.go @@ -1,11 +1,17 @@ package dockerfile // import "github.com/docker/docker/builder/dockerfile" import ( - "errors" + "fmt" + "os" "path/filepath" "strings" + "github.com/Microsoft/go-winio" "github.com/docker/docker/pkg/idtools" + "github.com/docker/docker/pkg/reexec" + "github.com/docker/docker/pkg/system" + "github.com/pkg/errors" + "golang.org/x/sys/windows" ) var pathBlacklist = map[string]bool{ @@ -13,9 +19,69 @@ var pathBlacklist = map[string]bool{ "c:\\windows": true, } -func fixPermissions(source, destination string, rootIDs idtools.IDPair, overrideSkip bool) error { - // chown is not supported on Windows - return nil +func init() { + reexec.Register("windows-fix-permissions", fixPermissionsReexec) +} + +func fixPermissions(source, destination string, identity idtools.Identity, _ bool) error { + if identity.SID == "" { + return nil + } + + cmd := reexec.Command("windows-fix-permissions", source, destination, identity.SID) + output, err := cmd.CombinedOutput() + + return errors.Wrapf(err, "failed to exec windows-fix-permissions: %s", output) +} + +func fixPermissionsReexec() { + err := fixPermissionsWindows(os.Args[1], os.Args[2], os.Args[3]) + if err != nil { + fmt.Fprint(os.Stderr, err) + os.Exit(1) + } +} + +func fixPermissionsWindows(source, destination, SID string) error { + + privileges := []string{winio.SeRestorePrivilege, system.SeTakeOwnershipPrivilege} + + err := winio.EnableProcessPrivileges(privileges) + if err != nil { + return err + } + + defer winio.DisableProcessPrivileges(privileges) + + sid, err := windows.StringToSid(SID) + if err != nil { + return err + } + + // Owners on *nix have read/write/delete/read control and write DAC. + // Add an ACE that grants this to the user/group specified with the + // chown option. Currently Windows is not honoring the owner change, + // however, they are aware of this and it should be fixed at some + // point. + + sddlString := system.SddlAdministratorsLocalSystem + sddlString += "(A;OICI;GRGWGXRCWDSD;;;" + SID + ")" + + securityDescriptor, err := winio.SddlToSecurityDescriptor(sddlString) + if err != nil { + return err + } + + var daclPresent uint32 + var daclDefaulted uint32 + var dacl *byte + + err = system.GetSecurityDescriptorDacl(&securityDescriptor[0], &daclPresent, &dacl, &daclDefaulted) + if err != nil { + return err + } + + return system.SetNamedSecurityInfo(windows.StringToUTF16Ptr(destination), system.SE_FILE_OBJECT, system.OWNER_SECURITY_INFORMATION|system.DACL_SECURITY_INFORMATION, sid, nil, dacl, nil) } func validateCopySourcePath(imageSource *imageMount, origPath, platform string) error { diff --git a/vendor/github.com/docker/docker/builder/dockerfile/dispatchers.go b/vendor/github.com/docker/docker/builder/dockerfile/dispatchers.go index 9dd7502453..f2da08ed4d 100644 --- a/vendor/github.com/docker/docker/builder/dockerfile/dispatchers.go +++ b/vendor/github.com/docker/docker/builder/dockerfile/dispatchers.go @@ -14,21 +14,22 @@ import ( "sort" "strings" + "github.com/containerd/containerd/platforms" "github.com/docker/docker/api" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/strslice" "github.com/docker/docker/builder" - "github.com/docker/docker/builder/dockerfile/instructions" - "github.com/docker/docker/builder/dockerfile/parser" - "github.com/docker/docker/builder/dockerfile/shell" "github.com/docker/docker/errdefs" "github.com/docker/docker/image" "github.com/docker/docker/pkg/jsonmessage" "github.com/docker/docker/pkg/signal" "github.com/docker/docker/pkg/system" "github.com/docker/go-connections/nat" + "github.com/moby/buildkit/frontend/dockerfile/instructions" + "github.com/moby/buildkit/frontend/dockerfile/parser" + "github.com/moby/buildkit/frontend/dockerfile/shell" + specs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/pkg/errors" - "github.com/sirupsen/logrus" ) // ENV foo bar @@ -88,7 +89,7 @@ func dispatchLabel(d dispatchRequest, c *instructions.LabelCommand) error { // ADD foo /path // -// Add the file 'foo' to '/path'. Tarball and Remote URL (git, http) handling +// Add the file 'foo' to '/path'. Tarball and Remote URL (http, https) handling // exist here. If you do not wish to have this automatic handling, use COPY. // func dispatchAdd(d dispatchRequest, c *instructions.AddCommand) error { @@ -103,7 +104,7 @@ func dispatchAdd(d dispatchRequest, c *instructions.AddCommand) error { copyInstruction.chownStr = c.Chown copyInstruction.allowLocalDecompression = true - return d.builder.performCopy(d.state, copyInstruction) + return d.builder.performCopy(d, copyInstruction) } // COPY foo /path @@ -127,7 +128,7 @@ func dispatchCopy(d dispatchRequest, c *instructions.CopyCommand) error { } copyInstruction.chownStr = c.Chown - return d.builder.performCopy(d.state, copyInstruction) + return d.builder.performCopy(d, copyInstruction) } func (d *dispatchRequest) getImageMount(imageRefOrID string) (*imageMount, error) { @@ -145,17 +146,32 @@ func (d *dispatchRequest) getImageMount(imageRefOrID string) (*imageMount, error imageRefOrID = stage.Image localOnly = true } - return d.builder.imageSources.Get(imageRefOrID, localOnly, d.state.operatingSystem) + return d.builder.imageSources.Get(imageRefOrID, localOnly, d.builder.platform) } // FROM [--platform=platform] imagename[:tag | @digest] [AS build-stage-name] // func initializeStage(d dispatchRequest, cmd *instructions.Stage) error { d.builder.imageProber.Reset() - if err := system.ValidatePlatform(&cmd.Platform); err != nil { - return err + + var platform *specs.Platform + if v := cmd.Platform; v != "" { + v, err := d.getExpandedString(d.shlex, v) + if err != nil { + return errors.Wrapf(err, "failed to process arguments for platform %s", v) + } + + p, err := platforms.Parse(v) + if err != nil { + return errors.Wrapf(err, "failed to parse platform %s", v) + } + if err := system.ValidatePlatform(p); err != nil { + return err + } + platform = &p } - image, err := d.getFromImage(d.shlex, cmd.BaseName, cmd.Platform.OS) + + image, err := d.getFromImage(d.shlex, cmd.BaseName, platform) if err != nil { return err } @@ -201,82 +217,78 @@ func dispatchTriggeredOnBuild(d dispatchRequest, triggers []string) error { return nil } -func (d *dispatchRequest) getExpandedImageName(shlex *shell.Lex, name string) (string, error) { +func (d *dispatchRequest) getExpandedString(shlex *shell.Lex, str string) (string, error) { substitutionArgs := []string{} for key, value := range d.state.buildArgs.GetAllMeta() { substitutionArgs = append(substitutionArgs, key+"="+value) } - name, err := shlex.ProcessWord(name, substitutionArgs) + name, err := shlex.ProcessWord(str, substitutionArgs) if err != nil { return "", err } return name, nil } -// getOsFromFlagsAndStage calculates the operating system if we need to pull an image. -// stagePlatform contains the value supplied by optional `--platform=` on -// a current FROM statement. b.builder.options.Platform contains the operating -// system part of the optional flag passed in the API call (or CLI flag -// through `docker build --platform=...`). Precedence is for an explicit -// platform indication in the FROM statement. -func (d *dispatchRequest) getOsFromFlagsAndStage(stageOS string) string { - switch { - case stageOS != "": - return stageOS - case d.builder.options.Platform != "": - // Note this is API "platform", but by this point, as the daemon is not - // multi-arch aware yet, it is guaranteed to only hold the OS part here. - return d.builder.options.Platform - default: - return runtime.GOOS - } -} - -func (d *dispatchRequest) getImageOrStage(name string, stageOS string) (builder.Image, error) { +func (d *dispatchRequest) getImageOrStage(name string, platform *specs.Platform) (builder.Image, error) { var localOnly bool if im, ok := d.stages.getByName(name); ok { name = im.Image localOnly = true } - os := d.getOsFromFlagsAndStage(stageOS) + if platform == nil { + platform = d.builder.platform + } // Windows cannot support a container with no base image unless it is LCOW. if name == api.NoBaseImageSpecifier { + p := platforms.DefaultSpec() + if platform != nil { + p = *platform + } imageImage := &image.Image{} - imageImage.OS = runtime.GOOS + imageImage.OS = p.OS + + // old windows scratch handling + // TODO: scratch should not have an os. It should be nil image. + // Windows supports scratch. What is not supported is running containers + // from it. if runtime.GOOS == "windows" { - switch os { - case "windows", "": - return nil, errors.New("Windows does not support FROM scratch") - case "linux": + if platform == nil || platform.OS == "linux" { if !system.LCOWSupported() { return nil, errors.New("Linux containers are not supported on this system") } imageImage.OS = "linux" - default: - return nil, errors.Errorf("operating system %q is not supported", os) + } else if platform.OS == "windows" { + return nil, errors.New("Windows does not support FROM scratch") + } else { + return nil, errors.Errorf("platform %s is not supported", platforms.Format(p)) } } return builder.Image(imageImage), nil } - imageMount, err := d.builder.imageSources.Get(name, localOnly, os) + imageMount, err := d.builder.imageSources.Get(name, localOnly, platform) if err != nil { return nil, err } return imageMount.Image(), nil } -func (d *dispatchRequest) getFromImage(shlex *shell.Lex, name string, stageOS string) (builder.Image, error) { - name, err := d.getExpandedImageName(shlex, name) +func (d *dispatchRequest) getFromImage(shlex *shell.Lex, basename string, platform *specs.Platform) (builder.Image, error) { + name, err := d.getExpandedString(shlex, basename) if err != nil { return nil, err } - return d.getImageOrStage(name, stageOS) + // Empty string is interpreted to FROM scratch by images.GetImageAndReleasableLayer, + // so validate expanded result is not empty. + if name == "" { + return nil, errors.Errorf("base name (%s) should not be blank", basename) + } + + return d.getImageOrStage(name, platform) } func dispatchOnbuild(d dispatchRequest, c *instructions.OnbuildCommand) error { - d.state.runConfig.OnBuild = append(d.state.runConfig.OnBuild, c.Expression) return d.builder.commit(d.state, "ONBUILD "+c.Expression) } @@ -305,10 +317,12 @@ func dispatchWorkdir(d dispatchRequest, c *instructions.WorkdirCommand) error { comment := "WORKDIR " + runConfig.WorkingDir runConfigWithCommentCmd := copyRunConfig(runConfig, withCmdCommentString(comment, d.state.operatingSystem)) + containerID, err := d.builder.probeAndCreate(d.state, runConfigWithCommentCmd) if err != nil || containerID == "" { return err } + if err := d.builder.docker.ContainerCreateWorkdir(containerID); err != nil { return err } @@ -350,24 +364,24 @@ func dispatchRun(d dispatchRequest, c *instructions.RunCommand) error { runConfigForCacheProbe := copyRunConfig(stateRunConfig, withCmd(saveCmd), withEntrypointOverride(saveCmd, nil)) - hit, err := d.builder.probeCache(d.state, runConfigForCacheProbe) - if err != nil || hit { + if hit, err := d.builder.probeCache(d.state, runConfigForCacheProbe); err != nil || hit { return err } runConfig := copyRunConfig(stateRunConfig, withCmd(cmdFromArgs), withEnv(append(stateRunConfig.Env, buildArgs...)), - withEntrypointOverride(saveCmd, strslice.StrSlice{""})) + withEntrypointOverride(saveCmd, strslice.StrSlice{""}), + withoutHealthcheck()) // set config as already being escaped, this prevents double escaping on windows runConfig.ArgsEscaped = true - logrus.Debugf("[BUILDER] Command to be executed: %v", runConfig.Cmd) cID, err := d.builder.create(runConfig) if err != nil { return err } + if err := d.builder.containerManager.Run(d.builder.clientCtx, cID, d.builder.Stdout, d.builder.Stderr); err != nil { if err, ok := err.(*statusCodeError); ok { // TODO: change error type, because jsonmessage.JSONError assumes HTTP diff --git a/vendor/github.com/docker/docker/builder/dockerfile/evaluator.go b/vendor/github.com/docker/docker/builder/dockerfile/evaluator.go index 75073cec6d..02e1477528 100644 --- a/vendor/github.com/docker/docker/builder/dockerfile/evaluator.go +++ b/vendor/github.com/docker/docker/builder/dockerfile/evaluator.go @@ -27,11 +27,11 @@ import ( "github.com/docker/docker/api/types/container" "github.com/docker/docker/builder" - "github.com/docker/docker/builder/dockerfile/instructions" - "github.com/docker/docker/builder/dockerfile/shell" "github.com/docker/docker/errdefs" "github.com/docker/docker/pkg/system" "github.com/docker/docker/runconfig/opts" + "github.com/moby/buildkit/frontend/dockerfile/instructions" + "github.com/moby/buildkit/frontend/dockerfile/shell" "github.com/pkg/errors" ) diff --git a/vendor/github.com/docker/docker/builder/dockerfile/imagecontext.go b/vendor/github.com/docker/docker/builder/dockerfile/imagecontext.go index 53a4b9774b..08cb396a2b 100644 --- a/vendor/github.com/docker/docker/builder/dockerfile/imagecontext.go +++ b/vendor/github.com/docker/docker/builder/dockerfile/imagecontext.go @@ -7,11 +7,12 @@ import ( "github.com/docker/docker/api/types/backend" "github.com/docker/docker/builder" dockerimage "github.com/docker/docker/image" + specs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) -type getAndMountFunc func(string, bool, string) (builder.Image, builder.ROLayer, error) +type getAndMountFunc func(string, bool, *specs.Platform) (builder.Image, builder.ROLayer, error) // imageSources mounts images and provides a cache for mounted images. It tracks // all images so they can be unmounted at the end of the build. @@ -22,7 +23,7 @@ type imageSources struct { } func newImageSources(ctx context.Context, options builderOptions) *imageSources { - getAndMount := func(idOrRef string, localOnly bool, osForPull string) (builder.Image, builder.ROLayer, error) { + getAndMount := func(idOrRef string, localOnly bool, platform *specs.Platform) (builder.Image, builder.ROLayer, error) { pullOption := backend.PullOptionNoPull if !localOnly { if options.Options.PullParent { @@ -35,7 +36,7 @@ func newImageSources(ctx context.Context, options builderOptions) *imageSources PullOption: pullOption, AuthConfig: options.Options.AuthConfigs, Output: options.ProgressWriter.Output, - OS: osForPull, + Platform: platform, }) } @@ -45,12 +46,12 @@ func newImageSources(ctx context.Context, options builderOptions) *imageSources } } -func (m *imageSources) Get(idOrRef string, localOnly bool, osForPull string) (*imageMount, error) { +func (m *imageSources) Get(idOrRef string, localOnly bool, platform *specs.Platform) (*imageMount, error) { if im, ok := m.byImageID[idOrRef]; ok { return im, nil } - image, layer, err := m.getImage(idOrRef, localOnly, osForPull) + image, layer, err := m.getImage(idOrRef, localOnly, platform) if err != nil { return nil, err } diff --git a/vendor/github.com/docker/docker/builder/dockerfile/instructions/bflag.go b/vendor/github.com/docker/docker/builder/dockerfile/instructions/bflag.go deleted file mode 100644 index 00b9610b38..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/instructions/bflag.go +++ /dev/null @@ -1,183 +0,0 @@ -package instructions // import "github.com/docker/docker/builder/dockerfile/instructions" - -import ( - "fmt" - "strings" -) - -// FlagType is the type of the build flag -type FlagType int - -const ( - boolType FlagType = iota - stringType -) - -// BFlags contains all flags information for the builder -type BFlags struct { - Args []string // actual flags/args from cmd line - flags map[string]*Flag - used map[string]*Flag - Err error -} - -// Flag contains all information for a flag -type Flag struct { - bf *BFlags - name string - flagType FlagType - Value string -} - -// NewBFlags returns the new BFlags struct -func NewBFlags() *BFlags { - return &BFlags{ - flags: make(map[string]*Flag), - used: make(map[string]*Flag), - } -} - -// NewBFlagsWithArgs returns the new BFlags struct with Args set to args -func NewBFlagsWithArgs(args []string) *BFlags { - flags := NewBFlags() - flags.Args = args - return flags -} - -// AddBool adds a bool flag to BFlags -// Note, any error will be generated when Parse() is called (see Parse). -func (bf *BFlags) AddBool(name string, def bool) *Flag { - flag := bf.addFlag(name, boolType) - if flag == nil { - return nil - } - if def { - flag.Value = "true" - } else { - flag.Value = "false" - } - return flag -} - -// AddString adds a string flag to BFlags -// Note, any error will be generated when Parse() is called (see Parse). -func (bf *BFlags) AddString(name string, def string) *Flag { - flag := bf.addFlag(name, stringType) - if flag == nil { - return nil - } - flag.Value = def - return flag -} - -// addFlag is a generic func used by the other AddXXX() func -// to add a new flag to the BFlags struct. -// Note, any error will be generated when Parse() is called (see Parse). -func (bf *BFlags) addFlag(name string, flagType FlagType) *Flag { - if _, ok := bf.flags[name]; ok { - bf.Err = fmt.Errorf("Duplicate flag defined: %s", name) - return nil - } - - newFlag := &Flag{ - bf: bf, - name: name, - flagType: flagType, - } - bf.flags[name] = newFlag - - return newFlag -} - -// IsUsed checks if the flag is used -func (fl *Flag) IsUsed() bool { - if _, ok := fl.bf.used[fl.name]; ok { - return true - } - return false -} - -// IsTrue checks if a bool flag is true -func (fl *Flag) IsTrue() bool { - if fl.flagType != boolType { - // Should never get here - panic(fmt.Errorf("Trying to use IsTrue on a non-boolean: %s", fl.name)) - } - return fl.Value == "true" -} - -// Parse parses and checks if the BFlags is valid. -// Any error noticed during the AddXXX() funcs will be generated/returned -// here. We do this because an error during AddXXX() is more like a -// compile time error so it doesn't matter too much when we stop our -// processing as long as we do stop it, so this allows the code -// around AddXXX() to be just: -// defFlag := AddString("description", "") -// w/o needing to add an if-statement around each one. -func (bf *BFlags) Parse() error { - // If there was an error while defining the possible flags - // go ahead and bubble it back up here since we didn't do it - // earlier in the processing - if bf.Err != nil { - return fmt.Errorf("Error setting up flags: %s", bf.Err) - } - - for _, arg := range bf.Args { - if !strings.HasPrefix(arg, "--") { - return fmt.Errorf("Arg should start with -- : %s", arg) - } - - if arg == "--" { - return nil - } - - arg = arg[2:] - value := "" - - index := strings.Index(arg, "=") - if index >= 0 { - value = arg[index+1:] - arg = arg[:index] - } - - flag, ok := bf.flags[arg] - if !ok { - return fmt.Errorf("Unknown flag: %s", arg) - } - - if _, ok = bf.used[arg]; ok { - return fmt.Errorf("Duplicate flag specified: %s", arg) - } - - bf.used[arg] = flag - - switch flag.flagType { - case boolType: - // value == "" is only ok if no "=" was specified - if index >= 0 && value == "" { - return fmt.Errorf("Missing a value on flag: %s", arg) - } - - lower := strings.ToLower(value) - if lower == "" { - flag.Value = "true" - } else if lower == "true" || lower == "false" { - flag.Value = lower - } else { - return fmt.Errorf("Expecting boolean value for flag %s, not: %s", arg, value) - } - - case stringType: - if index < 0 { - return fmt.Errorf("Missing a value on flag: %s", arg) - } - flag.Value = value - - default: - panic("No idea what kind of flag we have! Should never get here!") - } - - } - - return nil -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/instructions/commands.go b/vendor/github.com/docker/docker/builder/dockerfile/instructions/commands.go deleted file mode 100644 index 96d33016b5..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/instructions/commands.go +++ /dev/null @@ -1,418 +0,0 @@ -package instructions // import "github.com/docker/docker/builder/dockerfile/instructions" - -import ( - "errors" - "strings" - - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/strslice" - specs "github.com/opencontainers/image-spec/specs-go/v1" -) - -// KeyValuePair represent an arbitrary named value (useful in slice instead of map[string] string to preserve ordering) -type KeyValuePair struct { - Key string - Value string -} - -func (kvp *KeyValuePair) String() string { - return kvp.Key + "=" + kvp.Value -} - -// Command is implemented by every command present in a dockerfile -type Command interface { - Name() string -} - -// KeyValuePairs is a slice of KeyValuePair -type KeyValuePairs []KeyValuePair - -// withNameAndCode is the base of every command in a Dockerfile (String() returns its source code) -type withNameAndCode struct { - code string - name string -} - -func (c *withNameAndCode) String() string { - return c.code -} - -// Name of the command -func (c *withNameAndCode) Name() string { - return c.name -} - -func newWithNameAndCode(req parseRequest) withNameAndCode { - return withNameAndCode{code: strings.TrimSpace(req.original), name: req.command} -} - -// SingleWordExpander is a provider for variable expansion where 1 word => 1 output -type SingleWordExpander func(word string) (string, error) - -// SupportsSingleWordExpansion interface marks a command as supporting variable expansion -type SupportsSingleWordExpansion interface { - Expand(expander SingleWordExpander) error -} - -// PlatformSpecific adds platform checks to a command -type PlatformSpecific interface { - CheckPlatform(platform string) error -} - -func expandKvp(kvp KeyValuePair, expander SingleWordExpander) (KeyValuePair, error) { - key, err := expander(kvp.Key) - if err != nil { - return KeyValuePair{}, err - } - value, err := expander(kvp.Value) - if err != nil { - return KeyValuePair{}, err - } - return KeyValuePair{Key: key, Value: value}, nil -} -func expandKvpsInPlace(kvps KeyValuePairs, expander SingleWordExpander) error { - for i, kvp := range kvps { - newKvp, err := expandKvp(kvp, expander) - if err != nil { - return err - } - kvps[i] = newKvp - } - return nil -} - -func expandSliceInPlace(values []string, expander SingleWordExpander) error { - for i, v := range values { - newValue, err := expander(v) - if err != nil { - return err - } - values[i] = newValue - } - return nil -} - -// EnvCommand : ENV key1 value1 [keyN valueN...] -type EnvCommand struct { - withNameAndCode - Env KeyValuePairs // kvp slice instead of map to preserve ordering -} - -// Expand variables -func (c *EnvCommand) Expand(expander SingleWordExpander) error { - return expandKvpsInPlace(c.Env, expander) -} - -// MaintainerCommand : MAINTAINER maintainer_name -type MaintainerCommand struct { - withNameAndCode - Maintainer string -} - -// NewLabelCommand creates a new 'LABEL' command -func NewLabelCommand(k string, v string, NoExp bool) *LabelCommand { - kvp := KeyValuePair{Key: k, Value: v} - c := "LABEL " - c += kvp.String() - nc := withNameAndCode{code: c, name: "label"} - cmd := &LabelCommand{ - withNameAndCode: nc, - Labels: KeyValuePairs{ - kvp, - }, - noExpand: NoExp, - } - return cmd -} - -// LabelCommand : LABEL some json data describing the image -// -// Sets the Label variable foo to bar, -// -type LabelCommand struct { - withNameAndCode - Labels KeyValuePairs // kvp slice instead of map to preserve ordering - noExpand bool -} - -// Expand variables -func (c *LabelCommand) Expand(expander SingleWordExpander) error { - if c.noExpand { - return nil - } - return expandKvpsInPlace(c.Labels, expander) -} - -// SourcesAndDest represent a list of source files and a destination -type SourcesAndDest []string - -// Sources list the source paths -func (s SourcesAndDest) Sources() []string { - res := make([]string, len(s)-1) - copy(res, s[:len(s)-1]) - return res -} - -// Dest path of the operation -func (s SourcesAndDest) Dest() string { - return s[len(s)-1] -} - -// AddCommand : ADD foo /path -// -// Add the file 'foo' to '/path'. Tarball and Remote URL (git, http) handling -// exist here. If you do not wish to have this automatic handling, use COPY. -// -type AddCommand struct { - withNameAndCode - SourcesAndDest - Chown string -} - -// Expand variables -func (c *AddCommand) Expand(expander SingleWordExpander) error { - return expandSliceInPlace(c.SourcesAndDest, expander) -} - -// CopyCommand : COPY foo /path -// -// Same as 'ADD' but without the tar and remote url handling. -// -type CopyCommand struct { - withNameAndCode - SourcesAndDest - From string - Chown string -} - -// Expand variables -func (c *CopyCommand) Expand(expander SingleWordExpander) error { - return expandSliceInPlace(c.SourcesAndDest, expander) -} - -// OnbuildCommand : ONBUILD -type OnbuildCommand struct { - withNameAndCode - Expression string -} - -// WorkdirCommand : WORKDIR /tmp -// -// Set the working directory for future RUN/CMD/etc statements. -// -type WorkdirCommand struct { - withNameAndCode - Path string -} - -// Expand variables -func (c *WorkdirCommand) Expand(expander SingleWordExpander) error { - p, err := expander(c.Path) - if err != nil { - return err - } - c.Path = p - return nil -} - -// ShellDependantCmdLine represents a cmdline optionally prepended with the shell -type ShellDependantCmdLine struct { - CmdLine strslice.StrSlice - PrependShell bool -} - -// RunCommand : RUN some command yo -// -// run a command and commit the image. Args are automatically prepended with -// the current SHELL which defaults to 'sh -c' under linux or 'cmd /S /C' under -// Windows, in the event there is only one argument The difference in processing: -// -// RUN echo hi # sh -c echo hi (Linux) -// RUN echo hi # cmd /S /C echo hi (Windows) -// RUN [ "echo", "hi" ] # echo hi -// -type RunCommand struct { - withNameAndCode - ShellDependantCmdLine -} - -// CmdCommand : CMD foo -// -// Set the default command to run in the container (which may be empty). -// Argument handling is the same as RUN. -// -type CmdCommand struct { - withNameAndCode - ShellDependantCmdLine -} - -// HealthCheckCommand : HEALTHCHECK foo -// -// Set the default healthcheck command to run in the container (which may be empty). -// Argument handling is the same as RUN. -// -type HealthCheckCommand struct { - withNameAndCode - Health *container.HealthConfig -} - -// EntrypointCommand : ENTRYPOINT /usr/sbin/nginx -// -// Set the entrypoint to /usr/sbin/nginx. Will accept the CMD as the arguments -// to /usr/sbin/nginx. Uses the default shell if not in JSON format. -// -// Handles command processing similar to CMD and RUN, only req.runConfig.Entrypoint -// is initialized at newBuilder time instead of through argument parsing. -// -type EntrypointCommand struct { - withNameAndCode - ShellDependantCmdLine -} - -// ExposeCommand : EXPOSE 6667/tcp 7000/tcp -// -// Expose ports for links and port mappings. This all ends up in -// req.runConfig.ExposedPorts for runconfig. -// -type ExposeCommand struct { - withNameAndCode - Ports []string -} - -// UserCommand : USER foo -// -// Set the user to 'foo' for future commands and when running the -// ENTRYPOINT/CMD at container run time. -// -type UserCommand struct { - withNameAndCode - User string -} - -// Expand variables -func (c *UserCommand) Expand(expander SingleWordExpander) error { - p, err := expander(c.User) - if err != nil { - return err - } - c.User = p - return nil -} - -// VolumeCommand : VOLUME /foo -// -// Expose the volume /foo for use. Will also accept the JSON array form. -// -type VolumeCommand struct { - withNameAndCode - Volumes []string -} - -// Expand variables -func (c *VolumeCommand) Expand(expander SingleWordExpander) error { - return expandSliceInPlace(c.Volumes, expander) -} - -// StopSignalCommand : STOPSIGNAL signal -// -// Set the signal that will be used to kill the container. -type StopSignalCommand struct { - withNameAndCode - Signal string -} - -// Expand variables -func (c *StopSignalCommand) Expand(expander SingleWordExpander) error { - p, err := expander(c.Signal) - if err != nil { - return err - } - c.Signal = p - return nil -} - -// CheckPlatform checks that the command is supported in the target platform -func (c *StopSignalCommand) CheckPlatform(platform string) error { - if platform == "windows" { - return errors.New("The daemon on this platform does not support the command stopsignal") - } - return nil -} - -// ArgCommand : ARG name[=value] -// -// Adds the variable foo to the trusted list of variables that can be passed -// to builder using the --build-arg flag for expansion/substitution or passing to 'run'. -// Dockerfile author may optionally set a default value of this variable. -type ArgCommand struct { - withNameAndCode - Key string - Value *string -} - -// Expand variables -func (c *ArgCommand) Expand(expander SingleWordExpander) error { - p, err := expander(c.Key) - if err != nil { - return err - } - c.Key = p - if c.Value != nil { - p, err = expander(*c.Value) - if err != nil { - return err - } - c.Value = &p - } - return nil -} - -// ShellCommand : SHELL powershell -command -// -// Set the non-default shell to use. -type ShellCommand struct { - withNameAndCode - Shell strslice.StrSlice -} - -// Stage represents a single stage in a multi-stage build -type Stage struct { - Name string - Commands []Command - BaseName string - SourceCode string - Platform specs.Platform -} - -// AddCommand to the stage -func (s *Stage) AddCommand(cmd Command) { - // todo: validate cmd type - s.Commands = append(s.Commands, cmd) -} - -// IsCurrentStage check if the stage name is the current stage -func IsCurrentStage(s []Stage, name string) bool { - if len(s) == 0 { - return false - } - return s[len(s)-1].Name == name -} - -// CurrentStage return the last stage in a slice -func CurrentStage(s []Stage) (*Stage, error) { - if len(s) == 0 { - return nil, errors.New("No build stage in current context") - } - return &s[len(s)-1], nil -} - -// HasStage looks for the presence of a given stage name -func HasStage(s []Stage, name string) (int, bool) { - for i, stage := range s { - // Stage name is case-insensitive by design - if strings.EqualFold(stage.Name, name) { - return i, true - } - } - return -1, false -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/instructions/errors_unix.go b/vendor/github.com/docker/docker/builder/dockerfile/instructions/errors_unix.go deleted file mode 100644 index 2bd11659e4..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/instructions/errors_unix.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build !windows - -package instructions // import "github.com/docker/docker/builder/dockerfile/instructions" - -import "fmt" - -func errNotJSON(command, _ string) error { - return fmt.Errorf("%s requires the arguments to be in JSON form", command) -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/instructions/errors_windows.go b/vendor/github.com/docker/docker/builder/dockerfile/instructions/errors_windows.go deleted file mode 100644 index be8dbee065..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/instructions/errors_windows.go +++ /dev/null @@ -1,27 +0,0 @@ -package instructions // import "github.com/docker/docker/builder/dockerfile/instructions" - -import ( - "fmt" - "path/filepath" - "regexp" - "strings" -) - -func errNotJSON(command, original string) error { - // For Windows users, give a hint if it looks like it might contain - // a path which hasn't been escaped such as ["c:\windows\system32\prog.exe", "-param"], - // as JSON must be escaped. Unfortunate... - // - // Specifically looking for quote-driveletter-colon-backslash, there's no - // double backslash and a [] pair. No, this is not perfect, but it doesn't - // have to be. It's simply a hint to make life a little easier. - extra := "" - original = filepath.FromSlash(strings.ToLower(strings.Replace(strings.ToLower(original), strings.ToLower(command)+" ", "", -1))) - if len(regexp.MustCompile(`"[a-z]:\\.*`).FindStringSubmatch(original)) > 0 && - !strings.Contains(original, `\\`) && - strings.Contains(original, "[") && - strings.Contains(original, "]") { - extra = fmt.Sprintf(`. It looks like '%s' includes a file path without an escaped back-slash. JSON requires back-slashes to be escaped such as ["c:\\path\\to\\file.exe", "/parameter"]`, original) - } - return fmt.Errorf("%s requires the arguments to be in JSON form%s", command, extra) -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/instructions/parse.go b/vendor/github.com/docker/docker/builder/dockerfile/instructions/parse.go deleted file mode 100644 index e2d69a4887..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/instructions/parse.go +++ /dev/null @@ -1,637 +0,0 @@ -package instructions // import "github.com/docker/docker/builder/dockerfile/instructions" - -import ( - "fmt" - "regexp" - "sort" - "strconv" - "strings" - "time" - - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/strslice" - "github.com/docker/docker/builder/dockerfile/command" - "github.com/docker/docker/builder/dockerfile/parser" - "github.com/docker/docker/pkg/system" - "github.com/pkg/errors" -) - -type parseRequest struct { - command string - args []string - attributes map[string]bool - flags *BFlags - original string -} - -func nodeArgs(node *parser.Node) []string { - result := []string{} - for ; node.Next != nil; node = node.Next { - arg := node.Next - if len(arg.Children) == 0 { - result = append(result, arg.Value) - } else if len(arg.Children) == 1 { - //sub command - result = append(result, arg.Children[0].Value) - result = append(result, nodeArgs(arg.Children[0])...) - } - } - return result -} - -func newParseRequestFromNode(node *parser.Node) parseRequest { - return parseRequest{ - command: node.Value, - args: nodeArgs(node), - attributes: node.Attributes, - original: node.Original, - flags: NewBFlagsWithArgs(node.Flags), - } -} - -// ParseInstruction converts an AST to a typed instruction (either a command or a build stage beginning when encountering a `FROM` statement) -func ParseInstruction(node *parser.Node) (interface{}, error) { - req := newParseRequestFromNode(node) - switch node.Value { - case command.Env: - return parseEnv(req) - case command.Maintainer: - return parseMaintainer(req) - case command.Label: - return parseLabel(req) - case command.Add: - return parseAdd(req) - case command.Copy: - return parseCopy(req) - case command.From: - return parseFrom(req) - case command.Onbuild: - return parseOnBuild(req) - case command.Workdir: - return parseWorkdir(req) - case command.Run: - return parseRun(req) - case command.Cmd: - return parseCmd(req) - case command.Healthcheck: - return parseHealthcheck(req) - case command.Entrypoint: - return parseEntrypoint(req) - case command.Expose: - return parseExpose(req) - case command.User: - return parseUser(req) - case command.Volume: - return parseVolume(req) - case command.StopSignal: - return parseStopSignal(req) - case command.Arg: - return parseArg(req) - case command.Shell: - return parseShell(req) - } - - return nil, &UnknownInstruction{Instruction: node.Value, Line: node.StartLine} -} - -// ParseCommand converts an AST to a typed Command -func ParseCommand(node *parser.Node) (Command, error) { - s, err := ParseInstruction(node) - if err != nil { - return nil, err - } - if c, ok := s.(Command); ok { - return c, nil - } - return nil, errors.Errorf("%T is not a command type", s) -} - -// UnknownInstruction represents an error occurring when a command is unresolvable -type UnknownInstruction struct { - Line int - Instruction string -} - -func (e *UnknownInstruction) Error() string { - return fmt.Sprintf("unknown instruction: %s", strings.ToUpper(e.Instruction)) -} - -// IsUnknownInstruction checks if the error is an UnknownInstruction or a parseError containing an UnknownInstruction -func IsUnknownInstruction(err error) bool { - _, ok := err.(*UnknownInstruction) - if !ok { - var pe *parseError - if pe, ok = err.(*parseError); ok { - _, ok = pe.inner.(*UnknownInstruction) - } - } - return ok -} - -type parseError struct { - inner error - node *parser.Node -} - -func (e *parseError) Error() string { - return fmt.Sprintf("Dockerfile parse error line %d: %v", e.node.StartLine, e.inner.Error()) -} - -// Parse a docker file into a collection of buildable stages -func Parse(ast *parser.Node) (stages []Stage, metaArgs []ArgCommand, err error) { - for _, n := range ast.Children { - cmd, err := ParseInstruction(n) - if err != nil { - return nil, nil, &parseError{inner: err, node: n} - } - if len(stages) == 0 { - // meta arg case - if a, isArg := cmd.(*ArgCommand); isArg { - metaArgs = append(metaArgs, *a) - continue - } - } - switch c := cmd.(type) { - case *Stage: - stages = append(stages, *c) - case Command: - stage, err := CurrentStage(stages) - if err != nil { - return nil, nil, err - } - stage.AddCommand(c) - default: - return nil, nil, errors.Errorf("%T is not a command type", cmd) - } - - } - return stages, metaArgs, nil -} - -func parseKvps(args []string, cmdName string) (KeyValuePairs, error) { - if len(args) == 0 { - return nil, errAtLeastOneArgument(cmdName) - } - if len(args)%2 != 0 { - // should never get here, but just in case - return nil, errTooManyArguments(cmdName) - } - var res KeyValuePairs - for j := 0; j < len(args); j += 2 { - if len(args[j]) == 0 { - return nil, errBlankCommandNames(cmdName) - } - name := args[j] - value := args[j+1] - res = append(res, KeyValuePair{Key: name, Value: value}) - } - return res, nil -} - -func parseEnv(req parseRequest) (*EnvCommand, error) { - - if err := req.flags.Parse(); err != nil { - return nil, err - } - envs, err := parseKvps(req.args, "ENV") - if err != nil { - return nil, err - } - return &EnvCommand{ - Env: envs, - withNameAndCode: newWithNameAndCode(req), - }, nil -} - -func parseMaintainer(req parseRequest) (*MaintainerCommand, error) { - if len(req.args) != 1 { - return nil, errExactlyOneArgument("MAINTAINER") - } - - if err := req.flags.Parse(); err != nil { - return nil, err - } - return &MaintainerCommand{ - Maintainer: req.args[0], - withNameAndCode: newWithNameAndCode(req), - }, nil -} - -func parseLabel(req parseRequest) (*LabelCommand, error) { - - if err := req.flags.Parse(); err != nil { - return nil, err - } - - labels, err := parseKvps(req.args, "LABEL") - if err != nil { - return nil, err - } - - return &LabelCommand{ - Labels: labels, - withNameAndCode: newWithNameAndCode(req), - }, nil -} - -func parseAdd(req parseRequest) (*AddCommand, error) { - if len(req.args) < 2 { - return nil, errNoDestinationArgument("ADD") - } - flChown := req.flags.AddString("chown", "") - if err := req.flags.Parse(); err != nil { - return nil, err - } - return &AddCommand{ - SourcesAndDest: SourcesAndDest(req.args), - withNameAndCode: newWithNameAndCode(req), - Chown: flChown.Value, - }, nil -} - -func parseCopy(req parseRequest) (*CopyCommand, error) { - if len(req.args) < 2 { - return nil, errNoDestinationArgument("COPY") - } - flChown := req.flags.AddString("chown", "") - flFrom := req.flags.AddString("from", "") - if err := req.flags.Parse(); err != nil { - return nil, err - } - return &CopyCommand{ - SourcesAndDest: SourcesAndDest(req.args), - From: flFrom.Value, - withNameAndCode: newWithNameAndCode(req), - Chown: flChown.Value, - }, nil -} - -func parseFrom(req parseRequest) (*Stage, error) { - stageName, err := parseBuildStageName(req.args) - if err != nil { - return nil, err - } - - flPlatform := req.flags.AddString("platform", "") - if err := req.flags.Parse(); err != nil { - return nil, err - } - code := strings.TrimSpace(req.original) - return &Stage{ - BaseName: req.args[0], - Name: stageName, - SourceCode: code, - Commands: []Command{}, - Platform: *system.ParsePlatform(flPlatform.Value), - }, nil - -} - -func parseBuildStageName(args []string) (string, error) { - stageName := "" - switch { - case len(args) == 3 && strings.EqualFold(args[1], "as"): - stageName = strings.ToLower(args[2]) - if ok, _ := regexp.MatchString("^[a-z][a-z0-9-_\\.]*$", stageName); !ok { - return "", errors.Errorf("invalid name for build stage: %q, name can't start with a number or contain symbols", stageName) - } - case len(args) != 1: - return "", errors.New("FROM requires either one or three arguments") - } - - return stageName, nil -} - -func parseOnBuild(req parseRequest) (*OnbuildCommand, error) { - if len(req.args) == 0 { - return nil, errAtLeastOneArgument("ONBUILD") - } - if err := req.flags.Parse(); err != nil { - return nil, err - } - - triggerInstruction := strings.ToUpper(strings.TrimSpace(req.args[0])) - switch strings.ToUpper(triggerInstruction) { - case "ONBUILD": - return nil, errors.New("Chaining ONBUILD via `ONBUILD ONBUILD` isn't allowed") - case "MAINTAINER", "FROM": - return nil, fmt.Errorf("%s isn't allowed as an ONBUILD trigger", triggerInstruction) - } - - original := regexp.MustCompile(`(?i)^\s*ONBUILD\s*`).ReplaceAllString(req.original, "") - return &OnbuildCommand{ - Expression: original, - withNameAndCode: newWithNameAndCode(req), - }, nil - -} - -func parseWorkdir(req parseRequest) (*WorkdirCommand, error) { - if len(req.args) != 1 { - return nil, errExactlyOneArgument("WORKDIR") - } - - err := req.flags.Parse() - if err != nil { - return nil, err - } - return &WorkdirCommand{ - Path: req.args[0], - withNameAndCode: newWithNameAndCode(req), - }, nil - -} - -func parseShellDependentCommand(req parseRequest, emptyAsNil bool) ShellDependantCmdLine { - args := handleJSONArgs(req.args, req.attributes) - cmd := strslice.StrSlice(args) - if emptyAsNil && len(cmd) == 0 { - cmd = nil - } - return ShellDependantCmdLine{ - CmdLine: cmd, - PrependShell: !req.attributes["json"], - } -} - -func parseRun(req parseRequest) (*RunCommand, error) { - - if err := req.flags.Parse(); err != nil { - return nil, err - } - return &RunCommand{ - ShellDependantCmdLine: parseShellDependentCommand(req, false), - withNameAndCode: newWithNameAndCode(req), - }, nil - -} - -func parseCmd(req parseRequest) (*CmdCommand, error) { - if err := req.flags.Parse(); err != nil { - return nil, err - } - return &CmdCommand{ - ShellDependantCmdLine: parseShellDependentCommand(req, false), - withNameAndCode: newWithNameAndCode(req), - }, nil - -} - -func parseEntrypoint(req parseRequest) (*EntrypointCommand, error) { - if err := req.flags.Parse(); err != nil { - return nil, err - } - - cmd := &EntrypointCommand{ - ShellDependantCmdLine: parseShellDependentCommand(req, true), - withNameAndCode: newWithNameAndCode(req), - } - - return cmd, nil -} - -// parseOptInterval(flag) is the duration of flag.Value, or 0 if -// empty. An error is reported if the value is given and less than minimum duration. -func parseOptInterval(f *Flag) (time.Duration, error) { - s := f.Value - if s == "" { - return 0, nil - } - d, err := time.ParseDuration(s) - if err != nil { - return 0, err - } - if d < container.MinimumDuration { - return 0, fmt.Errorf("Interval %#v cannot be less than %s", f.name, container.MinimumDuration) - } - return d, nil -} -func parseHealthcheck(req parseRequest) (*HealthCheckCommand, error) { - if len(req.args) == 0 { - return nil, errAtLeastOneArgument("HEALTHCHECK") - } - cmd := &HealthCheckCommand{ - withNameAndCode: newWithNameAndCode(req), - } - - typ := strings.ToUpper(req.args[0]) - args := req.args[1:] - if typ == "NONE" { - if len(args) != 0 { - return nil, errors.New("HEALTHCHECK NONE takes no arguments") - } - test := strslice.StrSlice{typ} - cmd.Health = &container.HealthConfig{ - Test: test, - } - } else { - - healthcheck := container.HealthConfig{} - - flInterval := req.flags.AddString("interval", "") - flTimeout := req.flags.AddString("timeout", "") - flStartPeriod := req.flags.AddString("start-period", "") - flRetries := req.flags.AddString("retries", "") - - if err := req.flags.Parse(); err != nil { - return nil, err - } - - switch typ { - case "CMD": - cmdSlice := handleJSONArgs(args, req.attributes) - if len(cmdSlice) == 0 { - return nil, errors.New("Missing command after HEALTHCHECK CMD") - } - - if !req.attributes["json"] { - typ = "CMD-SHELL" - } - - healthcheck.Test = strslice.StrSlice(append([]string{typ}, cmdSlice...)) - default: - return nil, fmt.Errorf("Unknown type %#v in HEALTHCHECK (try CMD)", typ) - } - - interval, err := parseOptInterval(flInterval) - if err != nil { - return nil, err - } - healthcheck.Interval = interval - - timeout, err := parseOptInterval(flTimeout) - if err != nil { - return nil, err - } - healthcheck.Timeout = timeout - - startPeriod, err := parseOptInterval(flStartPeriod) - if err != nil { - return nil, err - } - healthcheck.StartPeriod = startPeriod - - if flRetries.Value != "" { - retries, err := strconv.ParseInt(flRetries.Value, 10, 32) - if err != nil { - return nil, err - } - if retries < 1 { - return nil, fmt.Errorf("--retries must be at least 1 (not %d)", retries) - } - healthcheck.Retries = int(retries) - } else { - healthcheck.Retries = 0 - } - - cmd.Health = &healthcheck - } - return cmd, nil -} - -func parseExpose(req parseRequest) (*ExposeCommand, error) { - portsTab := req.args - - if len(req.args) == 0 { - return nil, errAtLeastOneArgument("EXPOSE") - } - - if err := req.flags.Parse(); err != nil { - return nil, err - } - - sort.Strings(portsTab) - return &ExposeCommand{ - Ports: portsTab, - withNameAndCode: newWithNameAndCode(req), - }, nil -} - -func parseUser(req parseRequest) (*UserCommand, error) { - if len(req.args) != 1 { - return nil, errExactlyOneArgument("USER") - } - - if err := req.flags.Parse(); err != nil { - return nil, err - } - return &UserCommand{ - User: req.args[0], - withNameAndCode: newWithNameAndCode(req), - }, nil -} - -func parseVolume(req parseRequest) (*VolumeCommand, error) { - if len(req.args) == 0 { - return nil, errAtLeastOneArgument("VOLUME") - } - - if err := req.flags.Parse(); err != nil { - return nil, err - } - - cmd := &VolumeCommand{ - withNameAndCode: newWithNameAndCode(req), - } - - for _, v := range req.args { - v = strings.TrimSpace(v) - if v == "" { - return nil, errors.New("VOLUME specified can not be an empty string") - } - cmd.Volumes = append(cmd.Volumes, v) - } - return cmd, nil - -} - -func parseStopSignal(req parseRequest) (*StopSignalCommand, error) { - if len(req.args) != 1 { - return nil, errExactlyOneArgument("STOPSIGNAL") - } - sig := req.args[0] - - cmd := &StopSignalCommand{ - Signal: sig, - withNameAndCode: newWithNameAndCode(req), - } - return cmd, nil - -} - -func parseArg(req parseRequest) (*ArgCommand, error) { - if len(req.args) != 1 { - return nil, errExactlyOneArgument("ARG") - } - - var ( - name string - newValue *string - ) - - arg := req.args[0] - // 'arg' can just be a name or name-value pair. Note that this is different - // from 'env' that handles the split of name and value at the parser level. - // The reason for doing it differently for 'arg' is that we support just - // defining an arg and not assign it a value (while 'env' always expects a - // name-value pair). If possible, it will be good to harmonize the two. - if strings.Contains(arg, "=") { - parts := strings.SplitN(arg, "=", 2) - if len(parts[0]) == 0 { - return nil, errBlankCommandNames("ARG") - } - - name = parts[0] - newValue = &parts[1] - } else { - name = arg - } - - return &ArgCommand{ - Key: name, - Value: newValue, - withNameAndCode: newWithNameAndCode(req), - }, nil -} - -func parseShell(req parseRequest) (*ShellCommand, error) { - if err := req.flags.Parse(); err != nil { - return nil, err - } - shellSlice := handleJSONArgs(req.args, req.attributes) - switch { - case len(shellSlice) == 0: - // SHELL [] - return nil, errAtLeastOneArgument("SHELL") - case req.attributes["json"]: - // SHELL ["powershell", "-command"] - - return &ShellCommand{ - Shell: strslice.StrSlice(shellSlice), - withNameAndCode: newWithNameAndCode(req), - }, nil - default: - // SHELL powershell -command - not JSON - return nil, errNotJSON("SHELL", req.original) - } -} - -func errAtLeastOneArgument(command string) error { - return errors.Errorf("%s requires at least one argument", command) -} - -func errExactlyOneArgument(command string) error { - return errors.Errorf("%s requires exactly one argument", command) -} - -func errNoDestinationArgument(command string) error { - return errors.Errorf("%s requires at least two arguments, but only one was provided. Destination could not be determined.", command) -} - -func errBlankCommandNames(command string) error { - return errors.Errorf("%s names can not be blank", command) -} - -func errTooManyArguments(command string) error { - return errors.Errorf("Bad input to %s, too many arguments", command) -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/instructions/support.go b/vendor/github.com/docker/docker/builder/dockerfile/instructions/support.go deleted file mode 100644 index 1d649a77af..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/instructions/support.go +++ /dev/null @@ -1,19 +0,0 @@ -package instructions // import "github.com/docker/docker/builder/dockerfile/instructions" - -import "strings" - -// handleJSONArgs parses command passed to CMD, ENTRYPOINT, RUN and SHELL instruction in Dockerfile -// for exec form it returns untouched args slice -// for shell form it returns concatenated args as the first element of a slice -func handleJSONArgs(args []string, attributes map[string]bool) []string { - if len(args) == 0 { - return []string{} - } - - if attributes != nil && attributes["json"] { - return args - } - - // literal string command, not an exec array - return []string{strings.Join(args, " ")} -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/internals.go b/vendor/github.com/docker/docker/builder/dockerfile/internals.go index 53748f0619..1635981f17 100644 --- a/vendor/github.com/docker/docker/builder/dockerfile/internals.go +++ b/vendor/github.com/docker/docker/builder/dockerfile/internals.go @@ -27,6 +27,7 @@ import ( "github.com/docker/docker/pkg/system" "github.com/docker/go-connections/nat" "github.com/pkg/errors" + "github.com/sirupsen/logrus" ) // Archiver defines an interface for copying files from one destination to @@ -36,7 +37,7 @@ type Archiver interface { UntarPath(src, dst string) error CopyWithTar(src, dst string) error CopyFileWithTar(src, dst string) error - IDMappings() *idtools.IDMappings + IdentityMapping() *idtools.IdentityMapping } // The builder will use the following interfaces if the container fs implements @@ -67,11 +68,11 @@ func tarFunc(i interface{}) containerfs.TarFunc { func (b *Builder) getArchiver(src, dst containerfs.Driver) Archiver { t, u := tarFunc(src), untarFunc(dst) return &containerfs.Archiver{ - SrcDriver: src, - DstDriver: dst, - Tar: t, - Untar: u, - IDMappingsVar: b.idMappings, + SrcDriver: src, + DstDriver: dst, + Tar: t, + Untar: u, + IDMapping: b.idMapping, } } @@ -84,12 +85,8 @@ func (b *Builder) commit(dispatchState *dispatchState, comment string) error { } runConfigWithCommentCmd := copyRunConfig(dispatchState.runConfig, withCmdComment(comment, dispatchState.operatingSystem)) - hit, err := b.probeCache(dispatchState, runConfigWithCommentCmd) - if err != nil || hit { - return err - } - id, err := b.create(runConfigWithCommentCmd) - if err != nil { + id, err := b.probeAndCreate(dispatchState, runConfigWithCommentCmd) + if err != nil || id == "" { return err } @@ -153,7 +150,8 @@ func (b *Builder) exportImage(state *dispatchState, layer builder.RWLayer, paren return nil } -func (b *Builder) performCopy(state *dispatchState, inst copyInstruction) error { +func (b *Builder) performCopy(req dispatchRequest, inst copyInstruction) error { + state := req.state srcHash := getSourceHashFromInfos(inst.infos) var chownComment string @@ -171,7 +169,7 @@ func (b *Builder) performCopy(state *dispatchState, inst copyInstruction) error return err } - imageMount, err := b.imageSources.Get(state.imageID, true, state.operatingSystem) + imageMount, err := b.imageSources.Get(state.imageID, true, req.builder.platform) if err != nil { return errors.Wrapf(err, "failed to get destination image %q", state.imageID) } @@ -187,14 +185,18 @@ func (b *Builder) performCopy(state *dispatchState, inst copyInstruction) error return err } - chownPair := b.idMappings.RootPair() + identity := b.idMapping.RootPair() // if a chown was requested, perform the steps to get the uid, gid // translated (if necessary because of user namespaces), and replace // the root pair with the chown pair for copy operations if inst.chownStr != "" { - chownPair, err = parseChownFlag(inst.chownStr, destInfo.root.Path(), b.idMappings) + identity, err = parseChownFlag(b, state, inst.chownStr, destInfo.root.Path(), b.idMapping) if err != nil { - return errors.Wrapf(err, "unable to convert uid/gid chown string to host mapping") + if b.options.Platform != "windows" { + return errors.Wrapf(err, "unable to convert uid/gid chown string to host mapping") + } + + return errors.Wrapf(err, "unable to map container user account name to SID") } } @@ -202,7 +204,7 @@ func (b *Builder) performCopy(state *dispatchState, inst copyInstruction) error opts := copyFileOptions{ decompress: inst.allowLocalDecompression, archiver: b.getArchiver(info.root, destInfo.root), - chownPair: chownPair, + identity: identity, } if err := performCopyForInfo(destInfo, info, opts); err != nil { return errors.Wrapf(err, "failed to copy files") @@ -345,6 +347,18 @@ func withEntrypointOverride(cmd []string, entrypoint []string) runConfigModifier } } +// withoutHealthcheck disables healthcheck. +// +// The dockerfile RUN instruction expect to run without healthcheck +// so the runConfig Healthcheck needs to be disabled. +func withoutHealthcheck() runConfigModifier { + return func(runConfig *container.Config) { + runConfig.Healthcheck = &container.HealthConfig{ + Test: []string{"NONE"}, + } + } +} + func copyRunConfig(runConfig *container.Config, modifiers ...runConfigModifier) *container.Config { copy := *runConfig copy.Cmd = copyStringSlice(runConfig.Cmd) @@ -413,14 +427,14 @@ func (b *Builder) probeAndCreate(dispatchState *dispatchState, runConfig *contai if hit, err := b.probeCache(dispatchState, runConfig); err != nil || hit { return "", err } - // Set a log config to override any default value set on the daemon - hostConfig := &container.HostConfig{LogConfig: defaultLogConfig} - container, err := b.containerManager.Create(runConfig, hostConfig) - return container.ID, err + return b.create(runConfig) } func (b *Builder) create(runConfig *container.Config) (string, error) { - hostConfig := hostConfigFromOptions(b.options) + logrus.Debugf("[BUILDER] Command to be executed: %v", runConfig.Cmd) + + isWCOW := runtime.GOOS == "windows" && b.platform != nil && b.platform.OS == "windows" + hostConfig := hostConfigFromOptions(b.options, isWCOW) container, err := b.containerManager.Create(runConfig, hostConfig) if err != nil { return "", err @@ -433,7 +447,7 @@ func (b *Builder) create(runConfig *container.Config) (string, error) { return container.ID, nil } -func hostConfigFromOptions(options *types.ImageBuildOptions) *container.HostConfig { +func hostConfigFromOptions(options *types.ImageBuildOptions, isWCOW bool) *container.HostConfig { resources := container.Resources{ CgroupParent: options.CgroupParent, CPUShares: options.CPUShares, @@ -461,7 +475,7 @@ func hostConfigFromOptions(options *types.ImageBuildOptions) *container.HostConf // is too small for builder scenarios where many users are // using RUN statements to install large amounts of data. // Use 127GB as that's the default size of a VHD in Hyper-V. - if runtime.GOOS == "windows" && options.Platform == "windows" { + if isWCOW { hc.StorageOpt = make(map[string]string) hc.StorageOpt["size"] = "127GB" } diff --git a/vendor/github.com/docker/docker/builder/dockerfile/internals_linux.go b/vendor/github.com/docker/docker/builder/dockerfile/internals_linux.go index 1014b16a21..5dbd86f147 100644 --- a/vendor/github.com/docker/docker/builder/dockerfile/internals_linux.go +++ b/vendor/github.com/docker/docker/builder/dockerfile/internals_linux.go @@ -11,11 +11,11 @@ import ( "github.com/pkg/errors" ) -func parseChownFlag(chown, ctrRootPath string, idMappings *idtools.IDMappings) (idtools.IDPair, error) { +func parseChownFlag(builder *Builder, state *dispatchState, chown, ctrRootPath string, identityMapping *idtools.IdentityMapping) (idtools.Identity, error) { var userStr, grpStr string parts := strings.Split(chown, ":") if len(parts) > 2 { - return idtools.IDPair{}, errors.New("invalid chown string format: " + chown) + return idtools.Identity{}, errors.New("invalid chown string format: " + chown) } if len(parts) == 1 { // if no group specified, use the user spec as group as well @@ -26,25 +26,25 @@ func parseChownFlag(chown, ctrRootPath string, idMappings *idtools.IDMappings) ( passwdPath, err := symlink.FollowSymlinkInScope(filepath.Join(ctrRootPath, "etc", "passwd"), ctrRootPath) if err != nil { - return idtools.IDPair{}, errors.Wrapf(err, "can't resolve /etc/passwd path in container rootfs") + return idtools.Identity{}, errors.Wrapf(err, "can't resolve /etc/passwd path in container rootfs") } groupPath, err := symlink.FollowSymlinkInScope(filepath.Join(ctrRootPath, "etc", "group"), ctrRootPath) if err != nil { - return idtools.IDPair{}, errors.Wrapf(err, "can't resolve /etc/group path in container rootfs") + return idtools.Identity{}, errors.Wrapf(err, "can't resolve /etc/group path in container rootfs") } uid, err := lookupUser(userStr, passwdPath) if err != nil { - return idtools.IDPair{}, errors.Wrapf(err, "can't find uid for user "+userStr) + return idtools.Identity{}, errors.Wrapf(err, "can't find uid for user "+userStr) } gid, err := lookupGroup(grpStr, groupPath) if err != nil { - return idtools.IDPair{}, errors.Wrapf(err, "can't find gid for group "+grpStr) + return idtools.Identity{}, errors.Wrapf(err, "can't find gid for group "+grpStr) } // convert as necessary because of user namespaces - chownPair, err := idMappings.ToHost(idtools.IDPair{UID: uid, GID: gid}) + chownPair, err := identityMapping.ToHost(idtools.Identity{UID: uid, GID: gid}) if err != nil { - return idtools.IDPair{}, errors.Wrapf(err, "unable to convert uid/gid to host mapping") + return idtools.Identity{}, errors.Wrapf(err, "unable to convert uid/gid to host mapping") } return chownPair, nil } diff --git a/vendor/github.com/docker/docker/builder/dockerfile/internals_windows.go b/vendor/github.com/docker/docker/builder/dockerfile/internals_windows.go index 26978b48cf..82135a12ae 100644 --- a/vendor/github.com/docker/docker/builder/dockerfile/internals_windows.go +++ b/vendor/github.com/docker/docker/builder/dockerfile/internals_windows.go @@ -1,7 +1,120 @@ package dockerfile // import "github.com/docker/docker/builder/dockerfile" -import "github.com/docker/docker/pkg/idtools" +import ( + "bytes" + "os" + "path/filepath" + "strings" -func parseChownFlag(chown, ctrRootPath string, idMappings *idtools.IDMappings) (idtools.IDPair, error) { - return idMappings.RootPair(), nil + "github.com/containerd/containerd/platforms" + "github.com/docker/docker/api/types/container" + "github.com/docker/docker/api/types/mount" + "github.com/docker/docker/pkg/idtools" + "github.com/docker/docker/pkg/jsonmessage" + "github.com/docker/docker/pkg/system" + "github.com/pkg/errors" + "golang.org/x/sys/windows" +) + +func parseChownFlag(builder *Builder, state *dispatchState, chown, ctrRootPath string, identityMapping *idtools.IdentityMapping) (idtools.Identity, error) { + if builder.options.Platform == "windows" { + return getAccountIdentity(builder, chown, ctrRootPath, state) + } + + return identityMapping.RootPair(), nil +} + +func getAccountIdentity(builder *Builder, accountName string, ctrRootPath string, state *dispatchState) (idtools.Identity, error) { + // If this is potentially a string SID then attempt to convert it to verify + // this, otherwise continue looking for the account. + if strings.HasPrefix(accountName, "S-") || strings.HasPrefix(accountName, "s-") { + sid, err := windows.StringToSid(accountName) + + if err == nil { + accountSid, err := sid.String() + + if err != nil { + return idtools.Identity{SID: ""}, errors.Wrapf(err, "error converting SID to string") + } + + return idtools.Identity{SID: accountSid}, nil + } + } + + // Attempt to obtain the SID using the name. + sid, _, accType, err := windows.LookupSID("", accountName) + + // If this is a SID that is built-in and hence the same across all systems then use that. + if err == nil && (accType == windows.SidTypeAlias || accType == windows.SidTypeWellKnownGroup) { + accountSid, err := sid.String() + + if err != nil { + return idtools.Identity{SID: ""}, errors.Wrapf(err, "error converting SID to string") + } + + return idtools.Identity{SID: accountSid}, nil + } + + // Check if the account name is one unique to containers. + if strings.EqualFold(accountName, "ContainerAdministrator") { + return idtools.Identity{SID: system.ContainerAdministratorSidString}, nil + + } else if strings.EqualFold(accountName, "ContainerUser") { + return idtools.Identity{SID: system.ContainerUserSidString}, nil + } + + // All other lookups failed, so therefore determine if the account in + // question exists in the container and if so, obtain its SID. + return lookupNTAccount(builder, accountName, state) +} + +func lookupNTAccount(builder *Builder, accountName string, state *dispatchState) (idtools.Identity, error) { + + source, _ := filepath.Split(os.Args[0]) + + target := "C:\\Docker" + targetExecutable := target + "\\containerutility.exe" + + optionsPlatform, err := platforms.Parse(builder.options.Platform) + if err != nil { + return idtools.Identity{}, err + } + + runConfig := copyRunConfig(state.runConfig, + withCmdCommentString("internal run to obtain NT account information.", optionsPlatform.OS)) + + runConfig.ArgsEscaped = true + runConfig.Cmd = []string{targetExecutable, "getaccountsid", accountName} + + hostConfig := &container.HostConfig{Mounts: []mount.Mount{ + { + Type: mount.TypeBind, + Source: source, + Target: target, + ReadOnly: true, + }, + }, + } + + container, err := builder.containerManager.Create(runConfig, hostConfig) + if err != nil { + return idtools.Identity{}, err + } + + stdout := new(bytes.Buffer) + stderr := new(bytes.Buffer) + + if err := builder.containerManager.Run(builder.clientCtx, container.ID, stdout, stderr); err != nil { + if err, ok := err.(*statusCodeError); ok { + return idtools.Identity{}, &jsonmessage.JSONError{ + Message: stderr.String(), + Code: err.StatusCode(), + } + } + return idtools.Identity{}, err + } + + accountSid := stdout.String() + + return idtools.Identity{SID: accountSid}, nil } diff --git a/vendor/github.com/docker/docker/builder/dockerfile/parser/line_parsers.go b/vendor/github.com/docker/docker/builder/dockerfile/parser/line_parsers.go deleted file mode 100644 index c454835373..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/parser/line_parsers.go +++ /dev/null @@ -1,368 +0,0 @@ -package parser // import "github.com/docker/docker/builder/dockerfile/parser" - -// line parsers are dispatch calls that parse a single unit of text into a -// Node object which contains the whole statement. Dockerfiles have varied -// (but not usually unique, see ONBUILD for a unique example) parsing rules -// per-command, and these unify the processing in a way that makes it -// manageable. - -import ( - "encoding/json" - "errors" - "fmt" - "strings" - "unicode" - "unicode/utf8" -) - -var ( - errDockerfileNotStringArray = errors.New("when using JSON array syntax, arrays must be comprised of strings only") -) - -const ( - commandLabel = "LABEL" -) - -// ignore the current argument. This will still leave a command parsed, but -// will not incorporate the arguments into the ast. -func parseIgnore(rest string, d *Directive) (*Node, map[string]bool, error) { - return &Node{}, nil, nil -} - -// used for onbuild. Could potentially be used for anything that represents a -// statement with sub-statements. -// -// ONBUILD RUN foo bar -> (onbuild (run foo bar)) -// -func parseSubCommand(rest string, d *Directive) (*Node, map[string]bool, error) { - if rest == "" { - return nil, nil, nil - } - - child, err := newNodeFromLine(rest, d) - if err != nil { - return nil, nil, err - } - - return &Node{Children: []*Node{child}}, nil, nil -} - -// helper to parse words (i.e space delimited or quoted strings) in a statement. -// The quotes are preserved as part of this function and they are stripped later -// as part of processWords(). -func parseWords(rest string, d *Directive) []string { - const ( - inSpaces = iota // looking for start of a word - inWord - inQuote - ) - - words := []string{} - phase := inSpaces - word := "" - quote := '\000' - blankOK := false - var ch rune - var chWidth int - - for pos := 0; pos <= len(rest); pos += chWidth { - if pos != len(rest) { - ch, chWidth = utf8.DecodeRuneInString(rest[pos:]) - } - - if phase == inSpaces { // Looking for start of word - if pos == len(rest) { // end of input - break - } - if unicode.IsSpace(ch) { // skip spaces - continue - } - phase = inWord // found it, fall through - } - if (phase == inWord || phase == inQuote) && (pos == len(rest)) { - if blankOK || len(word) > 0 { - words = append(words, word) - } - break - } - if phase == inWord { - if unicode.IsSpace(ch) { - phase = inSpaces - if blankOK || len(word) > 0 { - words = append(words, word) - } - word = "" - blankOK = false - continue - } - if ch == '\'' || ch == '"' { - quote = ch - blankOK = true - phase = inQuote - } - if ch == d.escapeToken { - if pos+chWidth == len(rest) { - continue // just skip an escape token at end of line - } - // If we're not quoted and we see an escape token, then always just - // add the escape token plus the char to the word, even if the char - // is a quote. - word += string(ch) - pos += chWidth - ch, chWidth = utf8.DecodeRuneInString(rest[pos:]) - } - word += string(ch) - continue - } - if phase == inQuote { - if ch == quote { - phase = inWord - } - // The escape token is special except for ' quotes - can't escape anything for ' - if ch == d.escapeToken && quote != '\'' { - if pos+chWidth == len(rest) { - phase = inWord - continue // just skip the escape token at end - } - pos += chWidth - word += string(ch) - ch, chWidth = utf8.DecodeRuneInString(rest[pos:]) - } - word += string(ch) - } - } - - return words -} - -// parse environment like statements. Note that this does *not* handle -// variable interpolation, which will be handled in the evaluator. -func parseNameVal(rest string, key string, d *Directive) (*Node, error) { - // This is kind of tricky because we need to support the old - // variant: KEY name value - // as well as the new one: KEY name=value ... - // The trigger to know which one is being used will be whether we hit - // a space or = first. space ==> old, "=" ==> new - - words := parseWords(rest, d) - if len(words) == 0 { - return nil, nil - } - - // Old format (KEY name value) - if !strings.Contains(words[0], "=") { - parts := tokenWhitespace.Split(rest, 2) - if len(parts) < 2 { - return nil, fmt.Errorf(key + " must have two arguments") - } - return newKeyValueNode(parts[0], parts[1]), nil - } - - var rootNode *Node - var prevNode *Node - for _, word := range words { - if !strings.Contains(word, "=") { - return nil, fmt.Errorf("Syntax error - can't find = in %q. Must be of the form: name=value", word) - } - - parts := strings.SplitN(word, "=", 2) - node := newKeyValueNode(parts[0], parts[1]) - rootNode, prevNode = appendKeyValueNode(node, rootNode, prevNode) - } - - return rootNode, nil -} - -func newKeyValueNode(key, value string) *Node { - return &Node{ - Value: key, - Next: &Node{Value: value}, - } -} - -func appendKeyValueNode(node, rootNode, prevNode *Node) (*Node, *Node) { - if rootNode == nil { - rootNode = node - } - if prevNode != nil { - prevNode.Next = node - } - - prevNode = node.Next - return rootNode, prevNode -} - -func parseEnv(rest string, d *Directive) (*Node, map[string]bool, error) { - node, err := parseNameVal(rest, "ENV", d) - return node, nil, err -} - -func parseLabel(rest string, d *Directive) (*Node, map[string]bool, error) { - node, err := parseNameVal(rest, commandLabel, d) - return node, nil, err -} - -// parses a statement containing one or more keyword definition(s) and/or -// value assignments, like `name1 name2= name3="" name4=value`. -// Note that this is a stricter format than the old format of assignment, -// allowed by parseNameVal(), in a way that this only allows assignment of the -// form `keyword=[]` like `name2=`, `name3=""`, and `name4=value` above. -// In addition, a keyword definition alone is of the form `keyword` like `name1` -// above. And the assignments `name2=` and `name3=""` are equivalent and -// assign an empty value to the respective keywords. -func parseNameOrNameVal(rest string, d *Directive) (*Node, map[string]bool, error) { - words := parseWords(rest, d) - if len(words) == 0 { - return nil, nil, nil - } - - var ( - rootnode *Node - prevNode *Node - ) - for i, word := range words { - node := &Node{} - node.Value = word - if i == 0 { - rootnode = node - } else { - prevNode.Next = node - } - prevNode = node - } - - return rootnode, nil, nil -} - -// parses a whitespace-delimited set of arguments. The result is effectively a -// linked list of string arguments. -func parseStringsWhitespaceDelimited(rest string, d *Directive) (*Node, map[string]bool, error) { - if rest == "" { - return nil, nil, nil - } - - node := &Node{} - rootnode := node - prevnode := node - for _, str := range tokenWhitespace.Split(rest, -1) { // use regexp - prevnode = node - node.Value = str - node.Next = &Node{} - node = node.Next - } - - // XXX to get around regexp.Split *always* providing an empty string at the - // end due to how our loop is constructed, nil out the last node in the - // chain. - prevnode.Next = nil - - return rootnode, nil, nil -} - -// parseString just wraps the string in quotes and returns a working node. -func parseString(rest string, d *Directive) (*Node, map[string]bool, error) { - if rest == "" { - return nil, nil, nil - } - n := &Node{} - n.Value = rest - return n, nil, nil -} - -// parseJSON converts JSON arrays to an AST. -func parseJSON(rest string, d *Directive) (*Node, map[string]bool, error) { - rest = strings.TrimLeftFunc(rest, unicode.IsSpace) - if !strings.HasPrefix(rest, "[") { - return nil, nil, fmt.Errorf(`Error parsing "%s" as a JSON array`, rest) - } - - var myJSON []interface{} - if err := json.NewDecoder(strings.NewReader(rest)).Decode(&myJSON); err != nil { - return nil, nil, err - } - - var top, prev *Node - for _, str := range myJSON { - s, ok := str.(string) - if !ok { - return nil, nil, errDockerfileNotStringArray - } - - node := &Node{Value: s} - if prev == nil { - top = node - } else { - prev.Next = node - } - prev = node - } - - return top, map[string]bool{"json": true}, nil -} - -// parseMaybeJSON determines if the argument appears to be a JSON array. If -// so, passes to parseJSON; if not, quotes the result and returns a single -// node. -func parseMaybeJSON(rest string, d *Directive) (*Node, map[string]bool, error) { - if rest == "" { - return nil, nil, nil - } - - node, attrs, err := parseJSON(rest, d) - - if err == nil { - return node, attrs, nil - } - if err == errDockerfileNotStringArray { - return nil, nil, err - } - - node = &Node{} - node.Value = rest - return node, nil, nil -} - -// parseMaybeJSONToList determines if the argument appears to be a JSON array. If -// so, passes to parseJSON; if not, attempts to parse it as a whitespace -// delimited string. -func parseMaybeJSONToList(rest string, d *Directive) (*Node, map[string]bool, error) { - node, attrs, err := parseJSON(rest, d) - - if err == nil { - return node, attrs, nil - } - if err == errDockerfileNotStringArray { - return nil, nil, err - } - - return parseStringsWhitespaceDelimited(rest, d) -} - -// The HEALTHCHECK command is like parseMaybeJSON, but has an extra type argument. -func parseHealthConfig(rest string, d *Directive) (*Node, map[string]bool, error) { - // Find end of first argument - var sep int - for ; sep < len(rest); sep++ { - if unicode.IsSpace(rune(rest[sep])) { - break - } - } - next := sep - for ; next < len(rest); next++ { - if !unicode.IsSpace(rune(rest[next])) { - break - } - } - - if sep == 0 { - return nil, nil, nil - } - - typ := rest[:sep] - cmd, attrs, err := parseMaybeJSON(rest[next:], d) - if err != nil { - return nil, nil, err - } - - return &Node{Value: typ, Next: cmd}, attrs, err -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/parser/parser.go b/vendor/github.com/docker/docker/builder/dockerfile/parser/parser.go deleted file mode 100644 index f938b808b6..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/parser/parser.go +++ /dev/null @@ -1,327 +0,0 @@ -// Package parser implements a parser and parse tree dumper for Dockerfiles. -package parser // import "github.com/docker/docker/builder/dockerfile/parser" - -import ( - "bufio" - "bytes" - "fmt" - "io" - "regexp" - "strconv" - "strings" - "unicode" - - "github.com/docker/docker/builder/dockerfile/command" - "github.com/pkg/errors" -) - -// Node is a structure used to represent a parse tree. -// -// In the node there are three fields, Value, Next, and Children. Value is the -// current token's string value. Next is always the next non-child token, and -// children contains all the children. Here's an example: -// -// (value next (child child-next child-next-next) next-next) -// -// This data structure is frankly pretty lousy for handling complex languages, -// but lucky for us the Dockerfile isn't very complicated. This structure -// works a little more effectively than a "proper" parse tree for our needs. -// -type Node struct { - Value string // actual content - Next *Node // the next item in the current sexp - Children []*Node // the children of this sexp - Attributes map[string]bool // special attributes for this node - Original string // original line used before parsing - Flags []string // only top Node should have this set - StartLine int // the line in the original dockerfile where the node begins - endLine int // the line in the original dockerfile where the node ends -} - -// Dump dumps the AST defined by `node` as a list of sexps. -// Returns a string suitable for printing. -func (node *Node) Dump() string { - str := "" - str += node.Value - - if len(node.Flags) > 0 { - str += fmt.Sprintf(" %q", node.Flags) - } - - for _, n := range node.Children { - str += "(" + n.Dump() + ")\n" - } - - for n := node.Next; n != nil; n = n.Next { - if len(n.Children) > 0 { - str += " " + n.Dump() - } else { - str += " " + strconv.Quote(n.Value) - } - } - - return strings.TrimSpace(str) -} - -func (node *Node) lines(start, end int) { - node.StartLine = start - node.endLine = end -} - -// AddChild adds a new child node, and updates line information -func (node *Node) AddChild(child *Node, startLine, endLine int) { - child.lines(startLine, endLine) - if node.StartLine < 0 { - node.StartLine = startLine - } - node.endLine = endLine - node.Children = append(node.Children, child) -} - -var ( - dispatch map[string]func(string, *Directive) (*Node, map[string]bool, error) - tokenWhitespace = regexp.MustCompile(`[\t\v\f\r ]+`) - tokenEscapeCommand = regexp.MustCompile(`^#[ \t]*escape[ \t]*=[ \t]*(?P.).*$`) - tokenComment = regexp.MustCompile(`^#.*$`) -) - -// DefaultEscapeToken is the default escape token -const DefaultEscapeToken = '\\' - -// Directive is the structure used during a build run to hold the state of -// parsing directives. -type Directive struct { - escapeToken rune // Current escape token - lineContinuationRegex *regexp.Regexp // Current line continuation regex - processingComplete bool // Whether we are done looking for directives - escapeSeen bool // Whether the escape directive has been seen -} - -// setEscapeToken sets the default token for escaping characters in a Dockerfile. -func (d *Directive) setEscapeToken(s string) error { - if s != "`" && s != "\\" { - return fmt.Errorf("invalid ESCAPE '%s'. Must be ` or \\", s) - } - d.escapeToken = rune(s[0]) - d.lineContinuationRegex = regexp.MustCompile(`\` + s + `[ \t]*$`) - return nil -} - -// possibleParserDirective looks for parser directives, eg '# escapeToken='. -// Parser directives must precede any builder instruction or other comments, -// and cannot be repeated. -func (d *Directive) possibleParserDirective(line string) error { - if d.processingComplete { - return nil - } - - tecMatch := tokenEscapeCommand.FindStringSubmatch(strings.ToLower(line)) - if len(tecMatch) != 0 { - for i, n := range tokenEscapeCommand.SubexpNames() { - if n == "escapechar" { - if d.escapeSeen { - return errors.New("only one escape parser directive can be used") - } - d.escapeSeen = true - return d.setEscapeToken(tecMatch[i]) - } - } - } - - d.processingComplete = true - return nil -} - -// NewDefaultDirective returns a new Directive with the default escapeToken token -func NewDefaultDirective() *Directive { - directive := Directive{} - directive.setEscapeToken(string(DefaultEscapeToken)) - return &directive -} - -func init() { - // Dispatch Table. see line_parsers.go for the parse functions. - // The command is parsed and mapped to the line parser. The line parser - // receives the arguments but not the command, and returns an AST after - // reformulating the arguments according to the rules in the parser - // functions. Errors are propagated up by Parse() and the resulting AST can - // be incorporated directly into the existing AST as a next. - dispatch = map[string]func(string, *Directive) (*Node, map[string]bool, error){ - command.Add: parseMaybeJSONToList, - command.Arg: parseNameOrNameVal, - command.Cmd: parseMaybeJSON, - command.Copy: parseMaybeJSONToList, - command.Entrypoint: parseMaybeJSON, - command.Env: parseEnv, - command.Expose: parseStringsWhitespaceDelimited, - command.From: parseStringsWhitespaceDelimited, - command.Healthcheck: parseHealthConfig, - command.Label: parseLabel, - command.Maintainer: parseString, - command.Onbuild: parseSubCommand, - command.Run: parseMaybeJSON, - command.Shell: parseMaybeJSON, - command.StopSignal: parseString, - command.User: parseString, - command.Volume: parseMaybeJSONToList, - command.Workdir: parseString, - } -} - -// newNodeFromLine splits the line into parts, and dispatches to a function -// based on the command and command arguments. A Node is created from the -// result of the dispatch. -func newNodeFromLine(line string, directive *Directive) (*Node, error) { - cmd, flags, args, err := splitCommand(line) - if err != nil { - return nil, err - } - - fn := dispatch[cmd] - // Ignore invalid Dockerfile instructions - if fn == nil { - fn = parseIgnore - } - next, attrs, err := fn(args, directive) - if err != nil { - return nil, err - } - - return &Node{ - Value: cmd, - Original: line, - Flags: flags, - Next: next, - Attributes: attrs, - }, nil -} - -// Result is the result of parsing a Dockerfile -type Result struct { - AST *Node - EscapeToken rune - Warnings []string -} - -// PrintWarnings to the writer -func (r *Result) PrintWarnings(out io.Writer) { - if len(r.Warnings) == 0 { - return - } - fmt.Fprintf(out, strings.Join(r.Warnings, "\n")+"\n") -} - -// Parse reads lines from a Reader, parses the lines into an AST and returns -// the AST and escape token -func Parse(rwc io.Reader) (*Result, error) { - d := NewDefaultDirective() - currentLine := 0 - root := &Node{StartLine: -1} - scanner := bufio.NewScanner(rwc) - warnings := []string{} - - var err error - for scanner.Scan() { - bytesRead := scanner.Bytes() - if currentLine == 0 { - // First line, strip the byte-order-marker if present - bytesRead = bytes.TrimPrefix(bytesRead, utf8bom) - } - bytesRead, err = processLine(d, bytesRead, true) - if err != nil { - return nil, err - } - currentLine++ - - startLine := currentLine - line, isEndOfLine := trimContinuationCharacter(string(bytesRead), d) - if isEndOfLine && line == "" { - continue - } - - var hasEmptyContinuationLine bool - for !isEndOfLine && scanner.Scan() { - bytesRead, err := processLine(d, scanner.Bytes(), false) - if err != nil { - return nil, err - } - currentLine++ - - if isComment(scanner.Bytes()) { - // original line was a comment (processLine strips comments) - continue - } - if isEmptyContinuationLine(bytesRead) { - hasEmptyContinuationLine = true - continue - } - - continuationLine := string(bytesRead) - continuationLine, isEndOfLine = trimContinuationCharacter(continuationLine, d) - line += continuationLine - } - - if hasEmptyContinuationLine { - warnings = append(warnings, "[WARNING]: Empty continuation line found in:\n "+line) - } - - child, err := newNodeFromLine(line, d) - if err != nil { - return nil, err - } - root.AddChild(child, startLine, currentLine) - } - - if len(warnings) > 0 { - warnings = append(warnings, "[WARNING]: Empty continuation lines will become errors in a future release.") - } - return &Result{ - AST: root, - Warnings: warnings, - EscapeToken: d.escapeToken, - }, handleScannerError(scanner.Err()) -} - -func trimComments(src []byte) []byte { - return tokenComment.ReplaceAll(src, []byte{}) -} - -func trimWhitespace(src []byte) []byte { - return bytes.TrimLeftFunc(src, unicode.IsSpace) -} - -func isComment(line []byte) bool { - return tokenComment.Match(trimWhitespace(line)) -} - -func isEmptyContinuationLine(line []byte) bool { - return len(trimWhitespace(line)) == 0 -} - -var utf8bom = []byte{0xEF, 0xBB, 0xBF} - -func trimContinuationCharacter(line string, d *Directive) (string, bool) { - if d.lineContinuationRegex.MatchString(line) { - line = d.lineContinuationRegex.ReplaceAllString(line, "") - return line, false - } - return line, true -} - -// TODO: remove stripLeftWhitespace after deprecation period. It seems silly -// to preserve whitespace on continuation lines. Why is that done? -func processLine(d *Directive, token []byte, stripLeftWhitespace bool) ([]byte, error) { - if stripLeftWhitespace { - token = trimWhitespace(token) - } - return trimComments(token), d.possibleParserDirective(string(token)) -} - -func handleScannerError(err error) error { - switch err { - case bufio.ErrTooLong: - return errors.Errorf("dockerfile line greater than max allowed size of %d", bufio.MaxScanTokenSize-1) - default: - return err - } -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/parser/split_command.go b/vendor/github.com/docker/docker/builder/dockerfile/parser/split_command.go deleted file mode 100644 index 6f4fbf5884..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/parser/split_command.go +++ /dev/null @@ -1,118 +0,0 @@ -package parser // import "github.com/docker/docker/builder/dockerfile/parser" - -import ( - "strings" - "unicode" -) - -// splitCommand takes a single line of text and parses out the cmd and args, -// which are used for dispatching to more exact parsing functions. -func splitCommand(line string) (string, []string, string, error) { - var args string - var flags []string - - // Make sure we get the same results irrespective of leading/trailing spaces - cmdline := tokenWhitespace.Split(strings.TrimSpace(line), 2) - cmd := strings.ToLower(cmdline[0]) - - if len(cmdline) == 2 { - var err error - args, flags, err = extractBuilderFlags(cmdline[1]) - if err != nil { - return "", nil, "", err - } - } - - return cmd, flags, strings.TrimSpace(args), nil -} - -func extractBuilderFlags(line string) (string, []string, error) { - // Parses the BuilderFlags and returns the remaining part of the line - - const ( - inSpaces = iota // looking for start of a word - inWord - inQuote - ) - - words := []string{} - phase := inSpaces - word := "" - quote := '\000' - blankOK := false - var ch rune - - for pos := 0; pos <= len(line); pos++ { - if pos != len(line) { - ch = rune(line[pos]) - } - - if phase == inSpaces { // Looking for start of word - if pos == len(line) { // end of input - break - } - if unicode.IsSpace(ch) { // skip spaces - continue - } - - // Only keep going if the next word starts with -- - if ch != '-' || pos+1 == len(line) || rune(line[pos+1]) != '-' { - return line[pos:], words, nil - } - - phase = inWord // found something with "--", fall through - } - if (phase == inWord || phase == inQuote) && (pos == len(line)) { - if word != "--" && (blankOK || len(word) > 0) { - words = append(words, word) - } - break - } - if phase == inWord { - if unicode.IsSpace(ch) { - phase = inSpaces - if word == "--" { - return line[pos:], words, nil - } - if blankOK || len(word) > 0 { - words = append(words, word) - } - word = "" - blankOK = false - continue - } - if ch == '\'' || ch == '"' { - quote = ch - blankOK = true - phase = inQuote - continue - } - if ch == '\\' { - if pos+1 == len(line) { - continue // just skip \ at end - } - pos++ - ch = rune(line[pos]) - } - word += string(ch) - continue - } - if phase == inQuote { - if ch == quote { - phase = inWord - continue - } - if ch == '\\' { - if pos+1 == len(line) { - phase = inWord - continue // just skip \ at end - } - pos++ - ch = rune(line[pos]) - } - word += string(ch) - } - } - - return "", words, nil -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/shell/envVarTest b/vendor/github.com/docker/docker/builder/dockerfile/shell/envVarTest deleted file mode 100644 index 08011801c5..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/shell/envVarTest +++ /dev/null @@ -1,232 +0,0 @@ -A|hello | hello -A|he'll'o | hello -A|he'llo | error -A|he\'llo | he'llo -A|he\\'llo | error -A|abc\tdef | abctdef -A|"abc\tdef" | abc\tdef -A|"abc\\tdef" | abc\tdef -A|'abc\tdef' | abc\tdef -A|hello\ | hello -A|hello\\ | hello\ -A|"hello | error -A|"hello\" | error -A|"hel'lo" | hel'lo -A|'hello | error -A|'hello\' | hello\ -A|'hello\there' | hello\there -A|'hello\\there' | hello\\there -A|"''" | '' -A|$. | $. -A|he$1x | hex -A|he$.x | he$.x -# Next one is different on Windows as $pwd==$PWD -U|he$pwd. | he. -W|he$pwd. | he/home. -A|he$PWD | he/home -A|he\$PWD | he$PWD -A|he\\$PWD | he\/home -A|"he\$PWD" | he$PWD -A|"he\\$PWD" | he\/home -A|\${} | ${} -A|\${}aaa | ${}aaa -A|he\${} | he${} -A|he\${}xx | he${}xx -A|${} | error -A|${}aaa | error -A|he${} | error -A|he${}xx | error -A|he${hi} | he -A|he${hi}xx | hexx -A|he${PWD} | he/home -A|he${.} | error -A|he${XXX:-000}xx | he000xx -A|he${PWD:-000}xx | he/homexx -A|he${XXX:-$PWD}xx | he/homexx -A|he${XXX:-${PWD:-yyy}}xx | he/homexx -A|he${XXX:-${YYY:-yyy}}xx | heyyyxx -A|he${XXX:YYY} | error -A|he${XXX:+${PWD}}xx | hexx -A|he${PWD:+${XXX}}xx | hexx -A|he${PWD:+${SHELL}}xx | hebashxx -A|he${XXX:+000}xx | hexx -A|he${PWD:+000}xx | he000xx -A|'he${XX}' | he${XX} -A|"he${PWD}" | he/home -A|"he'$PWD'" | he'/home' -A|"$PWD" | /home -A|'$PWD' | $PWD -A|'\$PWD' | \$PWD -A|'"hello"' | "hello" -A|he\$PWD | he$PWD -A|"he\$PWD" | he$PWD -A|'he\$PWD' | he\$PWD -A|he${PWD | error -A|he${PWD:=000}xx | error -A|he${PWD:+${PWD}:}xx | he/home:xx -A|he${XXX:-\$PWD:}xx | he$PWD:xx -A|he${XXX:-\${PWD}z}xx | he${PWDz}xx -A|안녕하세요 | 안녕하세요 -A|안'녕'하세요 | 안녕하세요 -A|안'녕하세요 | error -A|안녕\'하세요 | 안녕'하세요 -A|안\\'녕하세요 | error -A|안녕\t하세요 | 안녕t하세요 -A|"안녕\t하세요" | 안녕\t하세요 -A|'안녕\t하세요 | error -A|안녕하세요\ | 안녕하세요 -A|안녕하세요\\ | 안녕하세요\ -A|"안녕하세요 | error -A|"안녕하세요\" | error -A|"안녕'하세요" | 안녕'하세요 -A|'안녕하세요 | error -A|'안녕하세요\' | 안녕하세요\ -A|안녕$1x | 안녕x -A|안녕$.x | 안녕$.x -# Next one is different on Windows as $pwd==$PWD -U|안녕$pwd. | 안녕. -W|안녕$pwd. | 안녕/home. -A|안녕$PWD | 안녕/home -A|안녕\$PWD | 안녕$PWD -A|안녕\\$PWD | 안녕\/home -A|안녕\${} | 안녕${} -A|안녕\${}xx | 안녕${}xx -A|안녕${} | error -A|안녕${}xx | error -A|안녕${hi} | 안녕 -A|안녕${hi}xx | 안녕xx -A|안녕${PWD} | 안녕/home -A|안녕${.} | error -A|안녕${XXX:-000}xx | 안녕000xx -A|안녕${PWD:-000}xx | 안녕/homexx -A|안녕${XXX:-$PWD}xx | 안녕/homexx -A|안녕${XXX:-${PWD:-yyy}}xx | 안녕/homexx -A|안녕${XXX:-${YYY:-yyy}}xx | 안녕yyyxx -A|안녕${XXX:YYY} | error -A|안녕${XXX:+${PWD}}xx | 안녕xx -A|안녕${PWD:+${XXX}}xx | 안녕xx -A|안녕${PWD:+${SHELL}}xx | 안녕bashxx -A|안녕${XXX:+000}xx | 안녕xx -A|안녕${PWD:+000}xx | 안녕000xx -A|'안녕${XX}' | 안녕${XX} -A|"안녕${PWD}" | 안녕/home -A|"안녕'$PWD'" | 안녕'/home' -A|'"안녕"' | "안녕" -A|안녕\$PWD | 안녕$PWD -A|"안녕\$PWD" | 안녕$PWD -A|'안녕\$PWD' | 안녕\$PWD -A|안녕${PWD | error -A|안녕${PWD:=000}xx | error -A|안녕${PWD:+${PWD}:}xx | 안녕/home:xx -A|안녕${XXX:-\$PWD:}xx | 안녕$PWD:xx -A|안녕${XXX:-\${PWD}z}xx | 안녕${PWDz}xx -A|$KOREAN | 한국어 -A|안녕$KOREAN | 안녕한국어 -A|${{aaa} | error -A|${aaa}} | } -A|${aaa | error -A|${{aaa:-bbb} | error -A|${aaa:-bbb}} | bbb} -A|${aaa:-bbb | error -A|${aaa:-bbb} | bbb -A|${aaa:-${bbb:-ccc}} | ccc -A|${aaa:-bbb ${foo} | error -A|${aaa:-bbb {foo} | bbb {foo -A|${:} | error -A|${:-bbb} | error -A|${:+bbb} | error - -# Positional parameters won't be set: -# http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_05_01 -A|$1 | -A|${1} | -A|${1:+bbb} | -A|${1:-bbb} | bbb -A|$2 | -A|${2} | -A|${2:+bbb} | -A|${2:-bbb} | bbb -A|$3 | -A|${3} | -A|${3:+bbb} | -A|${3:-bbb} | bbb -A|$4 | -A|${4} | -A|${4:+bbb} | -A|${4:-bbb} | bbb -A|$5 | -A|${5} | -A|${5:+bbb} | -A|${5:-bbb} | bbb -A|$6 | -A|${6} | -A|${6:+bbb} | -A|${6:-bbb} | bbb -A|$7 | -A|${7} | -A|${7:+bbb} | -A|${7:-bbb} | bbb -A|$8 | -A|${8} | -A|${8:+bbb} | -A|${8:-bbb} | bbb -A|$9 | -A|${9} | -A|${9:+bbb} | -A|${9:-bbb} | bbb -A|$999 | -A|${999} | -A|${999:+bbb} | -A|${999:-bbb} | bbb -A|$999aaa | aaa -A|${999}aaa | aaa -A|${999:+bbb}aaa | aaa -A|${999:-bbb}aaa | bbbaaa -A|$001 | -A|${001} | -A|${001:+bbb} | -A|${001:-bbb} | bbb -A|$001aaa | aaa -A|${001}aaa | aaa -A|${001:+bbb}aaa | aaa -A|${001:-bbb}aaa | bbbaaa - -# Special parameters won't be set in the Dockerfile: -# http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_05_02 -A|$@ | -A|${@} | -A|${@:+bbb} | -A|${@:-bbb} | bbb -A|$@@@ | @@ -A|$@aaa | aaa -A|${@}aaa | aaa -A|${@:+bbb}aaa | aaa -A|${@:-bbb}aaa | bbbaaa -A|$* | -A|${*} | -A|${*:+bbb} | -A|${*:-bbb} | bbb -A|$# | -A|${#} | -A|${#:+bbb} | -A|${#:-bbb} | bbb -A|$? | -A|${?} | -A|${?:+bbb} | -A|${?:-bbb} | bbb -A|$- | -A|${-} | -A|${-:+bbb} | -A|${-:-bbb} | bbb -A|$$ | -A|${$} | -A|${$:+bbb} | -A|${$:-bbb} | bbb -A|$! | -A|${!} | -A|${!:+bbb} | -A|${!:-bbb} | bbb -A|$0 | -A|${0} | -A|${0:+bbb} | -A|${0:-bbb} | bbb diff --git a/vendor/github.com/docker/docker/builder/dockerfile/shell/equal_env_unix.go b/vendor/github.com/docker/docker/builder/dockerfile/shell/equal_env_unix.go deleted file mode 100644 index ac97a1e16e..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/shell/equal_env_unix.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build !windows - -package shell // import "github.com/docker/docker/builder/dockerfile/shell" - -// EqualEnvKeys compare two strings and returns true if they are equal. On -// Windows this comparison is case insensitive. -func EqualEnvKeys(from, to string) bool { - return from == to -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/shell/equal_env_windows.go b/vendor/github.com/docker/docker/builder/dockerfile/shell/equal_env_windows.go deleted file mode 100644 index 4baa771bdf..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/shell/equal_env_windows.go +++ /dev/null @@ -1,9 +0,0 @@ -package shell // import "github.com/docker/docker/builder/dockerfile/shell" - -import "strings" - -// EqualEnvKeys compare two strings and returns true if they are equal. On -// Windows this comparison is case insensitive. -func EqualEnvKeys(from, to string) bool { - return strings.ToUpper(from) == strings.ToUpper(to) -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/shell/lex.go b/vendor/github.com/docker/docker/builder/dockerfile/shell/lex.go deleted file mode 100644 index 0c80900ade..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/shell/lex.go +++ /dev/null @@ -1,373 +0,0 @@ -package shell // import "github.com/docker/docker/builder/dockerfile/shell" - -import ( - "bytes" - "strings" - "text/scanner" - "unicode" - - "github.com/pkg/errors" -) - -// Lex performs shell word splitting and variable expansion. -// -// Lex takes a string and an array of env variables and -// process all quotes (" and ') as well as $xxx and ${xxx} env variable -// tokens. Tries to mimic bash shell process. -// It doesn't support all flavors of ${xx:...} formats but new ones can -// be added by adding code to the "special ${} format processing" section -type Lex struct { - escapeToken rune -} - -// NewLex creates a new Lex which uses escapeToken to escape quotes. -func NewLex(escapeToken rune) *Lex { - return &Lex{escapeToken: escapeToken} -} - -// ProcessWord will use the 'env' list of environment variables, -// and replace any env var references in 'word'. -func (s *Lex) ProcessWord(word string, env []string) (string, error) { - word, _, err := s.process(word, env) - return word, err -} - -// ProcessWords will use the 'env' list of environment variables, -// and replace any env var references in 'word' then it will also -// return a slice of strings which represents the 'word' -// split up based on spaces - taking into account quotes. Note that -// this splitting is done **after** the env var substitutions are done. -// Note, each one is trimmed to remove leading and trailing spaces (unless -// they are quoted", but ProcessWord retains spaces between words. -func (s *Lex) ProcessWords(word string, env []string) ([]string, error) { - _, words, err := s.process(word, env) - return words, err -} - -func (s *Lex) process(word string, env []string) (string, []string, error) { - sw := &shellWord{ - envs: env, - escapeToken: s.escapeToken, - } - sw.scanner.Init(strings.NewReader(word)) - return sw.process(word) -} - -type shellWord struct { - scanner scanner.Scanner - envs []string - escapeToken rune -} - -func (sw *shellWord) process(source string) (string, []string, error) { - word, words, err := sw.processStopOn(scanner.EOF) - if err != nil { - err = errors.Wrapf(err, "failed to process %q", source) - } - return word, words, err -} - -type wordsStruct struct { - word string - words []string - inWord bool -} - -func (w *wordsStruct) addChar(ch rune) { - if unicode.IsSpace(ch) && w.inWord { - if len(w.word) != 0 { - w.words = append(w.words, w.word) - w.word = "" - w.inWord = false - } - } else if !unicode.IsSpace(ch) { - w.addRawChar(ch) - } -} - -func (w *wordsStruct) addRawChar(ch rune) { - w.word += string(ch) - w.inWord = true -} - -func (w *wordsStruct) addString(str string) { - var scan scanner.Scanner - scan.Init(strings.NewReader(str)) - for scan.Peek() != scanner.EOF { - w.addChar(scan.Next()) - } -} - -func (w *wordsStruct) addRawString(str string) { - w.word += str - w.inWord = true -} - -func (w *wordsStruct) getWords() []string { - if len(w.word) > 0 { - w.words = append(w.words, w.word) - - // Just in case we're called again by mistake - w.word = "" - w.inWord = false - } - return w.words -} - -// Process the word, starting at 'pos', and stop when we get to the -// end of the word or the 'stopChar' character -func (sw *shellWord) processStopOn(stopChar rune) (string, []string, error) { - var result bytes.Buffer - var words wordsStruct - - var charFuncMapping = map[rune]func() (string, error){ - '\'': sw.processSingleQuote, - '"': sw.processDoubleQuote, - '$': sw.processDollar, - } - - for sw.scanner.Peek() != scanner.EOF { - ch := sw.scanner.Peek() - - if stopChar != scanner.EOF && ch == stopChar { - sw.scanner.Next() - return result.String(), words.getWords(), nil - } - if fn, ok := charFuncMapping[ch]; ok { - // Call special processing func for certain chars - tmp, err := fn() - if err != nil { - return "", []string{}, err - } - result.WriteString(tmp) - - if ch == rune('$') { - words.addString(tmp) - } else { - words.addRawString(tmp) - } - } else { - // Not special, just add it to the result - ch = sw.scanner.Next() - - if ch == sw.escapeToken { - // '\' (default escape token, but ` allowed) escapes, except end of line - ch = sw.scanner.Next() - - if ch == scanner.EOF { - break - } - - words.addRawChar(ch) - } else { - words.addChar(ch) - } - - result.WriteRune(ch) - } - } - if stopChar != scanner.EOF { - return "", []string{}, errors.Errorf("unexpected end of statement while looking for matching %s", string(stopChar)) - } - return result.String(), words.getWords(), nil -} - -func (sw *shellWord) processSingleQuote() (string, error) { - // All chars between single quotes are taken as-is - // Note, you can't escape ' - // - // From the "sh" man page: - // Single Quotes - // Enclosing characters in single quotes preserves the literal meaning of - // all the characters (except single quotes, making it impossible to put - // single-quotes in a single-quoted string). - - var result bytes.Buffer - - sw.scanner.Next() - - for { - ch := sw.scanner.Next() - switch ch { - case scanner.EOF: - return "", errors.New("unexpected end of statement while looking for matching single-quote") - case '\'': - return result.String(), nil - } - result.WriteRune(ch) - } -} - -func (sw *shellWord) processDoubleQuote() (string, error) { - // All chars up to the next " are taken as-is, even ', except any $ chars - // But you can escape " with a \ (or ` if escape token set accordingly) - // - // From the "sh" man page: - // Double Quotes - // Enclosing characters within double quotes preserves the literal meaning - // of all characters except dollarsign ($), backquote (`), and backslash - // (\). The backslash inside double quotes is historically weird, and - // serves to quote only the following characters: - // $ ` " \ . - // Otherwise it remains literal. - - var result bytes.Buffer - - sw.scanner.Next() - - for { - switch sw.scanner.Peek() { - case scanner.EOF: - return "", errors.New("unexpected end of statement while looking for matching double-quote") - case '"': - sw.scanner.Next() - return result.String(), nil - case '$': - value, err := sw.processDollar() - if err != nil { - return "", err - } - result.WriteString(value) - default: - ch := sw.scanner.Next() - if ch == sw.escapeToken { - switch sw.scanner.Peek() { - case scanner.EOF: - // Ignore \ at end of word - continue - case '"', '$', sw.escapeToken: - // These chars can be escaped, all other \'s are left as-is - // Note: for now don't do anything special with ` chars. - // Not sure what to do with them anyway since we're not going - // to execute the text in there (not now anyway). - ch = sw.scanner.Next() - } - } - result.WriteRune(ch) - } - } -} - -func (sw *shellWord) processDollar() (string, error) { - sw.scanner.Next() - - // $xxx case - if sw.scanner.Peek() != '{' { - name := sw.processName() - if name == "" { - return "$", nil - } - return sw.getEnv(name), nil - } - - sw.scanner.Next() - switch sw.scanner.Peek() { - case scanner.EOF: - return "", errors.New("syntax error: missing '}'") - case '{', '}', ':': - // Invalid ${{xx}, ${:xx}, ${:}. ${} case - return "", errors.New("syntax error: bad substitution") - } - name := sw.processName() - ch := sw.scanner.Next() - switch ch { - case '}': - // Normal ${xx} case - return sw.getEnv(name), nil - case ':': - // Special ${xx:...} format processing - // Yes it allows for recursive $'s in the ... spot - modifier := sw.scanner.Next() - - word, _, err := sw.processStopOn('}') - if err != nil { - if sw.scanner.Peek() == scanner.EOF { - return "", errors.New("syntax error: missing '}'") - } - return "", err - } - - // Grab the current value of the variable in question so we - // can use to to determine what to do based on the modifier - newValue := sw.getEnv(name) - - switch modifier { - case '+': - if newValue != "" { - newValue = word - } - return newValue, nil - - case '-': - if newValue == "" { - newValue = word - } - return newValue, nil - - default: - return "", errors.Errorf("unsupported modifier (%c) in substitution", modifier) - } - } - return "", errors.Errorf("missing ':' in substitution") -} - -func (sw *shellWord) processName() string { - // Read in a name (alphanumeric or _) - // If it starts with a numeric then just return $# - var name bytes.Buffer - - for sw.scanner.Peek() != scanner.EOF { - ch := sw.scanner.Peek() - if name.Len() == 0 && unicode.IsDigit(ch) { - for sw.scanner.Peek() != scanner.EOF && unicode.IsDigit(sw.scanner.Peek()) { - // Keep reading until the first non-digit character, or EOF - ch = sw.scanner.Next() - name.WriteRune(ch) - } - return name.String() - } - if name.Len() == 0 && isSpecialParam(ch) { - ch = sw.scanner.Next() - return string(ch) - } - if !unicode.IsLetter(ch) && !unicode.IsDigit(ch) && ch != '_' { - break - } - ch = sw.scanner.Next() - name.WriteRune(ch) - } - - return name.String() -} - -// isSpecialParam checks if the provided character is a special parameters, -// as defined in http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_05_02 -func isSpecialParam(char rune) bool { - switch char { - case '@', '*', '#', '?', '-', '$', '!', '0': - // Special parameters - // http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_05_02 - return true - } - return false -} - -func (sw *shellWord) getEnv(name string) string { - for _, env := range sw.envs { - i := strings.Index(env, "=") - if i < 0 { - if EqualEnvKeys(name, env) { - // Should probably never get here, but just in case treat - // it like "var" and "var=" are the same - return "" - } - continue - } - compareName := env[:i] - if !EqualEnvKeys(name, compareName) { - continue - } - return env[i+1:] - } - return "" -} diff --git a/vendor/github.com/docker/docker/builder/dockerfile/shell/wordsTest b/vendor/github.com/docker/docker/builder/dockerfile/shell/wordsTest deleted file mode 100644 index 1fd9f19433..0000000000 --- a/vendor/github.com/docker/docker/builder/dockerfile/shell/wordsTest +++ /dev/null @@ -1,30 +0,0 @@ -hello | hello -hello${hi}bye | hellobye -ENV hi=hi -hello${hi}bye | hellohibye -ENV space=abc def -hello${space}bye | helloabc,defbye -hello"${space}"bye | helloabc defbye -hello "${space}"bye | hello,abc defbye -ENV leading= ab c -hello${leading}def | hello,ab,cdef -hello"${leading}" def | hello ab c,def -hello"${leading}" | hello ab c -hello${leading} | hello,ab,c -# next line MUST have 3 trailing spaces, don't erase them! -ENV trailing=ab c -hello${trailing} | helloab,c -hello${trailing}d | helloab,c,d -hello"${trailing}"d | helloab c d -# next line MUST have 3 trailing spaces, don't erase them! -hel"lo${trailing}" | helloab c -hello" there " | hello there -hello there | hello,there -hello\ there | hello there -hello" there | error -hello\" there | hello",there -hello"\\there" | hello\there -hello"\there" | hello\there -hello'\\there' | hello\\there -hello'\there' | hello\there -hello'$there' | hello$there diff --git a/vendor/github.com/docker/docker/builder/fscache/fscache.go b/vendor/github.com/docker/docker/builder/fscache/fscache.go index 92c3ea4adb..8897fe16d8 100644 --- a/vendor/github.com/docker/docker/builder/fscache/fscache.go +++ b/vendor/github.com/docker/docker/builder/fscache/fscache.go @@ -12,7 +12,6 @@ import ( "sync" "time" - "github.com/boltdb/bolt" "github.com/docker/docker/builder" "github.com/docker/docker/builder/remotecontext" "github.com/docker/docker/pkg/archive" @@ -23,6 +22,8 @@ import ( "github.com/pkg/errors" "github.com/sirupsen/logrus" "github.com/tonistiigi/fsutil" + fsutiltypes "github.com/tonistiigi/fsutil/types" + bolt "go.etcd.io/bbolt" "golang.org/x/sync/singleflight" ) @@ -614,7 +615,7 @@ func (s sortableCacheSources) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func newTarsumHash(stat *fsutil.Stat) (hash.Hash, error) { +func newTarsumHash(stat *fsutiltypes.Stat) (hash.Hash, error) { fi := &fsutil.StatInfo{Stat: stat} p := stat.Path if fi.IsDir() { diff --git a/vendor/github.com/docker/docker/builder/remotecontext/detect.go b/vendor/github.com/docker/docker/builder/remotecontext/detect.go index af4e20f886..1becd0fd59 100644 --- a/vendor/github.com/docker/docker/builder/remotecontext/detect.go +++ b/vendor/github.com/docker/docker/builder/remotecontext/detect.go @@ -5,15 +5,17 @@ import ( "fmt" "io" "os" + "runtime" "strings" "github.com/containerd/continuity/driver" "github.com/docker/docker/api/types/backend" "github.com/docker/docker/builder" - "github.com/docker/docker/builder/dockerfile/parser" "github.com/docker/docker/builder/dockerignore" + "github.com/docker/docker/errdefs" "github.com/docker/docker/pkg/fileutils" "github.com/docker/docker/pkg/urlutil" + "github.com/moby/buildkit/frontend/dockerfile/parser" "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -22,8 +24,7 @@ import ( const ClientSessionRemote = "client-session" // Detect returns a context and dockerfile from remote location or local -// archive. progressReader is only used if remoteURL is actually a URL -// (not empty, and not a Git endpoint). +// archive. func Detect(config backend.BuildConfig) (remote builder.Source, dockerfile *parser.Result, err error) { remoteURL := config.Options.RemoteContext dockerfilePath := config.Options.Dockerfile @@ -34,8 +35,9 @@ func Detect(config backend.BuildConfig) (remote builder.Source, dockerfile *pars case remoteURL == ClientSessionRemote: res, err := parser.Parse(config.Source) if err != nil { - return nil, nil, err + return nil, nil, errdefs.InvalidParameter(err) } + return nil, res, nil case urlutil.IsGitURL(remoteURL): remote, dockerfile, err = newGitRemote(remoteURL, dockerfilePath) @@ -106,7 +108,7 @@ func newURLRemote(url string, dockerfilePath string, progressReader func(in io.R switch contentType { case mimeTypes.TextPlain: res, err := parser.Parse(progressReader(content)) - return nil, res, err + return nil, res, errdefs.InvalidParameter(err) default: source, err := FromArchive(progressReader(content)) if err != nil { @@ -146,11 +148,17 @@ func readAndParseDockerfile(name string, rc io.Reader) (*parser.Result, error) { br := bufio.NewReader(rc) if _, err := br.Peek(1); err != nil { if err == io.EOF { - return nil, errors.Errorf("the Dockerfile (%s) cannot be empty", name) + return nil, errdefs.InvalidParameter(errors.Errorf("the Dockerfile (%s) cannot be empty", name)) } return nil, errors.Wrap(err, "unexpected error reading Dockerfile") } - return parser.Parse(br) + + dockerfile, err := parser.Parse(br) + if err != nil { + return nil, errdefs.InvalidParameter(errors.Wrapf(err, "failed to parse %s", name)) + } + + return dockerfile, nil } func openAt(remote builder.Source, path string) (driver.File, error) { @@ -174,6 +182,9 @@ func StatAt(remote builder.Source, path string) (os.FileInfo, error) { func FullPath(remote builder.Source, path string) (string, error) { fullPath, err := remote.Root().ResolveScopedPath(path, true) if err != nil { + if runtime.GOOS == "windows" { + return "", fmt.Errorf("failed to resolve scoped path %s (%s): %s. Possible cause is a forbidden path outside the build context", path, fullPath, err) + } return "", fmt.Errorf("Forbidden path outside the build context: %s (%s)", path, fullPath) // backwards compat with old error } return fullPath, nil diff --git a/vendor/github.com/docker/docker/builder/remotecontext/lazycontext.go b/vendor/github.com/docker/docker/builder/remotecontext/lazycontext.go index 442cecad85..96435f2585 100644 --- a/vendor/github.com/docker/docker/builder/remotecontext/lazycontext.go +++ b/vendor/github.com/docker/docker/builder/remotecontext/lazycontext.go @@ -45,7 +45,7 @@ func (c *lazySource) Hash(path string) (string, error) { return "", errors.WithStack(convertPathError(err, cleanPath)) } - fi, err := os.Lstat(fullPath) + fi, err := c.root.Lstat(fullPath) if err != nil { // Backwards compatibility: a missing file returns a path as hash. // This is reached in the case of a broken symlink. diff --git a/vendor/github.com/docker/docker/client/README.md b/vendor/github.com/docker/docker/client/README.md index 059dfb3ce7..992f18117d 100644 --- a/vendor/github.com/docker/docker/client/README.md +++ b/vendor/github.com/docker/docker/client/README.md @@ -16,7 +16,7 @@ import ( ) func main() { - cli, err := client.NewEnvClient() + cli, err := client.NewClientWithOpts(client.FromEnv) if err != nil { panic(err) } diff --git a/vendor/github.com/docker/docker/client/build_cancel.go b/vendor/github.com/docker/docker/client/build_cancel.go new file mode 100644 index 0000000000..74df495089 --- /dev/null +++ b/vendor/github.com/docker/docker/client/build_cancel.go @@ -0,0 +1,20 @@ +package client // import "github.com/docker/docker/client" + +import ( + "context" + "net/url" +) + +// BuildCancel requests the daemon to cancel ongoing build request +func (cli *Client) BuildCancel(ctx context.Context, id string) error { + query := url.Values{} + query.Set("id", id) + + serverResp, err := cli.post(ctx, "/build/cancel", query, nil, nil) + if err != nil { + return err + } + defer ensureReaderClosed(serverResp) + + return nil +} diff --git a/vendor/github.com/docker/docker/client/build_prune.go b/vendor/github.com/docker/docker/client/build_prune.go index c4772a04e7..42bbf99ef1 100644 --- a/vendor/github.com/docker/docker/client/build_prune.go +++ b/vendor/github.com/docker/docker/client/build_prune.go @@ -4,19 +4,34 @@ import ( "context" "encoding/json" "fmt" + "net/url" "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/filters" + "github.com/pkg/errors" ) // BuildCachePrune requests the daemon to delete unused cache data -func (cli *Client) BuildCachePrune(ctx context.Context) (*types.BuildCachePruneReport, error) { +func (cli *Client) BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error) { if err := cli.NewVersionError("1.31", "build prune"); err != nil { return nil, err } report := types.BuildCachePruneReport{} - serverResp, err := cli.post(ctx, "/build/prune", nil, nil, nil) + query := url.Values{} + if opts.All { + query.Set("all", "1") + } + query.Set("keep-storage", fmt.Sprintf("%d", opts.KeepStorage)) + filters, err := filters.ToJSON(opts.Filters) + if err != nil { + return nil, errors.Wrap(err, "prune could not marshal filters option") + } + query.Set("filters", filters) + + serverResp, err := cli.post(ctx, "/build/prune", query, nil, nil) + if err != nil { return nil, err } diff --git a/vendor/github.com/docker/docker/client/client.go b/vendor/github.com/docker/docker/client/client.go index b874b3b522..0b7b4d953c 100644 --- a/vendor/github.com/docker/docker/client/client.go +++ b/vendor/github.com/docker/docker/client/client.go @@ -23,7 +23,7 @@ For example, to list running containers (the equivalent of "docker ps"): ) func main() { - cli, err := client.NewEnvClient() + cli, err := client.NewClientWithOpts(client.FromEnv) if err != nil { panic(err) } @@ -47,16 +47,13 @@ import ( "net" "net/http" "net/url" - "os" "path" - "path/filepath" "strings" "github.com/docker/docker/api" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/versions" "github.com/docker/go-connections/sockets" - "github.com/docker/go-connections/tlsconfig" "github.com/pkg/errors" ) @@ -90,7 +87,7 @@ type Client struct { // If the request is non-GET return `ErrRedirect`. Otherwise use the last response. // // Go 1.8 changes behavior for HTTP redirects (specifically 301, 307, and 308) in the client . -// The Docker client (and by extension docker API client) can be made to to send a request +// The Docker client (and by extension docker API client) can be made to send a request // like POST /containers//start where what would normally be in the name section of the URL is empty. // This triggers an HTTP 301 from the daemon. // In go 1.8 this 301 will be converted to a GET request, and ends up getting a 404 from the daemon. @@ -103,130 +100,6 @@ func CheckRedirect(req *http.Request, via []*http.Request) error { return ErrRedirect } -// NewEnvClient initializes a new API client based on environment variables. -// See FromEnv for a list of support environment variables. -// -// Deprecated: use NewClientWithOpts(FromEnv) -func NewEnvClient() (*Client, error) { - return NewClientWithOpts(FromEnv) -} - -// FromEnv configures the client with values from environment variables. -// -// Supported environment variables: -// DOCKER_HOST to set the url to the docker server. -// DOCKER_API_VERSION to set the version of the API to reach, leave empty for latest. -// DOCKER_CERT_PATH to load the TLS certificates from. -// DOCKER_TLS_VERIFY to enable or disable TLS verification, off by default. -func FromEnv(c *Client) error { - if dockerCertPath := os.Getenv("DOCKER_CERT_PATH"); dockerCertPath != "" { - options := tlsconfig.Options{ - CAFile: filepath.Join(dockerCertPath, "ca.pem"), - CertFile: filepath.Join(dockerCertPath, "cert.pem"), - KeyFile: filepath.Join(dockerCertPath, "key.pem"), - InsecureSkipVerify: os.Getenv("DOCKER_TLS_VERIFY") == "", - } - tlsc, err := tlsconfig.Client(options) - if err != nil { - return err - } - - c.client = &http.Client{ - Transport: &http.Transport{TLSClientConfig: tlsc}, - CheckRedirect: CheckRedirect, - } - } - - if host := os.Getenv("DOCKER_HOST"); host != "" { - if err := WithHost(host)(c); err != nil { - return err - } - } - - if version := os.Getenv("DOCKER_API_VERSION"); version != "" { - c.version = version - c.manualOverride = true - } - return nil -} - -// WithTLSClientConfig applies a tls config to the client transport. -func WithTLSClientConfig(cacertPath, certPath, keyPath string) func(*Client) error { - return func(c *Client) error { - opts := tlsconfig.Options{ - CAFile: cacertPath, - CertFile: certPath, - KeyFile: keyPath, - ExclusiveRootPools: true, - } - config, err := tlsconfig.Client(opts) - if err != nil { - return errors.Wrap(err, "failed to create tls config") - } - if transport, ok := c.client.Transport.(*http.Transport); ok { - transport.TLSClientConfig = config - return nil - } - return errors.Errorf("cannot apply tls config to transport: %T", c.client.Transport) - } -} - -// WithDialer applies the dialer.DialContext to the client transport. This can be -// used to set the Timeout and KeepAlive settings of the client. -func WithDialer(dialer *net.Dialer) func(*Client) error { - return func(c *Client) error { - if transport, ok := c.client.Transport.(*http.Transport); ok { - transport.DialContext = dialer.DialContext - return nil - } - return errors.Errorf("cannot apply dialer to transport: %T", c.client.Transport) - } -} - -// WithVersion overrides the client version with the specified one -func WithVersion(version string) func(*Client) error { - return func(c *Client) error { - c.version = version - return nil - } -} - -// WithHost overrides the client host with the specified one. -func WithHost(host string) func(*Client) error { - return func(c *Client) error { - hostURL, err := ParseHostURL(host) - if err != nil { - return err - } - c.host = host - c.proto = hostURL.Scheme - c.addr = hostURL.Host - c.basePath = hostURL.Path - if transport, ok := c.client.Transport.(*http.Transport); ok { - return sockets.ConfigureTransport(transport, c.proto, c.addr) - } - return errors.Errorf("cannot apply host to transport: %T", c.client.Transport) - } -} - -// WithHTTPClient overrides the client http client with the specified one -func WithHTTPClient(client *http.Client) func(*Client) error { - return func(c *Client) error { - if client != nil { - c.client = client - } - return nil - } -} - -// WithHTTPHeaders overrides the client default http headers -func WithHTTPHeaders(headers map[string]string) func(*Client) error { - return func(c *Client) error { - c.customHTTPHeaders = headers - return nil - } -} - // NewClientWithOpts initializes a new API client with default values. It takes functors // to modify values when creating it, like `NewClientWithOpts(WithVersion(…))` // It also initializes the custom http headers to add to each request. @@ -242,7 +115,6 @@ func NewClientWithOpts(ops ...func(*Client) error) (*Client, error) { c := &Client{ host: DefaultDockerHost, version: api.DefaultVersion, - scheme: "http", client: client, proto: defaultProto, addr: defaultAddr, @@ -257,14 +129,18 @@ func NewClientWithOpts(ops ...func(*Client) error) (*Client, error) { if _, ok := c.client.Transport.(http.RoundTripper); !ok { return nil, fmt.Errorf("unable to verify TLS configuration, invalid transport %v", c.client.Transport) } - tlsConfig := resolveTLSConfig(c.client.Transport) - if tlsConfig != nil { - // TODO(stevvooe): This isn't really the right way to write clients in Go. - // `NewClient` should probably only take an `*http.Client` and work from there. - // Unfortunately, the model of having a host-ish/url-thingy as the connection - // string has us confusing protocol and transport layers. We continue doing - // this to avoid breaking existing clients but this should be addressed. - c.scheme = "https" + if c.scheme == "" { + c.scheme = "http" + + tlsConfig := resolveTLSConfig(c.client.Transport) + if tlsConfig != nil { + // TODO(stevvooe): This isn't really the right way to write clients in Go. + // `NewClient` should probably only take an `*http.Client` and work from there. + // Unfortunately, the model of having a host-ish/url-thingy as the connection + // string has us confusing protocol and transport layers. We continue doing + // this to avoid breaking existing clients but this should be addressed. + c.scheme = "https" + } } return c, nil @@ -283,18 +159,6 @@ func defaultHTTPClient(host string) (*http.Client, error) { }, nil } -// NewClient initializes a new API client for the given host and API version. -// It uses the given http client as transport. -// It also initializes the custom http headers to add to each request. -// -// It won't send any version information if the version number is empty. It is -// highly recommended that you set a version or your client may break if the -// server is upgraded. -// Deprecated: use NewClientWithOpts -func NewClient(host string, version string, client *http.Client, httpHeaders map[string]string) (*Client, error) { - return NewClientWithOpts(WithHost(host), WithVersion(version), WithHTTPClient(client), WithHTTPHeaders(httpHeaders)) -} - // Close the transport used by the client func (cli *Client) Close() error { if t, ok := cli.client.Transport.(*http.Transport); ok { @@ -400,3 +264,16 @@ func (cli *Client) CustomHTTPHeaders() map[string]string { func (cli *Client) SetCustomHTTPHeaders(headers map[string]string) { cli.customHTTPHeaders = headers } + +// Dialer returns a dialer for a raw stream connection, with HTTP/1.1 header, that can be used for proxying the daemon connection. +// Used by `docker dial-stdio` (docker/cli#889). +func (cli *Client) Dialer() func(context.Context) (net.Conn, error) { + return func(ctx context.Context) (net.Conn, error) { + if transport, ok := cli.client.Transport.(*http.Transport); ok { + if transport.DialContext != nil && transport.TLSClientConfig == nil { + return transport.DialContext(ctx, cli.proto, cli.addr) + } + } + return fallbackDial(cli.proto, cli.addr, resolveTLSConfig(cli.client.Transport)) + } +} diff --git a/vendor/github.com/docker/docker/client/client_deprecated.go b/vendor/github.com/docker/docker/client/client_deprecated.go new file mode 100644 index 0000000000..54cdfc29a8 --- /dev/null +++ b/vendor/github.com/docker/docker/client/client_deprecated.go @@ -0,0 +1,23 @@ +package client + +import "net/http" + +// NewClient initializes a new API client for the given host and API version. +// It uses the given http client as transport. +// It also initializes the custom http headers to add to each request. +// +// It won't send any version information if the version number is empty. It is +// highly recommended that you set a version or your client may break if the +// server is upgraded. +// Deprecated: use NewClientWithOpts +func NewClient(host string, version string, client *http.Client, httpHeaders map[string]string) (*Client, error) { + return NewClientWithOpts(WithHost(host), WithVersion(version), WithHTTPClient(client), WithHTTPHeaders(httpHeaders)) +} + +// NewEnvClient initializes a new API client based on environment variables. +// See FromEnv for a list of support environment variables. +// +// Deprecated: use NewClientWithOpts(FromEnv) +func NewEnvClient() (*Client, error) { + return NewClientWithOpts(FromEnv) +} diff --git a/vendor/github.com/docker/docker/client/container_copy.go b/vendor/github.com/docker/docker/client/container_copy.go index d706260cee..83504ac3ce 100644 --- a/vendor/github.com/docker/docker/client/container_copy.go +++ b/vendor/github.com/docker/docker/client/container_copy.go @@ -50,6 +50,7 @@ func (cli *Client) CopyToContainer(ctx context.Context, containerID, dstPath str } defer ensureReaderClosed(response) + // TODO this code converts non-error status-codes (e.g., "204 No Content") into an error; verify if this is the desired behavior if response.statusCode != http.StatusOK { return fmt.Errorf("unexpected status code from daemon: %d", response.statusCode) } @@ -69,6 +70,7 @@ func (cli *Client) CopyFromContainer(ctx context.Context, containerID, srcPath s return nil, types.ContainerPathStat{}, wrapResponseError(err, response, "container:path", containerID+":"+srcPath) } + // TODO this code converts non-error status-codes (e.g., "204 No Content") into an error; verify if this is the desired behavior if response.statusCode != http.StatusOK { return nil, types.ContainerPathStat{}, fmt.Errorf("unexpected status code from daemon: %d", response.statusCode) } diff --git a/vendor/github.com/docker/docker/client/container_create.go b/vendor/github.com/docker/docker/client/container_create.go index d269a61894..3c9e9c55b7 100644 --- a/vendor/github.com/docker/docker/client/container_create.go +++ b/vendor/github.com/docker/docker/client/container_create.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "net/url" - "strings" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/network" @@ -44,9 +43,6 @@ func (cli *Client) ContainerCreate(ctx context.Context, config *container.Config serverResp, err := cli.post(ctx, "/containers/create", query, body, nil) if err != nil { - if serverResp.statusCode == 404 && strings.Contains(err.Error(), "No such image") { - return response, objectNotFoundError{object: "image", id: config.Image} - } return response, err } diff --git a/vendor/github.com/docker/docker/client/container_inspect.go b/vendor/github.com/docker/docker/client/container_inspect.go index f453064cf8..e34bb16a26 100644 --- a/vendor/github.com/docker/docker/client/container_inspect.go +++ b/vendor/github.com/docker/docker/client/container_inspect.go @@ -19,10 +19,10 @@ func (cli *Client) ContainerInspect(ctx context.Context, containerID string) (ty if err != nil { return types.ContainerJSON{}, wrapResponseError(err, serverResp, "container", containerID) } + defer ensureReaderClosed(serverResp) var response types.ContainerJSON err = json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) return response, err } diff --git a/vendor/github.com/docker/docker/client/errors.go b/vendor/github.com/docker/docker/client/errors.go index 0461af329d..001c102881 100644 --- a/vendor/github.com/docker/docker/client/errors.go +++ b/vendor/github.com/docker/docker/client/errors.go @@ -5,6 +5,7 @@ import ( "net/http" "github.com/docker/docker/api/types/versions" + "github.com/docker/docker/errdefs" "github.com/pkg/errors" ) @@ -32,16 +33,19 @@ func ErrorConnectionFailed(host string) error { return errConnectionFailed{host: host} } +// Deprecated: use the errdefs.NotFound() interface instead. Kept for backward compatibility type notFound interface { error - NotFound() bool // Is the error a NotFound error + NotFound() bool } // IsErrNotFound returns true if the error is a NotFound error, which is returned // by the API when some object is not found. func IsErrNotFound(err error) bool { - te, ok := err.(notFound) - return ok && te.NotFound() + if _, ok := err.(notFound); ok { + return ok + } + return errdefs.IsNotFound(err) } type objectNotFoundError struct { @@ -49,9 +53,7 @@ type objectNotFoundError struct { id string } -func (e objectNotFoundError) NotFound() bool { - return true -} +func (e objectNotFoundError) NotFound() {} func (e objectNotFoundError) Error() string { return fmt.Sprintf("Error: No such %s: %s", e.object, e.id) @@ -64,7 +66,7 @@ func wrapResponseError(err error, resp serverResponse, object, id string) error case resp.statusCode == http.StatusNotFound: return objectNotFoundError{object: object, id: id} case resp.statusCode == http.StatusNotImplemented: - return notImplementedError{message: err.Error()} + return errdefs.NotImplemented(err) default: return err } @@ -83,8 +85,10 @@ func (u unauthorizedError) Error() string { // IsErrUnauthorized returns true if the error is caused // when a remote registry authentication fails func IsErrUnauthorized(err error) bool { - _, ok := err.(unauthorizedError) - return ok + if _, ok := err.(unauthorizedError); ok { + return ok + } + return errdefs.IsUnauthorized(err) } type pluginPermissionDenied struct { @@ -118,8 +122,10 @@ func (e notImplementedError) NotImplemented() bool { // This is returned by the API when a requested feature has not been // implemented. func IsErrNotImplemented(err error) bool { - te, ok := err.(notImplementedError) - return ok && te.NotImplemented() + if _, ok := err.(notImplementedError); ok { + return ok + } + return errdefs.IsNotImplemented(err) } // NewVersionError returns an error if the APIVersion required diff --git a/vendor/github.com/docker/docker/client/hijack.go b/vendor/github.com/docker/docker/client/hijack.go index 2b14831fd2..0ac8248f2c 100644 --- a/vendor/github.com/docker/docker/client/hijack.go +++ b/vendor/github.com/docker/docker/client/hijack.go @@ -9,7 +9,6 @@ import ( "net/http" "net/http/httputil" "net/url" - "strings" "time" "github.com/docker/docker/api/types" @@ -17,21 +16,6 @@ import ( "github.com/pkg/errors" ) -// tlsClientCon holds tls information and a dialed connection. -type tlsClientCon struct { - *tls.Conn - rawConn net.Conn -} - -func (c *tlsClientCon) CloseWrite() error { - // Go standard tls.Conn doesn't provide the CloseWrite() method so we do it - // on its underlying connection. - if conn, ok := c.rawConn.(types.CloseWriter); ok { - return conn.CloseWrite() - } - return nil -} - // postHijacked sends a POST request and hijacks the connection. func (cli *Client) postHijacked(ctx context.Context, path string, query url.Values, body interface{}, headers map[string][]string) (types.HijackedResponse, error) { bodyEncoded, err := encodeData(body) @@ -46,7 +30,7 @@ func (cli *Client) postHijacked(ctx context.Context, path string, query url.Valu } req = cli.addHeaders(req, headers) - conn, err := cli.setupHijackConn(req, "tcp") + conn, err := cli.setupHijackConn(ctx, req, "tcp") if err != nil { return types.HijackedResponse{}, err } @@ -54,96 +38,11 @@ func (cli *Client) postHijacked(ctx context.Context, path string, query url.Valu return types.HijackedResponse{Conn: conn, Reader: bufio.NewReader(conn)}, err } -func tlsDial(network, addr string, config *tls.Config) (net.Conn, error) { - return tlsDialWithDialer(new(net.Dialer), network, addr, config) -} - -// We need to copy Go's implementation of tls.Dial (pkg/cryptor/tls/tls.go) in -// order to return our custom tlsClientCon struct which holds both the tls.Conn -// object _and_ its underlying raw connection. The rationale for this is that -// we need to be able to close the write end of the connection when attaching, -// which tls.Conn does not provide. -func tlsDialWithDialer(dialer *net.Dialer, network, addr string, config *tls.Config) (net.Conn, error) { - // We want the Timeout and Deadline values from dialer to cover the - // whole process: TCP connection and TLS handshake. This means that we - // also need to start our own timers now. - timeout := dialer.Timeout - - if !dialer.Deadline.IsZero() { - deadlineTimeout := time.Until(dialer.Deadline) - if timeout == 0 || deadlineTimeout < timeout { - timeout = deadlineTimeout - } - } - - var errChannel chan error - - if timeout != 0 { - errChannel = make(chan error, 2) - time.AfterFunc(timeout, func() { - errChannel <- errors.New("") - }) - } - - proxyDialer, err := sockets.DialerFromEnvironment(dialer) - if err != nil { - return nil, err - } - - rawConn, err := proxyDialer.Dial(network, addr) - if err != nil { - return nil, err - } - // When we set up a TCP connection for hijack, there could be long periods - // of inactivity (a long running command with no output) that in certain - // network setups may cause ECONNTIMEOUT, leaving the client in an unknown - // state. Setting TCP KeepAlive on the socket connection will prohibit - // ECONNTIMEOUT unless the socket connection truly is broken - if tcpConn, ok := rawConn.(*net.TCPConn); ok { - tcpConn.SetKeepAlive(true) - tcpConn.SetKeepAlivePeriod(30 * time.Second) - } - - colonPos := strings.LastIndex(addr, ":") - if colonPos == -1 { - colonPos = len(addr) - } - hostname := addr[:colonPos] - - // If no ServerName is set, infer the ServerName - // from the hostname we're connecting to. - if config.ServerName == "" { - // Make a copy to avoid polluting argument or default. - config = tlsConfigClone(config) - config.ServerName = hostname - } - - conn := tls.Client(rawConn, config) - - if timeout == 0 { - err = conn.Handshake() - } else { - go func() { - errChannel <- conn.Handshake() - }() - - err = <-errChannel - } - - if err != nil { - rawConn.Close() - return nil, err - } - - // This is Docker difference with standard's crypto/tls package: returned a - // wrapper which holds both the TLS and raw connections. - return &tlsClientCon{conn, rawConn}, nil -} - -func dial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) { +// fallbackDial is used when WithDialer() was not called. +// See cli.Dialer(). +func fallbackDial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) { if tlsConfig != nil && proto != "unix" && proto != "npipe" { - // Notice this isn't Go standard's tls.Dial function - return tlsDial(proto, addr, tlsConfig) + return tls.Dial(proto, addr, tlsConfig) } if proto == "npipe" { return sockets.DialPipe(addr, 32*time.Second) @@ -151,12 +50,13 @@ func dial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) { return net.Dial(proto, addr) } -func (cli *Client) setupHijackConn(req *http.Request, proto string) (net.Conn, error) { +func (cli *Client) setupHijackConn(ctx context.Context, req *http.Request, proto string) (net.Conn, error) { req.Host = cli.addr req.Header.Set("Connection", "Upgrade") req.Header.Set("Upgrade", proto) - conn, err := dial(cli.proto, cli.addr, resolveTLSConfig(cli.client.Transport)) + dialer := cli.Dialer() + conn, err := dialer(ctx) if err != nil { return nil, errors.Wrap(err, "cannot connect to the Docker daemon. Is 'docker daemon' running on this host?") } diff --git a/vendor/github.com/docker/docker/client/image_build.go b/vendor/github.com/docker/docker/client/image_build.go index 6721460316..8fcf995036 100644 --- a/vendor/github.com/docker/docker/client/image_build.go +++ b/vendor/github.com/docker/docker/client/image_build.go @@ -30,12 +30,6 @@ func (cli *Client) ImageBuild(ctx context.Context, buildContext io.Reader, optio } headers.Add("X-Registry-Config", base64.URLEncoding.EncodeToString(buf)) - if options.Platform != "" { - if err := cli.NewVersionError("1.32", "platform"); err != nil { - return types.ImageBuildResponse{}, err - } - query.Set("platform", options.Platform) - } headers.Set("Content-Type", "application/x-tar") serverResp, err := cli.postRaw(ctx, "/build", query, buildContext, headers) @@ -131,7 +125,22 @@ func (cli *Client) imageBuildOptionsToQuery(options types.ImageBuildOptions) (ur query.Set("session", options.SessionID) } if options.Platform != "" { + if err := cli.NewVersionError("1.32", "platform"); err != nil { + return query, err + } query.Set("platform", strings.ToLower(options.Platform)) } + if options.BuildID != "" { + query.Set("buildid", options.BuildID) + } + query.Set("version", string(options.Version)) + + if options.Outputs != nil { + outputsJSON, err := json.Marshal(options.Outputs) + if err != nil { + return query, err + } + query.Set("outputs", string(outputsJSON)) + } return query, nil } diff --git a/vendor/github.com/docker/docker/client/image_pull.go b/vendor/github.com/docker/docker/client/image_pull.go index d97aacf8c5..a23975591b 100644 --- a/vendor/github.com/docker/docker/client/image_pull.go +++ b/vendor/github.com/docker/docker/client/image_pull.go @@ -3,12 +3,12 @@ package client // import "github.com/docker/docker/client" import ( "context" "io" - "net/http" "net/url" "strings" "github.com/docker/distribution/reference" "github.com/docker/docker/api/types" + "github.com/docker/docker/errdefs" ) // ImagePull requests the docker host to pull an image from a remote registry. @@ -35,7 +35,7 @@ func (cli *Client) ImagePull(ctx context.Context, refStr string, options types.I } resp, err := cli.tryImageCreate(ctx, query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { + if errdefs.IsUnauthorized(err) && options.PrivilegeFunc != nil { newAuthHeader, privilegeErr := options.PrivilegeFunc() if privilegeErr != nil { return nil, privilegeErr diff --git a/vendor/github.com/docker/docker/client/image_push.go b/vendor/github.com/docker/docker/client/image_push.go index a15871c2b4..49d412ee37 100644 --- a/vendor/github.com/docker/docker/client/image_push.go +++ b/vendor/github.com/docker/docker/client/image_push.go @@ -4,11 +4,11 @@ import ( "context" "errors" "io" - "net/http" "net/url" "github.com/docker/distribution/reference" "github.com/docker/docker/api/types" + "github.com/docker/docker/errdefs" ) // ImagePush requests the docker host to push an image to a remote registry. @@ -36,7 +36,7 @@ func (cli *Client) ImagePush(ctx context.Context, image string, options types.Im query.Set("tag", tag) resp, err := cli.tryImagePush(ctx, name, query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { + if errdefs.IsUnauthorized(err) && options.PrivilegeFunc != nil { newAuthHeader, privilegeErr := options.PrivilegeFunc() if privilegeErr != nil { return nil, privilegeErr diff --git a/vendor/github.com/docker/docker/client/image_search.go b/vendor/github.com/docker/docker/client/image_search.go index 176de3c582..bbdf9e153e 100644 --- a/vendor/github.com/docker/docker/client/image_search.go +++ b/vendor/github.com/docker/docker/client/image_search.go @@ -4,12 +4,12 @@ import ( "context" "encoding/json" "fmt" - "net/http" "net/url" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/filters" "github.com/docker/docker/api/types/registry" + "github.com/docker/docker/errdefs" ) // ImageSearch makes the docker host to search by a term in a remote registry. @@ -29,7 +29,7 @@ func (cli *Client) ImageSearch(ctx context.Context, term string, options types.I } resp, err := cli.tryImageSearch(ctx, query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { + if errdefs.IsUnauthorized(err) && options.PrivilegeFunc != nil { newAuthHeader, privilegeErr := options.PrivilegeFunc() if privilegeErr != nil { return results, privilegeErr diff --git a/vendor/github.com/docker/docker/client/interface.go b/vendor/github.com/docker/docker/client/interface.go index 0487a0b9f3..d190f8e58d 100644 --- a/vendor/github.com/docker/docker/client/interface.go +++ b/vendor/github.com/docker/docker/client/interface.go @@ -39,6 +39,7 @@ type CommonAPIClient interface { NegotiateAPIVersion(ctx context.Context) NegotiateAPIVersionPing(types.Ping) DialSession(ctx context.Context, proto string, meta map[string][]string) (net.Conn, error) + Dialer() func(context.Context) (net.Conn, error) Close() error } @@ -85,7 +86,8 @@ type DistributionAPIClient interface { // ImageAPIClient defines API client methods for the images type ImageAPIClient interface { ImageBuild(ctx context.Context, context io.Reader, options types.ImageBuildOptions) (types.ImageBuildResponse, error) - BuildCachePrune(ctx context.Context) (*types.BuildCachePruneReport, error) + BuildCachePrune(ctx context.Context, opts types.BuildCachePruneOptions) (*types.BuildCachePruneReport, error) + BuildCancel(ctx context.Context, id string) error ImageCreate(ctx context.Context, parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error) ImageHistory(ctx context.Context, image string) ([]image.HistoryResponseItem, error) ImageImport(ctx context.Context, source types.ImageImportSource, ref string, options types.ImageImportOptions) (io.ReadCloser, error) diff --git a/vendor/github.com/docker/docker/client/login.go b/vendor/github.com/docker/docker/client/login.go index 7d66181900..472edc9037 100644 --- a/vendor/github.com/docker/docker/client/login.go +++ b/vendor/github.com/docker/docker/client/login.go @@ -3,7 +3,6 @@ package client // import "github.com/docker/docker/client" import ( "context" "encoding/json" - "net/http" "net/url" "github.com/docker/docker/api/types" @@ -15,9 +14,6 @@ import ( func (cli *Client) RegistryLogin(ctx context.Context, auth types.AuthConfig) (registry.AuthenticateOKBody, error) { resp, err := cli.post(ctx, "/auth", url.Values{}, auth, nil) - if resp.statusCode == http.StatusUnauthorized { - return registry.AuthenticateOKBody{}, unauthorizedError{err} - } if err != nil { return registry.AuthenticateOKBody{}, err } diff --git a/vendor/github.com/docker/docker/client/options.go b/vendor/github.com/docker/docker/client/options.go new file mode 100644 index 0000000000..12eb25b18e --- /dev/null +++ b/vendor/github.com/docker/docker/client/options.go @@ -0,0 +1,144 @@ +package client + +import ( + "context" + "net" + "net/http" + "os" + "path/filepath" + + "github.com/docker/go-connections/sockets" + "github.com/docker/go-connections/tlsconfig" + "github.com/pkg/errors" +) + +// FromEnv configures the client with values from environment variables. +// +// Supported environment variables: +// DOCKER_HOST to set the url to the docker server. +// DOCKER_API_VERSION to set the version of the API to reach, leave empty for latest. +// DOCKER_CERT_PATH to load the TLS certificates from. +// DOCKER_TLS_VERIFY to enable or disable TLS verification, off by default. +func FromEnv(c *Client) error { + if dockerCertPath := os.Getenv("DOCKER_CERT_PATH"); dockerCertPath != "" { + options := tlsconfig.Options{ + CAFile: filepath.Join(dockerCertPath, "ca.pem"), + CertFile: filepath.Join(dockerCertPath, "cert.pem"), + KeyFile: filepath.Join(dockerCertPath, "key.pem"), + InsecureSkipVerify: os.Getenv("DOCKER_TLS_VERIFY") == "", + } + tlsc, err := tlsconfig.Client(options) + if err != nil { + return err + } + + c.client = &http.Client{ + Transport: &http.Transport{TLSClientConfig: tlsc}, + CheckRedirect: CheckRedirect, + } + } + + if host := os.Getenv("DOCKER_HOST"); host != "" { + if err := WithHost(host)(c); err != nil { + return err + } + } + + if version := os.Getenv("DOCKER_API_VERSION"); version != "" { + c.version = version + c.manualOverride = true + } + return nil +} + +// WithDialer applies the dialer.DialContext to the client transport. This can be +// used to set the Timeout and KeepAlive settings of the client. +// Deprecated: use WithDialContext +func WithDialer(dialer *net.Dialer) func(*Client) error { + return WithDialContext(dialer.DialContext) +} + +// WithDialContext applies the dialer to the client transport. This can be +// used to set the Timeout and KeepAlive settings of the client. +func WithDialContext(dialContext func(ctx context.Context, network, addr string) (net.Conn, error)) func(*Client) error { + return func(c *Client) error { + if transport, ok := c.client.Transport.(*http.Transport); ok { + transport.DialContext = dialContext + return nil + } + return errors.Errorf("cannot apply dialer to transport: %T", c.client.Transport) + } +} + +// WithHost overrides the client host with the specified one. +func WithHost(host string) func(*Client) error { + return func(c *Client) error { + hostURL, err := ParseHostURL(host) + if err != nil { + return err + } + c.host = host + c.proto = hostURL.Scheme + c.addr = hostURL.Host + c.basePath = hostURL.Path + if transport, ok := c.client.Transport.(*http.Transport); ok { + return sockets.ConfigureTransport(transport, c.proto, c.addr) + } + return errors.Errorf("cannot apply host to transport: %T", c.client.Transport) + } +} + +// WithHTTPClient overrides the client http client with the specified one +func WithHTTPClient(client *http.Client) func(*Client) error { + return func(c *Client) error { + if client != nil { + c.client = client + } + return nil + } +} + +// WithHTTPHeaders overrides the client default http headers +func WithHTTPHeaders(headers map[string]string) func(*Client) error { + return func(c *Client) error { + c.customHTTPHeaders = headers + return nil + } +} + +// WithScheme overrides the client scheme with the specified one +func WithScheme(scheme string) func(*Client) error { + return func(c *Client) error { + c.scheme = scheme + return nil + } +} + +// WithTLSClientConfig applies a tls config to the client transport. +func WithTLSClientConfig(cacertPath, certPath, keyPath string) func(*Client) error { + return func(c *Client) error { + opts := tlsconfig.Options{ + CAFile: cacertPath, + CertFile: certPath, + KeyFile: keyPath, + ExclusiveRootPools: true, + } + config, err := tlsconfig.Client(opts) + if err != nil { + return errors.Wrap(err, "failed to create tls config") + } + if transport, ok := c.client.Transport.(*http.Transport); ok { + transport.TLSClientConfig = config + return nil + } + return errors.Errorf("cannot apply tls config to transport: %T", c.client.Transport) + } +} + +// WithVersion overrides the client version with the specified one +func WithVersion(version string) func(*Client) error { + return func(c *Client) error { + c.version = version + return nil + } +} diff --git a/vendor/github.com/docker/docker/client/ping.go b/vendor/github.com/docker/docker/client/ping.go index 85d38adb51..5cfadaa206 100644 --- a/vendor/github.com/docker/docker/client/ping.go +++ b/vendor/github.com/docker/docker/client/ping.go @@ -2,31 +2,63 @@ package client // import "github.com/docker/docker/client" import ( "context" + "net/http" "path" "github.com/docker/docker/api/types" + "github.com/docker/docker/errdefs" ) -// Ping pings the server and returns the value of the "Docker-Experimental", "OS-Type" & "API-Version" headers +// Ping pings the server and returns the value of the "Docker-Experimental", +// "Builder-Version", "OS-Type" & "API-Version" headers. It attempts to use +// a HEAD request on the endpoint, but falls back to GET if HEAD is not supported +// by the daemon. func (cli *Client) Ping(ctx context.Context) (types.Ping, error) { var ping types.Ping - req, err := cli.buildRequest("GET", path.Join(cli.basePath, "/_ping"), nil, nil) + + // Using cli.buildRequest() + cli.doRequest() instead of cli.sendRequest() + // because ping requests are used during API version negotiation, so we want + // to hit the non-versioned /_ping endpoint, not /v1.xx/_ping + req, err := cli.buildRequest("HEAD", path.Join(cli.basePath, "/_ping"), nil, nil) if err != nil { return ping, err } serverResp, err := cli.doRequest(ctx, req) + if err == nil { + defer ensureReaderClosed(serverResp) + switch serverResp.statusCode { + case http.StatusOK, http.StatusInternalServerError: + // Server handled the request, so parse the response + return parsePingResponse(cli, serverResp) + } + } + + req, err = cli.buildRequest("GET", path.Join(cli.basePath, "/_ping"), nil, nil) + if err != nil { + return ping, err + } + serverResp, err = cli.doRequest(ctx, req) if err != nil { return ping, err } defer ensureReaderClosed(serverResp) + return parsePingResponse(cli, serverResp) +} - if serverResp.header != nil { - ping.APIVersion = serverResp.header.Get("API-Version") - - if serverResp.header.Get("Docker-Experimental") == "true" { - ping.Experimental = true - } - ping.OSType = serverResp.header.Get("OSType") +func parsePingResponse(cli *Client, resp serverResponse) (types.Ping, error) { + var ping types.Ping + if resp.header == nil { + err := cli.checkResponseErr(resp) + return ping, errdefs.FromStatusCode(err, resp.statusCode) + } + ping.APIVersion = resp.header.Get("API-Version") + ping.OSType = resp.header.Get("OSType") + if resp.header.Get("Docker-Experimental") == "true" { + ping.Experimental = true + } + if bv := resp.header.Get("Builder-Version"); bv != "" { + ping.BuilderVersion = types.BuilderVersion(bv) } - return ping, cli.checkResponseErr(serverResp) + err := cli.checkResponseErr(resp) + return ping, errdefs.FromStatusCode(err, resp.statusCode) } diff --git a/vendor/github.com/docker/docker/client/plugin_install.go b/vendor/github.com/docker/docker/client/plugin_install.go index 13baa40a9b..012afe61ca 100644 --- a/vendor/github.com/docker/docker/client/plugin_install.go +++ b/vendor/github.com/docker/docker/client/plugin_install.go @@ -4,11 +4,11 @@ import ( "context" "encoding/json" "io" - "net/http" "net/url" "github.com/docker/distribution/reference" "github.com/docker/docker/api/types" + "github.com/docker/docker/errdefs" "github.com/pkg/errors" ) @@ -78,7 +78,7 @@ func (cli *Client) tryPluginPull(ctx context.Context, query url.Values, privileg func (cli *Client) checkPluginPermissions(ctx context.Context, query url.Values, options types.PluginInstallOptions) (types.PluginPrivileges, error) { resp, err := cli.tryPluginPrivileges(ctx, query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { + if errdefs.IsUnauthorized(err) && options.PrivilegeFunc != nil { // todo: do inspect before to check existing name before checking privileges newAuthHeader, privilegeErr := options.PrivilegeFunc() if privilegeErr != nil { diff --git a/vendor/github.com/docker/docker/client/request.go b/vendor/github.com/docker/docker/client/request.go index a19d62aa52..0afe26d588 100644 --- a/vendor/github.com/docker/docker/client/request.go +++ b/vendor/github.com/docker/docker/client/request.go @@ -15,8 +15,8 @@ import ( "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/versions" + "github.com/docker/docker/errdefs" "github.com/pkg/errors" - "golang.org/x/net/context/ctxhttp" ) // serverResponse is a wrapper for http API responses. @@ -121,22 +121,24 @@ func (cli *Client) sendRequest(ctx context.Context, method, path string, query u } resp, err := cli.doRequest(ctx, req) if err != nil { - return resp, err + return resp, errdefs.FromStatusCode(err, resp.statusCode) } - return resp, cli.checkResponseErr(resp) + err = cli.checkResponseErr(resp) + return resp, errdefs.FromStatusCode(err, resp.statusCode) } func (cli *Client) doRequest(ctx context.Context, req *http.Request) (serverResponse, error) { serverResp := serverResponse{statusCode: -1, reqURL: req.URL} - resp, err := ctxhttp.Do(ctx, cli.client, req) + req = req.WithContext(ctx) + resp, err := cli.client.Do(req) if err != nil { if cli.scheme != "https" && strings.Contains(err.Error(), "malformed HTTP response") { return serverResp, fmt.Errorf("%v.\n* Are you trying to connect to a TLS-enabled daemon without TLS?", err) } if cli.scheme == "https" && strings.Contains(err.Error(), "bad certificate") { - return serverResp, fmt.Errorf("The server probably has client authentication (--tlsverify) enabled. Please check your TLS client certification settings: %v", err) + return serverResp, errors.Wrap(err, "The server probably has client authentication (--tlsverify) enabled. Please check your TLS client certification settings") } // Don't decorate context sentinel errors; users may be comparing to @@ -195,9 +197,21 @@ func (cli *Client) checkResponseErr(serverResp serverResponse) error { return nil } - body, err := ioutil.ReadAll(serverResp.body) - if err != nil { - return err + var body []byte + var err error + if serverResp.body != nil { + bodyMax := 1 * 1024 * 1024 // 1 MiB + bodyR := &io.LimitedReader{ + R: serverResp.body, + N: int64(bodyMax), + } + body, err = ioutil.ReadAll(bodyR) + if err != nil { + return err + } + if bodyR.N == 0 { + return fmt.Errorf("request returned %s with a message (> %d bytes) for API route and version %s, check if the server supports the requested API version", http.StatusText(serverResp.statusCode), bodyMax, serverResp.reqURL) + } } if len(body) == 0 { return fmt.Errorf("request returned %s for API route and version %s, check if the server supports the requested API version", http.StatusText(serverResp.statusCode), serverResp.reqURL) @@ -212,14 +226,14 @@ func (cli *Client) checkResponseErr(serverResp serverResponse) error { if (cli.version == "" || versions.GreaterThan(cli.version, "1.23")) && ct == "application/json" { var errorResponse types.ErrorResponse if err := json.Unmarshal(body, &errorResponse); err != nil { - return fmt.Errorf("Error reading JSON: %v", err) + return errors.Wrap(err, "Error reading JSON") } - errorMessage = errorResponse.Message + errorMessage = strings.TrimSpace(errorResponse.Message) } else { - errorMessage = string(body) + errorMessage = strings.TrimSpace(string(body)) } - return fmt.Errorf("Error response from daemon: %s", strings.TrimSpace(errorMessage)) + return errors.Wrap(errors.New(errorMessage), "Error response from daemon") } func (cli *Client) addHeaders(req *http.Request, headers headers) *http.Request { diff --git a/vendor/github.com/docker/docker/client/service_update.go b/vendor/github.com/docker/docker/client/service_update.go index 5a7a61b01f..3c21214f60 100644 --- a/vendor/github.com/docker/docker/client/service_update.go +++ b/vendor/github.com/docker/docker/client/service_update.go @@ -10,7 +10,9 @@ import ( "github.com/docker/docker/api/types/swarm" ) -// ServiceUpdate updates a Service. +// ServiceUpdate updates a Service. The version number is required to avoid conflicting writes. +// It should be the value as set *before* the update. You can find this value in the Meta field +// of swarm.Service, which can be found using ServiceInspectWithRaw. func (cli *Client) ServiceUpdate(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (types.ServiceUpdateResponse, error) { var ( query = url.Values{} diff --git a/vendor/github.com/docker/docker/client/session.go b/vendor/github.com/docker/docker/client/session.go index c247123b45..df199f3d03 100644 --- a/vendor/github.com/docker/docker/client/session.go +++ b/vendor/github.com/docker/docker/client/session.go @@ -14,5 +14,5 @@ func (cli *Client) DialSession(ctx context.Context, proto string, meta map[strin } req = cli.addHeaders(req, meta) - return cli.setupHijackConn(req, proto) + return cli.setupHijackConn(ctx, req, proto) } diff --git a/vendor/github.com/docker/docker/client/tlsconfig_clone.go b/vendor/github.com/docker/docker/client/tlsconfig_clone.go deleted file mode 100644 index 88200e92c3..0000000000 --- a/vendor/github.com/docker/docker/client/tlsconfig_clone.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build go1.8 - -package client // import "github.com/docker/docker/client" - -import "crypto/tls" - -// tlsConfigClone returns a clone of tls.Config. This function is provided for -// compatibility for go1.7 that doesn't include this method in stdlib. -func tlsConfigClone(c *tls.Config) *tls.Config { - return c.Clone() -} diff --git a/vendor/github.com/docker/docker/client/tlsconfig_clone_go17.go b/vendor/github.com/docker/docker/client/tlsconfig_clone_go17.go deleted file mode 100644 index e298542367..0000000000 --- a/vendor/github.com/docker/docker/client/tlsconfig_clone_go17.go +++ /dev/null @@ -1,33 +0,0 @@ -// +build go1.7,!go1.8 - -package client // import "github.com/docker/docker/client" - -import "crypto/tls" - -// tlsConfigClone returns a clone of tls.Config. This function is provided for -// compatibility for go1.7 that doesn't include this method in stdlib. -func tlsConfigClone(c *tls.Config) *tls.Config { - return &tls.Config{ - Rand: c.Rand, - Time: c.Time, - Certificates: c.Certificates, - NameToCertificate: c.NameToCertificate, - GetCertificate: c.GetCertificate, - RootCAs: c.RootCAs, - NextProtos: c.NextProtos, - ServerName: c.ServerName, - ClientAuth: c.ClientAuth, - ClientCAs: c.ClientCAs, - InsecureSkipVerify: c.InsecureSkipVerify, - CipherSuites: c.CipherSuites, - PreferServerCipherSuites: c.PreferServerCipherSuites, - SessionTicketsDisabled: c.SessionTicketsDisabled, - SessionTicketKey: c.SessionTicketKey, - ClientSessionCache: c.ClientSessionCache, - MinVersion: c.MinVersion, - MaxVersion: c.MaxVersion, - CurvePreferences: c.CurvePreferences, - DynamicRecordSizingDisabled: c.DynamicRecordSizingDisabled, - Renegotiation: c.Renegotiation, - } -} diff --git a/vendor/github.com/docker/docker/container/container.go b/vendor/github.com/docker/docker/container/container.go index 5f31d8df12..6a5907c34b 100644 --- a/vendor/github.com/docker/docker/container/container.go +++ b/vendor/github.com/docker/docker/container/container.go @@ -22,7 +22,9 @@ import ( "github.com/docker/docker/daemon/exec" "github.com/docker/docker/daemon/logger" "github.com/docker/docker/daemon/logger/jsonfilelog" + "github.com/docker/docker/daemon/logger/local" "github.com/docker/docker/daemon/network" + "github.com/docker/docker/errdefs" "github.com/docker/docker/image" "github.com/docker/docker/layer" "github.com/docker/docker/pkg/containerfs" @@ -254,7 +256,7 @@ func (container *Container) WriteHostConfig() (*containertypes.HostConfig, error } // SetupWorkingDirectory sets up the container's working directory as set in container.Config.WorkingDir -func (container *Container) SetupWorkingDirectory(rootIDs idtools.IDPair) error { +func (container *Container) SetupWorkingDirectory(rootIdentity idtools.Identity) error { // TODO @jhowardmsft, @gupta-ak LCOW Support. This will need revisiting. // We will need to do remote filesystem operations here. if container.OS != runtime.GOOS { @@ -271,7 +273,7 @@ func (container *Container) SetupWorkingDirectory(rootIDs idtools.IDPair) error return err } - if err := idtools.MkdirAllAndChownNew(pth, 0755, rootIDs); err != nil { + if err := idtools.MkdirAllAndChownNew(pth, 0755, rootIdentity); err != nil { pthInfo, err2 := os.Stat(pth) if err2 == nil && pthInfo != nil && !pthInfo.IsDir() { return errors.Errorf("Cannot mkdir: %s is not a directory", container.Config.WorkingDir) @@ -375,13 +377,27 @@ func (container *Container) StartLogger() (logger.Logger, error) { } // Set logging file for "json-logger" - if cfg.Type == jsonfilelog.Name { + // TODO(@cpuguy83): Setup here based on log driver is a little weird. + switch cfg.Type { + case jsonfilelog.Name: info.LogPath, err = container.GetRootResourcePath(fmt.Sprintf("%s-json.log", container.ID)) if err != nil { return nil, err } container.LogPath = info.LogPath + case local.Name: + // Do not set container.LogPath for the local driver + // This would expose the value to the API, which should not be done as it means + // that the log file implementation would become a stable API that cannot change. + logDir, err := container.GetRootResourcePath("local-logs") + if err != nil { + return nil, err + } + if err := os.MkdirAll(logDir, 0700); err != nil { + return nil, errdefs.System(errors.Wrap(err, "error creating local logs dir")) + } + info.LogPath = filepath.Join(logDir, "container.log") } l, err := initDriver(info) diff --git a/vendor/github.com/docker/docker/container/container_unix.go b/vendor/github.com/docker/docker/container/container_unix.go index 597acf1218..c9f4365109 100644 --- a/vendor/github.com/docker/docker/container/container_unix.go +++ b/vendor/github.com/docker/docker/container/container_unix.go @@ -6,6 +6,7 @@ import ( "io/ioutil" "os" "path/filepath" + "syscall" "github.com/containerd/continuity/fs" "github.com/docker/docker/api/types" @@ -128,7 +129,7 @@ func (container *Container) CopyImagePathContent(v volume.Volume, destination st return err } - if _, err = ioutil.ReadDir(rootfs); err != nil { + if _, err := os.Stat(rootfs); err != nil { if os.IsNotExist(err) { return nil } @@ -174,8 +175,8 @@ func (container *Container) HasMountFor(path string) bool { return false } -// UnmountIpcMount uses the provided unmount function to unmount shm if it was mounted -func (container *Container) UnmountIpcMount(unmount func(pth string) error) error { +// UnmountIpcMount unmounts shm if it was mounted +func (container *Container) UnmountIpcMount() error { if container.HasMountFor("/dev/shm") { return nil } @@ -189,10 +190,8 @@ func (container *Container) UnmountIpcMount(unmount func(pth string) error) erro if shmPath == "" { return nil } - if err = unmount(shmPath); err != nil && !os.IsNotExist(err) { - if mounted, mErr := mount.Mounted(shmPath); mounted || mErr != nil { - return errors.Wrapf(err, "umount %s", shmPath) - } + if err = mount.Unmount(shmPath); err != nil && !os.IsNotExist(err) { + return err } return nil } @@ -343,6 +342,9 @@ func (container *Container) UpdateContainer(hostConfig *containertypes.HostConfi if resources.CPURealtimeRuntime != 0 { cResources.CPURealtimeRuntime = resources.CPURealtimeRuntime } + if resources.PidsLimit != nil { + cResources.PidsLimit = resources.PidsLimit + } // update HostConfig of container if hostConfig.RestartPolicy.Name != "" { @@ -382,12 +384,25 @@ func (container *Container) DetachAndUnmount(volumeEventLog func(name, action st for _, mountPath := range mountPaths { if err := mount.Unmount(mountPath); err != nil { - logrus.Warnf("%s unmountVolumes: Failed to do lazy umount fo volume '%s': %v", container.ID, mountPath, err) + logrus.WithError(err).WithField("container", container.ID). + Warn("Unable to unmount") } } return container.UnmountVolumes(volumeEventLog) } +// ignoreUnsupportedXAttrs ignores errors when extended attributes +// are not supported +func ignoreUnsupportedXAttrs() fs.CopyDirOpt { + xeh := func(dst, src, xattrKey string, err error) error { + if errors.Cause(err) != syscall.ENOTSUP { + return err + } + return nil + } + return fs.WithXAttrErrorHandler(xeh) +} + // copyExistingContents copies from the source to the destination and // ensures the ownership is appropriately set. func copyExistingContents(source, destination string) error { @@ -399,7 +414,7 @@ func copyExistingContents(source, destination string) error { // destination is not empty, do not copy return nil } - return fs.CopyDir(destination, source) + return fs.CopyDir(destination, source, ignoreUnsupportedXAttrs()) } // TmpfsMounts returns the list of tmpfs mounts diff --git a/vendor/github.com/docker/docker/container/container_windows.go b/vendor/github.com/docker/docker/container/container_windows.go index b5bdb5bc34..9d7b949281 100644 --- a/vendor/github.com/docker/docker/container/container_windows.go +++ b/vendor/github.com/docker/docker/container/container_windows.go @@ -22,7 +22,7 @@ const ( // UnmountIpcMount unmounts Ipc related mounts. // This is a NOOP on windows. -func (container *Container) UnmountIpcMount(unmount func(pth string) error) error { +func (container *Container) UnmountIpcMount() error { return nil } @@ -159,7 +159,7 @@ func (container *Container) UpdateContainer(hostConfig *containertypes.HostConfi resources.MemorySwap != 0 || resources.MemorySwappiness != nil || resources.OomKillDisable != nil || - resources.PidsLimit != 0 || + (resources.PidsLimit != nil && *resources.PidsLimit != 0) || len(resources.Ulimits) != 0 || resources.CPUCount != 0 || resources.CPUPercent != 0 || diff --git a/vendor/github.com/docker/docker/container/mounts_unix.go b/vendor/github.com/docker/docker/container/mounts_unix.go index 62f4441dce..2c1160464b 100644 --- a/vendor/github.com/docker/docker/container/mounts_unix.go +++ b/vendor/github.com/docker/docker/container/mounts_unix.go @@ -4,9 +4,10 @@ package container // import "github.com/docker/docker/container" // Mount contains information for a mount operation. type Mount struct { - Source string `json:"source"` - Destination string `json:"destination"` - Writable bool `json:"writable"` - Data string `json:"data"` - Propagation string `json:"mountpropagation"` + Source string `json:"source"` + Destination string `json:"destination"` + Writable bool `json:"writable"` + Data string `json:"data"` + Propagation string `json:"mountpropagation"` + NonRecursive bool `json:"nonrecursive"` } diff --git a/vendor/github.com/docker/docker/container/stream/attach.go b/vendor/github.com/docker/docker/container/stream/attach.go index cee90b88a1..1366dcb499 100644 --- a/vendor/github.com/docker/docker/container/stream/attach.go +++ b/vendor/github.com/docker/docker/container/stream/attach.go @@ -3,11 +3,12 @@ package stream // import "github.com/docker/docker/container/stream" import ( "context" "io" - "sync" "github.com/docker/docker/pkg/pools" "github.com/docker/docker/pkg/term" + "github.com/pkg/errors" "github.com/sirupsen/logrus" + "golang.org/x/sync/errgroup" ) var defaultEscapeSequence = []byte{16, 17} // ctrl-p, ctrl-q @@ -57,117 +58,107 @@ func (c *Config) AttachStreams(cfg *AttachConfig) { // CopyStreams starts goroutines to copy data in and out to/from the container func (c *Config) CopyStreams(ctx context.Context, cfg *AttachConfig) <-chan error { - var ( - wg sync.WaitGroup - errors = make(chan error, 3) - ) + var group errgroup.Group + // Connect stdin of container to the attach stdin stream. if cfg.Stdin != nil { - wg.Add(1) - } - - if cfg.Stdout != nil { - wg.Add(1) - } - - if cfg.Stderr != nil { - wg.Add(1) - } + group.Go(func() error { + logrus.Debug("attach: stdin: begin") + defer logrus.Debug("attach: stdin: end") - // Connect stdin of container to the attach stdin stream. - go func() { - if cfg.Stdin == nil { - return - } - logrus.Debug("attach: stdin: begin") + defer func() { + if cfg.CloseStdin && !cfg.TTY { + cfg.CStdin.Close() + } else { + // No matter what, when stdin is closed (io.Copy unblock), close stdout and stderr + if cfg.CStdout != nil { + cfg.CStdout.Close() + } + if cfg.CStderr != nil { + cfg.CStderr.Close() + } + } + }() - var err error - if cfg.TTY { - _, err = copyEscapable(cfg.CStdin, cfg.Stdin, cfg.DetachKeys) - } else { - _, err = pools.Copy(cfg.CStdin, cfg.Stdin) - } - if err == io.ErrClosedPipe { - err = nil - } - if err != nil { - logrus.Errorf("attach: stdin: %s", err) - errors <- err - } - if cfg.CloseStdin && !cfg.TTY { - cfg.CStdin.Close() - } else { - // No matter what, when stdin is closed (io.Copy unblock), close stdout and stderr - if cfg.CStdout != nil { - cfg.CStdout.Close() + var err error + if cfg.TTY { + _, err = copyEscapable(cfg.CStdin, cfg.Stdin, cfg.DetachKeys) + } else { + _, err = pools.Copy(cfg.CStdin, cfg.Stdin) } - if cfg.CStderr != nil { - cfg.CStderr.Close() + if err == io.ErrClosedPipe { + err = nil } - } - logrus.Debug("attach: stdin: end") - wg.Done() - }() - - attachStream := func(name string, stream io.Writer, streamPipe io.ReadCloser) { - if stream == nil { - return - } + if err != nil { + logrus.WithError(err).Debug("error on attach stdin") + return errors.Wrap(err, "error on attach stdin") + } + return nil + }) + } + attachStream := func(name string, stream io.Writer, streamPipe io.ReadCloser) error { logrus.Debugf("attach: %s: begin", name) + defer logrus.Debugf("attach: %s: end", name) + defer func() { + // Make sure stdin gets closed + if cfg.Stdin != nil { + cfg.Stdin.Close() + } + streamPipe.Close() + }() + _, err := pools.Copy(stream, streamPipe) if err == io.ErrClosedPipe { err = nil } if err != nil { - logrus.Errorf("attach: %s: %v", name, err) - errors <- err - } - // Make sure stdin gets closed - if cfg.Stdin != nil { - cfg.Stdin.Close() + logrus.WithError(err).Debugf("attach: %s", name) + return errors.Wrapf(err, "error attaching %s stream", name) } - streamPipe.Close() - logrus.Debugf("attach: %s: end", name) - wg.Done() + return nil } - go attachStream("stdout", cfg.Stdout, cfg.CStdout) - go attachStream("stderr", cfg.Stderr, cfg.CStderr) + if cfg.Stdout != nil { + group.Go(func() error { + return attachStream("stdout", cfg.Stdout, cfg.CStdout) + }) + } + if cfg.Stderr != nil { + group.Go(func() error { + return attachStream("stderr", cfg.Stderr, cfg.CStderr) + }) + } errs := make(chan error, 1) - go func() { - defer close(errs) - errs <- func() error { - done := make(chan struct{}) - go func() { - wg.Wait() - close(done) - }() - select { - case <-done: - case <-ctx.Done(): - // close all pipes - if cfg.CStdin != nil { - cfg.CStdin.Close() - } - if cfg.CStdout != nil { - cfg.CStdout.Close() - } - if cfg.CStderr != nil { - cfg.CStderr.Close() - } - <-done + defer logrus.Debug("attach done") + groupErr := make(chan error, 1) + go func() { + groupErr <- group.Wait() + }() + select { + case <-ctx.Done(): + // close all pipes + if cfg.CStdin != nil { + cfg.CStdin.Close() } - close(errors) - for err := range errors { - if err != nil { - return err - } + if cfg.CStdout != nil { + cfg.CStdout.Close() } - return nil - }() + if cfg.CStderr != nil { + cfg.CStderr.Close() + } + + // Now with these closed, wait should return. + if err := group.Wait(); err != nil { + errs <- err + return + } + errs <- ctx.Err() + case err := <-groupErr: + errs <- err + } }() return errs diff --git a/vendor/github.com/docker/docker/container/view.go b/vendor/github.com/docker/docker/container/view.go index b631499412..aabb01923d 100644 --- a/vendor/github.com/docker/docker/container/view.go +++ b/vendor/github.com/docker/docker/container/view.go @@ -473,7 +473,7 @@ type namesByContainerIDIndexer struct{} func (e *namesByContainerIDIndexer) FromObject(obj interface{}) (bool, []byte, error) { n, ok := obj.(nameAssociation) if !ok { - return false, nil, fmt.Errorf(`%T does not have type "nameAssocation"`, obj) + return false, nil, fmt.Errorf(`%T does not have type "nameAssociation"`, obj) } // Add the null character as a terminator diff --git a/vendor/github.com/docker/docker/daemon/exec/exec.go b/vendor/github.com/docker/docker/daemon/exec/exec.go index ca4e1aeb49..c036c46a0c 100644 --- a/vendor/github.com/docker/docker/daemon/exec/exec.go +++ b/vendor/github.com/docker/docker/daemon/exec/exec.go @@ -15,6 +15,7 @@ import ( // examined both during and after completion. type Config struct { sync.Mutex + Started chan struct{} StreamConfig *stream.Config ID string Running bool @@ -40,6 +41,7 @@ func NewConfig() *Config { return &Config{ ID: stringid.GenerateNonCryptoID(), StreamConfig: stream.NewConfig(), + Started: make(chan struct{}), } } diff --git a/vendor/github.com/docker/docker/daemon/graphdriver/driver.go b/vendor/github.com/docker/docker/daemon/graphdriver/driver.go index a9e1957393..44434f7dcd 100644 --- a/vendor/github.com/docker/docker/daemon/graphdriver/driver.go +++ b/vendor/github.com/docker/docker/daemon/graphdriver/driver.go @@ -195,6 +195,7 @@ type Options struct { func New(name string, pg plugingetter.PluginGetter, config Options) (Driver, error) { if name != "" { logrus.Debugf("[graphdriver] trying provided driver: %s", name) // so the logs show specified driver + logDeprecatedWarning(name) return GetDriver(name, pg, config) } @@ -232,6 +233,7 @@ func New(name string, pg plugingetter.PluginGetter, config Options) (Driver, err } logrus.Infof("[graphdriver] using prior storage driver: %s", name) + logDeprecatedWarning(name) return driver, nil } } @@ -245,11 +247,17 @@ func New(name string, pg plugingetter.PluginGetter, config Options) (Driver, err } return nil, err } + logDeprecatedWarning(name) return driver, nil } // Check all registered drivers if no priority driver is found for name, initFunc := range drivers { + if isDeprecated(name) { + // Deprecated storage-drivers are skipped in automatic selection, but + // can be selected through configuration. + continue + } driver, err := initFunc(filepath.Join(config.Root, name), config.DriverOptions, config.UIDMaps, config.GIDMaps) if err != nil { if IsDriverNotSupported(err) { @@ -257,6 +265,7 @@ func New(name string, pg plugingetter.PluginGetter, config Options) (Driver, err } return nil, err } + logDeprecatedWarning(name) return driver, nil } return nil, fmt.Errorf("No supported storage backend found") @@ -305,3 +314,20 @@ func isEmptyDir(name string) bool { } return false } + +// isDeprecated checks if a storage-driver is marked "deprecated" +func isDeprecated(name string) bool { + switch name { + // NOTE: when deprecating a driver, update daemon.fillDriverInfo() accordingly + case "aufs", "devicemapper", "overlay": + return true + } + return false +} + +// logDeprecatedWarning logs a warning if the given storage-driver is marked "deprecated" +func logDeprecatedWarning(name string) { + if isDeprecated(name) { + logrus.Warnf("[graphdriver] WARNING: the %s storage-driver is deprecated, and will be removed in a future release", name) + } +} diff --git a/vendor/github.com/docker/docker/daemon/graphdriver/fsdiff.go b/vendor/github.com/docker/docker/daemon/graphdriver/fsdiff.go index e1f368508a..f06caedb92 100644 --- a/vendor/github.com/docker/docker/daemon/graphdriver/fsdiff.go +++ b/vendor/github.com/docker/docker/daemon/graphdriver/fsdiff.go @@ -145,11 +145,11 @@ func (gdw *NaiveDiffDriver) ApplyDiff(id, parent string, diff io.Reader) (size i options := &archive.TarOptions{UIDMaps: gdw.uidMaps, GIDMaps: gdw.gidMaps} start := time.Now().UTC() - logrus.Debug("Start untar layer") + logrus.WithField("id", id).Debug("Start untar layer") if size, err = ApplyUncompressedLayer(layerFs, diff, options); err != nil { return } - logrus.Debugf("Untar time: %vs", time.Now().UTC().Sub(start).Seconds()) + logrus.WithField("id", id).Debugf("Untar time: %vs", time.Now().UTC().Sub(start).Seconds()) return } diff --git a/vendor/github.com/docker/docker/daemon/logger/adapter.go b/vendor/github.com/docker/docker/daemon/logger/adapter.go index 95aff9bf3b..d9370352c5 100644 --- a/vendor/github.com/docker/docker/daemon/logger/adapter.go +++ b/vendor/github.com/docker/docker/daemon/logger/adapter.go @@ -93,21 +93,12 @@ func (a *pluginAdapterWithRead) ReadLogs(config ReadConfig) *LogWatcher { dec := logdriver.NewLogEntryDecoder(stream) for { - select { - case <-watcher.WatchClose(): - return - default: - } - var buf logdriver.LogEntry if err := dec.Decode(&buf); err != nil { if err == io.EOF { return } - select { - case watcher.Err <- errors.Wrap(err, "error decoding log message"): - case <-watcher.WatchClose(): - } + watcher.Err <- errors.Wrap(err, "error decoding log message") return } @@ -125,11 +116,10 @@ func (a *pluginAdapterWithRead) ReadLogs(config ReadConfig) *LogWatcher { return } + // send the message unless the consumer is gone select { case watcher.Msg <- msg: - case <-watcher.WatchClose(): - // make sure the message we consumed is sent - watcher.Msg <- msg + case <-watcher.WatchConsumerGone(): return } } diff --git a/vendor/github.com/docker/docker/daemon/logger/jsonfilelog/jsonfilelog.go b/vendor/github.com/docker/docker/daemon/logger/jsonfilelog/jsonfilelog.go index b806a5ad17..bbb8eeb7ec 100644 --- a/vendor/github.com/docker/docker/daemon/logger/jsonfilelog/jsonfilelog.go +++ b/vendor/github.com/docker/docker/daemon/logger/jsonfilelog/jsonfilelog.go @@ -50,7 +50,7 @@ func New(info logger.Info) (logger.Logger, error) { return nil, err } if capval <= 0 { - return nil, fmt.Errorf("max-size should be a positive numbler") + return nil, fmt.Errorf("max-size must be a positive number") } } var maxFiles = 1 @@ -110,7 +110,7 @@ func New(info logger.Info) (logger.Logger, error) { return b, nil } - writer, err := loggerutils.NewLogFile(info.LogPath, capval, maxFiles, compress, marshalFunc, decodeFunc, 0640) + writer, err := loggerutils.NewLogFile(info.LogPath, capval, maxFiles, compress, marshalFunc, decodeFunc, 0640, getTailReader) if err != nil { return nil, err } @@ -166,13 +166,14 @@ func ValidateLogOpt(cfg map[string]string) error { return nil } -// Close closes underlying file and signals all readers to stop. +// Close closes underlying file and signals all the readers +// that the logs producer is gone. func (l *JSONFileLogger) Close() error { l.mu.Lock() l.closed = true err := l.writer.Close() for r := range l.readers { - r.Close() + r.ProducerGone() delete(l.readers, r) } l.mu.Unlock() diff --git a/vendor/github.com/docker/docker/daemon/logger/jsonfilelog/read.go b/vendor/github.com/docker/docker/daemon/logger/jsonfilelog/read.go index ab1793bb72..12f676bb1a 100644 --- a/vendor/github.com/docker/docker/daemon/logger/jsonfilelog/read.go +++ b/vendor/github.com/docker/docker/daemon/logger/jsonfilelog/read.go @@ -1,12 +1,16 @@ package jsonfilelog // import "github.com/docker/docker/daemon/logger/jsonfilelog" import ( + "context" "encoding/json" "io" "github.com/docker/docker/api/types/backend" "github.com/docker/docker/daemon/logger" "github.com/docker/docker/daemon/logger/jsonfilelog/jsonlog" + "github.com/docker/docker/daemon/logger/loggerutils" + "github.com/docker/docker/pkg/tailfile" + "github.com/sirupsen/logrus" ) const maxJSONDecodeRetry = 20000 @@ -63,14 +67,14 @@ func decodeFunc(rdr io.Reader) func() (*logger.Message, error) { return func() (msg *logger.Message, err error) { for retries := 0; retries < maxJSONDecodeRetry; retries++ { msg, err = decodeLogLine(dec, l) - if err == nil { + if err == nil || err == io.EOF { break } + logrus.WithError(err).WithField("retries", retries).Warn("got error while decoding json") // try again, could be due to a an incomplete json object as we read if _, ok := err.(*json.SyntaxError); ok { dec = json.NewDecoder(rdr) - retries++ continue } @@ -81,9 +85,13 @@ func decodeFunc(rdr io.Reader) func() (*logger.Message, error) { if err == io.ErrUnexpectedEOF { reader := io.MultiReader(dec.Buffered(), rdr) dec = json.NewDecoder(reader) - retries++ + continue } } return msg, err } } + +func getTailReader(ctx context.Context, r loggerutils.SizeReaderAt, req int) (io.Reader, int, error) { + return tailfile.NewTailReader(ctx, r, req) +} diff --git a/vendor/github.com/docker/docker/daemon/logger/local/config.go b/vendor/github.com/docker/docker/daemon/logger/local/config.go new file mode 100644 index 0000000000..8de160aea2 --- /dev/null +++ b/vendor/github.com/docker/docker/daemon/logger/local/config.go @@ -0,0 +1,36 @@ +package local + +import ( + "github.com/pkg/errors" +) + +// CreateConfig is used to configure new instances of driver +type CreateConfig struct { + DisableCompression bool + MaxFileSize int64 + MaxFileCount int +} + +func newDefaultConfig() *CreateConfig { + return &CreateConfig{ + MaxFileSize: defaultMaxFileSize, + MaxFileCount: defaultMaxFileCount, + DisableCompression: !defaultCompressLogs, + } +} + +func validateConfig(cfg *CreateConfig) error { + if cfg.MaxFileSize < 0 { + return errors.New("max size should be a positive number") + } + if cfg.MaxFileCount < 0 { + return errors.New("max file count cannot be less than 0") + } + + if !cfg.DisableCompression { + if cfg.MaxFileCount <= 1 { + return errors.New("compression cannot be enabled when max file count is 1") + } + } + return nil +} diff --git a/vendor/github.com/docker/docker/daemon/logger/local/doc.go b/vendor/github.com/docker/docker/daemon/logger/local/doc.go new file mode 100644 index 0000000000..7b082a3d53 --- /dev/null +++ b/vendor/github.com/docker/docker/daemon/logger/local/doc.go @@ -0,0 +1,9 @@ +// Package local provides a logger implementation that stores logs on disk. +// +// Log messages are encoded as protobufs with a header and footer for each message. +// The header and footer are big-endian binary encoded uint32 values which indicate the size of the log message. +// The header and footer of each message allows you to efficiently read through a file either forwards or in +// backwards (such as is the case when tailing a file) +// +// Example log message format: [22][This is a log message.][22][28][This is another log message.][28] +package local // import "github.com/docker/docker/daemon/logger/local" diff --git a/vendor/github.com/docker/docker/daemon/logger/local/local.go b/vendor/github.com/docker/docker/daemon/logger/local/local.go new file mode 100644 index 0000000000..ba4aa096f7 --- /dev/null +++ b/vendor/github.com/docker/docker/daemon/logger/local/local.go @@ -0,0 +1,218 @@ +package local // import "github.com/docker/docker/daemon/logger/local" + +import ( + "encoding/binary" + "io" + "strconv" + "sync" + "time" + + "github.com/docker/docker/api/types/backend" + "github.com/docker/docker/api/types/plugins/logdriver" + "github.com/docker/docker/daemon/logger" + "github.com/docker/docker/daemon/logger/loggerutils" + "github.com/docker/docker/errdefs" + "github.com/docker/go-units" + "github.com/pkg/errors" + "github.com/sirupsen/logrus" +) + +const ( + // Name is the name of the driver + Name = "local" + + encodeBinaryLen = 4 + initialBufSize = 2048 + maxDecodeRetry = 20000 + + defaultMaxFileSize int64 = 20 * 1024 * 1024 + defaultMaxFileCount = 5 + defaultCompressLogs = true +) + +// LogOptKeys are the keys names used for log opts passed in to initialize the driver. +var LogOptKeys = map[string]bool{ + "max-file": true, + "max-size": true, + "compress": true, +} + +// ValidateLogOpt looks for log driver specific options. +func ValidateLogOpt(cfg map[string]string) error { + for key := range cfg { + if !LogOptKeys[key] { + return errors.Errorf("unknown log opt '%s' for log driver %s", key, Name) + } + } + return nil +} + +func init() { + if err := logger.RegisterLogDriver(Name, New); err != nil { + logrus.Fatal(err) + } + if err := logger.RegisterLogOptValidator(Name, ValidateLogOpt); err != nil { + logrus.Fatal(err) + } +} + +type driver struct { + mu sync.Mutex + closed bool + logfile *loggerutils.LogFile + readers map[*logger.LogWatcher]struct{} // stores the active log followers +} + +// New creates a new local logger +// You must provide the `LogPath` in the passed in info argument, this is the file path that logs are written to. +func New(info logger.Info) (logger.Logger, error) { + if info.LogPath == "" { + return nil, errdefs.System(errors.New("log path is missing -- this is a bug and should not happen")) + } + + cfg := newDefaultConfig() + if capacity, ok := info.Config["max-size"]; ok { + var err error + cfg.MaxFileSize, err = units.FromHumanSize(capacity) + if err != nil { + return nil, errdefs.InvalidParameter(errors.Wrapf(err, "invalid value for max-size: %s", capacity)) + } + } + + if userMaxFileCount, ok := info.Config["max-file"]; ok { + var err error + cfg.MaxFileCount, err = strconv.Atoi(userMaxFileCount) + if err != nil { + return nil, errdefs.InvalidParameter(errors.Wrapf(err, "invalid value for max-file: %s", userMaxFileCount)) + } + } + + if userCompress, ok := info.Config["compress"]; ok { + compressLogs, err := strconv.ParseBool(userCompress) + if err != nil { + return nil, errdefs.InvalidParameter(errors.Wrap(err, "error reading compress log option")) + } + cfg.DisableCompression = !compressLogs + } + return newDriver(info.LogPath, cfg) +} + +func makeMarshaller() func(m *logger.Message) ([]byte, error) { + buf := make([]byte, initialBufSize) + + // allocate the partial log entry separately, which allows for easier re-use + proto := &logdriver.LogEntry{} + md := &logdriver.PartialLogEntryMetadata{} + + return func(m *logger.Message) ([]byte, error) { + resetProto(proto) + + messageToProto(m, proto, md) + protoSize := proto.Size() + writeLen := protoSize + (2 * encodeBinaryLen) //+ len(messageDelimiter) + + if writeLen > len(buf) { + buf = make([]byte, writeLen) + } else { + // shrink the buffer back down + if writeLen <= initialBufSize { + buf = buf[:initialBufSize] + } else { + buf = buf[:writeLen] + } + } + + binary.BigEndian.PutUint32(buf[:encodeBinaryLen], uint32(protoSize)) + n, err := proto.MarshalTo(buf[encodeBinaryLen:writeLen]) + if err != nil { + return nil, errors.Wrap(err, "error marshaling log entry") + } + if n+(encodeBinaryLen*2) != writeLen { + return nil, io.ErrShortWrite + } + binary.BigEndian.PutUint32(buf[writeLen-encodeBinaryLen:writeLen], uint32(protoSize)) + return buf[:writeLen], nil + } +} + +func newDriver(logPath string, cfg *CreateConfig) (logger.Logger, error) { + if err := validateConfig(cfg); err != nil { + return nil, errdefs.InvalidParameter(err) + } + + lf, err := loggerutils.NewLogFile(logPath, cfg.MaxFileSize, cfg.MaxFileCount, !cfg.DisableCompression, makeMarshaller(), decodeFunc, 0640, getTailReader) + if err != nil { + return nil, err + } + return &driver{ + logfile: lf, + readers: make(map[*logger.LogWatcher]struct{}), + }, nil +} + +func (d *driver) Name() string { + return Name +} + +func (d *driver) Log(msg *logger.Message) error { + d.mu.Lock() + err := d.logfile.WriteLogEntry(msg) + d.mu.Unlock() + return err +} + +func (d *driver) Close() error { + d.mu.Lock() + d.closed = true + err := d.logfile.Close() + for r := range d.readers { + r.ProducerGone() + delete(d.readers, r) + } + d.mu.Unlock() + return err +} + +func messageToProto(msg *logger.Message, proto *logdriver.LogEntry, partial *logdriver.PartialLogEntryMetadata) { + proto.Source = msg.Source + proto.TimeNano = msg.Timestamp.UnixNano() + proto.Line = append(proto.Line[:0], msg.Line...) + proto.Partial = msg.PLogMetaData != nil + if proto.Partial { + partial.Ordinal = int32(msg.PLogMetaData.Ordinal) + partial.Last = msg.PLogMetaData.Last + partial.Id = msg.PLogMetaData.ID + proto.PartialLogMetadata = partial + } else { + proto.PartialLogMetadata = nil + } +} + +func protoToMessage(proto *logdriver.LogEntry) *logger.Message { + msg := &logger.Message{ + Source: proto.Source, + Timestamp: time.Unix(0, proto.TimeNano), + } + if proto.Partial { + var md backend.PartialLogMetaData + md.Last = proto.GetPartialLogMetadata().GetLast() + md.ID = proto.GetPartialLogMetadata().GetId() + md.Ordinal = int(proto.GetPartialLogMetadata().GetOrdinal()) + msg.PLogMetaData = &md + } + msg.Line = append(msg.Line[:0], proto.Line...) + return msg +} + +func resetProto(proto *logdriver.LogEntry) { + proto.Source = "" + proto.Line = proto.Line[:0] + proto.TimeNano = 0 + proto.Partial = false + if proto.PartialLogMetadata != nil { + proto.PartialLogMetadata.Id = "" + proto.PartialLogMetadata.Last = false + proto.PartialLogMetadata.Ordinal = 0 + } + proto.PartialLogMetadata = nil +} diff --git a/vendor/github.com/docker/docker/daemon/logger/local/read.go b/vendor/github.com/docker/docker/daemon/logger/local/read.go new file mode 100644 index 0000000000..a752de2a8d --- /dev/null +++ b/vendor/github.com/docker/docker/daemon/logger/local/read.go @@ -0,0 +1,174 @@ +package local + +import ( + "context" + "encoding/binary" + "io" + + "bytes" + + "github.com/docker/docker/api/types/plugins/logdriver" + "github.com/docker/docker/daemon/logger" + "github.com/docker/docker/daemon/logger/loggerutils" + "github.com/docker/docker/errdefs" + "github.com/pkg/errors" +) + +func (d *driver) ReadLogs(config logger.ReadConfig) *logger.LogWatcher { + logWatcher := logger.NewLogWatcher() + + go d.readLogs(logWatcher, config) + return logWatcher +} + +func (d *driver) readLogs(watcher *logger.LogWatcher, config logger.ReadConfig) { + defer close(watcher.Msg) + + d.mu.Lock() + d.readers[watcher] = struct{}{} + d.mu.Unlock() + + d.logfile.ReadLogs(config, watcher) + + d.mu.Lock() + delete(d.readers, watcher) + d.mu.Unlock() +} + +func getTailReader(ctx context.Context, r loggerutils.SizeReaderAt, req int) (io.Reader, int, error) { + size := r.Size() + if req < 0 { + return nil, 0, errdefs.InvalidParameter(errors.Errorf("invalid number of lines to tail: %d", req)) + } + + if size < (encodeBinaryLen*2)+1 { + return bytes.NewReader(nil), 0, nil + } + + const encodeBinaryLen64 = int64(encodeBinaryLen) + var found int + + buf := make([]byte, encodeBinaryLen) + + offset := size + for { + select { + case <-ctx.Done(): + return nil, 0, ctx.Err() + default: + } + + n, err := r.ReadAt(buf, offset-encodeBinaryLen64) + if err != nil && err != io.EOF { + return nil, 0, errors.Wrap(err, "error reading log message footer") + } + + if n != encodeBinaryLen { + return nil, 0, errdefs.DataLoss(errors.New("unexpected number of bytes read from log message footer")) + } + + msgLen := binary.BigEndian.Uint32(buf) + + n, err = r.ReadAt(buf, offset-encodeBinaryLen64-encodeBinaryLen64-int64(msgLen)) + if err != nil && err != io.EOF { + return nil, 0, errors.Wrap(err, "error reading log message header") + } + + if n != encodeBinaryLen { + return nil, 0, errdefs.DataLoss(errors.New("unexpected number of bytes read from log message header")) + } + + if msgLen != binary.BigEndian.Uint32(buf) { + return nil, 0, errdefs.DataLoss(errors.Wrap(err, "log message header and footer indicate different message sizes")) + } + + found++ + offset -= int64(msgLen) + offset -= encodeBinaryLen64 * 2 + if found == req { + break + } + if offset <= 0 { + break + } + } + + return io.NewSectionReader(r, offset, size), found, nil +} + +func decodeFunc(rdr io.Reader) func() (*logger.Message, error) { + proto := &logdriver.LogEntry{} + buf := make([]byte, initialBufSize) + + return func() (*logger.Message, error) { + var ( + read int + err error + ) + + resetProto(proto) + + for i := 0; i < maxDecodeRetry; i++ { + var n int + n, err = io.ReadFull(rdr, buf[read:encodeBinaryLen]) + if err != nil { + if err != io.ErrUnexpectedEOF { + return nil, errors.Wrap(err, "error reading log message length") + } + read += n + continue + } + read += n + break + } + if err != nil { + return nil, errors.Wrapf(err, "could not read log message length: read: %d, expected: %d", read, encodeBinaryLen) + } + + msgLen := int(binary.BigEndian.Uint32(buf[:read])) + + if len(buf) < msgLen+encodeBinaryLen { + buf = make([]byte, msgLen+encodeBinaryLen) + } else { + if msgLen <= initialBufSize { + buf = buf[:initialBufSize] + } else { + buf = buf[:msgLen+encodeBinaryLen] + } + } + + return decodeLogEntry(rdr, proto, buf, msgLen) + } +} + +func decodeLogEntry(rdr io.Reader, proto *logdriver.LogEntry, buf []byte, msgLen int) (*logger.Message, error) { + var ( + read int + err error + ) + for i := 0; i < maxDecodeRetry; i++ { + var n int + n, err = io.ReadFull(rdr, buf[read:msgLen+encodeBinaryLen]) + if err != nil { + if err != io.ErrUnexpectedEOF { + return nil, errors.Wrap(err, "could not decode log entry") + } + read += n + continue + } + break + } + if err != nil { + return nil, errors.Wrapf(err, "could not decode entry: read %d, expected: %d", read, msgLen) + } + + if err := proto.Unmarshal(buf[:msgLen]); err != nil { + return nil, errors.Wrap(err, "error unmarshalling log entry") + } + + msg := protoToMessage(proto) + if msg.PLogMetaData == nil { + msg.Line = append(msg.Line, '\n') + } + return msg, nil +} diff --git a/vendor/github.com/docker/docker/daemon/logger/logger.go b/vendor/github.com/docker/docker/daemon/logger/logger.go index 912e855c7f..6308270b20 100644 --- a/vendor/github.com/docker/docker/daemon/logger/logger.go +++ b/vendor/github.com/docker/docker/daemon/logger/logger.go @@ -103,34 +103,51 @@ type LogReader interface { type LogWatcher struct { // For sending log messages to a reader. Msg chan *Message - // For sending error messages that occur while while reading logs. - Err chan error - closeOnce sync.Once - closeNotifier chan struct{} + // For sending error messages that occur while reading logs. + Err chan error + producerOnce sync.Once + producerGone chan struct{} + consumerOnce sync.Once + consumerGone chan struct{} } // NewLogWatcher returns a new LogWatcher. func NewLogWatcher() *LogWatcher { return &LogWatcher{ - Msg: make(chan *Message, logWatcherBufferSize), - Err: make(chan error, 1), - closeNotifier: make(chan struct{}), + Msg: make(chan *Message, logWatcherBufferSize), + Err: make(chan error, 1), + producerGone: make(chan struct{}), + consumerGone: make(chan struct{}), } } -// Close notifies the underlying log reader to stop. -func (w *LogWatcher) Close() { +// ProducerGone notifies the underlying log reader that +// the logs producer (a container) is gone. +func (w *LogWatcher) ProducerGone() { // only close if not already closed - w.closeOnce.Do(func() { - close(w.closeNotifier) + w.producerOnce.Do(func() { + close(w.producerGone) }) } -// WatchClose returns a channel receiver that receives notification -// when the watcher has been closed. This should only be called from -// one goroutine. -func (w *LogWatcher) WatchClose() <-chan struct{} { - return w.closeNotifier +// WatchProducerGone returns a channel receiver that receives notification +// once the logs producer (a container) is gone. +func (w *LogWatcher) WatchProducerGone() <-chan struct{} { + return w.producerGone +} + +// ConsumerGone notifies that the logs consumer is gone. +func (w *LogWatcher) ConsumerGone() { + // only close if not already closed + w.consumerOnce.Do(func() { + close(w.consumerGone) + }) +} + +// WatchConsumerGone returns a channel receiver that receives notification +// when the log watcher consumer is gone. +func (w *LogWatcher) WatchConsumerGone() <-chan struct{} { + return w.consumerGone } // Capability defines the list of capabilities that a driver can implement diff --git a/vendor/github.com/docker/docker/daemon/logger/loggerutils/logfile.go b/vendor/github.com/docker/docker/daemon/logger/loggerutils/logfile.go index 6e3cda8648..fa45154ec9 100644 --- a/vendor/github.com/docker/docker/daemon/logger/loggerutils/logfile.go +++ b/vendor/github.com/docker/docker/daemon/logger/loggerutils/logfile.go @@ -1,24 +1,22 @@ package loggerutils // import "github.com/docker/docker/daemon/logger/loggerutils" import ( - "bytes" "compress/gzip" "context" "encoding/json" "fmt" "io" "os" + "runtime" "strconv" "strings" "sync" "time" "github.com/docker/docker/daemon/logger" - "github.com/docker/docker/daemon/logger/loggerutils/multireader" "github.com/docker/docker/pkg/filenotify" "github.com/docker/docker/pkg/pools" "github.com/docker/docker/pkg/pubsub" - "github.com/docker/docker/pkg/tailfile" "github.com/fsnotify/fsnotify" "github.com/pkg/errors" "github.com/sirupsen/logrus" @@ -92,13 +90,27 @@ type LogFile struct { notifyRotate *pubsub.Publisher marshal logger.MarshalFunc createDecoder makeDecoderFunc + getTailReader GetTailReaderFunc perms os.FileMode } type makeDecoderFunc func(rdr io.Reader) func() (*logger.Message, error) +// SizeReaderAt defines a ReaderAt that also reports its size. +// This is used for tailing log files. +type SizeReaderAt interface { + io.ReaderAt + Size() int64 +} + +// GetTailReaderFunc is used to truncate a reader to only read as much as is required +// in order to get the passed in number of log lines. +// It returns the sectioned reader, the number of lines that the section reader +// contains, and any error that occurs. +type GetTailReaderFunc func(ctx context.Context, f SizeReaderAt, nLogLines int) (rdr io.Reader, nLines int, err error) + // NewLogFile creates new LogFile -func NewLogFile(logPath string, capacity int64, maxFiles int, compress bool, marshaller logger.MarshalFunc, decodeFunc makeDecoderFunc, perms os.FileMode) (*LogFile, error) { +func NewLogFile(logPath string, capacity int64, maxFiles int, compress bool, marshaller logger.MarshalFunc, decodeFunc makeDecoderFunc, perms os.FileMode, getTailReader GetTailReaderFunc) (*LogFile, error) { log, err := os.OpenFile(logPath, os.O_WRONLY|os.O_APPEND|os.O_CREATE, perms) if err != nil { return nil, err @@ -120,6 +132,7 @@ func NewLogFile(logPath string, capacity int64, maxFiles int, compress bool, mar marshal: marshaller, createDecoder: decodeFunc, perms: perms, + getTailReader: getTailReader, }, nil } @@ -309,33 +322,45 @@ func (w *LogFile) ReadLogs(config logger.ReadConfig, watcher *logger.LogWatcher) } if config.Tail != 0 { + // TODO(@cpuguy83): Instead of opening every file, only get the files which + // are needed to tail. + // This is especially costly when compression is enabled. files, err := w.openRotatedFiles(config) + w.mu.RUnlock() if err != nil { - w.mu.RUnlock() watcher.Err <- err return } - w.mu.RUnlock() - seekers := make([]io.ReadSeeker, 0, len(files)+1) - for _, f := range files { - seekers = append(seekers, f) - } - if currentChunk.Size() > 0 { - seekers = append(seekers, currentChunk) - } - if len(seekers) > 0 { - tailFile(multireader.MultiReadSeeker(seekers...), watcher, w.createDecoder, config) + + closeFiles := func() { + for _, f := range files { + f.Close() + fileName := f.Name() + if strings.HasSuffix(fileName, tmpLogfileSuffix) { + err := w.filesRefCounter.Dereference(fileName) + if err != nil { + logrus.Errorf("Failed to dereference the log file %q: %v", fileName, err) + } + } + } } + + readers := make([]SizeReaderAt, 0, len(files)+1) for _, f := range files { - f.Close() - fileName := f.Name() - if strings.HasSuffix(fileName, tmpLogfileSuffix) { - err := w.filesRefCounter.Dereference(fileName) - if err != nil { - logrus.Errorf("Failed to dereference the log file %q: %v", fileName, err) - } + stat, err := f.Stat() + if err != nil { + watcher.Err <- errors.Wrap(err, "error reading size of rotated file") + closeFiles() + return } + readers = append(readers, io.NewSectionReader(f, 0, stat.Size())) } + if currentChunk.Size() > 0 { + readers = append(readers, currentChunk) + } + + tailFiles(readers, watcher, w.createDecoder, w.getTailReader, config) + closeFiles() w.mu.RLock() } @@ -364,7 +389,7 @@ func (w *LogFile) openRotatedFiles(config logger.ReadConfig) (files []*os.File, if strings.HasSuffix(f.Name(), tmpLogfileSuffix) { err := os.Remove(f.Name()) if err != nil && !os.IsNotExist(err) { - logrus.Warningf("Failed to remove the logfile %q: %v", f.Name, err) + logrus.Warnf("Failed to remove logfile: %v", err) } } } @@ -436,7 +461,7 @@ func decompressfile(fileName, destFileName string, since time.Time) (*os.File, e rs.Close() rErr := os.Remove(rs.Name()) if rErr != nil && !os.IsNotExist(rErr) { - logrus.Errorf("Failed to remove the logfile %q: %v", rs.Name(), rErr) + logrus.Errorf("Failed to remove logfile: %v", rErr) } return nil, errors.Wrap(err, "error while copying decompressed log stream to file") } @@ -454,19 +479,39 @@ func newSectionReader(f *os.File) (*io.SectionReader, error) { return io.NewSectionReader(f, 0, size), nil } -type decodeFunc func() (*logger.Message, error) +func tailFiles(files []SizeReaderAt, watcher *logger.LogWatcher, createDecoder makeDecoderFunc, getTailReader GetTailReaderFunc, config logger.ReadConfig) { + nLines := config.Tail + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + // TODO(@cpuguy83): we should plumb a context through instead of dealing with `WatchClose()` here. + go func() { + select { + case <-ctx.Done(): + case <-watcher.WatchConsumerGone(): + cancel() + } + }() + + readers := make([]io.Reader, 0, len(files)) -func tailFile(f io.ReadSeeker, watcher *logger.LogWatcher, createDecoder makeDecoderFunc, config logger.ReadConfig) { - var rdr io.Reader = f if config.Tail > 0 { - ls, err := tailfile.TailFile(f, config.Tail) - if err != nil { - watcher.Err <- err - return + for i := len(files) - 1; i >= 0 && nLines > 0; i-- { + tail, n, err := getTailReader(ctx, files[i], nLines) + if err != nil { + watcher.Err <- errors.Wrap(err, "error finding file position to start log tailing") + return + } + nLines -= n + readers = append([]io.Reader{tail}, readers...) + } + } else { + for _, r := range files { + readers = append(readers, &wrappedReaderAt{ReaderAt: r}) } - rdr = bytes.NewBuffer(bytes.Join(ls, []byte("\n"))) } + rdr := io.MultiReader(readers...) decodeLogLine := createDecoder(rdr) for { msg, err := decodeLogLine() @@ -483,7 +528,7 @@ func tailFile(f io.ReadSeeker, watcher *logger.LogWatcher, createDecoder makeDec return } select { - case <-watcher.WatchClose(): + case <-ctx.Done(): return case watcher.Msg <- msg: } @@ -501,22 +546,9 @@ func followLogs(f *os.File, logWatcher *logger.LogWatcher, notifyRotate chan int } defer func() { f.Close() - fileWatcher.Remove(name) fileWatcher.Close() }() - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - go func() { - select { - case <-logWatcher.WatchClose(): - fileWatcher.Remove(name) - cancel() - case <-ctx.Done(): - return - } - }() - var retries int handleRotate := func() error { f.Close() @@ -551,7 +583,9 @@ func followLogs(f *os.File, logWatcher *logger.LogWatcher, notifyRotate chan int case fsnotify.Rename, fsnotify.Remove: select { case <-notifyRotate: - case <-ctx.Done(): + case <-logWatcher.WatchProducerGone(): + return errDone + case <-logWatcher.WatchConsumerGone(): return errDone } if err := handleRotate(); err != nil { @@ -561,7 +595,7 @@ func followLogs(f *os.File, logWatcher *logger.LogWatcher, notifyRotate chan int } return errRetry case err := <-fileWatcher.Errors(): - logrus.Debug("logger got error watching file: %v", err) + logrus.Debugf("logger got error watching file: %v", err) // Something happened, let's try and stay alive and create a new watcher if retries <= 5 { fileWatcher.Close() @@ -573,7 +607,9 @@ func followLogs(f *os.File, logWatcher *logger.LogWatcher, notifyRotate chan int return errRetry } return err - case <-ctx.Done(): + case <-logWatcher.WatchProducerGone(): + return errDone + case <-logWatcher.WatchConsumerGone(): return errDone } } @@ -619,39 +655,39 @@ func followLogs(f *os.File, logWatcher *logger.LogWatcher, notifyRotate chan int if !until.IsZero() && msg.Timestamp.After(until) { return } + // send the message, unless the consumer is gone select { case logWatcher.Msg <- msg: - case <-ctx.Done(): - logWatcher.Msg <- msg - for { - msg, err := decodeLogLine() - if err != nil { - return - } - if !since.IsZero() && msg.Timestamp.Before(since) { - continue - } - if !until.IsZero() && msg.Timestamp.After(until) { - return - } - logWatcher.Msg <- msg - } + case <-logWatcher.WatchConsumerGone(): + return } } } func watchFile(name string) (filenotify.FileWatcher, error) { - fileWatcher, err := filenotify.New() - if err != nil { - return nil, err + var fileWatcher filenotify.FileWatcher + + if runtime.GOOS == "windows" { + // FileWatcher on Windows files is based on the syscall notifications which has an issue because of file caching. + // It is based on ReadDirectoryChangesW() which doesn't detect writes to the cache. It detects writes to disk only. + // Because of the OS lazy writing, we don't get notifications for file writes and thereby the watcher + // doesn't work. Hence for Windows we will use poll based notifier. + fileWatcher = filenotify.NewPollingWatcher() + } else { + var err error + fileWatcher, err = filenotify.New() + if err != nil { + return nil, err + } } logger := logrus.WithFields(logrus.Fields{ "module": "logger", - "fille": name, + "file": name, }) if err := fileWatcher.Add(name); err != nil { + // we will retry using file poller. logger.WithError(err).Warnf("falling back to file poller") fileWatcher.Close() fileWatcher = filenotify.NewPollingWatcher() @@ -662,5 +698,17 @@ func watchFile(name string) (filenotify.FileWatcher, error) { return nil, err } } + return fileWatcher, nil } + +type wrappedReaderAt struct { + io.ReaderAt + pos int64 +} + +func (r *wrappedReaderAt) Read(p []byte) (int, error) { + n, err := r.ReaderAt.ReadAt(p, r.pos) + r.pos += int64(n) + return n, err +} diff --git a/vendor/github.com/docker/docker/daemon/logger/loggerutils/multireader/multireader.go b/vendor/github.com/docker/docker/daemon/logger/loggerutils/multireader/multireader.go deleted file mode 100644 index 77980a2a0a..0000000000 --- a/vendor/github.com/docker/docker/daemon/logger/loggerutils/multireader/multireader.go +++ /dev/null @@ -1,212 +0,0 @@ -package multireader // import "github.com/docker/docker/daemon/logger/loggerutils/multireader" - -import ( - "bytes" - "fmt" - "io" - "os" -) - -type pos struct { - idx int - offset int64 -} - -type multiReadSeeker struct { - readers []io.ReadSeeker - pos *pos - posIdx map[io.ReadSeeker]int -} - -func (r *multiReadSeeker) Seek(offset int64, whence int) (int64, error) { - var tmpOffset int64 - switch whence { - case os.SEEK_SET: - for i, rdr := range r.readers { - // get size of the current reader - s, err := rdr.Seek(0, os.SEEK_END) - if err != nil { - return -1, err - } - - if offset > tmpOffset+s { - if i == len(r.readers)-1 { - rdrOffset := s + (offset - tmpOffset) - if _, err := rdr.Seek(rdrOffset, os.SEEK_SET); err != nil { - return -1, err - } - r.pos = &pos{i, rdrOffset} - return offset, nil - } - - tmpOffset += s - continue - } - - rdrOffset := offset - tmpOffset - idx := i - - if _, err := rdr.Seek(rdrOffset, os.SEEK_SET); err != nil { - return -1, err - } - // make sure all following readers are at 0 - for _, rdr := range r.readers[i+1:] { - rdr.Seek(0, os.SEEK_SET) - } - - if rdrOffset == s && i != len(r.readers)-1 { - idx++ - rdrOffset = 0 - } - r.pos = &pos{idx, rdrOffset} - return offset, nil - } - case os.SEEK_END: - for _, rdr := range r.readers { - s, err := rdr.Seek(0, os.SEEK_END) - if err != nil { - return -1, err - } - tmpOffset += s - } - if _, err := r.Seek(tmpOffset+offset, os.SEEK_SET); err != nil { - return -1, err - } - return tmpOffset + offset, nil - case os.SEEK_CUR: - if r.pos == nil { - return r.Seek(offset, os.SEEK_SET) - } - // Just return the current offset - if offset == 0 { - return r.getCurOffset() - } - - curOffset, err := r.getCurOffset() - if err != nil { - return -1, err - } - rdr, rdrOffset, err := r.getReaderForOffset(curOffset + offset) - if err != nil { - return -1, err - } - - r.pos = &pos{r.posIdx[rdr], rdrOffset} - return curOffset + offset, nil - default: - return -1, fmt.Errorf("Invalid whence: %d", whence) - } - - return -1, fmt.Errorf("Error seeking for whence: %d, offset: %d", whence, offset) -} - -func (r *multiReadSeeker) getReaderForOffset(offset int64) (io.ReadSeeker, int64, error) { - - var offsetTo int64 - - for _, rdr := range r.readers { - size, err := getReadSeekerSize(rdr) - if err != nil { - return nil, -1, err - } - if offsetTo+size > offset { - return rdr, offset - offsetTo, nil - } - if rdr == r.readers[len(r.readers)-1] { - return rdr, offsetTo + offset, nil - } - offsetTo += size - } - - return nil, 0, nil -} - -func (r *multiReadSeeker) getCurOffset() (int64, error) { - var totalSize int64 - for _, rdr := range r.readers[:r.pos.idx+1] { - if r.posIdx[rdr] == r.pos.idx { - totalSize += r.pos.offset - break - } - - size, err := getReadSeekerSize(rdr) - if err != nil { - return -1, fmt.Errorf("error getting seeker size: %v", err) - } - totalSize += size - } - return totalSize, nil -} - -func (r *multiReadSeeker) Read(b []byte) (int, error) { - if r.pos == nil { - // make sure all readers are at 0 - r.Seek(0, os.SEEK_SET) - } - - bLen := int64(len(b)) - buf := bytes.NewBuffer(nil) - var rdr io.ReadSeeker - - for _, rdr = range r.readers[r.pos.idx:] { - readBytes, err := io.CopyN(buf, rdr, bLen) - if err != nil && err != io.EOF { - return -1, err - } - bLen -= readBytes - - if bLen == 0 { - break - } - } - - rdrPos, err := rdr.Seek(0, os.SEEK_CUR) - if err != nil { - return -1, err - } - r.pos = &pos{r.posIdx[rdr], rdrPos} - return buf.Read(b) -} - -func getReadSeekerSize(rdr io.ReadSeeker) (int64, error) { - // save the current position - pos, err := rdr.Seek(0, os.SEEK_CUR) - if err != nil { - return -1, err - } - - // get the size - size, err := rdr.Seek(0, os.SEEK_END) - if err != nil { - return -1, err - } - - // reset the position - if _, err := rdr.Seek(pos, os.SEEK_SET); err != nil { - return -1, err - } - return size, nil -} - -// MultiReadSeeker returns a ReadSeeker that's the logical concatenation of the provided -// input readseekers. After calling this method the initial position is set to the -// beginning of the first ReadSeeker. At the end of a ReadSeeker, Read always advances -// to the beginning of the next ReadSeeker and returns EOF at the end of the last ReadSeeker. -// Seek can be used over the sum of lengths of all readseekers. -// -// When a MultiReadSeeker is used, no Read and Seek operations should be made on -// its ReadSeeker components. Also, users should make no assumption on the state -// of individual readseekers while the MultiReadSeeker is used. -func MultiReadSeeker(readers ...io.ReadSeeker) io.ReadSeeker { - if len(readers) == 1 { - return readers[0] - } - idx := make(map[io.ReadSeeker]int) - for i, rdr := range readers { - idx[rdr] = i - } - return &multiReadSeeker{ - readers: readers, - posIdx: idx, - } -} diff --git a/vendor/github.com/docker/docker/daemon/network/filter.go b/vendor/github.com/docker/docker/daemon/network/filter.go new file mode 100644 index 0000000000..258a0f4446 --- /dev/null +++ b/vendor/github.com/docker/docker/daemon/network/filter.go @@ -0,0 +1,130 @@ +package network // import "github.com/docker/docker/daemon/network" + +import ( + "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/filters" + "github.com/docker/docker/errdefs" + "github.com/docker/docker/runconfig" + "github.com/pkg/errors" +) + +// FilterNetworks filters network list according to user specified filter +// and returns user chosen networks +func FilterNetworks(nws []types.NetworkResource, filter filters.Args) ([]types.NetworkResource, error) { + // if filter is empty, return original network list + if filter.Len() == 0 { + return nws, nil + } + + displayNet := nws[:0] + for _, nw := range nws { + if filter.Contains("driver") { + if !filter.ExactMatch("driver", nw.Driver) { + continue + } + } + if filter.Contains("name") { + if !filter.Match("name", nw.Name) { + continue + } + } + if filter.Contains("id") { + if !filter.Match("id", nw.ID) { + continue + } + } + if filter.Contains("label") { + if !filter.MatchKVList("label", nw.Labels) { + continue + } + } + if filter.Contains("scope") { + if !filter.ExactMatch("scope", nw.Scope) { + continue + } + } + + if filter.Contains("idOrName") { + if !filter.Match("name", nw.Name) && !filter.Match("id", nw.Name) { + continue + } + } + displayNet = append(displayNet, nw) + } + + if values := filter.Get("dangling"); len(values) > 0 { + if len(values) > 1 { + return nil, errdefs.InvalidParameter(errors.New(`got more than one value for filter key "dangling"`)) + } + + var danglingOnly bool + switch values[0] { + case "0", "false": + // dangling is false already + case "1", "true": + danglingOnly = true + default: + return nil, errdefs.InvalidParameter(errors.New(`invalid value for filter 'dangling', must be "true" (or "1"), or "false" (or "0")`)) + } + + displayNet = filterNetworkByUse(displayNet, danglingOnly) + } + + if filter.Contains("type") { + typeNet := []types.NetworkResource{} + errFilter := filter.WalkValues("type", func(fval string) error { + passList, err := filterNetworkByType(displayNet, fval) + if err != nil { + return err + } + typeNet = append(typeNet, passList...) + return nil + }) + if errFilter != nil { + return nil, errFilter + } + displayNet = typeNet + } + + return displayNet, nil +} + +func filterNetworkByUse(nws []types.NetworkResource, danglingOnly bool) []types.NetworkResource { + retNws := []types.NetworkResource{} + + filterFunc := func(nw types.NetworkResource) bool { + if danglingOnly { + return !runconfig.IsPreDefinedNetwork(nw.Name) && len(nw.Containers) == 0 && len(nw.Services) == 0 + } + return runconfig.IsPreDefinedNetwork(nw.Name) || len(nw.Containers) > 0 || len(nw.Services) > 0 + } + + for _, nw := range nws { + if filterFunc(nw) { + retNws = append(retNws, nw) + } + } + + return retNws +} + +func filterNetworkByType(nws []types.NetworkResource, netType string) ([]types.NetworkResource, error) { + retNws := []types.NetworkResource{} + switch netType { + case "builtin": + for _, nw := range nws { + if runconfig.IsPreDefinedNetwork(nw.Name) { + retNws = append(retNws, nw) + } + } + case "custom": + for _, nw := range nws { + if !runconfig.IsPreDefinedNetwork(nw.Name) { + retNws = append(retNws, nw) + } + } + default: + return nil, errors.Errorf("invalid filter: 'type'='%s'", netType) + } + return retNws, nil +} diff --git a/vendor/github.com/docker/docker/daemon/network/settings.go b/vendor/github.com/docker/docker/daemon/network/settings.go index b0460ed6ae..7696d40201 100644 --- a/vendor/github.com/docker/docker/daemon/network/settings.go +++ b/vendor/github.com/docker/docker/daemon/network/settings.go @@ -2,6 +2,7 @@ package network // import "github.com/docker/docker/daemon/network" import ( "net" + "sync" networktypes "github.com/docker/docker/api/types/network" clustertypes "github.com/docker/docker/daemon/cluster/provider" @@ -37,6 +38,7 @@ type EndpointSettings struct { // AttachmentStore stores the load balancer IP address for a network id. type AttachmentStore struct { + sync.Mutex //key: networkd id //value: load balancer ip address networkToNodeLBIP map[string]net.IP @@ -45,7 +47,9 @@ type AttachmentStore struct { // ResetAttachments clears any existing load balancer IP to network mapping and // sets the mapping to the given attachments. func (store *AttachmentStore) ResetAttachments(attachments map[string]string) error { - store.ClearAttachments() + store.Lock() + defer store.Unlock() + store.clearAttachments() for nid, nodeIP := range attachments { ip, _, err := net.ParseCIDR(nodeIP) if err != nil { @@ -59,11 +63,19 @@ func (store *AttachmentStore) ResetAttachments(attachments map[string]string) er // ClearAttachments clears all the mappings of network to load balancer IP Address. func (store *AttachmentStore) ClearAttachments() { + store.Lock() + defer store.Unlock() + store.clearAttachments() +} + +func (store *AttachmentStore) clearAttachments() { store.networkToNodeLBIP = make(map[string]net.IP) } // GetIPForNetwork return the load balancer IP address for the given network. func (store *AttachmentStore) GetIPForNetwork(networkID string) (net.IP, bool) { + store.Lock() + defer store.Unlock() ip, exists := store.networkToNodeLBIP[networkID] return ip, exists } diff --git a/vendor/github.com/docker/docker/dockerversion/useragent.go b/vendor/github.com/docker/docker/dockerversion/useragent.go index 2eceb6fa9e..afbdcd8584 100644 --- a/vendor/github.com/docker/docker/dockerversion/useragent.go +++ b/vendor/github.com/docker/docker/dockerversion/useragent.go @@ -10,7 +10,7 @@ import ( ) // UAStringKey is used as key type for user-agent string in net/context struct -const UAStringKey = "upstream-user-agent" +type UAStringKey struct{} // DockerUserAgent is the User-Agent the Docker client uses to identify itself. // In accordance with RFC 7231 (5.5.3) is of the form: @@ -39,9 +39,9 @@ func DockerUserAgent(ctx context.Context) string { func getUserAgentFromContext(ctx context.Context) string { var upstreamUA string if ctx != nil { - var ki interface{} = ctx.Value(UAStringKey) + var ki interface{} = ctx.Value(UAStringKey{}) if ki != nil { - upstreamUA = ctx.Value(UAStringKey).(string) + upstreamUA = ctx.Value(UAStringKey{}).(string) } } return upstreamUA diff --git a/vendor/github.com/docker/docker/dockerversion/version_lib.go b/vendor/github.com/docker/docker/dockerversion/version_lib.go index 0897c0728e..b7d4650444 100644 --- a/vendor/github.com/docker/docker/dockerversion/version_lib.go +++ b/vendor/github.com/docker/docker/dockerversion/version_lib.go @@ -4,14 +4,14 @@ package dockerversion // import "github.com/docker/docker/dockerversion" // Default build-time variable for library-import. -// This file is overridden on build with build-time informations. +// This file is overridden on build with build-time information. const ( - GitCommit = "library-import" - Version = "library-import" - BuildTime = "library-import" - IAmStatic = "library-import" - ContainerdCommitID = "library-import" - RuncCommitID = "library-import" - InitCommitID = "library-import" - PlatformName = "" + GitCommit = "library-import" + Version = "library-import" + BuildTime = "library-import" + IAmStatic = "library-import" + InitCommitID = "library-import" + PlatformName = "" + ProductName = "" + DefaultProductLicense = "" ) diff --git a/vendor/github.com/docker/docker/errdefs/helpers.go b/vendor/github.com/docker/docker/errdefs/helpers.go index 6169c2bc62..a28881caf5 100644 --- a/vendor/github.com/docker/docker/errdefs/helpers.go +++ b/vendor/github.com/docker/docker/errdefs/helpers.go @@ -12,8 +12,8 @@ func (e errNotFound) Cause() error { // NotFound is a helper to create an error of the class with the same name from any error type func NotFound(err error) error { - if err == nil { - return nil + if err == nil || IsNotFound(err) { + return err } return errNotFound{err} } @@ -28,8 +28,8 @@ func (e errInvalidParameter) Cause() error { // InvalidParameter is a helper to create an error of the class with the same name from any error type func InvalidParameter(err error) error { - if err == nil { - return nil + if err == nil || IsInvalidParameter(err) { + return err } return errInvalidParameter{err} } @@ -44,8 +44,8 @@ func (e errConflict) Cause() error { // Conflict is a helper to create an error of the class with the same name from any error type func Conflict(err error) error { - if err == nil { - return nil + if err == nil || IsConflict(err) { + return err } return errConflict{err} } @@ -60,8 +60,8 @@ func (e errUnauthorized) Cause() error { // Unauthorized is a helper to create an error of the class with the same name from any error type func Unauthorized(err error) error { - if err == nil { - return nil + if err == nil || IsUnauthorized(err) { + return err } return errUnauthorized{err} } @@ -76,6 +76,9 @@ func (e errUnavailable) Cause() error { // Unavailable is a helper to create an error of the class with the same name from any error type func Unavailable(err error) error { + if err == nil || IsUnavailable(err) { + return err + } return errUnavailable{err} } @@ -89,8 +92,8 @@ func (e errForbidden) Cause() error { // Forbidden is a helper to create an error of the class with the same name from any error type func Forbidden(err error) error { - if err == nil { - return nil + if err == nil || IsForbidden(err) { + return err } return errForbidden{err} } @@ -105,8 +108,8 @@ func (e errSystem) Cause() error { // System is a helper to create an error of the class with the same name from any error type func System(err error) error { - if err == nil { - return nil + if err == nil || IsSystem(err) { + return err } return errSystem{err} } @@ -121,8 +124,8 @@ func (e errNotModified) Cause() error { // NotModified is a helper to create an error of the class with the same name from any error type func NotModified(err error) error { - if err == nil { - return nil + if err == nil || IsNotModified(err) { + return err } return errNotModified{err} } @@ -137,8 +140,8 @@ func (e errAlreadyExists) Cause() error { // AlreadyExists is a helper to create an error of the class with the same name from any error type func AlreadyExists(err error) error { - if err == nil { - return nil + if err == nil || IsAlreadyExists(err) { + return err } return errAlreadyExists{err} } @@ -153,8 +156,8 @@ func (e errNotImplemented) Cause() error { // NotImplemented is a helper to create an error of the class with the same name from any error type func NotImplemented(err error) error { - if err == nil { - return nil + if err == nil || IsNotImplemented(err) { + return err } return errNotImplemented{err} } @@ -169,8 +172,8 @@ func (e errUnknown) Cause() error { // Unknown is a helper to create an error of the class with the same name from any error type func Unknown(err error) error { - if err == nil { - return nil + if err == nil || IsUnknown(err) { + return err } return errUnknown{err} } @@ -185,8 +188,8 @@ func (e errCancelled) Cause() error { // Cancelled is a helper to create an error of the class with the same name from any error type func Cancelled(err error) error { - if err == nil { - return nil + if err == nil || IsCancelled(err) { + return err } return errCancelled{err} } @@ -201,8 +204,8 @@ func (e errDeadline) Cause() error { // Deadline is a helper to create an error of the class with the same name from any error type func Deadline(err error) error { - if err == nil { - return nil + if err == nil || IsDeadline(err) { + return err } return errDeadline{err} } @@ -217,8 +220,8 @@ func (e errDataLoss) Cause() error { // DataLoss is a helper to create an error of the class with the same name from any error type func DataLoss(err error) error { - if err == nil { - return nil + if err == nil || IsDataLoss(err) { + return err } return errDataLoss{err} } diff --git a/vendor/github.com/docker/docker/errdefs/http_helpers.go b/vendor/github.com/docker/docker/errdefs/http_helpers.go new file mode 100644 index 0000000000..9884eb86b9 --- /dev/null +++ b/vendor/github.com/docker/docker/errdefs/http_helpers.go @@ -0,0 +1,172 @@ +package errdefs // import "github.com/docker/docker/errdefs" + +import ( + "fmt" + "net/http" + + "github.com/docker/distribution/registry/api/errcode" + "github.com/sirupsen/logrus" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +// GetHTTPErrorStatusCode retrieves status code from error message. +func GetHTTPErrorStatusCode(err error) int { + if err == nil { + logrus.WithFields(logrus.Fields{"error": err}).Error("unexpected HTTP error handling") + return http.StatusInternalServerError + } + + var statusCode int + + // Stop right there + // Are you sure you should be adding a new error class here? Do one of the existing ones work? + + // Note that the below functions are already checking the error causal chain for matches. + switch { + case IsNotFound(err): + statusCode = http.StatusNotFound + case IsInvalidParameter(err): + statusCode = http.StatusBadRequest + case IsConflict(err) || IsAlreadyExists(err): + statusCode = http.StatusConflict + case IsUnauthorized(err): + statusCode = http.StatusUnauthorized + case IsUnavailable(err): + statusCode = http.StatusServiceUnavailable + case IsForbidden(err): + statusCode = http.StatusForbidden + case IsNotModified(err): + statusCode = http.StatusNotModified + case IsNotImplemented(err): + statusCode = http.StatusNotImplemented + case IsSystem(err) || IsUnknown(err) || IsDataLoss(err) || IsDeadline(err) || IsCancelled(err): + statusCode = http.StatusInternalServerError + default: + statusCode = statusCodeFromGRPCError(err) + if statusCode != http.StatusInternalServerError { + return statusCode + } + statusCode = statusCodeFromDistributionError(err) + if statusCode != http.StatusInternalServerError { + return statusCode + } + if e, ok := err.(causer); ok { + return GetHTTPErrorStatusCode(e.Cause()) + } + + logrus.WithFields(logrus.Fields{ + "module": "api", + "error_type": fmt.Sprintf("%T", err), + }).Debugf("FIXME: Got an API for which error does not match any expected type!!!: %+v", err) + } + + if statusCode == 0 { + statusCode = http.StatusInternalServerError + } + + return statusCode +} + +// FromStatusCode creates an errdef error, based on the provided HTTP status-code +func FromStatusCode(err error, statusCode int) error { + if err == nil { + return err + } + switch statusCode { + case http.StatusNotFound: + err = NotFound(err) + case http.StatusBadRequest: + err = InvalidParameter(err) + case http.StatusConflict: + err = Conflict(err) + case http.StatusUnauthorized: + err = Unauthorized(err) + case http.StatusServiceUnavailable: + err = Unavailable(err) + case http.StatusForbidden: + err = Forbidden(err) + case http.StatusNotModified: + err = NotModified(err) + case http.StatusNotImplemented: + err = NotImplemented(err) + case http.StatusInternalServerError: + if !IsSystem(err) && !IsUnknown(err) && !IsDataLoss(err) && !IsDeadline(err) && !IsCancelled(err) { + err = System(err) + } + default: + logrus.WithFields(logrus.Fields{ + "module": "api", + "status_code": fmt.Sprintf("%d", statusCode), + }).Debugf("FIXME: Got an status-code for which error does not match any expected type!!!: %d", statusCode) + + switch { + case statusCode >= 200 && statusCode < 400: + // it's a client error + case statusCode >= 400 && statusCode < 500: + err = InvalidParameter(err) + case statusCode >= 500 && statusCode < 600: + err = System(err) + default: + err = Unknown(err) + } + } + return err +} + +// statusCodeFromGRPCError returns status code according to gRPC error +func statusCodeFromGRPCError(err error) int { + switch status.Code(err) { + case codes.InvalidArgument: // code 3 + return http.StatusBadRequest + case codes.NotFound: // code 5 + return http.StatusNotFound + case codes.AlreadyExists: // code 6 + return http.StatusConflict + case codes.PermissionDenied: // code 7 + return http.StatusForbidden + case codes.FailedPrecondition: // code 9 + return http.StatusBadRequest + case codes.Unauthenticated: // code 16 + return http.StatusUnauthorized + case codes.OutOfRange: // code 11 + return http.StatusBadRequest + case codes.Unimplemented: // code 12 + return http.StatusNotImplemented + case codes.Unavailable: // code 14 + return http.StatusServiceUnavailable + default: + if e, ok := err.(causer); ok { + return statusCodeFromGRPCError(e.Cause()) + } + // codes.Canceled(1) + // codes.Unknown(2) + // codes.DeadlineExceeded(4) + // codes.ResourceExhausted(8) + // codes.Aborted(10) + // codes.Internal(13) + // codes.DataLoss(15) + return http.StatusInternalServerError + } +} + +// statusCodeFromDistributionError returns status code according to registry errcode +// code is loosely based on errcode.ServeJSON() in docker/distribution +func statusCodeFromDistributionError(err error) int { + switch errs := err.(type) { + case errcode.Errors: + if len(errs) < 1 { + return http.StatusInternalServerError + } + if _, ok := errs[0].(errcode.ErrorCoder); ok { + return statusCodeFromDistributionError(errs[0]) + } + case errcode.ErrorCoder: + return errs.ErrorCode().Descriptor().HTTPStatusCode + default: + if e, ok := err.(causer); ok { + return statusCodeFromDistributionError(e.Cause()) + } + } + return http.StatusInternalServerError +} diff --git a/vendor/github.com/docker/docker/image/store.go b/vendor/github.com/docker/docker/image/store.go index 9fd7d7dcf3..1a8a8a2451 100644 --- a/vendor/github.com/docker/docker/image/store.go +++ b/vendor/github.com/docker/docker/image/store.go @@ -76,7 +76,8 @@ func (is *store) restore() error { var l layer.Layer if chainID := img.RootFS.ChainID(); chainID != "" { if !system.IsOSSupported(img.OperatingSystem()) { - return system.ErrNotSupportedOperatingSystem + logrus.Errorf("not restoring image with unsupported operating system %v, %v, %s", dgst, chainID, img.OperatingSystem()) + return nil } l, err = is.lss[img.OperatingSystem()].Get(chainID) if err != nil { diff --git a/vendor/github.com/docker/docker/layer/filestore.go b/vendor/github.com/docker/docker/layer/filestore.go index b1cbb80166..208a0c3a85 100644 --- a/vendor/github.com/docker/docker/layer/filestore.go +++ b/vendor/github.com/docker/docker/layer/filestore.go @@ -3,7 +3,6 @@ package layer // import "github.com/docker/docker/layer" import ( "compress/gzip" "encoding/json" - "errors" "fmt" "io" "io/ioutil" @@ -16,6 +15,7 @@ import ( "github.com/docker/distribution" "github.com/docker/docker/pkg/ioutils" "github.com/opencontainers/go-digest" + "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -194,8 +194,8 @@ func (fms *fileMetadataStore) GetCacheID(layer ChainID) (string, error) { } content := strings.TrimSpace(string(contentBytes)) - if !stringIDRegexp.MatchString(content) { - return "", errors.New("invalid cache id value") + if content == "" { + return "", errors.Errorf("invalid cache id value") } return content, nil diff --git a/vendor/github.com/docker/docker/layer/layer_store.go b/vendor/github.com/docker/docker/layer/layer_store.go index bf0705afc5..1601465c04 100644 --- a/vendor/github.com/docker/docker/layer/layer_store.go +++ b/vendor/github.com/docker/docker/layer/layer_store.go @@ -45,7 +45,7 @@ type StoreOptions struct { MetadataStorePathTemplate string GraphDriver string GraphDriverOptions []string - IDMappings *idtools.IDMappings + IDMapping *idtools.IdentityMapping PluginGetter plugingetter.PluginGetter ExperimentalEnabled bool OS string @@ -56,8 +56,8 @@ func NewStoreFromOptions(options StoreOptions) (Store, error) { driver, err := graphdriver.New(options.GraphDriver, options.PluginGetter, graphdriver.Options{ Root: options.Root, DriverOptions: options.GraphDriverOptions, - UIDMaps: options.IDMappings.UIDs(), - GIDMaps: options.IDMappings.GIDs(), + UIDMaps: options.IDMapping.UIDs(), + GIDMaps: options.IDMapping.GIDs(), ExperimentalEnabled: options.ExperimentalEnabled, }) if err != nil { @@ -121,6 +121,10 @@ func newStoreFromGraphDriver(root string, driver graphdriver.Driver, os string) return ls, nil } +func (ls *layerStore) Driver() graphdriver.Driver { + return ls.driver +} + func (ls *layerStore) loadLayer(layer ChainID) (*roLayer, error) { cl, ok := ls.layerMap[layer] if ok { @@ -249,13 +253,14 @@ func (ls *layerStore) applyTar(tx *fileMetadataTransaction, ts io.Reader, parent } applySize, err := ls.driver.ApplyDiff(layer.cacheID, parent, rdr) + // discard trailing data but ensure metadata is picked up to reconstruct stream + // unconditionally call io.Copy here before checking err to ensure the resources + // allocated by NewInputTarStream above are always released + io.Copy(ioutil.Discard, rdr) // ignore error as reader may be closed if err != nil { return err } - // Discard trailing data but ensure metadata is picked up to reconstruct stream - io.Copy(ioutil.Discard, rdr) // ignore error as reader may be closed - layer.size = applySize layer.diffID = DiffID(digester.Digest()) diff --git a/vendor/github.com/docker/docker/layer/layer_windows.go b/vendor/github.com/docker/docker/layer/layer_windows.go index 25ef26afc1..3d079a9af6 100644 --- a/vendor/github.com/docker/docker/layer/layer_windows.go +++ b/vendor/github.com/docker/docker/layer/layer_windows.go @@ -7,7 +7,7 @@ import ( // Getter is an interface to get the path to a layer on the host. type Getter interface { // GetLayerPath gets the path for the layer. This is different from Get() - // since that returns an interface to account for umountable layers. + // since that returns an interface to account for unmountable layers. GetLayerPath(id string) (string, error) } diff --git a/vendor/github.com/docker/docker/layer/ro_layer.go b/vendor/github.com/docker/docker/layer/ro_layer.go index bc0fe1dddf..3555e8b027 100644 --- a/vendor/github.com/docker/docker/layer/ro_layer.go +++ b/vendor/github.com/docker/docker/layer/ro_layer.go @@ -54,6 +54,10 @@ func (rl *roLayer) TarStreamFrom(parent ChainID) (io.ReadCloser, error) { return rl.layerStore.driver.Diff(rl.cacheID, parentCacheID) } +func (rl *roLayer) CacheID() string { + return rl.cacheID +} + func (rl *roLayer) ChainID() ChainID { return rl.chainID } diff --git a/vendor/github.com/docker/docker/oci/defaults.go b/vendor/github.com/docker/docker/oci/defaults.go index 4145412dd4..35fbcd1d87 100644 --- a/vendor/github.com/docker/docker/oci/defaults.go +++ b/vendor/github.com/docker/docker/oci/defaults.go @@ -11,7 +11,8 @@ func iPtr(i int64) *int64 { return &i } func u32Ptr(i int64) *uint32 { u := uint32(i); return &u } func fmPtr(i int64) *os.FileMode { fm := os.FileMode(i); return &fm } -func defaultCapabilities() []string { +// DefaultCapabilities returns a Linux kernel default capabilities +func DefaultCapabilities() []string { return []string{ "CAP_CHOWN", "CAP_DAC_OVERRIDE", @@ -59,10 +60,10 @@ func DefaultLinuxSpec() specs.Spec { Version: specs.Version, Process: &specs.Process{ Capabilities: &specs.LinuxCapabilities{ - Bounding: defaultCapabilities(), - Permitted: defaultCapabilities(), - Inheritable: defaultCapabilities(), - Effective: defaultCapabilities(), + Bounding: DefaultCapabilities(), + Permitted: DefaultCapabilities(), + Inheritable: DefaultCapabilities(), + Effective: DefaultCapabilities(), }, }, Root: &specs.Root{}, @@ -114,6 +115,8 @@ func DefaultLinuxSpec() specs.Spec { s.Linux = &specs.Linux{ MaskedPaths: []string{ + "/proc/asound", + "/proc/acpi", "/proc/kcore", "/proc/keys", "/proc/latency_stats", @@ -124,7 +127,6 @@ func DefaultLinuxSpec() specs.Spec { "/sys/firmware", }, ReadonlyPaths: []string{ - "/proc/asound", "/proc/bus", "/proc/fs", "/proc/irq", diff --git a/vendor/github.com/docker/docker/oci/oci.go b/vendor/github.com/docker/docker/oci/oci.go new file mode 100644 index 0000000000..6c84ba3488 --- /dev/null +++ b/vendor/github.com/docker/docker/oci/oci.go @@ -0,0 +1,67 @@ +package oci // import "github.com/docker/docker/oci" + +import ( + "fmt" + "regexp" + "strconv" + + specs "github.com/opencontainers/runtime-spec/specs-go" +) + +// nolint: gosimple +var deviceCgroupRuleRegex = regexp.MustCompile("^([acb]) ([0-9]+|\\*):([0-9]+|\\*) ([rwm]{1,3})$") + +// SetCapabilities sets the provided capabilities on the spec +// All capabilities are added if privileged is true +func SetCapabilities(s *specs.Spec, caplist []string) error { + s.Process.Capabilities.Effective = caplist + s.Process.Capabilities.Bounding = caplist + s.Process.Capabilities.Permitted = caplist + s.Process.Capabilities.Inheritable = caplist + // setUser has already been executed here + // if non root drop capabilities in the way execve does + if s.Process.User.UID != 0 { + s.Process.Capabilities.Effective = []string{} + s.Process.Capabilities.Permitted = []string{} + } + return nil +} + +// AppendDevicePermissionsFromCgroupRules takes rules for the devices cgroup to append to the default set +func AppendDevicePermissionsFromCgroupRules(devPermissions []specs.LinuxDeviceCgroup, rules []string) ([]specs.LinuxDeviceCgroup, error) { + for _, deviceCgroupRule := range rules { + ss := deviceCgroupRuleRegex.FindAllStringSubmatch(deviceCgroupRule, -1) + if len(ss[0]) != 5 { + return nil, fmt.Errorf("invalid device cgroup rule format: '%s'", deviceCgroupRule) + } + matches := ss[0] + + dPermissions := specs.LinuxDeviceCgroup{ + Allow: true, + Type: matches[1], + Access: matches[4], + } + if matches[2] == "*" { + major := int64(-1) + dPermissions.Major = &major + } else { + major, err := strconv.ParseInt(matches[2], 10, 64) + if err != nil { + return nil, fmt.Errorf("invalid major value in device cgroup rule format: '%s'", deviceCgroupRule) + } + dPermissions.Major = &major + } + if matches[3] == "*" { + minor := int64(-1) + dPermissions.Minor = &minor + } else { + minor, err := strconv.ParseInt(matches[3], 10, 64) + if err != nil { + return nil, fmt.Errorf("invalid minor value in device cgroup rule format: '%s'", deviceCgroupRule) + } + dPermissions.Minor = &minor + } + devPermissions = append(devPermissions, dPermissions) + } + return devPermissions, nil +} diff --git a/vendor/github.com/docker/docker/pkg/archive/archive.go b/vendor/github.com/docker/docker/pkg/archive/archive.go index 5fb3995e9b..bb623fa856 100644 --- a/vendor/github.com/docker/docker/pkg/archive/archive.go +++ b/vendor/github.com/docker/docker/pkg/archive/archive.go @@ -52,7 +52,7 @@ type ( NoLchown bool UIDMaps []idtools.IDMap GIDMaps []idtools.IDMap - ChownOpts *idtools.IDPair + ChownOpts *idtools.Identity IncludeSourceDir bool // WhiteoutFormat is the expected on disk format for whiteout files. // This format will be converted to the standard format on pack @@ -72,13 +72,13 @@ type ( // this package with a pluggable Untar function. Also, to facilitate the passing of specific id // mappings for untar, an Archiver can be created with maps which will then be passed to Untar operations. type Archiver struct { - Untar func(io.Reader, string, *TarOptions) error - IDMappingsVar *idtools.IDMappings + Untar func(io.Reader, string, *TarOptions) error + IDMapping *idtools.IdentityMapping } -// NewDefaultArchiver returns a new Archiver without any IDMappings +// NewDefaultArchiver returns a new Archiver without any IdentityMapping func NewDefaultArchiver() *Archiver { - return &Archiver{Untar: Untar, IDMappingsVar: &idtools.IDMappings{}} + return &Archiver{Untar: Untar, IDMapping: &idtools.IdentityMapping{}} } // breakoutError is used to differentiate errors related to breaking out @@ -127,6 +127,7 @@ func IsArchivePath(path string) bool { if err != nil { return false } + defer rdr.Close() r := tar.NewReader(rdr) _, err = r.Next() return err == nil @@ -366,11 +367,7 @@ func FileInfoHeader(name string, fi os.FileInfo, link string) (*tar.Header, erro hdr.AccessTime = time.Time{} hdr.ChangeTime = time.Time{} hdr.Mode = fillGo18FileTypeBits(int64(chmodTarEntry(os.FileMode(hdr.Mode))), fi) - name, err = canonicalTarName(name, fi.IsDir()) - if err != nil { - return nil, fmt.Errorf("tar: cannot canonicalize path: %v", err) - } - hdr.Name = name + hdr.Name = canonicalTarName(name, fi.IsDir()) if err := setHeaderForSpecialDevice(hdr, name, fi.Sys()); err != nil { return nil, err } @@ -423,9 +420,9 @@ type tarAppender struct { Buffer *bufio.Writer // for hardlink mapping - SeenFiles map[uint64]string - IDMappings *idtools.IDMappings - ChownOpts *idtools.IDPair + SeenFiles map[uint64]string + IdentityMapping *idtools.IdentityMapping + ChownOpts *idtools.Identity // For packing and unpacking whiteout files in the // non standard format. The whiteout files defined @@ -434,29 +431,26 @@ type tarAppender struct { WhiteoutConverter tarWhiteoutConverter } -func newTarAppender(idMapping *idtools.IDMappings, writer io.Writer, chownOpts *idtools.IDPair) *tarAppender { +func newTarAppender(idMapping *idtools.IdentityMapping, writer io.Writer, chownOpts *idtools.Identity) *tarAppender { return &tarAppender{ - SeenFiles: make(map[uint64]string), - TarWriter: tar.NewWriter(writer), - Buffer: pools.BufioWriter32KPool.Get(nil), - IDMappings: idMapping, - ChownOpts: chownOpts, + SeenFiles: make(map[uint64]string), + TarWriter: tar.NewWriter(writer), + Buffer: pools.BufioWriter32KPool.Get(nil), + IdentityMapping: idMapping, + ChownOpts: chownOpts, } } // canonicalTarName provides a platform-independent and consistent posix-style //path for files and directories to be archived regardless of the platform. -func canonicalTarName(name string, isDir bool) (string, error) { - name, err := CanonicalTarNameForPath(name) - if err != nil { - return "", err - } +func canonicalTarName(name string, isDir bool) string { + name = CanonicalTarNameForPath(name) // suffix with '/' for directories if isDir && !strings.HasSuffix(name, "/") { name += "/" } - return name, nil + return name } // addTarFile adds to the tar archive a file from `path` as `name` @@ -508,14 +502,12 @@ func (ta *tarAppender) addTarFile(path, name string) error { //handle re-mapping container ID mappings back to host ID mappings before //writing tar headers/files. We skip whiteout files because they were written //by the kernel and already have proper ownership relative to the host - if !isOverlayWhiteout && - !strings.HasPrefix(filepath.Base(hdr.Name), WhiteoutPrefix) && - !ta.IDMappings.Empty() { + if !isOverlayWhiteout && !strings.HasPrefix(filepath.Base(hdr.Name), WhiteoutPrefix) && !ta.IdentityMapping.Empty() { fileIDPair, err := getFileUIDGID(fi.Sys()) if err != nil { return err } - hdr.Uid, hdr.Gid, err = ta.IDMappings.ToContainer(fileIDPair) + hdr.Uid, hdr.Gid, err = ta.IdentityMapping.ToContainer(fileIDPair) if err != nil { return err } @@ -578,7 +570,7 @@ func (ta *tarAppender) addTarFile(path, name string) error { return nil } -func createTarFile(path, extractDir string, hdr *tar.Header, reader io.Reader, Lchown bool, chownOpts *idtools.IDPair, inUserns bool) error { +func createTarFile(path, extractDir string, hdr *tar.Header, reader io.Reader, Lchown bool, chownOpts *idtools.Identity, inUserns bool) error { // hdr.Mode is in linux format, which we can use for sycalls, // but for os.Foo() calls we need the mode converted to os.FileMode, // so use hdrInfo.Mode() (they differ for e.g. setuid bits) @@ -658,7 +650,7 @@ func createTarFile(path, extractDir string, hdr *tar.Header, reader io.Reader, L // Lchown is not supported on Windows. if Lchown && runtime.GOOS != "windows" { if chownOpts == nil { - chownOpts = &idtools.IDPair{UID: hdr.Uid, GID: hdr.Gid} + chownOpts = &idtools.Identity{UID: hdr.Uid, GID: hdr.Gid} } if err := os.Lchown(path, chownOpts.UID, chownOpts.GID); err != nil { return err @@ -668,11 +660,13 @@ func createTarFile(path, extractDir string, hdr *tar.Header, reader io.Reader, L var errors []string for key, value := range hdr.Xattrs { if err := system.Lsetxattr(path, key, []byte(value), 0); err != nil { - if err == syscall.ENOTSUP { + if err == syscall.ENOTSUP || err == syscall.EPERM { // We ignore errors here because not all graphdrivers support // xattrs *cough* old versions of AUFS *cough*. However only // ENOTSUP should be emitted in that case, otherwise we still // bail. + // EPERM occurs if modifying xattrs is not allowed. This can + // happen when running in userns with restrictions (ChromeOS). errors = append(errors, err.Error()) continue } @@ -751,7 +745,7 @@ func TarWithOptions(srcPath string, options *TarOptions) (io.ReadCloser, error) compressWriter, options.ChownOpts, ) - ta.WhiteoutConverter = getWhiteoutConverter(options.WhiteoutFormat) + ta.WhiteoutConverter = getWhiteoutConverter(options.WhiteoutFormat, options.InUserNS) defer func() { // Make sure to check the error on Close. @@ -907,9 +901,9 @@ func Unpack(decompressedArchive io.Reader, dest string, options *TarOptions) err defer pools.BufioReader32KPool.Put(trBuf) var dirs []*tar.Header - idMappings := idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps) - rootIDs := idMappings.RootPair() - whiteoutConverter := getWhiteoutConverter(options.WhiteoutFormat) + idMapping := idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps) + rootIDs := idMapping.RootPair() + whiteoutConverter := getWhiteoutConverter(options.WhiteoutFormat, options.InUserNS) // Iterate through the files in the archive. loop: @@ -987,7 +981,7 @@ loop: } trBuf.Reset(tr) - if err := remapIDs(idMappings, hdr); err != nil { + if err := remapIDs(idMapping, hdr); err != nil { return err } @@ -1074,8 +1068,8 @@ func (archiver *Archiver) TarUntar(src, dst string) error { } defer archive.Close() options := &TarOptions{ - UIDMaps: archiver.IDMappingsVar.UIDs(), - GIDMaps: archiver.IDMappingsVar.GIDs(), + UIDMaps: archiver.IDMapping.UIDs(), + GIDMaps: archiver.IDMapping.GIDs(), } return archiver.Untar(archive, dst, options) } @@ -1088,8 +1082,8 @@ func (archiver *Archiver) UntarPath(src, dst string) error { } defer archive.Close() options := &TarOptions{ - UIDMaps: archiver.IDMappingsVar.UIDs(), - GIDMaps: archiver.IDMappingsVar.GIDs(), + UIDMaps: archiver.IDMapping.UIDs(), + GIDMaps: archiver.IDMapping.GIDs(), } return archiver.Untar(archive, dst, options) } @@ -1110,7 +1104,7 @@ func (archiver *Archiver) CopyWithTar(src, dst string) error { // if this Archiver is set up with ID mapping we need to create // the new destination directory with the remapped root UID/GID pair // as owner - rootIDs := archiver.IDMappingsVar.RootPair() + rootIDs := archiver.IDMapping.RootPair() // Create dst, copy src's content into it logrus.Debugf("Creating dest directory: %s", dst) if err := idtools.MkdirAllAndChownNew(dst, 0755, rootIDs); err != nil { @@ -1170,7 +1164,7 @@ func (archiver *Archiver) CopyFileWithTar(src, dst string) (err error) { hdr.Name = filepath.Base(dst) hdr.Mode = int64(chmodTarEntry(os.FileMode(hdr.Mode))) - if err := remapIDs(archiver.IDMappingsVar, hdr); err != nil { + if err := remapIDs(archiver.IDMapping, hdr); err != nil { return err } @@ -1198,13 +1192,13 @@ func (archiver *Archiver) CopyFileWithTar(src, dst string) (err error) { return err } -// IDMappings returns the IDMappings of the archiver. -func (archiver *Archiver) IDMappings() *idtools.IDMappings { - return archiver.IDMappingsVar +// IdentityMapping returns the IdentityMapping of the archiver. +func (archiver *Archiver) IdentityMapping() *idtools.IdentityMapping { + return archiver.IDMapping } -func remapIDs(idMappings *idtools.IDMappings, hdr *tar.Header) error { - ids, err := idMappings.ToHost(idtools.IDPair{UID: hdr.Uid, GID: hdr.Gid}) +func remapIDs(idMapping *idtools.IdentityMapping, hdr *tar.Header) error { + ids, err := idMapping.ToHost(idtools.Identity{UID: hdr.Uid, GID: hdr.Gid}) hdr.Uid, hdr.Gid = ids.UID, ids.GID return err } diff --git a/vendor/github.com/docker/docker/pkg/archive/archive_linux.go b/vendor/github.com/docker/docker/pkg/archive/archive_linux.go index 970d4d0680..0601f7b0d1 100644 --- a/vendor/github.com/docker/docker/pkg/archive/archive_linux.go +++ b/vendor/github.com/docker/docker/pkg/archive/archive_linux.go @@ -2,22 +2,29 @@ package archive // import "github.com/docker/docker/pkg/archive" import ( "archive/tar" + "fmt" + "io/ioutil" "os" "path/filepath" "strings" + "syscall" + "github.com/containerd/continuity/fs" "github.com/docker/docker/pkg/system" + "github.com/pkg/errors" "golang.org/x/sys/unix" ) -func getWhiteoutConverter(format WhiteoutFormat) tarWhiteoutConverter { +func getWhiteoutConverter(format WhiteoutFormat, inUserNS bool) tarWhiteoutConverter { if format == OverlayWhiteoutFormat { - return overlayWhiteoutConverter{} + return overlayWhiteoutConverter{inUserNS: inUserNS} } return nil } -type overlayWhiteoutConverter struct{} +type overlayWhiteoutConverter struct { + inUserNS bool +} func (overlayWhiteoutConverter) ConvertWrite(hdr *tar.Header, path string, fi os.FileInfo) (wo *tar.Header, err error) { // convert whiteouts to AUFS format @@ -61,13 +68,22 @@ func (overlayWhiteoutConverter) ConvertWrite(hdr *tar.Header, path string, fi os return } -func (overlayWhiteoutConverter) ConvertRead(hdr *tar.Header, path string) (bool, error) { +func (c overlayWhiteoutConverter) ConvertRead(hdr *tar.Header, path string) (bool, error) { base := filepath.Base(path) dir := filepath.Dir(path) // if a directory is marked as opaque by the AUFS special file, we need to translate that to overlay if base == WhiteoutOpaqueDir { err := unix.Setxattr(dir, "trusted.overlay.opaque", []byte{'y'}, 0) + if err != nil { + if c.inUserNS { + if err = replaceDirWithOverlayOpaque(dir); err != nil { + return false, errors.Wrapf(err, "replaceDirWithOverlayOpaque(%q) failed", dir) + } + } else { + return false, errors.Wrapf(err, "setxattr(%q, trusted.overlay.opaque=y)", dir) + } + } // don't write the file itself return false, err } @@ -78,7 +94,19 @@ func (overlayWhiteoutConverter) ConvertRead(hdr *tar.Header, path string) (bool, originalPath := filepath.Join(dir, originalBase) if err := unix.Mknod(originalPath, unix.S_IFCHR, 0); err != nil { - return false, err + if c.inUserNS { + // Ubuntu and a few distros support overlayfs in userns. + // + // Although we can't call mknod directly in userns (at least on bionic kernel 4.15), + // we can still create 0,0 char device using mknodChar0Overlay(). + // + // NOTE: we don't need this hack for the containerd snapshotter+unpack model. + if err := mknodChar0Overlay(originalPath); err != nil { + return false, errors.Wrapf(err, "failed to mknodChar0UserNS(%q)", originalPath) + } + } else { + return false, errors.Wrapf(err, "failed to mknod(%q, S_IFCHR, 0)", originalPath) + } } if err := os.Chown(originalPath, hdr.Uid, hdr.Gid); err != nil { return false, err @@ -90,3 +118,144 @@ func (overlayWhiteoutConverter) ConvertRead(hdr *tar.Header, path string) (bool, return true, nil } + +// mknodChar0Overlay creates 0,0 char device by mounting overlayfs and unlinking. +// This function can be used for creating 0,0 char device in userns on Ubuntu. +// +// Steps: +// * Mkdir lower,upper,merged,work +// * Create lower/dummy +// * Mount overlayfs +// * Unlink merged/dummy +// * Unmount overlayfs +// * Make sure a 0,0 char device is created as upper/dummy +// * Rename upper/dummy to cleansedOriginalPath +func mknodChar0Overlay(cleansedOriginalPath string) error { + dir := filepath.Dir(cleansedOriginalPath) + tmp, err := ioutil.TempDir(dir, "mc0o") + if err != nil { + return errors.Wrapf(err, "failed to create a tmp directory under %s", dir) + } + defer os.RemoveAll(tmp) + lower := filepath.Join(tmp, "l") + upper := filepath.Join(tmp, "u") + work := filepath.Join(tmp, "w") + merged := filepath.Join(tmp, "m") + for _, s := range []string{lower, upper, work, merged} { + if err := os.MkdirAll(s, 0700); err != nil { + return errors.Wrapf(err, "failed to mkdir %s", s) + } + } + dummyBase := "d" + lowerDummy := filepath.Join(lower, dummyBase) + if err := ioutil.WriteFile(lowerDummy, []byte{}, 0600); err != nil { + return errors.Wrapf(err, "failed to create a dummy lower file %s", lowerDummy) + } + mOpts := fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s", lower, upper, work) + // docker/pkg/mount.Mount() requires procfs to be mounted. So we use syscall.Mount() directly instead. + if err := syscall.Mount("overlay", merged, "overlay", uintptr(0), mOpts); err != nil { + return errors.Wrapf(err, "failed to mount overlay (%s) on %s", mOpts, merged) + } + mergedDummy := filepath.Join(merged, dummyBase) + if err := os.Remove(mergedDummy); err != nil { + syscall.Unmount(merged, 0) + return errors.Wrapf(err, "failed to unlink %s", mergedDummy) + } + if err := syscall.Unmount(merged, 0); err != nil { + return errors.Wrapf(err, "failed to unmount %s", merged) + } + upperDummy := filepath.Join(upper, dummyBase) + if err := isChar0(upperDummy); err != nil { + return err + } + if err := os.Rename(upperDummy, cleansedOriginalPath); err != nil { + return errors.Wrapf(err, "failed to rename %s to %s", upperDummy, cleansedOriginalPath) + } + return nil +} + +func isChar0(path string) error { + osStat, err := os.Stat(path) + if err != nil { + return errors.Wrapf(err, "failed to stat %s", path) + } + st, ok := osStat.Sys().(*syscall.Stat_t) + if !ok { + return errors.Errorf("got unsupported stat for %s", path) + } + if os.FileMode(st.Mode)&syscall.S_IFMT != syscall.S_IFCHR { + return errors.Errorf("%s is not a character device, got mode=%d", path, st.Mode) + } + if st.Rdev != 0 { + return errors.Errorf("%s is not a 0,0 character device, got Rdev=%d", path, st.Rdev) + } + return nil +} + +// replaceDirWithOverlayOpaque replaces path with a new directory with trusted.overlay.opaque +// xattr. The contents of the directory are preserved. +func replaceDirWithOverlayOpaque(path string) error { + if path == "/" { + return errors.New("replaceDirWithOverlayOpaque: path must not be \"/\"") + } + dir := filepath.Dir(path) + tmp, err := ioutil.TempDir(dir, "rdwoo") + if err != nil { + return errors.Wrapf(err, "failed to create a tmp directory under %s", dir) + } + defer os.RemoveAll(tmp) + // newPath is a new empty directory crafted with trusted.overlay.opaque xattr. + // we copy the content of path into newPath, remove path, and rename newPath to path. + newPath, err := createDirWithOverlayOpaque(tmp) + if err != nil { + return errors.Wrapf(err, "createDirWithOverlayOpaque(%q) failed", tmp) + } + if err := fs.CopyDir(newPath, path); err != nil { + return errors.Wrapf(err, "CopyDir(%q, %q) failed", newPath, path) + } + if err := os.RemoveAll(path); err != nil { + return err + } + return os.Rename(newPath, path) +} + +// createDirWithOverlayOpaque creates a directory with trusted.overlay.opaque xattr, +// without calling setxattr, so as to allow creating opaque dir in userns on Ubuntu. +func createDirWithOverlayOpaque(tmp string) (string, error) { + lower := filepath.Join(tmp, "l") + upper := filepath.Join(tmp, "u") + work := filepath.Join(tmp, "w") + merged := filepath.Join(tmp, "m") + for _, s := range []string{lower, upper, work, merged} { + if err := os.MkdirAll(s, 0700); err != nil { + return "", errors.Wrapf(err, "failed to mkdir %s", s) + } + } + dummyBase := "d" + lowerDummy := filepath.Join(lower, dummyBase) + if err := os.MkdirAll(lowerDummy, 0700); err != nil { + return "", errors.Wrapf(err, "failed to create a dummy lower directory %s", lowerDummy) + } + mOpts := fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s", lower, upper, work) + // docker/pkg/mount.Mount() requires procfs to be mounted. So we use syscall.Mount() directly instead. + if err := syscall.Mount("overlay", merged, "overlay", uintptr(0), mOpts); err != nil { + return "", errors.Wrapf(err, "failed to mount overlay (%s) on %s", mOpts, merged) + } + mergedDummy := filepath.Join(merged, dummyBase) + if err := os.Remove(mergedDummy); err != nil { + syscall.Unmount(merged, 0) + return "", errors.Wrapf(err, "failed to rmdir %s", mergedDummy) + } + // upperDummy becomes a 0,0-char device file here + if err := os.Mkdir(mergedDummy, 0700); err != nil { + syscall.Unmount(merged, 0) + return "", errors.Wrapf(err, "failed to mkdir %s", mergedDummy) + } + // upperDummy becomes a directory with trusted.overlay.opaque xattr + // (but can't be verified in userns) + if err := syscall.Unmount(merged, 0); err != nil { + return "", errors.Wrapf(err, "failed to unmount %s", merged) + } + upperDummy := filepath.Join(upper, dummyBase) + return upperDummy, nil +} diff --git a/vendor/github.com/docker/docker/pkg/archive/archive_other.go b/vendor/github.com/docker/docker/pkg/archive/archive_other.go index 462dfc6323..65a73354c4 100644 --- a/vendor/github.com/docker/docker/pkg/archive/archive_other.go +++ b/vendor/github.com/docker/docker/pkg/archive/archive_other.go @@ -2,6 +2,6 @@ package archive // import "github.com/docker/docker/pkg/archive" -func getWhiteoutConverter(format WhiteoutFormat) tarWhiteoutConverter { +func getWhiteoutConverter(format WhiteoutFormat, inUserNS bool) tarWhiteoutConverter { return nil } diff --git a/vendor/github.com/docker/docker/pkg/archive/archive_unix.go b/vendor/github.com/docker/docker/pkg/archive/archive_unix.go index e81076c170..1eec912b7b 100644 --- a/vendor/github.com/docker/docker/pkg/archive/archive_unix.go +++ b/vendor/github.com/docker/docker/pkg/archive/archive_unix.go @@ -32,8 +32,8 @@ func getWalkRoot(srcPath string, include string) string { // CanonicalTarNameForPath returns platform-specific filepath // to canonical posix-style path for tar archival. p is relative // path. -func CanonicalTarNameForPath(p string) (string, error) { - return p, nil // already unix-style +func CanonicalTarNameForPath(p string) string { + return p // already unix-style } // chmodTarEntry is used to adjust the file permissions used in tar header based @@ -68,13 +68,13 @@ func getInodeFromStat(stat interface{}) (inode uint64, err error) { return } -func getFileUIDGID(stat interface{}) (idtools.IDPair, error) { +func getFileUIDGID(stat interface{}) (idtools.Identity, error) { s, ok := stat.(*syscall.Stat_t) if !ok { - return idtools.IDPair{}, errors.New("cannot convert stat value to syscall.Stat_t") + return idtools.Identity{}, errors.New("cannot convert stat value to syscall.Stat_t") } - return idtools.IDPair{UID: int(s.Uid), GID: int(s.Gid)}, nil + return idtools.Identity{UID: int(s.Uid), GID: int(s.Gid)}, nil } // handleTarTypeBlockCharFifo is an OS-specific helper function used by diff --git a/vendor/github.com/docker/docker/pkg/archive/archive_windows.go b/vendor/github.com/docker/docker/pkg/archive/archive_windows.go index 69aadd823c..ae6b89fd71 100644 --- a/vendor/github.com/docker/docker/pkg/archive/archive_windows.go +++ b/vendor/github.com/docker/docker/pkg/archive/archive_windows.go @@ -2,10 +2,8 @@ package archive // import "github.com/docker/docker/pkg/archive" import ( "archive/tar" - "fmt" "os" "path/filepath" - "strings" "github.com/docker/docker/pkg/idtools" "github.com/docker/docker/pkg/longpath" @@ -26,16 +24,8 @@ func getWalkRoot(srcPath string, include string) string { // CanonicalTarNameForPath returns platform-specific filepath // to canonical posix-style path for tar archival. p is relative // path. -func CanonicalTarNameForPath(p string) (string, error) { - // windows: convert windows style relative path with backslashes - // into forward slashes. Since windows does not allow '/' or '\' - // in file names, it is mostly safe to replace however we must - // check just in case - if strings.Contains(p, "/") { - return "", fmt.Errorf("Windows path contains forward slash: %s", p) - } - return strings.Replace(p, string(os.PathSeparator), "/", -1), nil - +func CanonicalTarNameForPath(p string) string { + return filepath.ToSlash(p) } // chmodTarEntry is used to adjust the file permissions used in tar header based @@ -71,7 +61,7 @@ func handleLChmod(hdr *tar.Header, path string, hdrInfo os.FileInfo) error { return nil } -func getFileUIDGID(stat interface{}) (idtools.IDPair, error) { +func getFileUIDGID(stat interface{}) (idtools.Identity, error) { // no notion of file ownership mapping yet on Windows - return idtools.IDPair{UID: 0, GID: 0}, nil + return idtools.Identity{UID: 0, GID: 0}, nil } diff --git a/vendor/github.com/docker/docker/pkg/archive/changes.go b/vendor/github.com/docker/docker/pkg/archive/changes.go index 43734db5b1..aedb91b035 100644 --- a/vendor/github.com/docker/docker/pkg/archive/changes.go +++ b/vendor/github.com/docker/docker/pkg/archive/changes.go @@ -63,12 +63,16 @@ func (c changesByPath) Less(i, j int) bool { return c[i].Path < c[j].Path } func (c changesByPath) Len() int { return len(c) } func (c changesByPath) Swap(i, j int) { c[j], c[i] = c[i], c[j] } -// Gnu tar and the go tar writer don't have sub-second mtime -// precision, which is problematic when we apply changes via tar -// files, we handle this by comparing for exact times, *or* same +// Gnu tar doesn't have sub-second mtime precision. The go tar +// writer (1.10+) does when using PAX format, but we round times to seconds +// to ensure archives have the same hashes for backwards compatibility. +// See https://github.com/moby/moby/pull/35739/commits/fb170206ba12752214630b269a40ac7be6115ed4. +// +// Non-sub-second is problematic when we apply changes via tar +// files. We handle this by comparing for exact times, *or* same // second count and either a or b having exactly 0 nanoseconds func sameFsTime(a, b time.Time) bool { - return a == b || + return a.Equal(b) || (a.Unix() == b.Unix() && (a.Nanosecond() == 0 || b.Nanosecond() == 0)) } diff --git a/vendor/github.com/docker/docker/pkg/archive/changes_linux.go b/vendor/github.com/docker/docker/pkg/archive/changes_linux.go index 78a5393c8e..f8792b3d4e 100644 --- a/vendor/github.com/docker/docker/pkg/archive/changes_linux.go +++ b/vendor/github.com/docker/docker/pkg/archive/changes_linux.go @@ -284,30 +284,3 @@ func clen(n []byte) int { } return len(n) } - -// OverlayChanges walks the path rw and determines changes for the files in the path, -// with respect to the parent layers -func OverlayChanges(layers []string, rw string) ([]Change, error) { - return changes(layers, rw, overlayDeletedFile, nil) -} - -func overlayDeletedFile(root, path string, fi os.FileInfo) (string, error) { - if fi.Mode()&os.ModeCharDevice != 0 { - s := fi.Sys().(*syscall.Stat_t) - if unix.Major(uint64(s.Rdev)) == 0 && unix.Minor(uint64(s.Rdev)) == 0 { // nolint: unconvert - return path, nil - } - } - if fi.Mode()&os.ModeDir != 0 { - opaque, err := system.Lgetxattr(filepath.Join(root, path), "trusted.overlay.opaque") - if err != nil { - return "", err - } - if len(opaque) == 1 && opaque[0] == 'y' { - return path, nil - } - } - - return "", nil - -} diff --git a/vendor/github.com/docker/docker/pkg/archive/changes_unix.go b/vendor/github.com/docker/docker/pkg/archive/changes_unix.go index c06a209d8e..06217b7161 100644 --- a/vendor/github.com/docker/docker/pkg/archive/changes_unix.go +++ b/vendor/github.com/docker/docker/pkg/archive/changes_unix.go @@ -16,7 +16,13 @@ func statDifferent(oldStat *system.StatT, newStat *system.StatT) bool { oldStat.UID() != newStat.UID() || oldStat.GID() != newStat.GID() || oldStat.Rdev() != newStat.Rdev() || - // Don't look at size for dirs, its not a good measure of change + // Don't look at size or modification time for dirs, its not a good + // measure of change. See https://github.com/moby/moby/issues/9874 + // for a description of the issue with modification time, and + // https://github.com/moby/moby/pull/11422 for the change. + // (Note that in the Windows implementation of this function, + // modification time IS taken as a change). See + // https://github.com/moby/moby/pull/37982 for more information. (oldStat.Mode()&unix.S_IFDIR != unix.S_IFDIR && (!sameFsTimeSpec(oldStat.Mtim(), newStat.Mtim()) || (oldStat.Size() != newStat.Size()))) { return true diff --git a/vendor/github.com/docker/docker/pkg/archive/changes_windows.go b/vendor/github.com/docker/docker/pkg/archive/changes_windows.go index 6555c01368..9906685e4b 100644 --- a/vendor/github.com/docker/docker/pkg/archive/changes_windows.go +++ b/vendor/github.com/docker/docker/pkg/archive/changes_windows.go @@ -7,9 +7,13 @@ import ( ) func statDifferent(oldStat *system.StatT, newStat *system.StatT) bool { + // Note there is slight difference between the Linux and Windows + // implementations here. Due to https://github.com/moby/moby/issues/9874, + // and the fix at https://github.com/moby/moby/pull/11422, Linux does not + // consider a change to the directory time as a change. Windows on NTFS + // does. See https://github.com/moby/moby/pull/37982 for more information. - // Don't look at size for dirs, its not a good measure of change - if oldStat.Mtim() != newStat.Mtim() || + if !sameFsTime(oldStat.Mtim(), newStat.Mtim()) || oldStat.Mode() != newStat.Mode() || oldStat.Size() != newStat.Size() && !oldStat.Mode().IsDir() { return true diff --git a/vendor/github.com/docker/docker/pkg/archive/copy.go b/vendor/github.com/docker/docker/pkg/archive/copy.go index d0f13ca79b..57fddac078 100644 --- a/vendor/github.com/docker/docker/pkg/archive/copy.go +++ b/vendor/github.com/docker/docker/pkg/archive/copy.go @@ -336,6 +336,14 @@ func RebaseArchiveEntries(srcContent io.Reader, oldBase, newBase string) io.Read return } + // srcContent tar stream, as served by TarWithOptions(), is + // definitely in PAX format, but tar.Next() mistakenly guesses it + // as USTAR, which creates a problem: if the newBase is >100 + // characters long, WriteHeader() returns an error like + // "archive/tar: cannot encode header: Format specifies USTAR; and USTAR cannot encode Name=...". + // + // To fix, set the format to PAX here. See docker/for-linux issue #484. + hdr.Format = tar.FormatPAX hdr.Name = strings.Replace(hdr.Name, oldBase, newBase, 1) if hdr.Typeflag == tar.TypeLink { hdr.Linkname = strings.Replace(hdr.Linkname, oldBase, newBase, 1) diff --git a/vendor/github.com/docker/docker/pkg/archive/diff.go b/vendor/github.com/docker/docker/pkg/archive/diff.go index d0cff98ffc..146e21fe18 100644 --- a/vendor/github.com/docker/docker/pkg/archive/diff.go +++ b/vendor/github.com/docker/docker/pkg/archive/diff.go @@ -33,7 +33,7 @@ func UnpackLayer(dest string, layer io.Reader, options *TarOptions) (size int64, if options.ExcludePatterns == nil { options.ExcludePatterns = []string{} } - idMappings := idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps) + idMapping := idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps) aufsTempdir := "" aufsHardlinks := make(map[string]*tar.Header) @@ -192,7 +192,7 @@ func UnpackLayer(dest string, layer io.Reader, options *TarOptions) (size int64, srcData = tmpFile } - if err := remapIDs(idMappings, srcHdr); err != nil { + if err := remapIDs(idMapping, srcHdr); err != nil { return 0, err } @@ -240,17 +240,21 @@ func applyLayerHandler(dest string, layer io.Reader, options *TarOptions, decomp dest = filepath.Clean(dest) // We need to be able to set any perms - oldmask, err := system.Umask(0) - if err != nil { - return 0, err + if runtime.GOOS != "windows" { + oldmask, err := system.Umask(0) + if err != nil { + return 0, err + } + defer system.Umask(oldmask) } - defer system.Umask(oldmask) // ignore err, ErrNotSupportedPlatform if decompress { - layer, err = DecompressStream(layer) + decompLayer, err := DecompressStream(layer) if err != nil { return 0, err } + defer decompLayer.Close() + layer = decompLayer } return UnpackLayer(dest, layer, options) } diff --git a/vendor/github.com/docker/docker/pkg/chrootarchive/archive.go b/vendor/github.com/docker/docker/pkg/chrootarchive/archive.go index 47c9a2b94c..2d9d662830 100644 --- a/vendor/github.com/docker/docker/pkg/chrootarchive/archive.go +++ b/vendor/github.com/docker/docker/pkg/chrootarchive/archive.go @@ -12,13 +12,13 @@ import ( ) // NewArchiver returns a new Archiver which uses chrootarchive.Untar -func NewArchiver(idMappings *idtools.IDMappings) *archive.Archiver { - if idMappings == nil { - idMappings = &idtools.IDMappings{} +func NewArchiver(idMapping *idtools.IdentityMapping) *archive.Archiver { + if idMapping == nil { + idMapping = &idtools.IdentityMapping{} } return &archive.Archiver{ - Untar: Untar, - IDMappingsVar: idMappings, + Untar: Untar, + IDMapping: idMapping, } } @@ -49,8 +49,8 @@ func untarHandler(tarArchive io.Reader, dest string, options *archive.TarOptions options.ExcludePatterns = []string{} } - idMappings := idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps) - rootIDs := idMappings.RootPair() + idMapping := idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps) + rootIDs := idMapping.RootPair() dest = filepath.Clean(dest) if _, err := os.Stat(dest); os.IsNotExist(err) { diff --git a/vendor/github.com/docker/docker/pkg/containerfs/archiver.go b/vendor/github.com/docker/docker/pkg/containerfs/archiver.go index 1fb7ff7bdc..fed0a07d7b 100644 --- a/vendor/github.com/docker/docker/pkg/containerfs/archiver.go +++ b/vendor/github.com/docker/docker/pkg/containerfs/archiver.go @@ -22,11 +22,11 @@ type UntarFunc func(io.Reader, string, *archive.TarOptions) error // Archiver provides a similar implementation of the archive.Archiver package with the rootfs abstraction type Archiver struct { - SrcDriver Driver - DstDriver Driver - Tar TarFunc - Untar UntarFunc - IDMappingsVar *idtools.IDMappings + SrcDriver Driver + DstDriver Driver + Tar TarFunc + Untar UntarFunc + IDMapping *idtools.IdentityMapping } // TarUntar is a convenience function which calls Tar and Untar, with the output of one piped into the other. @@ -39,8 +39,8 @@ func (archiver *Archiver) TarUntar(src, dst string) error { } defer tarArchive.Close() options := &archive.TarOptions{ - UIDMaps: archiver.IDMappingsVar.UIDs(), - GIDMaps: archiver.IDMappingsVar.GIDs(), + UIDMaps: archiver.IDMapping.UIDs(), + GIDMaps: archiver.IDMapping.GIDs(), } return archiver.Untar(tarArchive, dst, options) } @@ -53,8 +53,8 @@ func (archiver *Archiver) UntarPath(src, dst string) error { } defer tarArchive.Close() options := &archive.TarOptions{ - UIDMaps: archiver.IDMappingsVar.UIDs(), - GIDMaps: archiver.IDMappingsVar.GIDs(), + UIDMaps: archiver.IDMapping.UIDs(), + GIDMaps: archiver.IDMapping.GIDs(), } return archiver.Untar(tarArchive, dst, options) } @@ -75,9 +75,11 @@ func (archiver *Archiver) CopyWithTar(src, dst string) error { // if this archiver is set up with ID mapping we need to create // the new destination directory with the remapped root UID/GID pair // as owner - rootIDs := archiver.IDMappingsVar.RootPair() + + identity := idtools.Identity{UID: archiver.IDMapping.RootPair().UID, GID: archiver.IDMapping.RootPair().GID} + // Create dst, copy src's content into it - if err := idtools.MkdirAllAndChownNew(dst, 0755, rootIDs); err != nil { + if err := idtools.MkdirAllAndChownNew(dst, 0755, identity); err != nil { return err } logrus.Debugf("Calling TarUntar(%s, %s)", src, dst) @@ -150,7 +152,7 @@ func (archiver *Archiver) CopyFileWithTar(src, dst string) (err error) { hdr.Mode = int64(os.FileMode(hdr.Mode)) } - if err := remapIDs(archiver.IDMappingsVar, hdr); err != nil { + if err := remapIDs(archiver.IDMapping, hdr); err != nil { return err } @@ -178,13 +180,13 @@ func (archiver *Archiver) CopyFileWithTar(src, dst string) (err error) { return err } -// IDMappings returns the IDMappings of the archiver. -func (archiver *Archiver) IDMappings() *idtools.IDMappings { - return archiver.IDMappingsVar +// IdentityMapping returns the IdentityMapping of the archiver. +func (archiver *Archiver) IdentityMapping() *idtools.IdentityMapping { + return archiver.IDMapping } -func remapIDs(idMappings *idtools.IDMappings, hdr *tar.Header) error { - ids, err := idMappings.ToHost(idtools.IDPair{UID: hdr.Uid, GID: hdr.Gid}) +func remapIDs(idMapping *idtools.IdentityMapping, hdr *tar.Header) error { + ids, err := idMapping.ToHost(idtools.Identity{UID: hdr.Uid, GID: hdr.Gid}) hdr.Uid, hdr.Gid = ids.UID, ids.GID return err } diff --git a/vendor/github.com/docker/docker/pkg/directory/directory_unix.go b/vendor/github.com/docker/docker/pkg/directory/directory_unix.go index 60e6dfd7ea..f56dd7a8f9 100644 --- a/vendor/github.com/docker/docker/pkg/directory/directory_unix.go +++ b/vendor/github.com/docker/docker/pkg/directory/directory_unix.go @@ -1,4 +1,4 @@ -// +build linux freebsd +// +build linux freebsd darwin package directory // import "github.com/docker/docker/pkg/directory" diff --git a/vendor/github.com/docker/docker/pkg/filenotify/poller.go b/vendor/github.com/docker/docker/pkg/filenotify/poller.go index 22f1897034..6161d4ab73 100644 --- a/vendor/github.com/docker/docker/pkg/filenotify/poller.go +++ b/vendor/github.com/docker/docker/pkg/filenotify/poller.go @@ -54,6 +54,7 @@ func (w *filePoller) Add(name string) error { } fi, err := os.Stat(name) if err != nil { + f.Close() return err } @@ -61,6 +62,7 @@ func (w *filePoller) Add(name string) error { w.watches = make(map[string]chan struct{}) } if _, exists := w.watches[name]; exists { + f.Close() return fmt.Errorf("watch exists") } chClose := make(chan struct{}) @@ -113,11 +115,10 @@ func (w *filePoller) Close() error { return nil } - w.closed = true for name := range w.watches { w.remove(name) - delete(w.watches, name) } + w.closed = true return nil } @@ -146,12 +147,11 @@ func (w *filePoller) sendErr(e error, chClose <-chan struct{}) error { func (w *filePoller) watch(f *os.File, lastFi os.FileInfo, chClose chan struct{}) { defer f.Close() for { - time.Sleep(watchWaitTime) select { + case <-time.After(watchWaitTime): case <-chClose: logrus.Debugf("watch for %s closed", f.Name()) return - default: } fi, err := os.Stat(f.Name()) diff --git a/vendor/github.com/docker/docker/pkg/fileutils/fileutils.go b/vendor/github.com/docker/docker/pkg/fileutils/fileutils.go index 28cad499aa..34f1c726fb 100644 --- a/vendor/github.com/docker/docker/pkg/fileutils/fileutils.go +++ b/vendor/github.com/docker/docker/pkg/fileutils/fileutils.go @@ -106,7 +106,7 @@ func (pm *PatternMatcher) Patterns() []*Pattern { return pm.patterns } -// Pattern defines a single regexp used used to filter file paths. +// Pattern defines a single regexp used to filter file paths. type Pattern struct { cleanedPattern string dirs []string diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir_linux.go b/vendor/github.com/docker/docker/pkg/homedir/homedir_linux.go new file mode 100644 index 0000000000..47ecd0c092 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/homedir/homedir_linux.go @@ -0,0 +1,109 @@ +package homedir // import "github.com/docker/docker/pkg/homedir" + +import ( + "errors" + "os" + "path/filepath" + "strings" + + "github.com/docker/docker/pkg/idtools" +) + +// GetStatic returns the home directory for the current user without calling +// os/user.Current(). This is useful for static-linked binary on glibc-based +// system, because a call to os/user.Current() in a static binary leads to +// segfault due to a glibc issue that won't be fixed in a short term. +// (#29344, golang/go#13470, https://sourceware.org/bugzilla/show_bug.cgi?id=19341) +func GetStatic() (string, error) { + uid := os.Getuid() + usr, err := idtools.LookupUID(uid) + if err != nil { + return "", err + } + return usr.Home, nil +} + +// GetRuntimeDir returns XDG_RUNTIME_DIR. +// XDG_RUNTIME_DIR is typically configured via pam_systemd. +// GetRuntimeDir returns non-nil error if XDG_RUNTIME_DIR is not set. +// +// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html +func GetRuntimeDir() (string, error) { + if xdgRuntimeDir := os.Getenv("XDG_RUNTIME_DIR"); xdgRuntimeDir != "" { + return xdgRuntimeDir, nil + } + return "", errors.New("could not get XDG_RUNTIME_DIR") +} + +// StickRuntimeDirContents sets the sticky bit on files that are under +// XDG_RUNTIME_DIR, so that the files won't be periodically removed by the system. +// +// StickyRuntimeDir returns slice of sticked files. +// StickyRuntimeDir returns nil error if XDG_RUNTIME_DIR is not set. +// +// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html +func StickRuntimeDirContents(files []string) ([]string, error) { + runtimeDir, err := GetRuntimeDir() + if err != nil { + // ignore error if runtimeDir is empty + return nil, nil + } + runtimeDir, err = filepath.Abs(runtimeDir) + if err != nil { + return nil, err + } + var sticked []string + for _, f := range files { + f, err = filepath.Abs(f) + if err != nil { + return sticked, err + } + if strings.HasPrefix(f, runtimeDir+"/") { + if err = stick(f); err != nil { + return sticked, err + } + sticked = append(sticked, f) + } + } + return sticked, nil +} + +func stick(f string) error { + st, err := os.Stat(f) + if err != nil { + return err + } + m := st.Mode() + m |= os.ModeSticky + return os.Chmod(f, m) +} + +// GetDataHome returns XDG_DATA_HOME. +// GetDataHome returns $HOME/.local/share and nil error if XDG_DATA_HOME is not set. +// +// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html +func GetDataHome() (string, error) { + if xdgDataHome := os.Getenv("XDG_DATA_HOME"); xdgDataHome != "" { + return xdgDataHome, nil + } + home := os.Getenv("HOME") + if home == "" { + return "", errors.New("could not get either XDG_DATA_HOME or HOME") + } + return filepath.Join(home, ".local", "share"), nil +} + +// GetConfigHome returns XDG_CONFIG_HOME. +// GetConfigHome returns $HOME/.config and nil error if XDG_CONFIG_HOME is not set. +// +// See also https://standards.freedesktop.org/basedir-spec/latest/ar01s03.html +func GetConfigHome() (string, error) { + if xdgConfigHome := os.Getenv("XDG_CONFIG_HOME"); xdgConfigHome != "" { + return xdgConfigHome, nil + } + home := os.Getenv("HOME") + if home == "" { + return "", errors.New("could not get either XDG_CONFIG_HOME or HOME") + } + return filepath.Join(home, ".config"), nil +} diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir_others.go b/vendor/github.com/docker/docker/pkg/homedir/homedir_others.go new file mode 100644 index 0000000000..f0a363dedf --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/homedir/homedir_others.go @@ -0,0 +1,33 @@ +// +build !linux + +package homedir // import "github.com/docker/docker/pkg/homedir" + +import ( + "errors" +) + +// GetStatic is not needed for non-linux systems. +// (Precisely, it is needed only for glibc-based linux systems.) +func GetStatic() (string, error) { + return "", errors.New("homedir.GetStatic() is not supported on this system") +} + +// GetRuntimeDir is unsupported on non-linux system. +func GetRuntimeDir() (string, error) { + return "", errors.New("homedir.GetRuntimeDir() is not supported on this system") +} + +// StickRuntimeDirContents is unsupported on non-linux system. +func StickRuntimeDirContents(files []string) ([]string, error) { + return nil, errors.New("homedir.StickRuntimeDirContents() is not supported on this system") +} + +// GetDataHome is unsupported on non-linux system. +func GetDataHome() (string, error) { + return "", errors.New("homedir.GetDataHome() is not supported on this system") +} + +// GetConfigHome is unsupported on non-linux system. +func GetConfigHome() (string, error) { + return "", errors.New("homedir.GetConfigHome() is not supported on this system") +} diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir_unix.go b/vendor/github.com/docker/docker/pkg/homedir/homedir_unix.go new file mode 100644 index 0000000000..d85e124488 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/homedir/homedir_unix.go @@ -0,0 +1,34 @@ +// +build !windows + +package homedir // import "github.com/docker/docker/pkg/homedir" + +import ( + "os" + + "github.com/opencontainers/runc/libcontainer/user" +) + +// Key returns the env var name for the user's home dir based on +// the platform being run on +func Key() string { + return "HOME" +} + +// Get returns the home directory of the current user with the help of +// environment variables depending on the target operating system. +// Returned path should be used with "path/filepath" to form new paths. +func Get() string { + home := os.Getenv(Key()) + if home == "" { + if u, err := user.CurrentUser(); err == nil { + return u.Home + } + } + return home +} + +// GetShortcutString returns the string that is shortcut to user's home directory +// in the native shell of the platform running on. +func GetShortcutString() string { + return "~" +} diff --git a/vendor/github.com/docker/docker/pkg/homedir/homedir_windows.go b/vendor/github.com/docker/docker/pkg/homedir/homedir_windows.go new file mode 100644 index 0000000000..2f81813b28 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/homedir/homedir_windows.go @@ -0,0 +1,24 @@ +package homedir // import "github.com/docker/docker/pkg/homedir" + +import ( + "os" +) + +// Key returns the env var name for the user's home dir based on +// the platform being run on +func Key() string { + return "USERPROFILE" +} + +// Get returns the home directory of the current user with the help of +// environment variables depending on the target operating system. +// Returned path should be used with "path/filepath" to form new paths. +func Get() string { + return os.Getenv(Key()) +} + +// GetShortcutString returns the string that is shortcut to user's home directory +// in the native shell of the platform running on. +func GetShortcutString() string { + return "%USERPROFILE%" // be careful while using in format functions +} diff --git a/vendor/github.com/docker/docker/pkg/idtools/idtools.go b/vendor/github.com/docker/docker/pkg/idtools/idtools.go index d1f173a311..230422eac8 100644 --- a/vendor/github.com/docker/docker/pkg/idtools/idtools.go +++ b/vendor/github.com/docker/docker/pkg/idtools/idtools.go @@ -37,23 +37,23 @@ const ( // MkdirAllAndChown creates a directory (include any along the path) and then modifies // ownership to the requested uid/gid. If the directory already exists, this // function will still change ownership to the requested uid/gid pair. -func MkdirAllAndChown(path string, mode os.FileMode, owner IDPair) error { - return mkdirAs(path, mode, owner.UID, owner.GID, true, true) +func MkdirAllAndChown(path string, mode os.FileMode, owner Identity) error { + return mkdirAs(path, mode, owner, true, true) } // MkdirAndChown creates a directory and then modifies ownership to the requested uid/gid. // If the directory already exists, this function still changes ownership. // Note that unlike os.Mkdir(), this function does not return IsExist error // in case path already exists. -func MkdirAndChown(path string, mode os.FileMode, owner IDPair) error { - return mkdirAs(path, mode, owner.UID, owner.GID, false, true) +func MkdirAndChown(path string, mode os.FileMode, owner Identity) error { + return mkdirAs(path, mode, owner, false, true) } // MkdirAllAndChownNew creates a directory (include any along the path) and then modifies // ownership ONLY of newly created directories to the requested uid/gid. If the // directories along the path exist, no change of ownership will be performed -func MkdirAllAndChownNew(path string, mode os.FileMode, owner IDPair) error { - return mkdirAs(path, mode, owner.UID, owner.GID, true, false) +func MkdirAllAndChownNew(path string, mode os.FileMode, owner Identity) error { + return mkdirAs(path, mode, owner, true, false) } // GetRootUIDGID retrieves the remapped root uid/gid pair from the set of maps. @@ -102,22 +102,23 @@ func toHost(contID int, idMap []IDMap) (int, error) { return -1, fmt.Errorf("Container ID %d cannot be mapped to a host ID", contID) } -// IDPair is a UID and GID pair -type IDPair struct { +// Identity is either a UID and GID pair or a SID (but not both) +type Identity struct { UID int GID int + SID string } -// IDMappings contains a mappings of UIDs and GIDs -type IDMappings struct { +// IdentityMapping contains a mappings of UIDs and GIDs +type IdentityMapping struct { uids []IDMap gids []IDMap } -// NewIDMappings takes a requested user and group name and +// NewIdentityMapping takes a requested user and group name and // using the data from /etc/sub{uid,gid} ranges, creates the // proper uid and gid remapping ranges for that user/group pair -func NewIDMappings(username, groupname string) (*IDMappings, error) { +func NewIdentityMapping(username, groupname string) (*IdentityMapping, error) { subuidRanges, err := parseSubuid(username) if err != nil { return nil, err @@ -133,7 +134,7 @@ func NewIDMappings(username, groupname string) (*IDMappings, error) { return nil, fmt.Errorf("No subgid ranges found for group %q", groupname) } - return &IDMappings{ + return &IdentityMapping{ uids: createIDMap(subuidRanges), gids: createIDMap(subgidRanges), }, nil @@ -141,21 +142,21 @@ func NewIDMappings(username, groupname string) (*IDMappings, error) { // NewIDMappingsFromMaps creates a new mapping from two slices // Deprecated: this is a temporary shim while transitioning to IDMapping -func NewIDMappingsFromMaps(uids []IDMap, gids []IDMap) *IDMappings { - return &IDMappings{uids: uids, gids: gids} +func NewIDMappingsFromMaps(uids []IDMap, gids []IDMap) *IdentityMapping { + return &IdentityMapping{uids: uids, gids: gids} } // RootPair returns a uid and gid pair for the root user. The error is ignored // because a root user always exists, and the defaults are correct when the uid // and gid maps are empty. -func (i *IDMappings) RootPair() IDPair { +func (i *IdentityMapping) RootPair() Identity { uid, gid, _ := GetRootUIDGID(i.uids, i.gids) - return IDPair{UID: uid, GID: gid} + return Identity{UID: uid, GID: gid} } // ToHost returns the host UID and GID for the container uid, gid. // Remapping is only performed if the ids aren't already the remapped root ids -func (i *IDMappings) ToHost(pair IDPair) (IDPair, error) { +func (i *IdentityMapping) ToHost(pair Identity) (Identity, error) { var err error target := i.RootPair() @@ -173,7 +174,7 @@ func (i *IDMappings) ToHost(pair IDPair) (IDPair, error) { } // ToContainer returns the container UID and GID for the host uid and gid -func (i *IDMappings) ToContainer(pair IDPair) (int, int, error) { +func (i *IdentityMapping) ToContainer(pair Identity) (int, int, error) { uid, err := toContainer(pair.UID, i.uids) if err != nil { return -1, -1, err @@ -183,19 +184,19 @@ func (i *IDMappings) ToContainer(pair IDPair) (int, int, error) { } // Empty returns true if there are no id mappings -func (i *IDMappings) Empty() bool { +func (i *IdentityMapping) Empty() bool { return len(i.uids) == 0 && len(i.gids) == 0 } // UIDs return the UID mapping // TODO: remove this once everything has been refactored to use pairs -func (i *IDMappings) UIDs() []IDMap { +func (i *IdentityMapping) UIDs() []IDMap { return i.uids } // GIDs return the UID mapping // TODO: remove this once everything has been refactored to use pairs -func (i *IDMappings) GIDs() []IDMap { +func (i *IdentityMapping) GIDs() []IDMap { return i.gids } diff --git a/vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go b/vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go index 1d87ea3bcb..fb239743a0 100644 --- a/vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go +++ b/vendor/github.com/docker/docker/pkg/idtools/idtools_unix.go @@ -21,11 +21,12 @@ var ( getentCmd string ) -func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chownExisting bool) error { +func mkdirAs(path string, mode os.FileMode, owner Identity, mkAll, chownExisting bool) error { // make an array containing the original path asked for, plus (for mkAll == true) // all path components leading up to the complete path that don't exist before we MkdirAll // so that we can chown all of them properly at the end. If chownExisting is false, we won't // chown the full directory path if it exists + var paths []string stat, err := system.Stat(path) @@ -38,7 +39,7 @@ func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chown } // short-circuit--we were called with an existing directory and chown was requested - return lazyChown(path, ownerUID, ownerGID, stat) + return lazyChown(path, owner.UID, owner.GID, stat) } if os.IsNotExist(err) { @@ -69,7 +70,7 @@ func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chown // even if it existed, we will chown the requested path + any subpaths that // didn't exist when we called MkdirAll for _, pathComponent := range paths { - if err := lazyChown(pathComponent, ownerUID, ownerGID, nil); err != nil { + if err := lazyChown(pathComponent, owner.UID, owner.GID, nil); err != nil { return err } } @@ -78,7 +79,7 @@ func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chown // CanAccess takes a valid (existing) directory and a uid, gid pair and determines // if that uid, gid pair has access (execute bit) to the directory -func CanAccess(path string, pair IDPair) bool { +func CanAccess(path string, pair Identity) bool { statInfo, err := system.Stat(path) if err != nil { return false diff --git a/vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go b/vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go index d72cc28929..4ae38a1b17 100644 --- a/vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go +++ b/vendor/github.com/docker/docker/pkg/idtools/idtools_windows.go @@ -6,9 +6,11 @@ import ( "github.com/docker/docker/pkg/system" ) -// Platforms such as Windows do not support the UID/GID concept. So make this -// just a wrapper around system.MkdirAll. -func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chownExisting bool) error { +// This is currently a wrapper around MkdirAll, however, since currently +// permissions aren't set through this path, the identity isn't utilized. +// Ownership is handled elsewhere, but in the future could be support here +// too. +func mkdirAs(path string, mode os.FileMode, owner Identity, mkAll, chownExisting bool) error { if err := system.MkdirAll(path, mode, ""); err != nil { return err } @@ -18,6 +20,6 @@ func mkdirAs(path string, mode os.FileMode, ownerUID, ownerGID int, mkAll, chown // CanAccess takes a valid (existing) directory and a uid, gid pair and determines // if that uid, gid pair has access (execute bit) to the directory // Windows does not require/support this function, so always return true -func CanAccess(path string, pair IDPair) bool { +func CanAccess(path string, identity Identity) bool { return true } diff --git a/vendor/github.com/docker/docker/pkg/jsonmessage/jsonmessage.go b/vendor/github.com/docker/docker/pkg/jsonmessage/jsonmessage.go index dd95f36704..a68b566cea 100644 --- a/vendor/github.com/docker/docker/pkg/jsonmessage/jsonmessage.go +++ b/vendor/github.com/docker/docker/pkg/jsonmessage/jsonmessage.go @@ -4,13 +4,12 @@ import ( "encoding/json" "fmt" "io" - "os" "strings" "time" - "github.com/Nvveen/Gotty" "github.com/docker/docker/pkg/term" "github.com/docker/go-units" + "github.com/morikuni/aec" ) // RFC3339NanoFixed is time.RFC3339Nano with nanoseconds padded using zeros to @@ -151,60 +150,23 @@ type JSONMessage struct { Aux *json.RawMessage `json:"aux,omitempty"` } -/* Satisfied by gotty.TermInfo as well as noTermInfo from below */ -type termInfo interface { - Parse(attr string, params ...interface{}) (string, error) +func clearLine(out io.Writer) { + eraseMode := aec.EraseModes.All + cl := aec.EraseLine(eraseMode) + fmt.Fprint(out, cl) } -type noTermInfo struct{} // canary used when no terminfo. - -func (ti *noTermInfo) Parse(attr string, params ...interface{}) (string, error) { - return "", fmt.Errorf("noTermInfo") -} - -func clearLine(out io.Writer, ti termInfo) { - // el2 (clear whole line) is not exposed by terminfo. - - // First clear line from beginning to cursor - if attr, err := ti.Parse("el1"); err == nil { - fmt.Fprintf(out, "%s", attr) - } else { - fmt.Fprintf(out, "\x1b[1K") - } - // Then clear line from cursor to end - if attr, err := ti.Parse("el"); err == nil { - fmt.Fprintf(out, "%s", attr) - } else { - fmt.Fprintf(out, "\x1b[K") - } -} - -func cursorUp(out io.Writer, ti termInfo, l int) { - if l == 0 { // Should never be the case, but be tolerant - return - } - if attr, err := ti.Parse("cuu", l); err == nil { - fmt.Fprintf(out, "%s", attr) - } else { - fmt.Fprintf(out, "\x1b[%dA", l) - } +func cursorUp(out io.Writer, l uint) { + fmt.Fprint(out, aec.Up(l)) } -func cursorDown(out io.Writer, ti termInfo, l int) { - if l == 0 { // Should never be the case, but be tolerant - return - } - if attr, err := ti.Parse("cud", l); err == nil { - fmt.Fprintf(out, "%s", attr) - } else { - fmt.Fprintf(out, "\x1b[%dB", l) - } +func cursorDown(out io.Writer, l uint) { + fmt.Fprint(out, aec.Down(l)) } -// Display displays the JSONMessage to `out`. `termInfo` is non-nil if `out` -// is a terminal. If this is the case, it will erase the entire current line -// when displaying the progressbar. -func (jm *JSONMessage) Display(out io.Writer, termInfo termInfo) error { +// Display displays the JSONMessage to `out`. If `isTerminal` is true, it will erase the +// entire current line when displaying the progressbar. +func (jm *JSONMessage) Display(out io.Writer, isTerminal bool) error { if jm.Error != nil { if jm.Error.Code == 401 { return fmt.Errorf("authentication is required") @@ -212,8 +174,8 @@ func (jm *JSONMessage) Display(out io.Writer, termInfo termInfo) error { return jm.Error } var endl string - if termInfo != nil && jm.Stream == "" && jm.Progress != nil { - clearLine(out, termInfo) + if isTerminal && jm.Stream == "" && jm.Progress != nil { + clearLine(out) endl = "\r" fmt.Fprintf(out, endl) } else if jm.Progress != nil && jm.Progress.String() != "" { //disable progressbar in non-terminal @@ -230,7 +192,7 @@ func (jm *JSONMessage) Display(out io.Writer, termInfo termInfo) error { if jm.From != "" { fmt.Fprintf(out, "(from %s) ", jm.From) } - if jm.Progress != nil && termInfo != nil { + if jm.Progress != nil && isTerminal { fmt.Fprintf(out, "%s %s%s", jm.Status, jm.Progress.String(), endl) } else if jm.ProgressMessage != "" { //deprecated fmt.Fprintf(out, "%s %s%s", jm.Status, jm.ProgressMessage, endl) @@ -248,25 +210,11 @@ func (jm *JSONMessage) Display(out io.Writer, termInfo termInfo) error { func DisplayJSONMessagesStream(in io.Reader, out io.Writer, terminalFd uintptr, isTerminal bool, auxCallback func(JSONMessage)) error { var ( dec = json.NewDecoder(in) - ids = make(map[string]int) + ids = make(map[string]uint) ) - var termInfo termInfo - - if isTerminal { - term := os.Getenv("TERM") - if term == "" { - term = "vt102" - } - - var err error - if termInfo, err = gotty.OpenTermInfo(term); err != nil { - termInfo = &noTermInfo{} - } - } - for { - diff := 0 + var diff uint var jm JSONMessage if err := dec.Decode(&jm); err != nil { if err == io.EOF { @@ -294,15 +242,15 @@ func DisplayJSONMessagesStream(in io.Reader, out io.Writer, terminalFd uintptr, // when we output something that's not // accounted for in the map, such as a line // with no ID. - line = len(ids) + line = uint(len(ids)) ids[jm.ID] = line - if termInfo != nil { + if isTerminal { fmt.Fprintf(out, "\n") } } - diff = len(ids) - line - if termInfo != nil { - cursorUp(out, termInfo, diff) + diff = uint(len(ids)) - line + if isTerminal { + cursorUp(out, diff) } } else { // When outputting something that isn't progress @@ -310,11 +258,11 @@ func DisplayJSONMessagesStream(in io.Reader, out io.Writer, terminalFd uintptr, // don't want progress entries from some previous // operation to be updated (for example, pull -a // with multiple tags). - ids = make(map[string]int) + ids = make(map[string]uint) } - err := jm.Display(out, termInfo) - if jm.ID != "" && termInfo != nil { - cursorDown(out, termInfo, diff) + err := jm.Display(out, isTerminal) + if jm.ID != "" && isTerminal { + cursorDown(out, diff) } if err != nil { return err diff --git a/vendor/github.com/docker/docker/pkg/mount/flags.go b/vendor/github.com/docker/docker/pkg/mount/flags.go index 272363b685..ffd473311d 100644 --- a/vendor/github.com/docker/docker/pkg/mount/flags.go +++ b/vendor/github.com/docker/docker/pkg/mount/flags.go @@ -135,15 +135,3 @@ func parseOptions(options string) (int, string) { } return flag, strings.Join(data, ",") } - -// ParseTmpfsOptions parse fstab type mount options into flags and data -func ParseTmpfsOptions(options string) (int, string, error) { - flags, data := parseOptions(options) - for _, o := range strings.Split(data, ",") { - opt := strings.SplitN(o, "=", 2) - if !validFlags[opt[0]] { - return 0, "", fmt.Errorf("Invalid tmpfs option %q", opt) - } - } - return flags, data, nil -} diff --git a/vendor/github.com/docker/docker/pkg/mount/mount.go b/vendor/github.com/docker/docker/pkg/mount/mount.go index 874aff6545..4afd63c427 100644 --- a/vendor/github.com/docker/docker/pkg/mount/mount.go +++ b/vendor/github.com/docker/docker/pkg/mount/mount.go @@ -2,12 +2,46 @@ package mount // import "github.com/docker/docker/pkg/mount" import ( "sort" + "strconv" "strings" - "syscall" "github.com/sirupsen/logrus" ) +// mountError records an error from mount or unmount operation +type mountError struct { + op string + source, target string + flags uintptr + data string + err error +} + +func (e *mountError) Error() string { + out := e.op + " " + + if e.source != "" { + out += e.source + ":" + e.target + } else { + out += e.target + } + + if e.flags != uintptr(0) { + out += ", flags: 0x" + strconv.FormatUint(uint64(e.flags), 16) + } + if e.data != "" { + out += ", data: " + e.data + } + + out += ": " + e.err.Error() + return out +} + +// Cause returns the underlying cause of the error +func (e *mountError) Cause() error { + return e.err +} + // FilterFunc is a type defining a callback function // to filter out unwanted entries. It takes a pointer // to an Info struct (not fully populated, currently @@ -89,12 +123,7 @@ func ForceMount(device, target, mType, options string) error { // Unmount lazily unmounts a filesystem on supported platforms, otherwise // does a normal unmount. func Unmount(target string) error { - err := unmount(target, mntDetach) - if err == syscall.EINVAL { - // ignore "not mounted" error - err = nil - } - return err + return unmount(target, mntDetach) } // RecursiveUnmount unmounts the target and all mounts underneath, starting with @@ -114,25 +143,14 @@ func RecursiveUnmount(target string) error { logrus.Debugf("Trying to unmount %s", m.Mountpoint) err = unmount(m.Mountpoint, mntDetach) if err != nil { - // If the error is EINVAL either this whole package is wrong (invalid flags passed to unmount(2)) or this is - // not a mountpoint (which is ok in this case). - // Meanwhile calling `Mounted()` is very expensive. - // - // We've purposefully used `syscall.EINVAL` here instead of `unix.EINVAL` to avoid platform branching - // Since `EINVAL` is defined for both Windows and Linux in the `syscall` package (and other platforms), - // this is nicer than defining a custom value that we can refer to in each platform file. - if err == syscall.EINVAL { - continue - } - if i == len(mounts)-1 { + if i == len(mounts)-1 { // last mount if mounted, e := Mounted(m.Mountpoint); e != nil || mounted { return err } - continue + } else { + // This is some submount, we can ignore this error for now, the final unmount will fail if this is a real problem + logrus.WithError(err).Warnf("Failed to unmount submount %s", m.Mountpoint) } - // This is some submount, we can ignore this error for now, the final unmount will fail if this is a real problem - logrus.WithError(err).Warnf("Failed to unmount submount %s", m.Mountpoint) - continue } logrus.Debugf("Unmounted %s", m.Mountpoint) diff --git a/vendor/github.com/docker/docker/pkg/mount/mounter_freebsd.go b/vendor/github.com/docker/docker/pkg/mount/mounter_freebsd.go index b6ab83a230..09ad360608 100644 --- a/vendor/github.com/docker/docker/pkg/mount/mounter_freebsd.go +++ b/vendor/github.com/docker/docker/pkg/mount/mounter_freebsd.go @@ -11,11 +11,9 @@ package mount // import "github.com/docker/docker/pkg/mount" import "C" import ( - "fmt" "strings" + "syscall" "unsafe" - - "golang.org/x/sys/unix" ) func allocateIOVecs(options []string) []C.struct_iovec { @@ -49,12 +47,13 @@ func mount(device, target, mType string, flag uintptr, data string) error { } if errno := C.nmount(&rawOptions[0], C.uint(len(options)), C.int(flag)); errno != 0 { - reason := C.GoString(C.strerror(*C.__error())) - return fmt.Errorf("Failed to call nmount: %s", reason) + return &mountError{ + op: "mount", + source: device, + target: target, + flags: flag, + err: syscall.Errno(errno), + } } return nil } - -func unmount(target string, flag int) error { - return unix.Unmount(target, flag) -} diff --git a/vendor/github.com/docker/docker/pkg/mount/mounter_linux.go b/vendor/github.com/docker/docker/pkg/mount/mounter_linux.go index 631daf10a5..a0a1ad2364 100644 --- a/vendor/github.com/docker/docker/pkg/mount/mounter_linux.go +++ b/vendor/github.com/docker/docker/pkg/mount/mounter_linux.go @@ -33,25 +33,41 @@ func mount(device, target, mType string, flags uintptr, data string) error { // Initial call applying all non-propagation flags for mount // or remount with changed data if err := unix.Mount(device, target, mType, oflags, data); err != nil { - return err + return &mountError{ + op: "mount", + source: device, + target: target, + flags: oflags, + data: data, + err: err, + } } } if flags&ptypes != 0 { // Change the propagation type. if err := unix.Mount("", target, "", flags&pflags, ""); err != nil { - return err + return &mountError{ + op: "remount", + target: target, + flags: flags & pflags, + err: err, + } } } if oflags&broflags == broflags { // Remount the bind to apply read only. - return unix.Mount("", target, "", oflags|unix.MS_REMOUNT, "") + if err := unix.Mount("", target, "", oflags|unix.MS_REMOUNT, ""); err != nil { + return &mountError{ + op: "remount-ro", + target: target, + flags: oflags | unix.MS_REMOUNT, + err: err, + } + + } } return nil } - -func unmount(target string, flag int) error { - return unix.Unmount(target, flag) -} diff --git a/vendor/github.com/docker/docker/pkg/mount/mounter_unsupported.go b/vendor/github.com/docker/docker/pkg/mount/mounter_unsupported.go index 1428dffa52..c3e5aec274 100644 --- a/vendor/github.com/docker/docker/pkg/mount/mounter_unsupported.go +++ b/vendor/github.com/docker/docker/pkg/mount/mounter_unsupported.go @@ -5,7 +5,3 @@ package mount // import "github.com/docker/docker/pkg/mount" func mount(device, target, mType string, flag uintptr, data string) error { panic("Not implemented") } - -func unmount(target string, flag int) error { - panic("Not implemented") -} diff --git a/vendor/github.com/docker/docker/pkg/mount/sharedsubtree_linux.go b/vendor/github.com/docker/docker/pkg/mount/sharedsubtree_linux.go index 538f6637a0..8a100f0bc8 100644 --- a/vendor/github.com/docker/docker/pkg/mount/sharedsubtree_linux.go +++ b/vendor/github.com/docker/docker/pkg/mount/sharedsubtree_linux.go @@ -48,18 +48,22 @@ func MakeRUnbindable(mountPoint string) error { return ensureMountedAs(mountPoint, "runbindable") } -func ensureMountedAs(mountPoint, options string) error { - mounted, err := Mounted(mountPoint) +// MakeMount ensures that the file or directory given is a mount point, +// bind mounting it to itself it case it is not. +func MakeMount(mnt string) error { + mounted, err := Mounted(mnt) if err != nil { return err } - - if !mounted { - if err := Mount(mountPoint, mountPoint, "none", "bind,rw"); err != nil { - return err - } + if mounted { + return nil } - if _, err = Mounted(mountPoint); err != nil { + + return Mount(mnt, mnt, "none", "bind") +} + +func ensureMountedAs(mountPoint, options string) error { + if err := MakeMount(mountPoint); err != nil { return err } diff --git a/vendor/github.com/docker/docker/pkg/mount/unmount_unix.go b/vendor/github.com/docker/docker/pkg/mount/unmount_unix.go new file mode 100644 index 0000000000..4be4276851 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/mount/unmount_unix.go @@ -0,0 +1,22 @@ +// +build !windows + +package mount // import "github.com/docker/docker/pkg/mount" + +import "golang.org/x/sys/unix" + +func unmount(target string, flags int) error { + err := unix.Unmount(target, flags) + if err == nil || err == unix.EINVAL { + // Ignore "not mounted" error here. Note the same error + // can be returned if flags are invalid, so this code + // assumes that the flags value is always correct. + return nil + } + + return &mountError{ + op: "umount", + target: target, + flags: uintptr(flags), + err: err, + } +} diff --git a/vendor/github.com/docker/docker/pkg/mount/unmount_unsupported.go b/vendor/github.com/docker/docker/pkg/mount/unmount_unsupported.go new file mode 100644 index 0000000000..a88ad35774 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/mount/unmount_unsupported.go @@ -0,0 +1,7 @@ +// +build windows + +package mount // import "github.com/docker/docker/pkg/mount" + +func unmount(target string, flag int) error { + panic("Not implemented") +} diff --git a/vendor/github.com/docker/docker/pkg/parsers/parsers.go b/vendor/github.com/docker/docker/pkg/parsers/parsers.go new file mode 100644 index 0000000000..068e524807 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/parsers/parsers.go @@ -0,0 +1,97 @@ +// Package parsers provides helper functions to parse and validate different type +// of string. It can be hosts, unix addresses, tcp addresses, filters, kernel +// operating system versions. +package parsers // import "github.com/docker/docker/pkg/parsers" + +import ( + "fmt" + "strconv" + "strings" +) + +// ParseKeyValueOpt parses and validates the specified string as a key/value pair (key=value) +func ParseKeyValueOpt(opt string) (string, string, error) { + parts := strings.SplitN(opt, "=", 2) + if len(parts) != 2 { + return "", "", fmt.Errorf("Unable to parse key/value option: %s", opt) + } + return strings.TrimSpace(parts[0]), strings.TrimSpace(parts[1]), nil +} + +// ParseUintListMaximum parses and validates the specified string as the value +// found in some cgroup file (e.g. `cpuset.cpus`, `cpuset.mems`), which could be +// one of the formats below. Note that duplicates are actually allowed in the +// input string. It returns a `map[int]bool` with available elements from `val` +// set to `true`. Values larger than `maximum` cause an error if max is non zero, +// in order to stop the map becoming excessively large. +// Supported formats: +// 7 +// 1-6 +// 0,3-4,7,8-10 +// 0-0,0,1-7 +// 03,1-3 <- this is gonna get parsed as [1,2,3] +// 3,2,1 +// 0-2,3,1 +func ParseUintListMaximum(val string, maximum int) (map[int]bool, error) { + return parseUintList(val, maximum) +} + +// ParseUintList parses and validates the specified string as the value +// found in some cgroup file (e.g. `cpuset.cpus`, `cpuset.mems`), which could be +// one of the formats below. Note that duplicates are actually allowed in the +// input string. It returns a `map[int]bool` with available elements from `val` +// set to `true`. +// Supported formats: +// 7 +// 1-6 +// 0,3-4,7,8-10 +// 0-0,0,1-7 +// 03,1-3 <- this is gonna get parsed as [1,2,3] +// 3,2,1 +// 0-2,3,1 +func ParseUintList(val string) (map[int]bool, error) { + return parseUintList(val, 0) +} + +func parseUintList(val string, maximum int) (map[int]bool, error) { + if val == "" { + return map[int]bool{}, nil + } + + availableInts := make(map[int]bool) + split := strings.Split(val, ",") + errInvalidFormat := fmt.Errorf("invalid format: %s", val) + + for _, r := range split { + if !strings.Contains(r, "-") { + v, err := strconv.Atoi(r) + if err != nil { + return nil, errInvalidFormat + } + if maximum != 0 && v > maximum { + return nil, fmt.Errorf("value of out range, maximum is %d", maximum) + } + availableInts[v] = true + } else { + split := strings.SplitN(r, "-", 2) + min, err := strconv.Atoi(split[0]) + if err != nil { + return nil, errInvalidFormat + } + max, err := strconv.Atoi(split[1]) + if err != nil { + return nil, errInvalidFormat + } + if max < min { + return nil, errInvalidFormat + } + if maximum != 0 && max > maximum { + return nil, fmt.Errorf("value of out range, maximum is %d", maximum) + } + for i := min; i <= max; i++ { + availableInts[i] = true + } + } + } + return availableInts, nil +} diff --git a/vendor/github.com/docker/docker/pkg/plugins/plugins.go b/vendor/github.com/docker/docker/pkg/plugins/plugins.go index 6962079df9..28c06ff693 100644 --- a/vendor/github.com/docker/docker/pkg/plugins/plugins.go +++ b/vendor/github.com/docker/docker/pkg/plugins/plugins.go @@ -11,7 +11,7 @@ // The plugins need to implement an HTTP server and bind this to the UNIX socket // or the address specified in the spec files. // A handshake is send at /Plugin.Activate, and plugins are expected to return -// a Manifest with a list of of Docker subsystems which this plugin implements. +// a Manifest with a list of Docker subsystems which this plugin implements. // // In order to use a plugins, you can use the ``Get`` with the name of the // plugin and the subsystem it implements. diff --git a/vendor/github.com/docker/docker/pkg/progress/progress.go b/vendor/github.com/docker/docker/pkg/progress/progress.go index 9aea591954..32300914eb 100644 --- a/vendor/github.com/docker/docker/pkg/progress/progress.go +++ b/vendor/github.com/docker/docker/pkg/progress/progress.go @@ -39,6 +39,10 @@ type Output interface { type chanOutput chan<- Progress func (out chanOutput) WriteProgress(p Progress) error { + // FIXME: workaround for panic in #37735 + defer func() { + recover() + }() out <- p return nil } diff --git a/vendor/github.com/docker/docker/pkg/reexec/command_unsupported.go b/vendor/github.com/docker/docker/pkg/reexec/command_unsupported.go index 09fb4b2d29..e7eed24240 100644 --- a/vendor/github.com/docker/docker/pkg/reexec/command_unsupported.go +++ b/vendor/github.com/docker/docker/pkg/reexec/command_unsupported.go @@ -6,6 +6,10 @@ import ( "os/exec" ) +func Self() string { + return "" +} + // Command is unsupported on operating systems apart from Linux, Windows, and Darwin. func Command(args ...string) *exec.Cmd { return nil diff --git a/vendor/github.com/docker/docker/pkg/signal/signal_linux.go b/vendor/github.com/docker/docker/pkg/signal/signal_linux.go index caed97c963..4013bded13 100644 --- a/vendor/github.com/docker/docker/pkg/signal/signal_linux.go +++ b/vendor/github.com/docker/docker/pkg/signal/signal_linux.go @@ -1,3 +1,5 @@ +// +build !mips,!mipsle,!mips64,!mips64le + package signal // import "github.com/docker/docker/pkg/signal" import ( diff --git a/vendor/github.com/docker/docker/pkg/signal/signal_linux_mipsx.go b/vendor/github.com/docker/docker/pkg/signal/signal_linux_mipsx.go new file mode 100644 index 0000000000..4c79891216 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/signal/signal_linux_mipsx.go @@ -0,0 +1,84 @@ +// +build linux +// +build mips mipsle mips64 mips64le + +package signal // import "github.com/docker/docker/pkg/signal" + +import ( + "syscall" + + "golang.org/x/sys/unix" +) + +const ( + sigrtmin = 34 + sigrtmax = 127 +) + +// SignalMap is a map of Linux signals. +var SignalMap = map[string]syscall.Signal{ + "ABRT": unix.SIGABRT, + "ALRM": unix.SIGALRM, + "BUS": unix.SIGBUS, + "CHLD": unix.SIGCHLD, + "CLD": unix.SIGCLD, + "CONT": unix.SIGCONT, + "FPE": unix.SIGFPE, + "HUP": unix.SIGHUP, + "ILL": unix.SIGILL, + "INT": unix.SIGINT, + "IO": unix.SIGIO, + "IOT": unix.SIGIOT, + "KILL": unix.SIGKILL, + "PIPE": unix.SIGPIPE, + "POLL": unix.SIGPOLL, + "PROF": unix.SIGPROF, + "PWR": unix.SIGPWR, + "QUIT": unix.SIGQUIT, + "SEGV": unix.SIGSEGV, + "SIGEMT": unix.SIGEMT, + "STOP": unix.SIGSTOP, + "SYS": unix.SIGSYS, + "TERM": unix.SIGTERM, + "TRAP": unix.SIGTRAP, + "TSTP": unix.SIGTSTP, + "TTIN": unix.SIGTTIN, + "TTOU": unix.SIGTTOU, + "URG": unix.SIGURG, + "USR1": unix.SIGUSR1, + "USR2": unix.SIGUSR2, + "VTALRM": unix.SIGVTALRM, + "WINCH": unix.SIGWINCH, + "XCPU": unix.SIGXCPU, + "XFSZ": unix.SIGXFSZ, + "RTMIN": sigrtmin, + "RTMIN+1": sigrtmin + 1, + "RTMIN+2": sigrtmin + 2, + "RTMIN+3": sigrtmin + 3, + "RTMIN+4": sigrtmin + 4, + "RTMIN+5": sigrtmin + 5, + "RTMIN+6": sigrtmin + 6, + "RTMIN+7": sigrtmin + 7, + "RTMIN+8": sigrtmin + 8, + "RTMIN+9": sigrtmin + 9, + "RTMIN+10": sigrtmin + 10, + "RTMIN+11": sigrtmin + 11, + "RTMIN+12": sigrtmin + 12, + "RTMIN+13": sigrtmin + 13, + "RTMIN+14": sigrtmin + 14, + "RTMIN+15": sigrtmin + 15, + "RTMAX-14": sigrtmax - 14, + "RTMAX-13": sigrtmax - 13, + "RTMAX-12": sigrtmax - 12, + "RTMAX-11": sigrtmax - 11, + "RTMAX-10": sigrtmax - 10, + "RTMAX-9": sigrtmax - 9, + "RTMAX-8": sigrtmax - 8, + "RTMAX-7": sigrtmax - 7, + "RTMAX-6": sigrtmax - 6, + "RTMAX-5": sigrtmax - 5, + "RTMAX-4": sigrtmax - 4, + "RTMAX-3": sigrtmax - 3, + "RTMAX-2": sigrtmax - 2, + "RTMAX-1": sigrtmax - 1, + "RTMAX": sigrtmax, +} diff --git a/vendor/github.com/docker/docker/pkg/streamformatter/streamformatter.go b/vendor/github.com/docker/docker/pkg/streamformatter/streamformatter.go index 2b5e713040..b0456e580d 100644 --- a/vendor/github.com/docker/docker/pkg/streamformatter/streamformatter.go +++ b/vendor/github.com/docker/docker/pkg/streamformatter/streamformatter.go @@ -94,7 +94,7 @@ func NewProgressOutput(out io.Writer) progress.Output { return &progressOutput{sf: &rawProgressFormatter{}, out: out, newLines: true} } -// NewJSONProgressOutput returns a progress.Output that that formats output +// NewJSONProgressOutput returns a progress.Output that formats output // using JSON objects func NewJSONProgressOutput(out io.Writer, newLines bool) progress.Output { return &progressOutput{sf: &jsonProgressFormatter{}, out: out, newLines: newLines} @@ -139,14 +139,14 @@ type AuxFormatter struct { } // Emit emits the given interface as an aux progress message -func (sf *AuxFormatter) Emit(aux interface{}) error { +func (sf *AuxFormatter) Emit(id string, aux interface{}) error { auxJSONBytes, err := json.Marshal(aux) if err != nil { return err } auxJSON := new(json.RawMessage) *auxJSON = auxJSONBytes - msgJSON, err := json.Marshal(&jsonmessage.JSONMessage{Aux: auxJSON}) + msgJSON, err := json.Marshal(&jsonmessage.JSONMessage{ID: id, Aux: auxJSON}) if err != nil { return err } diff --git a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE index b9fbf3c98f..5d80670bc0 100644 --- a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE +++ b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE @@ -176,7 +176,7 @@ END OF TERMS AND CONDITIONS - Copyright 2014-2017 Docker, Inc. + Copyright 2014-2018 Docker, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD index 4c056c5ed2..2ee8768d31 100644 --- a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD +++ b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD @@ -1,4 +1,4 @@ -Copyright (c) 2014-2017 The Docker & Go Authors. All rights reserved. +Copyright (c) 2014-2018 The Docker & Go Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/README.md b/vendor/github.com/docker/docker/pkg/sysinfo/README.md new file mode 100644 index 0000000000..c1530cef0d --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/sysinfo/README.md @@ -0,0 +1 @@ +SysInfo stores information about which features a kernel supports. diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/numcpu.go b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu.go new file mode 100644 index 0000000000..eea2d25bf9 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu.go @@ -0,0 +1,12 @@ +// +build !linux,!windows + +package sysinfo // import "github.com/docker/docker/pkg/sysinfo" + +import ( + "runtime" +) + +// NumCPU returns the number of CPUs +func NumCPU() int { + return runtime.NumCPU() +} diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_linux.go b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_linux.go new file mode 100644 index 0000000000..5f6c6df8c4 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_linux.go @@ -0,0 +1,42 @@ +package sysinfo // import "github.com/docker/docker/pkg/sysinfo" + +import ( + "runtime" + "unsafe" + + "golang.org/x/sys/unix" +) + +// numCPU queries the system for the count of threads available +// for use to this process. +// +// Issues two syscalls. +// Returns 0 on errors. Use |runtime.NumCPU| in that case. +func numCPU() int { + // Gets the affinity mask for a process: The very one invoking this function. + pid, _, _ := unix.RawSyscall(unix.SYS_GETPID, 0, 0, 0) + + var mask [1024 / 64]uintptr + _, _, err := unix.RawSyscall(unix.SYS_SCHED_GETAFFINITY, pid, uintptr(len(mask)*8), uintptr(unsafe.Pointer(&mask[0]))) + if err != 0 { + return 0 + } + + // For every available thread a bit is set in the mask. + ncpu := 0 + for _, e := range mask { + if e == 0 { + continue + } + ncpu += int(popcnt(uint64(e))) + } + return ncpu +} + +// NumCPU returns the number of CPUs which are currently online +func NumCPU() int { + if ncpu := numCPU(); ncpu > 0 { + return ncpu + } + return runtime.NumCPU() +} diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_windows.go b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_windows.go new file mode 100644 index 0000000000..13523f671f --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_windows.go @@ -0,0 +1,35 @@ +package sysinfo // import "github.com/docker/docker/pkg/sysinfo" + +import ( + "runtime" + "unsafe" + + "golang.org/x/sys/windows" +) + +var ( + kernel32 = windows.NewLazySystemDLL("kernel32.dll") + getCurrentProcess = kernel32.NewProc("GetCurrentProcess") + getProcessAffinityMask = kernel32.NewProc("GetProcessAffinityMask") +) + +func numCPU() int { + // Gets the affinity mask for a process + var mask, sysmask uintptr + currentProcess, _, _ := getCurrentProcess.Call() + ret, _, _ := getProcessAffinityMask.Call(currentProcess, uintptr(unsafe.Pointer(&mask)), uintptr(unsafe.Pointer(&sysmask))) + if ret == 0 { + return 0 + } + // For every available thread a bit is set in the mask. + ncpu := int(popcnt(uint64(mask))) + return ncpu +} + +// NumCPU returns the number of CPUs which are currently online +func NumCPU() int { + if ncpu := numCPU(); ncpu > 0 { + return ncpu + } + return runtime.NumCPU() +} diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo.go b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo.go new file mode 100644 index 0000000000..5fa5a5628c --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo.go @@ -0,0 +1,155 @@ +package sysinfo // import "github.com/docker/docker/pkg/sysinfo" + +import "github.com/docker/docker/pkg/parsers" + +// SysInfo stores information about which features a kernel supports. +// TODO Windows: Factor out platform specific capabilities. +type SysInfo struct { + // Whether the kernel supports AppArmor or not + AppArmor bool + // Whether the kernel supports Seccomp or not + Seccomp bool + + cgroupMemInfo + cgroupCPUInfo + cgroupBlkioInfo + cgroupCpusetInfo + cgroupPids + + // Whether IPv4 forwarding is supported or not, if this was disabled, networking will not work + IPv4ForwardingDisabled bool + + // Whether bridge-nf-call-iptables is supported or not + BridgeNFCallIPTablesDisabled bool + + // Whether bridge-nf-call-ip6tables is supported or not + BridgeNFCallIP6TablesDisabled bool + + // Whether the cgroup has the mountpoint of "devices" or not + CgroupDevicesEnabled bool +} + +type cgroupMemInfo struct { + // Whether memory limit is supported or not + MemoryLimit bool + + // Whether swap limit is supported or not + SwapLimit bool + + // Whether soft limit is supported or not + MemoryReservation bool + + // Whether OOM killer disable is supported or not + OomKillDisable bool + + // Whether memory swappiness is supported or not + MemorySwappiness bool + + // Whether kernel memory limit is supported or not + KernelMemory bool + + // Whether kernel memory TCP limit is supported or not + KernelMemoryTCP bool +} + +type cgroupCPUInfo struct { + // Whether CPU shares is supported or not + CPUShares bool + + // Whether CPU CFS(Completely Fair Scheduler) period is supported or not + CPUCfsPeriod bool + + // Whether CPU CFS(Completely Fair Scheduler) quota is supported or not + CPUCfsQuota bool + + // Whether CPU real-time period is supported or not + CPURealtimePeriod bool + + // Whether CPU real-time runtime is supported or not + CPURealtimeRuntime bool +} + +type cgroupBlkioInfo struct { + // Whether Block IO weight is supported or not + BlkioWeight bool + + // Whether Block IO weight_device is supported or not + BlkioWeightDevice bool + + // Whether Block IO read limit in bytes per second is supported or not + BlkioReadBpsDevice bool + + // Whether Block IO write limit in bytes per second is supported or not + BlkioWriteBpsDevice bool + + // Whether Block IO read limit in IO per second is supported or not + BlkioReadIOpsDevice bool + + // Whether Block IO write limit in IO per second is supported or not + BlkioWriteIOpsDevice bool +} + +type cgroupCpusetInfo struct { + // Whether Cpuset is supported or not + Cpuset bool + + // Available Cpuset's cpus + Cpus string + + // Available Cpuset's memory nodes + Mems string +} + +type cgroupPids struct { + // Whether Pids Limit is supported or not + PidsLimit bool +} + +// IsCpusetCpusAvailable returns `true` if the provided string set is contained +// in cgroup's cpuset.cpus set, `false` otherwise. +// If error is not nil a parsing error occurred. +func (c cgroupCpusetInfo) IsCpusetCpusAvailable(provided string) (bool, error) { + return isCpusetListAvailable(provided, c.Cpus) +} + +// IsCpusetMemsAvailable returns `true` if the provided string set is contained +// in cgroup's cpuset.mems set, `false` otherwise. +// If error is not nil a parsing error occurred. +func (c cgroupCpusetInfo) IsCpusetMemsAvailable(provided string) (bool, error) { + return isCpusetListAvailable(provided, c.Mems) +} + +func isCpusetListAvailable(provided, available string) (bool, error) { + parsedAvailable, err := parsers.ParseUintList(available) + if err != nil { + return false, err + } + // 8192 is the normal maximum number of CPUs in Linux, so accept numbers up to this + // or more if we actually have more CPUs. + max := 8192 + for m := range parsedAvailable { + if m > max { + max = m + } + } + parsedProvided, err := parsers.ParseUintListMaximum(provided, max) + if err != nil { + return false, err + } + for k := range parsedProvided { + if !parsedAvailable[k] { + return false, nil + } + } + return true, nil +} + +// Returns bit count of 1, used by NumCPU +func popcnt(x uint64) (n byte) { + x -= (x >> 1) & 0x5555555555555555 + x = (x>>2)&0x3333333333333333 + x&0x3333333333333333 + x += x >> 4 + x &= 0x0f0f0f0f0f0f0f0f + x *= 0x0101010101010101 + return byte(x >> 56) +} diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_linux.go b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_linux.go new file mode 100644 index 0000000000..7b36d6d130 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_linux.go @@ -0,0 +1,277 @@ +package sysinfo // import "github.com/docker/docker/pkg/sysinfo" + +import ( + "fmt" + "io/ioutil" + "os" + "path" + "strings" + + "github.com/opencontainers/runc/libcontainer/cgroups" + "github.com/sirupsen/logrus" + "golang.org/x/sys/unix" +) + +func findCgroupMountpoints() (map[string]string, error) { + cgMounts, err := cgroups.GetCgroupMounts(false) + if err != nil { + return nil, fmt.Errorf("Failed to parse cgroup information: %v", err) + } + mps := make(map[string]string) + for _, m := range cgMounts { + for _, ss := range m.Subsystems { + mps[ss] = m.Mountpoint + } + } + return mps, nil +} + +type infoCollector func(info *SysInfo, cgMounts map[string]string) (warnings []string) + +// New returns a new SysInfo, using the filesystem to detect which features +// the kernel supports. If `quiet` is `false` warnings are printed in logs +// whenever an error occurs or misconfigurations are present. +func New(quiet bool) *SysInfo { + var ops []infoCollector + var warnings []string + sysInfo := &SysInfo{} + cgMounts, err := findCgroupMountpoints() + if err != nil { + logrus.Warn(err) + } else { + ops = append(ops, []infoCollector{ + applyMemoryCgroupInfo, + applyCPUCgroupInfo, + applyBlkioCgroupInfo, + applyCPUSetCgroupInfo, + applyPIDSCgroupInfo, + applyDevicesCgroupInfo, + }...) + } + + ops = append(ops, []infoCollector{ + applyNetworkingInfo, + applyAppArmorInfo, + applySeccompInfo, + }...) + + for _, o := range ops { + w := o(sysInfo, cgMounts) + warnings = append(warnings, w...) + } + if !quiet { + for _, w := range warnings { + logrus.Warn(w) + } + } + return sysInfo +} + +// applyMemoryCgroupInfo reads the memory information from the memory cgroup mount point. +func applyMemoryCgroupInfo(info *SysInfo, cgMounts map[string]string) []string { + var warnings []string + mountPoint, ok := cgMounts["memory"] + if !ok { + warnings = append(warnings, "Your kernel does not support cgroup memory limit") + return warnings + } + info.MemoryLimit = ok + + info.SwapLimit = cgroupEnabled(mountPoint, "memory.memsw.limit_in_bytes") + if !info.SwapLimit { + warnings = append(warnings, "Your kernel does not support swap memory limit") + } + info.MemoryReservation = cgroupEnabled(mountPoint, "memory.soft_limit_in_bytes") + if !info.MemoryReservation { + warnings = append(warnings, "Your kernel does not support memory reservation") + } + info.OomKillDisable = cgroupEnabled(mountPoint, "memory.oom_control") + if !info.OomKillDisable { + warnings = append(warnings, "Your kernel does not support oom control") + } + info.MemorySwappiness = cgroupEnabled(mountPoint, "memory.swappiness") + if !info.MemorySwappiness { + warnings = append(warnings, "Your kernel does not support memory swappiness") + } + info.KernelMemory = cgroupEnabled(mountPoint, "memory.kmem.limit_in_bytes") + if !info.KernelMemory { + warnings = append(warnings, "Your kernel does not support kernel memory limit") + } + info.KernelMemoryTCP = cgroupEnabled(mountPoint, "memory.kmem.tcp.limit_in_bytes") + if !info.KernelMemoryTCP { + warnings = append(warnings, "Your kernel does not support kernel memory TCP limit") + } + + return warnings +} + +// applyCPUCgroupInfo reads the cpu information from the cpu cgroup mount point. +func applyCPUCgroupInfo(info *SysInfo, cgMounts map[string]string) []string { + var warnings []string + mountPoint, ok := cgMounts["cpu"] + if !ok { + warnings = append(warnings, "Unable to find cpu cgroup in mounts") + return warnings + } + + info.CPUShares = cgroupEnabled(mountPoint, "cpu.shares") + if !info.CPUShares { + warnings = append(warnings, "Your kernel does not support cgroup cpu shares") + } + + info.CPUCfsPeriod = cgroupEnabled(mountPoint, "cpu.cfs_period_us") + if !info.CPUCfsPeriod { + warnings = append(warnings, "Your kernel does not support cgroup cfs period") + } + + info.CPUCfsQuota = cgroupEnabled(mountPoint, "cpu.cfs_quota_us") + if !info.CPUCfsQuota { + warnings = append(warnings, "Your kernel does not support cgroup cfs quotas") + } + + info.CPURealtimePeriod = cgroupEnabled(mountPoint, "cpu.rt_period_us") + if !info.CPURealtimePeriod { + warnings = append(warnings, "Your kernel does not support cgroup rt period") + } + + info.CPURealtimeRuntime = cgroupEnabled(mountPoint, "cpu.rt_runtime_us") + if !info.CPURealtimeRuntime { + warnings = append(warnings, "Your kernel does not support cgroup rt runtime") + } + + return warnings +} + +// applyBlkioCgroupInfo reads the blkio information from the blkio cgroup mount point. +func applyBlkioCgroupInfo(info *SysInfo, cgMounts map[string]string) []string { + var warnings []string + mountPoint, ok := cgMounts["blkio"] + if !ok { + warnings = append(warnings, "Unable to find blkio cgroup in mounts") + return warnings + } + + info.BlkioWeight = cgroupEnabled(mountPoint, "blkio.weight") + if !info.BlkioWeight { + warnings = append(warnings, "Your kernel does not support cgroup blkio weight") + } + + info.BlkioWeightDevice = cgroupEnabled(mountPoint, "blkio.weight_device") + if !info.BlkioWeightDevice { + warnings = append(warnings, "Your kernel does not support cgroup blkio weight_device") + } + + info.BlkioReadBpsDevice = cgroupEnabled(mountPoint, "blkio.throttle.read_bps_device") + if !info.BlkioReadBpsDevice { + warnings = append(warnings, "Your kernel does not support cgroup blkio throttle.read_bps_device") + } + + info.BlkioWriteBpsDevice = cgroupEnabled(mountPoint, "blkio.throttle.write_bps_device") + if !info.BlkioWriteBpsDevice { + warnings = append(warnings, "Your kernel does not support cgroup blkio throttle.write_bps_device") + } + info.BlkioReadIOpsDevice = cgroupEnabled(mountPoint, "blkio.throttle.read_iops_device") + if !info.BlkioReadIOpsDevice { + warnings = append(warnings, "Your kernel does not support cgroup blkio throttle.read_iops_device") + } + + info.BlkioWriteIOpsDevice = cgroupEnabled(mountPoint, "blkio.throttle.write_iops_device") + if !info.BlkioWriteIOpsDevice { + warnings = append(warnings, "Your kernel does not support cgroup blkio throttle.write_iops_device") + } + + return warnings +} + +// applyCPUSetCgroupInfo reads the cpuset information from the cpuset cgroup mount point. +func applyCPUSetCgroupInfo(info *SysInfo, cgMounts map[string]string) []string { + var warnings []string + mountPoint, ok := cgMounts["cpuset"] + if !ok { + warnings = append(warnings, "Unable to find cpuset cgroup in mounts") + return warnings + } + info.Cpuset = ok + + var err error + + cpus, err := ioutil.ReadFile(path.Join(mountPoint, "cpuset.cpus")) + if err != nil { + return warnings + } + info.Cpus = strings.TrimSpace(string(cpus)) + + mems, err := ioutil.ReadFile(path.Join(mountPoint, "cpuset.mems")) + if err != nil { + return warnings + } + info.Mems = strings.TrimSpace(string(mems)) + + return warnings +} + +// applyPIDSCgroupInfo reads the pids information from the pids cgroup mount point. +func applyPIDSCgroupInfo(info *SysInfo, _ map[string]string) []string { + var warnings []string + _, err := cgroups.FindCgroupMountpoint("", "pids") + if err != nil { + warnings = append(warnings, err.Error()) + return warnings + } + info.PidsLimit = true + return warnings +} + +// applyDevicesCgroupInfo reads the pids information from the devices cgroup mount point. +func applyDevicesCgroupInfo(info *SysInfo, cgMounts map[string]string) []string { + var warnings []string + _, ok := cgMounts["devices"] + info.CgroupDevicesEnabled = ok + return warnings +} + +// applyNetworkingInfo adds networking information to the info. +func applyNetworkingInfo(info *SysInfo, _ map[string]string) []string { + var warnings []string + info.IPv4ForwardingDisabled = !readProcBool("/proc/sys/net/ipv4/ip_forward") + info.BridgeNFCallIPTablesDisabled = !readProcBool("/proc/sys/net/bridge/bridge-nf-call-iptables") + info.BridgeNFCallIP6TablesDisabled = !readProcBool("/proc/sys/net/bridge/bridge-nf-call-ip6tables") + return warnings +} + +// applyAppArmorInfo adds AppArmor information to the info. +func applyAppArmorInfo(info *SysInfo, _ map[string]string) []string { + var warnings []string + if _, err := os.Stat("/sys/kernel/security/apparmor"); !os.IsNotExist(err) { + if _, err := ioutil.ReadFile("/sys/kernel/security/apparmor/profiles"); err == nil { + info.AppArmor = true + } + } + return warnings +} + +// applySeccompInfo checks if Seccomp is supported, via CONFIG_SECCOMP. +func applySeccompInfo(info *SysInfo, _ map[string]string) []string { + var warnings []string + // Check if Seccomp is supported, via CONFIG_SECCOMP. + if err := unix.Prctl(unix.PR_GET_SECCOMP, 0, 0, 0, 0); err != unix.EINVAL { + // Make sure the kernel has CONFIG_SECCOMP_FILTER. + if err := unix.Prctl(unix.PR_SET_SECCOMP, unix.SECCOMP_MODE_FILTER, 0, 0, 0); err != unix.EINVAL { + info.Seccomp = true + } + } + return warnings +} + +func cgroupEnabled(mountPoint, name string) bool { + _, err := os.Stat(path.Join(mountPoint, name)) + return err == nil +} + +func readProcBool(path string) bool { + val, err := ioutil.ReadFile(path) + if err != nil { + return false + } + return strings.TrimSpace(string(val)) == "1" +} diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_unix.go b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_unix.go new file mode 100644 index 0000000000..23cc695fb8 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_unix.go @@ -0,0 +1,9 @@ +// +build !linux,!windows + +package sysinfo // import "github.com/docker/docker/pkg/sysinfo" + +// New returns an empty SysInfo for non linux for now. +func New(quiet bool) *SysInfo { + sysInfo := &SysInfo{} + return sysInfo +} diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_windows.go b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_windows.go new file mode 100644 index 0000000000..5f68524e7e --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_windows.go @@ -0,0 +1,7 @@ +package sysinfo // import "github.com/docker/docker/pkg/sysinfo" + +// New returns an empty SysInfo for windows for now. +func New(quiet bool) *SysInfo { + sysInfo := &SysInfo{} + return sysInfo +} diff --git a/vendor/github.com/docker/docker/pkg/system/lcow.go b/vendor/github.com/docker/docker/pkg/system/lcow.go index 5c3fbfe6f4..5be3e2182b 100644 --- a/vendor/github.com/docker/docker/pkg/system/lcow.go +++ b/vendor/github.com/docker/docker/pkg/system/lcow.go @@ -1,69 +1,32 @@ package system // import "github.com/docker/docker/pkg/system" import ( - "fmt" "runtime" "strings" specs "github.com/opencontainers/image-spec/specs-go/v1" + "github.com/pkg/errors" ) -// ValidatePlatform determines if a platform structure is valid. -// TODO This is a temporary function - can be replaced by parsing from -// https://github.com/containerd/containerd/pull/1403/files at a later date. -// @jhowardmsft -func ValidatePlatform(platform *specs.Platform) error { - platform.Architecture = strings.ToLower(platform.Architecture) - platform.OS = strings.ToLower(platform.OS) - // Based on https://github.com/moby/moby/pull/34642#issuecomment-330375350, do - // not support anything except operating system. - if platform.Architecture != "" { - return fmt.Errorf("invalid platform architecture %q", platform.Architecture) - } - if platform.OS != "" { - if !(platform.OS == runtime.GOOS || (LCOWSupported() && platform.OS == "linux")) { - return fmt.Errorf("invalid platform os %q", platform.OS) - } - } - if len(platform.OSFeatures) != 0 { - return fmt.Errorf("invalid platform osfeatures %q", platform.OSFeatures) - } - if platform.OSVersion != "" { - return fmt.Errorf("invalid platform osversion %q", platform.OSVersion) - } - if platform.Variant != "" { - return fmt.Errorf("invalid platform variant %q", platform.Variant) - } - return nil -} - -// ParsePlatform parses a platform string in the format os[/arch[/variant] -// into an OCI image-spec platform structure. -// TODO This is a temporary function - can be replaced by parsing from -// https://github.com/containerd/containerd/pull/1403/files at a later date. -// @jhowardmsft -func ParsePlatform(in string) *specs.Platform { - p := &specs.Platform{} - elements := strings.SplitN(strings.ToLower(in), "/", 3) - if len(elements) == 3 { - p.Variant = elements[2] - } - if len(elements) >= 2 { - p.Architecture = elements[1] - } - if len(elements) >= 1 { - p.OS = elements[0] - } - return p -} - // IsOSSupported determines if an operating system is supported by the host func IsOSSupported(os string) bool { - if runtime.GOOS == os { + if strings.EqualFold(runtime.GOOS, os) { return true } - if LCOWSupported() && os == "linux" { + if LCOWSupported() && strings.EqualFold(os, "linux") { return true } return false } + +// ValidatePlatform determines if a platform structure is valid. +// TODO This is a temporary windows-only function, should be replaced by +// comparison of worker capabilities +func ValidatePlatform(platform specs.Platform) error { + if runtime.GOOS == "windows" { + if !(platform.OS == runtime.GOOS || (LCOWSupported() && platform.OS == "linux")) { + return errors.Errorf("unsupported os %s", platform.OS) + } + } + return nil +} diff --git a/vendor/github.com/docker/docker/pkg/system/lstat_unix.go b/vendor/github.com/docker/docker/pkg/system/lstat_unix.go index 7477995f1b..de5a1c0fb2 100644 --- a/vendor/github.com/docker/docker/pkg/system/lstat_unix.go +++ b/vendor/github.com/docker/docker/pkg/system/lstat_unix.go @@ -3,6 +3,7 @@ package system // import "github.com/docker/docker/pkg/system" import ( + "os" "syscall" ) @@ -13,7 +14,7 @@ import ( func Lstat(path string) (*StatT, error) { s := &syscall.Stat_t{} if err := syscall.Lstat(path, s); err != nil { - return nil, err + return nil, &os.PathError{Op: "Lstat", Path: path, Err: err} } return fromStatT(s) } diff --git a/vendor/github.com/docker/docker/pkg/system/path_unix.go b/vendor/github.com/docker/docker/pkg/system/path_unix.go new file mode 100644 index 0000000000..b0b93196a1 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/system/path_unix.go @@ -0,0 +1,10 @@ +// +build !windows + +package system // import "github.com/docker/docker/pkg/system" + +// GetLongPathName converts Windows short pathnames to full pathnames. +// For example C:\Users\ADMIN~1 --> C:\Users\Administrator. +// It is a no-op on non-Windows platforms +func GetLongPathName(path string) (string, error) { + return path, nil +} diff --git a/vendor/github.com/docker/docker/pkg/system/path_windows.go b/vendor/github.com/docker/docker/pkg/system/path_windows.go new file mode 100644 index 0000000000..188f2c2957 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/system/path_windows.go @@ -0,0 +1,24 @@ +package system // import "github.com/docker/docker/pkg/system" + +import "syscall" + +// GetLongPathName converts Windows short pathnames to full pathnames. +// For example C:\Users\ADMIN~1 --> C:\Users\Administrator. +// It is a no-op on non-Windows platforms +func GetLongPathName(path string) (string, error) { + // See https://groups.google.com/forum/#!topic/golang-dev/1tufzkruoTg + p := syscall.StringToUTF16(path) + b := p // GetLongPathName says we can reuse buffer + n, err := syscall.GetLongPathName(&p[0], &b[0], uint32(len(b))) + if err != nil { + return "", err + } + if n > uint32(len(b)) { + b = make([]uint16, n) + _, err = syscall.GetLongPathName(&p[0], &b[0], uint32(len(b))) + if err != nil { + return "", err + } + } + return syscall.UTF16ToString(b), nil +} diff --git a/vendor/github.com/docker/docker/pkg/system/rm.go b/vendor/github.com/docker/docker/pkg/system/rm.go index 02e4d26221..b310991800 100644 --- a/vendor/github.com/docker/docker/pkg/system/rm.go +++ b/vendor/github.com/docker/docker/pkg/system/rm.go @@ -34,7 +34,7 @@ func EnsureRemoveAll(dir string) error { for { err := os.RemoveAll(dir) if err == nil { - return err + return nil } pe, ok := err.(*os.PathError) diff --git a/vendor/github.com/docker/docker/pkg/system/stat_unix.go b/vendor/github.com/docker/docker/pkg/system/stat_unix.go index 3d7e2ebbef..86bb6dd55e 100644 --- a/vendor/github.com/docker/docker/pkg/system/stat_unix.go +++ b/vendor/github.com/docker/docker/pkg/system/stat_unix.go @@ -3,6 +3,7 @@ package system // import "github.com/docker/docker/pkg/system" import ( + "os" "syscall" ) @@ -59,7 +60,7 @@ func (s StatT) IsDir() bool { func Stat(path string) (*StatT, error) { s := &syscall.Stat_t{} if err := syscall.Stat(path, s); err != nil { - return nil, err + return nil, &os.PathError{Op: "Stat", Path: path, Err: err} } return fromStatT(s) } diff --git a/vendor/github.com/docker/docker/pkg/system/syscall_windows.go b/vendor/github.com/docker/docker/pkg/system/syscall_windows.go index ee7e0256f3..4ae92fa6c7 100644 --- a/vendor/github.com/docker/docker/pkg/system/syscall_windows.go +++ b/vendor/github.com/docker/docker/pkg/system/syscall_windows.go @@ -2,16 +2,62 @@ package system // import "github.com/docker/docker/pkg/system" import ( "fmt" + "syscall" "unsafe" "github.com/sirupsen/logrus" "golang.org/x/sys/windows" ) +const ( + OWNER_SECURITY_INFORMATION = 0x00000001 + GROUP_SECURITY_INFORMATION = 0x00000002 + DACL_SECURITY_INFORMATION = 0x00000004 + SACL_SECURITY_INFORMATION = 0x00000008 + LABEL_SECURITY_INFORMATION = 0x00000010 + ATTRIBUTE_SECURITY_INFORMATION = 0x00000020 + SCOPE_SECURITY_INFORMATION = 0x00000040 + PROCESS_TRUST_LABEL_SECURITY_INFORMATION = 0x00000080 + ACCESS_FILTER_SECURITY_INFORMATION = 0x00000100 + BACKUP_SECURITY_INFORMATION = 0x00010000 + PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000 + PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000 + UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000 + UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000 +) + +const ( + SE_UNKNOWN_OBJECT_TYPE = iota + SE_FILE_OBJECT + SE_SERVICE + SE_PRINTER + SE_REGISTRY_KEY + SE_LMSHARE + SE_KERNEL_OBJECT + SE_WINDOW_OBJECT + SE_DS_OBJECT + SE_DS_OBJECT_ALL + SE_PROVIDER_DEFINED_OBJECT + SE_WMIGUID_OBJECT + SE_REGISTRY_WOW64_32KEY +) + +const ( + SeTakeOwnershipPrivilege = "SeTakeOwnershipPrivilege" +) + +const ( + ContainerAdministratorSidString = "S-1-5-93-2-1" + ContainerUserSidString = "S-1-5-93-2-2" +) + var ( - ntuserApiset = windows.NewLazyDLL("ext-ms-win-ntuser-window-l1-1-0") - procGetVersionExW = modkernel32.NewProc("GetVersionExW") - procGetProductInfo = modkernel32.NewProc("GetProductInfo") + ntuserApiset = windows.NewLazyDLL("ext-ms-win-ntuser-window-l1-1-0") + modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") + procGetVersionExW = modkernel32.NewProc("GetVersionExW") + procGetProductInfo = modkernel32.NewProc("GetProductInfo") + procSetNamedSecurityInfo = modadvapi32.NewProc("SetNamedSecurityInfoW") + procGetSecurityDescriptorDacl = modadvapi32.NewProc("GetSecurityDescriptorDacl") ) // OSVersion is a wrapper for Windows version information @@ -125,3 +171,23 @@ func HasWin32KSupport() bool { // APIs. return ntuserApiset.Load() == nil } + +func SetNamedSecurityInfo(objectName *uint16, objectType uint32, securityInformation uint32, sidOwner *windows.SID, sidGroup *windows.SID, dacl *byte, sacl *byte) (result error) { + r0, _, _ := syscall.Syscall9(procSetNamedSecurityInfo.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(sidOwner)), uintptr(unsafe.Pointer(sidGroup)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) + if r0 != 0 { + result = syscall.Errno(r0) + } + return +} + +func GetSecurityDescriptorDacl(securityDescriptor *byte, daclPresent *uint32, dacl **byte, daclDefaulted *uint32) (result error) { + r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(securityDescriptor)), uintptr(unsafe.Pointer(daclPresent)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclDefaulted)), 0, 0) + if r1 == 0 { + if e1 != 0 { + result = syscall.Errno(e1) + } else { + result = syscall.EINVAL + } + } + return +} diff --git a/vendor/github.com/docker/docker/pkg/tailfile/tailfile.go b/vendor/github.com/docker/docker/pkg/tailfile/tailfile.go index e835893746..c82fe603f6 100644 --- a/vendor/github.com/docker/docker/pkg/tailfile/tailfile.go +++ b/vendor/github.com/docker/docker/pkg/tailfile/tailfile.go @@ -3,7 +3,9 @@ package tailfile // import "github.com/docker/docker/pkg/tailfile" import ( + "bufio" "bytes" + "context" "errors" "io" "os" @@ -16,51 +18,205 @@ var eol = []byte("\n") // ErrNonPositiveLinesNumber is an error returned if the lines number was negative. var ErrNonPositiveLinesNumber = errors.New("The number of lines to extract from the file must be positive") -//TailFile returns last n lines of reader f (could be a nil). -func TailFile(f io.ReadSeeker, n int) ([][]byte, error) { - if n <= 0 { - return nil, ErrNonPositiveLinesNumber +//TailFile returns last n lines of the passed in file. +func TailFile(f *os.File, n int) ([][]byte, error) { + size, err := f.Seek(0, io.SeekEnd) + if err != nil { + return nil, err } - size, err := f.Seek(0, os.SEEK_END) + + rAt := io.NewSectionReader(f, 0, size) + r, nLines, err := NewTailReader(context.Background(), rAt, n) if err != nil { return nil, err } - block := -1 - var data []byte - var cnt int + + buf := make([][]byte, 0, nLines) + scanner := bufio.NewScanner(r) + + for scanner.Scan() { + buf = append(buf, scanner.Bytes()) + } + return buf, nil +} + +// SizeReaderAt is an interface used to get a ReaderAt as well as the size of the underlying reader. +// Note that the size of the underlying reader should not change when using this interface. +type SizeReaderAt interface { + io.ReaderAt + Size() int64 +} + +// NewTailReader scopes the passed in reader to just the last N lines passed in +func NewTailReader(ctx context.Context, r SizeReaderAt, reqLines int) (io.Reader, int, error) { + return NewTailReaderWithDelimiter(ctx, r, reqLines, eol) +} + +// NewTailReaderWithDelimiter scopes the passed in reader to just the last N lines passed in +// In this case a "line" is defined by the passed in delimiter. +// +// Delimiter lengths should be generally small, no more than 12 bytes +func NewTailReaderWithDelimiter(ctx context.Context, r SizeReaderAt, reqLines int, delimiter []byte) (io.Reader, int, error) { + if reqLines < 1 { + return nil, 0, ErrNonPositiveLinesNumber + } + if len(delimiter) == 0 { + return nil, 0, errors.New("must provide a delimiter") + } + var ( + size = r.Size() + tailStart int64 + tailEnd = size + found int + ) + + if int64(len(delimiter)) >= size { + return bytes.NewReader(nil), 0, nil + } + + scanner := newScanner(r, delimiter) + for scanner.Scan(ctx) { + if err := scanner.Err(); err != nil { + return nil, 0, scanner.Err() + } + + found++ + if found == 1 { + tailEnd = scanner.End() + } + if found == reqLines { + break + } + } + + tailStart = scanner.Start(ctx) + + if found == 0 { + return bytes.NewReader(nil), 0, nil + } + + if found < reqLines && tailStart != 0 { + tailStart = 0 + } + return io.NewSectionReader(r, tailStart, tailEnd-tailStart), found, nil +} + +func newScanner(r SizeReaderAt, delim []byte) *scanner { + size := r.Size() + readSize := blockSize + if readSize > int(size) { + readSize = int(size) + } + // silly case... + if len(delim) >= readSize/2 { + readSize = len(delim)*2 + 2 + } + + return &scanner{ + r: r, + pos: size, + buf: make([]byte, readSize), + delim: delim, + } +} + +type scanner struct { + r SizeReaderAt + pos int64 + buf []byte + delim []byte + err error + idx int + done bool +} + +func (s *scanner) Start(ctx context.Context) int64 { + if s.idx > 0 { + idx := bytes.LastIndex(s.buf[:s.idx], s.delim) + if idx >= 0 { + return s.pos + int64(idx) + int64(len(s.delim)) + } + } + + // slow path + buf := make([]byte, len(s.buf)) + copy(buf, s.buf) + + readAhead := &scanner{ + r: s.r, + pos: s.pos, + delim: s.delim, + idx: s.idx, + buf: buf, + } + + if !readAhead.Scan(ctx) { + return 0 + } + return readAhead.End() +} + +func (s *scanner) End() int64 { + return s.pos + int64(s.idx) + int64(len(s.delim)) +} + +func (s *scanner) Err() error { + return s.err +} + +func (s *scanner) Scan(ctx context.Context) bool { + if s.err != nil { + return false + } + for { - var b []byte - step := int64(block * blockSize) - left := size + step // how many bytes to beginning - if left < 0 { - if _, err := f.Seek(0, os.SEEK_SET); err != nil { - return nil, err - } - b = make([]byte, blockSize+left) - if _, err := f.Read(b); err != nil { - return nil, err + select { + case <-ctx.Done(): + s.err = ctx.Err() + return false + default: + } + + idx := s.idx - len(s.delim) + if idx < 0 { + readSize := int(s.pos) + if readSize > len(s.buf) { + readSize = len(s.buf) } - data = append(b, data...) - break - } else { - b = make([]byte, blockSize) - if _, err := f.Seek(left, os.SEEK_SET); err != nil { - return nil, err + + if readSize < len(s.delim) { + return false } - if _, err := f.Read(b); err != nil { - return nil, err + + offset := s.pos - int64(readSize) + n, err := s.r.ReadAt(s.buf[:readSize], offset) + if err != nil && err != io.EOF { + s.err = err + return false } - data = append(b, data...) + + s.pos -= int64(n) + idx = n } - cnt += bytes.Count(b, eol) - if cnt > n { - break + + s.idx = bytes.LastIndex(s.buf[:idx], s.delim) + if s.idx >= 0 { + return true } - block-- - } - lines := bytes.Split(data, eol) - if n < len(lines) { - return lines[len(lines)-n-1 : len(lines)-1], nil + + if len(s.delim) > 1 && s.pos > 0 { + // in this case, there may be a partial delimiter at the front of the buffer, so set the position forward + // up to the maximum size partial that could be there so it can be read again in the next iteration with any + // potential remainder. + // An example where delimiter is `####`: + // [##asdfqwerty] + // ^ + // This resets the position to where the arrow is pointing. + // It could actually check if a partial exists and at the front, but that is pretty similar to the indexing + // code above though a bit more complex since each byte has to be checked (`len(delimiter)-1`) factorial). + // It's much simpler and cleaner to just re-read `len(delimiter)-1` bytes again. + s.pos += int64(len(s.delim)) - 1 + } + } - return lines[:len(lines)-1], nil } diff --git a/vendor/github.com/docker/docker/pkg/term/term_windows.go b/vendor/github.com/docker/docker/pkg/term/term_windows.go index 64ead3c53b..a3c3db1315 100644 --- a/vendor/github.com/docker/docker/pkg/term/term_windows.go +++ b/vendor/github.com/docker/docker/pkg/term/term_windows.go @@ -62,13 +62,6 @@ func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) { } } - if os.Getenv("ConEmuANSI") == "ON" || os.Getenv("ConsoleZVersion") != "" { - // The ConEmu and ConsoleZ terminals emulate ANSI on output streams well. - emulateStdin = true - emulateStdout = false - emulateStderr = false - } - // Temporarily use STD_INPUT_HANDLE, STD_OUTPUT_HANDLE and // STD_ERROR_HANDLE from syscall rather than x/sys/windows as long as // go-ansiterm hasn't switch to x/sys/windows. diff --git a/vendor/github.com/docker/docker/runconfig/config.go b/vendor/github.com/docker/docker/runconfig/config.go new file mode 100644 index 0000000000..cbacf47df3 --- /dev/null +++ b/vendor/github.com/docker/docker/runconfig/config.go @@ -0,0 +1,81 @@ +package runconfig // import "github.com/docker/docker/runconfig" + +import ( + "encoding/json" + "io" + + "github.com/docker/docker/api/types/container" + networktypes "github.com/docker/docker/api/types/network" + "github.com/docker/docker/pkg/sysinfo" +) + +// ContainerDecoder implements httputils.ContainerDecoder +// calling DecodeContainerConfig. +type ContainerDecoder struct{} + +// DecodeConfig makes ContainerDecoder to implement httputils.ContainerDecoder +func (r ContainerDecoder) DecodeConfig(src io.Reader) (*container.Config, *container.HostConfig, *networktypes.NetworkingConfig, error) { + return decodeContainerConfig(src) +} + +// DecodeHostConfig makes ContainerDecoder to implement httputils.ContainerDecoder +func (r ContainerDecoder) DecodeHostConfig(src io.Reader) (*container.HostConfig, error) { + return decodeHostConfig(src) +} + +// decodeContainerConfig decodes a json encoded config into a ContainerConfigWrapper +// struct and returns both a Config and a HostConfig struct +// Be aware this function is not checking whether the resulted structs are nil, +// it's your business to do so +func decodeContainerConfig(src io.Reader) (*container.Config, *container.HostConfig, *networktypes.NetworkingConfig, error) { + var w ContainerConfigWrapper + + decoder := json.NewDecoder(src) + if err := decoder.Decode(&w); err != nil { + return nil, nil, nil, err + } + + hc := w.getHostConfig() + + // Perform platform-specific processing of Volumes and Binds. + if w.Config != nil && hc != nil { + + // Initialize the volumes map if currently nil + if w.Config.Volumes == nil { + w.Config.Volumes = make(map[string]struct{}) + } + } + + // Certain parameters need daemon-side validation that cannot be done + // on the client, as only the daemon knows what is valid for the platform. + if err := validateNetMode(w.Config, hc); err != nil { + return nil, nil, nil, err + } + + // Validate isolation + if err := validateIsolation(hc); err != nil { + return nil, nil, nil, err + } + + // Validate QoS + if err := validateQoS(hc); err != nil { + return nil, nil, nil, err + } + + // Validate Resources + if err := validateResources(hc, sysinfo.New(true)); err != nil { + return nil, nil, nil, err + } + + // Validate Privileged + if err := validatePrivileged(hc); err != nil { + return nil, nil, nil, err + } + + // Validate ReadonlyRootfs + if err := validateReadonlyRootfs(hc); err != nil { + return nil, nil, nil, err + } + + return w.Config, hc, w.NetworkingConfig, nil +} diff --git a/vendor/github.com/docker/docker/runconfig/config_unix.go b/vendor/github.com/docker/docker/runconfig/config_unix.go new file mode 100644 index 0000000000..65e8d6fcd4 --- /dev/null +++ b/vendor/github.com/docker/docker/runconfig/config_unix.go @@ -0,0 +1,59 @@ +// +build !windows + +package runconfig // import "github.com/docker/docker/runconfig" + +import ( + "github.com/docker/docker/api/types/container" + networktypes "github.com/docker/docker/api/types/network" +) + +// ContainerConfigWrapper is a Config wrapper that holds the container Config (portable) +// and the corresponding HostConfig (non-portable). +type ContainerConfigWrapper struct { + *container.Config + InnerHostConfig *container.HostConfig `json:"HostConfig,omitempty"` + Cpuset string `json:",omitempty"` // Deprecated. Exported for backwards compatibility. + NetworkingConfig *networktypes.NetworkingConfig `json:"NetworkingConfig,omitempty"` + *container.HostConfig // Deprecated. Exported to read attributes from json that are not in the inner host config structure. +} + +// getHostConfig gets the HostConfig of the Config. +// It's mostly there to handle Deprecated fields of the ContainerConfigWrapper +func (w *ContainerConfigWrapper) getHostConfig() *container.HostConfig { + hc := w.HostConfig + + if hc == nil && w.InnerHostConfig != nil { + hc = w.InnerHostConfig + } else if w.InnerHostConfig != nil { + if hc.Memory != 0 && w.InnerHostConfig.Memory == 0 { + w.InnerHostConfig.Memory = hc.Memory + } + if hc.MemorySwap != 0 && w.InnerHostConfig.MemorySwap == 0 { + w.InnerHostConfig.MemorySwap = hc.MemorySwap + } + if hc.CPUShares != 0 && w.InnerHostConfig.CPUShares == 0 { + w.InnerHostConfig.CPUShares = hc.CPUShares + } + if hc.CpusetCpus != "" && w.InnerHostConfig.CpusetCpus == "" { + w.InnerHostConfig.CpusetCpus = hc.CpusetCpus + } + + if hc.VolumeDriver != "" && w.InnerHostConfig.VolumeDriver == "" { + w.InnerHostConfig.VolumeDriver = hc.VolumeDriver + } + + hc = w.InnerHostConfig + } + + if hc != nil { + if w.Cpuset != "" && hc.CpusetCpus == "" { + hc.CpusetCpus = w.Cpuset + } + } + + // Make sure NetworkMode has an acceptable value. We do this to ensure + // backwards compatible API behavior. + SetDefaultNetModeIfBlank(hc) + + return hc +} diff --git a/vendor/github.com/docker/docker/runconfig/config_windows.go b/vendor/github.com/docker/docker/runconfig/config_windows.go new file mode 100644 index 0000000000..cced59d4df --- /dev/null +++ b/vendor/github.com/docker/docker/runconfig/config_windows.go @@ -0,0 +1,19 @@ +package runconfig // import "github.com/docker/docker/runconfig" + +import ( + "github.com/docker/docker/api/types/container" + networktypes "github.com/docker/docker/api/types/network" +) + +// ContainerConfigWrapper is a Config wrapper that holds the container Config (portable) +// and the corresponding HostConfig (non-portable). +type ContainerConfigWrapper struct { + *container.Config + HostConfig *container.HostConfig `json:"HostConfig,omitempty"` + NetworkingConfig *networktypes.NetworkingConfig `json:"NetworkingConfig,omitempty"` +} + +// getHostConfig gets the HostConfig of the Config. +func (w *ContainerConfigWrapper) getHostConfig() *container.HostConfig { + return w.HostConfig +} diff --git a/vendor/github.com/docker/docker/runconfig/errors.go b/vendor/github.com/docker/docker/runconfig/errors.go new file mode 100644 index 0000000000..038fe39660 --- /dev/null +++ b/vendor/github.com/docker/docker/runconfig/errors.go @@ -0,0 +1,42 @@ +package runconfig // import "github.com/docker/docker/runconfig" + +const ( + // ErrConflictContainerNetworkAndLinks conflict between --net=container and links + ErrConflictContainerNetworkAndLinks validationError = "conflicting options: container type network can't be used with links. This would result in undefined behavior" + // ErrConflictSharedNetwork conflict between private and other networks + ErrConflictSharedNetwork validationError = "container sharing network namespace with another container or host cannot be connected to any other network" + // ErrConflictHostNetwork conflict from being disconnected from host network or connected to host network. + ErrConflictHostNetwork validationError = "container cannot be disconnected from host network or connected to host network" + // ErrConflictNoNetwork conflict between private and other networks + ErrConflictNoNetwork validationError = "container cannot be connected to multiple networks with one of the networks in private (none) mode" + // ErrConflictNetworkAndDNS conflict between --dns and the network mode + ErrConflictNetworkAndDNS validationError = "conflicting options: dns and the network mode" + // ErrConflictNetworkHostname conflict between the hostname and the network mode + ErrConflictNetworkHostname validationError = "conflicting options: hostname and the network mode" + // ErrConflictHostNetworkAndLinks conflict between --net=host and links + ErrConflictHostNetworkAndLinks validationError = "conflicting options: host type networking can't be used with links. This would result in undefined behavior" + // ErrConflictContainerNetworkAndMac conflict between the mac address and the network mode + ErrConflictContainerNetworkAndMac validationError = "conflicting options: mac-address and the network mode" + // ErrConflictNetworkHosts conflict between add-host and the network mode + ErrConflictNetworkHosts validationError = "conflicting options: custom host-to-IP mapping and the network mode" + // ErrConflictNetworkPublishPorts conflict between the publish options and the network mode + ErrConflictNetworkPublishPorts validationError = "conflicting options: port publishing and the container type network mode" + // ErrConflictNetworkExposePorts conflict between the expose option and the network mode + ErrConflictNetworkExposePorts validationError = "conflicting options: port exposing and the container type network mode" + // ErrUnsupportedNetworkAndIP conflict between network mode and requested ip address + ErrUnsupportedNetworkAndIP validationError = "user specified IP address is supported on user defined networks only" + // ErrUnsupportedNetworkNoSubnetAndIP conflict between network with no configured subnet and requested ip address + ErrUnsupportedNetworkNoSubnetAndIP validationError = "user specified IP address is supported only when connecting to networks with user configured subnets" + // ErrUnsupportedNetworkAndAlias conflict between network mode and alias + ErrUnsupportedNetworkAndAlias validationError = "network-scoped alias is supported only for containers in user defined networks" + // ErrConflictUTSHostname conflict between the hostname and the UTS mode + ErrConflictUTSHostname validationError = "conflicting options: hostname and the UTS mode" +) + +type validationError string + +func (e validationError) Error() string { + return string(e) +} + +func (e validationError) InvalidParameter() {} diff --git a/vendor/github.com/docker/docker/runconfig/hostconfig.go b/vendor/github.com/docker/docker/runconfig/hostconfig.go new file mode 100644 index 0000000000..7d99e5acfa --- /dev/null +++ b/vendor/github.com/docker/docker/runconfig/hostconfig.go @@ -0,0 +1,79 @@ +package runconfig // import "github.com/docker/docker/runconfig" + +import ( + "encoding/json" + "io" + "strings" + + "github.com/docker/docker/api/types/container" +) + +// DecodeHostConfig creates a HostConfig based on the specified Reader. +// It assumes the content of the reader will be JSON, and decodes it. +func decodeHostConfig(src io.Reader) (*container.HostConfig, error) { + decoder := json.NewDecoder(src) + + var w ContainerConfigWrapper + if err := decoder.Decode(&w); err != nil { + return nil, err + } + + hc := w.getHostConfig() + return hc, nil +} + +// SetDefaultNetModeIfBlank changes the NetworkMode in a HostConfig structure +// to default if it is not populated. This ensures backwards compatibility after +// the validation of the network mode was moved from the docker CLI to the +// docker daemon. +func SetDefaultNetModeIfBlank(hc *container.HostConfig) { + if hc != nil { + if hc.NetworkMode == container.NetworkMode("") { + hc.NetworkMode = container.NetworkMode("default") + } + } +} + +// validateNetContainerMode ensures that the various combinations of requested +// network settings wrt container mode are valid. +func validateNetContainerMode(c *container.Config, hc *container.HostConfig) error { + // We may not be passed a host config, such as in the case of docker commit + if hc == nil { + return nil + } + parts := strings.Split(string(hc.NetworkMode), ":") + if parts[0] == "container" { + if len(parts) < 2 || parts[1] == "" { + return validationError("Invalid network mode: invalid container format container:") + } + } + + if hc.NetworkMode.IsContainer() && c.Hostname != "" { + return ErrConflictNetworkHostname + } + + if hc.NetworkMode.IsContainer() && len(hc.Links) > 0 { + return ErrConflictContainerNetworkAndLinks + } + + if hc.NetworkMode.IsContainer() && len(hc.DNS) > 0 { + return ErrConflictNetworkAndDNS + } + + if hc.NetworkMode.IsContainer() && len(hc.ExtraHosts) > 0 { + return ErrConflictNetworkHosts + } + + if (hc.NetworkMode.IsContainer() || hc.NetworkMode.IsHost()) && c.MacAddress != "" { + return ErrConflictContainerNetworkAndMac + } + + if hc.NetworkMode.IsContainer() && (len(hc.PortBindings) > 0 || hc.PublishAllPorts) { + return ErrConflictNetworkPublishPorts + } + + if hc.NetworkMode.IsContainer() && len(c.ExposedPorts) > 0 { + return ErrConflictNetworkExposePorts + } + return nil +} diff --git a/vendor/github.com/docker/docker/runconfig/hostconfig_unix.go b/vendor/github.com/docker/docker/runconfig/hostconfig_unix.go new file mode 100644 index 0000000000..e579b06d9b --- /dev/null +++ b/vendor/github.com/docker/docker/runconfig/hostconfig_unix.go @@ -0,0 +1,110 @@ +// +build !windows + +package runconfig // import "github.com/docker/docker/runconfig" + +import ( + "fmt" + "runtime" + + "github.com/docker/docker/api/types/container" + "github.com/docker/docker/pkg/sysinfo" +) + +// DefaultDaemonNetworkMode returns the default network stack the daemon should +// use. +func DefaultDaemonNetworkMode() container.NetworkMode { + return container.NetworkMode("bridge") +} + +// IsPreDefinedNetwork indicates if a network is predefined by the daemon +func IsPreDefinedNetwork(network string) bool { + n := container.NetworkMode(network) + return n.IsBridge() || n.IsHost() || n.IsNone() || n.IsDefault() +} + +// validateNetMode ensures that the various combinations of requested +// network settings are valid. +func validateNetMode(c *container.Config, hc *container.HostConfig) error { + // We may not be passed a host config, such as in the case of docker commit + if hc == nil { + return nil + } + + err := validateNetContainerMode(c, hc) + if err != nil { + return err + } + + if hc.UTSMode.IsHost() && c.Hostname != "" { + return ErrConflictUTSHostname + } + + if hc.NetworkMode.IsHost() && len(hc.Links) > 0 { + return ErrConflictHostNetworkAndLinks + } + + return nil +} + +// validateIsolation performs platform specific validation of +// isolation in the hostconfig structure. Linux only supports "default" +// which is LXC container isolation +func validateIsolation(hc *container.HostConfig) error { + // We may not be passed a host config, such as in the case of docker commit + if hc == nil { + return nil + } + if !hc.Isolation.IsValid() { + return fmt.Errorf("Invalid isolation: %q - %s only supports 'default'", hc.Isolation, runtime.GOOS) + } + return nil +} + +// validateQoS performs platform specific validation of the QoS settings +func validateQoS(hc *container.HostConfig) error { + // We may not be passed a host config, such as in the case of docker commit + if hc == nil { + return nil + } + + if hc.IOMaximumBandwidth != 0 { + return fmt.Errorf("Invalid QoS settings: %s does not support configuration of maximum bandwidth", runtime.GOOS) + } + + if hc.IOMaximumIOps != 0 { + return fmt.Errorf("Invalid QoS settings: %s does not support configuration of maximum IOPs", runtime.GOOS) + } + return nil +} + +// validateResources performs platform specific validation of the resource settings +// cpu-rt-runtime and cpu-rt-period can not be greater than their parent, cpu-rt-runtime requires sys_nice +func validateResources(hc *container.HostConfig, si *sysinfo.SysInfo) error { + // We may not be passed a host config, such as in the case of docker commit + if hc == nil { + return nil + } + + if hc.Resources.CPURealtimePeriod > 0 && !si.CPURealtimePeriod { + return fmt.Errorf("Your kernel does not support cgroup cpu real-time period") + } + + if hc.Resources.CPURealtimeRuntime > 0 && !si.CPURealtimeRuntime { + return fmt.Errorf("Your kernel does not support cgroup cpu real-time runtime") + } + + if hc.Resources.CPURealtimePeriod != 0 && hc.Resources.CPURealtimeRuntime != 0 && hc.Resources.CPURealtimeRuntime > hc.Resources.CPURealtimePeriod { + return fmt.Errorf("cpu real-time runtime cannot be higher than cpu real-time period") + } + return nil +} + +// validatePrivileged performs platform specific validation of the Privileged setting +func validatePrivileged(hc *container.HostConfig) error { + return nil +} + +// validateReadonlyRootfs performs platform specific validation of the ReadonlyRootfs setting +func validateReadonlyRootfs(hc *container.HostConfig) error { + return nil +} diff --git a/vendor/github.com/docker/docker/runconfig/hostconfig_windows.go b/vendor/github.com/docker/docker/runconfig/hostconfig_windows.go new file mode 100644 index 0000000000..33a4668af1 --- /dev/null +++ b/vendor/github.com/docker/docker/runconfig/hostconfig_windows.go @@ -0,0 +1,96 @@ +package runconfig // import "github.com/docker/docker/runconfig" + +import ( + "fmt" + + "github.com/docker/docker/api/types/container" + "github.com/docker/docker/pkg/sysinfo" +) + +// DefaultDaemonNetworkMode returns the default network stack the daemon should +// use. +func DefaultDaemonNetworkMode() container.NetworkMode { + return container.NetworkMode("nat") +} + +// IsPreDefinedNetwork indicates if a network is predefined by the daemon +func IsPreDefinedNetwork(network string) bool { + return !container.NetworkMode(network).IsUserDefined() +} + +// validateNetMode ensures that the various combinations of requested +// network settings are valid. +func validateNetMode(c *container.Config, hc *container.HostConfig) error { + if hc == nil { + return nil + } + + err := validateNetContainerMode(c, hc) + if err != nil { + return err + } + + if hc.NetworkMode.IsContainer() && hc.Isolation.IsHyperV() { + return fmt.Errorf("Using the network stack of another container is not supported while using Hyper-V Containers") + } + + return nil +} + +// validateIsolation performs platform specific validation of the +// isolation in the hostconfig structure. Windows supports 'default' (or +// blank), 'process', or 'hyperv'. +func validateIsolation(hc *container.HostConfig) error { + // We may not be passed a host config, such as in the case of docker commit + if hc == nil { + return nil + } + if !hc.Isolation.IsValid() { + return fmt.Errorf("Invalid isolation: %q. Windows supports 'default', 'process', or 'hyperv'", hc.Isolation) + } + return nil +} + +// validateQoS performs platform specific validation of the Qos settings +func validateQoS(hc *container.HostConfig) error { + return nil +} + +// validateResources performs platform specific validation of the resource settings +func validateResources(hc *container.HostConfig, si *sysinfo.SysInfo) error { + // We may not be passed a host config, such as in the case of docker commit + if hc == nil { + return nil + } + if hc.Resources.CPURealtimePeriod != 0 { + return fmt.Errorf("Windows does not support CPU real-time period") + } + if hc.Resources.CPURealtimeRuntime != 0 { + return fmt.Errorf("Windows does not support CPU real-time runtime") + } + return nil +} + +// validatePrivileged performs platform specific validation of the Privileged setting +func validatePrivileged(hc *container.HostConfig) error { + // We may not be passed a host config, such as in the case of docker commit + if hc == nil { + return nil + } + if hc.Privileged { + return fmt.Errorf("Windows does not support privileged mode") + } + return nil +} + +// validateReadonlyRootfs performs platform specific validation of the ReadonlyRootfs setting +func validateReadonlyRootfs(hc *container.HostConfig) error { + // We may not be passed a host config, such as in the case of docker commit + if hc == nil { + return nil + } + if hc.ReadonlyRootfs { + return fmt.Errorf("Windows does not support root filesystem in read-only mode") + } + return nil +} diff --git a/vendor/github.com/docker/docker/volume/mounts/linux_parser.go b/vendor/github.com/docker/docker/volume/mounts/linux_parser.go index 8e436aec0e..035a24a8d9 100644 --- a/vendor/github.com/docker/docker/volume/mounts/linux_parser.go +++ b/vendor/github.com/docker/docker/volume/mounts/linux_parser.go @@ -97,6 +97,9 @@ func (p *linuxParser) validateMountConfigImpl(mnt *mount.Mount, validateBindSour return &errMountConfig{mnt, fmt.Errorf("must not set ReadOnly mode when using anonymous volumes")} } case mount.TypeTmpfs: + if mnt.BindOptions != nil { + return &errMountConfig{mnt, errExtraField("BindOptions")} + } if len(mnt.Source) != 0 { return &errMountConfig{mnt, errExtraField("Source")} } diff --git a/vendor/github.com/docker/docker/volume/mounts/mounts.go b/vendor/github.com/docker/docker/volume/mounts/mounts.go index 8f255a5482..63a1406814 100644 --- a/vendor/github.com/docker/docker/volume/mounts/mounts.go +++ b/vendor/github.com/docker/docker/volume/mounts/mounts.go @@ -62,6 +62,12 @@ type MountPoint struct { // Sepc is a copy of the API request that created this mount. Spec mounttypes.Mount + // Some bind mounts should not be automatically created. + // (Some are auto-created for backwards-compatibility) + // This is checked on the API but setting this here prevents race conditions. + // where a bind dir existed during validation was removed before reaching the setup code. + SkipMountpointCreation bool + // Track usage of this mountpoint // Specifically needed for containers which are running and calls to `docker cp` // because both these actions require mounting the volumes. @@ -89,7 +95,11 @@ func (m *MountPoint) Cleanup() error { // configured, or creating the source directory if supplied. // The, optional, checkFun parameter allows doing additional checking // before creating the source directory on the host. -func (m *MountPoint) Setup(mountLabel string, rootIDs idtools.IDPair, checkFun func(m *MountPoint) error) (path string, err error) { +func (m *MountPoint) Setup(mountLabel string, rootIDs idtools.Identity, checkFun func(m *MountPoint) error) (path string, err error) { + if m.SkipMountpointCreation { + return m.Source, nil + } + defer func() { if err != nil || !label.RelabelNeeded(m.Mode) { return @@ -140,6 +150,7 @@ func (m *MountPoint) Setup(mountLabel string, rootIDs idtools.IDPair, checkFun f return "", err } } + // idtools.MkdirAllNewAs() produces an error if m.Source exists and is a file (not a directory) // also, makes sure that if the directory is created, the correct remapped rootUID/rootGID will own it if err := idtools.MkdirAllAndChownNew(m.Source, 0755, rootIDs); err != nil { diff --git a/vendor/github.com/docker/docker/volume/mounts/validate.go b/vendor/github.com/docker/docker/volume/mounts/validate.go index 0b71526901..9fc9109021 100644 --- a/vendor/github.com/docker/docker/volume/mounts/validate.go +++ b/vendor/github.com/docker/docker/volume/mounts/validate.go @@ -17,7 +17,7 @@ func (e *errMountConfig) Error() string { } func errBindSourceDoesNotExist(path string) error { - return errors.Errorf("bind mount source path does not exist: %s", path) + return errors.Errorf("bind source path does not exist: %s", path) } func errExtraField(name string) error { diff --git a/vendor/github.com/docker/go-units/MAINTAINERS b/vendor/github.com/docker/go-units/MAINTAINERS index 9b3b6b101e..4aac7c7411 100644 --- a/vendor/github.com/docker/go-units/MAINTAINERS +++ b/vendor/github.com/docker/go-units/MAINTAINERS @@ -27,7 +27,7 @@ [people.akihirosuda] Name = "Akihiro Suda" - Email = "suda.akihiro@lab.ntt.co.jp" + Email = "akihiro.suda.cz@hco.ntt.co.jp" GitHub = "AkihiroSuda" [people.dnephin] diff --git a/vendor/github.com/docker/go-units/circle.yml b/vendor/github.com/docker/go-units/circle.yml index 9043b35478..af9d605529 100644 --- a/vendor/github.com/docker/go-units/circle.yml +++ b/vendor/github.com/docker/go-units/circle.yml @@ -1,7 +1,7 @@ dependencies: post: # install golint - - go get github.com/golang/lint/golint + - go get golang.org/x/lint/golint test: pre: diff --git a/vendor/github.com/docker/go-units/duration.go b/vendor/github.com/docker/go-units/duration.go index ba02af26dc..48dd8744d4 100644 --- a/vendor/github.com/docker/go-units/duration.go +++ b/vendor/github.com/docker/go-units/duration.go @@ -18,7 +18,7 @@ func HumanDuration(d time.Duration) string { return fmt.Sprintf("%d seconds", seconds) } else if minutes := int(d.Minutes()); minutes == 1 { return "About a minute" - } else if minutes < 46 { + } else if minutes < 60 { return fmt.Sprintf("%d minutes", minutes) } else if hours := int(d.Hours() + 0.5); hours == 1 { return "About an hour" diff --git a/vendor/github.com/docker/go-units/ulimit.go b/vendor/github.com/docker/go-units/ulimit.go index 5ac7fd825f..fca0400cc8 100644 --- a/vendor/github.com/docker/go-units/ulimit.go +++ b/vendor/github.com/docker/go-units/ulimit.go @@ -96,8 +96,13 @@ func ParseUlimit(val string) (*Ulimit, error) { return nil, fmt.Errorf("too many limit value arguments - %s, can only have up to two, `soft[:hard]`", parts[1]) } - if soft > *hard { - return nil, fmt.Errorf("ulimit soft limit must be less than or equal to hard limit: %d > %d", soft, *hard) + if *hard != -1 { + if soft == -1 { + return nil, fmt.Errorf("ulimit soft limit must be less than or equal to hard limit: soft: -1 (unlimited), hard: %d", *hard) + } + if soft > *hard { + return nil, fmt.Errorf("ulimit soft limit must be less than or equal to hard limit: %d > %d", soft, *hard) + } } return &Ulimit{Name: parts[0], Soft: soft, Hard: *hard}, nil diff --git a/vendor/github.com/gogo/protobuf/LICENSE b/vendor/github.com/gogo/protobuf/LICENSE index 7be0cc7b62..f57de90da8 100644 --- a/vendor/github.com/gogo/protobuf/LICENSE +++ b/vendor/github.com/gogo/protobuf/LICENSE @@ -1,7 +1,6 @@ -Protocol Buffers for Go with Gadgets - Copyright (c) 2013, The GoGo Authors. All rights reserved. -http://github.com/gogo/protobuf + +Protocol Buffers for Go with Gadgets Go support for Protocol Buffers - Google's data interchange format diff --git a/vendor/github.com/gogo/protobuf/gogoproto/doc.go b/vendor/github.com/gogo/protobuf/gogoproto/doc.go index 147b5ecc62..081c86fa8e 100644 --- a/vendor/github.com/gogo/protobuf/gogoproto/doc.go +++ b/vendor/github.com/gogo/protobuf/gogoproto/doc.go @@ -162,7 +162,7 @@ The most complete way to see examples is to look at github.com/gogo/protobuf/test/thetest.proto Gogoprototest is a seperate project, -because we want to keep gogoprotobuf independant of goprotobuf, +because we want to keep gogoprotobuf independent of goprotobuf, but we still want to test it thoroughly. */ diff --git a/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go b/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go index 97843b2448..e352808b90 100644 --- a/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go +++ b/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go @@ -1,12 +1,14 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: gogo.proto -package gogoproto // import "github.com/gogo/protobuf/gogoproto" +package gogoproto -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" -import descriptor "github.com/gogo/protobuf/protoc-gen-gogo/descriptor" +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + descriptor "github.com/gogo/protobuf/protoc-gen-gogo/descriptor" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -24,7 +26,7 @@ var E_GoprotoEnumPrefix = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 62001, Name: "gogoproto.goproto_enum_prefix", - Tag: "varint,62001,opt,name=goproto_enum_prefix,json=goprotoEnumPrefix", + Tag: "varint,62001,opt,name=goproto_enum_prefix", Filename: "gogo.proto", } @@ -33,7 +35,7 @@ var E_GoprotoEnumStringer = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 62021, Name: "gogoproto.goproto_enum_stringer", - Tag: "varint,62021,opt,name=goproto_enum_stringer,json=goprotoEnumStringer", + Tag: "varint,62021,opt,name=goproto_enum_stringer", Filename: "gogo.proto", } @@ -42,7 +44,7 @@ var E_EnumStringer = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 62022, Name: "gogoproto.enum_stringer", - Tag: "varint,62022,opt,name=enum_stringer,json=enumStringer", + Tag: "varint,62022,opt,name=enum_stringer", Filename: "gogo.proto", } @@ -51,7 +53,7 @@ var E_EnumCustomname = &proto.ExtensionDesc{ ExtensionType: (*string)(nil), Field: 62023, Name: "gogoproto.enum_customname", - Tag: "bytes,62023,opt,name=enum_customname,json=enumCustomname", + Tag: "bytes,62023,opt,name=enum_customname", Filename: "gogo.proto", } @@ -69,7 +71,7 @@ var E_EnumvalueCustomname = &proto.ExtensionDesc{ ExtensionType: (*string)(nil), Field: 66001, Name: "gogoproto.enumvalue_customname", - Tag: "bytes,66001,opt,name=enumvalue_customname,json=enumvalueCustomname", + Tag: "bytes,66001,opt,name=enumvalue_customname", Filename: "gogo.proto", } @@ -78,7 +80,7 @@ var E_GoprotoGettersAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63001, Name: "gogoproto.goproto_getters_all", - Tag: "varint,63001,opt,name=goproto_getters_all,json=goprotoGettersAll", + Tag: "varint,63001,opt,name=goproto_getters_all", Filename: "gogo.proto", } @@ -87,7 +89,7 @@ var E_GoprotoEnumPrefixAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63002, Name: "gogoproto.goproto_enum_prefix_all", - Tag: "varint,63002,opt,name=goproto_enum_prefix_all,json=goprotoEnumPrefixAll", + Tag: "varint,63002,opt,name=goproto_enum_prefix_all", Filename: "gogo.proto", } @@ -96,7 +98,7 @@ var E_GoprotoStringerAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63003, Name: "gogoproto.goproto_stringer_all", - Tag: "varint,63003,opt,name=goproto_stringer_all,json=goprotoStringerAll", + Tag: "varint,63003,opt,name=goproto_stringer_all", Filename: "gogo.proto", } @@ -105,7 +107,7 @@ var E_VerboseEqualAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63004, Name: "gogoproto.verbose_equal_all", - Tag: "varint,63004,opt,name=verbose_equal_all,json=verboseEqualAll", + Tag: "varint,63004,opt,name=verbose_equal_all", Filename: "gogo.proto", } @@ -114,7 +116,7 @@ var E_FaceAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63005, Name: "gogoproto.face_all", - Tag: "varint,63005,opt,name=face_all,json=faceAll", + Tag: "varint,63005,opt,name=face_all", Filename: "gogo.proto", } @@ -123,7 +125,7 @@ var E_GostringAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63006, Name: "gogoproto.gostring_all", - Tag: "varint,63006,opt,name=gostring_all,json=gostringAll", + Tag: "varint,63006,opt,name=gostring_all", Filename: "gogo.proto", } @@ -132,7 +134,7 @@ var E_PopulateAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63007, Name: "gogoproto.populate_all", - Tag: "varint,63007,opt,name=populate_all,json=populateAll", + Tag: "varint,63007,opt,name=populate_all", Filename: "gogo.proto", } @@ -141,7 +143,7 @@ var E_StringerAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63008, Name: "gogoproto.stringer_all", - Tag: "varint,63008,opt,name=stringer_all,json=stringerAll", + Tag: "varint,63008,opt,name=stringer_all", Filename: "gogo.proto", } @@ -150,7 +152,7 @@ var E_OnlyoneAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63009, Name: "gogoproto.onlyone_all", - Tag: "varint,63009,opt,name=onlyone_all,json=onlyoneAll", + Tag: "varint,63009,opt,name=onlyone_all", Filename: "gogo.proto", } @@ -159,7 +161,7 @@ var E_EqualAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63013, Name: "gogoproto.equal_all", - Tag: "varint,63013,opt,name=equal_all,json=equalAll", + Tag: "varint,63013,opt,name=equal_all", Filename: "gogo.proto", } @@ -168,7 +170,7 @@ var E_DescriptionAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63014, Name: "gogoproto.description_all", - Tag: "varint,63014,opt,name=description_all,json=descriptionAll", + Tag: "varint,63014,opt,name=description_all", Filename: "gogo.proto", } @@ -177,7 +179,7 @@ var E_TestgenAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63015, Name: "gogoproto.testgen_all", - Tag: "varint,63015,opt,name=testgen_all,json=testgenAll", + Tag: "varint,63015,opt,name=testgen_all", Filename: "gogo.proto", } @@ -186,7 +188,7 @@ var E_BenchgenAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63016, Name: "gogoproto.benchgen_all", - Tag: "varint,63016,opt,name=benchgen_all,json=benchgenAll", + Tag: "varint,63016,opt,name=benchgen_all", Filename: "gogo.proto", } @@ -195,7 +197,7 @@ var E_MarshalerAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63017, Name: "gogoproto.marshaler_all", - Tag: "varint,63017,opt,name=marshaler_all,json=marshalerAll", + Tag: "varint,63017,opt,name=marshaler_all", Filename: "gogo.proto", } @@ -204,7 +206,7 @@ var E_UnmarshalerAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63018, Name: "gogoproto.unmarshaler_all", - Tag: "varint,63018,opt,name=unmarshaler_all,json=unmarshalerAll", + Tag: "varint,63018,opt,name=unmarshaler_all", Filename: "gogo.proto", } @@ -213,7 +215,7 @@ var E_StableMarshalerAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63019, Name: "gogoproto.stable_marshaler_all", - Tag: "varint,63019,opt,name=stable_marshaler_all,json=stableMarshalerAll", + Tag: "varint,63019,opt,name=stable_marshaler_all", Filename: "gogo.proto", } @@ -222,7 +224,7 @@ var E_SizerAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63020, Name: "gogoproto.sizer_all", - Tag: "varint,63020,opt,name=sizer_all,json=sizerAll", + Tag: "varint,63020,opt,name=sizer_all", Filename: "gogo.proto", } @@ -231,7 +233,7 @@ var E_GoprotoEnumStringerAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63021, Name: "gogoproto.goproto_enum_stringer_all", - Tag: "varint,63021,opt,name=goproto_enum_stringer_all,json=goprotoEnumStringerAll", + Tag: "varint,63021,opt,name=goproto_enum_stringer_all", Filename: "gogo.proto", } @@ -240,7 +242,7 @@ var E_EnumStringerAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63022, Name: "gogoproto.enum_stringer_all", - Tag: "varint,63022,opt,name=enum_stringer_all,json=enumStringerAll", + Tag: "varint,63022,opt,name=enum_stringer_all", Filename: "gogo.proto", } @@ -249,7 +251,7 @@ var E_UnsafeMarshalerAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63023, Name: "gogoproto.unsafe_marshaler_all", - Tag: "varint,63023,opt,name=unsafe_marshaler_all,json=unsafeMarshalerAll", + Tag: "varint,63023,opt,name=unsafe_marshaler_all", Filename: "gogo.proto", } @@ -258,7 +260,7 @@ var E_UnsafeUnmarshalerAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63024, Name: "gogoproto.unsafe_unmarshaler_all", - Tag: "varint,63024,opt,name=unsafe_unmarshaler_all,json=unsafeUnmarshalerAll", + Tag: "varint,63024,opt,name=unsafe_unmarshaler_all", Filename: "gogo.proto", } @@ -267,7 +269,7 @@ var E_GoprotoExtensionsMapAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63025, Name: "gogoproto.goproto_extensions_map_all", - Tag: "varint,63025,opt,name=goproto_extensions_map_all,json=goprotoExtensionsMapAll", + Tag: "varint,63025,opt,name=goproto_extensions_map_all", Filename: "gogo.proto", } @@ -276,7 +278,7 @@ var E_GoprotoUnrecognizedAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63026, Name: "gogoproto.goproto_unrecognized_all", - Tag: "varint,63026,opt,name=goproto_unrecognized_all,json=goprotoUnrecognizedAll", + Tag: "varint,63026,opt,name=goproto_unrecognized_all", Filename: "gogo.proto", } @@ -285,7 +287,7 @@ var E_GogoprotoImport = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63027, Name: "gogoproto.gogoproto_import", - Tag: "varint,63027,opt,name=gogoproto_import,json=gogoprotoImport", + Tag: "varint,63027,opt,name=gogoproto_import", Filename: "gogo.proto", } @@ -294,7 +296,7 @@ var E_ProtosizerAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63028, Name: "gogoproto.protosizer_all", - Tag: "varint,63028,opt,name=protosizer_all,json=protosizerAll", + Tag: "varint,63028,opt,name=protosizer_all", Filename: "gogo.proto", } @@ -303,7 +305,7 @@ var E_CompareAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63029, Name: "gogoproto.compare_all", - Tag: "varint,63029,opt,name=compare_all,json=compareAll", + Tag: "varint,63029,opt,name=compare_all", Filename: "gogo.proto", } @@ -312,7 +314,7 @@ var E_TypedeclAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63030, Name: "gogoproto.typedecl_all", - Tag: "varint,63030,opt,name=typedecl_all,json=typedeclAll", + Tag: "varint,63030,opt,name=typedecl_all", Filename: "gogo.proto", } @@ -321,7 +323,7 @@ var E_EnumdeclAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63031, Name: "gogoproto.enumdecl_all", - Tag: "varint,63031,opt,name=enumdecl_all,json=enumdeclAll", + Tag: "varint,63031,opt,name=enumdecl_all", Filename: "gogo.proto", } @@ -330,7 +332,7 @@ var E_GoprotoRegistration = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63032, Name: "gogoproto.goproto_registration", - Tag: "varint,63032,opt,name=goproto_registration,json=goprotoRegistration", + Tag: "varint,63032,opt,name=goproto_registration", Filename: "gogo.proto", } @@ -339,7 +341,25 @@ var E_MessagenameAll = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 63033, Name: "gogoproto.messagename_all", - Tag: "varint,63033,opt,name=messagename_all,json=messagenameAll", + Tag: "varint,63033,opt,name=messagename_all", + Filename: "gogo.proto", +} + +var E_GoprotoSizecacheAll = &proto.ExtensionDesc{ + ExtendedType: (*descriptor.FileOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 63034, + Name: "gogoproto.goproto_sizecache_all", + Tag: "varint,63034,opt,name=goproto_sizecache_all", + Filename: "gogo.proto", +} + +var E_GoprotoUnkeyedAll = &proto.ExtensionDesc{ + ExtendedType: (*descriptor.FileOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 63035, + Name: "gogoproto.goproto_unkeyed_all", + Tag: "varint,63035,opt,name=goproto_unkeyed_all", Filename: "gogo.proto", } @@ -348,7 +368,7 @@ var E_GoprotoGetters = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 64001, Name: "gogoproto.goproto_getters", - Tag: "varint,64001,opt,name=goproto_getters,json=goprotoGetters", + Tag: "varint,64001,opt,name=goproto_getters", Filename: "gogo.proto", } @@ -357,7 +377,7 @@ var E_GoprotoStringer = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 64003, Name: "gogoproto.goproto_stringer", - Tag: "varint,64003,opt,name=goproto_stringer,json=goprotoStringer", + Tag: "varint,64003,opt,name=goproto_stringer", Filename: "gogo.proto", } @@ -366,7 +386,7 @@ var E_VerboseEqual = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 64004, Name: "gogoproto.verbose_equal", - Tag: "varint,64004,opt,name=verbose_equal,json=verboseEqual", + Tag: "varint,64004,opt,name=verbose_equal", Filename: "gogo.proto", } @@ -474,7 +494,7 @@ var E_StableMarshaler = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 64019, Name: "gogoproto.stable_marshaler", - Tag: "varint,64019,opt,name=stable_marshaler,json=stableMarshaler", + Tag: "varint,64019,opt,name=stable_marshaler", Filename: "gogo.proto", } @@ -492,7 +512,7 @@ var E_UnsafeMarshaler = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 64023, Name: "gogoproto.unsafe_marshaler", - Tag: "varint,64023,opt,name=unsafe_marshaler,json=unsafeMarshaler", + Tag: "varint,64023,opt,name=unsafe_marshaler", Filename: "gogo.proto", } @@ -501,7 +521,7 @@ var E_UnsafeUnmarshaler = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 64024, Name: "gogoproto.unsafe_unmarshaler", - Tag: "varint,64024,opt,name=unsafe_unmarshaler,json=unsafeUnmarshaler", + Tag: "varint,64024,opt,name=unsafe_unmarshaler", Filename: "gogo.proto", } @@ -510,7 +530,7 @@ var E_GoprotoExtensionsMap = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 64025, Name: "gogoproto.goproto_extensions_map", - Tag: "varint,64025,opt,name=goproto_extensions_map,json=goprotoExtensionsMap", + Tag: "varint,64025,opt,name=goproto_extensions_map", Filename: "gogo.proto", } @@ -519,7 +539,7 @@ var E_GoprotoUnrecognized = &proto.ExtensionDesc{ ExtensionType: (*bool)(nil), Field: 64026, Name: "gogoproto.goproto_unrecognized", - Tag: "varint,64026,opt,name=goproto_unrecognized,json=goprotoUnrecognized", + Tag: "varint,64026,opt,name=goproto_unrecognized", Filename: "gogo.proto", } @@ -559,6 +579,24 @@ var E_Messagename = &proto.ExtensionDesc{ Filename: "gogo.proto", } +var E_GoprotoSizecache = &proto.ExtensionDesc{ + ExtendedType: (*descriptor.MessageOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 64034, + Name: "gogoproto.goproto_sizecache", + Tag: "varint,64034,opt,name=goproto_sizecache", + Filename: "gogo.proto", +} + +var E_GoprotoUnkeyed = &proto.ExtensionDesc{ + ExtendedType: (*descriptor.MessageOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 64035, + Name: "gogoproto.goproto_unkeyed", + Tag: "varint,64035,opt,name=goproto_unkeyed", + Filename: "gogo.proto", +} + var E_Nullable = &proto.ExtensionDesc{ ExtendedType: (*descriptor.FieldOptions)(nil), ExtensionType: (*bool)(nil), @@ -658,6 +696,15 @@ var E_Stdduration = &proto.ExtensionDesc{ Filename: "gogo.proto", } +var E_Wktpointer = &proto.ExtensionDesc{ + ExtendedType: (*descriptor.FieldOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 65012, + Name: "gogoproto.wktpointer", + Tag: "varint,65012,opt,name=wktpointer", + Filename: "gogo.proto", +} + func init() { proto.RegisterExtension(E_GoprotoEnumPrefix) proto.RegisterExtension(E_GoprotoEnumStringer) @@ -695,6 +742,8 @@ func init() { proto.RegisterExtension(E_EnumdeclAll) proto.RegisterExtension(E_GoprotoRegistration) proto.RegisterExtension(E_MessagenameAll) + proto.RegisterExtension(E_GoprotoSizecacheAll) + proto.RegisterExtension(E_GoprotoUnkeyedAll) proto.RegisterExtension(E_GoprotoGetters) proto.RegisterExtension(E_GoprotoStringer) proto.RegisterExtension(E_VerboseEqual) @@ -719,6 +768,8 @@ func init() { proto.RegisterExtension(E_Compare) proto.RegisterExtension(E_Typedecl) proto.RegisterExtension(E_Messagename) + proto.RegisterExtension(E_GoprotoSizecache) + proto.RegisterExtension(E_GoprotoUnkeyed) proto.RegisterExtension(E_Nullable) proto.RegisterExtension(E_Embed) proto.RegisterExtension(E_Customtype) @@ -730,88 +781,94 @@ func init() { proto.RegisterExtension(E_Castvalue) proto.RegisterExtension(E_Stdtime) proto.RegisterExtension(E_Stdduration) + proto.RegisterExtension(E_Wktpointer) } -func init() { proto.RegisterFile("gogo.proto", fileDescriptor_gogo_68790841c0f79064) } +func init() { proto.RegisterFile("gogo.proto", fileDescriptor_592445b5231bc2b9) } -var fileDescriptor_gogo_68790841c0f79064 = []byte{ - // 1246 bytes of a gzipped FileDescriptorProto +var fileDescriptor_592445b5231bc2b9 = []byte{ + // 1328 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x98, 0x49, 0x6f, 0x1c, 0x45, - 0x14, 0x80, 0x85, 0x70, 0x64, 0xcf, 0xf3, 0x86, 0xc7, 0xc6, 0x84, 0x08, 0x44, 0xe0, 0xc4, 0xc9, - 0x3e, 0x45, 0x28, 0x65, 0x45, 0x96, 0x63, 0x39, 0x56, 0x10, 0x06, 0x63, 0xe2, 0xb0, 0x1d, 0x46, - 0x3d, 0x33, 0xe5, 0x76, 0x43, 0x77, 0xd7, 0xd0, 0x5d, 0x1d, 0xc5, 0xb9, 0xa1, 0xb0, 0x08, 0x21, - 0x76, 0x24, 0x48, 0x48, 0x02, 0x39, 0xb0, 0xaf, 0x61, 0xe7, 0xc6, 0x85, 0xe5, 0xca, 0x7f, 0xe0, - 0x02, 0x98, 0xdd, 0x37, 0x5f, 0xa2, 0xd7, 0xfd, 0x5e, 0x4f, 0xcd, 0x78, 0xa4, 0xaa, 0xb9, 0xb5, - 0xed, 0xfa, 0x3e, 0x57, 0xbf, 0x57, 0xf5, 0xde, 0x9b, 0x01, 0xf0, 0x95, 0xaf, 0x66, 0x5a, 0x89, - 0xd2, 0xaa, 0x5a, 0xc1, 0xe7, 0xfc, 0xf1, 0xc0, 0x41, 0x5f, 0x29, 0x3f, 0x94, 0xb3, 0xf9, 0x4f, - 0xf5, 0x6c, 0x63, 0xb6, 0x29, 0xd3, 0x46, 0x12, 0xb4, 0xb4, 0x4a, 0x8a, 0xc5, 0xe2, 0x6e, 0x98, - 0xa4, 0xc5, 0x35, 0x19, 0x67, 0x51, 0xad, 0x95, 0xc8, 0x8d, 0xe0, 0x74, 0xf5, 0xa6, 0x99, 0x82, - 0x9c, 0x61, 0x72, 0x66, 0x29, 0xce, 0xa2, 0x7b, 0x5a, 0x3a, 0x50, 0x71, 0xba, 0xff, 0xca, 0xaf, - 0xd7, 0x1e, 0xbc, 0xe6, 0xf6, 0xa1, 0xb5, 0x09, 0x42, 0xf1, 0x6f, 0xab, 0x39, 0x28, 0xd6, 0xe0, - 0xfa, 0x0e, 0x5f, 0xaa, 0x93, 0x20, 0xf6, 0x65, 0x62, 0x31, 0xfe, 0x40, 0xc6, 0x49, 0xc3, 0x78, - 0x1f, 0xa1, 0x62, 0x11, 0x46, 0xfb, 0x71, 0xfd, 0x48, 0xae, 0x11, 0x69, 0x4a, 0x96, 0x61, 0x3c, - 0x97, 0x34, 0xb2, 0x54, 0xab, 0x28, 0xf6, 0x22, 0x69, 0xd1, 0xfc, 0x94, 0x6b, 0x2a, 0x6b, 0x63, - 0x88, 0x2d, 0x96, 0x94, 0x10, 0x30, 0x84, 0xbf, 0x69, 0xca, 0x46, 0x68, 0x31, 0xfc, 0x4c, 0x1b, - 0x29, 0xd7, 0x8b, 0x93, 0x30, 0x85, 0xcf, 0xa7, 0xbc, 0x30, 0x93, 0xe6, 0x4e, 0x6e, 0xed, 0xe9, - 0x39, 0x89, 0xcb, 0x58, 0xf6, 0xcb, 0xd9, 0x81, 0x7c, 0x3b, 0x93, 0xa5, 0xc0, 0xd8, 0x93, 0x91, - 0x45, 0x5f, 0x6a, 0x2d, 0x93, 0xb4, 0xe6, 0x85, 0xbd, 0xb6, 0x77, 0x2c, 0x08, 0x4b, 0xe3, 0xb9, - 0xed, 0xce, 0x2c, 0x2e, 0x17, 0xe4, 0x42, 0x18, 0x8a, 0x75, 0xb8, 0xa1, 0xc7, 0xa9, 0x70, 0x70, - 0x9e, 0x27, 0xe7, 0xd4, 0x9e, 0x93, 0x81, 0xda, 0x55, 0xe0, 0xdf, 0x97, 0xb9, 0x74, 0x70, 0xbe, - 0x41, 0xce, 0x2a, 0xb1, 0x9c, 0x52, 0x34, 0xde, 0x09, 0x13, 0xa7, 0x64, 0x52, 0x57, 0xa9, 0xac, - 0xc9, 0xc7, 0x32, 0x2f, 0x74, 0xd0, 0x5d, 0x20, 0xdd, 0x38, 0x81, 0x4b, 0xc8, 0xa1, 0xeb, 0x30, - 0x0c, 0x6d, 0x78, 0x0d, 0xe9, 0xa0, 0xb8, 0x48, 0x8a, 0x41, 0x5c, 0x8f, 0xe8, 0x02, 0x8c, 0xf8, - 0xaa, 0x78, 0x25, 0x07, 0xfc, 0x12, 0xe1, 0xc3, 0xcc, 0x90, 0xa2, 0xa5, 0x5a, 0x59, 0xe8, 0x69, - 0x97, 0x1d, 0xbc, 0xc9, 0x0a, 0x66, 0x48, 0xd1, 0x47, 0x58, 0xdf, 0x62, 0x45, 0x6a, 0xc4, 0x73, - 0x1e, 0x86, 0x55, 0x1c, 0x6e, 0xa9, 0xd8, 0x65, 0x13, 0x97, 0xc9, 0x00, 0x84, 0xa0, 0x60, 0x0e, - 0x2a, 0xae, 0x89, 0x78, 0x7b, 0x9b, 0xaf, 0x07, 0x67, 0x60, 0x19, 0xc6, 0xb9, 0x40, 0x05, 0x2a, - 0x76, 0x50, 0xbc, 0x43, 0x8a, 0x31, 0x03, 0xa3, 0xd7, 0xd0, 0x32, 0xd5, 0xbe, 0x74, 0x91, 0xbc, - 0xcb, 0xaf, 0x41, 0x08, 0x85, 0xb2, 0x2e, 0xe3, 0xc6, 0xa6, 0x9b, 0xe1, 0x3d, 0x0e, 0x25, 0x33, - 0xa8, 0x58, 0x84, 0xd1, 0xc8, 0x4b, 0xd2, 0x4d, 0x2f, 0x74, 0x4a, 0xc7, 0xfb, 0xe4, 0x18, 0x29, - 0x21, 0x8a, 0x48, 0x16, 0xf7, 0xa3, 0xf9, 0x80, 0x23, 0x62, 0x60, 0x74, 0xf5, 0x52, 0xed, 0xd5, - 0x43, 0x59, 0xeb, 0xc7, 0xf6, 0x21, 0x5f, 0xbd, 0x82, 0x5d, 0x31, 0x8d, 0x73, 0x50, 0x49, 0x83, - 0x33, 0x4e, 0x9a, 0x8f, 0x38, 0xd3, 0x39, 0x80, 0xf0, 0x83, 0x70, 0x63, 0xcf, 0x36, 0xe1, 0x20, - 0xfb, 0x98, 0x64, 0xd3, 0x3d, 0x5a, 0x05, 0x95, 0x84, 0x7e, 0x95, 0x9f, 0x70, 0x49, 0x90, 0x5d, - 0xae, 0x55, 0x98, 0xca, 0xe2, 0xd4, 0xdb, 0xe8, 0x2f, 0x6a, 0x9f, 0x72, 0xd4, 0x0a, 0xb6, 0x23, - 0x6a, 0x27, 0x60, 0x9a, 0x8c, 0xfd, 0xe5, 0xf5, 0x33, 0x2e, 0xac, 0x05, 0xbd, 0xde, 0x99, 0xdd, - 0x87, 0xe1, 0x40, 0x19, 0xce, 0xd3, 0x5a, 0xc6, 0x29, 0x32, 0xb5, 0xc8, 0x6b, 0x39, 0x98, 0xaf, - 0x90, 0x99, 0x2b, 0xfe, 0x52, 0x29, 0x58, 0xf1, 0x5a, 0x28, 0x7f, 0x00, 0xf6, 0xb3, 0x3c, 0x8b, - 0x13, 0xd9, 0x50, 0x7e, 0x1c, 0x9c, 0x91, 0x4d, 0x07, 0xf5, 0xe7, 0x5d, 0xa9, 0x5a, 0x37, 0x70, - 0x34, 0x1f, 0x87, 0xeb, 0xca, 0x59, 0xa5, 0x16, 0x44, 0x2d, 0x95, 0x68, 0x8b, 0xf1, 0x0b, 0xce, - 0x54, 0xc9, 0x1d, 0xcf, 0x31, 0xb1, 0x04, 0x63, 0xf9, 0x8f, 0xae, 0x47, 0xf2, 0x4b, 0x12, 0x8d, - 0xb6, 0x29, 0x2a, 0x1c, 0x0d, 0x15, 0xb5, 0xbc, 0xc4, 0xa5, 0xfe, 0x7d, 0xc5, 0x85, 0x83, 0x10, - 0x2a, 0x1c, 0x7a, 0xab, 0x25, 0xb1, 0xdb, 0x3b, 0x18, 0xbe, 0xe6, 0xc2, 0xc1, 0x0c, 0x29, 0x78, - 0x60, 0x70, 0x50, 0x7c, 0xc3, 0x0a, 0x66, 0x50, 0x71, 0x6f, 0xbb, 0xd1, 0x26, 0xd2, 0x0f, 0x52, - 0x9d, 0x78, 0xb8, 0xda, 0xa2, 0xfa, 0x76, 0xbb, 0x73, 0x08, 0x5b, 0x33, 0x50, 0xac, 0x44, 0x91, - 0x4c, 0x53, 0xcf, 0x97, 0x38, 0x71, 0x38, 0x6c, 0xec, 0x3b, 0xae, 0x44, 0x06, 0x56, 0xdc, 0xcf, - 0xf1, 0xae, 0x59, 0xa5, 0x7a, 0xcb, 0x1e, 0xd1, 0x4a, 0xc1, 0xb0, 0xeb, 0xf1, 0x1d, 0x72, 0x75, - 0x8e, 0x2a, 0xe2, 0x2e, 0x3c, 0x40, 0x9d, 0x03, 0x85, 0x5d, 0x76, 0x76, 0xa7, 0x3c, 0x43, 0x1d, - 0xf3, 0x84, 0x38, 0x06, 0xa3, 0x1d, 0xc3, 0x84, 0x5d, 0xf5, 0x04, 0xa9, 0x46, 0xcc, 0x59, 0x42, - 0x1c, 0x82, 0x01, 0x1c, 0x0c, 0xec, 0xf8, 0x93, 0x84, 0xe7, 0xcb, 0xc5, 0x11, 0x18, 0xe2, 0x81, - 0xc0, 0x8e, 0x3e, 0x45, 0x68, 0x89, 0x20, 0xce, 0xc3, 0x80, 0x1d, 0x7f, 0x9a, 0x71, 0x46, 0x10, - 0x77, 0x0f, 0xe1, 0xf7, 0xcf, 0x0e, 0x50, 0x41, 0xe7, 0xd8, 0xcd, 0xc1, 0x20, 0x4d, 0x01, 0x76, - 0xfa, 0x19, 0xfa, 0xe7, 0x4c, 0x88, 0x3b, 0x60, 0x9f, 0x63, 0xc0, 0x9f, 0x23, 0xb4, 0x58, 0x2f, - 0x16, 0x61, 0xd8, 0xe8, 0xfc, 0x76, 0xfc, 0x79, 0xc2, 0x4d, 0x0a, 0xb7, 0x4e, 0x9d, 0xdf, 0x2e, - 0x78, 0x81, 0xb7, 0x4e, 0x04, 0x86, 0x8d, 0x9b, 0xbe, 0x9d, 0x7e, 0x91, 0xa3, 0xce, 0x88, 0x98, - 0x87, 0x4a, 0x59, 0xc8, 0xed, 0xfc, 0x4b, 0xc4, 0xb7, 0x19, 0x8c, 0x80, 0xd1, 0x48, 0xec, 0x8a, - 0x97, 0x39, 0x02, 0x06, 0x85, 0xd7, 0xa8, 0x7b, 0x38, 0xb0, 0x9b, 0x5e, 0xe1, 0x6b, 0xd4, 0x35, - 0x1b, 0x60, 0x36, 0xf3, 0x7a, 0x6a, 0x57, 0xbc, 0xca, 0xd9, 0xcc, 0xd7, 0xe3, 0x36, 0xba, 0xbb, - 0xad, 0xdd, 0xf1, 0x1a, 0x6f, 0xa3, 0xab, 0xd9, 0x8a, 0x55, 0xa8, 0xee, 0xed, 0xb4, 0x76, 0xdf, - 0xeb, 0xe4, 0x9b, 0xd8, 0xd3, 0x68, 0xc5, 0xfd, 0x30, 0xdd, 0xbb, 0xcb, 0xda, 0xad, 0xe7, 0x76, - 0xba, 0x3e, 0x17, 0x99, 0x4d, 0x56, 0x9c, 0x68, 0x97, 0x6b, 0xb3, 0xc3, 0xda, 0xb5, 0xe7, 0x77, - 0x3a, 0x2b, 0xb6, 0xd9, 0x60, 0xc5, 0x02, 0x40, 0xbb, 0xb9, 0xd9, 0x5d, 0x17, 0xc8, 0x65, 0x40, - 0x78, 0x35, 0xa8, 0xb7, 0xd9, 0xf9, 0x8b, 0x7c, 0x35, 0x88, 0xc0, 0xab, 0xc1, 0x6d, 0xcd, 0x4e, - 0x5f, 0xe2, 0xab, 0xc1, 0x08, 0x9e, 0x6c, 0xa3, 0x73, 0xd8, 0x0d, 0x97, 0xf9, 0x64, 0x1b, 0x94, - 0x98, 0x83, 0xa1, 0x38, 0x0b, 0x43, 0x3c, 0xa0, 0xd5, 0x9b, 0x7b, 0xb4, 0x2b, 0x19, 0x36, 0x99, - 0xff, 0x6d, 0x97, 0x76, 0xc0, 0x80, 0x38, 0x04, 0xfb, 0x64, 0x54, 0x97, 0x4d, 0x1b, 0xf9, 0xfb, - 0x2e, 0x17, 0x25, 0x5c, 0x2d, 0xe6, 0x01, 0x8a, 0x8f, 0xf6, 0xf8, 0x2a, 0x36, 0xf6, 0x8f, 0xdd, - 0xe2, 0x5b, 0x06, 0x03, 0x69, 0x0b, 0xf2, 0x17, 0xb7, 0x08, 0xb6, 0x3b, 0x05, 0xf9, 0x5b, 0x1f, - 0x86, 0xc1, 0x47, 0x52, 0x15, 0x6b, 0xcf, 0xb7, 0xd1, 0x7f, 0x12, 0xcd, 0xeb, 0x31, 0x60, 0x91, - 0x4a, 0xa4, 0xf6, 0xfc, 0xd4, 0xc6, 0xfe, 0x45, 0x6c, 0x09, 0x20, 0xdc, 0xf0, 0x52, 0xed, 0xf2, - 0xde, 0x7f, 0x33, 0xcc, 0x00, 0x6e, 0x1a, 0x9f, 0x1f, 0x95, 0x5b, 0x36, 0xf6, 0x1f, 0xde, 0x34, - 0xad, 0x17, 0x47, 0xa0, 0x82, 0x8f, 0xf9, 0xb7, 0x22, 0x36, 0xf8, 0x5f, 0x82, 0xdb, 0x04, 0xfe, - 0xe7, 0x54, 0x37, 0x75, 0x60, 0x0f, 0xf6, 0x7f, 0x94, 0x69, 0x5e, 0x2f, 0x16, 0x60, 0x38, 0xd5, - 0xcd, 0x66, 0x46, 0xf3, 0x95, 0x05, 0xff, 0x7f, 0xb7, 0xfc, 0xc8, 0x5d, 0x32, 0x47, 0x97, 0x60, - 0xb2, 0xa1, 0xa2, 0x6e, 0xf0, 0x28, 0x2c, 0xab, 0x65, 0xb5, 0x9a, 0x5f, 0xc5, 0x87, 0x6e, 0xf3, - 0x03, 0xbd, 0x99, 0xd5, 0x67, 0x1a, 0x2a, 0x9a, 0xc5, 0xc1, 0xb7, 0xfd, 0x7d, 0x5e, 0x39, 0x06, - 0x5f, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x51, 0xf0, 0xa5, 0x95, 0x02, 0x14, 0x00, 0x00, + 0x14, 0x80, 0x85, 0x48, 0x64, 0x4f, 0x79, 0x8b, 0xc7, 0xc6, 0x84, 0x08, 0x44, 0xe0, 0xc4, 0xc9, + 0x3e, 0x45, 0x28, 0x65, 0x45, 0x96, 0x63, 0x39, 0x56, 0x10, 0x0e, 0xc6, 0x89, 0xc3, 0x76, 0x18, + 0xf5, 0xf4, 0x94, 0xdb, 0x8d, 0xbb, 0xbb, 0x9a, 0xee, 0xea, 0x10, 0xe7, 0x86, 0xc2, 0x22, 0x84, + 0xd8, 0x91, 0x20, 0x21, 0x09, 0x04, 0xc4, 0xbe, 0x86, 0x7d, 0xb9, 0x70, 0x61, 0xb9, 0xf2, 0x1f, + 0xb8, 0x00, 0x66, 0xf7, 0xcd, 0x17, 0xf4, 0xba, 0xdf, 0xeb, 0xa9, 0x69, 0x8f, 0x54, 0x35, 0xb7, + 0xf6, 0xb8, 0xbe, 0x6f, 0xaa, 0xdf, 0xeb, 0x7a, 0xef, 0x4d, 0x33, 0xe6, 0x49, 0x4f, 0x4e, 0xc6, + 0x89, 0x54, 0xb2, 0x5e, 0x83, 0xeb, 0xfc, 0x72, 0xdf, 0x7e, 0x4f, 0x4a, 0x2f, 0x10, 0x53, 0xf9, + 0x5f, 0xcd, 0x6c, 0x75, 0xaa, 0x25, 0x52, 0x37, 0xf1, 0x63, 0x25, 0x93, 0x62, 0x31, 0x3f, 0xc6, + 0xc6, 0x70, 0x71, 0x43, 0x44, 0x59, 0xd8, 0x88, 0x13, 0xb1, 0xea, 0x9f, 0xae, 0x5f, 0x3f, 0x59, + 0x90, 0x93, 0x44, 0x4e, 0xce, 0x47, 0x59, 0x78, 0x47, 0xac, 0x7c, 0x19, 0xa5, 0x7b, 0xaf, 0xfc, + 0x72, 0xf5, 0xfe, 0xab, 0x6e, 0xe9, 0x5f, 0x1e, 0x45, 0x14, 0xfe, 0xb7, 0x94, 0x83, 0x7c, 0x99, + 0x5d, 0xd3, 0xe1, 0x4b, 0x55, 0xe2, 0x47, 0x9e, 0x48, 0x0c, 0xc6, 0xef, 0xd1, 0x38, 0xa6, 0x19, + 0x8f, 0x23, 0xca, 0xe7, 0xd8, 0x50, 0x2f, 0xae, 0x1f, 0xd0, 0x35, 0x28, 0x74, 0xc9, 0x02, 0x1b, + 0xc9, 0x25, 0x6e, 0x96, 0x2a, 0x19, 0x46, 0x4e, 0x28, 0x0c, 0x9a, 0x1f, 0x73, 0x4d, 0x6d, 0x79, + 0x18, 0xb0, 0xb9, 0x92, 0xe2, 0x9c, 0xf5, 0xc3, 0x27, 0x2d, 0xe1, 0x06, 0x06, 0xc3, 0x4f, 0xb8, + 0x91, 0x72, 0x3d, 0x3f, 0xc9, 0xc6, 0xe1, 0xfa, 0x94, 0x13, 0x64, 0x42, 0xdf, 0xc9, 0x4d, 0x5d, + 0x3d, 0x27, 0x61, 0x19, 0xc9, 0x7e, 0x3e, 0xbb, 0x2b, 0xdf, 0xce, 0x58, 0x29, 0xd0, 0xf6, 0xa4, + 0x65, 0xd1, 0x13, 0x4a, 0x89, 0x24, 0x6d, 0x38, 0x41, 0xb7, 0xed, 0x1d, 0xf1, 0x83, 0xd2, 0x78, + 0x6e, 0xb3, 0x33, 0x8b, 0x0b, 0x05, 0x39, 0x1b, 0x04, 0x7c, 0x85, 0x5d, 0xdb, 0xe5, 0xa9, 0xb0, + 0x70, 0x9e, 0x47, 0xe7, 0xf8, 0x8e, 0x27, 0x03, 0xb4, 0x4b, 0x8c, 0x3e, 0x2f, 0x73, 0x69, 0xe1, + 0x7c, 0x19, 0x9d, 0x75, 0x64, 0x29, 0xa5, 0x60, 0xbc, 0x8d, 0x8d, 0x9e, 0x12, 0x49, 0x53, 0xa6, + 0xa2, 0x21, 0x1e, 0xc8, 0x9c, 0xc0, 0x42, 0x77, 0x01, 0x75, 0x23, 0x08, 0xce, 0x03, 0x07, 0xae, + 0x83, 0xac, 0x7f, 0xd5, 0x71, 0x85, 0x85, 0xe2, 0x22, 0x2a, 0xfa, 0x60, 0x3d, 0xa0, 0xb3, 0x6c, + 0xd0, 0x93, 0xc5, 0x2d, 0x59, 0xe0, 0x97, 0x10, 0x1f, 0x20, 0x06, 0x15, 0xb1, 0x8c, 0xb3, 0xc0, + 0x51, 0x36, 0x3b, 0x78, 0x85, 0x14, 0xc4, 0xa0, 0xa2, 0x87, 0xb0, 0xbe, 0x4a, 0x8a, 0x54, 0x8b, + 0xe7, 0x0c, 0x1b, 0x90, 0x51, 0xb0, 0x21, 0x23, 0x9b, 0x4d, 0x5c, 0x46, 0x03, 0x43, 0x04, 0x04, + 0xd3, 0xac, 0x66, 0x9b, 0x88, 0x37, 0x36, 0xe9, 0x78, 0x50, 0x06, 0x16, 0xd8, 0x08, 0x15, 0x28, + 0x5f, 0x46, 0x16, 0x8a, 0x37, 0x51, 0x31, 0xac, 0x61, 0x78, 0x1b, 0x4a, 0xa4, 0xca, 0x13, 0x36, + 0x92, 0xb7, 0xe8, 0x36, 0x10, 0xc1, 0x50, 0x36, 0x45, 0xe4, 0xae, 0xd9, 0x19, 0xde, 0xa6, 0x50, + 0x12, 0x03, 0x8a, 0x39, 0x36, 0x14, 0x3a, 0x49, 0xba, 0xe6, 0x04, 0x56, 0xe9, 0x78, 0x07, 0x1d, + 0x83, 0x25, 0x84, 0x11, 0xc9, 0xa2, 0x5e, 0x34, 0xef, 0x52, 0x44, 0x34, 0x0c, 0x8f, 0x5e, 0xaa, + 0x9c, 0x66, 0x20, 0x1a, 0xbd, 0xd8, 0xde, 0xa3, 0xa3, 0x57, 0xb0, 0x8b, 0xba, 0x71, 0x9a, 0xd5, + 0x52, 0xff, 0x8c, 0x95, 0xe6, 0x7d, 0xca, 0x74, 0x0e, 0x00, 0x7c, 0x0f, 0xbb, 0xae, 0x6b, 0x9b, + 0xb0, 0x90, 0x7d, 0x80, 0xb2, 0x89, 0x2e, 0xad, 0x02, 0x4b, 0x42, 0xaf, 0xca, 0x0f, 0xa9, 0x24, + 0x88, 0x8a, 0x6b, 0x89, 0x8d, 0x67, 0x51, 0xea, 0xac, 0xf6, 0x16, 0xb5, 0x8f, 0x28, 0x6a, 0x05, + 0xdb, 0x11, 0xb5, 0x13, 0x6c, 0x02, 0x8d, 0xbd, 0xe5, 0xf5, 0x63, 0x2a, 0xac, 0x05, 0xbd, 0xd2, + 0x99, 0xdd, 0xfb, 0xd8, 0xbe, 0x32, 0x9c, 0xa7, 0x95, 0x88, 0x52, 0x60, 0x1a, 0xa1, 0x13, 0x5b, + 0x98, 0xaf, 0xa0, 0x99, 0x2a, 0xfe, 0x7c, 0x29, 0x58, 0x74, 0x62, 0x90, 0xdf, 0xcd, 0xf6, 0x92, + 0x3c, 0x8b, 0x12, 0xe1, 0x4a, 0x2f, 0xf2, 0xcf, 0x88, 0x96, 0x85, 0xfa, 0x93, 0x4a, 0xaa, 0x56, + 0x34, 0x1c, 0xcc, 0x47, 0xd9, 0x9e, 0x72, 0x56, 0x69, 0xf8, 0x61, 0x2c, 0x13, 0x65, 0x30, 0x7e, + 0x4a, 0x99, 0x2a, 0xb9, 0xa3, 0x39, 0xc6, 0xe7, 0xd9, 0x70, 0xfe, 0xa7, 0xed, 0x23, 0xf9, 0x19, + 0x8a, 0x86, 0xda, 0x14, 0x16, 0x0e, 0x57, 0x86, 0xb1, 0x93, 0xd8, 0xd4, 0xbf, 0xcf, 0xa9, 0x70, + 0x20, 0x82, 0x85, 0x43, 0x6d, 0xc4, 0x02, 0xba, 0xbd, 0x85, 0xe1, 0x0b, 0x2a, 0x1c, 0xc4, 0xa0, + 0x82, 0x06, 0x06, 0x0b, 0xc5, 0x97, 0xa4, 0x20, 0x06, 0x14, 0x77, 0xb6, 0x1b, 0x6d, 0x22, 0x3c, + 0x3f, 0x55, 0x89, 0x03, 0xab, 0x0d, 0xaa, 0xaf, 0x36, 0x3b, 0x87, 0xb0, 0x65, 0x0d, 0x85, 0x4a, + 0x14, 0x8a, 0x34, 0x75, 0x3c, 0x01, 0x13, 0x87, 0xc5, 0xc6, 0xbe, 0xa6, 0x4a, 0xa4, 0x61, 0xb0, + 0x37, 0x6d, 0x42, 0x84, 0xb0, 0xbb, 0x8e, 0xbb, 0x66, 0xa3, 0xfb, 0xa6, 0xb2, 0xb9, 0xe3, 0xc4, + 0x82, 0x53, 0x9b, 0x7f, 0xb2, 0x68, 0x5d, 0x6c, 0x58, 0x3d, 0x9d, 0xdf, 0x56, 0xe6, 0x9f, 0x95, + 0x82, 0x2c, 0x6a, 0xc8, 0x48, 0x65, 0x9e, 0xaa, 0xdf, 0xb8, 0xc3, 0xb5, 0x58, 0xdc, 0x17, 0xe9, + 0x1e, 0xda, 0xc2, 0xfb, 0xed, 0x1c, 0xa7, 0xf8, 0xed, 0xf0, 0x90, 0x77, 0x0e, 0x3d, 0x66, 0xd9, + 0xd9, 0xad, 0xf2, 0x39, 0xef, 0x98, 0x79, 0xf8, 0x11, 0x36, 0xd4, 0x31, 0xf0, 0x98, 0x55, 0x0f, + 0xa3, 0x6a, 0x50, 0x9f, 0x77, 0xf8, 0x01, 0xb6, 0x0b, 0x86, 0x17, 0x33, 0xfe, 0x08, 0xe2, 0xf9, + 0x72, 0x7e, 0x88, 0xf5, 0xd3, 0xd0, 0x62, 0x46, 0x1f, 0x45, 0xb4, 0x44, 0x00, 0xa7, 0x81, 0xc5, + 0x8c, 0x3f, 0x46, 0x38, 0x21, 0x80, 0xdb, 0x87, 0xf0, 0xbb, 0x27, 0x76, 0x61, 0xd3, 0xa1, 0xd8, + 0x4d, 0xb3, 0x3e, 0x9c, 0x54, 0xcc, 0xf4, 0xe3, 0xf8, 0xe5, 0x44, 0xf0, 0x5b, 0xd9, 0x6e, 0xcb, + 0x80, 0x3f, 0x89, 0x68, 0xb1, 0x9e, 0xcf, 0xb1, 0x01, 0x6d, 0x3a, 0x31, 0xe3, 0x4f, 0x21, 0xae, + 0x53, 0xb0, 0x75, 0x9c, 0x4e, 0xcc, 0x82, 0xa7, 0x69, 0xeb, 0x48, 0x40, 0xd8, 0x68, 0x30, 0x31, + 0xd3, 0xcf, 0x50, 0xd4, 0x09, 0xe1, 0x33, 0xac, 0x56, 0x36, 0x1b, 0x33, 0xff, 0x2c, 0xf2, 0x6d, + 0x06, 0x22, 0xa0, 0x35, 0x3b, 0xb3, 0xe2, 0x39, 0x8a, 0x80, 0x46, 0xc1, 0x31, 0xaa, 0x0e, 0x30, + 0x66, 0xd3, 0xf3, 0x74, 0x8c, 0x2a, 0xf3, 0x0b, 0x64, 0x33, 0xaf, 0xf9, 0x66, 0xc5, 0x0b, 0x94, + 0xcd, 0x7c, 0x3d, 0x6c, 0xa3, 0x3a, 0x11, 0x98, 0x1d, 0x2f, 0xd2, 0x36, 0x2a, 0x03, 0x01, 0x5f, + 0x62, 0xf5, 0x9d, 0xd3, 0x80, 0xd9, 0xf7, 0x12, 0xfa, 0x46, 0x77, 0x0c, 0x03, 0xfc, 0x2e, 0x36, + 0xd1, 0x7d, 0x12, 0x30, 0x5b, 0xcf, 0x6d, 0x55, 0x7e, 0xbb, 0xe9, 0x83, 0x00, 0x3f, 0xd1, 0x6e, + 0x29, 0xfa, 0x14, 0x60, 0xd6, 0x9e, 0xdf, 0xea, 0x2c, 0xdc, 0xfa, 0x10, 0xc0, 0x67, 0x19, 0x6b, + 0x37, 0x60, 0xb3, 0xeb, 0x02, 0xba, 0x34, 0x08, 0x8e, 0x06, 0xf6, 0x5f, 0x33, 0x7f, 0x91, 0x8e, + 0x06, 0x12, 0x70, 0x34, 0xa8, 0xf5, 0x9a, 0xe9, 0x4b, 0x74, 0x34, 0x08, 0x81, 0x27, 0x5b, 0xeb, + 0x6e, 0x66, 0xc3, 0x65, 0x7a, 0xb2, 0x35, 0x8a, 0x1f, 0x63, 0xa3, 0x3b, 0x1a, 0xa2, 0x59, 0xf5, + 0x1a, 0xaa, 0xf6, 0x54, 0xfb, 0xa1, 0xde, 0xbc, 0xb0, 0x19, 0x9a, 0x6d, 0xaf, 0x57, 0x9a, 0x17, + 0xf6, 0x42, 0x3e, 0xcd, 0xfa, 0xa3, 0x2c, 0x08, 0xe0, 0xf0, 0xd4, 0x6f, 0xe8, 0xd2, 0x4d, 0x45, + 0xd0, 0x22, 0xc5, 0xaf, 0xdb, 0x18, 0x1d, 0x02, 0xf8, 0x01, 0xb6, 0x5b, 0x84, 0x4d, 0xd1, 0x32, + 0x91, 0xbf, 0x6d, 0x53, 0xc1, 0x84, 0xd5, 0x7c, 0x86, 0xb1, 0xe2, 0xd5, 0x08, 0x84, 0xd9, 0xc4, + 0xfe, 0xbe, 0x5d, 0xbc, 0xa5, 0xd1, 0x90, 0xb6, 0x20, 0x4f, 0x8a, 0x41, 0xb0, 0xd9, 0x29, 0xc8, + 0x33, 0x72, 0x90, 0xf5, 0xdd, 0x9f, 0xca, 0x48, 0x39, 0x9e, 0x89, 0xfe, 0x03, 0x69, 0x5a, 0x0f, + 0x01, 0x0b, 0x65, 0x22, 0x94, 0xe3, 0xa5, 0x26, 0xf6, 0x4f, 0x64, 0x4b, 0x00, 0x60, 0xd7, 0x49, + 0x95, 0xcd, 0x7d, 0xff, 0x45, 0x30, 0x01, 0xb0, 0x69, 0xb8, 0x5e, 0x17, 0x1b, 0x26, 0xf6, 0x6f, + 0xda, 0x34, 0xae, 0xe7, 0x87, 0x58, 0x0d, 0x2e, 0xf3, 0xb7, 0x4a, 0x26, 0xf8, 0x1f, 0x84, 0xdb, + 0x04, 0x7c, 0x73, 0xaa, 0x5a, 0xca, 0x37, 0x07, 0xfb, 0x5f, 0xcc, 0x34, 0xad, 0xe7, 0xb3, 0x6c, + 0x20, 0x55, 0xad, 0x56, 0x86, 0xf3, 0xa9, 0x01, 0xff, 0x6f, 0xbb, 0x7c, 0x65, 0x51, 0x32, 0x90, + 0xed, 0x07, 0xd7, 0x55, 0x2c, 0xfd, 0x48, 0x89, 0xc4, 0x64, 0xd8, 0x42, 0x83, 0x86, 0x1c, 0x9e, + 0x67, 0x63, 0xae, 0x0c, 0xab, 0xdc, 0x61, 0xb6, 0x20, 0x17, 0xe4, 0x52, 0x5e, 0x67, 0xee, 0xbd, + 0xd9, 0xf3, 0xd5, 0x5a, 0xd6, 0x9c, 0x74, 0x65, 0x38, 0x05, 0xbf, 0x3c, 0xda, 0x2f, 0x54, 0xcb, + 0xdf, 0x21, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x9c, 0xaf, 0x70, 0x4e, 0x83, 0x15, 0x00, 0x00, } diff --git a/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto b/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto index bc8d889f16..b80c85653f 100644 --- a/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto +++ b/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto @@ -84,6 +84,9 @@ extend google.protobuf.FileOptions { optional bool goproto_registration = 63032; optional bool messagename_all = 63033; + + optional bool goproto_sizecache_all = 63034; + optional bool goproto_unkeyed_all = 63035; } extend google.protobuf.MessageOptions { @@ -118,6 +121,9 @@ extend google.protobuf.MessageOptions { optional bool typedecl = 64030; optional bool messagename = 64033; + + optional bool goproto_sizecache = 64034; + optional bool goproto_unkeyed = 64035; } extend google.protobuf.FieldOptions { @@ -133,4 +139,6 @@ extend google.protobuf.FieldOptions { optional bool stdtime = 65010; optional bool stdduration = 65011; + optional bool wktpointer = 65012; + } diff --git a/vendor/github.com/gogo/protobuf/gogoproto/helper.go b/vendor/github.com/gogo/protobuf/gogoproto/helper.go index 22910c6d4f..390d4e4be6 100644 --- a/vendor/github.com/gogo/protobuf/gogoproto/helper.go +++ b/vendor/github.com/gogo/protobuf/gogoproto/helper.go @@ -47,6 +47,55 @@ func IsStdDuration(field *google_protobuf.FieldDescriptorProto) bool { return proto.GetBoolExtension(field.Options, E_Stdduration, false) } +func IsStdDouble(field *google_protobuf.FieldDescriptorProto) bool { + return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.DoubleValue" +} + +func IsStdFloat(field *google_protobuf.FieldDescriptorProto) bool { + return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.FloatValue" +} + +func IsStdInt64(field *google_protobuf.FieldDescriptorProto) bool { + return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.Int64Value" +} + +func IsStdUInt64(field *google_protobuf.FieldDescriptorProto) bool { + return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.UInt64Value" +} + +func IsStdInt32(field *google_protobuf.FieldDescriptorProto) bool { + return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.Int32Value" +} + +func IsStdUInt32(field *google_protobuf.FieldDescriptorProto) bool { + return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.UInt32Value" +} + +func IsStdBool(field *google_protobuf.FieldDescriptorProto) bool { + return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.BoolValue" +} + +func IsStdString(field *google_protobuf.FieldDescriptorProto) bool { + return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.StringValue" +} + +func IsStdBytes(field *google_protobuf.FieldDescriptorProto) bool { + return proto.GetBoolExtension(field.Options, E_Wktpointer, false) && *field.TypeName == ".google.protobuf.BytesValue" +} + +func IsStdType(field *google_protobuf.FieldDescriptorProto) bool { + return (IsStdTime(field) || IsStdDuration(field) || + IsStdDouble(field) || IsStdFloat(field) || + IsStdInt64(field) || IsStdUInt64(field) || + IsStdInt32(field) || IsStdUInt32(field) || + IsStdBool(field) || + IsStdString(field) || IsStdBytes(field)) +} + +func IsWktPtr(field *google_protobuf.FieldDescriptorProto) bool { + return proto.GetBoolExtension(field.Options, E_Wktpointer, false) +} + func NeedsNilCheck(proto3 bool, field *google_protobuf.FieldDescriptorProto) bool { nullable := IsNullable(field) if field.IsMessage() || IsCustomType(field) { @@ -356,3 +405,11 @@ func RegistersGolangProto(file *google_protobuf.FileDescriptorProto) bool { func HasMessageName(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { return proto.GetBoolExtension(message.Options, E_Messagename, proto.GetBoolExtension(file.Options, E_MessagenameAll, false)) } + +func HasSizecache(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { + return proto.GetBoolExtension(message.Options, E_GoprotoSizecache, proto.GetBoolExtension(file.Options, E_GoprotoSizecacheAll, true)) +} + +func HasUnkeyed(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { + return proto.GetBoolExtension(message.Options, E_GoprotoUnkeyed, proto.GetBoolExtension(file.Options, E_GoprotoUnkeyedAll, true)) +} diff --git a/vendor/github.com/gogo/protobuf/proto/decode.go b/vendor/github.com/gogo/protobuf/proto/decode.go index d9aa3c42d6..63b0f08bef 100644 --- a/vendor/github.com/gogo/protobuf/proto/decode.go +++ b/vendor/github.com/gogo/protobuf/proto/decode.go @@ -186,7 +186,6 @@ func (p *Buffer) DecodeVarint() (x uint64, err error) { if b&0x80 == 0 { goto done } - // x -= 0x80 << 63 // Always zero. return 0, errOverflow diff --git a/vendor/github.com/gogo/protobuf/proto/deprecated.go b/vendor/github.com/gogo/protobuf/proto/deprecated.go new file mode 100644 index 0000000000..35b882c09a --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/deprecated.go @@ -0,0 +1,63 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2018 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +import "errors" + +// Deprecated: do not use. +type Stats struct{ Emalloc, Dmalloc, Encode, Decode, Chit, Cmiss, Size uint64 } + +// Deprecated: do not use. +func GetStats() Stats { return Stats{} } + +// Deprecated: do not use. +func MarshalMessageSet(interface{}) ([]byte, error) { + return nil, errors.New("proto: not implemented") +} + +// Deprecated: do not use. +func UnmarshalMessageSet([]byte, interface{}) error { + return errors.New("proto: not implemented") +} + +// Deprecated: do not use. +func MarshalMessageSetJSON(interface{}) ([]byte, error) { + return nil, errors.New("proto: not implemented") +} + +// Deprecated: do not use. +func UnmarshalMessageSetJSON([]byte, interface{}) error { + return errors.New("proto: not implemented") +} + +// Deprecated: do not use. +func RegisterMessageSetType(Message, int32, string) {} diff --git a/vendor/github.com/gogo/protobuf/proto/encode.go b/vendor/github.com/gogo/protobuf/proto/encode.go index c27d35f866..3abfed2cff 100644 --- a/vendor/github.com/gogo/protobuf/proto/encode.go +++ b/vendor/github.com/gogo/protobuf/proto/encode.go @@ -37,27 +37,9 @@ package proto import ( "errors" - "fmt" "reflect" ) -// RequiredNotSetError is the error returned if Marshal is called with -// a protocol buffer struct whose required fields have not -// all been initialized. It is also the error returned if Unmarshal is -// called with an encoded protocol buffer that does not include all the -// required fields. -// -// When printed, RequiredNotSetError reports the first unset required field in a -// message. If the field cannot be precisely determined, it is reported as -// "{Unknown}". -type RequiredNotSetError struct { - field string -} - -func (e *RequiredNotSetError) Error() string { - return fmt.Sprintf("proto: required field %q not set", e.field) -} - var ( // errRepeatedHasNil is the error returned if Marshal is called with // a struct with a repeated field containing a nil element. diff --git a/vendor/github.com/gogo/protobuf/proto/extensions.go b/vendor/github.com/gogo/protobuf/proto/extensions.go index 44ebd457cf..341c6f57f5 100644 --- a/vendor/github.com/gogo/protobuf/proto/extensions.go +++ b/vendor/github.com/gogo/protobuf/proto/extensions.go @@ -527,6 +527,7 @@ func ExtensionDescs(pb Message) ([]*ExtensionDesc, error) { // SetExtension sets the specified extension of pb to the specified value. func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error { if epb, ok := pb.(extensionsBytes); ok { + ClearExtension(pb, extension) newb, err := encodeExtension(extension, value) if err != nil { return err @@ -544,7 +545,7 @@ func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error } typ := reflect.TypeOf(extension.ExtensionType) if typ != reflect.TypeOf(value) { - return errors.New("proto: bad extension value type") + return fmt.Errorf("proto: bad extension value type. got: %T, want: %T", value, extension.ExtensionType) } // nil extension values need to be caught early, because the // encoder can't distinguish an ErrNil due to a nil extension diff --git a/vendor/github.com/gogo/protobuf/proto/extensions_gogo.go b/vendor/github.com/gogo/protobuf/proto/extensions_gogo.go index 53ebd8cca0..6f1ae120ec 100644 --- a/vendor/github.com/gogo/protobuf/proto/extensions_gogo.go +++ b/vendor/github.com/gogo/protobuf/proto/extensions_gogo.go @@ -154,6 +154,10 @@ func EncodeInternalExtension(m extendableProto, data []byte) (n int, err error) return EncodeExtensionMap(m.extensionsWrite(), data) } +func EncodeInternalExtensionBackwards(m extendableProto, data []byte) (n int, err error) { + return EncodeExtensionMapBackwards(m.extensionsWrite(), data) +} + func EncodeExtensionMap(m map[int32]Extension, data []byte) (n int, err error) { o := 0 for _, e := range m { @@ -169,6 +173,23 @@ func EncodeExtensionMap(m map[int32]Extension, data []byte) (n int, err error) { return o, nil } +func EncodeExtensionMapBackwards(m map[int32]Extension, data []byte) (n int, err error) { + o := 0 + end := len(data) + for _, e := range m { + if err := e.Encode(); err != nil { + return 0, err + } + n := copy(data[end-len(e.enc):], e.enc) + if n != len(e.enc) { + return 0, io.ErrShortBuffer + } + end -= n + o += n + } + return o, nil +} + func GetRawExtension(m map[int32]Extension, id int32) ([]byte, error) { e := m[id] if err := e.Encode(); err != nil { diff --git a/vendor/github.com/gogo/protobuf/proto/lib.go b/vendor/github.com/gogo/protobuf/proto/lib.go index 0f1950c67e..d17f802092 100644 --- a/vendor/github.com/gogo/protobuf/proto/lib.go +++ b/vendor/github.com/gogo/protobuf/proto/lib.go @@ -265,7 +265,6 @@ package proto import ( "encoding/json" - "errors" "fmt" "log" "reflect" @@ -274,34 +273,73 @@ import ( "sync" ) -var errInvalidUTF8 = errors.New("proto: invalid UTF-8 string") +// RequiredNotSetError is an error type returned by either Marshal or Unmarshal. +// Marshal reports this when a required field is not initialized. +// Unmarshal reports this when a required field is missing from the wire data. +type RequiredNotSetError struct{ field string } -// Message is implemented by generated protocol buffer messages. -type Message interface { - Reset() - String() string - ProtoMessage() +func (e *RequiredNotSetError) Error() string { + if e.field == "" { + return fmt.Sprintf("proto: required field not set") + } + return fmt.Sprintf("proto: required field %q not set", e.field) +} +func (e *RequiredNotSetError) RequiredNotSet() bool { + return true +} + +type invalidUTF8Error struct{ field string } + +func (e *invalidUTF8Error) Error() string { + if e.field == "" { + return "proto: invalid UTF-8 detected" + } + return fmt.Sprintf("proto: field %q contains invalid UTF-8", e.field) +} +func (e *invalidUTF8Error) InvalidUTF8() bool { + return true } -// Stats records allocation details about the protocol buffer encoders -// and decoders. Useful for tuning the library itself. -type Stats struct { - Emalloc uint64 // mallocs in encode - Dmalloc uint64 // mallocs in decode - Encode uint64 // number of encodes - Decode uint64 // number of decodes - Chit uint64 // number of cache hits - Cmiss uint64 // number of cache misses - Size uint64 // number of sizes +// errInvalidUTF8 is a sentinel error to identify fields with invalid UTF-8. +// This error should not be exposed to the external API as such errors should +// be recreated with the field information. +var errInvalidUTF8 = &invalidUTF8Error{} + +// isNonFatal reports whether the error is either a RequiredNotSet error +// or a InvalidUTF8 error. +func isNonFatal(err error) bool { + if re, ok := err.(interface{ RequiredNotSet() bool }); ok && re.RequiredNotSet() { + return true + } + if re, ok := err.(interface{ InvalidUTF8() bool }); ok && re.InvalidUTF8() { + return true + } + return false } -// Set to true to enable stats collection. -const collectStats = false +type nonFatal struct{ E error } -var stats Stats +// Merge merges err into nf and reports whether it was successful. +// Otherwise it returns false for any fatal non-nil errors. +func (nf *nonFatal) Merge(err error) (ok bool) { + if err == nil { + return true // not an error + } + if !isNonFatal(err) { + return false // fatal error + } + if nf.E == nil { + nf.E = err // store first instance of non-fatal error + } + return true +} -// GetStats returns a copy of the global Stats structure. -func GetStats() Stats { return stats } +// Message is implemented by generated protocol buffer messages. +type Message interface { + Reset() + String() string + ProtoMessage() +} // A Buffer is a buffer manager for marshaling and unmarshaling // protocol buffers. It may be reused between invocations to @@ -570,9 +608,11 @@ func SetDefaults(pb Message) { setDefaults(reflect.ValueOf(pb), true, false) } -// v is a pointer to a struct. +// v is a struct. func setDefaults(v reflect.Value, recur, zeros bool) { - v = v.Elem() + if v.Kind() == reflect.Ptr { + v = v.Elem() + } defaultMu.RLock() dm, ok := defaults[v.Type()] @@ -674,8 +714,11 @@ func setDefaults(v reflect.Value, recur, zeros bool) { for _, ni := range dm.nested { f := v.Field(ni) - // f is *T or []*T or map[T]*T + // f is *T or T or []*T or []T switch f.Kind() { + case reflect.Struct: + setDefaults(f, recur, zeros) + case reflect.Ptr: if f.IsNil() { continue @@ -685,7 +728,7 @@ func setDefaults(v reflect.Value, recur, zeros bool) { case reflect.Slice: for i := 0; i < f.Len(); i++ { e := f.Index(i) - if e.IsNil() { + if e.Kind() == reflect.Ptr && e.IsNil() { continue } setDefaults(e, recur, zeros) @@ -757,6 +800,9 @@ func buildDefaultMessage(t reflect.Type) (dm defaultMessage) { func fieldDefault(ft reflect.Type, prop *Properties) (sf *scalarField, nestedMessage bool, err error) { var canHaveDefault bool switch ft.Kind() { + case reflect.Struct: + nestedMessage = true // non-nullable + case reflect.Ptr: if ft.Elem().Kind() == reflect.Struct { nestedMessage = true @@ -766,7 +812,7 @@ func fieldDefault(ft reflect.Type, prop *Properties) (sf *scalarField, nestedMes case reflect.Slice: switch ft.Elem().Kind() { - case reflect.Ptr: + case reflect.Ptr, reflect.Struct: nestedMessage = true // repeated message case reflect.Uint8: canHaveDefault = true // bytes field diff --git a/vendor/github.com/gogo/protobuf/proto/message_set.go b/vendor/github.com/gogo/protobuf/proto/message_set.go index 3b6ca41d5e..f48a756761 100644 --- a/vendor/github.com/gogo/protobuf/proto/message_set.go +++ b/vendor/github.com/gogo/protobuf/proto/message_set.go @@ -36,13 +36,7 @@ package proto */ import ( - "bytes" - "encoding/json" "errors" - "fmt" - "reflect" - "sort" - "sync" ) // errNoMessageTypeID occurs when a protocol buffer does not have a message type ID. @@ -145,46 +139,9 @@ func skipVarint(buf []byte) []byte { return buf[i+1:] } -// MarshalMessageSet encodes the extension map represented by m in the message set wire format. -// It is called by generated Marshal methods on protocol buffer messages with the message_set_wire_format option. -func MarshalMessageSet(exts interface{}) ([]byte, error) { - return marshalMessageSet(exts, false) -} - -// marshaMessageSet implements above function, with the opt to turn on / off deterministic during Marshal. -func marshalMessageSet(exts interface{}, deterministic bool) ([]byte, error) { - switch exts := exts.(type) { - case *XXX_InternalExtensions: - var u marshalInfo - siz := u.sizeMessageSet(exts) - b := make([]byte, 0, siz) - return u.appendMessageSet(b, exts, deterministic) - - case map[int32]Extension: - // This is an old-style extension map. - // Wrap it in a new-style XXX_InternalExtensions. - ie := XXX_InternalExtensions{ - p: &struct { - mu sync.Mutex - extensionMap map[int32]Extension - }{ - extensionMap: exts, - }, - } - - var u marshalInfo - siz := u.sizeMessageSet(&ie) - b := make([]byte, 0, siz) - return u.appendMessageSet(b, &ie, deterministic) - - default: - return nil, errors.New("proto: not an extension map") - } -} - -// UnmarshalMessageSet decodes the extension map encoded in buf in the message set wire format. +// unmarshalMessageSet decodes the extension map encoded in buf in the message set wire format. // It is called by Unmarshal methods on protocol buffer messages with the message_set_wire_format option. -func UnmarshalMessageSet(buf []byte, exts interface{}) error { +func unmarshalMessageSet(buf []byte, exts interface{}) error { var m map[int32]Extension switch exts := exts.(type) { case *XXX_InternalExtensions: @@ -222,93 +179,3 @@ func UnmarshalMessageSet(buf []byte, exts interface{}) error { } return nil } - -// MarshalMessageSetJSON encodes the extension map represented by m in JSON format. -// It is called by generated MarshalJSON methods on protocol buffer messages with the message_set_wire_format option. -func MarshalMessageSetJSON(exts interface{}) ([]byte, error) { - var m map[int32]Extension - switch exts := exts.(type) { - case *XXX_InternalExtensions: - var mu sync.Locker - m, mu = exts.extensionsRead() - if m != nil { - // Keep the extensions map locked until we're done marshaling to prevent - // races between marshaling and unmarshaling the lazily-{en,de}coded - // values. - mu.Lock() - defer mu.Unlock() - } - case map[int32]Extension: - m = exts - default: - return nil, errors.New("proto: not an extension map") - } - var b bytes.Buffer - b.WriteByte('{') - - // Process the map in key order for deterministic output. - ids := make([]int32, 0, len(m)) - for id := range m { - ids = append(ids, id) - } - sort.Sort(int32Slice(ids)) // int32Slice defined in text.go - - for i, id := range ids { - ext := m[id] - msd, ok := messageSetMap[id] - if !ok { - // Unknown type; we can't render it, so skip it. - continue - } - - if i > 0 && b.Len() > 1 { - b.WriteByte(',') - } - - fmt.Fprintf(&b, `"[%s]":`, msd.name) - - x := ext.value - if x == nil { - x = reflect.New(msd.t.Elem()).Interface() - if err := Unmarshal(ext.enc, x.(Message)); err != nil { - return nil, err - } - } - d, err := json.Marshal(x) - if err != nil { - return nil, err - } - b.Write(d) - } - b.WriteByte('}') - return b.Bytes(), nil -} - -// UnmarshalMessageSetJSON decodes the extension map encoded in buf in JSON format. -// It is called by generated UnmarshalJSON methods on protocol buffer messages with the message_set_wire_format option. -func UnmarshalMessageSetJSON(buf []byte, exts interface{}) error { - // Common-case fast path. - if len(buf) == 0 || bytes.Equal(buf, []byte("{}")) { - return nil - } - - // This is fairly tricky, and it's not clear that it is needed. - return errors.New("TODO: UnmarshalMessageSetJSON not yet implemented") -} - -// A global registry of types that can be used in a MessageSet. - -var messageSetMap = make(map[int32]messageSetDesc) - -type messageSetDesc struct { - t reflect.Type // pointer to struct - name string -} - -// RegisterMessageSetType is called from the generated code. -func RegisterMessageSetType(m Message, fieldNum int32, name string) { - messageSetMap[fieldNum] = messageSetDesc{ - t: reflect.TypeOf(m), - name: name, - } -} diff --git a/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go b/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go index b354101b9c..aca8eed02a 100644 --- a/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go +++ b/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go @@ -26,7 +26,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// +build !purego !appengine,!js +// +build !purego,!appengine,!js // This file contains the implementation of the proto field accesses using package unsafe. diff --git a/vendor/github.com/gogo/protobuf/proto/properties.go b/vendor/github.com/gogo/protobuf/proto/properties.go index 7a5e28efe5..c9e5fa0207 100644 --- a/vendor/github.com/gogo/protobuf/proto/properties.go +++ b/vendor/github.com/gogo/protobuf/proto/properties.go @@ -144,7 +144,7 @@ type Properties struct { Repeated bool Packed bool // relevant for repeated primitives only Enum string // set for enum types only - proto3 bool // whether this is known to be a proto3 field; set for []byte only + proto3 bool // whether this is known to be a proto3 field oneof bool // whether this is a oneof field Default string // default value @@ -153,14 +153,15 @@ type Properties struct { CastType string StdTime bool StdDuration bool + WktPointer bool stype reflect.Type // set for struct types only ctype reflect.Type // set for custom types only sprop *StructProperties // set for struct types only - mtype reflect.Type // set for map types only - mkeyprop *Properties // set for map types only - mvalprop *Properties // set for map types only + mtype reflect.Type // set for map types only + MapKeyProp *Properties // set for map types only + MapValProp *Properties // set for map types only } // String formats the properties in the protobuf struct field tag style. @@ -274,6 +275,8 @@ outer: p.StdTime = true case f == "stdduration": p.StdDuration = true + case f == "wktptr": + p.WktPointer = true } } } @@ -296,6 +299,10 @@ func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, loc p.setTag(lockGetProp) return } + if p.WktPointer && !isMap { + p.setTag(lockGetProp) + return + } switch t1 := typ; t1.Kind() { case reflect.Struct: p.stype = typ @@ -317,9 +324,9 @@ func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, loc case reflect.Map: p.mtype = t1 - p.mkeyprop = &Properties{} - p.mkeyprop.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) - p.mvalprop = &Properties{} + p.MapKeyProp = &Properties{} + p.MapKeyProp.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) + p.MapValProp = &Properties{} vtype := p.mtype.Elem() if vtype.Kind() != reflect.Ptr && vtype.Kind() != reflect.Slice { // The value type is not a message (*T) or bytes ([]byte), @@ -327,10 +334,11 @@ func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, loc vtype = reflect.PtrTo(vtype) } - p.mvalprop.CustomType = p.CustomType - p.mvalprop.StdDuration = p.StdDuration - p.mvalprop.StdTime = p.StdTime - p.mvalprop.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) + p.MapValProp.CustomType = p.CustomType + p.MapValProp.StdDuration = p.StdDuration + p.MapValProp.StdTime = p.StdTime + p.MapValProp.WktPointer = p.WktPointer + p.MapValProp.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) } p.setTag(lockGetProp) } @@ -383,9 +391,6 @@ func GetProperties(t reflect.Type) *StructProperties { sprop, ok := propertiesMap[t] propertiesMu.RUnlock() if ok { - if collectStats { - stats.Chit++ - } return sprop } @@ -398,14 +403,8 @@ func GetProperties(t reflect.Type) *StructProperties { // getPropertiesLocked requires that propertiesMu is held. func getPropertiesLocked(t reflect.Type) *StructProperties { if prop, ok := propertiesMap[t]; ok { - if collectStats { - stats.Chit++ - } return prop } - if collectStats { - stats.Cmiss++ - } prop := new(StructProperties) // in case of recursive protos, fill this in now. diff --git a/vendor/github.com/gogo/protobuf/proto/table_marshal.go b/vendor/github.com/gogo/protobuf/proto/table_marshal.go index 255e7b5088..9b1538d055 100644 --- a/vendor/github.com/gogo/protobuf/proto/table_marshal.go +++ b/vendor/github.com/gogo/protobuf/proto/table_marshal.go @@ -97,6 +97,8 @@ type marshalElemInfo struct { var ( marshalInfoMap = map[reflect.Type]*marshalInfo{} marshalInfoLock sync.Mutex + + uint8SliceType = reflect.TypeOf(([]uint8)(nil)).Kind() ) // getMarshalInfo returns the information to marshal a given type of message. @@ -246,16 +248,13 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte // If the message can marshal itself, let it do it, for compatibility. // NOTE: This is not efficient. if u.hasmarshaler { - if deterministic { - return nil, errors.New("proto: deterministic not supported by the Marshal method of " + u.typ.String()) - } m := ptr.asPointerTo(u.typ).Interface().(Marshaler) b1, err := m.Marshal() b = append(b, b1...) return b, err } - var err, errreq error + var err, errLater error // The old marshaler encodes extensions at beginning. if u.extensions.IsValid() { e := ptr.offset(u.extensions).toExtensions() @@ -280,11 +279,13 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte b = append(b, s...) } for _, f := range u.fields { - if f.required && errreq == nil { - if ptr.offset(f.field).getPointer().isNil() { + if f.required { + if f.isPointer && ptr.offset(f.field).getPointer().isNil() { // Required field is not set. // We record the error but keep going, to give a complete marshaling. - errreq = &RequiredNotSetError{f.name} + if errLater == nil { + errLater = &RequiredNotSetError{f.name} + } continue } } @@ -297,14 +298,21 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte if err1, ok := err.(*RequiredNotSetError); ok { // Required field in submessage is not set. // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = &RequiredNotSetError{f.name + "." + err1.field} + if errLater == nil { + errLater = &RequiredNotSetError{f.name + "." + err1.field} } continue } if err == errRepeatedHasNil { err = errors.New("proto: repeated field " + f.name + " has nil element") } + if err == errInvalidUTF8 { + if errLater == nil { + fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name + errLater = &invalidUTF8Error{fullName} + } + continue + } return b, err } } @@ -312,7 +320,7 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte s := *ptr.offset(u.unrecognized).toBytes() b = append(b, s...) } - return b, errreq + return b, errLater } // computeMarshalInfo initializes the marshal info. @@ -483,7 +491,7 @@ func (fi *marshalFieldInfo) computeMarshalFieldInfo(f *reflect.StructField) { func (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructField, oneofImplementers []interface{}) { fi.field = toField(f) - fi.wiretag = 1<<31 - 1 // Use a large tag number, make oneofs sorted at the end. This tag will not appear on the wire. + fi.wiretag = math.MaxInt32 // Use a large tag number, make oneofs sorted at the end. This tag will not appear on the wire. fi.isPointer = true fi.sizer, fi.marshaler = makeOneOfMarshaler(fi, f) fi.oneofElems = make(map[reflect.Type]*marshalElemInfo) @@ -577,6 +585,8 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma ctype := false isTime := false isDuration := false + isWktPointer := false + validateUTF8 := true for i := 2; i < len(tags); i++ { if tags[i] == "packed" { packed = true @@ -593,7 +603,11 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma if tags[i] == "stdduration" { isDuration = true } + if tags[i] == "wktptr" { + isWktPointer = true + } } + validateUTF8 = validateUTF8 && proto3 if !proto3 && !pointer && !slice { nozero = false } @@ -638,6 +652,112 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma return makeDurationMarshaler(getMarshalInfo(t)) } + if isWktPointer { + switch t.Kind() { + case reflect.Float64: + if pointer { + if slice { + return makeStdDoubleValuePtrSliceMarshaler(getMarshalInfo(t)) + } + return makeStdDoubleValuePtrMarshaler(getMarshalInfo(t)) + } + if slice { + return makeStdDoubleValueSliceMarshaler(getMarshalInfo(t)) + } + return makeStdDoubleValueMarshaler(getMarshalInfo(t)) + case reflect.Float32: + if pointer { + if slice { + return makeStdFloatValuePtrSliceMarshaler(getMarshalInfo(t)) + } + return makeStdFloatValuePtrMarshaler(getMarshalInfo(t)) + } + if slice { + return makeStdFloatValueSliceMarshaler(getMarshalInfo(t)) + } + return makeStdFloatValueMarshaler(getMarshalInfo(t)) + case reflect.Int64: + if pointer { + if slice { + return makeStdInt64ValuePtrSliceMarshaler(getMarshalInfo(t)) + } + return makeStdInt64ValuePtrMarshaler(getMarshalInfo(t)) + } + if slice { + return makeStdInt64ValueSliceMarshaler(getMarshalInfo(t)) + } + return makeStdInt64ValueMarshaler(getMarshalInfo(t)) + case reflect.Uint64: + if pointer { + if slice { + return makeStdUInt64ValuePtrSliceMarshaler(getMarshalInfo(t)) + } + return makeStdUInt64ValuePtrMarshaler(getMarshalInfo(t)) + } + if slice { + return makeStdUInt64ValueSliceMarshaler(getMarshalInfo(t)) + } + return makeStdUInt64ValueMarshaler(getMarshalInfo(t)) + case reflect.Int32: + if pointer { + if slice { + return makeStdInt32ValuePtrSliceMarshaler(getMarshalInfo(t)) + } + return makeStdInt32ValuePtrMarshaler(getMarshalInfo(t)) + } + if slice { + return makeStdInt32ValueSliceMarshaler(getMarshalInfo(t)) + } + return makeStdInt32ValueMarshaler(getMarshalInfo(t)) + case reflect.Uint32: + if pointer { + if slice { + return makeStdUInt32ValuePtrSliceMarshaler(getMarshalInfo(t)) + } + return makeStdUInt32ValuePtrMarshaler(getMarshalInfo(t)) + } + if slice { + return makeStdUInt32ValueSliceMarshaler(getMarshalInfo(t)) + } + return makeStdUInt32ValueMarshaler(getMarshalInfo(t)) + case reflect.Bool: + if pointer { + if slice { + return makeStdBoolValuePtrSliceMarshaler(getMarshalInfo(t)) + } + return makeStdBoolValuePtrMarshaler(getMarshalInfo(t)) + } + if slice { + return makeStdBoolValueSliceMarshaler(getMarshalInfo(t)) + } + return makeStdBoolValueMarshaler(getMarshalInfo(t)) + case reflect.String: + if pointer { + if slice { + return makeStdStringValuePtrSliceMarshaler(getMarshalInfo(t)) + } + return makeStdStringValuePtrMarshaler(getMarshalInfo(t)) + } + if slice { + return makeStdStringValueSliceMarshaler(getMarshalInfo(t)) + } + return makeStdStringValueMarshaler(getMarshalInfo(t)) + case uint8SliceType: + if pointer { + if slice { + return makeStdBytesValuePtrSliceMarshaler(getMarshalInfo(t)) + } + return makeStdBytesValuePtrMarshaler(getMarshalInfo(t)) + } + if slice { + return makeStdBytesValueSliceMarshaler(getMarshalInfo(t)) + } + return makeStdBytesValueMarshaler(getMarshalInfo(t)) + default: + panic(fmt.Sprintf("unknown wktpointer type %#v", t)) + } + } + switch t.Kind() { case reflect.Bool: if pointer { @@ -834,6 +954,18 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma } return sizeFloat64Value, appendFloat64Value case reflect.String: + if validateUTF8 { + if pointer { + return sizeStringPtr, appendUTF8StringPtr + } + if slice { + return sizeStringSlice, appendUTF8StringSlice + } + if nozero { + return sizeStringValueNoZero, appendUTF8StringValueNoZero + } + return sizeStringValue, appendUTF8StringValue + } if pointer { return sizeStringPtr, appendStringPtr } @@ -2089,52 +2221,105 @@ func appendBoolPackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byt return b, nil } func appendStringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + v := *ptr.toString() + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + return b, nil +} +func appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + v := *ptr.toString() + if v == "" { + return b, nil + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + return b, nil +} +func appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + p := *ptr.toStringPtr() + if p == nil { + return b, nil + } + v := *p + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + return b, nil +} +func appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + s := *ptr.toStringSlice() + for _, v := range s { + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + } + return b, nil +} +func appendUTF8StringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool v := *ptr.toString() if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + invalidUTF8 = true } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } return b, nil } -func appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { +func appendUTF8StringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool v := *ptr.toString() if v == "" { return b, nil } if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + invalidUTF8 = true } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } return b, nil } -func appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { +func appendUTF8StringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool p := *ptr.toStringPtr() if p == nil { return b, nil } v := *p if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + invalidUTF8 = true } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } return b, nil } -func appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { +func appendUTF8StringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool s := *ptr.toStringSlice() for _, v := range s { if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + invalidUTF8 = true } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) } + if invalidUTF8 { + return b, errInvalidUTF8 + } return b, nil } func appendBytes(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { @@ -2213,7 +2398,8 @@ func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) { }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { s := ptr.getPointerSlice() - var err, errreq error + var err error + var nerr nonFatal for _, v := range s { if v.isNil() { return b, errRepeatedHasNil @@ -2221,22 +2407,14 @@ func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) { b = appendVarint(b, wiretag) // start group b, err = u.marshal(b, v, deterministic) b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group - if err != nil { - if _, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = err - } - continue - } + if !nerr.Merge(err) { if err == ErrNil { err = errRepeatedHasNil } return b, err } } - return b, errreq + return b, nerr.E } } @@ -2280,7 +2458,8 @@ func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) { }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { s := ptr.getPointerSlice() - var err, errreq error + var err error + var nerr nonFatal for _, v := range s { if v.isNil() { return b, errRepeatedHasNil @@ -2289,22 +2468,15 @@ func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) { siz := u.cachedsize(v) b = appendVarint(b, uint64(siz)) b, err = u.marshal(b, v, deterministic) - if err != nil { - if _, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = err - } - continue - } + + if !nerr.Merge(err) { if err == ErrNil { err = errRepeatedHasNil } return b, err } } - return b, errreq + return b, nerr.E } } @@ -2318,15 +2490,21 @@ func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) { tags := strings.Split(f.Tag.Get("protobuf"), ",") keyTags := strings.Split(f.Tag.Get("protobuf_key"), ",") valTags := strings.Split(f.Tag.Get("protobuf_val"), ",") + stdOptions := false for _, t := range tags { if strings.HasPrefix(t, "customtype=") { valTags = append(valTags, t) } if t == "stdtime" { valTags = append(valTags, t) + stdOptions = true } if t == "stdduration" { valTags = append(valTags, t) + stdOptions = true + } + if t == "wktptr" { + valTags = append(valTags, t) } } keySizer, keyMarshaler := typeMarshaler(keyType, keyTags, false, false) // don't omit zero value in map @@ -2340,6 +2518,25 @@ func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) { // value. // Key cannot be pointer-typed. valIsPtr := valType.Kind() == reflect.Ptr + + // If value is a message with nested maps, calling + // valSizer in marshal may be quadratic. We should use + // cached version in marshal (but not in size). + // If value is not message type, we don't have size cache, + // but it cannot be nested either. Just use valSizer. + valCachedSizer := valSizer + if valIsPtr && !stdOptions && valType.Elem().Kind() == reflect.Struct { + u := getMarshalInfo(valType.Elem()) + valCachedSizer = func(ptr pointer, tagsize int) int { + // Same as message sizer, but use cache. + p := ptr.getPointer() + if p.isNil() { + return 0 + } + siz := u.cachedsize(p) + return siz + SizeVarint(uint64(siz)) + tagsize + } + } return func(ptr pointer, tagsize int) int { m := ptr.asPointerTo(t).Elem() // the map n := 0 @@ -2360,24 +2557,26 @@ func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) { if len(keys) > 1 && deterministic { sort.Sort(mapKeys(keys)) } + + var nerr nonFatal for _, k := range keys { ki := k.Interface() vi := m.MapIndex(k).Interface() kaddr := toAddrPointer(&ki, false) // pointer to key vaddr := toAddrPointer(&vi, valIsPtr) // pointer to value b = appendVarint(b, tag) - siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) + siz := keySizer(kaddr, 1) + valCachedSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) b = appendVarint(b, uint64(siz)) b, err = keyMarshaler(b, kaddr, keyWireTag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } b, err = valMarshaler(b, vaddr, valWireTag, deterministic) - if err != nil && err != ErrNil { // allow nil value in map + if err != ErrNil && !nerr.Merge(err) { // allow nil value in map return b, err } } - return b, nil + return b, nerr.E } } @@ -2450,6 +2649,7 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de defer mu.Unlock() var err error + var nerr nonFatal // Fast-path for common cases: zero or one extensions. // Don't bother sorting the keys. @@ -2469,11 +2669,11 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // Sort the keys to provide a deterministic encoding. @@ -2500,11 +2700,11 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // message set format is: @@ -2561,6 +2761,7 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de defer mu.Unlock() var err error + var nerr nonFatal // Fast-path for common cases: zero or one extensions. // Don't bother sorting the keys. @@ -2587,12 +2788,12 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } b = append(b, 1<<3|WireEndGroup) } - return b, nil + return b, nerr.E } // Sort the keys to provide a deterministic encoding. @@ -2626,11 +2827,11 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) b = append(b, 1<<3|WireEndGroup) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // sizeV1Extensions computes the size of encoded data for a V1-API extension field. @@ -2673,6 +2874,7 @@ func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, determ sort.Ints(keys) var err error + var nerr nonFatal for _, k := range keys { e := m[int32(k)] if e.value == nil || e.desc == nil { @@ -2689,11 +2891,11 @@ func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, determ v := e.value p := toAddrPointer(&v, ei.isptr) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // newMarshaler is the interface representing objects that can marshal themselves. @@ -2758,6 +2960,11 @@ func Marshal(pb Message) ([]byte, error) { // a Buffer for most applications. func (p *Buffer) Marshal(pb Message) error { var err error + if p.deterministic { + if _, ok := pb.(Marshaler); ok { + return fmt.Errorf("proto: deterministic not supported by the Marshal method of %T", pb) + } + } if m, ok := pb.(newMarshaler); ok { siz := m.XXX_Size() p.grow(siz) // make sure buf has enough capacity diff --git a/vendor/github.com/gogo/protobuf/proto/table_unmarshal.go b/vendor/github.com/gogo/protobuf/proto/table_unmarshal.go index 910e2dd6ad..bb2622f28c 100644 --- a/vendor/github.com/gogo/protobuf/proto/table_unmarshal.go +++ b/vendor/github.com/gogo/protobuf/proto/table_unmarshal.go @@ -99,6 +99,8 @@ type unmarshalFieldInfo struct { // if a required field, contains a single set bit at this field's index in the required field list. reqMask uint64 + + name string // name of the field, for error reporting } var ( @@ -136,10 +138,10 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { u.computeUnmarshalInfo() } if u.isMessageSet { - return UnmarshalMessageSet(b, m.offset(u.extensions).toExtensions()) + return unmarshalMessageSet(b, m.offset(u.extensions).toExtensions()) } - var reqMask uint64 // bitmask of required fields we've seen. - var rnse *RequiredNotSetError // an instance of a RequiredNotSetError returned by a submessage. + var reqMask uint64 // bitmask of required fields we've seen. + var errLater error for len(b) > 0 { // Read tag and wire type. // Special case 1 and 2 byte varints. @@ -178,11 +180,20 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { if r, ok := err.(*RequiredNotSetError); ok { // Remember this error, but keep parsing. We need to produce // a full parse even if a required field is missing. - rnse = r + if errLater == nil { + errLater = r + } reqMask |= f.reqMask continue } if err != errInternalBadWireType { + if err == errInvalidUTF8 { + if errLater == nil { + fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name + errLater = &invalidUTF8Error{fullName} + } + continue + } return err } // Fragments with bad wire type are treated as unknown fields. @@ -244,20 +255,16 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { emap[int32(tag)] = e } } - if rnse != nil { - // A required field of a submessage/group is missing. Return that error. - return rnse - } - if reqMask != u.reqMask { + if reqMask != u.reqMask && errLater == nil { // A required field of this message is missing. for _, n := range u.reqFields { if reqMask&1 == 0 { - return &RequiredNotSetError{n} + errLater = &RequiredNotSetError{n} } reqMask >>= 1 } } - return nil + return errLater } // computeUnmarshalInfo fills in u with information for use @@ -360,7 +367,7 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { } // Store the info in the correct slot in the message. - u.setTag(tag, toField(&f), unmarshal, reqMask) + u.setTag(tag, toField(&f), unmarshal, reqMask, name) } // Find any types associated with oneof fields. @@ -376,10 +383,17 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { f := typ.Field(0) // oneof implementers have one field baseUnmarshal := fieldUnmarshaler(&f) - tagstr := strings.Split(f.Tag.Get("protobuf"), ",")[1] - tag, err := strconv.Atoi(tagstr) + tags := strings.Split(f.Tag.Get("protobuf"), ",") + fieldNum, err := strconv.Atoi(tags[1]) if err != nil { - panic("protobuf tag field not an integer: " + tagstr) + panic("protobuf tag field not an integer: " + tags[1]) + } + var name string + for _, tag := range tags { + if strings.HasPrefix(tag, "name=") { + name = strings.TrimPrefix(tag, "name=") + break + } } // Find the oneof field that this struct implements. @@ -390,7 +404,7 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { // That lets us know where this struct should be stored // when we encounter it during unmarshaling. unmarshal := makeUnmarshalOneof(typ, of.ityp, baseUnmarshal) - u.setTag(tag, of.field, unmarshal, 0) + u.setTag(fieldNum, of.field, unmarshal, 0, name) } } } @@ -411,7 +425,7 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { // [0 0] is [tag=0/wiretype=varint varint-encoded-0]. u.setTag(0, zeroField, func(b []byte, f pointer, w int) ([]byte, error) { return nil, fmt.Errorf("proto: %s: illegal tag 0 (wire type %d)", t, w) - }, 0) + }, 0, "") // Set mask for required field check. u.reqMask = uint64(1)<= 0 && (tag < 16 || tag < 2*n) { // TODO: what are the right numbers here? for len(u.dense) <= tag { @@ -455,10 +470,16 @@ func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { ctype := false isTime := false isDuration := false + isWktPointer := false + proto3 := false + validateUTF8 := true for _, tag := range tagArray[3:] { if strings.HasPrefix(tag, "name=") { name = tag[5:] } + if tag == "proto3" { + proto3 = true + } if strings.HasPrefix(tag, "customtype=") { ctype = true } @@ -468,7 +489,11 @@ func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { if tag == "stdduration" { isDuration = true } + if tag == "wktptr" { + isWktPointer = true + } } + validateUTF8 = validateUTF8 && proto3 // Figure out packaging (pointer, slice, or both) slice := false @@ -522,6 +547,112 @@ func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { return makeUnmarshalDuration(getUnmarshalInfo(t), name) } + if isWktPointer { + switch t.Kind() { + case reflect.Float64: + if pointer { + if slice { + return makeStdDoubleValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdDoubleValuePtrUnmarshaler(getUnmarshalInfo(t), name) + } + if slice { + return makeStdDoubleValueSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdDoubleValueUnmarshaler(getUnmarshalInfo(t), name) + case reflect.Float32: + if pointer { + if slice { + return makeStdFloatValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdFloatValuePtrUnmarshaler(getUnmarshalInfo(t), name) + } + if slice { + return makeStdFloatValueSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdFloatValueUnmarshaler(getUnmarshalInfo(t), name) + case reflect.Int64: + if pointer { + if slice { + return makeStdInt64ValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdInt64ValuePtrUnmarshaler(getUnmarshalInfo(t), name) + } + if slice { + return makeStdInt64ValueSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdInt64ValueUnmarshaler(getUnmarshalInfo(t), name) + case reflect.Uint64: + if pointer { + if slice { + return makeStdUInt64ValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdUInt64ValuePtrUnmarshaler(getUnmarshalInfo(t), name) + } + if slice { + return makeStdUInt64ValueSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdUInt64ValueUnmarshaler(getUnmarshalInfo(t), name) + case reflect.Int32: + if pointer { + if slice { + return makeStdInt32ValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdInt32ValuePtrUnmarshaler(getUnmarshalInfo(t), name) + } + if slice { + return makeStdInt32ValueSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdInt32ValueUnmarshaler(getUnmarshalInfo(t), name) + case reflect.Uint32: + if pointer { + if slice { + return makeStdUInt32ValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdUInt32ValuePtrUnmarshaler(getUnmarshalInfo(t), name) + } + if slice { + return makeStdUInt32ValueSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdUInt32ValueUnmarshaler(getUnmarshalInfo(t), name) + case reflect.Bool: + if pointer { + if slice { + return makeStdBoolValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdBoolValuePtrUnmarshaler(getUnmarshalInfo(t), name) + } + if slice { + return makeStdBoolValueSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdBoolValueUnmarshaler(getUnmarshalInfo(t), name) + case reflect.String: + if pointer { + if slice { + return makeStdStringValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdStringValuePtrUnmarshaler(getUnmarshalInfo(t), name) + } + if slice { + return makeStdStringValueSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdStringValueUnmarshaler(getUnmarshalInfo(t), name) + case uint8SliceType: + if pointer { + if slice { + return makeStdBytesValuePtrSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdBytesValuePtrUnmarshaler(getUnmarshalInfo(t), name) + } + if slice { + return makeStdBytesValueSliceUnmarshaler(getUnmarshalInfo(t), name) + } + return makeStdBytesValueUnmarshaler(getUnmarshalInfo(t), name) + default: + panic(fmt.Sprintf("unknown wktpointer type %#v", t)) + } + } + // We'll never have both pointer and slice for basic types. if pointer && slice && t.Kind() != reflect.Struct { panic("both pointer and slice for basic type in " + t.Name()) @@ -656,6 +787,15 @@ func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { } return unmarshalBytesValue case reflect.String: + if validateUTF8 { + if pointer { + return unmarshalUTF8StringPtr + } + if slice { + return unmarshalUTF8StringSlice + } + return unmarshalUTF8StringValue + } if pointer { return unmarshalStringPtr } @@ -1516,9 +1656,6 @@ func unmarshalStringValue(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } *f.toString() = v return b[x:], nil } @@ -1536,9 +1673,6 @@ func unmarshalStringPtr(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } *f.toStringPtr() = &v return b[x:], nil } @@ -1556,11 +1690,69 @@ func unmarshalStringSlice(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) + s := f.toStringSlice() + *s = append(*s, v) + return b[x:], nil +} + +func unmarshalUTF8StringValue(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + v := string(b[:x]) + *f.toString() = v if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + return b[x:], errInvalidUTF8 + } + return b[x:], nil +} + +func unmarshalUTF8StringPtr(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + v := string(b[:x]) + *f.toStringPtr() = &v + if !utf8.ValidString(v) { + return b[x:], errInvalidUTF8 + } + return b[x:], nil +} + +func unmarshalUTF8StringSlice(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + v := string(b[:x]) s := f.toStringSlice() *s = append(*s, v) + if !utf8.ValidString(v) { + return b[x:], errInvalidUTF8 + } return b[x:], nil } @@ -1731,6 +1923,9 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { if t == "stdduration" { valTags = append(valTags, t) } + if t == "wktptr" { + valTags = append(valTags, t) + } } unmarshalKey := typeUnmarshaler(kt, f.Tag.Get("protobuf_key")) unmarshalVal := typeUnmarshaler(vt, strings.Join(valTags, ",")) @@ -1755,6 +1950,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { // Maps will be somewhat slow. Oh well. // Read key and value from data. + var nerr nonFatal k := reflect.New(kt) v := reflect.New(vt) for len(b) > 0 { @@ -1775,7 +1971,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { err = errInternalBadWireType // skip unknown tag } - if err == nil { + if nerr.Merge(err) { continue } if err != errInternalBadWireType { @@ -1798,7 +1994,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { // Insert into map. m.SetMapIndex(k.Elem(), v.Elem()) - return r, nil + return r, nerr.E } } @@ -1824,15 +2020,16 @@ func makeUnmarshalOneof(typ, ityp reflect.Type, unmarshal unmarshaler) unmarshal // Unmarshal data into holder. // We unmarshal into the first field of the holder object. var err error + var nerr nonFatal b, err = unmarshal(b, valToPointer(v).offset(field0), w) - if err != nil { + if !nerr.Merge(err) { return nil, err } // Write pointer to holder into target field. f.asPointerTo(ityp).Elem().Set(v) - return b, nil + return b, nerr.E } } @@ -1945,7 +2142,7 @@ func encodeVarint(b []byte, x uint64) []byte { // If there is an error, it returns 0,0. func decodeVarint(b []byte) (uint64, int) { var x, y uint64 - if len(b) <= 0 { + if len(b) == 0 { goto bad } x = uint64(b[0]) diff --git a/vendor/github.com/gogo/protobuf/proto/text.go b/vendor/github.com/gogo/protobuf/proto/text.go index 4f5706dc5f..0407ba85d0 100644 --- a/vendor/github.com/gogo/protobuf/proto/text.go +++ b/vendor/github.com/gogo/protobuf/proto/text.go @@ -364,7 +364,7 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { return err } } - if err := tm.writeAny(w, key, props.mkeyprop); err != nil { + if err := tm.writeAny(w, key, props.MapKeyProp); err != nil { return err } if err := w.WriteByte('\n'); err != nil { @@ -381,7 +381,7 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { return err } } - if err := tm.writeAny(w, val, props.mvalprop); err != nil { + if err := tm.writeAny(w, val, props.MapValProp); err != nil { return err } if err := w.WriteByte('\n'); err != nil { diff --git a/vendor/github.com/gogo/protobuf/proto/text_parser.go b/vendor/github.com/gogo/protobuf/proto/text_parser.go index fbb000d374..1ce0be2fa9 100644 --- a/vendor/github.com/gogo/protobuf/proto/text_parser.go +++ b/vendor/github.com/gogo/protobuf/proto/text_parser.go @@ -636,17 +636,17 @@ func (p *textParser) readStruct(sv reflect.Value, terminator string) error { if err := p.consumeToken(":"); err != nil { return err } - if err := p.readAny(key, props.mkeyprop); err != nil { + if err := p.readAny(key, props.MapKeyProp); err != nil { return err } if err := p.consumeOptionalSeparator(); err != nil { return err } case "value": - if err := p.checkForColon(props.mvalprop, dst.Type().Elem()); err != nil { + if err := p.checkForColon(props.MapValProp, dst.Type().Elem()); err != nil { return err } - if err := p.readAny(val, props.mvalprop); err != nil { + if err := p.readAny(val, props.MapValProp); err != nil { return err } if err := p.consumeOptionalSeparator(); err != nil { @@ -923,6 +923,16 @@ func (p *textParser) readAny(v reflect.Value, props *Properties) error { fv.SetFloat(f) return nil } + case reflect.Int8: + if x, err := strconv.ParseInt(tok.value, 0, 8); err == nil { + fv.SetInt(x) + return nil + } + case reflect.Int16: + if x, err := strconv.ParseInt(tok.value, 0, 16); err == nil { + fv.SetInt(x) + return nil + } case reflect.Int32: if x, err := strconv.ParseInt(tok.value, 0, 32); err == nil { fv.SetInt(x) @@ -970,6 +980,16 @@ func (p *textParser) readAny(v reflect.Value, props *Properties) error { } // TODO: Handle nested messages which implement encoding.TextUnmarshaler. return p.readStruct(fv, terminator) + case reflect.Uint8: + if x, err := strconv.ParseUint(tok.value, 0, 8); err == nil { + fv.SetUint(x) + return nil + } + case reflect.Uint16: + if x, err := strconv.ParseUint(tok.value, 0, 16); err == nil { + fv.SetUint(x) + return nil + } case reflect.Uint32: if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil { fv.SetUint(uint64(x)) diff --git a/vendor/github.com/gogo/protobuf/proto/wrappers.go b/vendor/github.com/gogo/protobuf/proto/wrappers.go new file mode 100644 index 0000000000..b175d1b642 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/wrappers.go @@ -0,0 +1,1888 @@ +// Protocol Buffers for Go with Gadgets +// +// Copyright (c) 2018, The GoGo Authors. All rights reserved. +// http://github.com/gogo/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +import ( + "io" + "reflect" +) + +func makeStdDoubleValueMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + t := ptr.asPointerTo(u.typ).Interface().(*float64) + v := &float64Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + t := ptr.asPointerTo(u.typ).Interface().(*float64) + v := &float64Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdDoubleValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + if ptr.isNil() { + return 0 + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*float64) + v := &float64Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + if ptr.isNil() { + return b, nil + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*float64) + v := &float64Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdDoubleValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(u.typ) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(float64) + v := &float64Value{t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(u.typ) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(float64) + v := &float64Value{t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdDoubleValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*float64) + v := &float64Value{*t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*float64) + v := &float64Value{*t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdDoubleValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &float64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(sub.typ).Elem() + s.Set(reflect.ValueOf(m.Value)) + return b[x:], nil + } +} + +func makeStdDoubleValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &float64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem() + s.Set(reflect.ValueOf(&m.Value)) + return b[x:], nil + } +} + +func makeStdDoubleValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &float64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(reflect.PtrTo(sub.typ)) + newSlice := reflect.Append(slice, reflect.ValueOf(&m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdDoubleValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &float64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(sub.typ) + newSlice := reflect.Append(slice, reflect.ValueOf(m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdFloatValueMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + t := ptr.asPointerTo(u.typ).Interface().(*float32) + v := &float32Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + t := ptr.asPointerTo(u.typ).Interface().(*float32) + v := &float32Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdFloatValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + if ptr.isNil() { + return 0 + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*float32) + v := &float32Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + if ptr.isNil() { + return b, nil + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*float32) + v := &float32Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdFloatValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(u.typ) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(float32) + v := &float32Value{t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(u.typ) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(float32) + v := &float32Value{t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdFloatValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*float32) + v := &float32Value{*t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*float32) + v := &float32Value{*t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdFloatValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &float32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(sub.typ).Elem() + s.Set(reflect.ValueOf(m.Value)) + return b[x:], nil + } +} + +func makeStdFloatValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &float32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem() + s.Set(reflect.ValueOf(&m.Value)) + return b[x:], nil + } +} + +func makeStdFloatValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &float32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(reflect.PtrTo(sub.typ)) + newSlice := reflect.Append(slice, reflect.ValueOf(&m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdFloatValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &float32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(sub.typ) + newSlice := reflect.Append(slice, reflect.ValueOf(m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdInt64ValueMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + t := ptr.asPointerTo(u.typ).Interface().(*int64) + v := &int64Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + t := ptr.asPointerTo(u.typ).Interface().(*int64) + v := &int64Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdInt64ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + if ptr.isNil() { + return 0 + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*int64) + v := &int64Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + if ptr.isNil() { + return b, nil + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*int64) + v := &int64Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdInt64ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(u.typ) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(int64) + v := &int64Value{t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(u.typ) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(int64) + v := &int64Value{t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdInt64ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*int64) + v := &int64Value{*t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*int64) + v := &int64Value{*t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdInt64ValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &int64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(sub.typ).Elem() + s.Set(reflect.ValueOf(m.Value)) + return b[x:], nil + } +} + +func makeStdInt64ValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &int64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem() + s.Set(reflect.ValueOf(&m.Value)) + return b[x:], nil + } +} + +func makeStdInt64ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &int64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(reflect.PtrTo(sub.typ)) + newSlice := reflect.Append(slice, reflect.ValueOf(&m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdInt64ValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &int64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(sub.typ) + newSlice := reflect.Append(slice, reflect.ValueOf(m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdUInt64ValueMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + t := ptr.asPointerTo(u.typ).Interface().(*uint64) + v := &uint64Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + t := ptr.asPointerTo(u.typ).Interface().(*uint64) + v := &uint64Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdUInt64ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + if ptr.isNil() { + return 0 + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*uint64) + v := &uint64Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + if ptr.isNil() { + return b, nil + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*uint64) + v := &uint64Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdUInt64ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(u.typ) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(uint64) + v := &uint64Value{t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(u.typ) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(uint64) + v := &uint64Value{t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdUInt64ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*uint64) + v := &uint64Value{*t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*uint64) + v := &uint64Value{*t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdUInt64ValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &uint64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(sub.typ).Elem() + s.Set(reflect.ValueOf(m.Value)) + return b[x:], nil + } +} + +func makeStdUInt64ValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &uint64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem() + s.Set(reflect.ValueOf(&m.Value)) + return b[x:], nil + } +} + +func makeStdUInt64ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &uint64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(reflect.PtrTo(sub.typ)) + newSlice := reflect.Append(slice, reflect.ValueOf(&m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdUInt64ValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &uint64Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(sub.typ) + newSlice := reflect.Append(slice, reflect.ValueOf(m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdInt32ValueMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + t := ptr.asPointerTo(u.typ).Interface().(*int32) + v := &int32Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + t := ptr.asPointerTo(u.typ).Interface().(*int32) + v := &int32Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdInt32ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + if ptr.isNil() { + return 0 + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*int32) + v := &int32Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + if ptr.isNil() { + return b, nil + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*int32) + v := &int32Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdInt32ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(u.typ) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(int32) + v := &int32Value{t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(u.typ) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(int32) + v := &int32Value{t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdInt32ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*int32) + v := &int32Value{*t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*int32) + v := &int32Value{*t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdInt32ValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &int32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(sub.typ).Elem() + s.Set(reflect.ValueOf(m.Value)) + return b[x:], nil + } +} + +func makeStdInt32ValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &int32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem() + s.Set(reflect.ValueOf(&m.Value)) + return b[x:], nil + } +} + +func makeStdInt32ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &int32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(reflect.PtrTo(sub.typ)) + newSlice := reflect.Append(slice, reflect.ValueOf(&m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdInt32ValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &int32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(sub.typ) + newSlice := reflect.Append(slice, reflect.ValueOf(m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdUInt32ValueMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + t := ptr.asPointerTo(u.typ).Interface().(*uint32) + v := &uint32Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + t := ptr.asPointerTo(u.typ).Interface().(*uint32) + v := &uint32Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdUInt32ValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + if ptr.isNil() { + return 0 + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*uint32) + v := &uint32Value{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + if ptr.isNil() { + return b, nil + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*uint32) + v := &uint32Value{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdUInt32ValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(u.typ) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(uint32) + v := &uint32Value{t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(u.typ) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(uint32) + v := &uint32Value{t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdUInt32ValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*uint32) + v := &uint32Value{*t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*uint32) + v := &uint32Value{*t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdUInt32ValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &uint32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(sub.typ).Elem() + s.Set(reflect.ValueOf(m.Value)) + return b[x:], nil + } +} + +func makeStdUInt32ValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &uint32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem() + s.Set(reflect.ValueOf(&m.Value)) + return b[x:], nil + } +} + +func makeStdUInt32ValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &uint32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(reflect.PtrTo(sub.typ)) + newSlice := reflect.Append(slice, reflect.ValueOf(&m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdUInt32ValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &uint32Value{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(sub.typ) + newSlice := reflect.Append(slice, reflect.ValueOf(m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdBoolValueMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + t := ptr.asPointerTo(u.typ).Interface().(*bool) + v := &boolValue{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + t := ptr.asPointerTo(u.typ).Interface().(*bool) + v := &boolValue{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdBoolValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + if ptr.isNil() { + return 0 + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*bool) + v := &boolValue{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + if ptr.isNil() { + return b, nil + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*bool) + v := &boolValue{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdBoolValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(u.typ) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(bool) + v := &boolValue{t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(u.typ) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(bool) + v := &boolValue{t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdBoolValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*bool) + v := &boolValue{*t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*bool) + v := &boolValue{*t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdBoolValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &boolValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(sub.typ).Elem() + s.Set(reflect.ValueOf(m.Value)) + return b[x:], nil + } +} + +func makeStdBoolValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &boolValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem() + s.Set(reflect.ValueOf(&m.Value)) + return b[x:], nil + } +} + +func makeStdBoolValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &boolValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(reflect.PtrTo(sub.typ)) + newSlice := reflect.Append(slice, reflect.ValueOf(&m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdBoolValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &boolValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(sub.typ) + newSlice := reflect.Append(slice, reflect.ValueOf(m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdStringValueMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + t := ptr.asPointerTo(u.typ).Interface().(*string) + v := &stringValue{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + t := ptr.asPointerTo(u.typ).Interface().(*string) + v := &stringValue{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdStringValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + if ptr.isNil() { + return 0 + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*string) + v := &stringValue{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + if ptr.isNil() { + return b, nil + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*string) + v := &stringValue{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdStringValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(u.typ) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(string) + v := &stringValue{t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(u.typ) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(string) + v := &stringValue{t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdStringValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*string) + v := &stringValue{*t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*string) + v := &stringValue{*t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdStringValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &stringValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(sub.typ).Elem() + s.Set(reflect.ValueOf(m.Value)) + return b[x:], nil + } +} + +func makeStdStringValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &stringValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem() + s.Set(reflect.ValueOf(&m.Value)) + return b[x:], nil + } +} + +func makeStdStringValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &stringValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(reflect.PtrTo(sub.typ)) + newSlice := reflect.Append(slice, reflect.ValueOf(&m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdStringValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &stringValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(sub.typ) + newSlice := reflect.Append(slice, reflect.ValueOf(m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdBytesValueMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + t := ptr.asPointerTo(u.typ).Interface().(*[]byte) + v := &bytesValue{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + t := ptr.asPointerTo(u.typ).Interface().(*[]byte) + v := &bytesValue{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdBytesValuePtrMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + if ptr.isNil() { + return 0 + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*[]byte) + v := &bytesValue{*t} + siz := Size(v) + return tagsize + SizeVarint(uint64(siz)) + siz + }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + if ptr.isNil() { + return b, nil + } + t := ptr.asPointerTo(reflect.PtrTo(u.typ)).Elem().Interface().(*[]byte) + v := &bytesValue{*t} + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(buf))) + b = append(b, buf...) + return b, nil + } +} + +func makeStdBytesValueSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(u.typ) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().([]byte) + v := &bytesValue{t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(u.typ) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().([]byte) + v := &bytesValue{t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdBytesValuePtrSliceMarshaler(u *marshalInfo) (sizer, marshaler) { + return func(ptr pointer, tagsize int) int { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + n := 0 + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*[]byte) + v := &bytesValue{*t} + siz := Size(v) + n += siz + SizeVarint(uint64(siz)) + tagsize + } + return n + }, + func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { + s := ptr.getSlice(reflect.PtrTo(u.typ)) + for i := 0; i < s.Len(); i++ { + elem := s.Index(i) + t := elem.Interface().(*[]byte) + v := &bytesValue{*t} + siz := Size(v) + buf, err := Marshal(v) + if err != nil { + return nil, err + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(siz)) + b = append(b, buf...) + } + + return b, nil + } +} + +func makeStdBytesValueUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &bytesValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(sub.typ).Elem() + s.Set(reflect.ValueOf(m.Value)) + return b[x:], nil + } +} + +func makeStdBytesValuePtrUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &bytesValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + s := f.asPointerTo(reflect.PtrTo(sub.typ)).Elem() + s.Set(reflect.ValueOf(&m.Value)) + return b[x:], nil + } +} + +func makeStdBytesValuePtrSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &bytesValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(reflect.PtrTo(sub.typ)) + newSlice := reflect.Append(slice, reflect.ValueOf(&m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} + +func makeStdBytesValueSliceUnmarshaler(sub *unmarshalInfo, name string) unmarshaler { + return func(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return nil, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + m := &bytesValue{} + if err := Unmarshal(b[:x], m); err != nil { + return nil, err + } + slice := f.getSlice(sub.typ) + newSlice := reflect.Append(slice, reflect.ValueOf(m.Value)) + slice.Set(newSlice) + return b[x:], nil + } +} diff --git a/vendor/github.com/gogo/protobuf/proto/wrappers_gogo.go b/vendor/github.com/gogo/protobuf/proto/wrappers_gogo.go new file mode 100644 index 0000000000..c1cf7bf85e --- /dev/null +++ b/vendor/github.com/gogo/protobuf/proto/wrappers_gogo.go @@ -0,0 +1,113 @@ +// Protocol Buffers for Go with Gadgets +// +// Copyright (c) 2018, The GoGo Authors. All rights reserved. +// http://github.com/gogo/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +type float64Value struct { + Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *float64Value) Reset() { *m = float64Value{} } +func (*float64Value) ProtoMessage() {} +func (*float64Value) String() string { return "float64" } + +type float32Value struct { + Value float32 `protobuf:"fixed32,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *float32Value) Reset() { *m = float32Value{} } +func (*float32Value) ProtoMessage() {} +func (*float32Value) String() string { return "float32" } + +type int64Value struct { + Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *int64Value) Reset() { *m = int64Value{} } +func (*int64Value) ProtoMessage() {} +func (*int64Value) String() string { return "int64" } + +type uint64Value struct { + Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *uint64Value) Reset() { *m = uint64Value{} } +func (*uint64Value) ProtoMessage() {} +func (*uint64Value) String() string { return "uint64" } + +type int32Value struct { + Value int32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *int32Value) Reset() { *m = int32Value{} } +func (*int32Value) ProtoMessage() {} +func (*int32Value) String() string { return "int32" } + +type uint32Value struct { + Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *uint32Value) Reset() { *m = uint32Value{} } +func (*uint32Value) ProtoMessage() {} +func (*uint32Value) String() string { return "uint32" } + +type boolValue struct { + Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *boolValue) Reset() { *m = boolValue{} } +func (*boolValue) ProtoMessage() {} +func (*boolValue) String() string { return "bool" } + +type stringValue struct { + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *stringValue) Reset() { *m = stringValue{} } +func (*stringValue) ProtoMessage() {} +func (*stringValue) String() string { return "string" } + +type bytesValue struct { + Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *bytesValue) Reset() { *m = bytesValue{} } +func (*bytesValue) ProtoMessage() {} +func (*bytesValue) String() string { return "[]byte" } + +func init() { + RegisterType((*float64Value)(nil), "gogo.protobuf.proto.DoubleValue") + RegisterType((*float32Value)(nil), "gogo.protobuf.proto.FloatValue") + RegisterType((*int64Value)(nil), "gogo.protobuf.proto.Int64Value") + RegisterType((*uint64Value)(nil), "gogo.protobuf.proto.UInt64Value") + RegisterType((*int32Value)(nil), "gogo.protobuf.proto.Int32Value") + RegisterType((*uint32Value)(nil), "gogo.protobuf.proto.UInt32Value") + RegisterType((*boolValue)(nil), "gogo.protobuf.proto.BoolValue") + RegisterType((*stringValue)(nil), "gogo.protobuf.proto.StringValue") + RegisterType((*bytesValue)(nil), "gogo.protobuf.proto.BytesValue") +} diff --git a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go index 44f893b777..cacfa39235 100644 --- a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go +++ b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go @@ -3,9 +3,11 @@ package descriptor -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -72,6 +74,7 @@ var FieldDescriptorProto_Type_name = map[int32]string{ 17: "TYPE_SINT32", 18: "TYPE_SINT64", } + var FieldDescriptorProto_Type_value = map[string]int32{ "TYPE_DOUBLE": 1, "TYPE_FLOAT": 2, @@ -98,9 +101,11 @@ func (x FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type { *p = x return p } + func (x FieldDescriptorProto_Type) String() string { return proto.EnumName(FieldDescriptorProto_Type_name, int32(x)) } + func (x *FieldDescriptorProto_Type) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Type_value, data, "FieldDescriptorProto_Type") if err != nil { @@ -109,8 +114,9 @@ func (x *FieldDescriptorProto_Type) UnmarshalJSON(data []byte) error { *x = FieldDescriptorProto_Type(value) return nil } + func (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{4, 0} + return fileDescriptor_308767df5ffe18af, []int{4, 0} } type FieldDescriptorProto_Label int32 @@ -127,6 +133,7 @@ var FieldDescriptorProto_Label_name = map[int32]string{ 2: "LABEL_REQUIRED", 3: "LABEL_REPEATED", } + var FieldDescriptorProto_Label_value = map[string]int32{ "LABEL_OPTIONAL": 1, "LABEL_REQUIRED": 2, @@ -138,9 +145,11 @@ func (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label { *p = x return p } + func (x FieldDescriptorProto_Label) String() string { return proto.EnumName(FieldDescriptorProto_Label_name, int32(x)) } + func (x *FieldDescriptorProto_Label) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Label_value, data, "FieldDescriptorProto_Label") if err != nil { @@ -149,8 +158,9 @@ func (x *FieldDescriptorProto_Label) UnmarshalJSON(data []byte) error { *x = FieldDescriptorProto_Label(value) return nil } + func (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{4, 1} + return fileDescriptor_308767df5ffe18af, []int{4, 1} } // Generated classes can be optimized for speed or code size. @@ -168,6 +178,7 @@ var FileOptions_OptimizeMode_name = map[int32]string{ 2: "CODE_SIZE", 3: "LITE_RUNTIME", } + var FileOptions_OptimizeMode_value = map[string]int32{ "SPEED": 1, "CODE_SIZE": 2, @@ -179,9 +190,11 @@ func (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode { *p = x return p } + func (x FileOptions_OptimizeMode) String() string { return proto.EnumName(FileOptions_OptimizeMode_name, int32(x)) } + func (x *FileOptions_OptimizeMode) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(FileOptions_OptimizeMode_value, data, "FileOptions_OptimizeMode") if err != nil { @@ -190,8 +203,9 @@ func (x *FileOptions_OptimizeMode) UnmarshalJSON(data []byte) error { *x = FileOptions_OptimizeMode(value) return nil } + func (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{10, 0} + return fileDescriptor_308767df5ffe18af, []int{10, 0} } type FieldOptions_CType int32 @@ -208,6 +222,7 @@ var FieldOptions_CType_name = map[int32]string{ 1: "CORD", 2: "STRING_PIECE", } + var FieldOptions_CType_value = map[string]int32{ "STRING": 0, "CORD": 1, @@ -219,9 +234,11 @@ func (x FieldOptions_CType) Enum() *FieldOptions_CType { *p = x return p } + func (x FieldOptions_CType) String() string { return proto.EnumName(FieldOptions_CType_name, int32(x)) } + func (x *FieldOptions_CType) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(FieldOptions_CType_value, data, "FieldOptions_CType") if err != nil { @@ -230,8 +247,9 @@ func (x *FieldOptions_CType) UnmarshalJSON(data []byte) error { *x = FieldOptions_CType(value) return nil } + func (FieldOptions_CType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{12, 0} + return fileDescriptor_308767df5ffe18af, []int{12, 0} } type FieldOptions_JSType int32 @@ -250,6 +268,7 @@ var FieldOptions_JSType_name = map[int32]string{ 1: "JS_STRING", 2: "JS_NUMBER", } + var FieldOptions_JSType_value = map[string]int32{ "JS_NORMAL": 0, "JS_STRING": 1, @@ -261,9 +280,11 @@ func (x FieldOptions_JSType) Enum() *FieldOptions_JSType { *p = x return p } + func (x FieldOptions_JSType) String() string { return proto.EnumName(FieldOptions_JSType_name, int32(x)) } + func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(FieldOptions_JSType_value, data, "FieldOptions_JSType") if err != nil { @@ -272,8 +293,9 @@ func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error { *x = FieldOptions_JSType(value) return nil } + func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{12, 1} + return fileDescriptor_308767df5ffe18af, []int{12, 1} } // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, @@ -292,6 +314,7 @@ var MethodOptions_IdempotencyLevel_name = map[int32]string{ 1: "NO_SIDE_EFFECTS", 2: "IDEMPOTENT", } + var MethodOptions_IdempotencyLevel_value = map[string]int32{ "IDEMPOTENCY_UNKNOWN": 0, "NO_SIDE_EFFECTS": 1, @@ -303,9 +326,11 @@ func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel { *p = x return p } + func (x MethodOptions_IdempotencyLevel) String() string { return proto.EnumName(MethodOptions_IdempotencyLevel_name, int32(x)) } + func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel") if err != nil { @@ -314,8 +339,9 @@ func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error { *x = MethodOptions_IdempotencyLevel(value) return nil } + func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{17, 0} + return fileDescriptor_308767df5ffe18af, []int{17, 0} } // The protocol compiler can output a FileDescriptorSet containing the .proto @@ -331,7 +357,7 @@ func (m *FileDescriptorSet) Reset() { *m = FileDescriptorSet{} } func (m *FileDescriptorSet) String() string { return proto.CompactTextString(m) } func (*FileDescriptorSet) ProtoMessage() {} func (*FileDescriptorSet) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{0} + return fileDescriptor_308767df5ffe18af, []int{0} } func (m *FileDescriptorSet) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FileDescriptorSet.Unmarshal(m, b) @@ -339,8 +365,8 @@ func (m *FileDescriptorSet) XXX_Unmarshal(b []byte) error { func (m *FileDescriptorSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FileDescriptorSet.Marshal(b, m, deterministic) } -func (dst *FileDescriptorSet) XXX_Merge(src proto.Message) { - xxx_messageInfo_FileDescriptorSet.Merge(dst, src) +func (m *FileDescriptorSet) XXX_Merge(src proto.Message) { + xxx_messageInfo_FileDescriptorSet.Merge(m, src) } func (m *FileDescriptorSet) XXX_Size() int { return xxx_messageInfo_FileDescriptorSet.Size(m) @@ -392,7 +418,7 @@ func (m *FileDescriptorProto) Reset() { *m = FileDescriptorProto{} } func (m *FileDescriptorProto) String() string { return proto.CompactTextString(m) } func (*FileDescriptorProto) ProtoMessage() {} func (*FileDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{1} + return fileDescriptor_308767df5ffe18af, []int{1} } func (m *FileDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FileDescriptorProto.Unmarshal(m, b) @@ -400,8 +426,8 @@ func (m *FileDescriptorProto) XXX_Unmarshal(b []byte) error { func (m *FileDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FileDescriptorProto.Marshal(b, m, deterministic) } -func (dst *FileDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_FileDescriptorProto.Merge(dst, src) +func (m *FileDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_FileDescriptorProto.Merge(m, src) } func (m *FileDescriptorProto) XXX_Size() int { return xxx_messageInfo_FileDescriptorProto.Size(m) @@ -519,7 +545,7 @@ func (m *DescriptorProto) Reset() { *m = DescriptorProto{} } func (m *DescriptorProto) String() string { return proto.CompactTextString(m) } func (*DescriptorProto) ProtoMessage() {} func (*DescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{2} + return fileDescriptor_308767df5ffe18af, []int{2} } func (m *DescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DescriptorProto.Unmarshal(m, b) @@ -527,8 +553,8 @@ func (m *DescriptorProto) XXX_Unmarshal(b []byte) error { func (m *DescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_DescriptorProto.Marshal(b, m, deterministic) } -func (dst *DescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_DescriptorProto.Merge(dst, src) +func (m *DescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_DescriptorProto.Merge(m, src) } func (m *DescriptorProto) XXX_Size() int { return xxx_messageInfo_DescriptorProto.Size(m) @@ -622,7 +648,7 @@ func (m *DescriptorProto_ExtensionRange) Reset() { *m = DescriptorProto_ func (m *DescriptorProto_ExtensionRange) String() string { return proto.CompactTextString(m) } func (*DescriptorProto_ExtensionRange) ProtoMessage() {} func (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{2, 0} + return fileDescriptor_308767df5ffe18af, []int{2, 0} } func (m *DescriptorProto_ExtensionRange) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DescriptorProto_ExtensionRange.Unmarshal(m, b) @@ -630,8 +656,8 @@ func (m *DescriptorProto_ExtensionRange) XXX_Unmarshal(b []byte) error { func (m *DescriptorProto_ExtensionRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_DescriptorProto_ExtensionRange.Marshal(b, m, deterministic) } -func (dst *DescriptorProto_ExtensionRange) XXX_Merge(src proto.Message) { - xxx_messageInfo_DescriptorProto_ExtensionRange.Merge(dst, src) +func (m *DescriptorProto_ExtensionRange) XXX_Merge(src proto.Message) { + xxx_messageInfo_DescriptorProto_ExtensionRange.Merge(m, src) } func (m *DescriptorProto_ExtensionRange) XXX_Size() int { return xxx_messageInfo_DescriptorProto_ExtensionRange.Size(m) @@ -678,7 +704,7 @@ func (m *DescriptorProto_ReservedRange) Reset() { *m = DescriptorProto_R func (m *DescriptorProto_ReservedRange) String() string { return proto.CompactTextString(m) } func (*DescriptorProto_ReservedRange) ProtoMessage() {} func (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{2, 1} + return fileDescriptor_308767df5ffe18af, []int{2, 1} } func (m *DescriptorProto_ReservedRange) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DescriptorProto_ReservedRange.Unmarshal(m, b) @@ -686,8 +712,8 @@ func (m *DescriptorProto_ReservedRange) XXX_Unmarshal(b []byte) error { func (m *DescriptorProto_ReservedRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_DescriptorProto_ReservedRange.Marshal(b, m, deterministic) } -func (dst *DescriptorProto_ReservedRange) XXX_Merge(src proto.Message) { - xxx_messageInfo_DescriptorProto_ReservedRange.Merge(dst, src) +func (m *DescriptorProto_ReservedRange) XXX_Merge(src proto.Message) { + xxx_messageInfo_DescriptorProto_ReservedRange.Merge(m, src) } func (m *DescriptorProto_ReservedRange) XXX_Size() int { return xxx_messageInfo_DescriptorProto_ReservedRange.Size(m) @@ -725,7 +751,7 @@ func (m *ExtensionRangeOptions) Reset() { *m = ExtensionRangeOptions{} } func (m *ExtensionRangeOptions) String() string { return proto.CompactTextString(m) } func (*ExtensionRangeOptions) ProtoMessage() {} func (*ExtensionRangeOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{3} + return fileDescriptor_308767df5ffe18af, []int{3} } var extRange_ExtensionRangeOptions = []proto.ExtensionRange{ @@ -735,14 +761,15 @@ var extRange_ExtensionRangeOptions = []proto.ExtensionRange{ func (*ExtensionRangeOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_ExtensionRangeOptions } + func (m *ExtensionRangeOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExtensionRangeOptions.Unmarshal(m, b) } func (m *ExtensionRangeOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ExtensionRangeOptions.Marshal(b, m, deterministic) } -func (dst *ExtensionRangeOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_ExtensionRangeOptions.Merge(dst, src) +func (m *ExtensionRangeOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExtensionRangeOptions.Merge(m, src) } func (m *ExtensionRangeOptions) XXX_Size() int { return xxx_messageInfo_ExtensionRangeOptions.Size(m) @@ -801,7 +828,7 @@ func (m *FieldDescriptorProto) Reset() { *m = FieldDescriptorProto{} } func (m *FieldDescriptorProto) String() string { return proto.CompactTextString(m) } func (*FieldDescriptorProto) ProtoMessage() {} func (*FieldDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{4} + return fileDescriptor_308767df5ffe18af, []int{4} } func (m *FieldDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FieldDescriptorProto.Unmarshal(m, b) @@ -809,8 +836,8 @@ func (m *FieldDescriptorProto) XXX_Unmarshal(b []byte) error { func (m *FieldDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FieldDescriptorProto.Marshal(b, m, deterministic) } -func (dst *FieldDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_FieldDescriptorProto.Merge(dst, src) +func (m *FieldDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_FieldDescriptorProto.Merge(m, src) } func (m *FieldDescriptorProto) XXX_Size() int { return xxx_messageInfo_FieldDescriptorProto.Size(m) @@ -904,7 +931,7 @@ func (m *OneofDescriptorProto) Reset() { *m = OneofDescriptorProto{} } func (m *OneofDescriptorProto) String() string { return proto.CompactTextString(m) } func (*OneofDescriptorProto) ProtoMessage() {} func (*OneofDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{5} + return fileDescriptor_308767df5ffe18af, []int{5} } func (m *OneofDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OneofDescriptorProto.Unmarshal(m, b) @@ -912,8 +939,8 @@ func (m *OneofDescriptorProto) XXX_Unmarshal(b []byte) error { func (m *OneofDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_OneofDescriptorProto.Marshal(b, m, deterministic) } -func (dst *OneofDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_OneofDescriptorProto.Merge(dst, src) +func (m *OneofDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_OneofDescriptorProto.Merge(m, src) } func (m *OneofDescriptorProto) XXX_Size() int { return xxx_messageInfo_OneofDescriptorProto.Size(m) @@ -959,7 +986,7 @@ func (m *EnumDescriptorProto) Reset() { *m = EnumDescriptorProto{} } func (m *EnumDescriptorProto) String() string { return proto.CompactTextString(m) } func (*EnumDescriptorProto) ProtoMessage() {} func (*EnumDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{6} + return fileDescriptor_308767df5ffe18af, []int{6} } func (m *EnumDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_EnumDescriptorProto.Unmarshal(m, b) @@ -967,8 +994,8 @@ func (m *EnumDescriptorProto) XXX_Unmarshal(b []byte) error { func (m *EnumDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_EnumDescriptorProto.Marshal(b, m, deterministic) } -func (dst *EnumDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_EnumDescriptorProto.Merge(dst, src) +func (m *EnumDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnumDescriptorProto.Merge(m, src) } func (m *EnumDescriptorProto) XXX_Size() int { return xxx_messageInfo_EnumDescriptorProto.Size(m) @@ -1032,7 +1059,7 @@ func (m *EnumDescriptorProto_EnumReservedRange) Reset() { *m = EnumDescr func (m *EnumDescriptorProto_EnumReservedRange) String() string { return proto.CompactTextString(m) } func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {} func (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{6, 0} + return fileDescriptor_308767df5ffe18af, []int{6, 0} } func (m *EnumDescriptorProto_EnumReservedRange) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Unmarshal(m, b) @@ -1040,8 +1067,8 @@ func (m *EnumDescriptorProto_EnumReservedRange) XXX_Unmarshal(b []byte) error { func (m *EnumDescriptorProto_EnumReservedRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Marshal(b, m, deterministic) } -func (dst *EnumDescriptorProto_EnumReservedRange) XXX_Merge(src proto.Message) { - xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Merge(dst, src) +func (m *EnumDescriptorProto_EnumReservedRange) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Merge(m, src) } func (m *EnumDescriptorProto_EnumReservedRange) XXX_Size() int { return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Size(m) @@ -1080,7 +1107,7 @@ func (m *EnumValueDescriptorProto) Reset() { *m = EnumValueDescriptorPro func (m *EnumValueDescriptorProto) String() string { return proto.CompactTextString(m) } func (*EnumValueDescriptorProto) ProtoMessage() {} func (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{7} + return fileDescriptor_308767df5ffe18af, []int{7} } func (m *EnumValueDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_EnumValueDescriptorProto.Unmarshal(m, b) @@ -1088,8 +1115,8 @@ func (m *EnumValueDescriptorProto) XXX_Unmarshal(b []byte) error { func (m *EnumValueDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_EnumValueDescriptorProto.Marshal(b, m, deterministic) } -func (dst *EnumValueDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_EnumValueDescriptorProto.Merge(dst, src) +func (m *EnumValueDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnumValueDescriptorProto.Merge(m, src) } func (m *EnumValueDescriptorProto) XXX_Size() int { return xxx_messageInfo_EnumValueDescriptorProto.Size(m) @@ -1135,7 +1162,7 @@ func (m *ServiceDescriptorProto) Reset() { *m = ServiceDescriptorProto{} func (m *ServiceDescriptorProto) String() string { return proto.CompactTextString(m) } func (*ServiceDescriptorProto) ProtoMessage() {} func (*ServiceDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{8} + return fileDescriptor_308767df5ffe18af, []int{8} } func (m *ServiceDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ServiceDescriptorProto.Unmarshal(m, b) @@ -1143,8 +1170,8 @@ func (m *ServiceDescriptorProto) XXX_Unmarshal(b []byte) error { func (m *ServiceDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ServiceDescriptorProto.Marshal(b, m, deterministic) } -func (dst *ServiceDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_ServiceDescriptorProto.Merge(dst, src) +func (m *ServiceDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceDescriptorProto.Merge(m, src) } func (m *ServiceDescriptorProto) XXX_Size() int { return xxx_messageInfo_ServiceDescriptorProto.Size(m) @@ -1197,7 +1224,7 @@ func (m *MethodDescriptorProto) Reset() { *m = MethodDescriptorProto{} } func (m *MethodDescriptorProto) String() string { return proto.CompactTextString(m) } func (*MethodDescriptorProto) ProtoMessage() {} func (*MethodDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{9} + return fileDescriptor_308767df5ffe18af, []int{9} } func (m *MethodDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MethodDescriptorProto.Unmarshal(m, b) @@ -1205,8 +1232,8 @@ func (m *MethodDescriptorProto) XXX_Unmarshal(b []byte) error { func (m *MethodDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_MethodDescriptorProto.Marshal(b, m, deterministic) } -func (dst *MethodDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_MethodDescriptorProto.Merge(dst, src) +func (m *MethodDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_MethodDescriptorProto.Merge(m, src) } func (m *MethodDescriptorProto) XXX_Size() int { return xxx_messageInfo_MethodDescriptorProto.Size(m) @@ -1336,6 +1363,14 @@ type FileOptions struct { // is empty. When this option is empty, the package name will be used for // determining the namespace. PhpNamespace *string `protobuf:"bytes,41,opt,name=php_namespace,json=phpNamespace" json:"php_namespace,omitempty"` + // Use this option to change the namespace of php generated metadata classes. + // Default is empty. When this option is empty, the proto file name will be used + // for determining the namespace. + PhpMetadataNamespace *string `protobuf:"bytes,44,opt,name=php_metadata_namespace,json=phpMetadataNamespace" json:"php_metadata_namespace,omitempty"` + // Use this option to change the package of ruby generated classes. Default + // is empty. When this option is not set, the package name will be used for + // determining the ruby package. + RubyPackage *string `protobuf:"bytes,45,opt,name=ruby_package,json=rubyPackage" json:"ruby_package,omitempty"` // The parser stores options it doesn't recognize here. // See the documentation for the "Options" section above. UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` @@ -1349,7 +1384,7 @@ func (m *FileOptions) Reset() { *m = FileOptions{} } func (m *FileOptions) String() string { return proto.CompactTextString(m) } func (*FileOptions) ProtoMessage() {} func (*FileOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{10} + return fileDescriptor_308767df5ffe18af, []int{10} } var extRange_FileOptions = []proto.ExtensionRange{ @@ -1359,14 +1394,15 @@ var extRange_FileOptions = []proto.ExtensionRange{ func (*FileOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_FileOptions } + func (m *FileOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FileOptions.Unmarshal(m, b) } func (m *FileOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FileOptions.Marshal(b, m, deterministic) } -func (dst *FileOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_FileOptions.Merge(dst, src) +func (m *FileOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_FileOptions.Merge(m, src) } func (m *FileOptions) XXX_Size() int { return xxx_messageInfo_FileOptions.Size(m) @@ -1514,6 +1550,20 @@ func (m *FileOptions) GetPhpNamespace() string { return "" } +func (m *FileOptions) GetPhpMetadataNamespace() string { + if m != nil && m.PhpMetadataNamespace != nil { + return *m.PhpMetadataNamespace + } + return "" +} + +func (m *FileOptions) GetRubyPackage() string { + if m != nil && m.RubyPackage != nil { + return *m.RubyPackage + } + return "" +} + func (m *FileOptions) GetUninterpretedOption() []*UninterpretedOption { if m != nil { return m.UninterpretedOption @@ -1584,7 +1634,7 @@ func (m *MessageOptions) Reset() { *m = MessageOptions{} } func (m *MessageOptions) String() string { return proto.CompactTextString(m) } func (*MessageOptions) ProtoMessage() {} func (*MessageOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{11} + return fileDescriptor_308767df5ffe18af, []int{11} } var extRange_MessageOptions = []proto.ExtensionRange{ @@ -1594,14 +1644,15 @@ var extRange_MessageOptions = []proto.ExtensionRange{ func (*MessageOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_MessageOptions } + func (m *MessageOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MessageOptions.Unmarshal(m, b) } func (m *MessageOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_MessageOptions.Marshal(b, m, deterministic) } -func (dst *MessageOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_MessageOptions.Merge(dst, src) +func (m *MessageOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_MessageOptions.Merge(m, src) } func (m *MessageOptions) XXX_Size() int { return xxx_messageInfo_MessageOptions.Size(m) @@ -1723,7 +1774,7 @@ func (m *FieldOptions) Reset() { *m = FieldOptions{} } func (m *FieldOptions) String() string { return proto.CompactTextString(m) } func (*FieldOptions) ProtoMessage() {} func (*FieldOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{12} + return fileDescriptor_308767df5ffe18af, []int{12} } var extRange_FieldOptions = []proto.ExtensionRange{ @@ -1733,14 +1784,15 @@ var extRange_FieldOptions = []proto.ExtensionRange{ func (*FieldOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_FieldOptions } + func (m *FieldOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FieldOptions.Unmarshal(m, b) } func (m *FieldOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FieldOptions.Marshal(b, m, deterministic) } -func (dst *FieldOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_FieldOptions.Merge(dst, src) +func (m *FieldOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_FieldOptions.Merge(m, src) } func (m *FieldOptions) XXX_Size() int { return xxx_messageInfo_FieldOptions.Size(m) @@ -1819,7 +1871,7 @@ func (m *OneofOptions) Reset() { *m = OneofOptions{} } func (m *OneofOptions) String() string { return proto.CompactTextString(m) } func (*OneofOptions) ProtoMessage() {} func (*OneofOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{13} + return fileDescriptor_308767df5ffe18af, []int{13} } var extRange_OneofOptions = []proto.ExtensionRange{ @@ -1829,14 +1881,15 @@ var extRange_OneofOptions = []proto.ExtensionRange{ func (*OneofOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_OneofOptions } + func (m *OneofOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OneofOptions.Unmarshal(m, b) } func (m *OneofOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_OneofOptions.Marshal(b, m, deterministic) } -func (dst *OneofOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_OneofOptions.Merge(dst, src) +func (m *OneofOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_OneofOptions.Merge(m, src) } func (m *OneofOptions) XXX_Size() int { return xxx_messageInfo_OneofOptions.Size(m) @@ -1875,7 +1928,7 @@ func (m *EnumOptions) Reset() { *m = EnumOptions{} } func (m *EnumOptions) String() string { return proto.CompactTextString(m) } func (*EnumOptions) ProtoMessage() {} func (*EnumOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{14} + return fileDescriptor_308767df5ffe18af, []int{14} } var extRange_EnumOptions = []proto.ExtensionRange{ @@ -1885,14 +1938,15 @@ var extRange_EnumOptions = []proto.ExtensionRange{ func (*EnumOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_EnumOptions } + func (m *EnumOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_EnumOptions.Unmarshal(m, b) } func (m *EnumOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_EnumOptions.Marshal(b, m, deterministic) } -func (dst *EnumOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_EnumOptions.Merge(dst, src) +func (m *EnumOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnumOptions.Merge(m, src) } func (m *EnumOptions) XXX_Size() int { return xxx_messageInfo_EnumOptions.Size(m) @@ -1944,7 +1998,7 @@ func (m *EnumValueOptions) Reset() { *m = EnumValueOptions{} } func (m *EnumValueOptions) String() string { return proto.CompactTextString(m) } func (*EnumValueOptions) ProtoMessage() {} func (*EnumValueOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{15} + return fileDescriptor_308767df5ffe18af, []int{15} } var extRange_EnumValueOptions = []proto.ExtensionRange{ @@ -1954,14 +2008,15 @@ var extRange_EnumValueOptions = []proto.ExtensionRange{ func (*EnumValueOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_EnumValueOptions } + func (m *EnumValueOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_EnumValueOptions.Unmarshal(m, b) } func (m *EnumValueOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_EnumValueOptions.Marshal(b, m, deterministic) } -func (dst *EnumValueOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_EnumValueOptions.Merge(dst, src) +func (m *EnumValueOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnumValueOptions.Merge(m, src) } func (m *EnumValueOptions) XXX_Size() int { return xxx_messageInfo_EnumValueOptions.Size(m) @@ -2006,7 +2061,7 @@ func (m *ServiceOptions) Reset() { *m = ServiceOptions{} } func (m *ServiceOptions) String() string { return proto.CompactTextString(m) } func (*ServiceOptions) ProtoMessage() {} func (*ServiceOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{16} + return fileDescriptor_308767df5ffe18af, []int{16} } var extRange_ServiceOptions = []proto.ExtensionRange{ @@ -2016,14 +2071,15 @@ var extRange_ServiceOptions = []proto.ExtensionRange{ func (*ServiceOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_ServiceOptions } + func (m *ServiceOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ServiceOptions.Unmarshal(m, b) } func (m *ServiceOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ServiceOptions.Marshal(b, m, deterministic) } -func (dst *ServiceOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_ServiceOptions.Merge(dst, src) +func (m *ServiceOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceOptions.Merge(m, src) } func (m *ServiceOptions) XXX_Size() int { return xxx_messageInfo_ServiceOptions.Size(m) @@ -2069,7 +2125,7 @@ func (m *MethodOptions) Reset() { *m = MethodOptions{} } func (m *MethodOptions) String() string { return proto.CompactTextString(m) } func (*MethodOptions) ProtoMessage() {} func (*MethodOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{17} + return fileDescriptor_308767df5ffe18af, []int{17} } var extRange_MethodOptions = []proto.ExtensionRange{ @@ -2079,14 +2135,15 @@ var extRange_MethodOptions = []proto.ExtensionRange{ func (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_MethodOptions } + func (m *MethodOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MethodOptions.Unmarshal(m, b) } func (m *MethodOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_MethodOptions.Marshal(b, m, deterministic) } -func (dst *MethodOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_MethodOptions.Merge(dst, src) +func (m *MethodOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_MethodOptions.Merge(m, src) } func (m *MethodOptions) XXX_Size() int { return xxx_messageInfo_MethodOptions.Size(m) @@ -2146,7 +2203,7 @@ func (m *UninterpretedOption) Reset() { *m = UninterpretedOption{} } func (m *UninterpretedOption) String() string { return proto.CompactTextString(m) } func (*UninterpretedOption) ProtoMessage() {} func (*UninterpretedOption) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{18} + return fileDescriptor_308767df5ffe18af, []int{18} } func (m *UninterpretedOption) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UninterpretedOption.Unmarshal(m, b) @@ -2154,8 +2211,8 @@ func (m *UninterpretedOption) XXX_Unmarshal(b []byte) error { func (m *UninterpretedOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_UninterpretedOption.Marshal(b, m, deterministic) } -func (dst *UninterpretedOption) XXX_Merge(src proto.Message) { - xxx_messageInfo_UninterpretedOption.Merge(dst, src) +func (m *UninterpretedOption) XXX_Merge(src proto.Message) { + xxx_messageInfo_UninterpretedOption.Merge(m, src) } func (m *UninterpretedOption) XXX_Size() int { return xxx_messageInfo_UninterpretedOption.Size(m) @@ -2232,7 +2289,7 @@ func (m *UninterpretedOption_NamePart) Reset() { *m = UninterpretedOptio func (m *UninterpretedOption_NamePart) String() string { return proto.CompactTextString(m) } func (*UninterpretedOption_NamePart) ProtoMessage() {} func (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{18, 0} + return fileDescriptor_308767df5ffe18af, []int{18, 0} } func (m *UninterpretedOption_NamePart) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UninterpretedOption_NamePart.Unmarshal(m, b) @@ -2240,8 +2297,8 @@ func (m *UninterpretedOption_NamePart) XXX_Unmarshal(b []byte) error { func (m *UninterpretedOption_NamePart) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_UninterpretedOption_NamePart.Marshal(b, m, deterministic) } -func (dst *UninterpretedOption_NamePart) XXX_Merge(src proto.Message) { - xxx_messageInfo_UninterpretedOption_NamePart.Merge(dst, src) +func (m *UninterpretedOption_NamePart) XXX_Merge(src proto.Message) { + xxx_messageInfo_UninterpretedOption_NamePart.Merge(m, src) } func (m *UninterpretedOption_NamePart) XXX_Size() int { return xxx_messageInfo_UninterpretedOption_NamePart.Size(m) @@ -2322,7 +2379,7 @@ func (m *SourceCodeInfo) Reset() { *m = SourceCodeInfo{} } func (m *SourceCodeInfo) String() string { return proto.CompactTextString(m) } func (*SourceCodeInfo) ProtoMessage() {} func (*SourceCodeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{19} + return fileDescriptor_308767df5ffe18af, []int{19} } func (m *SourceCodeInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SourceCodeInfo.Unmarshal(m, b) @@ -2330,8 +2387,8 @@ func (m *SourceCodeInfo) XXX_Unmarshal(b []byte) error { func (m *SourceCodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_SourceCodeInfo.Marshal(b, m, deterministic) } -func (dst *SourceCodeInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_SourceCodeInfo.Merge(dst, src) +func (m *SourceCodeInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_SourceCodeInfo.Merge(m, src) } func (m *SourceCodeInfo) XXX_Size() int { return xxx_messageInfo_SourceCodeInfo.Size(m) @@ -2439,7 +2496,7 @@ func (m *SourceCodeInfo_Location) Reset() { *m = SourceCodeInfo_Location func (m *SourceCodeInfo_Location) String() string { return proto.CompactTextString(m) } func (*SourceCodeInfo_Location) ProtoMessage() {} func (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{19, 0} + return fileDescriptor_308767df5ffe18af, []int{19, 0} } func (m *SourceCodeInfo_Location) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SourceCodeInfo_Location.Unmarshal(m, b) @@ -2447,8 +2504,8 @@ func (m *SourceCodeInfo_Location) XXX_Unmarshal(b []byte) error { func (m *SourceCodeInfo_Location) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_SourceCodeInfo_Location.Marshal(b, m, deterministic) } -func (dst *SourceCodeInfo_Location) XXX_Merge(src proto.Message) { - xxx_messageInfo_SourceCodeInfo_Location.Merge(dst, src) +func (m *SourceCodeInfo_Location) XXX_Merge(src proto.Message) { + xxx_messageInfo_SourceCodeInfo_Location.Merge(m, src) } func (m *SourceCodeInfo_Location) XXX_Size() int { return xxx_messageInfo_SourceCodeInfo_Location.Size(m) @@ -2510,7 +2567,7 @@ func (m *GeneratedCodeInfo) Reset() { *m = GeneratedCodeInfo{} } func (m *GeneratedCodeInfo) String() string { return proto.CompactTextString(m) } func (*GeneratedCodeInfo) ProtoMessage() {} func (*GeneratedCodeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{20} + return fileDescriptor_308767df5ffe18af, []int{20} } func (m *GeneratedCodeInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GeneratedCodeInfo.Unmarshal(m, b) @@ -2518,8 +2575,8 @@ func (m *GeneratedCodeInfo) XXX_Unmarshal(b []byte) error { func (m *GeneratedCodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_GeneratedCodeInfo.Marshal(b, m, deterministic) } -func (dst *GeneratedCodeInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_GeneratedCodeInfo.Merge(dst, src) +func (m *GeneratedCodeInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_GeneratedCodeInfo.Merge(m, src) } func (m *GeneratedCodeInfo) XXX_Size() int { return xxx_messageInfo_GeneratedCodeInfo.Size(m) @@ -2559,7 +2616,7 @@ func (m *GeneratedCodeInfo_Annotation) Reset() { *m = GeneratedCodeInfo_ func (m *GeneratedCodeInfo_Annotation) String() string { return proto.CompactTextString(m) } func (*GeneratedCodeInfo_Annotation) ProtoMessage() {} func (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_9588782fb9cbecd6, []int{20, 0} + return fileDescriptor_308767df5ffe18af, []int{20, 0} } func (m *GeneratedCodeInfo_Annotation) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GeneratedCodeInfo_Annotation.Unmarshal(m, b) @@ -2567,8 +2624,8 @@ func (m *GeneratedCodeInfo_Annotation) XXX_Unmarshal(b []byte) error { func (m *GeneratedCodeInfo_Annotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_GeneratedCodeInfo_Annotation.Marshal(b, m, deterministic) } -func (dst *GeneratedCodeInfo_Annotation) XXX_Merge(src proto.Message) { - xxx_messageInfo_GeneratedCodeInfo_Annotation.Merge(dst, src) +func (m *GeneratedCodeInfo_Annotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_GeneratedCodeInfo_Annotation.Merge(m, src) } func (m *GeneratedCodeInfo_Annotation) XXX_Size() int { return xxx_messageInfo_GeneratedCodeInfo_Annotation.Size(m) @@ -2608,6 +2665,12 @@ func (m *GeneratedCodeInfo_Annotation) GetEnd() int32 { } func init() { + proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Type", FieldDescriptorProto_Type_name, FieldDescriptorProto_Type_value) + proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Label", FieldDescriptorProto_Label_name, FieldDescriptorProto_Label_value) + proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value) + proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value) + proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value) + proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value) proto.RegisterType((*FileDescriptorSet)(nil), "google.protobuf.FileDescriptorSet") proto.RegisterType((*FileDescriptorProto)(nil), "google.protobuf.FileDescriptorProto") proto.RegisterType((*DescriptorProto)(nil), "google.protobuf.DescriptorProto") @@ -2635,172 +2698,168 @@ func init() { proto.RegisterType((*SourceCodeInfo_Location)(nil), "google.protobuf.SourceCodeInfo.Location") proto.RegisterType((*GeneratedCodeInfo)(nil), "google.protobuf.GeneratedCodeInfo") proto.RegisterType((*GeneratedCodeInfo_Annotation)(nil), "google.protobuf.GeneratedCodeInfo.Annotation") - proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Type", FieldDescriptorProto_Type_name, FieldDescriptorProto_Type_value) - proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Label", FieldDescriptorProto_Label_name, FieldDescriptorProto_Label_value) - proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value) - proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value) - proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value) - proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value) } -func init() { proto.RegisterFile("descriptor.proto", fileDescriptor_descriptor_9588782fb9cbecd6) } +func init() { proto.RegisterFile("descriptor.proto", fileDescriptor_308767df5ffe18af) } -var fileDescriptor_descriptor_9588782fb9cbecd6 = []byte{ - // 2487 bytes of a gzipped FileDescriptorProto +var fileDescriptor_308767df5ffe18af = []byte{ + // 2522 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xcd, 0x6f, 0xdb, 0xc8, - 0x15, 0x5f, 0x7d, 0x5a, 0x7a, 0x92, 0xe5, 0xf1, 0xd8, 0x9b, 0x30, 0xde, 0x8f, 0x38, 0xda, 0x8f, - 0x38, 0x49, 0xab, 0x2c, 0x9c, 0xc4, 0xc9, 0x3a, 0xc5, 0xb6, 0xb2, 0xc4, 0x78, 0x95, 0xca, 0x92, + 0x15, 0x5f, 0x7d, 0x5a, 0x7a, 0x92, 0x65, 0x7a, 0xec, 0x75, 0x18, 0xef, 0x47, 0x1c, 0xed, 0x66, + 0xe3, 0x24, 0xbb, 0xca, 0xc2, 0x49, 0x9c, 0xac, 0x53, 0x6c, 0x2b, 0x4b, 0x8c, 0x57, 0xa9, 0xbe, 0x4a, 0xc9, 0xdd, 0x64, 0x8b, 0x82, 0x18, 0x93, 0x23, 0x89, 0x09, 0x45, 0x72, 0x49, 0x2a, 0x89, - 0x83, 0x1e, 0x02, 0xf4, 0xd4, 0xff, 0xa0, 0x28, 0x8a, 0x1e, 0x7a, 0x59, 0xa0, 0xd7, 0x02, 0x05, - 0xda, 0x7b, 0xaf, 0x05, 0x7a, 0xef, 0xa1, 0x40, 0x0b, 0xb4, 0x7f, 0x42, 0x8f, 0xc5, 0xcc, 0x90, - 0x14, 0xf5, 0x95, 0x78, 0x17, 0x48, 0xf6, 0x64, 0xcf, 0xef, 0xfd, 0xde, 0xe3, 0x9b, 0x37, 0x6f, - 0xde, 0xbc, 0x19, 0x01, 0xd2, 0xa9, 0xa7, 0xb9, 0x86, 0xe3, 0xdb, 0x6e, 0xc5, 0x71, 0x6d, 0xdf, - 0xc6, 0x6b, 0x03, 0xdb, 0x1e, 0x98, 0x54, 0x8c, 0x4e, 0xc6, 0xfd, 0xf2, 0x11, 0xac, 0xdf, 0x33, - 0x4c, 0x5a, 0x8f, 0x88, 0x5d, 0xea, 0xe3, 0x3b, 0x90, 0xee, 0x1b, 0x26, 0x95, 0x12, 0xdb, 0xa9, - 0x9d, 0xc2, 0xee, 0x87, 0x95, 0x19, 0xa5, 0xca, 0xb4, 0x46, 0x87, 0xc1, 0x0a, 0xd7, 0x28, 0xff, - 0x3b, 0x0d, 0x1b, 0x0b, 0xa4, 0x18, 0x43, 0xda, 0x22, 0x23, 0x66, 0x31, 0xb1, 0x93, 0x57, 0xf8, - 0xff, 0x58, 0x82, 0x15, 0x87, 0x68, 0x8f, 0xc9, 0x80, 0x4a, 0x49, 0x0e, 0x87, 0x43, 0xfc, 0x3e, - 0x80, 0x4e, 0x1d, 0x6a, 0xe9, 0xd4, 0xd2, 0x4e, 0xa5, 0xd4, 0x76, 0x6a, 0x27, 0xaf, 0xc4, 0x10, - 0x7c, 0x0d, 0xd6, 0x9d, 0xf1, 0x89, 0x69, 0x68, 0x6a, 0x8c, 0x06, 0xdb, 0xa9, 0x9d, 0x8c, 0x82, - 0x84, 0xa0, 0x3e, 0x21, 0x5f, 0x86, 0xb5, 0xa7, 0x94, 0x3c, 0x8e, 0x53, 0x0b, 0x9c, 0x5a, 0x62, - 0x70, 0x8c, 0x58, 0x83, 0xe2, 0x88, 0x7a, 0x1e, 0x19, 0x50, 0xd5, 0x3f, 0x75, 0xa8, 0x94, 0xe6, - 0xb3, 0xdf, 0x9e, 0x9b, 0xfd, 0xec, 0xcc, 0x0b, 0x81, 0x56, 0xef, 0xd4, 0xa1, 0xb8, 0x0a, 0x79, - 0x6a, 0x8d, 0x47, 0xc2, 0x42, 0x66, 0x49, 0xfc, 0x64, 0x6b, 0x3c, 0x9a, 0xb5, 0x92, 0x63, 0x6a, - 0x81, 0x89, 0x15, 0x8f, 0xba, 0x4f, 0x0c, 0x8d, 0x4a, 0x59, 0x6e, 0xe0, 0xf2, 0x9c, 0x81, 0xae, - 0x90, 0xcf, 0xda, 0x08, 0xf5, 0x70, 0x0d, 0xf2, 0xf4, 0x99, 0x4f, 0x2d, 0xcf, 0xb0, 0x2d, 0x69, - 0x85, 0x1b, 0xf9, 0x68, 0xc1, 0x2a, 0x52, 0x53, 0x9f, 0x35, 0x31, 0xd1, 0xc3, 0x7b, 0xb0, 0x62, - 0x3b, 0xbe, 0x61, 0x5b, 0x9e, 0x94, 0xdb, 0x4e, 0xec, 0x14, 0x76, 0xdf, 0x5d, 0x98, 0x08, 0x6d, - 0xc1, 0x51, 0x42, 0x32, 0x6e, 0x00, 0xf2, 0xec, 0xb1, 0xab, 0x51, 0x55, 0xb3, 0x75, 0xaa, 0x1a, - 0x56, 0xdf, 0x96, 0xf2, 0xdc, 0xc0, 0xc5, 0xf9, 0x89, 0x70, 0x62, 0xcd, 0xd6, 0x69, 0xc3, 0xea, - 0xdb, 0x4a, 0xc9, 0x9b, 0x1a, 0xe3, 0x73, 0x90, 0xf5, 0x4e, 0x2d, 0x9f, 0x3c, 0x93, 0x8a, 0x3c, - 0x43, 0x82, 0x51, 0xf9, 0xcf, 0x59, 0x58, 0x3b, 0x4b, 0x8a, 0xdd, 0x85, 0x4c, 0x9f, 0xcd, 0x52, - 0x4a, 0x7e, 0x93, 0x18, 0x08, 0x9d, 0xe9, 0x20, 0x66, 0xbf, 0x65, 0x10, 0xab, 0x50, 0xb0, 0xa8, - 0xe7, 0x53, 0x5d, 0x64, 0x44, 0xea, 0x8c, 0x39, 0x05, 0x42, 0x69, 0x3e, 0xa5, 0xd2, 0xdf, 0x2a, - 0xa5, 0x1e, 0xc0, 0x5a, 0xe4, 0x92, 0xea, 0x12, 0x6b, 0x10, 0xe6, 0xe6, 0xf5, 0x57, 0x79, 0x52, - 0x91, 0x43, 0x3d, 0x85, 0xa9, 0x29, 0x25, 0x3a, 0x35, 0xc6, 0x75, 0x00, 0xdb, 0xa2, 0x76, 0x5f, - 0xd5, 0xa9, 0x66, 0x4a, 0xb9, 0x25, 0x51, 0x6a, 0x33, 0xca, 0x5c, 0x94, 0x6c, 0x81, 0x6a, 0x26, - 0xfe, 0x74, 0x92, 0x6a, 0x2b, 0x4b, 0x32, 0xe5, 0x48, 0x6c, 0xb2, 0xb9, 0x6c, 0x3b, 0x86, 0x92, - 0x4b, 0x59, 0xde, 0x53, 0x3d, 0x98, 0x59, 0x9e, 0x3b, 0x51, 0x79, 0xe5, 0xcc, 0x94, 0x40, 0x4d, - 0x4c, 0x6c, 0xd5, 0x8d, 0x0f, 0xf1, 0x07, 0x10, 0x01, 0x2a, 0x4f, 0x2b, 0xe0, 0x55, 0xa8, 0x18, - 0x82, 0x2d, 0x32, 0xa2, 0x5b, 0xcf, 0xa1, 0x34, 0x1d, 0x1e, 0xbc, 0x09, 0x19, 0xcf, 0x27, 0xae, - 0xcf, 0xb3, 0x30, 0xa3, 0x88, 0x01, 0x46, 0x90, 0xa2, 0x96, 0xce, 0xab, 0x5c, 0x46, 0x61, 0xff, - 0xe2, 0x1f, 0x4d, 0x26, 0x9c, 0xe2, 0x13, 0xfe, 0x78, 0x7e, 0x45, 0xa7, 0x2c, 0xcf, 0xce, 0x7b, - 0xeb, 0x36, 0xac, 0x4e, 0x4d, 0xe0, 0xac, 0x9f, 0x2e, 0xff, 0x02, 0xde, 0x5e, 0x68, 0x1a, 0x3f, - 0x80, 0xcd, 0xb1, 0x65, 0x58, 0x3e, 0x75, 0x1d, 0x97, 0xb2, 0x8c, 0x15, 0x9f, 0x92, 0xfe, 0xb3, - 0xb2, 0x24, 0xe7, 0x8e, 0xe3, 0x6c, 0x61, 0x45, 0xd9, 0x18, 0xcf, 0x83, 0x57, 0xf3, 0xb9, 0xff, - 0xae, 0xa0, 0x17, 0x2f, 0x5e, 0xbc, 0x48, 0x96, 0x7f, 0x9d, 0x85, 0xcd, 0x45, 0x7b, 0x66, 0xe1, - 0xf6, 0x3d, 0x07, 0x59, 0x6b, 0x3c, 0x3a, 0xa1, 0x2e, 0x0f, 0x52, 0x46, 0x09, 0x46, 0xb8, 0x0a, - 0x19, 0x93, 0x9c, 0x50, 0x53, 0x4a, 0x6f, 0x27, 0x76, 0x4a, 0xbb, 0xd7, 0xce, 0xb4, 0x2b, 0x2b, - 0x4d, 0xa6, 0xa2, 0x08, 0x4d, 0xfc, 0x19, 0xa4, 0x83, 0x12, 0xcd, 0x2c, 0x5c, 0x3d, 0x9b, 0x05, - 0xb6, 0x97, 0x14, 0xae, 0x87, 0xdf, 0x81, 0x3c, 0xfb, 0x2b, 0x72, 0x23, 0xcb, 0x7d, 0xce, 0x31, - 0x80, 0xe5, 0x05, 0xde, 0x82, 0x1c, 0xdf, 0x26, 0x3a, 0x0d, 0x8f, 0xb6, 0x68, 0xcc, 0x12, 0x4b, - 0xa7, 0x7d, 0x32, 0x36, 0x7d, 0xf5, 0x09, 0x31, 0xc7, 0x94, 0x27, 0x7c, 0x5e, 0x29, 0x06, 0xe0, - 0x4f, 0x19, 0x86, 0x2f, 0x42, 0x41, 0xec, 0x2a, 0xc3, 0xd2, 0xe9, 0x33, 0x5e, 0x3d, 0x33, 0x8a, - 0xd8, 0x68, 0x0d, 0x86, 0xb0, 0xcf, 0x3f, 0xf2, 0x6c, 0x2b, 0x4c, 0x4d, 0xfe, 0x09, 0x06, 0xf0, - 0xcf, 0xdf, 0x9e, 0x2d, 0xdc, 0xef, 0x2d, 0x9e, 0xde, 0x6c, 0x4e, 0x95, 0xff, 0x94, 0x84, 0x34, - 0xaf, 0x17, 0x6b, 0x50, 0xe8, 0x3d, 0xec, 0xc8, 0x6a, 0xbd, 0x7d, 0x7c, 0xd0, 0x94, 0x51, 0x02, - 0x97, 0x00, 0x38, 0x70, 0xaf, 0xd9, 0xae, 0xf6, 0x50, 0x32, 0x1a, 0x37, 0x5a, 0xbd, 0xbd, 0x9b, - 0x28, 0x15, 0x29, 0x1c, 0x0b, 0x20, 0x1d, 0x27, 0xdc, 0xd8, 0x45, 0x19, 0x8c, 0xa0, 0x28, 0x0c, - 0x34, 0x1e, 0xc8, 0xf5, 0xbd, 0x9b, 0x28, 0x3b, 0x8d, 0xdc, 0xd8, 0x45, 0x2b, 0x78, 0x15, 0xf2, - 0x1c, 0x39, 0x68, 0xb7, 0x9b, 0x28, 0x17, 0xd9, 0xec, 0xf6, 0x94, 0x46, 0xeb, 0x10, 0xe5, 0x23, - 0x9b, 0x87, 0x4a, 0xfb, 0xb8, 0x83, 0x20, 0xb2, 0x70, 0x24, 0x77, 0xbb, 0xd5, 0x43, 0x19, 0x15, - 0x22, 0xc6, 0xc1, 0xc3, 0x9e, 0xdc, 0x45, 0xc5, 0x29, 0xb7, 0x6e, 0xec, 0xa2, 0xd5, 0xe8, 0x13, - 0x72, 0xeb, 0xf8, 0x08, 0x95, 0xf0, 0x3a, 0xac, 0x8a, 0x4f, 0x84, 0x4e, 0xac, 0xcd, 0x40, 0x7b, - 0x37, 0x11, 0x9a, 0x38, 0x22, 0xac, 0xac, 0x4f, 0x01, 0x7b, 0x37, 0x11, 0x2e, 0xd7, 0x20, 0xc3, - 0xb3, 0x0b, 0x63, 0x28, 0x35, 0xab, 0x07, 0x72, 0x53, 0x6d, 0x77, 0x7a, 0x8d, 0x76, 0xab, 0xda, - 0x44, 0x89, 0x09, 0xa6, 0xc8, 0x3f, 0x39, 0x6e, 0x28, 0x72, 0x1d, 0x25, 0xe3, 0x58, 0x47, 0xae, - 0xf6, 0xe4, 0x3a, 0x4a, 0x95, 0x35, 0xd8, 0x5c, 0x54, 0x27, 0x17, 0xee, 0x8c, 0xd8, 0x12, 0x27, - 0x97, 0x2c, 0x31, 0xb7, 0x35, 0xb7, 0xc4, 0xff, 0x4a, 0xc2, 0xc6, 0x82, 0xb3, 0x62, 0xe1, 0x47, - 0x7e, 0x08, 0x19, 0x91, 0xa2, 0xe2, 0xf4, 0xbc, 0xb2, 0xf0, 0xd0, 0xe1, 0x09, 0x3b, 0x77, 0x82, - 0x72, 0xbd, 0x78, 0x07, 0x91, 0x5a, 0xd2, 0x41, 0x30, 0x13, 0x73, 0x35, 0xfd, 0xe7, 0x73, 0x35, - 0x5d, 0x1c, 0x7b, 0x7b, 0x67, 0x39, 0xf6, 0x38, 0xf6, 0xcd, 0x6a, 0x7b, 0x66, 0x41, 0x6d, 0xbf, - 0x0b, 0xeb, 0x73, 0x86, 0xce, 0x5c, 0x63, 0x7f, 0x99, 0x00, 0x69, 0x59, 0x70, 0x5e, 0x51, 0xe9, - 0x92, 0x53, 0x95, 0xee, 0xee, 0x6c, 0x04, 0x2f, 0x2d, 0x5f, 0x84, 0xb9, 0xb5, 0xfe, 0x3a, 0x01, - 0xe7, 0x16, 0x77, 0x8a, 0x0b, 0x7d, 0xf8, 0x0c, 0xb2, 0x23, 0xea, 0x0f, 0xed, 0xb0, 0x5b, 0xfa, - 0x78, 0xc1, 0x19, 0xcc, 0xc4, 0xb3, 0x8b, 0x1d, 0x68, 0xc5, 0x0f, 0xf1, 0xd4, 0xb2, 0x76, 0x4f, - 0x78, 0x33, 0xe7, 0xe9, 0xaf, 0x92, 0xf0, 0xf6, 0x42, 0xe3, 0x0b, 0x1d, 0x7d, 0x0f, 0xc0, 0xb0, - 0x9c, 0xb1, 0x2f, 0x3a, 0x22, 0x51, 0x60, 0xf3, 0x1c, 0xe1, 0xc5, 0x8b, 0x15, 0xcf, 0xb1, 0x1f, - 0xc9, 0x53, 0x5c, 0x0e, 0x02, 0xe2, 0x84, 0x3b, 0x13, 0x47, 0xd3, 0xdc, 0xd1, 0xf7, 0x97, 0xcc, - 0x74, 0x2e, 0x31, 0x3f, 0x01, 0xa4, 0x99, 0x06, 0xb5, 0x7c, 0xd5, 0xf3, 0x5d, 0x4a, 0x46, 0x86, - 0x35, 0xe0, 0x27, 0x48, 0x6e, 0x3f, 0xd3, 0x27, 0xa6, 0x47, 0x95, 0x35, 0x21, 0xee, 0x86, 0x52, - 0xa6, 0xc1, 0x13, 0xc8, 0x8d, 0x69, 0x64, 0xa7, 0x34, 0x84, 0x38, 0xd2, 0x28, 0xff, 0x31, 0x07, - 0x85, 0x58, 0x5f, 0x8d, 0x2f, 0x41, 0xf1, 0x11, 0x79, 0x42, 0xd4, 0xf0, 0xae, 0x24, 0x22, 0x51, - 0x60, 0x58, 0x27, 0xb8, 0x2f, 0x7d, 0x02, 0x9b, 0x9c, 0x62, 0x8f, 0x7d, 0xea, 0xaa, 0x9a, 0x49, - 0x3c, 0x8f, 0x07, 0x2d, 0xc7, 0xa9, 0x98, 0xc9, 0xda, 0x4c, 0x54, 0x0b, 0x25, 0xf8, 0x16, 0x6c, - 0x70, 0x8d, 0xd1, 0xd8, 0xf4, 0x0d, 0xc7, 0xa4, 0x2a, 0xbb, 0xbd, 0x79, 0xfc, 0x24, 0x89, 0x3c, - 0x5b, 0x67, 0x8c, 0xa3, 0x80, 0xc0, 0x3c, 0xf2, 0x70, 0x1d, 0xde, 0xe3, 0x6a, 0x03, 0x6a, 0x51, - 0x97, 0xf8, 0x54, 0xa5, 0x5f, 0x8d, 0x89, 0xe9, 0xa9, 0xc4, 0xd2, 0xd5, 0x21, 0xf1, 0x86, 0xd2, - 0x26, 0x33, 0x70, 0x90, 0x94, 0x12, 0xca, 0x05, 0x46, 0x3c, 0x0c, 0x78, 0x32, 0xa7, 0x55, 0x2d, - 0xfd, 0x73, 0xe2, 0x0d, 0xf1, 0x3e, 0x9c, 0xe3, 0x56, 0x3c, 0xdf, 0x35, 0xac, 0x81, 0xaa, 0x0d, - 0xa9, 0xf6, 0x58, 0x1d, 0xfb, 0xfd, 0x3b, 0xd2, 0x3b, 0xf1, 0xef, 0x73, 0x0f, 0xbb, 0x9c, 0x53, - 0x63, 0x94, 0x63, 0xbf, 0x7f, 0x07, 0x77, 0xa1, 0xc8, 0x16, 0x63, 0x64, 0x3c, 0xa7, 0x6a, 0xdf, - 0x76, 0xf9, 0xd1, 0x58, 0x5a, 0x50, 0x9a, 0x62, 0x11, 0xac, 0xb4, 0x03, 0x85, 0x23, 0x5b, 0xa7, - 0xfb, 0x99, 0x6e, 0x47, 0x96, 0xeb, 0x4a, 0x21, 0xb4, 0x72, 0xcf, 0x76, 0x59, 0x42, 0x0d, 0xec, - 0x28, 0xc0, 0x05, 0x91, 0x50, 0x03, 0x3b, 0x0c, 0xef, 0x2d, 0xd8, 0xd0, 0x34, 0x31, 0x67, 0x43, - 0x53, 0x83, 0x3b, 0x96, 0x27, 0xa1, 0xa9, 0x60, 0x69, 0xda, 0xa1, 0x20, 0x04, 0x39, 0xee, 0xe1, - 0x4f, 0xe1, 0xed, 0x49, 0xb0, 0xe2, 0x8a, 0xeb, 0x73, 0xb3, 0x9c, 0x55, 0xbd, 0x05, 0x1b, 0xce, - 0xe9, 0xbc, 0x22, 0x9e, 0xfa, 0xa2, 0x73, 0x3a, 0xab, 0x76, 0x1b, 0x36, 0x9d, 0xa1, 0x33, 0xaf, - 0x77, 0x35, 0xae, 0x87, 0x9d, 0xa1, 0x33, 0xab, 0xf8, 0x11, 0xbf, 0x70, 0xbb, 0x54, 0x23, 0x3e, - 0xd5, 0xa5, 0xf3, 0x71, 0x7a, 0x4c, 0x80, 0xaf, 0x03, 0xd2, 0x34, 0x95, 0x5a, 0xe4, 0xc4, 0xa4, - 0x2a, 0x71, 0xa9, 0x45, 0x3c, 0xe9, 0x62, 0x9c, 0x5c, 0xd2, 0x34, 0x99, 0x4b, 0xab, 0x5c, 0x88, - 0xaf, 0xc2, 0xba, 0x7d, 0xf2, 0x48, 0x13, 0x29, 0xa9, 0x3a, 0x2e, 0xed, 0x1b, 0xcf, 0xa4, 0x0f, - 0x79, 0x7c, 0xd7, 0x98, 0x80, 0x27, 0x64, 0x87, 0xc3, 0xf8, 0x0a, 0x20, 0xcd, 0x1b, 0x12, 0xd7, - 0xe1, 0x35, 0xd9, 0x73, 0x88, 0x46, 0xa5, 0x8f, 0x04, 0x55, 0xe0, 0xad, 0x10, 0x66, 0x5b, 0xc2, - 0x7b, 0x6a, 0xf4, 0xfd, 0xd0, 0xe2, 0x65, 0xb1, 0x25, 0x38, 0x16, 0x58, 0xdb, 0x01, 0xc4, 0x42, - 0x31, 0xf5, 0xe1, 0x1d, 0x4e, 0x2b, 0x39, 0x43, 0x27, 0xfe, 0xdd, 0x0f, 0x60, 0x95, 0x31, 0x27, - 0x1f, 0xbd, 0x22, 0x1a, 0x32, 0x67, 0x18, 0xfb, 0xe2, 0x6b, 0xeb, 0x8d, 0xcb, 0xfb, 0x50, 0x8c, - 0xe7, 0x27, 0xce, 0x83, 0xc8, 0x50, 0x94, 0x60, 0xcd, 0x4a, 0xad, 0x5d, 0x67, 0x6d, 0xc6, 0x97, - 0x32, 0x4a, 0xb2, 0x76, 0xa7, 0xd9, 0xe8, 0xc9, 0xaa, 0x72, 0xdc, 0xea, 0x35, 0x8e, 0x64, 0x94, - 0x8a, 0xf7, 0xd5, 0x7f, 0x4d, 0x42, 0x69, 0xfa, 0x8a, 0x84, 0x7f, 0x00, 0xe7, 0xc3, 0xf7, 0x0c, - 0x8f, 0xfa, 0xea, 0x53, 0xc3, 0xe5, 0x5b, 0x66, 0x44, 0xc4, 0xf1, 0x15, 0x2d, 0xda, 0x66, 0xc0, - 0xea, 0x52, 0xff, 0x0b, 0xc3, 0x65, 0x1b, 0x62, 0x44, 0x7c, 0xdc, 0x84, 0x8b, 0x96, 0xad, 0x7a, - 0x3e, 0xb1, 0x74, 0xe2, 0xea, 0xea, 0xe4, 0x25, 0x49, 0x25, 0x9a, 0x46, 0x3d, 0xcf, 0x16, 0x47, - 0x55, 0x64, 0xe5, 0x5d, 0xcb, 0xee, 0x06, 0xe4, 0x49, 0x0d, 0xaf, 0x06, 0xd4, 0x99, 0x04, 0x4b, - 0x2d, 0x4b, 0xb0, 0x77, 0x20, 0x3f, 0x22, 0x8e, 0x4a, 0x2d, 0xdf, 0x3d, 0xe5, 0x8d, 0x71, 0x4e, - 0xc9, 0x8d, 0x88, 0x23, 0xb3, 0xf1, 0x9b, 0xb9, 0x9f, 0xfc, 0x23, 0x05, 0xc5, 0x78, 0x73, 0xcc, - 0xee, 0x1a, 0x1a, 0x3f, 0x47, 0x12, 0xbc, 0xd2, 0x7c, 0xf0, 0xd2, 0x56, 0xba, 0x52, 0x63, 0x07, - 0xcc, 0x7e, 0x56, 0xb4, 0xac, 0x8a, 0xd0, 0x64, 0x87, 0x3b, 0xab, 0x2d, 0x54, 0xb4, 0x08, 0x39, - 0x25, 0x18, 0xe1, 0x43, 0xc8, 0x3e, 0xf2, 0xb8, 0xed, 0x2c, 0xb7, 0xfd, 0xe1, 0xcb, 0x6d, 0xdf, - 0xef, 0x72, 0xe3, 0xf9, 0xfb, 0x5d, 0xb5, 0xd5, 0x56, 0x8e, 0xaa, 0x4d, 0x25, 0x50, 0xc7, 0x17, - 0x20, 0x6d, 0x92, 0xe7, 0xa7, 0xd3, 0x47, 0x11, 0x87, 0xce, 0x1a, 0xf8, 0x0b, 0x90, 0x7e, 0x4a, - 0xc9, 0xe3, 0xe9, 0x03, 0x80, 0x43, 0xaf, 0x31, 0xf5, 0xaf, 0x43, 0x86, 0xc7, 0x0b, 0x03, 0x04, - 0x11, 0x43, 0x6f, 0xe1, 0x1c, 0xa4, 0x6b, 0x6d, 0x85, 0xa5, 0x3f, 0x82, 0xa2, 0x40, 0xd5, 0x4e, - 0x43, 0xae, 0xc9, 0x28, 0x59, 0xbe, 0x05, 0x59, 0x11, 0x04, 0xb6, 0x35, 0xa2, 0x30, 0xa0, 0xb7, - 0x82, 0x61, 0x60, 0x23, 0x11, 0x4a, 0x8f, 0x8f, 0x0e, 0x64, 0x05, 0x25, 0xe3, 0xcb, 0xeb, 0x41, - 0x31, 0xde, 0x17, 0xbf, 0x99, 0x9c, 0xfa, 0x4b, 0x02, 0x0a, 0xb1, 0x3e, 0x97, 0x35, 0x28, 0xc4, - 0x34, 0xed, 0xa7, 0x2a, 0x31, 0x0d, 0xe2, 0x05, 0x49, 0x01, 0x1c, 0xaa, 0x32, 0xe4, 0xac, 0x8b, - 0xf6, 0x46, 0x9c, 0xff, 0x5d, 0x02, 0xd0, 0x6c, 0x8b, 0x39, 0xe3, 0x60, 0xe2, 0x3b, 0x75, 0xf0, - 0xb7, 0x09, 0x28, 0x4d, 0xf7, 0x95, 0x33, 0xee, 0x5d, 0xfa, 0x4e, 0xdd, 0xfb, 0x67, 0x12, 0x56, - 0xa7, 0xba, 0xc9, 0xb3, 0x7a, 0xf7, 0x15, 0xac, 0x1b, 0x3a, 0x1d, 0x39, 0xb6, 0x4f, 0x2d, 0xed, - 0x54, 0x35, 0xe9, 0x13, 0x6a, 0x4a, 0x65, 0x5e, 0x28, 0xae, 0xbf, 0xbc, 0x5f, 0xad, 0x34, 0x26, - 0x7a, 0x4d, 0xa6, 0xb6, 0xbf, 0xd1, 0xa8, 0xcb, 0x47, 0x9d, 0x76, 0x4f, 0x6e, 0xd5, 0x1e, 0xaa, - 0xc7, 0xad, 0x1f, 0xb7, 0xda, 0x5f, 0xb4, 0x14, 0x64, 0xcc, 0xd0, 0x5e, 0xe3, 0x56, 0xef, 0x00, - 0x9a, 0x75, 0x0a, 0x9f, 0x87, 0x45, 0x6e, 0xa1, 0xb7, 0xf0, 0x06, 0xac, 0xb5, 0xda, 0x6a, 0xb7, - 0x51, 0x97, 0x55, 0xf9, 0xde, 0x3d, 0xb9, 0xd6, 0xeb, 0x8a, 0x17, 0x88, 0x88, 0xdd, 0x9b, 0xde, - 0xd4, 0xbf, 0x49, 0xc1, 0xc6, 0x02, 0x4f, 0x70, 0x35, 0xb8, 0x3b, 0x88, 0xeb, 0xcc, 0xf7, 0xcf, - 0xe2, 0x7d, 0x85, 0x1d, 0xf9, 0x1d, 0xe2, 0xfa, 0xc1, 0x55, 0xe3, 0x0a, 0xb0, 0x28, 0x59, 0xbe, - 0xd1, 0x37, 0xa8, 0x1b, 0x3c, 0xd8, 0x88, 0x0b, 0xc5, 0xda, 0x04, 0x17, 0x6f, 0x36, 0xdf, 0x03, - 0xec, 0xd8, 0x9e, 0xe1, 0x1b, 0x4f, 0xa8, 0x6a, 0x58, 0xe1, 0xeb, 0x0e, 0xbb, 0x60, 0xa4, 0x15, - 0x14, 0x4a, 0x1a, 0x96, 0x1f, 0xb1, 0x2d, 0x3a, 0x20, 0x33, 0x6c, 0x56, 0xc0, 0x53, 0x0a, 0x0a, - 0x25, 0x11, 0xfb, 0x12, 0x14, 0x75, 0x7b, 0xcc, 0xba, 0x2e, 0xc1, 0x63, 0xe7, 0x45, 0x42, 0x29, - 0x08, 0x2c, 0xa2, 0x04, 0xfd, 0xf4, 0xe4, 0x59, 0xa9, 0xa8, 0x14, 0x04, 0x26, 0x28, 0x97, 0x61, - 0x8d, 0x0c, 0x06, 0x2e, 0x33, 0x1e, 0x1a, 0x12, 0x37, 0x84, 0x52, 0x04, 0x73, 0xe2, 0xd6, 0x7d, - 0xc8, 0x85, 0x71, 0x60, 0x47, 0x32, 0x8b, 0x84, 0xea, 0x88, 0x6b, 0x6f, 0x72, 0x27, 0xaf, 0xe4, - 0xac, 0x50, 0x78, 0x09, 0x8a, 0x86, 0xa7, 0x4e, 0x5e, 0xc9, 0x93, 0xdb, 0xc9, 0x9d, 0x9c, 0x52, - 0x30, 0xbc, 0xe8, 0x85, 0xb1, 0xfc, 0x75, 0x12, 0x4a, 0xd3, 0xaf, 0xfc, 0xb8, 0x0e, 0x39, 0xd3, - 0xd6, 0x08, 0x4f, 0x2d, 0xf1, 0x13, 0xd3, 0xce, 0x2b, 0x7e, 0x18, 0xa8, 0x34, 0x03, 0xbe, 0x12, - 0x69, 0x6e, 0xfd, 0x2d, 0x01, 0xb9, 0x10, 0xc6, 0xe7, 0x20, 0xed, 0x10, 0x7f, 0xc8, 0xcd, 0x65, - 0x0e, 0x92, 0x28, 0xa1, 0xf0, 0x31, 0xc3, 0x3d, 0x87, 0x58, 0x3c, 0x05, 0x02, 0x9c, 0x8d, 0xd9, - 0xba, 0x9a, 0x94, 0xe8, 0xfc, 0xfa, 0x61, 0x8f, 0x46, 0xd4, 0xf2, 0xbd, 0x70, 0x5d, 0x03, 0xbc, - 0x16, 0xc0, 0xf8, 0x1a, 0xac, 0xfb, 0x2e, 0x31, 0xcc, 0x29, 0x6e, 0x9a, 0x73, 0x51, 0x28, 0x88, - 0xc8, 0xfb, 0x70, 0x21, 0xb4, 0xab, 0x53, 0x9f, 0x68, 0x43, 0xaa, 0x4f, 0x94, 0xb2, 0xfc, 0x99, - 0xe1, 0x7c, 0x40, 0xa8, 0x07, 0xf2, 0x50, 0xb7, 0xfc, 0xf7, 0x04, 0xac, 0x87, 0x17, 0x26, 0x3d, - 0x0a, 0xd6, 0x11, 0x00, 0xb1, 0x2c, 0xdb, 0x8f, 0x87, 0x6b, 0x3e, 0x95, 0xe7, 0xf4, 0x2a, 0xd5, - 0x48, 0x49, 0x89, 0x19, 0xd8, 0x1a, 0x01, 0x4c, 0x24, 0x4b, 0xc3, 0x76, 0x11, 0x0a, 0xc1, 0x4f, - 0x38, 0xfc, 0x77, 0x40, 0x71, 0xc5, 0x06, 0x01, 0xb1, 0x9b, 0x15, 0xde, 0x84, 0xcc, 0x09, 0x1d, - 0x18, 0x56, 0xf0, 0x30, 0x2b, 0x06, 0xe1, 0x43, 0x48, 0x3a, 0x7a, 0x08, 0x39, 0xf8, 0x19, 0x6c, - 0x68, 0xf6, 0x68, 0xd6, 0xdd, 0x03, 0x34, 0x73, 0xcd, 0xf7, 0x3e, 0x4f, 0x7c, 0x09, 0x93, 0x16, - 0xf3, 0x7f, 0x89, 0xc4, 0xef, 0x93, 0xa9, 0xc3, 0xce, 0xc1, 0x1f, 0x92, 0x5b, 0x87, 0x42, 0xb5, - 0x13, 0xce, 0x54, 0xa1, 0x7d, 0x93, 0x6a, 0xcc, 0xfb, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xa3, - 0x58, 0x22, 0x30, 0xdf, 0x1c, 0x00, 0x00, + 0x83, 0x1e, 0x02, 0xf4, 0x54, 0xa0, 0x7f, 0x40, 0x51, 0x14, 0x3d, 0xf4, 0xb2, 0x40, 0xff, 0x80, + 0x02, 0xed, 0xbd, 0xd7, 0x02, 0xbd, 0xf7, 0x50, 0xa0, 0x05, 0xda, 0x3f, 0xa1, 0xc7, 0x62, 0x66, + 0x48, 0x8a, 0xd4, 0x47, 0xe2, 0x5d, 0x20, 0xd9, 0x93, 0x3d, 0xef, 0xfd, 0xde, 0x9b, 0x37, 0x8f, + 0xbf, 0x79, 0xf3, 0x66, 0x04, 0x82, 0x46, 0x5c, 0xd5, 0xd1, 0x6d, 0xcf, 0x72, 0x2a, 0xb6, 0x63, + 0x79, 0x16, 0x5a, 0x1b, 0x5a, 0xd6, 0xd0, 0x20, 0x7c, 0x74, 0x32, 0x19, 0x94, 0x5b, 0xb0, 0x7e, + 0x4f, 0x37, 0x48, 0x3d, 0x04, 0xf6, 0x88, 0x87, 0xee, 0x40, 0x7a, 0xa0, 0x1b, 0x44, 0x4c, 0xec, + 0xa4, 0x76, 0x0b, 0x7b, 0x1f, 0x56, 0x66, 0x8c, 0x2a, 0x71, 0x8b, 0x2e, 0x15, 0xcb, 0xcc, 0xa2, + 0xfc, 0xef, 0x34, 0x6c, 0x2c, 0xd0, 0x22, 0x04, 0x69, 0x13, 0x8f, 0xa9, 0xc7, 0xc4, 0x6e, 0x5e, + 0x66, 0xff, 0x23, 0x11, 0x56, 0x6c, 0xac, 0x3e, 0xc6, 0x43, 0x22, 0x26, 0x99, 0x38, 0x18, 0xa2, + 0xf7, 0x01, 0x34, 0x62, 0x13, 0x53, 0x23, 0xa6, 0x7a, 0x2a, 0xa6, 0x76, 0x52, 0xbb, 0x79, 0x39, + 0x22, 0x41, 0xd7, 0x60, 0xdd, 0x9e, 0x9c, 0x18, 0xba, 0xaa, 0x44, 0x60, 0xb0, 0x93, 0xda, 0xcd, + 0xc8, 0x02, 0x57, 0xd4, 0xa7, 0xe0, 0xcb, 0xb0, 0xf6, 0x94, 0xe0, 0xc7, 0x51, 0x68, 0x81, 0x41, + 0x4b, 0x54, 0x1c, 0x01, 0xd6, 0xa0, 0x38, 0x26, 0xae, 0x8b, 0x87, 0x44, 0xf1, 0x4e, 0x6d, 0x22, + 0xa6, 0xd9, 0xea, 0x77, 0xe6, 0x56, 0x3f, 0xbb, 0xf2, 0x82, 0x6f, 0xd5, 0x3f, 0xb5, 0x09, 0xaa, + 0x42, 0x9e, 0x98, 0x93, 0x31, 0xf7, 0x90, 0x59, 0x92, 0x3f, 0xc9, 0x9c, 0x8c, 0x67, 0xbd, 0xe4, + 0xa8, 0x99, 0xef, 0x62, 0xc5, 0x25, 0xce, 0x13, 0x5d, 0x25, 0x62, 0x96, 0x39, 0xb8, 0x3c, 0xe7, + 0xa0, 0xc7, 0xf5, 0xb3, 0x3e, 0x02, 0x3b, 0x54, 0x83, 0x3c, 0x79, 0xe6, 0x11, 0xd3, 0xd5, 0x2d, + 0x53, 0x5c, 0x61, 0x4e, 0x2e, 0x2d, 0xf8, 0x8a, 0xc4, 0xd0, 0x66, 0x5d, 0x4c, 0xed, 0xd0, 0x3e, + 0xac, 0x58, 0xb6, 0xa7, 0x5b, 0xa6, 0x2b, 0xe6, 0x76, 0x12, 0xbb, 0x85, 0xbd, 0x77, 0x17, 0x12, + 0xa1, 0xc3, 0x31, 0x72, 0x00, 0x46, 0x0d, 0x10, 0x5c, 0x6b, 0xe2, 0xa8, 0x44, 0x51, 0x2d, 0x8d, + 0x28, 0xba, 0x39, 0xb0, 0xc4, 0x3c, 0x73, 0x70, 0x61, 0x7e, 0x21, 0x0c, 0x58, 0xb3, 0x34, 0xd2, + 0x30, 0x07, 0x96, 0x5c, 0x72, 0x63, 0x63, 0xb4, 0x05, 0x59, 0xf7, 0xd4, 0xf4, 0xf0, 0x33, 0xb1, + 0xc8, 0x18, 0xe2, 0x8f, 0xca, 0x7f, 0xce, 0xc2, 0xda, 0x59, 0x28, 0x76, 0x17, 0x32, 0x03, 0xba, + 0x4a, 0x31, 0xf9, 0x6d, 0x72, 0xc0, 0x6d, 0xe2, 0x49, 0xcc, 0x7e, 0xc7, 0x24, 0x56, 0xa1, 0x60, + 0x12, 0xd7, 0x23, 0x1a, 0x67, 0x44, 0xea, 0x8c, 0x9c, 0x02, 0x6e, 0x34, 0x4f, 0xa9, 0xf4, 0x77, + 0xa2, 0xd4, 0x03, 0x58, 0x0b, 0x43, 0x52, 0x1c, 0x6c, 0x0e, 0x03, 0x6e, 0x5e, 0x7f, 0x55, 0x24, + 0x15, 0x29, 0xb0, 0x93, 0xa9, 0x99, 0x5c, 0x22, 0xb1, 0x31, 0xaa, 0x03, 0x58, 0x26, 0xb1, 0x06, + 0x8a, 0x46, 0x54, 0x43, 0xcc, 0x2d, 0xc9, 0x52, 0x87, 0x42, 0xe6, 0xb2, 0x64, 0x71, 0xa9, 0x6a, + 0xa0, 0xcf, 0xa6, 0x54, 0x5b, 0x59, 0xc2, 0x94, 0x16, 0xdf, 0x64, 0x73, 0x6c, 0x3b, 0x86, 0x92, + 0x43, 0x28, 0xef, 0x89, 0xe6, 0xaf, 0x2c, 0xcf, 0x82, 0xa8, 0xbc, 0x72, 0x65, 0xb2, 0x6f, 0xc6, + 0x17, 0xb6, 0xea, 0x44, 0x87, 0xe8, 0x03, 0x08, 0x05, 0x0a, 0xa3, 0x15, 0xb0, 0x2a, 0x54, 0x0c, + 0x84, 0x6d, 0x3c, 0x26, 0xdb, 0xcf, 0xa1, 0x14, 0x4f, 0x0f, 0xda, 0x84, 0x8c, 0xeb, 0x61, 0xc7, + 0x63, 0x2c, 0xcc, 0xc8, 0x7c, 0x80, 0x04, 0x48, 0x11, 0x53, 0x63, 0x55, 0x2e, 0x23, 0xd3, 0x7f, + 0xd1, 0x8f, 0xa6, 0x0b, 0x4e, 0xb1, 0x05, 0x7f, 0x34, 0xff, 0x45, 0x63, 0x9e, 0x67, 0xd7, 0xbd, + 0x7d, 0x1b, 0x56, 0x63, 0x0b, 0x38, 0xeb, 0xd4, 0xe5, 0x5f, 0xc0, 0xdb, 0x0b, 0x5d, 0xa3, 0x07, + 0xb0, 0x39, 0x31, 0x75, 0xd3, 0x23, 0x8e, 0xed, 0x10, 0xca, 0x58, 0x3e, 0x95, 0xf8, 0x9f, 0x95, + 0x25, 0x9c, 0x3b, 0x8e, 0xa2, 0xb9, 0x17, 0x79, 0x63, 0x32, 0x2f, 0xbc, 0x9a, 0xcf, 0xfd, 0x77, + 0x45, 0x78, 0xf1, 0xe2, 0xc5, 0x8b, 0x64, 0xf9, 0x37, 0x59, 0xd8, 0x5c, 0xb4, 0x67, 0x16, 0x6e, + 0xdf, 0x2d, 0xc8, 0x9a, 0x93, 0xf1, 0x09, 0x71, 0x58, 0x92, 0x32, 0xb2, 0x3f, 0x42, 0x55, 0xc8, + 0x18, 0xf8, 0x84, 0x18, 0x62, 0x7a, 0x27, 0xb1, 0x5b, 0xda, 0xbb, 0x76, 0xa6, 0x5d, 0x59, 0x69, + 0x52, 0x13, 0x99, 0x5b, 0xa2, 0xcf, 0x21, 0xed, 0x97, 0x68, 0xea, 0xe1, 0xea, 0xd9, 0x3c, 0xd0, + 0xbd, 0x24, 0x33, 0x3b, 0xf4, 0x0e, 0xe4, 0xe9, 0x5f, 0xce, 0x8d, 0x2c, 0x8b, 0x39, 0x47, 0x05, + 0x94, 0x17, 0x68, 0x1b, 0x72, 0x6c, 0x9b, 0x68, 0x24, 0x38, 0xda, 0xc2, 0x31, 0x25, 0x96, 0x46, + 0x06, 0x78, 0x62, 0x78, 0xca, 0x13, 0x6c, 0x4c, 0x08, 0x23, 0x7c, 0x5e, 0x2e, 0xfa, 0xc2, 0x9f, + 0x52, 0x19, 0xba, 0x00, 0x05, 0xbe, 0xab, 0x74, 0x53, 0x23, 0xcf, 0x58, 0xf5, 0xcc, 0xc8, 0x7c, + 0xa3, 0x35, 0xa8, 0x84, 0x4e, 0xff, 0xc8, 0xb5, 0xcc, 0x80, 0x9a, 0x6c, 0x0a, 0x2a, 0x60, 0xd3, + 0xdf, 0x9e, 0x2d, 0xdc, 0xef, 0x2d, 0x5e, 0xde, 0x2c, 0xa7, 0xca, 0x7f, 0x4a, 0x42, 0x9a, 0xd5, + 0x8b, 0x35, 0x28, 0xf4, 0x1f, 0x76, 0x25, 0xa5, 0xde, 0x39, 0x3e, 0x6c, 0x4a, 0x42, 0x02, 0x95, + 0x00, 0x98, 0xe0, 0x5e, 0xb3, 0x53, 0xed, 0x0b, 0xc9, 0x70, 0xdc, 0x68, 0xf7, 0xf7, 0x6f, 0x0a, + 0xa9, 0xd0, 0xe0, 0x98, 0x0b, 0xd2, 0x51, 0xc0, 0x8d, 0x3d, 0x21, 0x83, 0x04, 0x28, 0x72, 0x07, + 0x8d, 0x07, 0x52, 0x7d, 0xff, 0xa6, 0x90, 0x8d, 0x4b, 0x6e, 0xec, 0x09, 0x2b, 0x68, 0x15, 0xf2, + 0x4c, 0x72, 0xd8, 0xe9, 0x34, 0x85, 0x5c, 0xe8, 0xb3, 0xd7, 0x97, 0x1b, 0xed, 0x23, 0x21, 0x1f, + 0xfa, 0x3c, 0x92, 0x3b, 0xc7, 0x5d, 0x01, 0x42, 0x0f, 0x2d, 0xa9, 0xd7, 0xab, 0x1e, 0x49, 0x42, + 0x21, 0x44, 0x1c, 0x3e, 0xec, 0x4b, 0x3d, 0xa1, 0x18, 0x0b, 0xeb, 0xc6, 0x9e, 0xb0, 0x1a, 0x4e, + 0x21, 0xb5, 0x8f, 0x5b, 0x42, 0x09, 0xad, 0xc3, 0x2a, 0x9f, 0x22, 0x08, 0x62, 0x6d, 0x46, 0xb4, + 0x7f, 0x53, 0x10, 0xa6, 0x81, 0x70, 0x2f, 0xeb, 0x31, 0xc1, 0xfe, 0x4d, 0x01, 0x95, 0x6b, 0x90, + 0x61, 0xec, 0x42, 0x08, 0x4a, 0xcd, 0xea, 0xa1, 0xd4, 0x54, 0x3a, 0xdd, 0x7e, 0xa3, 0xd3, 0xae, + 0x36, 0x85, 0xc4, 0x54, 0x26, 0x4b, 0x3f, 0x39, 0x6e, 0xc8, 0x52, 0x5d, 0x48, 0x46, 0x65, 0x5d, + 0xa9, 0xda, 0x97, 0xea, 0x42, 0xaa, 0xac, 0xc2, 0xe6, 0xa2, 0x3a, 0xb9, 0x70, 0x67, 0x44, 0x3e, + 0x71, 0x72, 0xc9, 0x27, 0x66, 0xbe, 0xe6, 0x3e, 0xf1, 0xbf, 0x92, 0xb0, 0xb1, 0xe0, 0xac, 0x58, + 0x38, 0xc9, 0x0f, 0x21, 0xc3, 0x29, 0xca, 0x4f, 0xcf, 0x2b, 0x0b, 0x0f, 0x1d, 0x46, 0xd8, 0xb9, + 0x13, 0x94, 0xd9, 0x45, 0x3b, 0x88, 0xd4, 0x92, 0x0e, 0x82, 0xba, 0x98, 0xab, 0xe9, 0x3f, 0x9f, + 0xab, 0xe9, 0xfc, 0xd8, 0xdb, 0x3f, 0xcb, 0xb1, 0xc7, 0x64, 0xdf, 0xae, 0xb6, 0x67, 0x16, 0xd4, + 0xf6, 0xbb, 0xb0, 0x3e, 0xe7, 0xe8, 0xcc, 0x35, 0xf6, 0x97, 0x09, 0x10, 0x97, 0x25, 0xe7, 0x15, + 0x95, 0x2e, 0x19, 0xab, 0x74, 0x77, 0x67, 0x33, 0x78, 0x71, 0xf9, 0x47, 0x98, 0xfb, 0xd6, 0xdf, + 0x24, 0x60, 0x6b, 0x71, 0xa7, 0xb8, 0x30, 0x86, 0xcf, 0x21, 0x3b, 0x26, 0xde, 0xc8, 0x0a, 0xba, + 0xa5, 0x8f, 0x16, 0x9c, 0xc1, 0x54, 0x3d, 0xfb, 0xb1, 0x7d, 0xab, 0xe8, 0x21, 0x9e, 0x5a, 0xd6, + 0xee, 0xf1, 0x68, 0xe6, 0x22, 0xfd, 0x55, 0x12, 0xde, 0x5e, 0xe8, 0x7c, 0x61, 0xa0, 0xef, 0x01, + 0xe8, 0xa6, 0x3d, 0xf1, 0x78, 0x47, 0xc4, 0x0b, 0x6c, 0x9e, 0x49, 0x58, 0xf1, 0xa2, 0xc5, 0x73, + 0xe2, 0x85, 0xfa, 0x14, 0xd3, 0x03, 0x17, 0x31, 0xc0, 0x9d, 0x69, 0xa0, 0x69, 0x16, 0xe8, 0xfb, + 0x4b, 0x56, 0x3a, 0x47, 0xcc, 0x4f, 0x41, 0x50, 0x0d, 0x9d, 0x98, 0x9e, 0xe2, 0x7a, 0x0e, 0xc1, + 0x63, 0xdd, 0x1c, 0xb2, 0x13, 0x24, 0x77, 0x90, 0x19, 0x60, 0xc3, 0x25, 0xf2, 0x1a, 0x57, 0xf7, + 0x02, 0x2d, 0xb5, 0x60, 0x04, 0x72, 0x22, 0x16, 0xd9, 0x98, 0x05, 0x57, 0x87, 0x16, 0xe5, 0x5f, + 0xe7, 0xa1, 0x10, 0xe9, 0xab, 0xd1, 0x45, 0x28, 0x3e, 0xc2, 0x4f, 0xb0, 0x12, 0xdc, 0x95, 0x78, + 0x26, 0x0a, 0x54, 0xd6, 0xf5, 0xef, 0x4b, 0x9f, 0xc2, 0x26, 0x83, 0x58, 0x13, 0x8f, 0x38, 0x8a, + 0x6a, 0x60, 0xd7, 0x65, 0x49, 0xcb, 0x31, 0x28, 0xa2, 0xba, 0x0e, 0x55, 0xd5, 0x02, 0x0d, 0xba, + 0x05, 0x1b, 0xcc, 0x62, 0x3c, 0x31, 0x3c, 0xdd, 0x36, 0x88, 0x42, 0x6f, 0x6f, 0x2e, 0x3b, 0x49, + 0xc2, 0xc8, 0xd6, 0x29, 0xa2, 0xe5, 0x03, 0x68, 0x44, 0x2e, 0xaa, 0xc3, 0x7b, 0xcc, 0x6c, 0x48, + 0x4c, 0xe2, 0x60, 0x8f, 0x28, 0xe4, 0xeb, 0x09, 0x36, 0x5c, 0x05, 0x9b, 0x9a, 0x32, 0xc2, 0xee, + 0x48, 0xdc, 0xa4, 0x0e, 0x0e, 0x93, 0x62, 0x42, 0x3e, 0x4f, 0x81, 0x47, 0x3e, 0x4e, 0x62, 0xb0, + 0xaa, 0xa9, 0x7d, 0x81, 0xdd, 0x11, 0x3a, 0x80, 0x2d, 0xe6, 0xc5, 0xf5, 0x1c, 0xdd, 0x1c, 0x2a, + 0xea, 0x88, 0xa8, 0x8f, 0x95, 0x89, 0x37, 0xb8, 0x23, 0xbe, 0x13, 0x9d, 0x9f, 0x45, 0xd8, 0x63, + 0x98, 0x1a, 0x85, 0x1c, 0x7b, 0x83, 0x3b, 0xa8, 0x07, 0x45, 0xfa, 0x31, 0xc6, 0xfa, 0x73, 0xa2, + 0x0c, 0x2c, 0x87, 0x1d, 0x8d, 0xa5, 0x05, 0xa5, 0x29, 0x92, 0xc1, 0x4a, 0xc7, 0x37, 0x68, 0x59, + 0x1a, 0x39, 0xc8, 0xf4, 0xba, 0x92, 0x54, 0x97, 0x0b, 0x81, 0x97, 0x7b, 0x96, 0x43, 0x09, 0x35, + 0xb4, 0xc2, 0x04, 0x17, 0x38, 0xa1, 0x86, 0x56, 0x90, 0xde, 0x5b, 0xb0, 0xa1, 0xaa, 0x7c, 0xcd, + 0xba, 0xaa, 0xf8, 0x77, 0x2c, 0x57, 0x14, 0x62, 0xc9, 0x52, 0xd5, 0x23, 0x0e, 0xf0, 0x39, 0xee, + 0xa2, 0xcf, 0xe0, 0xed, 0x69, 0xb2, 0xa2, 0x86, 0xeb, 0x73, 0xab, 0x9c, 0x35, 0xbd, 0x05, 0x1b, + 0xf6, 0xe9, 0xbc, 0x21, 0x8a, 0xcd, 0x68, 0x9f, 0xce, 0x9a, 0xdd, 0x86, 0x4d, 0x7b, 0x64, 0xcf, + 0xdb, 0x5d, 0x8d, 0xda, 0x21, 0x7b, 0x64, 0xcf, 0x1a, 0x5e, 0x62, 0x17, 0x6e, 0x87, 0xa8, 0xd8, + 0x23, 0x9a, 0x78, 0x2e, 0x0a, 0x8f, 0x28, 0xd0, 0x75, 0x10, 0x54, 0x55, 0x21, 0x26, 0x3e, 0x31, + 0x88, 0x82, 0x1d, 0x62, 0x62, 0x57, 0xbc, 0x10, 0x05, 0x97, 0x54, 0x55, 0x62, 0xda, 0x2a, 0x53, + 0xa2, 0xab, 0xb0, 0x6e, 0x9d, 0x3c, 0x52, 0x39, 0x25, 0x15, 0xdb, 0x21, 0x03, 0xfd, 0x99, 0xf8, + 0x21, 0xcb, 0xef, 0x1a, 0x55, 0x30, 0x42, 0x76, 0x99, 0x18, 0x5d, 0x01, 0x41, 0x75, 0x47, 0xd8, + 0xb1, 0x59, 0x4d, 0x76, 0x6d, 0xac, 0x12, 0xf1, 0x12, 0x87, 0x72, 0x79, 0x3b, 0x10, 0xd3, 0x2d, + 0xe1, 0x3e, 0xd5, 0x07, 0x5e, 0xe0, 0xf1, 0x32, 0xdf, 0x12, 0x4c, 0xe6, 0x7b, 0xdb, 0x05, 0x81, + 0xa6, 0x22, 0x36, 0xf1, 0x2e, 0x83, 0x95, 0xec, 0x91, 0x1d, 0x9d, 0xf7, 0x03, 0x58, 0xa5, 0xc8, + 0xe9, 0xa4, 0x57, 0x78, 0x43, 0x66, 0x8f, 0x22, 0x33, 0xde, 0x84, 0x2d, 0x0a, 0x1a, 0x13, 0x0f, + 0x6b, 0xd8, 0xc3, 0x11, 0xf4, 0xc7, 0x0c, 0x4d, 0xf3, 0xde, 0xf2, 0x95, 0xb1, 0x38, 0x9d, 0xc9, + 0xc9, 0x69, 0xc8, 0xac, 0x4f, 0x78, 0x9c, 0x54, 0x16, 0x70, 0xeb, 0xb5, 0x35, 0xdd, 0xe5, 0x03, + 0x28, 0x46, 0x89, 0x8f, 0xf2, 0xc0, 0xa9, 0x2f, 0x24, 0x68, 0x17, 0x54, 0xeb, 0xd4, 0x69, 0xff, + 0xf2, 0x95, 0x24, 0x24, 0x69, 0x1f, 0xd5, 0x6c, 0xf4, 0x25, 0x45, 0x3e, 0x6e, 0xf7, 0x1b, 0x2d, + 0x49, 0x48, 0x45, 0x1b, 0xf6, 0xbf, 0x26, 0xa1, 0x14, 0xbf, 0x7b, 0xa1, 0x1f, 0xc0, 0xb9, 0xe0, + 0xa1, 0xc4, 0x25, 0x9e, 0xf2, 0x54, 0x77, 0xd8, 0x5e, 0x1c, 0x63, 0x7e, 0x2e, 0x86, 0x6c, 0xd8, + 0xf4, 0x51, 0x3d, 0xe2, 0x7d, 0xa9, 0x3b, 0x74, 0xa7, 0x8d, 0xb1, 0x87, 0x9a, 0x70, 0xc1, 0xb4, + 0x14, 0xd7, 0xc3, 0xa6, 0x86, 0x1d, 0x4d, 0x99, 0x3e, 0x51, 0x29, 0x58, 0x55, 0x89, 0xeb, 0x5a, + 0xfc, 0x0c, 0x0c, 0xbd, 0xbc, 0x6b, 0x5a, 0x3d, 0x1f, 0x3c, 0x3d, 0x1c, 0xaa, 0x3e, 0x74, 0x86, + 0xb9, 0xa9, 0x65, 0xcc, 0x7d, 0x07, 0xf2, 0x63, 0x6c, 0x2b, 0xc4, 0xf4, 0x9c, 0x53, 0xd6, 0x71, + 0xe7, 0xe4, 0xdc, 0x18, 0xdb, 0x12, 0x1d, 0xbf, 0x99, 0x8b, 0xcf, 0x3f, 0x52, 0x50, 0x8c, 0x76, + 0xdd, 0xf4, 0x12, 0xa3, 0xb2, 0x03, 0x2a, 0xc1, 0x4a, 0xd8, 0x07, 0x2f, 0xed, 0xd1, 0x2b, 0x35, + 0x7a, 0x72, 0x1d, 0x64, 0x79, 0x2f, 0x2c, 0x73, 0x4b, 0xda, 0x35, 0x50, 0x6a, 0x11, 0xde, 0x7b, + 0xe4, 0x64, 0x7f, 0x84, 0x8e, 0x20, 0xfb, 0xc8, 0x65, 0xbe, 0xb3, 0xcc, 0xf7, 0x87, 0x2f, 0xf7, + 0x7d, 0xbf, 0xc7, 0x9c, 0xe7, 0xef, 0xf7, 0x94, 0x76, 0x47, 0x6e, 0x55, 0x9b, 0xb2, 0x6f, 0x8e, + 0xce, 0x43, 0xda, 0xc0, 0xcf, 0x4f, 0xe3, 0x67, 0x1c, 0x13, 0x9d, 0x35, 0xf1, 0xe7, 0x21, 0xfd, + 0x94, 0xe0, 0xc7, 0xf1, 0x93, 0x85, 0x89, 0x5e, 0x23, 0xf5, 0xaf, 0x43, 0x86, 0xe5, 0x0b, 0x01, + 0xf8, 0x19, 0x13, 0xde, 0x42, 0x39, 0x48, 0xd7, 0x3a, 0x32, 0xa5, 0xbf, 0x00, 0x45, 0x2e, 0x55, + 0xba, 0x0d, 0xa9, 0x26, 0x09, 0xc9, 0xf2, 0x2d, 0xc8, 0xf2, 0x24, 0xd0, 0xad, 0x11, 0xa6, 0x41, + 0x78, 0xcb, 0x1f, 0xfa, 0x3e, 0x12, 0x81, 0xf6, 0xb8, 0x75, 0x28, 0xc9, 0x42, 0x32, 0xfa, 0x79, + 0x5d, 0x28, 0x46, 0x1b, 0xee, 0x37, 0xc3, 0xa9, 0xbf, 0x24, 0xa0, 0x10, 0x69, 0xa0, 0x69, 0xe7, + 0x83, 0x0d, 0xc3, 0x7a, 0xaa, 0x60, 0x43, 0xc7, 0xae, 0x4f, 0x0a, 0x60, 0xa2, 0x2a, 0x95, 0x9c, + 0xf5, 0xa3, 0xbd, 0x91, 0xe0, 0x7f, 0x9f, 0x00, 0x61, 0xb6, 0x77, 0x9d, 0x09, 0x30, 0xf1, 0xbd, + 0x06, 0xf8, 0xbb, 0x04, 0x94, 0xe2, 0x0d, 0xeb, 0x4c, 0x78, 0x17, 0xbf, 0xd7, 0xf0, 0xfe, 0x99, + 0x84, 0xd5, 0x58, 0x9b, 0x7a, 0xd6, 0xe8, 0xbe, 0x86, 0x75, 0x5d, 0x23, 0x63, 0xdb, 0xf2, 0x88, + 0xa9, 0x9e, 0x2a, 0x06, 0x79, 0x42, 0x0c, 0xb1, 0xcc, 0x0a, 0xc5, 0xf5, 0x97, 0x37, 0xc2, 0x95, + 0xc6, 0xd4, 0xae, 0x49, 0xcd, 0x0e, 0x36, 0x1a, 0x75, 0xa9, 0xd5, 0xed, 0xf4, 0xa5, 0x76, 0xed, + 0xa1, 0x72, 0xdc, 0xfe, 0x71, 0xbb, 0xf3, 0x65, 0x5b, 0x16, 0xf4, 0x19, 0xd8, 0x6b, 0xdc, 0xea, + 0x5d, 0x10, 0x66, 0x83, 0x42, 0xe7, 0x60, 0x51, 0x58, 0xc2, 0x5b, 0x68, 0x03, 0xd6, 0xda, 0x1d, + 0xa5, 0xd7, 0xa8, 0x4b, 0x8a, 0x74, 0xef, 0x9e, 0x54, 0xeb, 0xf7, 0xf8, 0xd3, 0x46, 0x88, 0xee, + 0xc7, 0x37, 0xf5, 0x6f, 0x53, 0xb0, 0xb1, 0x20, 0x12, 0x54, 0xf5, 0x2f, 0x25, 0xfc, 0x9e, 0xf4, + 0xc9, 0x59, 0xa2, 0xaf, 0xd0, 0xae, 0xa0, 0x8b, 0x1d, 0xcf, 0xbf, 0xc3, 0x5c, 0x01, 0x9a, 0x25, + 0xd3, 0xd3, 0x07, 0x3a, 0x71, 0xfc, 0x97, 0x20, 0x7e, 0x53, 0x59, 0x9b, 0xca, 0xf9, 0x63, 0xd0, + 0xc7, 0x80, 0x6c, 0xcb, 0xd5, 0x3d, 0xfd, 0x09, 0x51, 0x74, 0x33, 0x78, 0x36, 0xa2, 0x37, 0x97, + 0xb4, 0x2c, 0x04, 0x9a, 0x86, 0xe9, 0x85, 0x68, 0x93, 0x0c, 0xf1, 0x0c, 0x9a, 0x16, 0xf0, 0x94, + 0x2c, 0x04, 0x9a, 0x10, 0x7d, 0x11, 0x8a, 0x9a, 0x35, 0xa1, 0xed, 0x1c, 0xc7, 0xd1, 0xf3, 0x22, + 0x21, 0x17, 0xb8, 0x2c, 0x84, 0xf8, 0x8d, 0xfa, 0xf4, 0xbd, 0xaa, 0x28, 0x17, 0xb8, 0x8c, 0x43, + 0x2e, 0xc3, 0x1a, 0x1e, 0x0e, 0x1d, 0xea, 0x3c, 0x70, 0xc4, 0xaf, 0x1e, 0xa5, 0x50, 0xcc, 0x80, + 0xdb, 0xf7, 0x21, 0x17, 0xe4, 0x81, 0x1e, 0xc9, 0x34, 0x13, 0x8a, 0xcd, 0xef, 0xd3, 0xc9, 0xdd, + 0xbc, 0x9c, 0x33, 0x03, 0xe5, 0x45, 0x28, 0xea, 0xae, 0x32, 0x7d, 0x7e, 0x4f, 0xee, 0x24, 0x77, + 0x73, 0x72, 0x41, 0x77, 0xc3, 0xa7, 0xcb, 0xf2, 0x37, 0x49, 0x28, 0xc5, 0x7f, 0x3e, 0x40, 0x75, + 0xc8, 0x19, 0x96, 0x8a, 0x19, 0xb5, 0xf8, 0x6f, 0x57, 0xbb, 0xaf, 0xf8, 0xc5, 0xa1, 0xd2, 0xf4, + 0xf1, 0x72, 0x68, 0xb9, 0xfd, 0xb7, 0x04, 0xe4, 0x02, 0x31, 0xda, 0x82, 0xb4, 0x8d, 0xbd, 0x11, + 0x73, 0x97, 0x39, 0x4c, 0x0a, 0x09, 0x99, 0x8d, 0xa9, 0xdc, 0xb5, 0xb1, 0xc9, 0x28, 0xe0, 0xcb, + 0xe9, 0x98, 0x7e, 0x57, 0x83, 0x60, 0x8d, 0xdd, 0x6b, 0xac, 0xf1, 0x98, 0x98, 0x9e, 0x1b, 0x7c, + 0x57, 0x5f, 0x5e, 0xf3, 0xc5, 0xe8, 0x1a, 0xac, 0x7b, 0x0e, 0xd6, 0x8d, 0x18, 0x36, 0xcd, 0xb0, + 0x42, 0xa0, 0x08, 0xc1, 0x07, 0x70, 0x3e, 0xf0, 0xab, 0x11, 0x0f, 0xab, 0x23, 0xa2, 0x4d, 0x8d, + 0xb2, 0xec, 0xfd, 0xe2, 0x9c, 0x0f, 0xa8, 0xfb, 0xfa, 0xc0, 0xb6, 0xfc, 0xf7, 0x04, 0xac, 0x07, + 0x37, 0x31, 0x2d, 0x4c, 0x56, 0x0b, 0x00, 0x9b, 0xa6, 0xe5, 0x45, 0xd3, 0x35, 0x4f, 0xe5, 0x39, + 0xbb, 0x4a, 0x35, 0x34, 0x92, 0x23, 0x0e, 0xb6, 0xc7, 0x00, 0x53, 0xcd, 0xd2, 0xb4, 0x5d, 0x80, + 0x82, 0xff, 0xdb, 0x10, 0xfb, 0x81, 0x91, 0xdf, 0xdd, 0x81, 0x8b, 0xe8, 0x95, 0x0d, 0x6d, 0x42, + 0xe6, 0x84, 0x0c, 0x75, 0xd3, 0x7f, 0xf1, 0xe5, 0x83, 0xe0, 0x85, 0x25, 0x1d, 0xbe, 0xb0, 0x1c, + 0xfe, 0x0c, 0x36, 0x54, 0x6b, 0x3c, 0x1b, 0xee, 0xa1, 0x30, 0xf3, 0x7e, 0xe0, 0x7e, 0x91, 0xf8, + 0x0a, 0xa6, 0x2d, 0xe6, 0xff, 0x12, 0x89, 0x3f, 0x24, 0x53, 0x47, 0xdd, 0xc3, 0x3f, 0x26, 0xb7, + 0x8f, 0xb8, 0x69, 0x37, 0x58, 0xa9, 0x4c, 0x06, 0x06, 0x51, 0x69, 0xf4, 0xff, 0x0f, 0x00, 0x00, + 0xff, 0xff, 0x88, 0x17, 0xc1, 0xbe, 0x38, 0x1d, 0x00, 0x00, } diff --git a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go index ec6eb168d6..165b2110df 100644 --- a/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go +++ b/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor_gostring.gen.go @@ -3,14 +3,16 @@ package descriptor -import fmt "fmt" -import strings "strings" -import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" -import sort "sort" -import strconv "strconv" -import reflect "reflect" -import proto "github.com/gogo/protobuf/proto" -import math "math" +import ( + fmt "fmt" + github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" + proto "github.com/gogo/protobuf/proto" + math "math" + reflect "reflect" + sort "sort" + strconv "strconv" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -358,7 +360,7 @@ func (this *FileOptions) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 23) + s := make([]string, 0, 25) s = append(s, "&descriptor.FileOptions{") if this.JavaPackage != nil { s = append(s, "JavaPackage: "+valueToGoStringDescriptor(this.JavaPackage, "string")+",\n") @@ -414,6 +416,12 @@ func (this *FileOptions) GoString() string { if this.PhpNamespace != nil { s = append(s, "PhpNamespace: "+valueToGoStringDescriptor(this.PhpNamespace, "string")+",\n") } + if this.PhpMetadataNamespace != nil { + s = append(s, "PhpMetadataNamespace: "+valueToGoStringDescriptor(this.PhpMetadataNamespace, "string")+",\n") + } + if this.RubyPackage != nil { + s = append(s, "RubyPackage: "+valueToGoStringDescriptor(this.RubyPackage, "string")+",\n") + } if this.UninterpretedOption != nil { s = append(s, "UninterpretedOption: "+fmt.Sprintf("%#v", this.UninterpretedOption)+",\n") } diff --git a/vendor/github.com/gogo/protobuf/types/any.pb.go b/vendor/github.com/gogo/protobuf/types/any.pb.go index b9918238b1..4492d8205b 100644 --- a/vendor/github.com/gogo/protobuf/types/any.pb.go +++ b/vendor/github.com/gogo/protobuf/types/any.pb.go @@ -3,16 +3,16 @@ package types -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import bytes "bytes" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + bytes "bytes" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -107,7 +107,8 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package // type Any struct { // A URL/resource name that uniquely identifies the type of the serialized - // protocol buffer message. The last segment of the URL's path must represent + // protocol buffer message. This string must contain at least + // one "/" character. The last segment of the URL's path must represent // the fully qualified name of the type (as in // `path/google.protobuf.Duration`). The name should be in a canonical form // (e.g., leading "." is not accepted). @@ -144,7 +145,7 @@ type Any struct { func (m *Any) Reset() { *m = Any{} } func (*Any) ProtoMessage() {} func (*Any) Descriptor() ([]byte, []int) { - return fileDescriptor_any_8eec716d227a06dd, []int{0} + return fileDescriptor_b53526c13ae22eb4, []int{0} } func (*Any) XXX_WellKnownType() string { return "Any" } func (m *Any) XXX_Unmarshal(b []byte) error { @@ -155,15 +156,15 @@ func (m *Any) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Any.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Any) XXX_Merge(src proto.Message) { - xxx_messageInfo_Any.Merge(dst, src) +func (m *Any) XXX_Merge(src proto.Message) { + xxx_messageInfo_Any.Merge(m, src) } func (m *Any) XXX_Size() int { return m.Size() @@ -194,6 +195,27 @@ func (*Any) XXX_MessageName() string { func init() { proto.RegisterType((*Any)(nil), "google.protobuf.Any") } + +func init() { proto.RegisterFile("google/protobuf/any.proto", fileDescriptor_b53526c13ae22eb4) } + +var fileDescriptor_b53526c13ae22eb4 = []byte{ + // 211 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4c, 0xcf, 0xcf, 0x4f, + 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcc, 0xab, 0xd4, + 0x03, 0x73, 0x84, 0xf8, 0x21, 0x52, 0x7a, 0x30, 0x29, 0x25, 0x33, 0x2e, 0x66, 0xc7, 0xbc, 0x4a, + 0x21, 0x49, 0x2e, 0x8e, 0x92, 0xca, 0x82, 0xd4, 0xf8, 0xd2, 0xa2, 0x1c, 0x09, 0x46, 0x05, 0x46, + 0x0d, 0xce, 0x20, 0x76, 0x10, 0x3f, 0xb4, 0x28, 0x47, 0x48, 0x84, 0x8b, 0xb5, 0x2c, 0x31, 0xa7, + 0x34, 0x55, 0x82, 0x49, 0x81, 0x51, 0x83, 0x27, 0x08, 0xc2, 0x71, 0xaa, 0xbf, 0xf1, 0x50, 0x8e, + 0xe1, 0xc3, 0x43, 0x39, 0xc6, 0x1f, 0x0f, 0xe5, 0x18, 0x1b, 0x1e, 0xc9, 0x31, 0xae, 0x78, 0x24, + 0xc7, 0x78, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0xbe, 0x78, + 0x24, 0xc7, 0xf0, 0x01, 0x24, 0xfe, 0x58, 0x8e, 0xf1, 0xc4, 0x63, 0x39, 0x46, 0x2e, 0xe1, 0xe4, + 0xfc, 0x5c, 0x3d, 0x34, 0xeb, 0x9d, 0x38, 0x1c, 0xf3, 0x2a, 0x03, 0x40, 0x9c, 0x00, 0xc6, 0x28, + 0x56, 0x90, 0x8d, 0xc5, 0x8b, 0x98, 0x98, 0xdd, 0x03, 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, 0x94, + 0x06, 0x40, 0x95, 0xea, 0x85, 0xa7, 0xe6, 0xe4, 0x78, 0xe7, 0xe5, 0x97, 0xe7, 0x85, 0x80, 0x94, + 0x25, 0xb1, 0x81, 0xcd, 0x30, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xb7, 0x81, 0x82, 0xd3, 0xed, + 0x00, 0x00, 0x00, +} + func (this *Any) Compare(that interface{}) int { if that == nil { if this == nil { @@ -288,7 +310,7 @@ func valueToGoStringAny(v interface{}, typ string) string { func (m *Any) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -296,36 +318,46 @@ func (m *Any) Marshal() (dAtA []byte, err error) { } func (m *Any) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Any) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l - if len(m.TypeUrl) > 0 { - dAtA[i] = 0xa - i++ - i = encodeVarintAny(dAtA, i, uint64(len(m.TypeUrl))) - i += copy(dAtA[i:], m.TypeUrl) + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } if len(m.Value) > 0 { - dAtA[i] = 0x12 - i++ + i -= len(m.Value) + copy(dAtA[i:], m.Value) i = encodeVarintAny(dAtA, i, uint64(len(m.Value))) - i += copy(dAtA[i:], m.Value) + i-- + dAtA[i] = 0x12 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if len(m.TypeUrl) > 0 { + i -= len(m.TypeUrl) + copy(dAtA[i:], m.TypeUrl) + i = encodeVarintAny(dAtA, i, uint64(len(m.TypeUrl))) + i-- + dAtA[i] = 0xa } - return i, nil + return len(dAtA) - i, nil } func encodeVarintAny(dAtA []byte, offset int, v uint64) int { + offset -= sovAny(v) + base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 offset++ } dAtA[offset] = uint8(v) - return offset + 1 + return base } func NewPopulatedAny(r randyAny, easy bool) *Any { this := &Any{} @@ -414,6 +446,9 @@ func encodeVarintPopulateAny(dAtA []byte, v uint64) []byte { return dAtA } func (m *Any) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.TypeUrl) @@ -431,14 +466,7 @@ func (m *Any) Size() (n int) { } func sovAny(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n + return (math_bits.Len64(x|1) + 6) / 7 } func sozAny(x uint64) (n int) { return sovAny(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -478,7 +506,7 @@ func (m *Any) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -506,7 +534,7 @@ func (m *Any) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -516,6 +544,9 @@ func (m *Any) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAny } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAny + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -535,7 +566,7 @@ func (m *Any) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= (int(b) & 0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -544,6 +575,9 @@ func (m *Any) Unmarshal(dAtA []byte) error { return ErrInvalidLengthAny } postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthAny + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -561,6 +595,9 @@ func (m *Any) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthAny } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthAny + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -628,10 +665,13 @@ func skipAny(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthAny } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthAny + } return iNdEx, nil case 3: for { @@ -660,6 +700,9 @@ func skipAny(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthAny + } } return iNdEx, nil case 4: @@ -678,23 +721,3 @@ var ( ErrInvalidLengthAny = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowAny = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("google/protobuf/any.proto", fileDescriptor_any_8eec716d227a06dd) } - -var fileDescriptor_any_8eec716d227a06dd = []byte{ - // 216 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4c, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcc, 0xab, 0xd4, - 0x03, 0x73, 0x84, 0xf8, 0x21, 0x52, 0x7a, 0x30, 0x29, 0x25, 0x33, 0x2e, 0x66, 0xc7, 0xbc, 0x4a, - 0x21, 0x49, 0x2e, 0x8e, 0x92, 0xca, 0x82, 0xd4, 0xf8, 0xd2, 0xa2, 0x1c, 0x09, 0x46, 0x05, 0x46, - 0x0d, 0xce, 0x20, 0x76, 0x10, 0x3f, 0xb4, 0x28, 0x47, 0x48, 0x84, 0x8b, 0xb5, 0x2c, 0x31, 0xa7, - 0x34, 0x55, 0x82, 0x49, 0x81, 0x51, 0x83, 0x27, 0x08, 0xc2, 0x71, 0x6a, 0x66, 0xbc, 0xf0, 0x50, - 0x8e, 0xe1, 0xc6, 0x43, 0x39, 0x86, 0x0f, 0x0f, 0xe5, 0x18, 0x7f, 0x3c, 0x94, 0x63, 0x6c, 0x78, - 0x24, 0xc7, 0xb8, 0xe2, 0x91, 0x1c, 0xe3, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, - 0x78, 0x24, 0xc7, 0xf8, 0xe2, 0x91, 0x1c, 0xc3, 0x07, 0x90, 0xf8, 0x63, 0x39, 0xc6, 0x13, 0x8f, - 0xe5, 0x18, 0xb9, 0x84, 0x93, 0xf3, 0x73, 0xf5, 0xd0, 0xdc, 0xe0, 0xc4, 0xe1, 0x98, 0x57, 0x19, - 0x00, 0xe2, 0x04, 0x30, 0x46, 0xb1, 0x82, 0xac, 0x2d, 0x5e, 0xc4, 0xc4, 0xec, 0x1e, 0xe0, 0xb4, - 0x8a, 0x49, 0xce, 0x1d, 0xa2, 0x34, 0x00, 0xaa, 0x54, 0x2f, 0x3c, 0x35, 0x27, 0xc7, 0x3b, 0x2f, - 0xbf, 0x3c, 0x2f, 0x04, 0xa4, 0x2c, 0x89, 0x0d, 0x6c, 0x86, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, - 0x19, 0x7c, 0x7c, 0x94, 0xf2, 0x00, 0x00, 0x00, -} diff --git a/vendor/github.com/gogo/protobuf/types/api.pb.go b/vendor/github.com/gogo/protobuf/types/api.pb.go index 395c9b6b4a..b09e3ffd16 100644 --- a/vendor/github.com/gogo/protobuf/types/api.pb.go +++ b/vendor/github.com/gogo/protobuf/types/api.pb.go @@ -3,16 +3,16 @@ package types -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import bytes "bytes" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + bytes "bytes" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -39,9 +39,9 @@ type Api struct { // followed by the interface's simple name. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The methods of this interface, in unspecified order. - Methods []*Method `protobuf:"bytes,2,rep,name=methods" json:"methods,omitempty"` + Methods []*Method `protobuf:"bytes,2,rep,name=methods,proto3" json:"methods,omitempty"` // Any metadata attached to the interface. - Options []*Option `protobuf:"bytes,3,rep,name=options" json:"options,omitempty"` + Options []*Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` // A version string for this interface. If specified, must have the form // `major-version.minor-version`, as in `1.10`. If the minor version is // omitted, it defaults to zero. If the entire version field is empty, the @@ -66,9 +66,9 @@ type Api struct { Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` // Source context for the protocol buffer service represented by this // message. - SourceContext *SourceContext `protobuf:"bytes,5,opt,name=source_context,json=sourceContext" json:"source_context,omitempty"` + SourceContext *SourceContext `protobuf:"bytes,5,opt,name=source_context,json=sourceContext,proto3" json:"source_context,omitempty"` // Included interfaces. See [Mixin][]. - Mixins []*Mixin `protobuf:"bytes,6,rep,name=mixins" json:"mixins,omitempty"` + Mixins []*Mixin `protobuf:"bytes,6,rep,name=mixins,proto3" json:"mixins,omitempty"` // The source syntax of the service. Syntax Syntax `protobuf:"varint,7,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -79,7 +79,7 @@ type Api struct { func (m *Api) Reset() { *m = Api{} } func (*Api) ProtoMessage() {} func (*Api) Descriptor() ([]byte, []int) { - return fileDescriptor_api_658bf9e68d9b66a3, []int{0} + return fileDescriptor_a2ec32096296c143, []int{0} } func (m *Api) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -89,15 +89,15 @@ func (m *Api) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Api.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Api) XXX_Merge(src proto.Message) { - xxx_messageInfo_Api.Merge(dst, src) +func (m *Api) XXX_Merge(src proto.Message) { + xxx_messageInfo_Api.Merge(m, src) } func (m *Api) XXX_Size() int { return m.Size() @@ -154,7 +154,7 @@ func (m *Api) GetSyntax() Syntax { if m != nil { return m.Syntax } - return SYNTAX_PROTO2 + return Syntax_SYNTAX_PROTO2 } func (*Api) XXX_MessageName() string { @@ -174,7 +174,7 @@ type Method struct { // If true, the response is streamed. ResponseStreaming bool `protobuf:"varint,5,opt,name=response_streaming,json=responseStreaming,proto3" json:"response_streaming,omitempty"` // Any metadata attached to the method. - Options []*Option `protobuf:"bytes,6,rep,name=options" json:"options,omitempty"` + Options []*Option `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty"` // The source syntax of this method. Syntax Syntax `protobuf:"varint,7,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -185,7 +185,7 @@ type Method struct { func (m *Method) Reset() { *m = Method{} } func (*Method) ProtoMessage() {} func (*Method) Descriptor() ([]byte, []int) { - return fileDescriptor_api_658bf9e68d9b66a3, []int{1} + return fileDescriptor_a2ec32096296c143, []int{1} } func (m *Method) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -195,15 +195,15 @@ func (m *Method) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Method.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Method) XXX_Merge(src proto.Message) { - xxx_messageInfo_Method.Merge(dst, src) +func (m *Method) XXX_Merge(src proto.Message) { + xxx_messageInfo_Method.Merge(m, src) } func (m *Method) XXX_Size() int { return m.Size() @@ -260,7 +260,7 @@ func (m *Method) GetSyntax() Syntax { if m != nil { return m.Syntax } - return SYNTAX_PROTO2 + return Syntax_SYNTAX_PROTO2 } func (*Method) XXX_MessageName() string { @@ -359,7 +359,7 @@ type Mixin struct { func (m *Mixin) Reset() { *m = Mixin{} } func (*Mixin) ProtoMessage() {} func (*Mixin) Descriptor() ([]byte, []int) { - return fileDescriptor_api_658bf9e68d9b66a3, []int{2} + return fileDescriptor_a2ec32096296c143, []int{2} } func (m *Mixin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -369,15 +369,15 @@ func (m *Mixin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Mixin.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Mixin) XXX_Merge(src proto.Message) { - xxx_messageInfo_Mixin.Merge(dst, src) +func (m *Mixin) XXX_Merge(src proto.Message) { + xxx_messageInfo_Mixin.Merge(m, src) } func (m *Mixin) XXX_Size() int { return m.Size() @@ -410,6 +410,43 @@ func init() { proto.RegisterType((*Method)(nil), "google.protobuf.Method") proto.RegisterType((*Mixin)(nil), "google.protobuf.Mixin") } + +func init() { proto.RegisterFile("google/protobuf/api.proto", fileDescriptor_a2ec32096296c143) } + +var fileDescriptor_a2ec32096296c143 = []byte{ + // 467 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0x31, 0x6f, 0x13, 0x31, + 0x14, 0xc7, 0xeb, 0xbb, 0xe4, 0x52, 0x5c, 0x91, 0x82, 0x91, 0xc0, 0x64, 0xb0, 0x4e, 0x15, 0xc3, + 0x09, 0xc4, 0x45, 0x94, 0x4f, 0xd0, 0x20, 0xd4, 0x01, 0x21, 0xa2, 0x0b, 0x08, 0x89, 0x25, 0x4a, + 0x83, 0x09, 0x96, 0xee, 0x6c, 0x63, 0x3b, 0x90, 0x4c, 0xf0, 0x59, 0x98, 0x10, 0x23, 0xdf, 0x80, + 0xad, 0x23, 0x23, 0x23, 0xb9, 0x2e, 0x8c, 0x1d, 0x19, 0x91, 0x7d, 0xe7, 0xa6, 0x5c, 0x83, 0x04, + 0x9b, 0xdf, 0xfb, 0xff, 0xfc, 0xf7, 0x7b, 0x7f, 0xc3, 0x9b, 0x33, 0x21, 0x66, 0x39, 0xed, 0x4b, + 0x25, 0x8c, 0x38, 0x9a, 0xbf, 0xea, 0x4f, 0x24, 0x4b, 0x5d, 0x81, 0x76, 0x2b, 0x29, 0xf5, 0x52, + 0xef, 0x56, 0x93, 0xd5, 0x62, 0xae, 0xa6, 0x74, 0x3c, 0x15, 0xdc, 0xd0, 0x85, 0xa9, 0xc0, 0x5e, + 0xaf, 0x49, 0x99, 0xa5, 0xac, 0x4d, 0xf6, 0xbe, 0x06, 0x30, 0x3c, 0x90, 0x0c, 0x21, 0xd8, 0xe2, + 0x93, 0x82, 0x62, 0x10, 0x83, 0xe4, 0x52, 0xe6, 0xce, 0xe8, 0x1e, 0xec, 0x14, 0xd4, 0xbc, 0x16, + 0x2f, 0x35, 0x0e, 0xe2, 0x30, 0xd9, 0xd9, 0xbf, 0x91, 0x36, 0x06, 0x48, 0x1f, 0x3b, 0x3d, 0xf3, + 0x9c, 0xbd, 0x22, 0xa4, 0x61, 0x82, 0x6b, 0x1c, 0xfe, 0xe5, 0xca, 0x13, 0xa7, 0x67, 0x9e, 0x43, + 0x18, 0x76, 0xde, 0x52, 0xa5, 0x99, 0xe0, 0xb8, 0xe5, 0x1e, 0xf7, 0x25, 0x7a, 0x08, 0xbb, 0x7f, + 0xee, 0x83, 0xdb, 0x31, 0x48, 0x76, 0xf6, 0xc9, 0x05, 0xcf, 0x91, 0xc3, 0x1e, 0x54, 0x54, 0x76, + 0x59, 0x9f, 0x2f, 0x51, 0x0a, 0xa3, 0x82, 0x2d, 0x18, 0xd7, 0x38, 0x72, 0x23, 0x5d, 0xbf, 0xb8, + 0x85, 0x95, 0xb3, 0x9a, 0x42, 0x7d, 0x18, 0xe9, 0x25, 0x37, 0x93, 0x05, 0xee, 0xc4, 0x20, 0xe9, + 0x6e, 0x58, 0x61, 0xe4, 0xe4, 0xac, 0xc6, 0xf6, 0xbe, 0x04, 0x30, 0xaa, 0x82, 0xd8, 0x18, 0x63, + 0x02, 0xaf, 0x28, 0xfa, 0x66, 0x4e, 0xb5, 0x19, 0xdb, 0xe0, 0xc7, 0x73, 0x95, 0xe3, 0xc0, 0xe9, + 0xdd, 0xba, 0xff, 0x74, 0x29, 0xe9, 0x33, 0x95, 0xa3, 0x3b, 0xf0, 0xaa, 0x27, 0xb5, 0x51, 0x74, + 0x52, 0x30, 0x3e, 0xc3, 0x61, 0x0c, 0x92, 0xed, 0xcc, 0x5b, 0x8c, 0x7c, 0x1f, 0xdd, 0xb6, 0xb0, + 0x96, 0x82, 0x6b, 0xba, 0xf6, 0xad, 0x12, 0xdc, 0xf5, 0x82, 0x37, 0xbe, 0x0b, 0xd1, 0x19, 0xbb, + 0x76, 0x6e, 0x3b, 0xe7, 0x33, 0x97, 0xb5, 0xf5, 0xb9, 0x5f, 0x8c, 0xfe, 0xf1, 0x17, 0xff, 0x3b, + 0xb4, 0x3e, 0x6c, 0xbb, 0xd8, 0x37, 0x46, 0x86, 0x60, 0x4b, 0x09, 0x61, 0xea, 0x98, 0xdc, 0x79, + 0xf0, 0xfe, 0xfb, 0x8a, 0x6c, 0x9d, 0xae, 0x08, 0xf8, 0xb5, 0x22, 0xe0, 0x43, 0x49, 0xc0, 0xa7, + 0x92, 0x80, 0xe3, 0x92, 0x80, 0x6f, 0x25, 0x01, 0x3f, 0x4a, 0x02, 0x7e, 0x96, 0x64, 0xeb, 0xd4, + 0xf6, 0x4f, 0x08, 0x38, 0x3e, 0x21, 0x00, 0x5e, 0x9b, 0x8a, 0xa2, 0x39, 0xc6, 0x60, 0xfb, 0x40, + 0xb2, 0xa1, 0x2d, 0x86, 0xe0, 0x45, 0xdb, 0xe6, 0xa6, 0x3f, 0x06, 0xe1, 0xe1, 0x70, 0xf0, 0x39, + 0x20, 0x87, 0x15, 0x3a, 0xf4, 0x13, 0x3f, 0xa7, 0x79, 0xfe, 0x88, 0x8b, 0x77, 0xdc, 0xc6, 0xa8, + 0x8f, 0x22, 0xe7, 0x71, 0xff, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2b, 0x64, 0x40, 0x40, 0xa1, + 0x03, 0x00, 0x00, +} + func (this *Api) Compare(that interface{}) int { if that == nil { if this == nil { @@ -826,7 +863,7 @@ func valueToGoStringApi(v interface{}, typ string) string { func (m *Api) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -834,83 +871,99 @@ func (m *Api) Marshal() (dAtA []byte, err error) { } func (m *Api) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Api) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l - if len(m.Name) > 0 { - dAtA[i] = 0xa - i++ - i = encodeVarintApi(dAtA, i, uint64(len(m.Name))) - i += copy(dAtA[i:], m.Name) + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.Methods) > 0 { - for _, msg := range m.Methods { - dAtA[i] = 0x12 - i++ - i = encodeVarintApi(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + if m.Syntax != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.Syntax)) + i-- + dAtA[i] = 0x38 + } + if len(m.Mixins) > 0 { + for iNdEx := len(m.Mixins) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Mixins[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) } - i += n + i-- + dAtA[i] = 0x32 } } - if len(m.Options) > 0 { - for _, msg := range m.Options { - dAtA[i] = 0x1a - i++ - i = encodeVarintApi(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) + if m.SourceContext != nil { + { + size, err := m.SourceContext.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } - i += n + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x2a } if len(m.Version) > 0 { - dAtA[i] = 0x22 - i++ + i -= len(m.Version) + copy(dAtA[i:], m.Version) i = encodeVarintApi(dAtA, i, uint64(len(m.Version))) - i += copy(dAtA[i:], m.Version) + i-- + dAtA[i] = 0x22 } - if m.SourceContext != nil { - dAtA[i] = 0x2a - i++ - i = encodeVarintApi(dAtA, i, uint64(m.SourceContext.Size())) - n1, err := m.SourceContext.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + if len(m.Options) > 0 { + for iNdEx := len(m.Options) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Options[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a } - i += n1 } - if len(m.Mixins) > 0 { - for _, msg := range m.Mixins { - dAtA[i] = 0x32 - i++ - i = encodeVarintApi(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + if len(m.Methods) > 0 { + for iNdEx := len(m.Methods) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Methods[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) } - i += n + i-- + dAtA[i] = 0x12 } } - if m.Syntax != 0 { - dAtA[i] = 0x38 - i++ - i = encodeVarintApi(dAtA, i, uint64(m.Syntax)) - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintApi(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa } - return i, nil + return len(dAtA) - i, nil } func (m *Method) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -918,75 +971,86 @@ func (m *Method) Marshal() (dAtA []byte, err error) { } func (m *Method) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Method) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l - if len(m.Name) > 0 { - dAtA[i] = 0xa - i++ - i = encodeVarintApi(dAtA, i, uint64(len(m.Name))) - i += copy(dAtA[i:], m.Name) + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.RequestTypeUrl) > 0 { - dAtA[i] = 0x12 - i++ - i = encodeVarintApi(dAtA, i, uint64(len(m.RequestTypeUrl))) - i += copy(dAtA[i:], m.RequestTypeUrl) + if m.Syntax != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.Syntax)) + i-- + dAtA[i] = 0x38 } - if m.RequestStreaming { - dAtA[i] = 0x18 - i++ - if m.RequestStreaming { + if len(m.Options) > 0 { + for iNdEx := len(m.Options) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Options[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if m.ResponseStreaming { + i-- + if m.ResponseStreaming { dAtA[i] = 1 } else { dAtA[i] = 0 } - i++ + i-- + dAtA[i] = 0x28 } if len(m.ResponseTypeUrl) > 0 { - dAtA[i] = 0x22 - i++ + i -= len(m.ResponseTypeUrl) + copy(dAtA[i:], m.ResponseTypeUrl) i = encodeVarintApi(dAtA, i, uint64(len(m.ResponseTypeUrl))) - i += copy(dAtA[i:], m.ResponseTypeUrl) + i-- + dAtA[i] = 0x22 } - if m.ResponseStreaming { - dAtA[i] = 0x28 - i++ - if m.ResponseStreaming { + if m.RequestStreaming { + i-- + if m.RequestStreaming { dAtA[i] = 1 } else { dAtA[i] = 0 } - i++ - } - if len(m.Options) > 0 { - for _, msg := range m.Options { - dAtA[i] = 0x32 - i++ - i = encodeVarintApi(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } + i-- + dAtA[i] = 0x18 } - if m.Syntax != 0 { - dAtA[i] = 0x38 - i++ - i = encodeVarintApi(dAtA, i, uint64(m.Syntax)) + if len(m.RequestTypeUrl) > 0 { + i -= len(m.RequestTypeUrl) + copy(dAtA[i:], m.RequestTypeUrl) + i = encodeVarintApi(dAtA, i, uint64(len(m.RequestTypeUrl))) + i-- + dAtA[i] = 0x12 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintApi(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa } - return i, nil + return len(dAtA) - i, nil } func (m *Mixin) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -994,48 +1058,58 @@ func (m *Mixin) Marshal() (dAtA []byte, err error) { } func (m *Mixin) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Mixin) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l - if len(m.Name) > 0 { - dAtA[i] = 0xa - i++ - i = encodeVarintApi(dAtA, i, uint64(len(m.Name))) - i += copy(dAtA[i:], m.Name) + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } if len(m.Root) > 0 { - dAtA[i] = 0x12 - i++ + i -= len(m.Root) + copy(dAtA[i:], m.Root) i = encodeVarintApi(dAtA, i, uint64(len(m.Root))) - i += copy(dAtA[i:], m.Root) + i-- + dAtA[i] = 0x12 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintApi(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa } - return i, nil + return len(dAtA) - i, nil } func encodeVarintApi(dAtA []byte, offset int, v uint64) int { + offset -= sovApi(v) + base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 offset++ } dAtA[offset] = uint8(v) - return offset + 1 + return base } func NewPopulatedApi(r randyApi, easy bool) *Api { this := &Api{} this.Name = string(randStringApi(r)) - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { v1 := r.Intn(5) this.Methods = make([]*Method, v1) for i := 0; i < v1; i++ { this.Methods[i] = NewPopulatedMethod(r, easy) } } - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { v2 := r.Intn(5) this.Options = make([]*Option, v2) for i := 0; i < v2; i++ { @@ -1043,10 +1117,10 @@ func NewPopulatedApi(r randyApi, easy bool) *Api { } } this.Version = string(randStringApi(r)) - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { this.SourceContext = NewPopulatedSourceContext(r, easy) } - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { v3 := r.Intn(5) this.Mixins = make([]*Mixin, v3) for i := 0; i < v3; i++ { @@ -1067,7 +1141,7 @@ func NewPopulatedMethod(r randyApi, easy bool) *Method { this.RequestStreaming = bool(bool(r.Intn(2) == 0)) this.ResponseTypeUrl = string(randStringApi(r)) this.ResponseStreaming = bool(bool(r.Intn(2) == 0)) - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { v4 := r.Intn(5) this.Options = make([]*Option, v4) for i := 0; i < v4; i++ { @@ -1164,6 +1238,9 @@ func encodeVarintPopulateApi(dAtA []byte, v uint64) []byte { return dAtA } func (m *Api) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -1206,6 +1283,9 @@ func (m *Api) Size() (n int) { } func (m *Method) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -1242,6 +1322,9 @@ func (m *Method) Size() (n int) { } func (m *Mixin) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -1259,14 +1342,7 @@ func (m *Mixin) Size() (n int) { } func sovApi(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n + return (math_bits.Len64(x|1) + 6) / 7 } func sozApi(x uint64) (n int) { return sovApi(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -1275,13 +1351,28 @@ func (this *Api) String() string { if this == nil { return "nil" } + repeatedStringForMethods := "[]*Method{" + for _, f := range this.Methods { + repeatedStringForMethods += strings.Replace(f.String(), "Method", "Method", 1) + "," + } + repeatedStringForMethods += "}" + repeatedStringForOptions := "[]*Option{" + for _, f := range this.Options { + repeatedStringForOptions += strings.Replace(fmt.Sprintf("%v", f), "Option", "Option", 1) + "," + } + repeatedStringForOptions += "}" + repeatedStringForMixins := "[]*Mixin{" + for _, f := range this.Mixins { + repeatedStringForMixins += strings.Replace(f.String(), "Mixin", "Mixin", 1) + "," + } + repeatedStringForMixins += "}" s := strings.Join([]string{`&Api{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `Methods:` + strings.Replace(fmt.Sprintf("%v", this.Methods), "Method", "Method", 1) + `,`, - `Options:` + strings.Replace(fmt.Sprintf("%v", this.Options), "Option", "Option", 1) + `,`, + `Methods:` + repeatedStringForMethods + `,`, + `Options:` + repeatedStringForOptions + `,`, `Version:` + fmt.Sprintf("%v", this.Version) + `,`, `SourceContext:` + strings.Replace(fmt.Sprintf("%v", this.SourceContext), "SourceContext", "SourceContext", 1) + `,`, - `Mixins:` + strings.Replace(fmt.Sprintf("%v", this.Mixins), "Mixin", "Mixin", 1) + `,`, + `Mixins:` + repeatedStringForMixins + `,`, `Syntax:` + fmt.Sprintf("%v", this.Syntax) + `,`, `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, `}`, @@ -1292,13 +1383,18 @@ func (this *Method) String() string { if this == nil { return "nil" } + repeatedStringForOptions := "[]*Option{" + for _, f := range this.Options { + repeatedStringForOptions += strings.Replace(fmt.Sprintf("%v", f), "Option", "Option", 1) + "," + } + repeatedStringForOptions += "}" s := strings.Join([]string{`&Method{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `RequestTypeUrl:` + fmt.Sprintf("%v", this.RequestTypeUrl) + `,`, `RequestStreaming:` + fmt.Sprintf("%v", this.RequestStreaming) + `,`, `ResponseTypeUrl:` + fmt.Sprintf("%v", this.ResponseTypeUrl) + `,`, `ResponseStreaming:` + fmt.Sprintf("%v", this.ResponseStreaming) + `,`, - `Options:` + strings.Replace(fmt.Sprintf("%v", this.Options), "Option", "Option", 1) + `,`, + `Options:` + repeatedStringForOptions + `,`, `Syntax:` + fmt.Sprintf("%v", this.Syntax) + `,`, `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, `}`, @@ -1340,7 +1436,7 @@ func (m *Api) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1368,7 +1464,7 @@ func (m *Api) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1378,6 +1474,9 @@ func (m *Api) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1397,7 +1496,7 @@ func (m *Api) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1406,6 +1505,9 @@ func (m *Api) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1428,7 +1530,7 @@ func (m *Api) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1437,6 +1539,9 @@ func (m *Api) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1459,7 +1564,7 @@ func (m *Api) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1469,6 +1574,9 @@ func (m *Api) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1488,7 +1596,7 @@ func (m *Api) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1497,6 +1605,9 @@ func (m *Api) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1521,7 +1632,7 @@ func (m *Api) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1530,6 +1641,9 @@ func (m *Api) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1552,7 +1666,7 @@ func (m *Api) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Syntax |= (Syntax(b) & 0x7F) << shift + m.Syntax |= Syntax(b&0x7F) << shift if b < 0x80 { break } @@ -1566,6 +1680,9 @@ func (m *Api) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthApi } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthApi + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1594,7 +1711,7 @@ func (m *Method) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1622,7 +1739,7 @@ func (m *Method) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1632,6 +1749,9 @@ func (m *Method) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1651,7 +1771,7 @@ func (m *Method) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1661,6 +1781,9 @@ func (m *Method) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1680,7 +1803,7 @@ func (m *Method) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1700,7 +1823,7 @@ func (m *Method) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1710,6 +1833,9 @@ func (m *Method) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1729,7 +1855,7 @@ func (m *Method) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1749,7 +1875,7 @@ func (m *Method) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1758,6 +1884,9 @@ func (m *Method) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1780,7 +1909,7 @@ func (m *Method) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Syntax |= (Syntax(b) & 0x7F) << shift + m.Syntax |= Syntax(b&0x7F) << shift if b < 0x80 { break } @@ -1794,6 +1923,9 @@ func (m *Method) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthApi } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthApi + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1822,7 +1954,7 @@ func (m *Mixin) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1850,7 +1982,7 @@ func (m *Mixin) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1860,6 +1992,9 @@ func (m *Mixin) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1879,7 +2014,7 @@ func (m *Mixin) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1889,6 +2024,9 @@ func (m *Mixin) Unmarshal(dAtA []byte) error { return ErrInvalidLengthApi } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1903,6 +2041,9 @@ func (m *Mixin) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthApi } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthApi + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1970,10 +2111,13 @@ func skipApi(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthApi } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthApi + } return iNdEx, nil case 3: for { @@ -2002,6 +2146,9 @@ func skipApi(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthApi + } } return iNdEx, nil case 4: @@ -2020,39 +2167,3 @@ var ( ErrInvalidLengthApi = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowApi = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("google/protobuf/api.proto", fileDescriptor_api_658bf9e68d9b66a3) } - -var fileDescriptor_api_658bf9e68d9b66a3 = []byte{ - // 472 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0x31, 0x6f, 0x13, 0x31, - 0x14, 0xc7, 0xf3, 0xee, 0x92, 0x4b, 0x71, 0x45, 0x0a, 0x46, 0x02, 0x93, 0xc1, 0x3a, 0x55, 0x0c, - 0x27, 0x10, 0x17, 0x51, 0x3e, 0x41, 0x83, 0x50, 0x07, 0x84, 0x88, 0x2e, 0x20, 0x24, 0x96, 0x28, - 0x0d, 0x26, 0x9c, 0x74, 0x67, 0x1f, 0xb6, 0x03, 0xc9, 0x86, 0xc4, 0x37, 0x61, 0x42, 0x8c, 0x7c, - 0x03, 0xb6, 0x8e, 0x1d, 0x19, 0xc9, 0x75, 0x61, 0xec, 0xc8, 0x88, 0xec, 0x3b, 0x37, 0x25, 0x0d, - 0x12, 0xdd, 0xfc, 0xde, 0xff, 0xe7, 0xbf, 0xdf, 0xfb, 0x1b, 0xdd, 0x9e, 0x0a, 0x31, 0xcd, 0x58, - 0xaf, 0x90, 0x42, 0x8b, 0xc3, 0xd9, 0x9b, 0xde, 0xb8, 0x48, 0x63, 0x5b, 0xe0, 0x9d, 0x4a, 0x8a, - 0x9d, 0xd4, 0xbd, 0xb3, 0xce, 0x2a, 0x31, 0x93, 0x13, 0x36, 0x9a, 0x08, 0xae, 0xd9, 0x5c, 0x57, - 0x60, 0xb7, 0xbb, 0x4e, 0xe9, 0x45, 0x51, 0x9b, 0xec, 0x7e, 0xf7, 0x90, 0xbf, 0x5f, 0xa4, 0x18, - 0xa3, 0x26, 0x1f, 0xe7, 0x8c, 0x40, 0x08, 0xd1, 0x95, 0xc4, 0x9e, 0xf1, 0x03, 0xd4, 0xce, 0x99, - 0x7e, 0x2b, 0x5e, 0x2b, 0xe2, 0x85, 0x7e, 0xb4, 0xbd, 0x77, 0x2b, 0x5e, 0x1b, 0x20, 0x7e, 0x6a, - 0xf5, 0xc4, 0x71, 0xe6, 0x8a, 0x28, 0x74, 0x2a, 0xb8, 0x22, 0xfe, 0x3f, 0xae, 0x3c, 0xb3, 0x7a, - 0xe2, 0x38, 0x4c, 0x50, 0xfb, 0x3d, 0x93, 0x2a, 0x15, 0x9c, 0x34, 0xed, 0xe3, 0xae, 0xc4, 0x8f, - 0x51, 0xe7, 0xef, 0x7d, 0x48, 0x2b, 0x84, 0x68, 0x7b, 0x8f, 0x5e, 0xf0, 0x1c, 0x5a, 0xec, 0x51, - 0x45, 0x25, 0x57, 0xd5, 0xf9, 0x12, 0xc7, 0x28, 0xc8, 0xd3, 0x79, 0xca, 0x15, 0x09, 0xec, 0x48, - 0x37, 0x2f, 0x6e, 0x61, 0xe4, 0xa4, 0xa6, 0x70, 0x0f, 0x05, 0x6a, 0xc1, 0xf5, 0x78, 0x4e, 0xda, - 0x21, 0x44, 0x9d, 0x0d, 0x2b, 0x0c, 0xad, 0x9c, 0xd4, 0xd8, 0xee, 0x37, 0x0f, 0x05, 0x55, 0x10, - 0x1b, 0x63, 0x8c, 0xd0, 0x35, 0xc9, 0xde, 0xcd, 0x98, 0xd2, 0x23, 0x13, 0xfc, 0x68, 0x26, 0x33, - 0xe2, 0x59, 0xbd, 0x53, 0xf7, 0x9f, 0x2f, 0x0a, 0xf6, 0x42, 0x66, 0xf8, 0x1e, 0xba, 0xee, 0x48, - 0xa5, 0x25, 0x1b, 0xe7, 0x29, 0x9f, 0x12, 0x3f, 0x84, 0x68, 0x2b, 0x71, 0x16, 0x43, 0xd7, 0xc7, - 0x77, 0x0d, 0xac, 0x0a, 0xc1, 0x15, 0x5b, 0xf9, 0x56, 0x09, 0xee, 0x38, 0xc1, 0x19, 0xdf, 0x47, - 0xf8, 0x8c, 0x5d, 0x39, 0xb7, 0xac, 0xf3, 0x99, 0xcb, 0xca, 0xfa, 0xdc, 0x2f, 0x06, 0xff, 0xf9, - 0x8b, 0x97, 0x0e, 0xad, 0x87, 0x5a, 0x36, 0xf6, 0x8d, 0x91, 0x61, 0xd4, 0x94, 0x42, 0xe8, 0x3a, - 0x26, 0x7b, 0xee, 0x7f, 0x82, 0xe3, 0x25, 0x6d, 0xfc, 0x58, 0xd2, 0xc6, 0xe9, 0x92, 0xc2, 0xef, - 0x25, 0x85, 0x8f, 0x25, 0x85, 0x2f, 0x25, 0x85, 0xa3, 0x92, 0xc2, 0x71, 0x49, 0xe1, 0x67, 0x49, - 0xe1, 0x57, 0x49, 0x1b, 0xa7, 0xa6, 0x7f, 0x42, 0xe1, 0xe8, 0x84, 0x02, 0xba, 0x31, 0x11, 0xf9, - 0xfa, 0x2c, 0xfd, 0xad, 0xfd, 0x22, 0x1d, 0x98, 0x62, 0x00, 0xaf, 0x5a, 0x26, 0x3c, 0xf5, 0xd9, - 0xf3, 0x0f, 0x06, 0xfd, 0xaf, 0x1e, 0x3d, 0xa8, 0xd0, 0x81, 0x1b, 0xfb, 0x25, 0xcb, 0xb2, 0x27, - 0x5c, 0x7c, 0xe0, 0x26, 0x4b, 0x75, 0x18, 0x58, 0x8f, 0x87, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, - 0x20, 0x4e, 0x03, 0x8e, 0xa6, 0x03, 0x00, 0x00, -} diff --git a/vendor/github.com/gogo/protobuf/types/duration.go b/vendor/github.com/gogo/protobuf/types/duration.go index 475d61f1db..979b8e78a4 100644 --- a/vendor/github.com/gogo/protobuf/types/duration.go +++ b/vendor/github.com/gogo/protobuf/types/duration.go @@ -80,7 +80,7 @@ func DurationFromProto(p *Duration) (time.Duration, error) { return 0, fmt.Errorf("duration: %#v is out of range for time.Duration", p) } if p.Nanos != 0 { - d += time.Duration(p.Nanos) + d += time.Duration(p.Nanos) * time.Nanosecond if (d < 0) != (p.Nanos < 0) { return 0, fmt.Errorf("duration: %#v is out of range for time.Duration", p) } diff --git a/vendor/github.com/gogo/protobuf/types/duration.pb.go b/vendor/github.com/gogo/protobuf/types/duration.pb.go index 39bb7a2dab..a8a11b81f9 100644 --- a/vendor/github.com/gogo/protobuf/types/duration.pb.go +++ b/vendor/github.com/gogo/protobuf/types/duration.pb.go @@ -3,16 +3,16 @@ package types -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import bytes "bytes" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + bytes "bytes" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -105,7 +105,7 @@ type Duration struct { func (m *Duration) Reset() { *m = Duration{} } func (*Duration) ProtoMessage() {} func (*Duration) Descriptor() ([]byte, []int) { - return fileDescriptor_duration_7f04bf66a647e6f6, []int{0} + return fileDescriptor_23597b2ebd7ac6c5, []int{0} } func (*Duration) XXX_WellKnownType() string { return "Duration" } func (m *Duration) XXX_Unmarshal(b []byte) error { @@ -116,15 +116,15 @@ func (m *Duration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Duration.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Duration) XXX_Merge(src proto.Message) { - xxx_messageInfo_Duration.Merge(dst, src) +func (m *Duration) XXX_Merge(src proto.Message) { + xxx_messageInfo_Duration.Merge(m, src) } func (m *Duration) XXX_Size() int { return m.Size() @@ -155,6 +155,27 @@ func (*Duration) XXX_MessageName() string { func init() { proto.RegisterType((*Duration)(nil), "google.protobuf.Duration") } + +func init() { proto.RegisterFile("google/protobuf/duration.proto", fileDescriptor_23597b2ebd7ac6c5) } + +var fileDescriptor_23597b2ebd7ac6c5 = []byte{ + // 209 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f, + 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0x29, 0x2d, 0x4a, + 0x2c, 0xc9, 0xcc, 0xcf, 0xd3, 0x03, 0x8b, 0x08, 0xf1, 0x43, 0xe4, 0xf5, 0x60, 0xf2, 0x4a, 0x56, + 0x5c, 0x1c, 0x2e, 0x50, 0x25, 0x42, 0x12, 0x5c, 0xec, 0xc5, 0xa9, 0xc9, 0xf9, 0x79, 0x29, 0xc5, + 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0xcc, 0x41, 0x30, 0xae, 0x90, 0x08, 0x17, 0x6b, 0x5e, 0x62, 0x5e, + 0x7e, 0xb1, 0x04, 0x93, 0x02, 0xa3, 0x06, 0x6b, 0x10, 0x84, 0xe3, 0x54, 0x7f, 0xe3, 0xa1, 0x1c, + 0xc3, 0x87, 0x87, 0x72, 0x8c, 0x2b, 0x1e, 0xc9, 0x31, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, + 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x2f, 0x1e, 0xc9, 0x31, 0x7c, 0x78, 0x24, 0xc7, 0xb8, 0xe2, + 0xb1, 0x1c, 0xe3, 0x89, 0xc7, 0x72, 0x8c, 0x5c, 0xc2, 0xc9, 0xf9, 0xb9, 0x7a, 0x68, 0x56, 0x3b, + 0xf1, 0xc2, 0x2c, 0x0e, 0x00, 0x89, 0x04, 0x30, 0x46, 0xb1, 0x96, 0x54, 0x16, 0xa4, 0x16, 0xff, + 0x60, 0x64, 0x5c, 0xc4, 0xc4, 0xec, 0x1e, 0xe0, 0xb4, 0x8a, 0x49, 0xce, 0x1d, 0xa2, 0x25, 0x00, + 0xaa, 0x45, 0x2f, 0x3c, 0x35, 0x27, 0xc7, 0x3b, 0x2f, 0xbf, 0x3c, 0x2f, 0x04, 0xa4, 0x32, 0x89, + 0x0d, 0x6c, 0x96, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x8a, 0x1c, 0x64, 0x4e, 0xf6, 0x00, 0x00, + 0x00, +} + func (this *Duration) Compare(that interface{}) int { if that == nil { if this == nil { @@ -252,7 +273,7 @@ func valueToGoStringDuration(v interface{}, typ string) string { func (m *Duration) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -260,36 +281,47 @@ func (m *Duration) Marshal() (dAtA []byte, err error) { } func (m *Duration) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Duration) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l - if m.Seconds != 0 { - dAtA[i] = 0x8 - i++ - i = encodeVarintDuration(dAtA, i, uint64(m.Seconds)) + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } if m.Nanos != 0 { - dAtA[i] = 0x10 - i++ i = encodeVarintDuration(dAtA, i, uint64(m.Nanos)) + i-- + dAtA[i] = 0x10 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if m.Seconds != 0 { + i = encodeVarintDuration(dAtA, i, uint64(m.Seconds)) + i-- + dAtA[i] = 0x8 } - return i, nil + return len(dAtA) - i, nil } func encodeVarintDuration(dAtA []byte, offset int, v uint64) int { + offset -= sovDuration(v) + base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 offset++ } dAtA[offset] = uint8(v) - return offset + 1 + return base } func (m *Duration) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Seconds != 0 { @@ -305,14 +337,7 @@ func (m *Duration) Size() (n int) { } func sovDuration(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n + return (math_bits.Len64(x|1) + 6) / 7 } func sozDuration(x uint64) (n int) { return sovDuration(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -332,7 +357,7 @@ func (m *Duration) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -360,7 +385,7 @@ func (m *Duration) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Seconds |= (int64(b) & 0x7F) << shift + m.Seconds |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -379,7 +404,7 @@ func (m *Duration) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Nanos |= (int32(b) & 0x7F) << shift + m.Nanos |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -393,6 +418,9 @@ func (m *Duration) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthDuration } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthDuration + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -460,10 +488,13 @@ func skipDuration(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthDuration } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthDuration + } return iNdEx, nil case 3: for { @@ -492,6 +523,9 @@ func skipDuration(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthDuration + } } return iNdEx, nil case 4: @@ -510,25 +544,3 @@ var ( ErrInvalidLengthDuration = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowDuration = fmt.Errorf("proto: integer overflow") ) - -func init() { - proto.RegisterFile("google/protobuf/duration.proto", fileDescriptor_duration_7f04bf66a647e6f6) -} - -var fileDescriptor_duration_7f04bf66a647e6f6 = []byte{ - // 215 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0x29, 0x2d, 0x4a, - 0x2c, 0xc9, 0xcc, 0xcf, 0xd3, 0x03, 0x8b, 0x08, 0xf1, 0x43, 0xe4, 0xf5, 0x60, 0xf2, 0x4a, 0x56, - 0x5c, 0x1c, 0x2e, 0x50, 0x25, 0x42, 0x12, 0x5c, 0xec, 0xc5, 0xa9, 0xc9, 0xf9, 0x79, 0x29, 0xc5, - 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0xcc, 0x41, 0x30, 0xae, 0x90, 0x08, 0x17, 0x6b, 0x5e, 0x62, 0x5e, - 0x7e, 0xb1, 0x04, 0x93, 0x02, 0xa3, 0x06, 0x6b, 0x10, 0x84, 0xe3, 0xd4, 0xcc, 0x78, 0xe1, 0xa1, - 0x1c, 0xc3, 0x8d, 0x87, 0x72, 0x0c, 0x1f, 0x1e, 0xca, 0x31, 0xae, 0x78, 0x24, 0xc7, 0x78, 0xe2, - 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0xbe, 0x78, 0x24, 0xc7, 0xf0, - 0xe1, 0x91, 0x1c, 0xe3, 0x8a, 0xc7, 0x72, 0x8c, 0x27, 0x1e, 0xcb, 0x31, 0x72, 0x09, 0x27, 0xe7, - 0xe7, 0xea, 0xa1, 0xd9, 0xef, 0xc4, 0x0b, 0xb3, 0x3d, 0x00, 0x24, 0x12, 0xc0, 0x18, 0xc5, 0x5a, - 0x52, 0x59, 0x90, 0x5a, 0xfc, 0x83, 0x91, 0x71, 0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, - 0x39, 0x77, 0x88, 0x96, 0x00, 0xa8, 0x16, 0xbd, 0xf0, 0xd4, 0x9c, 0x1c, 0xef, 0xbc, 0xfc, 0xf2, - 0xbc, 0x10, 0x90, 0xca, 0x24, 0x36, 0xb0, 0x59, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7d, - 0xb1, 0xa3, 0x66, 0xfb, 0x00, 0x00, 0x00, -} diff --git a/vendor/github.com/gogo/protobuf/types/empty.pb.go b/vendor/github.com/gogo/protobuf/types/empty.pb.go index db58ac670e..560ed03cd9 100644 --- a/vendor/github.com/gogo/protobuf/types/empty.pb.go +++ b/vendor/github.com/gogo/protobuf/types/empty.pb.go @@ -3,16 +3,16 @@ package types -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import bytes "bytes" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + bytes "bytes" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -43,7 +43,7 @@ type Empty struct { func (m *Empty) Reset() { *m = Empty{} } func (*Empty) ProtoMessage() {} func (*Empty) Descriptor() ([]byte, []int) { - return fileDescriptor_empty_fa64318be3e23895, []int{0} + return fileDescriptor_900544acb223d5b8, []int{0} } func (*Empty) XXX_WellKnownType() string { return "Empty" } func (m *Empty) XXX_Unmarshal(b []byte) error { @@ -54,15 +54,15 @@ func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Empty.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Empty) XXX_Merge(src proto.Message) { - xxx_messageInfo_Empty.Merge(dst, src) +func (m *Empty) XXX_Merge(src proto.Message) { + xxx_messageInfo_Empty.Merge(m, src) } func (m *Empty) XXX_Size() int { return m.Size() @@ -79,6 +79,24 @@ func (*Empty) XXX_MessageName() string { func init() { proto.RegisterType((*Empty)(nil), "google.protobuf.Empty") } + +func init() { proto.RegisterFile("google/protobuf/empty.proto", fileDescriptor_900544acb223d5b8) } + +var fileDescriptor_900544acb223d5b8 = []byte{ + // 176 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0xcf, 0xcf, 0x4f, + 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcd, 0x2d, 0x28, + 0xa9, 0xd4, 0x03, 0x73, 0x85, 0xf8, 0x21, 0x92, 0x7a, 0x30, 0x49, 0x25, 0x76, 0x2e, 0x56, 0x57, + 0x90, 0xbc, 0x53, 0x0b, 0xe3, 0x8d, 0x87, 0x72, 0x0c, 0x1f, 0x1e, 0xca, 0x31, 0xfe, 0x78, 0x28, + 0xc7, 0xd8, 0xf0, 0x48, 0x8e, 0x71, 0xc5, 0x23, 0x39, 0xc6, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, + 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0xf1, 0xc5, 0x23, 0x39, 0x86, 0x0f, 0x20, 0xf1, 0xc7, 0x72, + 0x8c, 0x27, 0x1e, 0xcb, 0x31, 0x72, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, 0x19, 0xe8, 0xc4, 0x05, + 0x36, 0x2e, 0x00, 0xc4, 0x0d, 0x60, 0x8c, 0x62, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0xfe, 0xc1, 0xc8, + 0xb8, 0x88, 0x89, 0xd9, 0x3d, 0xc0, 0x69, 0x15, 0x93, 0x9c, 0x3b, 0x44, 0x7d, 0x00, 0x54, 0xbd, + 0x5e, 0x78, 0x6a, 0x4e, 0x8e, 0x77, 0x5e, 0x7e, 0x79, 0x5e, 0x08, 0x48, 0x65, 0x12, 0x1b, 0xd8, + 0x20, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x21, 0xbe, 0xb6, 0x31, 0xc6, 0x00, 0x00, 0x00, +} + func (this *Empty) Compare(that interface{}) int { if that == nil { if this == nil { @@ -156,7 +174,7 @@ func valueToGoStringEmpty(v interface{}, typ string) string { func (m *Empty) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -164,24 +182,32 @@ func (m *Empty) Marshal() (dAtA []byte, err error) { } func (m *Empty) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Empty) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } - return i, nil + return len(dAtA) - i, nil } func encodeVarintEmpty(dAtA []byte, offset int, v uint64) int { + offset -= sovEmpty(v) + base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 offset++ } dAtA[offset] = uint8(v) - return offset + 1 + return base } func NewPopulatedEmpty(r randyEmpty, easy bool) *Empty { this := &Empty{} @@ -264,6 +290,9 @@ func encodeVarintPopulateEmpty(dAtA []byte, v uint64) []byte { return dAtA } func (m *Empty) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.XXX_unrecognized != nil { @@ -273,14 +302,7 @@ func (m *Empty) Size() (n int) { } func sovEmpty(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n + return (math_bits.Len64(x|1) + 6) / 7 } func sozEmpty(x uint64) (n int) { return sovEmpty(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -318,7 +340,7 @@ func (m *Empty) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -341,6 +363,9 @@ func (m *Empty) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthEmpty } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthEmpty + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -408,10 +433,13 @@ func skipEmpty(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthEmpty } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthEmpty + } return iNdEx, nil case 3: for { @@ -440,6 +468,9 @@ func skipEmpty(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthEmpty + } } return iNdEx, nil case 4: @@ -458,21 +489,3 @@ var ( ErrInvalidLengthEmpty = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowEmpty = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("google/protobuf/empty.proto", fileDescriptor_empty_fa64318be3e23895) } - -var fileDescriptor_empty_fa64318be3e23895 = []byte{ - // 180 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcd, 0x2d, 0x28, - 0xa9, 0xd4, 0x03, 0x73, 0x85, 0xf8, 0x21, 0x92, 0x7a, 0x30, 0x49, 0x25, 0x76, 0x2e, 0x56, 0x57, - 0x90, 0xbc, 0x53, 0x07, 0xe3, 0x85, 0x87, 0x72, 0x0c, 0x37, 0x1e, 0xca, 0x31, 0x7c, 0x78, 0x28, - 0xc7, 0xf8, 0xe3, 0xa1, 0x1c, 0x63, 0xc3, 0x23, 0x39, 0xc6, 0x15, 0x8f, 0xe4, 0x18, 0x4f, 0x3c, - 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x17, 0x8f, 0xe4, 0x18, 0x3e, - 0x80, 0xc4, 0x1f, 0xcb, 0x31, 0x9e, 0x78, 0x2c, 0xc7, 0xc8, 0x25, 0x9c, 0x9c, 0x9f, 0xab, 0x87, - 0x66, 0xa8, 0x13, 0x17, 0xd8, 0xc8, 0x00, 0x10, 0x37, 0x80, 0x31, 0x8a, 0xb5, 0xa4, 0xb2, 0x20, - 0xb5, 0xf8, 0x07, 0x23, 0xe3, 0x22, 0x26, 0x66, 0xf7, 0x00, 0xa7, 0x55, 0x4c, 0x72, 0xee, 0x10, - 0xf5, 0x01, 0x50, 0xf5, 0x7a, 0xe1, 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, - 0x95, 0x49, 0x6c, 0x60, 0x83, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x07, 0x8c, 0xf8, 0x26, - 0xca, 0x00, 0x00, 0x00, -} diff --git a/vendor/github.com/gogo/protobuf/types/field_mask.pb.go b/vendor/github.com/gogo/protobuf/types/field_mask.pb.go index 13d61762eb..b2e5f5d8c8 100644 --- a/vendor/github.com/gogo/protobuf/types/field_mask.pb.go +++ b/vendor/github.com/gogo/protobuf/types/field_mask.pb.go @@ -3,16 +3,16 @@ package types -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import bytes "bytes" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + bytes "bytes" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -93,57 +93,49 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package // describe the updated values, the API ignores the values of all // fields not covered by the mask. // -// If a repeated field is specified for an update operation, the existing -// repeated values in the target resource will be overwritten by the new values. -// Note that a repeated field is only allowed in the last position of a `paths` -// string. +// If a repeated field is specified for an update operation, new values will +// be appended to the existing repeated field in the target resource. Note that +// a repeated field is only allowed in the last position of a `paths` string. // // If a sub-message is specified in the last position of the field mask for an -// update operation, then the existing sub-message in the target resource is -// overwritten. Given the target message: +// update operation, then new value will be merged into the existing sub-message +// in the target resource. +// +// For example, given the target message: // // f { // b { -// d : 1 -// x : 2 +// d: 1 +// x: 2 // } -// c : 1 +// c: [1] // } // // And an update message: // // f { // b { -// d : 10 +// d: 10 // } +// c: [2] // } // // then if the field mask is: // -// paths: "f.b" +// paths: ["f.b", "f.c"] // // then the result will be: // // f { // b { -// d : 10 +// d: 10 +// x: 2 // } -// c : 1 +// c: [1, 2] // } // -// However, if the update mask was: -// -// paths: "f.b.d" -// -// then the result would be: -// -// f { -// b { -// d : 10 -// x : 2 -// } -// c : 1 -// } +// An implementation may provide options to override this default behavior for +// repeated and message fields. // // In order to reset a field's value to the default, the field must // be in the mask and set to the default value in the provided resource. @@ -229,12 +221,12 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package // // ## Field Mask Verification // -// The implementation of the all the API methods, which have any FieldMask type -// field in the request, should verify the included field paths, and return +// The implementation of any API method which has a FieldMask type field in the +// request should verify the included field paths, and return an // `INVALID_ARGUMENT` error if any path is duplicated or unmappable. type FieldMask struct { // The set of field mask paths. - Paths []string `protobuf:"bytes,1,rep,name=paths" json:"paths,omitempty"` + Paths []string `protobuf:"bytes,1,rep,name=paths,proto3" json:"paths,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -243,7 +235,7 @@ type FieldMask struct { func (m *FieldMask) Reset() { *m = FieldMask{} } func (*FieldMask) ProtoMessage() {} func (*FieldMask) Descriptor() ([]byte, []int) { - return fileDescriptor_field_mask_3abe20b2f0d4cb1c, []int{0} + return fileDescriptor_5158202634f0da48, []int{0} } func (m *FieldMask) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -253,15 +245,15 @@ func (m *FieldMask) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FieldMask.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *FieldMask) XXX_Merge(src proto.Message) { - xxx_messageInfo_FieldMask.Merge(dst, src) +func (m *FieldMask) XXX_Merge(src proto.Message) { + xxx_messageInfo_FieldMask.Merge(m, src) } func (m *FieldMask) XXX_Size() int { return m.Size() @@ -285,6 +277,26 @@ func (*FieldMask) XXX_MessageName() string { func init() { proto.RegisterType((*FieldMask)(nil), "google.protobuf.FieldMask") } + +func init() { proto.RegisterFile("google/protobuf/field_mask.proto", fileDescriptor_5158202634f0da48) } + +var fileDescriptor_5158202634f0da48 = []byte{ + // 203 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x48, 0xcf, 0xcf, 0x4f, + 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcb, 0x4c, 0xcd, + 0x49, 0x89, 0xcf, 0x4d, 0x2c, 0xce, 0xd6, 0x03, 0x8b, 0x09, 0xf1, 0x43, 0x54, 0xe8, 0xc1, 0x54, + 0x28, 0x29, 0x72, 0x71, 0xba, 0x81, 0x14, 0xf9, 0x26, 0x16, 0x67, 0x0b, 0x89, 0x70, 0xb1, 0x16, + 0x24, 0x96, 0x64, 0x14, 0x4b, 0x30, 0x2a, 0x30, 0x6b, 0x70, 0x06, 0x41, 0x38, 0x4e, 0x1d, 0x8c, + 0x37, 0x1e, 0xca, 0x31, 0x7c, 0x78, 0x28, 0xc7, 0xf8, 0xe3, 0xa1, 0x1c, 0x63, 0xc3, 0x23, 0x39, + 0xc6, 0x15, 0x8f, 0xe4, 0x18, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, + 0x39, 0xc6, 0x17, 0x8f, 0xe4, 0x18, 0x3e, 0x80, 0xc4, 0x1f, 0xcb, 0x31, 0x9e, 0x78, 0x2c, 0xc7, + 0xc8, 0x25, 0x9c, 0x9c, 0x9f, 0xab, 0x87, 0x66, 0x95, 0x13, 0x1f, 0xdc, 0xa2, 0x00, 0x90, 0x50, + 0x00, 0x63, 0x14, 0x6b, 0x49, 0x65, 0x41, 0x6a, 0xf1, 0x0f, 0x46, 0xc6, 0x45, 0x4c, 0xcc, 0xee, + 0x01, 0x4e, 0xab, 0x98, 0xe4, 0xdc, 0x21, 0x7a, 0x02, 0xa0, 0x7a, 0xf4, 0xc2, 0x53, 0x73, 0x72, + 0xbc, 0xf3, 0xf2, 0xcb, 0xf3, 0x42, 0x40, 0x2a, 0x93, 0xd8, 0xc0, 0x86, 0x19, 0x03, 0x02, 0x00, + 0x00, 0xff, 0xff, 0x43, 0xa0, 0x83, 0xd0, 0xe9, 0x00, 0x00, 0x00, +} + func (this *FieldMask) Compare(that interface{}) int { if that == nil { if this == nil { @@ -385,7 +397,7 @@ func valueToGoStringFieldMask(v interface{}, typ string) string { func (m *FieldMask) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -393,39 +405,41 @@ func (m *FieldMask) Marshal() (dAtA []byte, err error) { } func (m *FieldMask) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *FieldMask) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if len(m.Paths) > 0 { - for _, s := range m.Paths { + for iNdEx := len(m.Paths) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Paths[iNdEx]) + copy(dAtA[i:], m.Paths[iNdEx]) + i = encodeVarintFieldMask(dAtA, i, uint64(len(m.Paths[iNdEx]))) + i-- dAtA[i] = 0xa - i++ - l = len(s) - for l >= 1<<7 { - dAtA[i] = uint8(uint64(l)&0x7f | 0x80) - l >>= 7 - i++ - } - dAtA[i] = uint8(l) - i++ - i += copy(dAtA[i:], s) } } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil + return len(dAtA) - i, nil } func encodeVarintFieldMask(dAtA []byte, offset int, v uint64) int { + offset -= sovFieldMask(v) + base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 offset++ } dAtA[offset] = uint8(v) - return offset + 1 + return base } func NewPopulatedFieldMask(r randyFieldMask, easy bool) *FieldMask { this := &FieldMask{} @@ -513,6 +527,9 @@ func encodeVarintPopulateFieldMask(dAtA []byte, v uint64) []byte { return dAtA } func (m *FieldMask) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Paths) > 0 { @@ -528,14 +545,7 @@ func (m *FieldMask) Size() (n int) { } func sovFieldMask(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n + return (math_bits.Len64(x|1) + 6) / 7 } func sozFieldMask(x uint64) (n int) { return sovFieldMask(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -574,7 +584,7 @@ func (m *FieldMask) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -602,7 +612,7 @@ func (m *FieldMask) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -612,6 +622,9 @@ func (m *FieldMask) Unmarshal(dAtA []byte) error { return ErrInvalidLengthFieldMask } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthFieldMask + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -626,6 +639,9 @@ func (m *FieldMask) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthFieldMask } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthFieldMask + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -693,10 +709,13 @@ func skipFieldMask(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthFieldMask } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthFieldMask + } return iNdEx, nil case 3: for { @@ -725,6 +744,9 @@ func skipFieldMask(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthFieldMask + } } return iNdEx, nil case 4: @@ -743,24 +765,3 @@ var ( ErrInvalidLengthFieldMask = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowFieldMask = fmt.Errorf("proto: integer overflow") ) - -func init() { - proto.RegisterFile("google/protobuf/field_mask.proto", fileDescriptor_field_mask_3abe20b2f0d4cb1c) -} - -var fileDescriptor_field_mask_3abe20b2f0d4cb1c = []byte{ - // 204 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x48, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcb, 0x4c, 0xcd, - 0x49, 0x89, 0xcf, 0x4d, 0x2c, 0xce, 0xd6, 0x03, 0x8b, 0x09, 0xf1, 0x43, 0x54, 0xe8, 0xc1, 0x54, - 0x28, 0x29, 0x72, 0x71, 0xba, 0x81, 0x14, 0xf9, 0x26, 0x16, 0x67, 0x0b, 0x89, 0x70, 0xb1, 0x16, - 0x24, 0x96, 0x64, 0x14, 0x4b, 0x30, 0x2a, 0x30, 0x6b, 0x70, 0x06, 0x41, 0x38, 0x4e, 0x9d, 0x8c, - 0x17, 0x1e, 0xca, 0x31, 0xdc, 0x78, 0x28, 0xc7, 0xf0, 0xe1, 0xa1, 0x1c, 0xe3, 0x8f, 0x87, 0x72, - 0x8c, 0x0d, 0x8f, 0xe4, 0x18, 0x57, 0x3c, 0x92, 0x63, 0x3c, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, - 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x5f, 0x3c, 0x92, 0x63, 0xf8, 0x00, 0x12, 0x7f, 0x2c, 0xc7, - 0x78, 0xe2, 0xb1, 0x1c, 0x23, 0x97, 0x70, 0x72, 0x7e, 0xae, 0x1e, 0x9a, 0x75, 0x4e, 0x7c, 0x70, - 0xcb, 0x02, 0x40, 0x42, 0x01, 0x8c, 0x51, 0xac, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x8b, 0x98, 0x98, - 0xdd, 0x03, 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, 0x34, 0x04, 0x40, 0x35, 0xe8, 0x85, 0xa7, 0xe6, - 0xe4, 0x78, 0xe7, 0xe5, 0x97, 0xe7, 0x85, 0x80, 0x94, 0x25, 0xb1, 0x81, 0x4d, 0x32, 0x06, 0x04, - 0x00, 0x00, 0xff, 0xff, 0xea, 0xa6, 0x08, 0xbf, 0xea, 0x00, 0x00, 0x00, -} diff --git a/vendor/github.com/gogo/protobuf/types/protosize.go b/vendor/github.com/gogo/protobuf/types/protosize.go new file mode 100644 index 0000000000..3a2d1b7e11 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/types/protosize.go @@ -0,0 +1,34 @@ +package types + +func (m *Any) ProtoSize() (n int) { return m.Size() } +func (m *Api) ProtoSize() (n int) { return m.Size() } +func (m *Method) ProtoSize() (n int) { return m.Size() } +func (m *Mixin) ProtoSize() (n int) { return m.Size() } +func (m *Duration) ProtoSize() (n int) { return m.Size() } +func (m *Empty) ProtoSize() (n int) { return m.Size() } +func (m *FieldMask) ProtoSize() (n int) { return m.Size() } +func (m *SourceContext) ProtoSize() (n int) { return m.Size() } +func (m *Struct) ProtoSize() (n int) { return m.Size() } +func (m *Value) ProtoSize() (n int) { return m.Size() } +func (m *Value_NullValue) ProtoSize() (n int) { return m.Size() } +func (m *Value_NumberValue) ProtoSize() (n int) { return m.Size() } +func (m *Value_StringValue) ProtoSize() (n int) { return m.Size() } +func (m *Value_BoolValue) ProtoSize() (n int) { return m.Size() } +func (m *Value_StructValue) ProtoSize() (n int) { return m.Size() } +func (m *Value_ListValue) ProtoSize() (n int) { return m.Size() } +func (m *ListValue) ProtoSize() (n int) { return m.Size() } +func (m *Timestamp) ProtoSize() (n int) { return m.Size() } +func (m *Type) ProtoSize() (n int) { return m.Size() } +func (m *Field) ProtoSize() (n int) { return m.Size() } +func (m *Enum) ProtoSize() (n int) { return m.Size() } +func (m *EnumValue) ProtoSize() (n int) { return m.Size() } +func (m *Option) ProtoSize() (n int) { return m.Size() } +func (m *DoubleValue) ProtoSize() (n int) { return m.Size() } +func (m *FloatValue) ProtoSize() (n int) { return m.Size() } +func (m *Int64Value) ProtoSize() (n int) { return m.Size() } +func (m *UInt64Value) ProtoSize() (n int) { return m.Size() } +func (m *Int32Value) ProtoSize() (n int) { return m.Size() } +func (m *UInt32Value) ProtoSize() (n int) { return m.Size() } +func (m *BoolValue) ProtoSize() (n int) { return m.Size() } +func (m *StringValue) ProtoSize() (n int) { return m.Size() } +func (m *BytesValue) ProtoSize() (n int) { return m.Size() } diff --git a/vendor/github.com/gogo/protobuf/types/source_context.pb.go b/vendor/github.com/gogo/protobuf/types/source_context.pb.go index 0c1daf7291..cf01b4c071 100644 --- a/vendor/github.com/gogo/protobuf/types/source_context.pb.go +++ b/vendor/github.com/gogo/protobuf/types/source_context.pb.go @@ -3,16 +3,16 @@ package types -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import bytes "bytes" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + bytes "bytes" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -39,7 +39,7 @@ type SourceContext struct { func (m *SourceContext) Reset() { *m = SourceContext{} } func (*SourceContext) ProtoMessage() {} func (*SourceContext) Descriptor() ([]byte, []int) { - return fileDescriptor_source_context_d25fd312302631f7, []int{0} + return fileDescriptor_b686cdb126d509db, []int{0} } func (m *SourceContext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -49,15 +49,15 @@ func (m *SourceContext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error return xxx_messageInfo_SourceContext.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *SourceContext) XXX_Merge(src proto.Message) { - xxx_messageInfo_SourceContext.Merge(dst, src) +func (m *SourceContext) XXX_Merge(src proto.Message) { + xxx_messageInfo_SourceContext.Merge(m, src) } func (m *SourceContext) XXX_Size() int { return m.Size() @@ -81,6 +81,29 @@ func (*SourceContext) XXX_MessageName() string { func init() { proto.RegisterType((*SourceContext)(nil), "google.protobuf.SourceContext") } + +func init() { + proto.RegisterFile("google/protobuf/source_context.proto", fileDescriptor_b686cdb126d509db) +} + +var fileDescriptor_b686cdb126d509db = []byte{ + // 212 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x49, 0xcf, 0xcf, 0x4f, + 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0xce, 0x2f, 0x2d, + 0x4a, 0x4e, 0x8d, 0x4f, 0xce, 0xcf, 0x2b, 0x49, 0xad, 0x28, 0xd1, 0x03, 0x8b, 0x0b, 0xf1, 0x43, + 0x54, 0xe9, 0xc1, 0x54, 0x29, 0xe9, 0x70, 0xf1, 0x06, 0x83, 0x15, 0x3a, 0x43, 0xd4, 0x09, 0x49, + 0x73, 0x71, 0xa6, 0x65, 0xe6, 0xa4, 0xc6, 0xe7, 0x25, 0xe6, 0xa6, 0x4a, 0x30, 0x2a, 0x30, 0x6a, + 0x70, 0x06, 0x71, 0x80, 0x04, 0xfc, 0x12, 0x73, 0x53, 0x9d, 0x3a, 0x19, 0x6f, 0x3c, 0x94, 0x63, + 0xf8, 0xf0, 0x50, 0x8e, 0xf1, 0xc7, 0x43, 0x39, 0xc6, 0x86, 0x47, 0x72, 0x8c, 0x2b, 0x1e, 0xc9, + 0x31, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x2f, 0x1e, + 0xc9, 0x31, 0x7c, 0x00, 0x89, 0x3f, 0x96, 0x63, 0x3c, 0xf1, 0x58, 0x8e, 0x91, 0x4b, 0x38, 0x39, + 0x3f, 0x57, 0x0f, 0xcd, 0x56, 0x27, 0x21, 0x14, 0x3b, 0x03, 0x40, 0xc2, 0x01, 0x8c, 0x51, 0xac, + 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x8b, 0x98, 0x98, 0xdd, 0x03, 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, + 0x34, 0x05, 0x40, 0x35, 0xe9, 0x85, 0xa7, 0xe6, 0xe4, 0x78, 0xe7, 0xe5, 0x97, 0xe7, 0x85, 0x80, + 0x94, 0x25, 0xb1, 0x81, 0x4d, 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xb8, 0x37, 0x2a, 0xa1, + 0xf9, 0x00, 0x00, 0x00, +} + func (this *SourceContext) Compare(that interface{}) int { if that == nil { if this == nil { @@ -168,7 +191,7 @@ func valueToGoStringSourceContext(v interface{}, typ string) string { func (m *SourceContext) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -176,30 +199,39 @@ func (m *SourceContext) Marshal() (dAtA []byte, err error) { } func (m *SourceContext) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SourceContext) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if len(m.FileName) > 0 { - dAtA[i] = 0xa - i++ + i -= len(m.FileName) + copy(dAtA[i:], m.FileName) i = encodeVarintSourceContext(dAtA, i, uint64(len(m.FileName))) - i += copy(dAtA[i:], m.FileName) - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + i-- + dAtA[i] = 0xa } - return i, nil + return len(dAtA) - i, nil } func encodeVarintSourceContext(dAtA []byte, offset int, v uint64) int { + offset -= sovSourceContext(v) + base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 offset++ } dAtA[offset] = uint8(v) - return offset + 1 + return base } func NewPopulatedSourceContext(r randySourceContext, easy bool) *SourceContext { this := &SourceContext{} @@ -283,6 +315,9 @@ func encodeVarintPopulateSourceContext(dAtA []byte, v uint64) []byte { return dAtA } func (m *SourceContext) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.FileName) @@ -296,14 +331,7 @@ func (m *SourceContext) Size() (n int) { } func sovSourceContext(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n + return (math_bits.Len64(x|1) + 6) / 7 } func sozSourceContext(x uint64) (n int) { return sovSourceContext(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -342,7 +370,7 @@ func (m *SourceContext) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -370,7 +398,7 @@ func (m *SourceContext) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -380,6 +408,9 @@ func (m *SourceContext) Unmarshal(dAtA []byte) error { return ErrInvalidLengthSourceContext } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthSourceContext + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -394,6 +425,9 @@ func (m *SourceContext) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthSourceContext } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthSourceContext + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -461,10 +495,13 @@ func skipSourceContext(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthSourceContext } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthSourceContext + } return iNdEx, nil case 3: for { @@ -493,6 +530,9 @@ func skipSourceContext(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthSourceContext + } } return iNdEx, nil case 4: @@ -511,25 +551,3 @@ var ( ErrInvalidLengthSourceContext = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowSourceContext = fmt.Errorf("proto: integer overflow") ) - -func init() { - proto.RegisterFile("google/protobuf/source_context.proto", fileDescriptor_source_context_d25fd312302631f7) -} - -var fileDescriptor_source_context_d25fd312302631f7 = []byte{ - // 216 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x49, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0xce, 0x2f, 0x2d, - 0x4a, 0x4e, 0x8d, 0x4f, 0xce, 0xcf, 0x2b, 0x49, 0xad, 0x28, 0xd1, 0x03, 0x8b, 0x0b, 0xf1, 0x43, - 0x54, 0xe9, 0xc1, 0x54, 0x29, 0xe9, 0x70, 0xf1, 0x06, 0x83, 0x15, 0x3a, 0x43, 0xd4, 0x09, 0x49, - 0x73, 0x71, 0xa6, 0x65, 0xe6, 0xa4, 0xc6, 0xe7, 0x25, 0xe6, 0xa6, 0x4a, 0x30, 0x2a, 0x30, 0x6a, - 0x70, 0x06, 0x71, 0x80, 0x04, 0xfc, 0x12, 0x73, 0x53, 0x9d, 0x7a, 0x19, 0x2f, 0x3c, 0x94, 0x63, - 0xb8, 0xf1, 0x50, 0x8e, 0xe1, 0xc3, 0x43, 0x39, 0xc6, 0x1f, 0x0f, 0xe5, 0x18, 0x1b, 0x1e, 0xc9, - 0x31, 0xae, 0x78, 0x24, 0xc7, 0x78, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, - 0xc9, 0x31, 0xbe, 0x78, 0x24, 0xc7, 0xf0, 0x01, 0x24, 0xfe, 0x58, 0x8e, 0xf1, 0xc4, 0x63, 0x39, - 0x46, 0x2e, 0xe1, 0xe4, 0xfc, 0x5c, 0x3d, 0x34, 0x9b, 0x9d, 0x84, 0x50, 0xec, 0x0d, 0x00, 0x09, - 0x07, 0x30, 0x46, 0xb1, 0x96, 0x54, 0x16, 0xa4, 0x16, 0x2f, 0x62, 0x62, 0x76, 0x0f, 0x70, 0x5a, - 0xc5, 0x24, 0xe7, 0x0e, 0xd1, 0x14, 0x00, 0xd5, 0xa4, 0x17, 0x9e, 0x9a, 0x93, 0xe3, 0x9d, 0x97, - 0x5f, 0x9e, 0x17, 0x02, 0x52, 0x96, 0xc4, 0x06, 0x36, 0xcd, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, - 0x86, 0x8b, 0x02, 0xb9, 0xfd, 0x00, 0x00, 0x00, -} diff --git a/vendor/github.com/gogo/protobuf/types/struct.pb.go b/vendor/github.com/gogo/protobuf/types/struct.pb.go index 659f2e5e8d..261f12fc0d 100644 --- a/vendor/github.com/gogo/protobuf/types/struct.pb.go +++ b/vendor/github.com/gogo/protobuf/types/struct.pb.go @@ -3,21 +3,19 @@ package types -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import strconv "strconv" - -import bytes "bytes" - -import strings "strings" -import reflect "reflect" -import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" - -import encoding_binary "encoding/binary" - -import io "io" +import ( + bytes "bytes" + encoding_binary "encoding/binary" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" + io "io" + math "math" + math_bits "math/bits" + reflect "reflect" + strconv "strconv" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -38,19 +36,21 @@ type NullValue int32 const ( // Null value. - NULL_VALUE NullValue = 0 + NullValue_NULL_VALUE NullValue = 0 ) var NullValue_name = map[int32]string{ 0: "NULL_VALUE", } + var NullValue_value = map[string]int32{ "NULL_VALUE": 0, } func (NullValue) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_struct_e8dc68d36b73896c, []int{0} + return fileDescriptor_df322afd6c9fb402, []int{0} } + func (NullValue) XXX_WellKnownType() string { return "NullValue" } // `Struct` represents a structured data value, consisting of fields @@ -63,7 +63,7 @@ func (NullValue) XXX_WellKnownType() string { return "NullValue" } // The JSON representation for `Struct` is JSON object. type Struct struct { // Unordered map of dynamically typed values. - Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"` + Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -72,7 +72,7 @@ type Struct struct { func (m *Struct) Reset() { *m = Struct{} } func (*Struct) ProtoMessage() {} func (*Struct) Descriptor() ([]byte, []int) { - return fileDescriptor_struct_e8dc68d36b73896c, []int{0} + return fileDescriptor_df322afd6c9fb402, []int{0} } func (*Struct) XXX_WellKnownType() string { return "Struct" } func (m *Struct) XXX_Unmarshal(b []byte) error { @@ -83,15 +83,15 @@ func (m *Struct) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Struct.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Struct) XXX_Merge(src proto.Message) { - xxx_messageInfo_Struct.Merge(dst, src) +func (m *Struct) XXX_Merge(src proto.Message) { + xxx_messageInfo_Struct.Merge(m, src) } func (m *Struct) XXX_Size() int { return m.Size() @@ -138,7 +138,7 @@ type Value struct { func (m *Value) Reset() { *m = Value{} } func (*Value) ProtoMessage() {} func (*Value) Descriptor() ([]byte, []int) { - return fileDescriptor_struct_e8dc68d36b73896c, []int{1} + return fileDescriptor_df322afd6c9fb402, []int{1} } func (*Value) XXX_WellKnownType() string { return "Value" } func (m *Value) XXX_Unmarshal(b []byte) error { @@ -149,15 +149,15 @@ func (m *Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Value.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Value) XXX_Merge(src proto.Message) { - xxx_messageInfo_Value.Merge(dst, src) +func (m *Value) XXX_Merge(src proto.Message) { + xxx_messageInfo_Value.Merge(m, src) } func (m *Value) XXX_Size() int { return m.Size() @@ -188,10 +188,10 @@ type Value_BoolValue struct { BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"` } type Value_StructValue struct { - StructValue *Struct `protobuf:"bytes,5,opt,name=struct_value,json=structValue,oneof"` + StructValue *Struct `protobuf:"bytes,5,opt,name=struct_value,json=structValue,proto3,oneof"` } type Value_ListValue struct { - ListValue *ListValue `protobuf:"bytes,6,opt,name=list_value,json=listValue,oneof"` + ListValue *ListValue `protobuf:"bytes,6,opt,name=list_value,json=listValue,proto3,oneof"` } func (*Value_NullValue) isValue_Kind() {} @@ -212,7 +212,7 @@ func (m *Value) GetNullValue() NullValue { if x, ok := m.GetKind().(*Value_NullValue); ok { return x.NullValue } - return NULL_VALUE + return NullValue_NULL_VALUE } func (m *Value) GetNumberValue() float64 { @@ -394,7 +394,7 @@ func (*Value) XXX_MessageName() string { // The JSON representation for `ListValue` is JSON array. type ListValue struct { // Repeated field of dynamically typed values. - Values []*Value `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` + Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -403,7 +403,7 @@ type ListValue struct { func (m *ListValue) Reset() { *m = ListValue{} } func (*ListValue) ProtoMessage() {} func (*ListValue) Descriptor() ([]byte, []int) { - return fileDescriptor_struct_e8dc68d36b73896c, []int{2} + return fileDescriptor_df322afd6c9fb402, []int{2} } func (*ListValue) XXX_WellKnownType() string { return "ListValue" } func (m *ListValue) XXX_Unmarshal(b []byte) error { @@ -414,15 +414,15 @@ func (m *ListValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ListValue.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *ListValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListValue.Merge(dst, src) +func (m *ListValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_ListValue.Merge(m, src) } func (m *ListValue) XXX_Size() int { return m.Size() @@ -444,12 +444,47 @@ func (*ListValue) XXX_MessageName() string { return "google.protobuf.ListValue" } func init() { + proto.RegisterEnum("google.protobuf.NullValue", NullValue_name, NullValue_value) proto.RegisterType((*Struct)(nil), "google.protobuf.Struct") proto.RegisterMapType((map[string]*Value)(nil), "google.protobuf.Struct.FieldsEntry") proto.RegisterType((*Value)(nil), "google.protobuf.Value") proto.RegisterType((*ListValue)(nil), "google.protobuf.ListValue") - proto.RegisterEnum("google.protobuf.NullValue", NullValue_name, NullValue_value) } + +func init() { proto.RegisterFile("google/protobuf/struct.proto", fileDescriptor_df322afd6c9fb402) } + +var fileDescriptor_df322afd6c9fb402 = []byte{ + // 439 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0xc1, 0x6b, 0xd4, 0x40, + 0x14, 0xc6, 0xf3, 0xb2, 0xdd, 0xe0, 0xbe, 0x48, 0x2d, 0x23, 0xe8, 0x52, 0x65, 0x5c, 0xb6, 0x97, + 0x45, 0x24, 0x85, 0xf5, 0x22, 0xae, 0x17, 0x17, 0x6a, 0x0b, 0x86, 0x12, 0xa3, 0xad, 0xe0, 0x65, + 0x31, 0x69, 0xba, 0x84, 0x4e, 0x67, 0x4a, 0x32, 0xa3, 0xec, 0x4d, 0xff, 0x0b, 0xcf, 0x9e, 0xc4, + 0xa3, 0x7f, 0x85, 0x47, 0x8f, 0x1e, 0xdd, 0x78, 0xf1, 0xd8, 0x63, 0x8f, 0x32, 0x33, 0x49, 0x94, + 0x2e, 0xbd, 0xe5, 0x7d, 0xf3, 0x7b, 0xdf, 0x7b, 0xdf, 0x0b, 0xde, 0x9d, 0x0b, 0x31, 0x67, 0xd9, + 0xf6, 0x59, 0x21, 0xa4, 0x48, 0xd4, 0xf1, 0x76, 0x29, 0x0b, 0x95, 0xca, 0xc0, 0xd4, 0xe4, 0x86, + 0x7d, 0x0d, 0x9a, 0xd7, 0xe1, 0x27, 0x40, 0xef, 0xa5, 0x21, 0xc8, 0x04, 0xbd, 0xe3, 0x3c, 0x63, + 0x47, 0x65, 0x1f, 0x06, 0x9d, 0x91, 0x3f, 0xde, 0x0a, 0x2e, 0xc1, 0x81, 0x05, 0x83, 0x67, 0x86, + 0xda, 0xe1, 0xb2, 0x58, 0xc4, 0x75, 0xcb, 0xe6, 0x0b, 0xf4, 0xff, 0x93, 0xc9, 0x06, 0x76, 0x4e, + 0xb2, 0x45, 0x1f, 0x06, 0x30, 0xea, 0xc5, 0xfa, 0x93, 0x3c, 0xc0, 0xee, 0xbb, 0xb7, 0x4c, 0x65, + 0x7d, 0x77, 0x00, 0x23, 0x7f, 0x7c, 0x6b, 0xc5, 0xfc, 0x50, 0xbf, 0xc6, 0x16, 0x7a, 0xec, 0x3e, + 0x82, 0xe1, 0x37, 0x17, 0xbb, 0x46, 0x24, 0x13, 0x44, 0xae, 0x18, 0x9b, 0x59, 0x03, 0x6d, 0xba, + 0x3e, 0xde, 0x5c, 0x31, 0xd8, 0x57, 0x8c, 0x19, 0x7e, 0xcf, 0x89, 0x7b, 0xbc, 0x29, 0xc8, 0x16, + 0x5e, 0xe7, 0xea, 0x34, 0xc9, 0x8a, 0xd9, 0xbf, 0xf9, 0xb0, 0xe7, 0xc4, 0xbe, 0x55, 0x5b, 0xa8, + 0x94, 0x45, 0xce, 0xe7, 0x35, 0xd4, 0xd1, 0x8b, 0x6b, 0xc8, 0xaa, 0x16, 0xba, 0x87, 0x98, 0x08, + 0xd1, 0xac, 0xb1, 0x36, 0x80, 0xd1, 0x35, 0x3d, 0x4a, 0x6b, 0x16, 0x78, 0x62, 0x5c, 0x54, 0x2a, + 0x6b, 0xa4, 0x6b, 0xa2, 0xde, 0xbe, 0xe2, 0x8e, 0xb5, 0xbd, 0x4a, 0x65, 0x9b, 0x92, 0xe5, 0x65, + 0xd3, 0xeb, 0x99, 0xde, 0xd5, 0x94, 0x61, 0x5e, 0xca, 0x36, 0x25, 0x6b, 0x8a, 0xa9, 0x87, 0x6b, + 0x27, 0x39, 0x3f, 0x1a, 0x4e, 0xb0, 0xd7, 0x12, 0x24, 0x40, 0xcf, 0x98, 0x35, 0x7f, 0xf4, 0xaa, + 0xa3, 0xd7, 0xd4, 0xfd, 0x3b, 0xd8, 0x6b, 0x8f, 0x48, 0xd6, 0x11, 0xf7, 0x0f, 0xc2, 0x70, 0x76, + 0xf8, 0x34, 0x3c, 0xd8, 0xd9, 0x70, 0xa6, 0x1f, 0xe1, 0xe7, 0x92, 0x3a, 0xe7, 0x4b, 0x0a, 0x17, + 0x4b, 0x0a, 0x1f, 0x2a, 0x0a, 0x5f, 0x2a, 0x0a, 0xdf, 0x2b, 0x0a, 0x3f, 0x2a, 0x0a, 0xbf, 0x2a, + 0x0a, 0x7f, 0x2a, 0xea, 0x9c, 0x6b, 0xed, 0x37, 0x05, 0xbc, 0x99, 0x8a, 0xd3, 0xcb, 0xe3, 0xa6, + 0xbe, 0x4d, 0x1e, 0xe9, 0x3a, 0x82, 0x37, 0x5d, 0xb9, 0x38, 0xcb, 0xca, 0x0b, 0x80, 0xcf, 0x6e, + 0x67, 0x37, 0x9a, 0x7e, 0x75, 0xe9, 0xae, 0x6d, 0x88, 0x9a, 0xfd, 0x5e, 0x67, 0x8c, 0x3d, 0xe7, + 0xe2, 0x3d, 0x7f, 0xa5, 0xc9, 0xc4, 0x33, 0x4e, 0x0f, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xad, + 0x84, 0x08, 0xae, 0xe5, 0x02, 0x00, 0x00, +} + func (x NullValue) String() string { s, ok := NullValue_name[int32(x)] if ok { @@ -812,7 +847,7 @@ func valueToGoStringStruct(v interface{}, typ string) string { func (m *Struct) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -820,48 +855,52 @@ func (m *Struct) Marshal() (dAtA []byte, err error) { } func (m *Struct) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Struct) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if len(m.Fields) > 0 { for k := range m.Fields { - dAtA[i] = 0xa - i++ v := m.Fields[k] - msgSize := 0 + baseI := i if v != nil { - msgSize = v.Size() - msgSize += 1 + sovStruct(uint64(msgSize)) - } - mapSize := 1 + len(k) + sovStruct(uint64(len(k))) + msgSize - i = encodeVarintStruct(dAtA, i, uint64(mapSize)) - dAtA[i] = 0xa - i++ - i = encodeVarintStruct(dAtA, i, uint64(len(k))) - i += copy(dAtA[i:], k) - if v != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintStruct(dAtA, i, uint64(v.Size())) - n1, err := v.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + { + size, err := v.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintStruct(dAtA, i, uint64(size)) } - i += n1 + i-- + dAtA[i] = 0x12 } + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintStruct(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintStruct(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0xa } } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil + return len(dAtA) - i, nil } func (m *Value) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -869,90 +908,127 @@ func (m *Value) Marshal() (dAtA []byte, err error) { } func (m *Value) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Value) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if m.Kind != nil { - nn2, err := m.Kind.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + { + size := m.Kind.Size() + i -= size + if _, err := m.Kind.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } } - i += nn2 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil + return len(dAtA) - i, nil } func (m *Value_NullValue) MarshalTo(dAtA []byte) (int, error) { - i := 0 - dAtA[i] = 0x8 - i++ + return m.MarshalToSizedBuffer(dAtA[:m.Size()]) +} + +func (m *Value_NullValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) i = encodeVarintStruct(dAtA, i, uint64(m.NullValue)) - return i, nil + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil } func (m *Value_NumberValue) MarshalTo(dAtA []byte) (int, error) { - i := 0 - dAtA[i] = 0x11 - i++ + return m.MarshalToSizedBuffer(dAtA[:m.Size()]) +} + +func (m *Value_NumberValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + i -= 8 encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.NumberValue)))) - i += 8 - return i, nil + i-- + dAtA[i] = 0x11 + return len(dAtA) - i, nil } func (m *Value_StringValue) MarshalTo(dAtA []byte) (int, error) { - i := 0 - dAtA[i] = 0x1a - i++ + return m.MarshalToSizedBuffer(dAtA[:m.Size()]) +} + +func (m *Value_StringValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + i -= len(m.StringValue) + copy(dAtA[i:], m.StringValue) i = encodeVarintStruct(dAtA, i, uint64(len(m.StringValue))) - i += copy(dAtA[i:], m.StringValue) - return i, nil + i-- + dAtA[i] = 0x1a + return len(dAtA) - i, nil } func (m *Value_BoolValue) MarshalTo(dAtA []byte) (int, error) { - i := 0 - dAtA[i] = 0x20 - i++ + return m.MarshalToSizedBuffer(dAtA[:m.Size()]) +} + +func (m *Value_BoolValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + i-- if m.BoolValue { dAtA[i] = 1 } else { dAtA[i] = 0 } - i++ - return i, nil + i-- + dAtA[i] = 0x20 + return len(dAtA) - i, nil } func (m *Value_StructValue) MarshalTo(dAtA []byte) (int, error) { - i := 0 + return m.MarshalToSizedBuffer(dAtA[:m.Size()]) +} + +func (m *Value_StructValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) if m.StructValue != nil { - dAtA[i] = 0x2a - i++ - i = encodeVarintStruct(dAtA, i, uint64(m.StructValue.Size())) - n3, err := m.StructValue.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + { + size, err := m.StructValue.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintStruct(dAtA, i, uint64(size)) } - i += n3 + i-- + dAtA[i] = 0x2a } - return i, nil + return len(dAtA) - i, nil } func (m *Value_ListValue) MarshalTo(dAtA []byte) (int, error) { - i := 0 + return m.MarshalToSizedBuffer(dAtA[:m.Size()]) +} + +func (m *Value_ListValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) if m.ListValue != nil { - dAtA[i] = 0x32 - i++ - i = encodeVarintStruct(dAtA, i, uint64(m.ListValue.Size())) - n4, err := m.ListValue.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + { + size, err := m.ListValue.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintStruct(dAtA, i, uint64(size)) } - i += n4 + i-- + dAtA[i] = 0x32 } - return i, nil + return len(dAtA) - i, nil } func (m *ListValue) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -960,40 +1036,50 @@ func (m *ListValue) Marshal() (dAtA []byte, err error) { } func (m *ListValue) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ListValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if len(m.Values) > 0 { - for _, msg := range m.Values { - dAtA[i] = 0xa - i++ - i = encodeVarintStruct(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + for iNdEx := len(m.Values) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Values[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintStruct(dAtA, i, uint64(size)) } - i += n + i-- + dAtA[i] = 0xa } } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil + return len(dAtA) - i, nil } func encodeVarintStruct(dAtA []byte, offset int, v uint64) int { + offset -= sovStruct(v) + base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 offset++ } dAtA[offset] = uint8(v) - return offset + 1 + return base } func NewPopulatedStruct(r randyStruct, easy bool) *Struct { this := &Struct{} - if r.Intn(10) == 0 { + if r.Intn(5) == 0 { v1 := r.Intn(10) this.Fields = make(map[string]*Value) for i := 0; i < v1; i++ { @@ -1064,7 +1150,7 @@ func NewPopulatedValue_ListValue(r randyStruct, easy bool) *Value_ListValue { } func NewPopulatedListValue(r randyStruct, easy bool) *ListValue { this := &ListValue{} - if r.Intn(10) == 0 { + if r.Intn(5) == 0 { v2 := r.Intn(5) this.Values = make([]*Value, v2) for i := 0; i < v2; i++ { @@ -1150,6 +1236,9 @@ func encodeVarintPopulateStruct(dAtA []byte, v uint64) []byte { return dAtA } func (m *Struct) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Fields) > 0 { @@ -1172,6 +1261,9 @@ func (m *Struct) Size() (n int) { } func (m *Value) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Kind != nil { @@ -1184,18 +1276,27 @@ func (m *Value) Size() (n int) { } func (m *Value_NullValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 1 + sovStruct(uint64(m.NullValue)) return n } func (m *Value_NumberValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 9 return n } func (m *Value_StringValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.StringValue) @@ -1203,12 +1304,18 @@ func (m *Value_StringValue) Size() (n int) { return n } func (m *Value_BoolValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l n += 2 return n } func (m *Value_StructValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.StructValue != nil { @@ -1218,6 +1325,9 @@ func (m *Value_StructValue) Size() (n int) { return n } func (m *Value_ListValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.ListValue != nil { @@ -1227,6 +1337,9 @@ func (m *Value_ListValue) Size() (n int) { return n } func (m *ListValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if len(m.Values) > 0 { @@ -1242,14 +1355,7 @@ func (m *ListValue) Size() (n int) { } func sovStruct(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n + return (math_bits.Len64(x|1) + 6) / 7 } func sozStruct(x uint64) (n int) { return sovStruct(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -1350,8 +1456,13 @@ func (this *ListValue) String() string { if this == nil { return "nil" } + repeatedStringForValues := "[]*Value{" + for _, f := range this.Values { + repeatedStringForValues += strings.Replace(f.String(), "Value", "Value", 1) + "," + } + repeatedStringForValues += "}" s := strings.Join([]string{`&ListValue{`, - `Values:` + strings.Replace(fmt.Sprintf("%v", this.Values), "Value", "Value", 1) + `,`, + `Values:` + repeatedStringForValues + `,`, `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, `}`, }, "") @@ -1380,7 +1491,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1408,7 +1519,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1417,6 +1528,9 @@ func (m *Struct) Unmarshal(dAtA []byte) error { return ErrInvalidLengthStruct } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthStruct + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1437,7 +1551,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1454,7 +1568,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift + stringLenmapkey |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1464,6 +1578,9 @@ func (m *Struct) Unmarshal(dAtA []byte) error { return ErrInvalidLengthStruct } postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthStruct + } if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } @@ -1480,7 +1597,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - mapmsglen |= (int(b) & 0x7F) << shift + mapmsglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1489,7 +1606,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error { return ErrInvalidLengthStruct } postmsgIndex := iNdEx + mapmsglen - if mapmsglen < 0 { + if postmsgIndex < 0 { return ErrInvalidLengthStruct } if postmsgIndex > l { @@ -1526,6 +1643,9 @@ func (m *Struct) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthStruct } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthStruct + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1554,7 +1674,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1582,7 +1702,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (NullValue(b) & 0x7F) << shift + v |= NullValue(b&0x7F) << shift if b < 0x80 { break } @@ -1613,7 +1733,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1623,6 +1743,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { return ErrInvalidLengthStruct } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthStruct + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1642,7 +1765,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1663,7 +1786,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1672,6 +1795,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { return ErrInvalidLengthStruct } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthStruct + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1695,7 +1821,7 @@ func (m *Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1704,6 +1830,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { return ErrInvalidLengthStruct } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthStruct + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1722,6 +1851,9 @@ func (m *Value) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthStruct } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthStruct + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1750,7 +1882,7 @@ func (m *ListValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1778,7 +1910,7 @@ func (m *ListValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -1787,6 +1919,9 @@ func (m *ListValue) Unmarshal(dAtA []byte) error { return ErrInvalidLengthStruct } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthStruct + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -1804,6 +1939,9 @@ func (m *ListValue) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthStruct } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthStruct + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1871,10 +2009,13 @@ func skipStruct(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthStruct } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthStruct + } return iNdEx, nil case 3: for { @@ -1903,6 +2044,9 @@ func skipStruct(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthStruct + } } return iNdEx, nil case 4: @@ -1921,39 +2065,3 @@ var ( ErrInvalidLengthStruct = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowStruct = fmt.Errorf("proto: integer overflow") ) - -func init() { - proto.RegisterFile("google/protobuf/struct.proto", fileDescriptor_struct_e8dc68d36b73896c) -} - -var fileDescriptor_struct_e8dc68d36b73896c = []byte{ - // 443 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0xb1, 0x6f, 0xd3, 0x40, - 0x14, 0xc6, 0xfd, 0x9c, 0xc6, 0x22, 0xcf, 0xa8, 0x54, 0x87, 0x04, 0x51, 0x41, 0x47, 0x94, 0x2e, - 0x11, 0x42, 0xae, 0x14, 0x16, 0x44, 0x58, 0x88, 0x54, 0x5a, 0x89, 0xa8, 0x0a, 0x86, 0x16, 0x89, - 0x25, 0xc2, 0xae, 0x1b, 0x59, 0xbd, 0xde, 0x55, 0xf6, 0x1d, 0x28, 0x1b, 0x0b, 0xff, 0x03, 0x33, - 0x13, 0x62, 0xe4, 0xaf, 0x60, 0xec, 0xc8, 0x88, 0xcd, 0xc2, 0xd8, 0xb1, 0x23, 0xba, 0x3b, 0xdb, - 0x54, 0x8d, 0xb2, 0xf9, 0x7d, 0xf7, 0x7b, 0xdf, 0x7b, 0xdf, 0x33, 0xde, 0x9f, 0x0b, 0x31, 0x67, - 0xc9, 0xf6, 0x59, 0x26, 0xa4, 0x88, 0xd4, 0xf1, 0x76, 0x2e, 0x33, 0x15, 0xcb, 0xc0, 0xd4, 0xe4, - 0x96, 0x7d, 0x0d, 0xea, 0xd7, 0xfe, 0x17, 0x40, 0xef, 0xb5, 0x21, 0xc8, 0x08, 0xbd, 0xe3, 0x34, - 0x61, 0x47, 0x79, 0x17, 0x7a, 0xad, 0x81, 0x3f, 0xdc, 0x0a, 0xae, 0xc1, 0x81, 0x05, 0x83, 0x17, - 0x86, 0xda, 0xe1, 0x32, 0x5b, 0x84, 0x55, 0xcb, 0xe6, 0x2b, 0xf4, 0xaf, 0xc8, 0x64, 0x03, 0x5b, - 0x27, 0xc9, 0xa2, 0x0b, 0x3d, 0x18, 0x74, 0x42, 0xfd, 0x49, 0x1e, 0x61, 0xfb, 0xc3, 0x7b, 0xa6, - 0x92, 0xae, 0xdb, 0x83, 0x81, 0x3f, 0xbc, 0xb3, 0x64, 0x7e, 0xa8, 0x5f, 0x43, 0x0b, 0x3d, 0x75, - 0x9f, 0x40, 0xff, 0x87, 0x8b, 0x6d, 0x23, 0x92, 0x11, 0x22, 0x57, 0x8c, 0xcd, 0xac, 0x81, 0x36, - 0x5d, 0x1f, 0x6e, 0x2e, 0x19, 0xec, 0x2b, 0xc6, 0x0c, 0xbf, 0xe7, 0x84, 0x1d, 0x5e, 0x17, 0x64, - 0x0b, 0x6f, 0x72, 0x75, 0x1a, 0x25, 0xd9, 0xec, 0xff, 0x7c, 0xd8, 0x73, 0x42, 0xdf, 0xaa, 0x0d, - 0x94, 0xcb, 0x2c, 0xe5, 0xf3, 0x0a, 0x6a, 0xe9, 0xc5, 0x35, 0x64, 0x55, 0x0b, 0x3d, 0x40, 0x8c, - 0x84, 0xa8, 0xd7, 0x58, 0xeb, 0xc1, 0xe0, 0x86, 0x1e, 0xa5, 0x35, 0x0b, 0x3c, 0x33, 0x2e, 0x2a, - 0x96, 0x15, 0xd2, 0x36, 0x51, 0xef, 0xae, 0xb8, 0x63, 0x65, 0xaf, 0x62, 0xd9, 0xa4, 0x64, 0x69, - 0x5e, 0xf7, 0x7a, 0xa6, 0x77, 0x39, 0xe5, 0x24, 0xcd, 0x65, 0x93, 0x92, 0xd5, 0xc5, 0xd8, 0xc3, - 0xb5, 0x93, 0x94, 0x1f, 0xf5, 0x47, 0xd8, 0x69, 0x08, 0x12, 0xa0, 0x67, 0xcc, 0xea, 0x3f, 0xba, - 0xea, 0xe8, 0x15, 0xf5, 0xf0, 0x1e, 0x76, 0x9a, 0x23, 0x92, 0x75, 0xc4, 0xfd, 0x83, 0xc9, 0x64, - 0x76, 0xf8, 0x7c, 0x72, 0xb0, 0xb3, 0xe1, 0x8c, 0x3f, 0xc3, 0x79, 0x41, 0x9d, 0x5f, 0x05, 0x75, - 0x2e, 0x0a, 0x0a, 0x97, 0x05, 0x85, 0x4f, 0x25, 0x85, 0x6f, 0x25, 0x85, 0x9f, 0x25, 0x85, 0xf3, - 0x92, 0xc2, 0xef, 0x92, 0xc2, 0xdf, 0x92, 0x3a, 0x17, 0x5a, 0xfb, 0x43, 0x01, 0x6f, 0xc7, 0xe2, - 0xf4, 0xfa, 0xc8, 0xb1, 0x6f, 0xd3, 0x4f, 0x75, 0x3d, 0x85, 0x77, 0x6d, 0xb9, 0x38, 0x4b, 0xf2, - 0x4b, 0x80, 0xaf, 0x6e, 0x6b, 0x77, 0x3a, 0xfe, 0xee, 0xd2, 0x5d, 0xdb, 0x30, 0xad, 0x77, 0x7c, - 0x9b, 0x30, 0xf6, 0x92, 0x8b, 0x8f, 0xfc, 0x8d, 0x26, 0x23, 0xcf, 0x38, 0x3d, 0xfe, 0x17, 0x00, - 0x00, 0xff, 0xff, 0x9f, 0x67, 0xad, 0xcf, 0xe9, 0x02, 0x00, 0x00, -} diff --git a/vendor/github.com/gogo/protobuf/types/timestamp.go b/vendor/github.com/gogo/protobuf/types/timestamp.go index 7ae54d8b3f..232ada57ce 100644 --- a/vendor/github.com/gogo/protobuf/types/timestamp.go +++ b/vendor/github.com/gogo/protobuf/types/timestamp.go @@ -109,11 +109,9 @@ func TimestampNow() *Timestamp { // TimestampProto converts the time.Time to a google.protobuf.Timestamp proto. // It returns an error if the resulting Timestamp is invalid. func TimestampProto(t time.Time) (*Timestamp, error) { - seconds := t.Unix() - nanos := int32(t.Sub(time.Unix(seconds, 0))) ts := &Timestamp{ - Seconds: seconds, - Nanos: nanos, + Seconds: t.Unix(), + Nanos: int32(t.Nanosecond()), } if err := validateTimestamp(ts); err != nil { return nil, err diff --git a/vendor/github.com/gogo/protobuf/types/timestamp.pb.go b/vendor/github.com/gogo/protobuf/types/timestamp.pb.go index e0476675eb..928d2511a1 100644 --- a/vendor/github.com/gogo/protobuf/types/timestamp.pb.go +++ b/vendor/github.com/gogo/protobuf/types/timestamp.pb.go @@ -3,16 +3,16 @@ package types -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import bytes "bytes" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + bytes "bytes" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -25,17 +25,19 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package -// A Timestamp represents a point in time independent of any time zone -// or calendar, represented as seconds and fractions of seconds at -// nanosecond resolution in UTC Epoch time. It is encoded using the -// Proleptic Gregorian Calendar which extends the Gregorian calendar -// backwards to year one. It is encoded assuming all minutes are 60 -// seconds long, i.e. leap seconds are "smeared" so that no leap second -// table is needed for interpretation. Range is from -// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. -// By restricting to that range, we ensure that we can convert to -// and from RFC 3339 date strings. -// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). +// A Timestamp represents a point in time independent of any time zone or local +// calendar, encoded as a count of seconds and fractions of seconds at +// nanosecond resolution. The count is relative to an epoch at UTC midnight on +// January 1, 1970, in the proleptic Gregorian calendar which extends the +// Gregorian calendar backwards to year one. +// +// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap +// second table is needed for interpretation, using a [24-hour linear +// smear](https://developers.google.com/time/smear). +// +// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By +// restricting to that range, we ensure that we can convert to and from [RFC +// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. // // # Examples // @@ -96,12 +98,12 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package // 01:30 UTC on January 15, 2017. // // In JavaScript, one can convert a Date object to this format using the -// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] +// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) // method. In Python, a standard `datetime.datetime` object can be converted // to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) // with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one // can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime-- +// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D // ) to obtain a formatter capable of generating timestamps in this format. // // @@ -123,7 +125,7 @@ type Timestamp struct { func (m *Timestamp) Reset() { *m = Timestamp{} } func (*Timestamp) ProtoMessage() {} func (*Timestamp) Descriptor() ([]byte, []int) { - return fileDescriptor_timestamp_0a0a9bc758317e91, []int{0} + return fileDescriptor_292007bbfe81227e, []int{0} } func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" } func (m *Timestamp) XXX_Unmarshal(b []byte) error { @@ -134,15 +136,15 @@ func (m *Timestamp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Timestamp.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Timestamp) XXX_Merge(src proto.Message) { - xxx_messageInfo_Timestamp.Merge(dst, src) +func (m *Timestamp) XXX_Merge(src proto.Message) { + xxx_messageInfo_Timestamp.Merge(m, src) } func (m *Timestamp) XXX_Size() int { return m.Size() @@ -173,6 +175,27 @@ func (*Timestamp) XXX_MessageName() string { func init() { proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp") } + +func init() { proto.RegisterFile("google/protobuf/timestamp.proto", fileDescriptor_292007bbfe81227e) } + +var fileDescriptor_292007bbfe81227e = []byte{ + // 212 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xcf, 0xcf, 0x4f, + 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0xc9, 0xcc, 0x4d, + 0x2d, 0x2e, 0x49, 0xcc, 0x2d, 0xd0, 0x03, 0x0b, 0x09, 0xf1, 0x43, 0x14, 0xe8, 0xc1, 0x14, 0x28, + 0x59, 0x73, 0x71, 0x86, 0xc0, 0xd4, 0x08, 0x49, 0x70, 0xb1, 0x17, 0xa7, 0x26, 0xe7, 0xe7, 0xa5, + 0x14, 0x4b, 0x30, 0x2a, 0x30, 0x6a, 0x30, 0x07, 0xc1, 0xb8, 0x42, 0x22, 0x5c, 0xac, 0x79, 0x89, + 0x79, 0xf9, 0xc5, 0x12, 0x4c, 0x0a, 0x8c, 0x1a, 0xac, 0x41, 0x10, 0x8e, 0x53, 0x03, 0xe3, 0x8d, + 0x87, 0x72, 0x0c, 0x1f, 0x1e, 0xca, 0x31, 0xae, 0x78, 0x24, 0xc7, 0x78, 0xe2, 0x91, 0x1c, 0xe3, + 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0xbe, 0x78, 0x24, 0xc7, 0xf0, 0xe1, 0x91, 0x1c, + 0xe3, 0x8a, 0xc7, 0x72, 0x8c, 0x27, 0x1e, 0xcb, 0x31, 0x72, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, + 0x59, 0xee, 0xc4, 0x07, 0xb7, 0x3a, 0x00, 0x24, 0x14, 0xc0, 0x18, 0xc5, 0x5a, 0x52, 0x59, 0x90, + 0x5a, 0xfc, 0x83, 0x91, 0x71, 0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, + 0x9e, 0x00, 0xa8, 0x1e, 0xbd, 0xf0, 0xd4, 0x9c, 0x1c, 0xef, 0xbc, 0xfc, 0xf2, 0xbc, 0x10, 0x90, + 0xca, 0x24, 0x36, 0xb0, 0x61, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0b, 0x23, 0x83, 0xdd, + 0xfa, 0x00, 0x00, 0x00, +} + func (this *Timestamp) Compare(that interface{}) int { if that == nil { if this == nil { @@ -270,7 +293,7 @@ func valueToGoStringTimestamp(v interface{}, typ string) string { func (m *Timestamp) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -278,36 +301,47 @@ func (m *Timestamp) Marshal() (dAtA []byte, err error) { } func (m *Timestamp) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Timestamp) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l - if m.Seconds != 0 { - dAtA[i] = 0x8 - i++ - i = encodeVarintTimestamp(dAtA, i, uint64(m.Seconds)) + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } if m.Nanos != 0 { - dAtA[i] = 0x10 - i++ i = encodeVarintTimestamp(dAtA, i, uint64(m.Nanos)) + i-- + dAtA[i] = 0x10 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if m.Seconds != 0 { + i = encodeVarintTimestamp(dAtA, i, uint64(m.Seconds)) + i-- + dAtA[i] = 0x8 } - return i, nil + return len(dAtA) - i, nil } func encodeVarintTimestamp(dAtA []byte, offset int, v uint64) int { + offset -= sovTimestamp(v) + base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 offset++ } dAtA[offset] = uint8(v) - return offset + 1 + return base } func (m *Timestamp) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Seconds != 0 { @@ -323,14 +357,7 @@ func (m *Timestamp) Size() (n int) { } func sovTimestamp(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n + return (math_bits.Len64(x|1) + 6) / 7 } func sozTimestamp(x uint64) (n int) { return sovTimestamp(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -350,7 +377,7 @@ func (m *Timestamp) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -378,7 +405,7 @@ func (m *Timestamp) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Seconds |= (int64(b) & 0x7F) << shift + m.Seconds |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -397,7 +424,7 @@ func (m *Timestamp) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Nanos |= (int32(b) & 0x7F) << shift + m.Nanos |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -411,6 +438,9 @@ func (m *Timestamp) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthTimestamp } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthTimestamp + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -478,10 +508,13 @@ func skipTimestamp(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthTimestamp } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthTimestamp + } return iNdEx, nil case 3: for { @@ -510,6 +543,9 @@ func skipTimestamp(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthTimestamp + } } return iNdEx, nil case 4: @@ -528,25 +564,3 @@ var ( ErrInvalidLengthTimestamp = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowTimestamp = fmt.Errorf("proto: integer overflow") ) - -func init() { - proto.RegisterFile("google/protobuf/timestamp.proto", fileDescriptor_timestamp_0a0a9bc758317e91) -} - -var fileDescriptor_timestamp_0a0a9bc758317e91 = []byte{ - // 216 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0xc9, 0xcc, 0x4d, - 0x2d, 0x2e, 0x49, 0xcc, 0x2d, 0xd0, 0x03, 0x0b, 0x09, 0xf1, 0x43, 0x14, 0xe8, 0xc1, 0x14, 0x28, - 0x59, 0x73, 0x71, 0x86, 0xc0, 0xd4, 0x08, 0x49, 0x70, 0xb1, 0x17, 0xa7, 0x26, 0xe7, 0xe7, 0xa5, - 0x14, 0x4b, 0x30, 0x2a, 0x30, 0x6a, 0x30, 0x07, 0xc1, 0xb8, 0x42, 0x22, 0x5c, 0xac, 0x79, 0x89, - 0x79, 0xf9, 0xc5, 0x12, 0x4c, 0x0a, 0x8c, 0x1a, 0xac, 0x41, 0x10, 0x8e, 0x53, 0x0b, 0xe3, 0x85, - 0x87, 0x72, 0x0c, 0x37, 0x1e, 0xca, 0x31, 0x7c, 0x78, 0x28, 0xc7, 0xb8, 0xe2, 0x91, 0x1c, 0xe3, - 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0xf8, 0xe2, 0x91, 0x1c, - 0xc3, 0x87, 0x47, 0x72, 0x8c, 0x2b, 0x1e, 0xcb, 0x31, 0x9e, 0x78, 0x2c, 0xc7, 0xc8, 0x25, 0x9c, - 0x9c, 0x9f, 0xab, 0x87, 0xe6, 0x00, 0x27, 0x3e, 0xb8, 0xf5, 0x01, 0x20, 0xa1, 0x00, 0xc6, 0x28, - 0xd6, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x1f, 0x8c, 0x8c, 0x8b, 0x98, 0x98, 0xdd, 0x03, 0x9c, 0x56, - 0x31, 0xc9, 0xb9, 0x43, 0xf4, 0x04, 0x40, 0xf5, 0xe8, 0x85, 0xa7, 0xe6, 0xe4, 0x78, 0xe7, 0xe5, - 0x97, 0xe7, 0x85, 0x80, 0x54, 0x26, 0xb1, 0x81, 0x0d, 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, - 0x40, 0xae, 0xf1, 0x42, 0xfe, 0x00, 0x00, 0x00, -} diff --git a/vendor/github.com/gogo/protobuf/types/type.pb.go b/vendor/github.com/gogo/protobuf/types/type.pb.go index 5f406e0414..e0adc52b2f 100644 --- a/vendor/github.com/gogo/protobuf/types/type.pb.go +++ b/vendor/github.com/gogo/protobuf/types/type.pb.go @@ -3,18 +3,17 @@ package types -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import bytes "bytes" - -import strconv "strconv" - -import strings "strings" -import reflect "reflect" - -import io "io" +import ( + bytes "bytes" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" + reflect "reflect" + strconv "strconv" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -32,22 +31,23 @@ type Syntax int32 const ( // Syntax `proto2`. - SYNTAX_PROTO2 Syntax = 0 + Syntax_SYNTAX_PROTO2 Syntax = 0 // Syntax `proto3`. - SYNTAX_PROTO3 Syntax = 1 + Syntax_SYNTAX_PROTO3 Syntax = 1 ) var Syntax_name = map[int32]string{ 0: "SYNTAX_PROTO2", 1: "SYNTAX_PROTO3", } + var Syntax_value = map[string]int32{ "SYNTAX_PROTO2": 0, "SYNTAX_PROTO3": 1, } func (Syntax) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_type_345e3aff58b7b252, []int{0} + return fileDescriptor_dd271cc1e348c538, []int{0} } // Basic field types. @@ -55,43 +55,43 @@ type Field_Kind int32 const ( // Field type unknown. - TYPE_UNKNOWN Field_Kind = 0 + Field_TYPE_UNKNOWN Field_Kind = 0 // Field type double. - TYPE_DOUBLE Field_Kind = 1 + Field_TYPE_DOUBLE Field_Kind = 1 // Field type float. - TYPE_FLOAT Field_Kind = 2 + Field_TYPE_FLOAT Field_Kind = 2 // Field type int64. - TYPE_INT64 Field_Kind = 3 + Field_TYPE_INT64 Field_Kind = 3 // Field type uint64. - TYPE_UINT64 Field_Kind = 4 + Field_TYPE_UINT64 Field_Kind = 4 // Field type int32. - TYPE_INT32 Field_Kind = 5 + Field_TYPE_INT32 Field_Kind = 5 // Field type fixed64. - TYPE_FIXED64 Field_Kind = 6 + Field_TYPE_FIXED64 Field_Kind = 6 // Field type fixed32. - TYPE_FIXED32 Field_Kind = 7 + Field_TYPE_FIXED32 Field_Kind = 7 // Field type bool. - TYPE_BOOL Field_Kind = 8 + Field_TYPE_BOOL Field_Kind = 8 // Field type string. - TYPE_STRING Field_Kind = 9 + Field_TYPE_STRING Field_Kind = 9 // Field type group. Proto2 syntax only, and deprecated. - TYPE_GROUP Field_Kind = 10 + Field_TYPE_GROUP Field_Kind = 10 // Field type message. - TYPE_MESSAGE Field_Kind = 11 + Field_TYPE_MESSAGE Field_Kind = 11 // Field type bytes. - TYPE_BYTES Field_Kind = 12 + Field_TYPE_BYTES Field_Kind = 12 // Field type uint32. - TYPE_UINT32 Field_Kind = 13 + Field_TYPE_UINT32 Field_Kind = 13 // Field type enum. - TYPE_ENUM Field_Kind = 14 + Field_TYPE_ENUM Field_Kind = 14 // Field type sfixed32. - TYPE_SFIXED32 Field_Kind = 15 + Field_TYPE_SFIXED32 Field_Kind = 15 // Field type sfixed64. - TYPE_SFIXED64 Field_Kind = 16 + Field_TYPE_SFIXED64 Field_Kind = 16 // Field type sint32. - TYPE_SINT32 Field_Kind = 17 + Field_TYPE_SINT32 Field_Kind = 17 // Field type sint64. - TYPE_SINT64 Field_Kind = 18 + Field_TYPE_SINT64 Field_Kind = 18 ) var Field_Kind_name = map[int32]string{ @@ -115,6 +115,7 @@ var Field_Kind_name = map[int32]string{ 17: "TYPE_SINT32", 18: "TYPE_SINT64", } + var Field_Kind_value = map[string]int32{ "TYPE_UNKNOWN": 0, "TYPE_DOUBLE": 1, @@ -138,7 +139,7 @@ var Field_Kind_value = map[string]int32{ } func (Field_Kind) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_type_345e3aff58b7b252, []int{1, 0} + return fileDescriptor_dd271cc1e348c538, []int{1, 0} } // Whether a field is optional, required, or repeated. @@ -146,13 +147,13 @@ type Field_Cardinality int32 const ( // For fields with unknown cardinality. - CARDINALITY_UNKNOWN Field_Cardinality = 0 + Field_CARDINALITY_UNKNOWN Field_Cardinality = 0 // For optional fields. - CARDINALITY_OPTIONAL Field_Cardinality = 1 + Field_CARDINALITY_OPTIONAL Field_Cardinality = 1 // For required fields. Proto2 syntax only. - CARDINALITY_REQUIRED Field_Cardinality = 2 + Field_CARDINALITY_REQUIRED Field_Cardinality = 2 // For repeated fields. - CARDINALITY_REPEATED Field_Cardinality = 3 + Field_CARDINALITY_REPEATED Field_Cardinality = 3 ) var Field_Cardinality_name = map[int32]string{ @@ -161,6 +162,7 @@ var Field_Cardinality_name = map[int32]string{ 2: "CARDINALITY_REQUIRED", 3: "CARDINALITY_REPEATED", } + var Field_Cardinality_value = map[string]int32{ "CARDINALITY_UNKNOWN": 0, "CARDINALITY_OPTIONAL": 1, @@ -169,7 +171,7 @@ var Field_Cardinality_value = map[string]int32{ } func (Field_Cardinality) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_type_345e3aff58b7b252, []int{1, 1} + return fileDescriptor_dd271cc1e348c538, []int{1, 1} } // A protocol buffer message type. @@ -177,13 +179,13 @@ type Type struct { // The fully qualified message name. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The list of fields. - Fields []*Field `protobuf:"bytes,2,rep,name=fields" json:"fields,omitempty"` + Fields []*Field `protobuf:"bytes,2,rep,name=fields,proto3" json:"fields,omitempty"` // The list of types appearing in `oneof` definitions in this type. - Oneofs []string `protobuf:"bytes,3,rep,name=oneofs" json:"oneofs,omitempty"` + Oneofs []string `protobuf:"bytes,3,rep,name=oneofs,proto3" json:"oneofs,omitempty"` // The protocol buffer options. - Options []*Option `protobuf:"bytes,4,rep,name=options" json:"options,omitempty"` + Options []*Option `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"` // The source context. - SourceContext *SourceContext `protobuf:"bytes,5,opt,name=source_context,json=sourceContext" json:"source_context,omitempty"` + SourceContext *SourceContext `protobuf:"bytes,5,opt,name=source_context,json=sourceContext,proto3" json:"source_context,omitempty"` // The source syntax. Syntax Syntax `protobuf:"varint,6,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -194,7 +196,7 @@ type Type struct { func (m *Type) Reset() { *m = Type{} } func (*Type) ProtoMessage() {} func (*Type) Descriptor() ([]byte, []int) { - return fileDescriptor_type_345e3aff58b7b252, []int{0} + return fileDescriptor_dd271cc1e348c538, []int{0} } func (m *Type) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -204,15 +206,15 @@ func (m *Type) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Type.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Type) XXX_Merge(src proto.Message) { - xxx_messageInfo_Type.Merge(dst, src) +func (m *Type) XXX_Merge(src proto.Message) { + xxx_messageInfo_Type.Merge(m, src) } func (m *Type) XXX_Size() int { return m.Size() @@ -262,7 +264,7 @@ func (m *Type) GetSyntax() Syntax { if m != nil { return m.Syntax } - return SYNTAX_PROTO2 + return Syntax_SYNTAX_PROTO2 } func (*Type) XXX_MessageName() string { @@ -288,7 +290,7 @@ type Field struct { // Whether to use alternative packed wire representation. Packed bool `protobuf:"varint,8,opt,name=packed,proto3" json:"packed,omitempty"` // The protocol buffer options. - Options []*Option `protobuf:"bytes,9,rep,name=options" json:"options,omitempty"` + Options []*Option `protobuf:"bytes,9,rep,name=options,proto3" json:"options,omitempty"` // The field JSON name. JsonName string `protobuf:"bytes,10,opt,name=json_name,json=jsonName,proto3" json:"json_name,omitempty"` // The string value of the default value of this field. Proto2 syntax only. @@ -301,7 +303,7 @@ type Field struct { func (m *Field) Reset() { *m = Field{} } func (*Field) ProtoMessage() {} func (*Field) Descriptor() ([]byte, []int) { - return fileDescriptor_type_345e3aff58b7b252, []int{1} + return fileDescriptor_dd271cc1e348c538, []int{1} } func (m *Field) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -311,15 +313,15 @@ func (m *Field) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Field.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Field) XXX_Merge(src proto.Message) { - xxx_messageInfo_Field.Merge(dst, src) +func (m *Field) XXX_Merge(src proto.Message) { + xxx_messageInfo_Field.Merge(m, src) } func (m *Field) XXX_Size() int { return m.Size() @@ -334,14 +336,14 @@ func (m *Field) GetKind() Field_Kind { if m != nil { return m.Kind } - return TYPE_UNKNOWN + return Field_TYPE_UNKNOWN } func (m *Field) GetCardinality() Field_Cardinality { if m != nil { return m.Cardinality } - return CARDINALITY_UNKNOWN + return Field_CARDINALITY_UNKNOWN } func (m *Field) GetNumber() int32 { @@ -409,11 +411,11 @@ type Enum struct { // Enum type name. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Enum value definitions. - Enumvalue []*EnumValue `protobuf:"bytes,2,rep,name=enumvalue" json:"enumvalue,omitempty"` + Enumvalue []*EnumValue `protobuf:"bytes,2,rep,name=enumvalue,proto3" json:"enumvalue,omitempty"` // Protocol buffer options. - Options []*Option `protobuf:"bytes,3,rep,name=options" json:"options,omitempty"` + Options []*Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` // The source context. - SourceContext *SourceContext `protobuf:"bytes,4,opt,name=source_context,json=sourceContext" json:"source_context,omitempty"` + SourceContext *SourceContext `protobuf:"bytes,4,opt,name=source_context,json=sourceContext,proto3" json:"source_context,omitempty"` // The source syntax. Syntax Syntax `protobuf:"varint,5,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -424,7 +426,7 @@ type Enum struct { func (m *Enum) Reset() { *m = Enum{} } func (*Enum) ProtoMessage() {} func (*Enum) Descriptor() ([]byte, []int) { - return fileDescriptor_type_345e3aff58b7b252, []int{2} + return fileDescriptor_dd271cc1e348c538, []int{2} } func (m *Enum) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -434,15 +436,15 @@ func (m *Enum) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Enum.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Enum) XXX_Merge(src proto.Message) { - xxx_messageInfo_Enum.Merge(dst, src) +func (m *Enum) XXX_Merge(src proto.Message) { + xxx_messageInfo_Enum.Merge(m, src) } func (m *Enum) XXX_Size() int { return m.Size() @@ -485,7 +487,7 @@ func (m *Enum) GetSyntax() Syntax { if m != nil { return m.Syntax } - return SYNTAX_PROTO2 + return Syntax_SYNTAX_PROTO2 } func (*Enum) XXX_MessageName() string { @@ -499,7 +501,7 @@ type EnumValue struct { // Enum value number. Number int32 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"` // Protocol buffer options. - Options []*Option `protobuf:"bytes,3,rep,name=options" json:"options,omitempty"` + Options []*Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -508,7 +510,7 @@ type EnumValue struct { func (m *EnumValue) Reset() { *m = EnumValue{} } func (*EnumValue) ProtoMessage() {} func (*EnumValue) Descriptor() ([]byte, []int) { - return fileDescriptor_type_345e3aff58b7b252, []int{3} + return fileDescriptor_dd271cc1e348c538, []int{3} } func (m *EnumValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -518,15 +520,15 @@ func (m *EnumValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_EnumValue.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *EnumValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_EnumValue.Merge(dst, src) +func (m *EnumValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnumValue.Merge(m, src) } func (m *EnumValue) XXX_Size() int { return m.Size() @@ -574,7 +576,7 @@ type Option struct { // the corresponding wrapper type defined in google/protobuf/wrappers.proto // should be used. If the value is an enum, it should be stored as an int32 // value using the google.protobuf.Int32Value type. - Value *Any `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` + Value *Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -583,7 +585,7 @@ type Option struct { func (m *Option) Reset() { *m = Option{} } func (*Option) ProtoMessage() {} func (*Option) Descriptor() ([]byte, []int) { - return fileDescriptor_type_345e3aff58b7b252, []int{4} + return fileDescriptor_dd271cc1e348c538, []int{4} } func (m *Option) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -593,15 +595,15 @@ func (m *Option) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Option.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Option) XXX_Merge(src proto.Message) { - xxx_messageInfo_Option.Merge(dst, src) +func (m *Option) XXX_Merge(src proto.Message) { + xxx_messageInfo_Option.Merge(m, src) } func (m *Option) XXX_Size() int { return m.Size() @@ -630,15 +632,75 @@ func (*Option) XXX_MessageName() string { return "google.protobuf.Option" } func init() { + proto.RegisterEnum("google.protobuf.Syntax", Syntax_name, Syntax_value) + proto.RegisterEnum("google.protobuf.Field_Kind", Field_Kind_name, Field_Kind_value) + proto.RegisterEnum("google.protobuf.Field_Cardinality", Field_Cardinality_name, Field_Cardinality_value) proto.RegisterType((*Type)(nil), "google.protobuf.Type") proto.RegisterType((*Field)(nil), "google.protobuf.Field") proto.RegisterType((*Enum)(nil), "google.protobuf.Enum") proto.RegisterType((*EnumValue)(nil), "google.protobuf.EnumValue") proto.RegisterType((*Option)(nil), "google.protobuf.Option") - proto.RegisterEnum("google.protobuf.Syntax", Syntax_name, Syntax_value) - proto.RegisterEnum("google.protobuf.Field_Kind", Field_Kind_name, Field_Kind_value) - proto.RegisterEnum("google.protobuf.Field_Cardinality", Field_Cardinality_name, Field_Cardinality_value) } + +func init() { proto.RegisterFile("google/protobuf/type.proto", fileDescriptor_dd271cc1e348c538) } + +var fileDescriptor_dd271cc1e348c538 = []byte{ + // 840 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0xcf, 0x73, 0xda, 0x46, + 0x14, 0xf6, 0x0a, 0x21, 0xa3, 0x87, 0xc1, 0x9b, 0x4d, 0x26, 0x51, 0x9c, 0x19, 0x95, 0xa1, 0x3d, + 0x30, 0x39, 0xe0, 0x29, 0x78, 0x3c, 0xbd, 0x82, 0x91, 0x29, 0x63, 0x22, 0xa9, 0x8b, 0x68, 0xe2, + 0x5e, 0x18, 0x0c, 0x72, 0x86, 0x44, 0xac, 0x18, 0x24, 0x5a, 0x73, 0xeb, 0x4c, 0xcf, 0xfd, 0x27, + 0x7a, 0xea, 0xf4, 0xdc, 0x3f, 0xc2, 0xc7, 0x1e, 0x7b, 0xac, 0xc9, 0xa5, 0xc7, 0x1c, 0x73, 0x6b, + 0x67, 0x57, 0x20, 0x8b, 0x1f, 0x9d, 0x49, 0xdb, 0x1b, 0xef, 0xfb, 0xbe, 0xf7, 0x73, 0x9f, 0x1e, + 0x70, 0xf4, 0xda, 0xf7, 0x5f, 0x7b, 0xee, 0xf1, 0x64, 0xea, 0x87, 0xfe, 0xd5, 0xec, 0xfa, 0x38, + 0x9c, 0x4f, 0xdc, 0xb2, 0xb0, 0xc8, 0x61, 0xc4, 0x95, 0x57, 0xdc, 0xd1, 0xd3, 0x4d, 0x71, 0x9f, + 0xcd, 0x23, 0xf6, 0xe8, 0xb3, 0x4d, 0x2a, 0xf0, 0x67, 0xd3, 0x81, 0xdb, 0x1b, 0xf8, 0x2c, 0x74, + 0x6f, 0xc2, 0x48, 0x55, 0xfc, 0x51, 0x02, 0xd9, 0x99, 0x4f, 0x5c, 0x42, 0x40, 0x66, 0xfd, 0xb1, + 0xab, 0xa1, 0x02, 0x2a, 0xa9, 0x54, 0xfc, 0x26, 0x65, 0x50, 0xae, 0x47, 0xae, 0x37, 0x0c, 0x34, + 0xa9, 0x90, 0x2a, 0x65, 0x2b, 0x8f, 0xcb, 0x1b, 0xf9, 0xcb, 0xe7, 0x9c, 0xa6, 0x4b, 0x15, 0x79, + 0x0c, 0x8a, 0xcf, 0x5c, 0xff, 0x3a, 0xd0, 0x52, 0x85, 0x54, 0x49, 0xa5, 0x4b, 0x8b, 0x7c, 0x0e, + 0xfb, 0xfe, 0x24, 0x1c, 0xf9, 0x2c, 0xd0, 0x64, 0x11, 0xe8, 0xc9, 0x56, 0x20, 0x4b, 0xf0, 0x74, + 0xa5, 0x23, 0x06, 0xe4, 0xd7, 0xeb, 0xd5, 0xd2, 0x05, 0x54, 0xca, 0x56, 0xf4, 0x2d, 0xcf, 0x8e, + 0x90, 0x9d, 0x45, 0x2a, 0x9a, 0x0b, 0x92, 0x26, 0x39, 0x06, 0x25, 0x98, 0xb3, 0xb0, 0x7f, 0xa3, + 0x29, 0x05, 0x54, 0xca, 0xef, 0x48, 0xdc, 0x11, 0x34, 0x5d, 0xca, 0x8a, 0xbf, 0x2a, 0x90, 0x16, + 0x4d, 0x91, 0x63, 0x90, 0xdf, 0x8e, 0xd8, 0x50, 0x0c, 0x24, 0x5f, 0x79, 0xb6, 0xbb, 0xf5, 0xf2, + 0xc5, 0x88, 0x0d, 0xa9, 0x10, 0x92, 0x06, 0x64, 0x07, 0xfd, 0xe9, 0x70, 0xc4, 0xfa, 0xde, 0x28, + 0x9c, 0x6b, 0x92, 0xf0, 0x2b, 0xfe, 0x83, 0xdf, 0xd9, 0xbd, 0x92, 0x26, 0xdd, 0xf8, 0x0c, 0xd9, + 0x6c, 0x7c, 0xe5, 0x4e, 0xb5, 0x54, 0x01, 0x95, 0xd2, 0x74, 0x69, 0xc5, 0xef, 0x23, 0x27, 0xde, + 0xe7, 0x29, 0x64, 0xf8, 0x72, 0xf4, 0x66, 0x53, 0x4f, 0xf4, 0xa7, 0xd2, 0x7d, 0x6e, 0x77, 0xa7, + 0x1e, 0xf9, 0x04, 0xb2, 0x62, 0xf8, 0xbd, 0x11, 0x1b, 0xba, 0x37, 0xda, 0xbe, 0x88, 0x05, 0x02, + 0x6a, 0x71, 0x84, 0xe7, 0x99, 0xf4, 0x07, 0x6f, 0xdd, 0xa1, 0x96, 0x29, 0xa0, 0x52, 0x86, 0x2e, + 0xad, 0xe4, 0x5b, 0xa9, 0x1f, 0xf9, 0x56, 0xcf, 0x40, 0x7d, 0x13, 0xf8, 0xac, 0x27, 0xea, 0x03, + 0x51, 0x47, 0x86, 0x03, 0x26, 0xaf, 0xf1, 0x53, 0xc8, 0x0d, 0xdd, 0xeb, 0xfe, 0xcc, 0x0b, 0x7b, + 0xdf, 0xf6, 0xbd, 0x99, 0xab, 0x65, 0x85, 0xe0, 0x60, 0x09, 0x7e, 0xcd, 0xb1, 0xe2, 0xad, 0x04, + 0x32, 0x9f, 0x24, 0xc1, 0x70, 0xe0, 0x5c, 0xda, 0x46, 0xaf, 0x6b, 0x5e, 0x98, 0xd6, 0x4b, 0x13, + 0xef, 0x91, 0x43, 0xc8, 0x0a, 0xa4, 0x61, 0x75, 0xeb, 0x6d, 0x03, 0x23, 0x92, 0x07, 0x10, 0xc0, + 0x79, 0xdb, 0xaa, 0x39, 0x58, 0x8a, 0xed, 0x96, 0xe9, 0x9c, 0x9e, 0xe0, 0x54, 0xec, 0xd0, 0x8d, + 0x00, 0x39, 0x29, 0xa8, 0x56, 0x70, 0x3a, 0xce, 0x71, 0xde, 0x7a, 0x65, 0x34, 0x4e, 0x4f, 0xb0, + 0xb2, 0x8e, 0x54, 0x2b, 0x78, 0x9f, 0xe4, 0x40, 0x15, 0x48, 0xdd, 0xb2, 0xda, 0x38, 0x13, 0xc7, + 0xec, 0x38, 0xb4, 0x65, 0x36, 0xb1, 0x1a, 0xc7, 0x6c, 0x52, 0xab, 0x6b, 0x63, 0x88, 0x23, 0xbc, + 0x30, 0x3a, 0x9d, 0x5a, 0xd3, 0xc0, 0xd9, 0x58, 0x51, 0xbf, 0x74, 0x8c, 0x0e, 0x3e, 0x58, 0x2b, + 0xab, 0x5a, 0xc1, 0xb9, 0x38, 0x85, 0x61, 0x76, 0x5f, 0xe0, 0x3c, 0x79, 0x00, 0xb9, 0x28, 0xc5, + 0xaa, 0x88, 0xc3, 0x0d, 0xe8, 0xf4, 0x04, 0xe3, 0xfb, 0x42, 0xa2, 0x28, 0x0f, 0xd6, 0x80, 0xd3, + 0x13, 0x4c, 0x8a, 0x21, 0x64, 0x13, 0xbb, 0x45, 0x9e, 0xc0, 0xc3, 0xb3, 0x1a, 0x6d, 0xb4, 0xcc, + 0x5a, 0xbb, 0xe5, 0x5c, 0x26, 0xe6, 0xaa, 0xc1, 0xa3, 0x24, 0x61, 0xd9, 0x4e, 0xcb, 0x32, 0x6b, + 0x6d, 0x8c, 0x36, 0x19, 0x6a, 0x7c, 0xd5, 0x6d, 0x51, 0xa3, 0x81, 0xa5, 0x6d, 0xc6, 0x36, 0x6a, + 0x8e, 0xd1, 0xc0, 0xa9, 0xe2, 0x5f, 0x08, 0x64, 0x83, 0xcd, 0xc6, 0x3b, 0xcf, 0xc8, 0x17, 0xa0, + 0xba, 0x6c, 0x36, 0x8e, 0x9e, 0x3f, 0xba, 0x24, 0x47, 0x5b, 0x4b, 0xc5, 0xbd, 0xc5, 0x32, 0xd0, + 0x7b, 0x71, 0x72, 0x19, 0x53, 0xff, 0xf9, 0x70, 0xc8, 0xff, 0xef, 0x70, 0xa4, 0x3f, 0xee, 0x70, + 0xbc, 0x01, 0x35, 0x6e, 0x61, 0xe7, 0x14, 0xee, 0x3f, 0x6c, 0x69, 0xed, 0xc3, 0xfe, 0xf7, 0x3d, + 0x16, 0xbf, 0x04, 0x25, 0x82, 0x76, 0x26, 0x7a, 0x0e, 0xe9, 0xd5, 0xa8, 0x79, 0xe3, 0x8f, 0xb6, + 0xc2, 0xd5, 0xd8, 0x9c, 0x46, 0x92, 0xe7, 0x65, 0x50, 0xa2, 0x3e, 0xf8, 0xb2, 0x75, 0x2e, 0x4d, + 0xa7, 0xf6, 0xaa, 0x67, 0x53, 0xcb, 0xb1, 0x2a, 0x78, 0x6f, 0x13, 0xaa, 0x62, 0x54, 0xff, 0x01, + 0xfd, 0x7e, 0xa7, 0xef, 0xbd, 0xbf, 0xd3, 0xd1, 0x87, 0x3b, 0x1d, 0x7d, 0xbf, 0xd0, 0xd1, 0xcf, + 0x0b, 0x1d, 0xdd, 0x2e, 0x74, 0xf4, 0xdb, 0x42, 0x47, 0x7f, 0x2c, 0x74, 0xf4, 0xe7, 0x42, 0xdf, + 0x7b, 0xcf, 0xf1, 0x77, 0x3a, 0xba, 0x7d, 0xa7, 0x23, 0x78, 0x38, 0xf0, 0xc7, 0x9b, 0x25, 0xd4, + 0x55, 0xfe, 0x9f, 0x63, 0x73, 0xcb, 0x46, 0xdf, 0xa4, 0xf9, 0xd1, 0x0a, 0x3e, 0x20, 0xf4, 0x93, + 0x94, 0x6a, 0xda, 0xf5, 0x5f, 0x24, 0xbd, 0x19, 0xc9, 0xed, 0x55, 0xc5, 0x2f, 0x5d, 0xcf, 0xbb, + 0x60, 0xfe, 0x77, 0x8c, 0xbb, 0x05, 0x57, 0x8a, 0x88, 0x53, 0xfd, 0x3b, 0x00, 0x00, 0xff, 0xff, + 0xbc, 0x2a, 0x5e, 0x82, 0x2b, 0x07, 0x00, 0x00, +} + func (this *Type) Compare(that interface{}) int { if that == nil { if this == nil { @@ -1343,7 +1405,7 @@ func valueToGoStringType(v interface{}, typ string) string { func (m *Type) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1351,80 +1413,87 @@ func (m *Type) Marshal() (dAtA []byte, err error) { } func (m *Type) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Type) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l - if len(m.Name) > 0 { - dAtA[i] = 0xa - i++ - i = encodeVarintType(dAtA, i, uint64(len(m.Name))) - i += copy(dAtA[i:], m.Name) + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.Fields) > 0 { - for _, msg := range m.Fields { - dAtA[i] = 0x12 - i++ - i = encodeVarintType(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) + if m.Syntax != 0 { + i = encodeVarintType(dAtA, i, uint64(m.Syntax)) + i-- + dAtA[i] = 0x30 + } + if m.SourceContext != nil { + { + size, err := m.SourceContext.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } - i += n - } - } - if len(m.Oneofs) > 0 { - for _, s := range m.Oneofs { - dAtA[i] = 0x1a - i++ - l = len(s) - for l >= 1<<7 { - dAtA[i] = uint8(uint64(l)&0x7f | 0x80) - l >>= 7 - i++ - } - dAtA[i] = uint8(l) - i++ - i += copy(dAtA[i:], s) + i -= size + i = encodeVarintType(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x2a } if len(m.Options) > 0 { - for _, msg := range m.Options { - dAtA[i] = 0x22 - i++ - i = encodeVarintType(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + for iNdEx := len(m.Options) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Options[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintType(dAtA, i, uint64(size)) } - i += n + i-- + dAtA[i] = 0x22 } } - if m.SourceContext != nil { - dAtA[i] = 0x2a - i++ - i = encodeVarintType(dAtA, i, uint64(m.SourceContext.Size())) - n1, err := m.SourceContext.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + if len(m.Oneofs) > 0 { + for iNdEx := len(m.Oneofs) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Oneofs[iNdEx]) + copy(dAtA[i:], m.Oneofs[iNdEx]) + i = encodeVarintType(dAtA, i, uint64(len(m.Oneofs[iNdEx]))) + i-- + dAtA[i] = 0x1a } - i += n1 } - if m.Syntax != 0 { - dAtA[i] = 0x30 - i++ - i = encodeVarintType(dAtA, i, uint64(m.Syntax)) + if len(m.Fields) > 0 { + for iNdEx := len(m.Fields) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Fields[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintType(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintType(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa } - return i, nil + return len(dAtA) - i, nil } func (m *Field) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1432,86 +1501,98 @@ func (m *Field) Marshal() (dAtA []byte, err error) { } func (m *Field) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Field) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l - if m.Kind != 0 { - dAtA[i] = 0x8 - i++ - i = encodeVarintType(dAtA, i, uint64(m.Kind)) - } - if m.Cardinality != 0 { - dAtA[i] = 0x10 - i++ - i = encodeVarintType(dAtA, i, uint64(m.Cardinality)) - } - if m.Number != 0 { - dAtA[i] = 0x18 - i++ - i = encodeVarintType(dAtA, i, uint64(m.Number)) + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.Name) > 0 { - dAtA[i] = 0x22 - i++ - i = encodeVarintType(dAtA, i, uint64(len(m.Name))) - i += copy(dAtA[i:], m.Name) + if len(m.DefaultValue) > 0 { + i -= len(m.DefaultValue) + copy(dAtA[i:], m.DefaultValue) + i = encodeVarintType(dAtA, i, uint64(len(m.DefaultValue))) + i-- + dAtA[i] = 0x5a } - if len(m.TypeUrl) > 0 { - dAtA[i] = 0x32 - i++ - i = encodeVarintType(dAtA, i, uint64(len(m.TypeUrl))) - i += copy(dAtA[i:], m.TypeUrl) + if len(m.JsonName) > 0 { + i -= len(m.JsonName) + copy(dAtA[i:], m.JsonName) + i = encodeVarintType(dAtA, i, uint64(len(m.JsonName))) + i-- + dAtA[i] = 0x52 } - if m.OneofIndex != 0 { - dAtA[i] = 0x38 - i++ - i = encodeVarintType(dAtA, i, uint64(m.OneofIndex)) + if len(m.Options) > 0 { + for iNdEx := len(m.Options) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Options[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintType(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } } if m.Packed { - dAtA[i] = 0x40 - i++ + i-- if m.Packed { dAtA[i] = 1 } else { dAtA[i] = 0 } - i++ + i-- + dAtA[i] = 0x40 } - if len(m.Options) > 0 { - for _, msg := range m.Options { - dAtA[i] = 0x4a - i++ - i = encodeVarintType(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err - } - i += n - } + if m.OneofIndex != 0 { + i = encodeVarintType(dAtA, i, uint64(m.OneofIndex)) + i-- + dAtA[i] = 0x38 } - if len(m.JsonName) > 0 { - dAtA[i] = 0x52 - i++ - i = encodeVarintType(dAtA, i, uint64(len(m.JsonName))) - i += copy(dAtA[i:], m.JsonName) + if len(m.TypeUrl) > 0 { + i -= len(m.TypeUrl) + copy(dAtA[i:], m.TypeUrl) + i = encodeVarintType(dAtA, i, uint64(len(m.TypeUrl))) + i-- + dAtA[i] = 0x32 } - if len(m.DefaultValue) > 0 { - dAtA[i] = 0x5a - i++ - i = encodeVarintType(dAtA, i, uint64(len(m.DefaultValue))) - i += copy(dAtA[i:], m.DefaultValue) + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintType(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0x22 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if m.Number != 0 { + i = encodeVarintType(dAtA, i, uint64(m.Number)) + i-- + dAtA[i] = 0x18 + } + if m.Cardinality != 0 { + i = encodeVarintType(dAtA, i, uint64(m.Cardinality)) + i-- + dAtA[i] = 0x10 + } + if m.Kind != 0 { + i = encodeVarintType(dAtA, i, uint64(m.Kind)) + i-- + dAtA[i] = 0x8 } - return i, nil + return len(dAtA) - i, nil } func (m *Enum) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1519,65 +1600,78 @@ func (m *Enum) Marshal() (dAtA []byte, err error) { } func (m *Enum) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Enum) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l - if len(m.Name) > 0 { - dAtA[i] = 0xa - i++ - i = encodeVarintType(dAtA, i, uint64(len(m.Name))) - i += copy(dAtA[i:], m.Name) + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } - if len(m.Enumvalue) > 0 { - for _, msg := range m.Enumvalue { - dAtA[i] = 0x12 - i++ - i = encodeVarintType(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) + if m.Syntax != 0 { + i = encodeVarintType(dAtA, i, uint64(m.Syntax)) + i-- + dAtA[i] = 0x28 + } + if m.SourceContext != nil { + { + size, err := m.SourceContext.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } - i += n + i -= size + i = encodeVarintType(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x22 } if len(m.Options) > 0 { - for _, msg := range m.Options { - dAtA[i] = 0x1a - i++ - i = encodeVarintType(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + for iNdEx := len(m.Options) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Options[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintType(dAtA, i, uint64(size)) } - i += n + i-- + dAtA[i] = 0x1a } } - if m.SourceContext != nil { - dAtA[i] = 0x22 - i++ - i = encodeVarintType(dAtA, i, uint64(m.SourceContext.Size())) - n2, err := m.SourceContext.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + if len(m.Enumvalue) > 0 { + for iNdEx := len(m.Enumvalue) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Enumvalue[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintType(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 } - i += n2 } - if m.Syntax != 0 { - dAtA[i] = 0x28 - i++ - i = encodeVarintType(dAtA, i, uint64(m.Syntax)) - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintType(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa } - return i, nil + return len(dAtA) - i, nil } func (m *EnumValue) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1585,43 +1679,52 @@ func (m *EnumValue) Marshal() (dAtA []byte, err error) { } func (m *EnumValue) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EnumValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l - if len(m.Name) > 0 { - dAtA[i] = 0xa - i++ - i = encodeVarintType(dAtA, i, uint64(len(m.Name))) - i += copy(dAtA[i:], m.Name) - } - if m.Number != 0 { - dAtA[i] = 0x10 - i++ - i = encodeVarintType(dAtA, i, uint64(m.Number)) + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } if len(m.Options) > 0 { - for _, msg := range m.Options { - dAtA[i] = 0x1a - i++ - i = encodeVarintType(dAtA, i, uint64(msg.Size())) - n, err := msg.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + for iNdEx := len(m.Options) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Options[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintType(dAtA, i, uint64(size)) } - i += n + i-- + dAtA[i] = 0x1a } } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if m.Number != 0 { + i = encodeVarintType(dAtA, i, uint64(m.Number)) + i-- + dAtA[i] = 0x10 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintType(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa } - return i, nil + return len(dAtA) - i, nil } func (m *Option) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1629,45 +1732,56 @@ func (m *Option) Marshal() (dAtA []byte, err error) { } func (m *Option) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Option) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l - if len(m.Name) > 0 { - dAtA[i] = 0xa - i++ - i = encodeVarintType(dAtA, i, uint64(len(m.Name))) - i += copy(dAtA[i:], m.Name) + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) } if m.Value != nil { - dAtA[i] = 0x12 - i++ - i = encodeVarintType(dAtA, i, uint64(m.Value.Size())) - n3, err := m.Value.MarshalTo(dAtA[i:]) - if err != nil { - return 0, err + { + size, err := m.Value.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintType(dAtA, i, uint64(size)) } - i += n3 + i-- + dAtA[i] = 0x12 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintType(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa } - return i, nil + return len(dAtA) - i, nil } func encodeVarintType(dAtA []byte, offset int, v uint64) int { + offset -= sovType(v) + base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 offset++ } dAtA[offset] = uint8(v) - return offset + 1 + return base } func NewPopulatedType(r randyType, easy bool) *Type { this := &Type{} this.Name = string(randStringType(r)) - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { v1 := r.Intn(5) this.Fields = make([]*Field, v1) for i := 0; i < v1; i++ { @@ -1679,14 +1793,14 @@ func NewPopulatedType(r randyType, easy bool) *Type { for i := 0; i < v2; i++ { this.Oneofs[i] = string(randStringType(r)) } - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { v3 := r.Intn(5) this.Options = make([]*Option, v3) for i := 0; i < v3; i++ { this.Options[i] = NewPopulatedOption(r, easy) } } - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { this.SourceContext = NewPopulatedSourceContext(r, easy) } this.Syntax = Syntax([]int32{0, 1}[r.Intn(2)]) @@ -1711,7 +1825,7 @@ func NewPopulatedField(r randyType, easy bool) *Field { this.OneofIndex *= -1 } this.Packed = bool(bool(r.Intn(2) == 0)) - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { v4 := r.Intn(5) this.Options = make([]*Option, v4) for i := 0; i < v4; i++ { @@ -1729,21 +1843,21 @@ func NewPopulatedField(r randyType, easy bool) *Field { func NewPopulatedEnum(r randyType, easy bool) *Enum { this := &Enum{} this.Name = string(randStringType(r)) - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { v5 := r.Intn(5) this.Enumvalue = make([]*EnumValue, v5) for i := 0; i < v5; i++ { this.Enumvalue[i] = NewPopulatedEnumValue(r, easy) } } - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { v6 := r.Intn(5) this.Options = make([]*Option, v6) for i := 0; i < v6; i++ { this.Options[i] = NewPopulatedOption(r, easy) } } - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { this.SourceContext = NewPopulatedSourceContext(r, easy) } this.Syntax = Syntax([]int32{0, 1}[r.Intn(2)]) @@ -1760,7 +1874,7 @@ func NewPopulatedEnumValue(r randyType, easy bool) *EnumValue { if r.Intn(2) == 0 { this.Number *= -1 } - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { v7 := r.Intn(5) this.Options = make([]*Option, v7) for i := 0; i < v7; i++ { @@ -1776,7 +1890,7 @@ func NewPopulatedEnumValue(r randyType, easy bool) *EnumValue { func NewPopulatedOption(r randyType, easy bool) *Option { this := &Option{} this.Name = string(randStringType(r)) - if r.Intn(10) != 0 { + if r.Intn(5) != 0 { this.Value = NewPopulatedAny(r, easy) } if !easy && r.Intn(10) != 0 { @@ -1858,6 +1972,9 @@ func encodeVarintPopulateType(dAtA []byte, v uint64) []byte { return dAtA } func (m *Type) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -1896,6 +2013,9 @@ func (m *Type) Size() (n int) { } func (m *Field) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Kind != 0 { @@ -1942,6 +2062,9 @@ func (m *Field) Size() (n int) { } func (m *Enum) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -1974,6 +2097,9 @@ func (m *Enum) Size() (n int) { } func (m *EnumValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -1996,6 +2122,9 @@ func (m *EnumValue) Size() (n int) { } func (m *Option) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Name) @@ -2013,14 +2142,7 @@ func (m *Option) Size() (n int) { } func sovType(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n + return (math_bits.Len64(x|1) + 6) / 7 } func sozType(x uint64) (n int) { return sovType(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -2029,11 +2151,21 @@ func (this *Type) String() string { if this == nil { return "nil" } + repeatedStringForFields := "[]*Field{" + for _, f := range this.Fields { + repeatedStringForFields += strings.Replace(f.String(), "Field", "Field", 1) + "," + } + repeatedStringForFields += "}" + repeatedStringForOptions := "[]*Option{" + for _, f := range this.Options { + repeatedStringForOptions += strings.Replace(f.String(), "Option", "Option", 1) + "," + } + repeatedStringForOptions += "}" s := strings.Join([]string{`&Type{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `Fields:` + strings.Replace(fmt.Sprintf("%v", this.Fields), "Field", "Field", 1) + `,`, + `Fields:` + repeatedStringForFields + `,`, `Oneofs:` + fmt.Sprintf("%v", this.Oneofs) + `,`, - `Options:` + strings.Replace(fmt.Sprintf("%v", this.Options), "Option", "Option", 1) + `,`, + `Options:` + repeatedStringForOptions + `,`, `SourceContext:` + strings.Replace(fmt.Sprintf("%v", this.SourceContext), "SourceContext", "SourceContext", 1) + `,`, `Syntax:` + fmt.Sprintf("%v", this.Syntax) + `,`, `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, @@ -2045,6 +2177,11 @@ func (this *Field) String() string { if this == nil { return "nil" } + repeatedStringForOptions := "[]*Option{" + for _, f := range this.Options { + repeatedStringForOptions += strings.Replace(f.String(), "Option", "Option", 1) + "," + } + repeatedStringForOptions += "}" s := strings.Join([]string{`&Field{`, `Kind:` + fmt.Sprintf("%v", this.Kind) + `,`, `Cardinality:` + fmt.Sprintf("%v", this.Cardinality) + `,`, @@ -2053,7 +2190,7 @@ func (this *Field) String() string { `TypeUrl:` + fmt.Sprintf("%v", this.TypeUrl) + `,`, `OneofIndex:` + fmt.Sprintf("%v", this.OneofIndex) + `,`, `Packed:` + fmt.Sprintf("%v", this.Packed) + `,`, - `Options:` + strings.Replace(fmt.Sprintf("%v", this.Options), "Option", "Option", 1) + `,`, + `Options:` + repeatedStringForOptions + `,`, `JsonName:` + fmt.Sprintf("%v", this.JsonName) + `,`, `DefaultValue:` + fmt.Sprintf("%v", this.DefaultValue) + `,`, `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, @@ -2065,10 +2202,20 @@ func (this *Enum) String() string { if this == nil { return "nil" } + repeatedStringForEnumvalue := "[]*EnumValue{" + for _, f := range this.Enumvalue { + repeatedStringForEnumvalue += strings.Replace(f.String(), "EnumValue", "EnumValue", 1) + "," + } + repeatedStringForEnumvalue += "}" + repeatedStringForOptions := "[]*Option{" + for _, f := range this.Options { + repeatedStringForOptions += strings.Replace(f.String(), "Option", "Option", 1) + "," + } + repeatedStringForOptions += "}" s := strings.Join([]string{`&Enum{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, - `Enumvalue:` + strings.Replace(fmt.Sprintf("%v", this.Enumvalue), "EnumValue", "EnumValue", 1) + `,`, - `Options:` + strings.Replace(fmt.Sprintf("%v", this.Options), "Option", "Option", 1) + `,`, + `Enumvalue:` + repeatedStringForEnumvalue + `,`, + `Options:` + repeatedStringForOptions + `,`, `SourceContext:` + strings.Replace(fmt.Sprintf("%v", this.SourceContext), "SourceContext", "SourceContext", 1) + `,`, `Syntax:` + fmt.Sprintf("%v", this.Syntax) + `,`, `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, @@ -2080,10 +2227,15 @@ func (this *EnumValue) String() string { if this == nil { return "nil" } + repeatedStringForOptions := "[]*Option{" + for _, f := range this.Options { + repeatedStringForOptions += strings.Replace(f.String(), "Option", "Option", 1) + "," + } + repeatedStringForOptions += "}" s := strings.Join([]string{`&EnumValue{`, `Name:` + fmt.Sprintf("%v", this.Name) + `,`, `Number:` + fmt.Sprintf("%v", this.Number) + `,`, - `Options:` + strings.Replace(fmt.Sprintf("%v", this.Options), "Option", "Option", 1) + `,`, + `Options:` + repeatedStringForOptions + `,`, `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, `}`, }, "") @@ -2124,7 +2276,7 @@ func (m *Type) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2152,7 +2304,7 @@ func (m *Type) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2162,6 +2314,9 @@ func (m *Type) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2181,7 +2336,7 @@ func (m *Type) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2190,6 +2345,9 @@ func (m *Type) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2212,7 +2370,7 @@ func (m *Type) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2222,6 +2380,9 @@ func (m *Type) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2241,7 +2402,7 @@ func (m *Type) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2250,6 +2411,9 @@ func (m *Type) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2272,7 +2436,7 @@ func (m *Type) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2281,6 +2445,9 @@ func (m *Type) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2305,7 +2472,7 @@ func (m *Type) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Syntax |= (Syntax(b) & 0x7F) << shift + m.Syntax |= Syntax(b&0x7F) << shift if b < 0x80 { break } @@ -2319,6 +2486,9 @@ func (m *Type) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2347,7 +2517,7 @@ func (m *Field) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2375,7 +2545,7 @@ func (m *Field) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Kind |= (Field_Kind(b) & 0x7F) << shift + m.Kind |= Field_Kind(b&0x7F) << shift if b < 0x80 { break } @@ -2394,7 +2564,7 @@ func (m *Field) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Cardinality |= (Field_Cardinality(b) & 0x7F) << shift + m.Cardinality |= Field_Cardinality(b&0x7F) << shift if b < 0x80 { break } @@ -2413,7 +2583,7 @@ func (m *Field) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Number |= (int32(b) & 0x7F) << shift + m.Number |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2432,7 +2602,7 @@ func (m *Field) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2442,6 +2612,9 @@ func (m *Field) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2461,7 +2634,7 @@ func (m *Field) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2471,6 +2644,9 @@ func (m *Field) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2490,7 +2666,7 @@ func (m *Field) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.OneofIndex |= (int32(b) & 0x7F) << shift + m.OneofIndex |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2509,7 +2685,7 @@ func (m *Field) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2529,7 +2705,7 @@ func (m *Field) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2538,6 +2714,9 @@ func (m *Field) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2560,7 +2739,7 @@ func (m *Field) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2570,6 +2749,9 @@ func (m *Field) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2589,7 +2771,7 @@ func (m *Field) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2599,6 +2781,9 @@ func (m *Field) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2613,6 +2798,9 @@ func (m *Field) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2641,7 +2829,7 @@ func (m *Enum) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2669,7 +2857,7 @@ func (m *Enum) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2679,6 +2867,9 @@ func (m *Enum) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2698,7 +2889,7 @@ func (m *Enum) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2707,6 +2898,9 @@ func (m *Enum) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2729,7 +2923,7 @@ func (m *Enum) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2738,6 +2932,9 @@ func (m *Enum) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2760,7 +2957,7 @@ func (m *Enum) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2769,6 +2966,9 @@ func (m *Enum) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2793,7 +2993,7 @@ func (m *Enum) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Syntax |= (Syntax(b) & 0x7F) << shift + m.Syntax |= Syntax(b&0x7F) << shift if b < 0x80 { break } @@ -2807,6 +3007,9 @@ func (m *Enum) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2835,7 +3038,7 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2863,7 +3066,7 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2873,6 +3076,9 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2892,7 +3098,7 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Number |= (int32(b) & 0x7F) << shift + m.Number |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2911,7 +3117,7 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2920,6 +3126,9 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2937,6 +3146,9 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2965,7 +3177,7 @@ func (m *Option) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2993,7 +3205,7 @@ func (m *Option) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3003,6 +3215,9 @@ func (m *Option) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3022,7 +3237,7 @@ func (m *Option) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= (int(b) & 0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -3031,6 +3246,9 @@ func (m *Option) Unmarshal(dAtA []byte) error { return ErrInvalidLengthType } postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthType + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -3050,6 +3268,9 @@ func (m *Option) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthType } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthType + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -3117,10 +3338,13 @@ func skipType(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthType } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthType + } return iNdEx, nil case 3: for { @@ -3149,6 +3373,9 @@ func skipType(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthType + } } return iNdEx, nil case 4: @@ -3167,62 +3394,3 @@ var ( ErrInvalidLengthType = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowType = fmt.Errorf("proto: integer overflow") ) - -func init() { proto.RegisterFile("google/protobuf/type.proto", fileDescriptor_type_345e3aff58b7b252) } - -var fileDescriptor_type_345e3aff58b7b252 = []byte{ - // 844 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0xcf, 0x73, 0xda, 0x46, - 0x14, 0x66, 0x41, 0xc8, 0xe8, 0x61, 0xf0, 0x66, 0x93, 0x49, 0x14, 0x67, 0x46, 0x65, 0x68, 0x0f, - 0x4c, 0x0e, 0x78, 0x0a, 0x1e, 0x4f, 0xaf, 0x60, 0x64, 0xca, 0x98, 0x48, 0xea, 0x22, 0x9a, 0xb8, - 0x17, 0x06, 0x83, 0x9c, 0x21, 0x11, 0x2b, 0x06, 0x89, 0xd6, 0xdc, 0x7a, 0xeb, 0xa9, 0xff, 0x44, - 0x4f, 0x9d, 0x9e, 0xfb, 0x47, 0xf8, 0x98, 0x63, 0x8f, 0x35, 0xb9, 0xf4, 0x98, 0x63, 0x6e, 0xed, - 0xec, 0x0a, 0x64, 0xf1, 0xa3, 0x33, 0x6e, 0x73, 0xe3, 0x7d, 0xdf, 0xf7, 0x7e, 0xee, 0xd3, 0x03, - 0x0e, 0x5f, 0x7b, 0xde, 0x6b, 0xd7, 0x39, 0x9a, 0x4c, 0xbd, 0xc0, 0xbb, 0x9c, 0x5d, 0x1d, 0x05, - 0xf3, 0x89, 0x53, 0x16, 0x16, 0x39, 0x08, 0xb9, 0xf2, 0x8a, 0x3b, 0x7c, 0xba, 0x29, 0xee, 0xb3, - 0x79, 0xc8, 0x1e, 0x7e, 0xb1, 0x49, 0xf9, 0xde, 0x6c, 0x3a, 0x70, 0x7a, 0x03, 0x8f, 0x05, 0xce, - 0x75, 0x10, 0xaa, 0x8a, 0x3f, 0x27, 0x41, 0xb2, 0xe7, 0x13, 0x87, 0x10, 0x90, 0x58, 0x7f, 0xec, - 0xa8, 0xa8, 0x80, 0x4a, 0x0a, 0x15, 0xbf, 0x49, 0x19, 0xe4, 0xab, 0x91, 0xe3, 0x0e, 0x7d, 0x35, - 0x59, 0x48, 0x95, 0xb2, 0x95, 0xc7, 0xe5, 0x8d, 0xfc, 0xe5, 0x33, 0x4e, 0xd3, 0xa5, 0x8a, 0x3c, - 0x06, 0xd9, 0x63, 0x8e, 0x77, 0xe5, 0xab, 0xa9, 0x42, 0xaa, 0xa4, 0xd0, 0xa5, 0x45, 0xbe, 0x84, - 0x3d, 0x6f, 0x12, 0x8c, 0x3c, 0xe6, 0xab, 0x92, 0x08, 0xf4, 0x64, 0x2b, 0x90, 0x29, 0x78, 0xba, - 0xd2, 0x11, 0x1d, 0xf2, 0xeb, 0xf5, 0xaa, 0xe9, 0x02, 0x2a, 0x65, 0x2b, 0xda, 0x96, 0x67, 0x47, - 0xc8, 0x4e, 0x43, 0x15, 0xcd, 0xf9, 0x71, 0x93, 0x1c, 0x81, 0xec, 0xcf, 0x59, 0xd0, 0xbf, 0x56, - 0xe5, 0x02, 0x2a, 0xe5, 0x77, 0x24, 0xee, 0x08, 0x9a, 0x2e, 0x65, 0xc5, 0xdf, 0x65, 0x48, 0x8b, - 0xa6, 0xc8, 0x11, 0x48, 0x6f, 0x47, 0x6c, 0x28, 0x06, 0x92, 0xaf, 0x3c, 0xdb, 0xdd, 0x7a, 0xf9, - 0x7c, 0xc4, 0x86, 0x54, 0x08, 0x49, 0x03, 0xb2, 0x83, 0xfe, 0x74, 0x38, 0x62, 0x7d, 0x77, 0x14, - 0xcc, 0xd5, 0xa4, 0xf0, 0x2b, 0xfe, 0x8b, 0xdf, 0xe9, 0x9d, 0x92, 0xc6, 0xdd, 0xf8, 0x0c, 0xd9, - 0x6c, 0x7c, 0xe9, 0x4c, 0xd5, 0x54, 0x01, 0x95, 0xd2, 0x74, 0x69, 0x45, 0xef, 0x23, 0xc5, 0xde, - 0xe7, 0x29, 0x64, 0xf8, 0x72, 0xf4, 0x66, 0x53, 0x57, 0xf4, 0xa7, 0xd0, 0x3d, 0x6e, 0x77, 0xa7, - 0x2e, 0xf9, 0x0c, 0xb2, 0x62, 0xf8, 0xbd, 0x11, 0x1b, 0x3a, 0xd7, 0xea, 0x9e, 0x88, 0x05, 0x02, - 0x6a, 0x71, 0x84, 0xe7, 0x99, 0xf4, 0x07, 0x6f, 0x9d, 0xa1, 0x9a, 0x29, 0xa0, 0x52, 0x86, 0x2e, - 0xad, 0xf8, 0x5b, 0x29, 0xf7, 0x7c, 0xab, 0x67, 0xa0, 0xbc, 0xf1, 0x3d, 0xd6, 0x13, 0xf5, 0x81, - 0xa8, 0x23, 0xc3, 0x01, 0x83, 0xd7, 0xf8, 0x39, 0xe4, 0x86, 0xce, 0x55, 0x7f, 0xe6, 0x06, 0xbd, - 0xef, 0xfb, 0xee, 0xcc, 0x51, 0xb3, 0x42, 0xb0, 0xbf, 0x04, 0xbf, 0xe5, 0x58, 0xf1, 0x26, 0x09, - 0x12, 0x9f, 0x24, 0xc1, 0xb0, 0x6f, 0x5f, 0x58, 0x7a, 0xaf, 0x6b, 0x9c, 0x1b, 0xe6, 0x4b, 0x03, - 0x27, 0xc8, 0x01, 0x64, 0x05, 0xd2, 0x30, 0xbb, 0xf5, 0xb6, 0x8e, 0x11, 0xc9, 0x03, 0x08, 0xe0, - 0xac, 0x6d, 0xd6, 0x6c, 0x9c, 0x8c, 0xec, 0x96, 0x61, 0x9f, 0x1c, 0xe3, 0x54, 0xe4, 0xd0, 0x0d, - 0x01, 0x29, 0x2e, 0xa8, 0x56, 0x70, 0x3a, 0xca, 0x71, 0xd6, 0x7a, 0xa5, 0x37, 0x4e, 0x8e, 0xb1, - 0xbc, 0x8e, 0x54, 0x2b, 0x78, 0x8f, 0xe4, 0x40, 0x11, 0x48, 0xdd, 0x34, 0xdb, 0x38, 0x13, 0xc5, - 0xec, 0xd8, 0xb4, 0x65, 0x34, 0xb1, 0x12, 0xc5, 0x6c, 0x52, 0xb3, 0x6b, 0x61, 0x88, 0x22, 0xbc, - 0xd0, 0x3b, 0x9d, 0x5a, 0x53, 0xc7, 0xd9, 0x48, 0x51, 0xbf, 0xb0, 0xf5, 0x0e, 0xde, 0x5f, 0x2b, - 0xab, 0x5a, 0xc1, 0xb9, 0x28, 0x85, 0x6e, 0x74, 0x5f, 0xe0, 0x3c, 0x79, 0x00, 0xb9, 0x30, 0xc5, - 0xaa, 0x88, 0x83, 0x0d, 0xe8, 0xe4, 0x18, 0xe3, 0xbb, 0x42, 0xc2, 0x28, 0x0f, 0xd6, 0x80, 0x93, - 0x63, 0x4c, 0x8a, 0x01, 0x64, 0x63, 0xbb, 0x45, 0x9e, 0xc0, 0xc3, 0xd3, 0x1a, 0x6d, 0xb4, 0x8c, - 0x5a, 0xbb, 0x65, 0x5f, 0xc4, 0xe6, 0xaa, 0xc2, 0xa3, 0x38, 0x61, 0x5a, 0x76, 0xcb, 0x34, 0x6a, - 0x6d, 0x8c, 0x36, 0x19, 0xaa, 0x7f, 0xd3, 0x6d, 0x51, 0xbd, 0x81, 0x93, 0xdb, 0x8c, 0xa5, 0xd7, - 0x6c, 0xbd, 0x81, 0x53, 0xc5, 0xbf, 0x11, 0x48, 0x3a, 0x9b, 0x8d, 0x77, 0x9e, 0x91, 0xaf, 0x40, - 0x71, 0xd8, 0x6c, 0x1c, 0x3e, 0x7f, 0x78, 0x49, 0x0e, 0xb7, 0x96, 0x8a, 0x7b, 0x8b, 0x65, 0xa0, - 0x77, 0xe2, 0xf8, 0x32, 0xa6, 0xfe, 0xf7, 0xe1, 0x90, 0x3e, 0xed, 0x70, 0xa4, 0xef, 0x77, 0x38, - 0xde, 0x80, 0x12, 0xb5, 0xb0, 0x73, 0x0a, 0x77, 0x1f, 0x76, 0x72, 0xed, 0xc3, 0xfe, 0xef, 0x3d, - 0x16, 0xbf, 0x06, 0x39, 0x84, 0x76, 0x26, 0x7a, 0x0e, 0xe9, 0xd5, 0xa8, 0x79, 0xe3, 0x8f, 0xb6, - 0xc2, 0xd5, 0xd8, 0x9c, 0x86, 0x92, 0xe7, 0x65, 0x90, 0xc3, 0x3e, 0xf8, 0xb2, 0x75, 0x2e, 0x0c, - 0xbb, 0xf6, 0xaa, 0x67, 0x51, 0xd3, 0x36, 0x2b, 0x38, 0xb1, 0x09, 0x55, 0x31, 0xaa, 0xff, 0x84, - 0xde, 0xdd, 0x6a, 0x89, 0x3f, 0x6e, 0xb5, 0xc4, 0x87, 0x5b, 0x0d, 0x7d, 0xbc, 0xd5, 0xd0, 0x8f, - 0x0b, 0x0d, 0xfd, 0xba, 0xd0, 0xd0, 0xcd, 0x42, 0x43, 0xef, 0x16, 0x1a, 0xfa, 0x73, 0xa1, 0xa1, - 0xbf, 0x16, 0x5a, 0xe2, 0x03, 0xc7, 0xdf, 0x6b, 0xe8, 0xe6, 0xbd, 0x86, 0xe0, 0xe1, 0xc0, 0x1b, - 0x6f, 0x96, 0x51, 0x57, 0xf8, 0xff, 0x8e, 0xc5, 0x2d, 0x0b, 0x7d, 0x97, 0xe6, 0x87, 0xcb, 0xff, - 0x88, 0xd0, 0x2f, 0xc9, 0x54, 0xd3, 0xaa, 0xff, 0x96, 0xd4, 0x9a, 0xa1, 0xdc, 0x5a, 0x55, 0xfd, - 0xd2, 0x71, 0xdd, 0x73, 0xe6, 0xfd, 0xc0, 0xb8, 0x9b, 0x7f, 0x29, 0x8b, 0x38, 0xd5, 0x7f, 0x02, - 0x00, 0x00, 0xff, 0xff, 0x74, 0x97, 0x69, 0x12, 0x2f, 0x07, 0x00, 0x00, -} diff --git a/vendor/github.com/gogo/protobuf/types/wrappers.pb.go b/vendor/github.com/gogo/protobuf/types/wrappers.pb.go index 9ec3c54c41..fa1fd7ed3c 100644 --- a/vendor/github.com/gogo/protobuf/types/wrappers.pb.go +++ b/vendor/github.com/gogo/protobuf/types/wrappers.pb.go @@ -3,18 +3,17 @@ package types -import proto "github.com/gogo/protobuf/proto" -import fmt "fmt" -import math "math" - -import bytes "bytes" - -import strings "strings" -import reflect "reflect" - -import encoding_binary "encoding/binary" - -import io "io" +import ( + bytes "bytes" + encoding_binary "encoding/binary" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" + reflect "reflect" + strings "strings" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -41,7 +40,7 @@ type DoubleValue struct { func (m *DoubleValue) Reset() { *m = DoubleValue{} } func (*DoubleValue) ProtoMessage() {} func (*DoubleValue) Descriptor() ([]byte, []int) { - return fileDescriptor_wrappers_b0966e4a6118a07f, []int{0} + return fileDescriptor_5377b62bda767935, []int{0} } func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" } func (m *DoubleValue) XXX_Unmarshal(b []byte) error { @@ -52,15 +51,15 @@ func (m *DoubleValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return xxx_messageInfo_DoubleValue.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *DoubleValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_DoubleValue.Merge(dst, src) +func (m *DoubleValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_DoubleValue.Merge(m, src) } func (m *DoubleValue) XXX_Size() int { return m.Size() @@ -96,7 +95,7 @@ type FloatValue struct { func (m *FloatValue) Reset() { *m = FloatValue{} } func (*FloatValue) ProtoMessage() {} func (*FloatValue) Descriptor() ([]byte, []int) { - return fileDescriptor_wrappers_b0966e4a6118a07f, []int{1} + return fileDescriptor_5377b62bda767935, []int{1} } func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" } func (m *FloatValue) XXX_Unmarshal(b []byte) error { @@ -107,15 +106,15 @@ func (m *FloatValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FloatValue.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *FloatValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_FloatValue.Merge(dst, src) +func (m *FloatValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_FloatValue.Merge(m, src) } func (m *FloatValue) XXX_Size() int { return m.Size() @@ -151,7 +150,7 @@ type Int64Value struct { func (m *Int64Value) Reset() { *m = Int64Value{} } func (*Int64Value) ProtoMessage() {} func (*Int64Value) Descriptor() ([]byte, []int) { - return fileDescriptor_wrappers_b0966e4a6118a07f, []int{2} + return fileDescriptor_5377b62bda767935, []int{2} } func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" } func (m *Int64Value) XXX_Unmarshal(b []byte) error { @@ -162,15 +161,15 @@ func (m *Int64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Int64Value.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Int64Value) XXX_Merge(src proto.Message) { - xxx_messageInfo_Int64Value.Merge(dst, src) +func (m *Int64Value) XXX_Merge(src proto.Message) { + xxx_messageInfo_Int64Value.Merge(m, src) } func (m *Int64Value) XXX_Size() int { return m.Size() @@ -206,7 +205,7 @@ type UInt64Value struct { func (m *UInt64Value) Reset() { *m = UInt64Value{} } func (*UInt64Value) ProtoMessage() {} func (*UInt64Value) Descriptor() ([]byte, []int) { - return fileDescriptor_wrappers_b0966e4a6118a07f, []int{3} + return fileDescriptor_5377b62bda767935, []int{3} } func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" } func (m *UInt64Value) XXX_Unmarshal(b []byte) error { @@ -217,15 +216,15 @@ func (m *UInt64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return xxx_messageInfo_UInt64Value.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *UInt64Value) XXX_Merge(src proto.Message) { - xxx_messageInfo_UInt64Value.Merge(dst, src) +func (m *UInt64Value) XXX_Merge(src proto.Message) { + xxx_messageInfo_UInt64Value.Merge(m, src) } func (m *UInt64Value) XXX_Size() int { return m.Size() @@ -261,7 +260,7 @@ type Int32Value struct { func (m *Int32Value) Reset() { *m = Int32Value{} } func (*Int32Value) ProtoMessage() {} func (*Int32Value) Descriptor() ([]byte, []int) { - return fileDescriptor_wrappers_b0966e4a6118a07f, []int{4} + return fileDescriptor_5377b62bda767935, []int{4} } func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" } func (m *Int32Value) XXX_Unmarshal(b []byte) error { @@ -272,15 +271,15 @@ func (m *Int32Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Int32Value.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *Int32Value) XXX_Merge(src proto.Message) { - xxx_messageInfo_Int32Value.Merge(dst, src) +func (m *Int32Value) XXX_Merge(src proto.Message) { + xxx_messageInfo_Int32Value.Merge(m, src) } func (m *Int32Value) XXX_Size() int { return m.Size() @@ -316,7 +315,7 @@ type UInt32Value struct { func (m *UInt32Value) Reset() { *m = UInt32Value{} } func (*UInt32Value) ProtoMessage() {} func (*UInt32Value) Descriptor() ([]byte, []int) { - return fileDescriptor_wrappers_b0966e4a6118a07f, []int{5} + return fileDescriptor_5377b62bda767935, []int{5} } func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" } func (m *UInt32Value) XXX_Unmarshal(b []byte) error { @@ -327,15 +326,15 @@ func (m *UInt32Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return xxx_messageInfo_UInt32Value.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *UInt32Value) XXX_Merge(src proto.Message) { - xxx_messageInfo_UInt32Value.Merge(dst, src) +func (m *UInt32Value) XXX_Merge(src proto.Message) { + xxx_messageInfo_UInt32Value.Merge(m, src) } func (m *UInt32Value) XXX_Size() int { return m.Size() @@ -371,7 +370,7 @@ type BoolValue struct { func (m *BoolValue) Reset() { *m = BoolValue{} } func (*BoolValue) ProtoMessage() {} func (*BoolValue) Descriptor() ([]byte, []int) { - return fileDescriptor_wrappers_b0966e4a6118a07f, []int{6} + return fileDescriptor_5377b62bda767935, []int{6} } func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" } func (m *BoolValue) XXX_Unmarshal(b []byte) error { @@ -382,15 +381,15 @@ func (m *BoolValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_BoolValue.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *BoolValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_BoolValue.Merge(dst, src) +func (m *BoolValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_BoolValue.Merge(m, src) } func (m *BoolValue) XXX_Size() int { return m.Size() @@ -426,7 +425,7 @@ type StringValue struct { func (m *StringValue) Reset() { *m = StringValue{} } func (*StringValue) ProtoMessage() {} func (*StringValue) Descriptor() ([]byte, []int) { - return fileDescriptor_wrappers_b0966e4a6118a07f, []int{7} + return fileDescriptor_5377b62bda767935, []int{7} } func (*StringValue) XXX_WellKnownType() string { return "StringValue" } func (m *StringValue) XXX_Unmarshal(b []byte) error { @@ -437,15 +436,15 @@ func (m *StringValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return xxx_messageInfo_StringValue.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *StringValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_StringValue.Merge(dst, src) +func (m *StringValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_StringValue.Merge(m, src) } func (m *StringValue) XXX_Size() int { return m.Size() @@ -481,7 +480,7 @@ type BytesValue struct { func (m *BytesValue) Reset() { *m = BytesValue{} } func (*BytesValue) ProtoMessage() {} func (*BytesValue) Descriptor() ([]byte, []int) { - return fileDescriptor_wrappers_b0966e4a6118a07f, []int{8} + return fileDescriptor_5377b62bda767935, []int{8} } func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" } func (m *BytesValue) XXX_Unmarshal(b []byte) error { @@ -492,15 +491,15 @@ func (m *BytesValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_BytesValue.Marshal(b, m, deterministic) } else { b = b[:cap(b)] - n, err := m.MarshalTo(b) + n, err := m.MarshalToSizedBuffer(b) if err != nil { return nil, err } return b[:n], nil } } -func (dst *BytesValue) XXX_Merge(src proto.Message) { - xxx_messageInfo_BytesValue.Merge(dst, src) +func (m *BytesValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_BytesValue.Merge(m, src) } func (m *BytesValue) XXX_Size() int { return m.Size() @@ -532,6 +531,31 @@ func init() { proto.RegisterType((*StringValue)(nil), "google.protobuf.StringValue") proto.RegisterType((*BytesValue)(nil), "google.protobuf.BytesValue") } + +func init() { proto.RegisterFile("google/protobuf/wrappers.proto", fileDescriptor_5377b62bda767935) } + +var fileDescriptor_5377b62bda767935 = []byte{ + // 285 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f, + 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x2f, 0x4a, 0x2c, + 0x28, 0x48, 0x2d, 0x2a, 0xd6, 0x03, 0x8b, 0x08, 0xf1, 0x43, 0xe4, 0xf5, 0x60, 0xf2, 0x4a, 0xca, + 0x5c, 0xdc, 0x2e, 0xf9, 0xa5, 0x49, 0x39, 0xa9, 0x61, 0x89, 0x39, 0xa5, 0xa9, 0x42, 0x22, 0x5c, + 0xac, 0x65, 0x20, 0x86, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x63, 0x10, 0x84, 0xa3, 0xa4, 0xc4, 0xc5, + 0xe5, 0x96, 0x93, 0x9f, 0x58, 0x82, 0x45, 0x0d, 0x13, 0x92, 0x1a, 0xcf, 0xbc, 0x12, 0x33, 0x13, + 0x2c, 0x6a, 0x98, 0x61, 0x6a, 0x94, 0xb9, 0xb8, 0x43, 0x71, 0x29, 0x62, 0x41, 0x35, 0xc8, 0xd8, + 0x08, 0x8b, 0x1a, 0x56, 0x34, 0x83, 0xb0, 0x2a, 0xe2, 0x85, 0x29, 0x52, 0xe4, 0xe2, 0x74, 0xca, + 0xcf, 0xcf, 0xc1, 0xa2, 0x84, 0x03, 0xc9, 0x9c, 0xe0, 0x92, 0xa2, 0xcc, 0xbc, 0x74, 0x2c, 0x8a, + 0x38, 0x91, 0x1c, 0xe4, 0x54, 0x59, 0x92, 0x5a, 0x8c, 0x45, 0x0d, 0x0f, 0x54, 0x8d, 0x53, 0x3b, + 0xe3, 0x8d, 0x87, 0x72, 0x0c, 0x1f, 0x1e, 0xca, 0x31, 0xfe, 0x78, 0x28, 0xc7, 0xd8, 0xf0, 0x48, + 0x8e, 0x71, 0xc5, 0x23, 0x39, 0xc6, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, + 0x48, 0x8e, 0xf1, 0xc5, 0x23, 0x39, 0x86, 0x0f, 0x20, 0xf1, 0xc7, 0x72, 0x8c, 0x27, 0x1e, 0xcb, + 0x31, 0x72, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, 0x45, 0x87, 0x13, 0x6f, 0x38, 0x34, 0xbe, 0x02, + 0x40, 0x22, 0x01, 0x8c, 0x51, 0xac, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x3f, 0x18, 0x19, 0x17, 0x31, + 0x31, 0xbb, 0x07, 0x38, 0xad, 0x62, 0x92, 0x73, 0x87, 0x68, 0x09, 0x80, 0x6a, 0xd1, 0x0b, 0x4f, + 0xcd, 0xc9, 0xf1, 0xce, 0xcb, 0x2f, 0xcf, 0x0b, 0x01, 0xa9, 0x4c, 0x62, 0x03, 0x9b, 0x65, 0x0c, + 0x08, 0x00, 0x00, 0xff, 0xff, 0x31, 0x55, 0x64, 0x90, 0x0a, 0x02, 0x00, 0x00, +} + func (this *DoubleValue) Compare(that interface{}) int { if that == nil { if this == nil { @@ -1224,7 +1248,7 @@ func valueToGoStringWrappers(v interface{}, typ string) string { func (m *DoubleValue) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1232,26 +1256,32 @@ func (m *DoubleValue) Marshal() (dAtA []byte, err error) { } func (m *DoubleValue) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DoubleValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if m.Value != 0 { - dAtA[i] = 0x9 - i++ + i -= 8 encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Value)))) - i += 8 - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + i-- + dAtA[i] = 0x9 } - return i, nil + return len(dAtA) - i, nil } func (m *FloatValue) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1259,26 +1289,32 @@ func (m *FloatValue) Marshal() (dAtA []byte, err error) { } func (m *FloatValue) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *FloatValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if m.Value != 0 { - dAtA[i] = 0xd - i++ + i -= 4 encoding_binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(m.Value)))) - i += 4 - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + i-- + dAtA[i] = 0xd } - return i, nil + return len(dAtA) - i, nil } func (m *Int64Value) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1286,25 +1322,31 @@ func (m *Int64Value) Marshal() (dAtA []byte, err error) { } func (m *Int64Value) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Int64Value) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if m.Value != 0 { - dAtA[i] = 0x8 - i++ i = encodeVarintWrappers(dAtA, i, uint64(m.Value)) + i-- + dAtA[i] = 0x8 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil + return len(dAtA) - i, nil } func (m *UInt64Value) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1312,25 +1354,31 @@ func (m *UInt64Value) Marshal() (dAtA []byte, err error) { } func (m *UInt64Value) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UInt64Value) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if m.Value != 0 { - dAtA[i] = 0x8 - i++ i = encodeVarintWrappers(dAtA, i, uint64(m.Value)) + i-- + dAtA[i] = 0x8 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil + return len(dAtA) - i, nil } func (m *Int32Value) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1338,25 +1386,31 @@ func (m *Int32Value) Marshal() (dAtA []byte, err error) { } func (m *Int32Value) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Int32Value) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if m.Value != 0 { - dAtA[i] = 0x8 - i++ i = encodeVarintWrappers(dAtA, i, uint64(m.Value)) + i-- + dAtA[i] = 0x8 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil + return len(dAtA) - i, nil } func (m *UInt32Value) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1364,25 +1418,31 @@ func (m *UInt32Value) Marshal() (dAtA []byte, err error) { } func (m *UInt32Value) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UInt32Value) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if m.Value != 0 { - dAtA[i] = 0x8 - i++ i = encodeVarintWrappers(dAtA, i, uint64(m.Value)) + i-- + dAtA[i] = 0x8 } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) - } - return i, nil + return len(dAtA) - i, nil } func (m *BoolValue) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1390,30 +1450,36 @@ func (m *BoolValue) Marshal() (dAtA []byte, err error) { } func (m *BoolValue) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BoolValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if m.Value { - dAtA[i] = 0x8 - i++ + i-- if m.Value { dAtA[i] = 1 } else { dAtA[i] = 0 } - i++ - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + i-- + dAtA[i] = 0x8 } - return i, nil + return len(dAtA) - i, nil } func (m *StringValue) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1421,26 +1487,33 @@ func (m *StringValue) Marshal() (dAtA []byte, err error) { } func (m *StringValue) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *StringValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if len(m.Value) > 0 { - dAtA[i] = 0xa - i++ + i -= len(m.Value) + copy(dAtA[i:], m.Value) i = encodeVarintWrappers(dAtA, i, uint64(len(m.Value))) - i += copy(dAtA[i:], m.Value) - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + i-- + dAtA[i] = 0xa } - return i, nil + return len(dAtA) - i, nil } func (m *BytesValue) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) - n, err := m.MarshalTo(dAtA) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) if err != nil { return nil, err } @@ -1448,30 +1521,39 @@ func (m *BytesValue) Marshal() (dAtA []byte, err error) { } func (m *BytesValue) MarshalTo(dAtA []byte) (int, error) { - var i int + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BytesValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) _ = i var l int _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } if len(m.Value) > 0 { - dAtA[i] = 0xa - i++ + i -= len(m.Value) + copy(dAtA[i:], m.Value) i = encodeVarintWrappers(dAtA, i, uint64(len(m.Value))) - i += copy(dAtA[i:], m.Value) - } - if m.XXX_unrecognized != nil { - i += copy(dAtA[i:], m.XXX_unrecognized) + i-- + dAtA[i] = 0xa } - return i, nil + return len(dAtA) - i, nil } func encodeVarintWrappers(dAtA []byte, offset int, v uint64) int { + offset -= sovWrappers(v) + base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 offset++ } dAtA[offset] = uint8(v) - return offset + 1 + return base } func NewPopulatedDoubleValue(r randyWrappers, easy bool) *DoubleValue { this := &DoubleValue{} @@ -1643,6 +1725,9 @@ func encodeVarintPopulateWrappers(dAtA []byte, v uint64) []byte { return dAtA } func (m *DoubleValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Value != 0 { @@ -1655,6 +1740,9 @@ func (m *DoubleValue) Size() (n int) { } func (m *FloatValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Value != 0 { @@ -1667,6 +1755,9 @@ func (m *FloatValue) Size() (n int) { } func (m *Int64Value) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Value != 0 { @@ -1679,6 +1770,9 @@ func (m *Int64Value) Size() (n int) { } func (m *UInt64Value) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Value != 0 { @@ -1691,6 +1785,9 @@ func (m *UInt64Value) Size() (n int) { } func (m *Int32Value) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Value != 0 { @@ -1703,6 +1800,9 @@ func (m *Int32Value) Size() (n int) { } func (m *UInt32Value) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Value != 0 { @@ -1715,6 +1815,9 @@ func (m *UInt32Value) Size() (n int) { } func (m *BoolValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l if m.Value { @@ -1727,6 +1830,9 @@ func (m *BoolValue) Size() (n int) { } func (m *StringValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Value) @@ -1740,6 +1846,9 @@ func (m *StringValue) Size() (n int) { } func (m *BytesValue) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Value) @@ -1753,14 +1862,7 @@ func (m *BytesValue) Size() (n int) { } func sovWrappers(x uint64) (n int) { - for { - n++ - x >>= 7 - if x == 0 { - break - } - } - return n + return (math_bits.Len64(x|1) + 6) / 7 } func sozWrappers(x uint64) (n int) { return sovWrappers(uint64((x << 1) ^ uint64((int64(x) >> 63)))) @@ -1887,7 +1989,7 @@ func (m *DoubleValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1921,6 +2023,9 @@ func (m *DoubleValue) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthWrappers } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthWrappers + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -1949,7 +2054,7 @@ func (m *FloatValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -1983,6 +2088,9 @@ func (m *FloatValue) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthWrappers } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthWrappers + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2011,7 +2119,7 @@ func (m *Int64Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2039,7 +2147,7 @@ func (m *Int64Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Value |= (int64(b) & 0x7F) << shift + m.Value |= int64(b&0x7F) << shift if b < 0x80 { break } @@ -2053,6 +2161,9 @@ func (m *Int64Value) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthWrappers } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthWrappers + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2081,7 +2192,7 @@ func (m *UInt64Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2109,7 +2220,7 @@ func (m *UInt64Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Value |= (uint64(b) & 0x7F) << shift + m.Value |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2123,6 +2234,9 @@ func (m *UInt64Value) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthWrappers } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthWrappers + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2151,7 +2265,7 @@ func (m *Int32Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2179,7 +2293,7 @@ func (m *Int32Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Value |= (int32(b) & 0x7F) << shift + m.Value |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -2193,6 +2307,9 @@ func (m *Int32Value) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthWrappers } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthWrappers + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2221,7 +2338,7 @@ func (m *UInt32Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2249,7 +2366,7 @@ func (m *UInt32Value) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Value |= (uint32(b) & 0x7F) << shift + m.Value |= uint32(b&0x7F) << shift if b < 0x80 { break } @@ -2263,6 +2380,9 @@ func (m *UInt32Value) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthWrappers } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthWrappers + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2291,7 +2411,7 @@ func (m *BoolValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2319,7 +2439,7 @@ func (m *BoolValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (int(b) & 0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2334,6 +2454,9 @@ func (m *BoolValue) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthWrappers } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthWrappers + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2362,7 +2485,7 @@ func (m *StringValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2390,7 +2513,7 @@ func (m *StringValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= (uint64(b) & 0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2400,6 +2523,9 @@ func (m *StringValue) Unmarshal(dAtA []byte) error { return ErrInvalidLengthWrappers } postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthWrappers + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2414,6 +2540,9 @@ func (m *StringValue) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthWrappers } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthWrappers + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2442,7 +2571,7 @@ func (m *BytesValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - wire |= (uint64(b) & 0x7F) << shift + wire |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -2470,7 +2599,7 @@ func (m *BytesValue) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - byteLen |= (int(b) & 0x7F) << shift + byteLen |= int(b&0x7F) << shift if b < 0x80 { break } @@ -2479,6 +2608,9 @@ func (m *BytesValue) Unmarshal(dAtA []byte) error { return ErrInvalidLengthWrappers } postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthWrappers + } if postIndex > l { return io.ErrUnexpectedEOF } @@ -2496,6 +2628,9 @@ func (m *BytesValue) Unmarshal(dAtA []byte) error { if skippy < 0 { return ErrInvalidLengthWrappers } + if (iNdEx + skippy) < 0 { + return ErrInvalidLengthWrappers + } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } @@ -2563,10 +2698,13 @@ func skipWrappers(dAtA []byte) (n int, err error) { break } } - iNdEx += length if length < 0 { return 0, ErrInvalidLengthWrappers } + iNdEx += length + if iNdEx < 0 { + return 0, ErrInvalidLengthWrappers + } return iNdEx, nil case 3: for { @@ -2595,6 +2733,9 @@ func skipWrappers(dAtA []byte) (n int, err error) { return 0, err } iNdEx = start + next + if iNdEx < 0 { + return 0, ErrInvalidLengthWrappers + } } return iNdEx, nil case 4: @@ -2613,30 +2754,3 @@ var ( ErrInvalidLengthWrappers = fmt.Errorf("proto: negative length found during unmarshaling") ErrIntOverflowWrappers = fmt.Errorf("proto: integer overflow") ) - -func init() { - proto.RegisterFile("google/protobuf/wrappers.proto", fileDescriptor_wrappers_b0966e4a6118a07f) -} - -var fileDescriptor_wrappers_b0966e4a6118a07f = []byte{ - // 289 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f, - 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x2f, 0x4a, 0x2c, - 0x28, 0x48, 0x2d, 0x2a, 0xd6, 0x03, 0x8b, 0x08, 0xf1, 0x43, 0xe4, 0xf5, 0x60, 0xf2, 0x4a, 0xca, - 0x5c, 0xdc, 0x2e, 0xf9, 0xa5, 0x49, 0x39, 0xa9, 0x61, 0x89, 0x39, 0xa5, 0xa9, 0x42, 0x22, 0x5c, - 0xac, 0x65, 0x20, 0x86, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x63, 0x10, 0x84, 0xa3, 0xa4, 0xc4, 0xc5, - 0xe5, 0x96, 0x93, 0x9f, 0x58, 0x82, 0x45, 0x0d, 0x13, 0x92, 0x1a, 0xcf, 0xbc, 0x12, 0x33, 0x13, - 0x2c, 0x6a, 0x98, 0x61, 0x6a, 0x94, 0xb9, 0xb8, 0x43, 0x71, 0x29, 0x62, 0x41, 0x35, 0xc8, 0xd8, - 0x08, 0x8b, 0x1a, 0x56, 0x34, 0x83, 0xb0, 0x2a, 0xe2, 0x85, 0x29, 0x52, 0xe4, 0xe2, 0x74, 0xca, - 0xcf, 0xcf, 0xc1, 0xa2, 0x84, 0x03, 0xc9, 0x9c, 0xe0, 0x92, 0xa2, 0xcc, 0xbc, 0x74, 0x2c, 0x8a, - 0x38, 0x91, 0x1c, 0xe4, 0x54, 0x59, 0x92, 0x5a, 0x8c, 0x45, 0x0d, 0x0f, 0x54, 0x8d, 0x53, 0x37, - 0xe3, 0x85, 0x87, 0x72, 0x0c, 0x37, 0x1e, 0xca, 0x31, 0x7c, 0x78, 0x28, 0xc7, 0xf8, 0xe3, 0xa1, - 0x1c, 0x63, 0xc3, 0x23, 0x39, 0xc6, 0x15, 0x8f, 0xe4, 0x18, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, - 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x17, 0x8f, 0xe4, 0x18, 0x3e, 0x80, 0xc4, 0x1f, 0xcb, - 0x31, 0x9e, 0x78, 0x2c, 0xc7, 0xc8, 0x25, 0x9c, 0x9c, 0x9f, 0xab, 0x87, 0x16, 0x25, 0x4e, 0xbc, - 0xe1, 0xd0, 0x38, 0x0b, 0x00, 0x89, 0x04, 0x30, 0x46, 0xb1, 0x96, 0x54, 0x16, 0xa4, 0x16, 0xff, - 0x60, 0x64, 0x5c, 0xc4, 0xc4, 0xec, 0x1e, 0xe0, 0xb4, 0x8a, 0x49, 0xce, 0x1d, 0xa2, 0x25, 0x00, - 0xaa, 0x45, 0x2f, 0x3c, 0x35, 0x27, 0xc7, 0x3b, 0x2f, 0xbf, 0x3c, 0x2f, 0x04, 0xa4, 0x32, 0x89, - 0x0d, 0x6c, 0x96, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xff, 0xc7, 0xfe, 0x37, 0x0e, 0x02, 0x00, - 0x00, -} diff --git a/vendor/github.com/gogo/protobuf/types/wrappers_gogo.go b/vendor/github.com/gogo/protobuf/types/wrappers_gogo.go new file mode 100644 index 0000000000..d905df3605 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/types/wrappers_gogo.go @@ -0,0 +1,300 @@ +// Protocol Buffers for Go with Gadgets +// +// Copyright (c) 2018, The GoGo Authors. All rights reserved. +// http://github.com/gogo/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package types + +func NewPopulatedStdDouble(r randyWrappers, easy bool) *float64 { + v := NewPopulatedDoubleValue(r, easy) + return &v.Value +} + +func SizeOfStdDouble(v float64) int { + pv := &DoubleValue{Value: v} + return pv.Size() +} + +func StdDoubleMarshal(v float64) ([]byte, error) { + size := SizeOfStdDouble(v) + buf := make([]byte, size) + _, err := StdDoubleMarshalTo(v, buf) + return buf, err +} + +func StdDoubleMarshalTo(v float64, data []byte) (int, error) { + pv := &DoubleValue{Value: v} + return pv.MarshalTo(data) +} + +func StdDoubleUnmarshal(v *float64, data []byte) error { + pv := &DoubleValue{} + if err := pv.Unmarshal(data); err != nil { + return err + } + *v = pv.Value + return nil +} +func NewPopulatedStdFloat(r randyWrappers, easy bool) *float32 { + v := NewPopulatedFloatValue(r, easy) + return &v.Value +} + +func SizeOfStdFloat(v float32) int { + pv := &FloatValue{Value: v} + return pv.Size() +} + +func StdFloatMarshal(v float32) ([]byte, error) { + size := SizeOfStdFloat(v) + buf := make([]byte, size) + _, err := StdFloatMarshalTo(v, buf) + return buf, err +} + +func StdFloatMarshalTo(v float32, data []byte) (int, error) { + pv := &FloatValue{Value: v} + return pv.MarshalTo(data) +} + +func StdFloatUnmarshal(v *float32, data []byte) error { + pv := &FloatValue{} + if err := pv.Unmarshal(data); err != nil { + return err + } + *v = pv.Value + return nil +} +func NewPopulatedStdInt64(r randyWrappers, easy bool) *int64 { + v := NewPopulatedInt64Value(r, easy) + return &v.Value +} + +func SizeOfStdInt64(v int64) int { + pv := &Int64Value{Value: v} + return pv.Size() +} + +func StdInt64Marshal(v int64) ([]byte, error) { + size := SizeOfStdInt64(v) + buf := make([]byte, size) + _, err := StdInt64MarshalTo(v, buf) + return buf, err +} + +func StdInt64MarshalTo(v int64, data []byte) (int, error) { + pv := &Int64Value{Value: v} + return pv.MarshalTo(data) +} + +func StdInt64Unmarshal(v *int64, data []byte) error { + pv := &Int64Value{} + if err := pv.Unmarshal(data); err != nil { + return err + } + *v = pv.Value + return nil +} +func NewPopulatedStdUInt64(r randyWrappers, easy bool) *uint64 { + v := NewPopulatedUInt64Value(r, easy) + return &v.Value +} + +func SizeOfStdUInt64(v uint64) int { + pv := &UInt64Value{Value: v} + return pv.Size() +} + +func StdUInt64Marshal(v uint64) ([]byte, error) { + size := SizeOfStdUInt64(v) + buf := make([]byte, size) + _, err := StdUInt64MarshalTo(v, buf) + return buf, err +} + +func StdUInt64MarshalTo(v uint64, data []byte) (int, error) { + pv := &UInt64Value{Value: v} + return pv.MarshalTo(data) +} + +func StdUInt64Unmarshal(v *uint64, data []byte) error { + pv := &UInt64Value{} + if err := pv.Unmarshal(data); err != nil { + return err + } + *v = pv.Value + return nil +} +func NewPopulatedStdInt32(r randyWrappers, easy bool) *int32 { + v := NewPopulatedInt32Value(r, easy) + return &v.Value +} + +func SizeOfStdInt32(v int32) int { + pv := &Int32Value{Value: v} + return pv.Size() +} + +func StdInt32Marshal(v int32) ([]byte, error) { + size := SizeOfStdInt32(v) + buf := make([]byte, size) + _, err := StdInt32MarshalTo(v, buf) + return buf, err +} + +func StdInt32MarshalTo(v int32, data []byte) (int, error) { + pv := &Int32Value{Value: v} + return pv.MarshalTo(data) +} + +func StdInt32Unmarshal(v *int32, data []byte) error { + pv := &Int32Value{} + if err := pv.Unmarshal(data); err != nil { + return err + } + *v = pv.Value + return nil +} +func NewPopulatedStdUInt32(r randyWrappers, easy bool) *uint32 { + v := NewPopulatedUInt32Value(r, easy) + return &v.Value +} + +func SizeOfStdUInt32(v uint32) int { + pv := &UInt32Value{Value: v} + return pv.Size() +} + +func StdUInt32Marshal(v uint32) ([]byte, error) { + size := SizeOfStdUInt32(v) + buf := make([]byte, size) + _, err := StdUInt32MarshalTo(v, buf) + return buf, err +} + +func StdUInt32MarshalTo(v uint32, data []byte) (int, error) { + pv := &UInt32Value{Value: v} + return pv.MarshalTo(data) +} + +func StdUInt32Unmarshal(v *uint32, data []byte) error { + pv := &UInt32Value{} + if err := pv.Unmarshal(data); err != nil { + return err + } + *v = pv.Value + return nil +} +func NewPopulatedStdBool(r randyWrappers, easy bool) *bool { + v := NewPopulatedBoolValue(r, easy) + return &v.Value +} + +func SizeOfStdBool(v bool) int { + pv := &BoolValue{Value: v} + return pv.Size() +} + +func StdBoolMarshal(v bool) ([]byte, error) { + size := SizeOfStdBool(v) + buf := make([]byte, size) + _, err := StdBoolMarshalTo(v, buf) + return buf, err +} + +func StdBoolMarshalTo(v bool, data []byte) (int, error) { + pv := &BoolValue{Value: v} + return pv.MarshalTo(data) +} + +func StdBoolUnmarshal(v *bool, data []byte) error { + pv := &BoolValue{} + if err := pv.Unmarshal(data); err != nil { + return err + } + *v = pv.Value + return nil +} +func NewPopulatedStdString(r randyWrappers, easy bool) *string { + v := NewPopulatedStringValue(r, easy) + return &v.Value +} + +func SizeOfStdString(v string) int { + pv := &StringValue{Value: v} + return pv.Size() +} + +func StdStringMarshal(v string) ([]byte, error) { + size := SizeOfStdString(v) + buf := make([]byte, size) + _, err := StdStringMarshalTo(v, buf) + return buf, err +} + +func StdStringMarshalTo(v string, data []byte) (int, error) { + pv := &StringValue{Value: v} + return pv.MarshalTo(data) +} + +func StdStringUnmarshal(v *string, data []byte) error { + pv := &StringValue{} + if err := pv.Unmarshal(data); err != nil { + return err + } + *v = pv.Value + return nil +} +func NewPopulatedStdBytes(r randyWrappers, easy bool) *[]byte { + v := NewPopulatedBytesValue(r, easy) + return &v.Value +} + +func SizeOfStdBytes(v []byte) int { + pv := &BytesValue{Value: v} + return pv.Size() +} + +func StdBytesMarshal(v []byte) ([]byte, error) { + size := SizeOfStdBytes(v) + buf := make([]byte, size) + _, err := StdBytesMarshalTo(v, buf) + return buf, err +} + +func StdBytesMarshalTo(v []byte, data []byte) (int, error) { + pv := &BytesValue{Value: v} + return pv.MarshalTo(data) +} + +func StdBytesUnmarshal(v *[]byte, data []byte) error { + pv := &BytesValue{} + if err := pv.Unmarshal(data); err != nil { + return err + } + *v = pv.Value + return nil +} diff --git a/vendor/github.com/golang/protobuf/LICENSE b/vendor/github.com/golang/protobuf/LICENSE index 1b1b1921ef..0f646931a4 100644 --- a/vendor/github.com/golang/protobuf/LICENSE +++ b/vendor/github.com/golang/protobuf/LICENSE @@ -1,7 +1,4 @@ -Go support for Protocol Buffers - Google's data interchange format - Copyright 2010 The Go Authors. All rights reserved. -https://github.com/golang/protobuf Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are diff --git a/vendor/github.com/golang/protobuf/proto/decode.go b/vendor/github.com/golang/protobuf/proto/decode.go index d9aa3c42d6..63b0f08bef 100644 --- a/vendor/github.com/golang/protobuf/proto/decode.go +++ b/vendor/github.com/golang/protobuf/proto/decode.go @@ -186,7 +186,6 @@ func (p *Buffer) DecodeVarint() (x uint64, err error) { if b&0x80 == 0 { goto done } - // x -= 0x80 << 63 // Always zero. return 0, errOverflow diff --git a/vendor/github.com/golang/protobuf/proto/deprecated.go b/vendor/github.com/golang/protobuf/proto/deprecated.go new file mode 100644 index 0000000000..35b882c09a --- /dev/null +++ b/vendor/github.com/golang/protobuf/proto/deprecated.go @@ -0,0 +1,63 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2018 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package proto + +import "errors" + +// Deprecated: do not use. +type Stats struct{ Emalloc, Dmalloc, Encode, Decode, Chit, Cmiss, Size uint64 } + +// Deprecated: do not use. +func GetStats() Stats { return Stats{} } + +// Deprecated: do not use. +func MarshalMessageSet(interface{}) ([]byte, error) { + return nil, errors.New("proto: not implemented") +} + +// Deprecated: do not use. +func UnmarshalMessageSet([]byte, interface{}) error { + return errors.New("proto: not implemented") +} + +// Deprecated: do not use. +func MarshalMessageSetJSON(interface{}) ([]byte, error) { + return nil, errors.New("proto: not implemented") +} + +// Deprecated: do not use. +func UnmarshalMessageSetJSON([]byte, interface{}) error { + return errors.New("proto: not implemented") +} + +// Deprecated: do not use. +func RegisterMessageSetType(Message, int32, string) {} diff --git a/vendor/github.com/golang/protobuf/proto/encode.go b/vendor/github.com/golang/protobuf/proto/encode.go index c27d35f866..3abfed2cff 100644 --- a/vendor/github.com/golang/protobuf/proto/encode.go +++ b/vendor/github.com/golang/protobuf/proto/encode.go @@ -37,27 +37,9 @@ package proto import ( "errors" - "fmt" "reflect" ) -// RequiredNotSetError is the error returned if Marshal is called with -// a protocol buffer struct whose required fields have not -// all been initialized. It is also the error returned if Unmarshal is -// called with an encoded protocol buffer that does not include all the -// required fields. -// -// When printed, RequiredNotSetError reports the first unset required field in a -// message. If the field cannot be precisely determined, it is reported as -// "{Unknown}". -type RequiredNotSetError struct { - field string -} - -func (e *RequiredNotSetError) Error() string { - return fmt.Sprintf("proto: required field %q not set", e.field) -} - var ( // errRepeatedHasNil is the error returned if Marshal is called with // a struct with a repeated field containing a nil element. diff --git a/vendor/github.com/golang/protobuf/proto/equal.go b/vendor/github.com/golang/protobuf/proto/equal.go index d4db5a1c14..f9b6e41b3c 100644 --- a/vendor/github.com/golang/protobuf/proto/equal.go +++ b/vendor/github.com/golang/protobuf/proto/equal.go @@ -246,7 +246,8 @@ func equalExtMap(base reflect.Type, em1, em2 map[int32]Extension) bool { return false } - m1, m2 := e1.value, e2.value + m1 := extensionAsLegacyType(e1.value) + m2 := extensionAsLegacyType(e2.value) if m1 == nil && m2 == nil { // Both have only encoded form. diff --git a/vendor/github.com/golang/protobuf/proto/extensions.go b/vendor/github.com/golang/protobuf/proto/extensions.go index 816a3b9d6c..fa88add30a 100644 --- a/vendor/github.com/golang/protobuf/proto/extensions.go +++ b/vendor/github.com/golang/protobuf/proto/extensions.go @@ -185,9 +185,25 @@ type Extension struct { // extension will have only enc set. When such an extension is // accessed using GetExtension (or GetExtensions) desc and value // will be set. - desc *ExtensionDesc + desc *ExtensionDesc + + // value is a concrete value for the extension field. Let the type of + // desc.ExtensionType be the "API type" and the type of Extension.value + // be the "storage type". The API type and storage type are the same except: + // * For scalars (except []byte), the API type uses *T, + // while the storage type uses T. + // * For repeated fields, the API type uses []T, while the storage type + // uses *[]T. + // + // The reason for the divergence is so that the storage type more naturally + // matches what is expected of when retrieving the values through the + // protobuf reflection APIs. + // + // The value may only be populated if desc is also populated. value interface{} - enc []byte + + // enc is the raw bytes for the extension field. + enc []byte } // SetRawExtension is for testing only. @@ -334,7 +350,7 @@ func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) { // descriptors with the same field number. return nil, errors.New("proto: descriptor conflict") } - return e.value, nil + return extensionAsLegacyType(e.value), nil } if extension.ExtensionType == nil { @@ -349,11 +365,11 @@ func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) { // Remember the decoded version and drop the encoded version. // That way it is safe to mutate what we return. - e.value = v + e.value = extensionAsStorageType(v) e.desc = extension e.enc = nil emap[extension.Field] = e - return e.value, nil + return extensionAsLegacyType(e.value), nil } // defaultExtensionValue returns the default value for extension. @@ -488,7 +504,7 @@ func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error } typ := reflect.TypeOf(extension.ExtensionType) if typ != reflect.TypeOf(value) { - return errors.New("proto: bad extension value type") + return fmt.Errorf("proto: bad extension value type. got: %T, want: %T", value, extension.ExtensionType) } // nil extension values need to be caught early, because the // encoder can't distinguish an ErrNil due to a nil extension @@ -500,7 +516,7 @@ func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error } extmap := epb.extensionsWrite() - extmap[extension.Field] = Extension{desc: extension, value: value} + extmap[extension.Field] = Extension{desc: extension, value: extensionAsStorageType(value)} return nil } @@ -541,3 +557,51 @@ func RegisterExtension(desc *ExtensionDesc) { func RegisteredExtensions(pb Message) map[int32]*ExtensionDesc { return extensionMaps[reflect.TypeOf(pb).Elem()] } + +// extensionAsLegacyType converts an value in the storage type as the API type. +// See Extension.value. +func extensionAsLegacyType(v interface{}) interface{} { + switch rv := reflect.ValueOf(v); rv.Kind() { + case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String: + // Represent primitive types as a pointer to the value. + rv2 := reflect.New(rv.Type()) + rv2.Elem().Set(rv) + v = rv2.Interface() + case reflect.Ptr: + // Represent slice types as the value itself. + switch rv.Type().Elem().Kind() { + case reflect.Slice: + if rv.IsNil() { + v = reflect.Zero(rv.Type().Elem()).Interface() + } else { + v = rv.Elem().Interface() + } + } + } + return v +} + +// extensionAsStorageType converts an value in the API type as the storage type. +// See Extension.value. +func extensionAsStorageType(v interface{}) interface{} { + switch rv := reflect.ValueOf(v); rv.Kind() { + case reflect.Ptr: + // Represent slice types as the value itself. + switch rv.Type().Elem().Kind() { + case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String: + if rv.IsNil() { + v = reflect.Zero(rv.Type().Elem()).Interface() + } else { + v = rv.Elem().Interface() + } + } + case reflect.Slice: + // Represent slice types as a pointer to the value. + if rv.Type().Elem().Kind() != reflect.Uint8 { + rv2 := reflect.New(rv.Type()) + rv2.Elem().Set(rv) + v = rv2.Interface() + } + } + return v +} diff --git a/vendor/github.com/golang/protobuf/proto/lib.go b/vendor/github.com/golang/protobuf/proto/lib.go index 0e2191b8ad..fdd328bb7f 100644 --- a/vendor/github.com/golang/protobuf/proto/lib.go +++ b/vendor/github.com/golang/protobuf/proto/lib.go @@ -265,7 +265,6 @@ package proto import ( "encoding/json" - "errors" "fmt" "log" "reflect" @@ -274,34 +273,73 @@ import ( "sync" ) -var errInvalidUTF8 = errors.New("proto: invalid UTF-8 string") +// RequiredNotSetError is an error type returned by either Marshal or Unmarshal. +// Marshal reports this when a required field is not initialized. +// Unmarshal reports this when a required field is missing from the wire data. +type RequiredNotSetError struct{ field string } -// Message is implemented by generated protocol buffer messages. -type Message interface { - Reset() - String() string - ProtoMessage() +func (e *RequiredNotSetError) Error() string { + if e.field == "" { + return fmt.Sprintf("proto: required field not set") + } + return fmt.Sprintf("proto: required field %q not set", e.field) +} +func (e *RequiredNotSetError) RequiredNotSet() bool { + return true } -// Stats records allocation details about the protocol buffer encoders -// and decoders. Useful for tuning the library itself. -type Stats struct { - Emalloc uint64 // mallocs in encode - Dmalloc uint64 // mallocs in decode - Encode uint64 // number of encodes - Decode uint64 // number of decodes - Chit uint64 // number of cache hits - Cmiss uint64 // number of cache misses - Size uint64 // number of sizes +type invalidUTF8Error struct{ field string } + +func (e *invalidUTF8Error) Error() string { + if e.field == "" { + return "proto: invalid UTF-8 detected" + } + return fmt.Sprintf("proto: field %q contains invalid UTF-8", e.field) +} +func (e *invalidUTF8Error) InvalidUTF8() bool { + return true +} + +// errInvalidUTF8 is a sentinel error to identify fields with invalid UTF-8. +// This error should not be exposed to the external API as such errors should +// be recreated with the field information. +var errInvalidUTF8 = &invalidUTF8Error{} + +// isNonFatal reports whether the error is either a RequiredNotSet error +// or a InvalidUTF8 error. +func isNonFatal(err error) bool { + if re, ok := err.(interface{ RequiredNotSet() bool }); ok && re.RequiredNotSet() { + return true + } + if re, ok := err.(interface{ InvalidUTF8() bool }); ok && re.InvalidUTF8() { + return true + } + return false } -// Set to true to enable stats collection. -const collectStats = false +type nonFatal struct{ E error } -var stats Stats +// Merge merges err into nf and reports whether it was successful. +// Otherwise it returns false for any fatal non-nil errors. +func (nf *nonFatal) Merge(err error) (ok bool) { + if err == nil { + return true // not an error + } + if !isNonFatal(err) { + return false // fatal error + } + if nf.E == nil { + nf.E = err // store first instance of non-fatal error + } + return true +} -// GetStats returns a copy of the global Stats structure. -func GetStats() Stats { return stats } +// Message is implemented by generated protocol buffer messages. +type Message interface { + Reset() + String() string + ProtoMessage() +} // A Buffer is a buffer manager for marshaling and unmarshaling // protocol buffers. It may be reused between invocations to @@ -902,13 +940,19 @@ func isProto3Zero(v reflect.Value) bool { return false } -// ProtoPackageIsVersion2 is referenced from generated protocol buffer files -// to assert that that code is compatible with this version of the proto package. -const ProtoPackageIsVersion2 = true +const ( + // ProtoPackageIsVersion3 is referenced from generated protocol buffer files + // to assert that that code is compatible with this version of the proto package. + ProtoPackageIsVersion3 = true + + // ProtoPackageIsVersion2 is referenced from generated protocol buffer files + // to assert that that code is compatible with this version of the proto package. + ProtoPackageIsVersion2 = true -// ProtoPackageIsVersion1 is referenced from generated protocol buffer files -// to assert that that code is compatible with this version of the proto package. -const ProtoPackageIsVersion1 = true + // ProtoPackageIsVersion1 is referenced from generated protocol buffer files + // to assert that that code is compatible with this version of the proto package. + ProtoPackageIsVersion1 = true +) // InternalMessageInfo is a type used internally by generated .pb.go files. // This type is not intended to be used by non-generated code. diff --git a/vendor/github.com/golang/protobuf/proto/message_set.go b/vendor/github.com/golang/protobuf/proto/message_set.go index 3b6ca41d5e..f48a756761 100644 --- a/vendor/github.com/golang/protobuf/proto/message_set.go +++ b/vendor/github.com/golang/protobuf/proto/message_set.go @@ -36,13 +36,7 @@ package proto */ import ( - "bytes" - "encoding/json" "errors" - "fmt" - "reflect" - "sort" - "sync" ) // errNoMessageTypeID occurs when a protocol buffer does not have a message type ID. @@ -145,46 +139,9 @@ func skipVarint(buf []byte) []byte { return buf[i+1:] } -// MarshalMessageSet encodes the extension map represented by m in the message set wire format. -// It is called by generated Marshal methods on protocol buffer messages with the message_set_wire_format option. -func MarshalMessageSet(exts interface{}) ([]byte, error) { - return marshalMessageSet(exts, false) -} - -// marshaMessageSet implements above function, with the opt to turn on / off deterministic during Marshal. -func marshalMessageSet(exts interface{}, deterministic bool) ([]byte, error) { - switch exts := exts.(type) { - case *XXX_InternalExtensions: - var u marshalInfo - siz := u.sizeMessageSet(exts) - b := make([]byte, 0, siz) - return u.appendMessageSet(b, exts, deterministic) - - case map[int32]Extension: - // This is an old-style extension map. - // Wrap it in a new-style XXX_InternalExtensions. - ie := XXX_InternalExtensions{ - p: &struct { - mu sync.Mutex - extensionMap map[int32]Extension - }{ - extensionMap: exts, - }, - } - - var u marshalInfo - siz := u.sizeMessageSet(&ie) - b := make([]byte, 0, siz) - return u.appendMessageSet(b, &ie, deterministic) - - default: - return nil, errors.New("proto: not an extension map") - } -} - -// UnmarshalMessageSet decodes the extension map encoded in buf in the message set wire format. +// unmarshalMessageSet decodes the extension map encoded in buf in the message set wire format. // It is called by Unmarshal methods on protocol buffer messages with the message_set_wire_format option. -func UnmarshalMessageSet(buf []byte, exts interface{}) error { +func unmarshalMessageSet(buf []byte, exts interface{}) error { var m map[int32]Extension switch exts := exts.(type) { case *XXX_InternalExtensions: @@ -222,93 +179,3 @@ func UnmarshalMessageSet(buf []byte, exts interface{}) error { } return nil } - -// MarshalMessageSetJSON encodes the extension map represented by m in JSON format. -// It is called by generated MarshalJSON methods on protocol buffer messages with the message_set_wire_format option. -func MarshalMessageSetJSON(exts interface{}) ([]byte, error) { - var m map[int32]Extension - switch exts := exts.(type) { - case *XXX_InternalExtensions: - var mu sync.Locker - m, mu = exts.extensionsRead() - if m != nil { - // Keep the extensions map locked until we're done marshaling to prevent - // races between marshaling and unmarshaling the lazily-{en,de}coded - // values. - mu.Lock() - defer mu.Unlock() - } - case map[int32]Extension: - m = exts - default: - return nil, errors.New("proto: not an extension map") - } - var b bytes.Buffer - b.WriteByte('{') - - // Process the map in key order for deterministic output. - ids := make([]int32, 0, len(m)) - for id := range m { - ids = append(ids, id) - } - sort.Sort(int32Slice(ids)) // int32Slice defined in text.go - - for i, id := range ids { - ext := m[id] - msd, ok := messageSetMap[id] - if !ok { - // Unknown type; we can't render it, so skip it. - continue - } - - if i > 0 && b.Len() > 1 { - b.WriteByte(',') - } - - fmt.Fprintf(&b, `"[%s]":`, msd.name) - - x := ext.value - if x == nil { - x = reflect.New(msd.t.Elem()).Interface() - if err := Unmarshal(ext.enc, x.(Message)); err != nil { - return nil, err - } - } - d, err := json.Marshal(x) - if err != nil { - return nil, err - } - b.Write(d) - } - b.WriteByte('}') - return b.Bytes(), nil -} - -// UnmarshalMessageSetJSON decodes the extension map encoded in buf in JSON format. -// It is called by generated UnmarshalJSON methods on protocol buffer messages with the message_set_wire_format option. -func UnmarshalMessageSetJSON(buf []byte, exts interface{}) error { - // Common-case fast path. - if len(buf) == 0 || bytes.Equal(buf, []byte("{}")) { - return nil - } - - // This is fairly tricky, and it's not clear that it is needed. - return errors.New("TODO: UnmarshalMessageSetJSON not yet implemented") -} - -// A global registry of types that can be used in a MessageSet. - -var messageSetMap = make(map[int32]messageSetDesc) - -type messageSetDesc struct { - t reflect.Type // pointer to struct - name string -} - -// RegisterMessageSetType is called from the generated code. -func RegisterMessageSetType(m Message, fieldNum int32, name string) { - messageSetMap[fieldNum] = messageSetDesc{ - t: reflect.TypeOf(m), - name: name, - } -} diff --git a/vendor/github.com/golang/protobuf/proto/pointer_reflect.go b/vendor/github.com/golang/protobuf/proto/pointer_reflect.go index b6cad90834..94fa9194a8 100644 --- a/vendor/github.com/golang/protobuf/proto/pointer_reflect.go +++ b/vendor/github.com/golang/protobuf/proto/pointer_reflect.go @@ -79,10 +79,13 @@ func toPointer(i *Message) pointer { // toAddrPointer converts an interface to a pointer that points to // the interface data. -func toAddrPointer(i *interface{}, isptr bool) pointer { +func toAddrPointer(i *interface{}, isptr, deref bool) pointer { v := reflect.ValueOf(*i) u := reflect.New(v.Type()) u.Elem().Set(v) + if deref { + u = u.Elem() + } return pointer{v: u} } diff --git a/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go b/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go index d55a335d94..dbfffe071b 100644 --- a/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go +++ b/vendor/github.com/golang/protobuf/proto/pointer_unsafe.go @@ -85,16 +85,21 @@ func toPointer(i *Message) pointer { // toAddrPointer converts an interface to a pointer that points to // the interface data. -func toAddrPointer(i *interface{}, isptr bool) pointer { +func toAddrPointer(i *interface{}, isptr, deref bool) (p pointer) { // Super-tricky - read or get the address of data word of interface value. if isptr { // The interface is of pointer type, thus it is a direct interface. // The data word is the pointer data itself. We take its address. - return pointer{p: unsafe.Pointer(uintptr(unsafe.Pointer(i)) + ptrSize)} + p = pointer{p: unsafe.Pointer(uintptr(unsafe.Pointer(i)) + ptrSize)} + } else { + // The interface is not of pointer type. The data word is the pointer + // to the data. + p = pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]} } - // The interface is not of pointer type. The data word is the pointer - // to the data. - return pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]} + if deref { + p.p = *(*unsafe.Pointer)(p.p) + } + return p } // valToPointer converts v to a pointer. v must be of pointer type. diff --git a/vendor/github.com/golang/protobuf/proto/properties.go b/vendor/github.com/golang/protobuf/proto/properties.go index f710adab09..a4b8c0cd3a 100644 --- a/vendor/github.com/golang/protobuf/proto/properties.go +++ b/vendor/github.com/golang/protobuf/proto/properties.go @@ -38,7 +38,6 @@ package proto import ( "fmt" "log" - "os" "reflect" "sort" "strconv" @@ -139,7 +138,7 @@ type Properties struct { Repeated bool Packed bool // relevant for repeated primitives only Enum string // set for enum types only - proto3 bool // whether this is known to be a proto3 field; set for []byte only + proto3 bool // whether this is known to be a proto3 field oneof bool // whether this is a oneof field Default string // default value @@ -148,9 +147,9 @@ type Properties struct { stype reflect.Type // set for struct types only sprop *StructProperties // set for struct types only - mtype reflect.Type // set for map types only - mkeyprop *Properties // set for map types only - mvalprop *Properties // set for map types only + mtype reflect.Type // set for map types only + MapKeyProp *Properties // set for map types only + MapValProp *Properties // set for map types only } // String formats the properties in the protobuf struct field tag style. @@ -194,7 +193,7 @@ func (p *Properties) Parse(s string) { // "bytes,49,opt,name=foo,def=hello!" fields := strings.Split(s, ",") // breaks def=, but handled below. if len(fields) < 2 { - fmt.Fprintf(os.Stderr, "proto: tag has too few fields: %q\n", s) + log.Printf("proto: tag has too few fields: %q", s) return } @@ -214,7 +213,7 @@ func (p *Properties) Parse(s string) { p.WireType = WireBytes // no numeric converter for non-numeric types default: - fmt.Fprintf(os.Stderr, "proto: tag has unknown wire type: %q\n", s) + log.Printf("proto: tag has unknown wire type: %q", s) return } @@ -275,16 +274,16 @@ func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, loc case reflect.Map: p.mtype = t1 - p.mkeyprop = &Properties{} - p.mkeyprop.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) - p.mvalprop = &Properties{} + p.MapKeyProp = &Properties{} + p.MapKeyProp.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp) + p.MapValProp = &Properties{} vtype := p.mtype.Elem() if vtype.Kind() != reflect.Ptr && vtype.Kind() != reflect.Slice { // The value type is not a message (*T) or bytes ([]byte), // so we need encoders for the pointer to this type. vtype = reflect.PtrTo(vtype) } - p.mvalprop.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) + p.MapValProp.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp) } if p.stype != nil { @@ -334,9 +333,6 @@ func GetProperties(t reflect.Type) *StructProperties { sprop, ok := propertiesMap[t] propertiesMu.RUnlock() if ok { - if collectStats { - stats.Chit++ - } return sprop } @@ -346,17 +342,20 @@ func GetProperties(t reflect.Type) *StructProperties { return sprop } +type ( + oneofFuncsIface interface { + XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{}) + } + oneofWrappersIface interface { + XXX_OneofWrappers() []interface{} + } +) + // getPropertiesLocked requires that propertiesMu is held. func getPropertiesLocked(t reflect.Type) *StructProperties { if prop, ok := propertiesMap[t]; ok { - if collectStats { - stats.Chit++ - } return prop } - if collectStats { - stats.Cmiss++ - } prop := new(StructProperties) // in case of recursive protos, fill this in now. @@ -391,13 +390,14 @@ func getPropertiesLocked(t reflect.Type) *StructProperties { // Re-order prop.order. sort.Sort(prop) - type oneofMessage interface { - XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{}) + var oots []interface{} + switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) { + case oneofFuncsIface: + _, _, _, oots = m.XXX_OneofFuncs() + case oneofWrappersIface: + oots = m.XXX_OneofWrappers() } - if om, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(oneofMessage); ok { - var oots []interface{} - _, _, _, oots = om.XXX_OneofFuncs() - + if len(oots) > 0 { // Interpret oneof metadata. prop.OneofTypes = make(map[string]*OneofProperties) for _, oot := range oots { diff --git a/vendor/github.com/golang/protobuf/proto/table_marshal.go b/vendor/github.com/golang/protobuf/proto/table_marshal.go index 0f212b3029..5cb11fa955 100644 --- a/vendor/github.com/golang/protobuf/proto/table_marshal.go +++ b/vendor/github.com/golang/protobuf/proto/table_marshal.go @@ -87,6 +87,7 @@ type marshalElemInfo struct { sizer sizer marshaler marshaler isptr bool // elem is pointer typed, thus interface of this type is a direct interface (extension only) + deref bool // dereference the pointer before operating on it; implies isptr } var ( @@ -231,7 +232,7 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte return b, err } - var err, errreq error + var err, errLater error // The old marshaler encodes extensions at beginning. if u.extensions.IsValid() { e := ptr.offset(u.extensions).toExtensions() @@ -252,11 +253,13 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte } } for _, f := range u.fields { - if f.required && errreq == nil { + if f.required { if ptr.offset(f.field).getPointer().isNil() { // Required field is not set. // We record the error but keep going, to give a complete marshaling. - errreq = &RequiredNotSetError{f.name} + if errLater == nil { + errLater = &RequiredNotSetError{f.name} + } continue } } @@ -269,14 +272,21 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte if err1, ok := err.(*RequiredNotSetError); ok { // Required field in submessage is not set. // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = &RequiredNotSetError{f.name + "." + err1.field} + if errLater == nil { + errLater = &RequiredNotSetError{f.name + "." + err1.field} } continue } if err == errRepeatedHasNil { err = errors.New("proto: repeated field " + f.name + " has nil element") } + if err == errInvalidUTF8 { + if errLater == nil { + fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name + errLater = &invalidUTF8Error{fullName} + } + continue + } return b, err } } @@ -284,7 +294,7 @@ func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte s := *ptr.offset(u.unrecognized).toBytes() b = append(b, s...) } - return b, errreq + return b, errLater } // computeMarshalInfo initializes the marshal info. @@ -311,8 +321,11 @@ func (u *marshalInfo) computeMarshalInfo() { // get oneof implementers var oneofImplementers []interface{} - if m, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(oneofMessage); ok { + switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) { + case oneofFuncsIface: _, _, _, oneofImplementers = m.XXX_OneofFuncs() + case oneofWrappersIface: + oneofImplementers = m.XXX_OneofWrappers() } n := t.NumField() @@ -398,13 +411,22 @@ func (u *marshalInfo) getExtElemInfo(desc *ExtensionDesc) *marshalElemInfo { panic("tag is not an integer") } wt := wiretype(tags[0]) + if t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct { + t = t.Elem() + } sizer, marshaler := typeMarshaler(t, tags, false, false) + var deref bool + if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 { + t = reflect.PtrTo(t) + deref = true + } e = &marshalElemInfo{ wiretag: uint64(tag)<<3 | wt, tagsize: SizeVarint(uint64(tag) << 3), sizer: sizer, marshaler: marshaler, isptr: t.Kind() == reflect.Ptr, + deref: deref, } // update cache @@ -439,7 +461,7 @@ func (fi *marshalFieldInfo) computeMarshalFieldInfo(f *reflect.StructField) { func (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructField, oneofImplementers []interface{}) { fi.field = toField(f) - fi.wiretag = 1<<31 - 1 // Use a large tag number, make oneofs sorted at the end. This tag will not appear on the wire. + fi.wiretag = math.MaxInt32 // Use a large tag number, make oneofs sorted at the end. This tag will not appear on the wire. fi.isPointer = true fi.sizer, fi.marshaler = makeOneOfMarshaler(fi, f) fi.oneofElems = make(map[reflect.Type]*marshalElemInfo) @@ -467,10 +489,6 @@ func (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructField, oneofI } } -type oneofMessage interface { - XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{}) -} - // wiretype returns the wire encoding of the type. func wiretype(encoding string) uint64 { switch encoding { @@ -530,6 +548,7 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma packed := false proto3 := false + validateUTF8 := true for i := 2; i < len(tags); i++ { if tags[i] == "packed" { packed = true @@ -538,6 +557,7 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma proto3 = true } } + validateUTF8 = validateUTF8 && proto3 switch t.Kind() { case reflect.Bool: @@ -735,6 +755,18 @@ func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, ma } return sizeFloat64Value, appendFloat64Value case reflect.String: + if validateUTF8 { + if pointer { + return sizeStringPtr, appendUTF8StringPtr + } + if slice { + return sizeStringSlice, appendUTF8StringSlice + } + if nozero { + return sizeStringValueNoZero, appendUTF8StringValueNoZero + } + return sizeStringValue, appendUTF8StringValue + } if pointer { return sizeStringPtr, appendStringPtr } @@ -1983,52 +2015,105 @@ func appendBoolPackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byt return b, nil } func appendStringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + v := *ptr.toString() + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + return b, nil +} +func appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + v := *ptr.toString() + if v == "" { + return b, nil + } + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + return b, nil +} +func appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + p := *ptr.toStringPtr() + if p == nil { + return b, nil + } + v := *p + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + return b, nil +} +func appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + s := *ptr.toStringSlice() + for _, v := range s { + b = appendVarint(b, wiretag) + b = appendVarint(b, uint64(len(v))) + b = append(b, v...) + } + return b, nil +} +func appendUTF8StringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool v := *ptr.toString() if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + invalidUTF8 = true } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } return b, nil } -func appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { +func appendUTF8StringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool v := *ptr.toString() if v == "" { return b, nil } if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + invalidUTF8 = true } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } return b, nil } -func appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { +func appendUTF8StringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool p := *ptr.toStringPtr() if p == nil { return b, nil } v := *p if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + invalidUTF8 = true } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) + if invalidUTF8 { + return b, errInvalidUTF8 + } return b, nil } -func appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { +func appendUTF8StringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { + var invalidUTF8 bool s := *ptr.toStringSlice() for _, v := range s { if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + invalidUTF8 = true } b = appendVarint(b, wiretag) b = appendVarint(b, uint64(len(v))) b = append(b, v...) } + if invalidUTF8 { + return b, errInvalidUTF8 + } return b, nil } func appendBytes(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) { @@ -2107,7 +2192,8 @@ func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) { }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { s := ptr.getPointerSlice() - var err, errreq error + var err error + var nerr nonFatal for _, v := range s { if v.isNil() { return b, errRepeatedHasNil @@ -2115,22 +2201,14 @@ func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) { b = appendVarint(b, wiretag) // start group b, err = u.marshal(b, v, deterministic) b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group - if err != nil { - if _, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = err - } - continue - } + if !nerr.Merge(err) { if err == ErrNil { err = errRepeatedHasNil } return b, err } } - return b, errreq + return b, nerr.E } } @@ -2174,7 +2252,8 @@ func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) { }, func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) { s := ptr.getPointerSlice() - var err, errreq error + var err error + var nerr nonFatal for _, v := range s { if v.isNil() { return b, errRepeatedHasNil @@ -2184,22 +2263,14 @@ func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) { b = appendVarint(b, uint64(siz)) b, err = u.marshal(b, v, deterministic) - if err != nil { - if _, ok := err.(*RequiredNotSetError); ok { - // Required field in submessage is not set. - // We record the error but keep going, to give a complete marshaling. - if errreq == nil { - errreq = err - } - continue - } + if !nerr.Merge(err) { if err == ErrNil { err = errRepeatedHasNil } return b, err } } - return b, errreq + return b, nerr.E } } @@ -2223,14 +2294,33 @@ func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) { // value. // Key cannot be pointer-typed. valIsPtr := valType.Kind() == reflect.Ptr + + // If value is a message with nested maps, calling + // valSizer in marshal may be quadratic. We should use + // cached version in marshal (but not in size). + // If value is not message type, we don't have size cache, + // but it cannot be nested either. Just use valSizer. + valCachedSizer := valSizer + if valIsPtr && valType.Elem().Kind() == reflect.Struct { + u := getMarshalInfo(valType.Elem()) + valCachedSizer = func(ptr pointer, tagsize int) int { + // Same as message sizer, but use cache. + p := ptr.getPointer() + if p.isNil() { + return 0 + } + siz := u.cachedsize(p) + return siz + SizeVarint(uint64(siz)) + tagsize + } + } return func(ptr pointer, tagsize int) int { m := ptr.asPointerTo(t).Elem() // the map n := 0 for _, k := range m.MapKeys() { ki := k.Interface() vi := m.MapIndex(k).Interface() - kaddr := toAddrPointer(&ki, false) // pointer to key - vaddr := toAddrPointer(&vi, valIsPtr) // pointer to value + kaddr := toAddrPointer(&ki, false, false) // pointer to key + vaddr := toAddrPointer(&vi, valIsPtr, false) // pointer to value siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) n += siz + SizeVarint(uint64(siz)) + tagsize } @@ -2243,24 +2333,26 @@ func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) { if len(keys) > 1 && deterministic { sort.Sort(mapKeys(keys)) } + + var nerr nonFatal for _, k := range keys { ki := k.Interface() vi := m.MapIndex(k).Interface() - kaddr := toAddrPointer(&ki, false) // pointer to key - vaddr := toAddrPointer(&vi, valIsPtr) // pointer to value + kaddr := toAddrPointer(&ki, false, false) // pointer to key + vaddr := toAddrPointer(&vi, valIsPtr, false) // pointer to value b = appendVarint(b, tag) - siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) + siz := keySizer(kaddr, 1) + valCachedSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1) b = appendVarint(b, uint64(siz)) b, err = keyMarshaler(b, kaddr, keyWireTag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } b, err = valMarshaler(b, vaddr, valWireTag, deterministic) - if err != nil && err != ErrNil { // allow nil value in map + if err != ErrNil && !nerr.Merge(err) { // allow nil value in map return b, err } } - return b, nil + return b, nerr.E } } @@ -2316,7 +2408,7 @@ func (u *marshalInfo) sizeExtensions(ext *XXX_InternalExtensions) int { // the last time this function was called. ei := u.getExtElemInfo(e.desc) v := e.value - p := toAddrPointer(&v, ei.isptr) + p := toAddrPointer(&v, ei.isptr, ei.deref) n += ei.sizer(p, ei.tagsize) } mu.Unlock() @@ -2333,6 +2425,7 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de defer mu.Unlock() var err error + var nerr nonFatal // Fast-path for common cases: zero or one extensions. // Don't bother sorting the keys. @@ -2350,13 +2443,13 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de ei := u.getExtElemInfo(e.desc) v := e.value - p := toAddrPointer(&v, ei.isptr) + p := toAddrPointer(&v, ei.isptr, ei.deref) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // Sort the keys to provide a deterministic encoding. @@ -2381,13 +2474,13 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de ei := u.getExtElemInfo(e.desc) v := e.value - p := toAddrPointer(&v, ei.isptr) + p := toAddrPointer(&v, ei.isptr, ei.deref) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // message set format is: @@ -2426,7 +2519,7 @@ func (u *marshalInfo) sizeMessageSet(ext *XXX_InternalExtensions) int { ei := u.getExtElemInfo(e.desc) v := e.value - p := toAddrPointer(&v, ei.isptr) + p := toAddrPointer(&v, ei.isptr, ei.deref) n += ei.sizer(p, 1) // message, tag = 3 (size=1) } mu.Unlock() @@ -2444,6 +2537,7 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de defer mu.Unlock() var err error + var nerr nonFatal // Fast-path for common cases: zero or one extensions. // Don't bother sorting the keys. @@ -2468,14 +2562,14 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de ei := u.getExtElemInfo(e.desc) v := e.value - p := toAddrPointer(&v, ei.isptr) + p := toAddrPointer(&v, ei.isptr, ei.deref) b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } b = append(b, 1<<3|WireEndGroup) } - return b, nil + return b, nerr.E } // Sort the keys to provide a deterministic encoding. @@ -2506,14 +2600,14 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de ei := u.getExtElemInfo(e.desc) v := e.value - p := toAddrPointer(&v, ei.isptr) + p := toAddrPointer(&v, ei.isptr, ei.deref) b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic) b = append(b, 1<<3|WireEndGroup) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // sizeV1Extensions computes the size of encoded data for a V1-API extension field. @@ -2536,7 +2630,7 @@ func (u *marshalInfo) sizeV1Extensions(m map[int32]Extension) int { ei := u.getExtElemInfo(e.desc) v := e.value - p := toAddrPointer(&v, ei.isptr) + p := toAddrPointer(&v, ei.isptr, ei.deref) n += ei.sizer(p, ei.tagsize) } return n @@ -2556,6 +2650,7 @@ func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, determ sort.Ints(keys) var err error + var nerr nonFatal for _, k := range keys { e := m[int32(k)] if e.value == nil || e.desc == nil { @@ -2570,13 +2665,13 @@ func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, determ ei := u.getExtElemInfo(e.desc) v := e.value - p := toAddrPointer(&v, ei.isptr) + p := toAddrPointer(&v, ei.isptr, ei.deref) b, err = ei.marshaler(b, p, ei.wiretag, deterministic) - if err != nil { + if !nerr.Merge(err) { return b, err } } - return b, nil + return b, nerr.E } // newMarshaler is the interface representing objects that can marshal themselves. diff --git a/vendor/github.com/golang/protobuf/proto/table_unmarshal.go b/vendor/github.com/golang/protobuf/proto/table_unmarshal.go index 55f0340a3f..acee2fc529 100644 --- a/vendor/github.com/golang/protobuf/proto/table_unmarshal.go +++ b/vendor/github.com/golang/protobuf/proto/table_unmarshal.go @@ -97,6 +97,8 @@ type unmarshalFieldInfo struct { // if a required field, contains a single set bit at this field's index in the required field list. reqMask uint64 + + name string // name of the field, for error reporting } var ( @@ -134,10 +136,10 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { u.computeUnmarshalInfo() } if u.isMessageSet { - return UnmarshalMessageSet(b, m.offset(u.extensions).toExtensions()) + return unmarshalMessageSet(b, m.offset(u.extensions).toExtensions()) } - var reqMask uint64 // bitmask of required fields we've seen. - var rnse *RequiredNotSetError // an instance of a RequiredNotSetError returned by a submessage. + var reqMask uint64 // bitmask of required fields we've seen. + var errLater error for len(b) > 0 { // Read tag and wire type. // Special case 1 and 2 byte varints. @@ -176,11 +178,20 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { if r, ok := err.(*RequiredNotSetError); ok { // Remember this error, but keep parsing. We need to produce // a full parse even if a required field is missing. - rnse = r + if errLater == nil { + errLater = r + } reqMask |= f.reqMask continue } if err != errInternalBadWireType { + if err == errInvalidUTF8 { + if errLater == nil { + fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name + errLater = &invalidUTF8Error{fullName} + } + continue + } return err } // Fragments with bad wire type are treated as unknown fields. @@ -239,20 +250,16 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error { emap[int32(tag)] = e } } - if rnse != nil { - // A required field of a submessage/group is missing. Return that error. - return rnse - } - if reqMask != u.reqMask { + if reqMask != u.reqMask && errLater == nil { // A required field of this message is missing. for _, n := range u.reqFields { if reqMask&1 == 0 { - return &RequiredNotSetError{n} + errLater = &RequiredNotSetError{n} } reqMask >>= 1 } } - return nil + return errLater } // computeUnmarshalInfo fills in u with information for use @@ -351,43 +358,52 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { } // Store the info in the correct slot in the message. - u.setTag(tag, toField(&f), unmarshal, reqMask) + u.setTag(tag, toField(&f), unmarshal, reqMask, name) } // Find any types associated with oneof fields. - // TODO: XXX_OneofFuncs returns more info than we need. Get rid of some of it? - fn := reflect.Zero(reflect.PtrTo(t)).MethodByName("XXX_OneofFuncs") - if fn.IsValid() { - res := fn.Call(nil)[3] // last return value from XXX_OneofFuncs: []interface{} - for i := res.Len() - 1; i >= 0; i-- { - v := res.Index(i) // interface{} - tptr := reflect.ValueOf(v.Interface()).Type() // *Msg_X - typ := tptr.Elem() // Msg_X - - f := typ.Field(0) // oneof implementers have one field - baseUnmarshal := fieldUnmarshaler(&f) - tagstr := strings.Split(f.Tag.Get("protobuf"), ",")[1] - tag, err := strconv.Atoi(tagstr) - if err != nil { - panic("protobuf tag field not an integer: " + tagstr) - } - - // Find the oneof field that this struct implements. - // Might take O(n^2) to process all of the oneofs, but who cares. - for _, of := range oneofFields { - if tptr.Implements(of.ityp) { - // We have found the corresponding interface for this struct. - // That lets us know where this struct should be stored - // when we encounter it during unmarshaling. - unmarshal := makeUnmarshalOneof(typ, of.ityp, baseUnmarshal) - u.setTag(tag, of.field, unmarshal, 0) - } + var oneofImplementers []interface{} + switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) { + case oneofFuncsIface: + _, _, _, oneofImplementers = m.XXX_OneofFuncs() + case oneofWrappersIface: + oneofImplementers = m.XXX_OneofWrappers() + } + for _, v := range oneofImplementers { + tptr := reflect.TypeOf(v) // *Msg_X + typ := tptr.Elem() // Msg_X + + f := typ.Field(0) // oneof implementers have one field + baseUnmarshal := fieldUnmarshaler(&f) + tags := strings.Split(f.Tag.Get("protobuf"), ",") + fieldNum, err := strconv.Atoi(tags[1]) + if err != nil { + panic("protobuf tag field not an integer: " + tags[1]) + } + var name string + for _, tag := range tags { + if strings.HasPrefix(tag, "name=") { + name = strings.TrimPrefix(tag, "name=") + break } } + + // Find the oneof field that this struct implements. + // Might take O(n^2) to process all of the oneofs, but who cares. + for _, of := range oneofFields { + if tptr.Implements(of.ityp) { + // We have found the corresponding interface for this struct. + // That lets us know where this struct should be stored + // when we encounter it during unmarshaling. + unmarshal := makeUnmarshalOneof(typ, of.ityp, baseUnmarshal) + u.setTag(fieldNum, of.field, unmarshal, 0, name) + } + } + } // Get extension ranges, if any. - fn = reflect.Zero(reflect.PtrTo(t)).MethodByName("ExtensionRangeArray") + fn := reflect.Zero(reflect.PtrTo(t)).MethodByName("ExtensionRangeArray") if fn.IsValid() { if !u.extensions.IsValid() && !u.oldExtensions.IsValid() { panic("a message with extensions, but no extensions field in " + t.Name()) @@ -401,7 +417,7 @@ func (u *unmarshalInfo) computeUnmarshalInfo() { // [0 0] is [tag=0/wiretype=varint varint-encoded-0]. u.setTag(0, zeroField, func(b []byte, f pointer, w int) ([]byte, error) { return nil, fmt.Errorf("proto: %s: illegal tag 0 (wire type %d)", t, w) - }, 0) + }, 0, "") // Set mask for required field check. u.reqMask = uint64(1)<= 0 && (tag < 16 || tag < 2*n) { // TODO: what are the right numbers here? for len(u.dense) <= tag { @@ -442,11 +459,17 @@ func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { tagArray := strings.Split(tags, ",") encoding := tagArray[0] name := "unknown" + proto3 := false + validateUTF8 := true for _, tag := range tagArray[3:] { if strings.HasPrefix(tag, "name=") { name = tag[5:] } + if tag == "proto3" { + proto3 = true + } } + validateUTF8 = validateUTF8 && proto3 // Figure out packaging (pointer, slice, or both) slice := false @@ -594,6 +617,15 @@ func typeUnmarshaler(t reflect.Type, tags string) unmarshaler { } return unmarshalBytesValue case reflect.String: + if validateUTF8 { + if pointer { + return unmarshalUTF8StringPtr + } + if slice { + return unmarshalUTF8StringSlice + } + return unmarshalUTF8StringValue + } if pointer { return unmarshalStringPtr } @@ -1448,9 +1480,6 @@ func unmarshalStringValue(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } *f.toString() = v return b[x:], nil } @@ -1468,9 +1497,6 @@ func unmarshalStringPtr(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) - if !utf8.ValidString(v) { - return nil, errInvalidUTF8 - } *f.toStringPtr() = &v return b[x:], nil } @@ -1488,11 +1514,69 @@ func unmarshalStringSlice(b []byte, f pointer, w int) ([]byte, error) { return nil, io.ErrUnexpectedEOF } v := string(b[:x]) + s := f.toStringSlice() + *s = append(*s, v) + return b[x:], nil +} + +func unmarshalUTF8StringValue(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + v := string(b[:x]) + *f.toString() = v + if !utf8.ValidString(v) { + return b[x:], errInvalidUTF8 + } + return b[x:], nil +} + +func unmarshalUTF8StringPtr(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF + } + v := string(b[:x]) + *f.toStringPtr() = &v if !utf8.ValidString(v) { - return nil, errInvalidUTF8 + return b[x:], errInvalidUTF8 + } + return b[x:], nil +} + +func unmarshalUTF8StringSlice(b []byte, f pointer, w int) ([]byte, error) { + if w != WireBytes { + return b, errInternalBadWireType + } + x, n := decodeVarint(b) + if n == 0 { + return nil, io.ErrUnexpectedEOF + } + b = b[n:] + if x > uint64(len(b)) { + return nil, io.ErrUnexpectedEOF } + v := string(b[:x]) s := f.toStringSlice() *s = append(*s, v) + if !utf8.ValidString(v) { + return b[x:], errInvalidUTF8 + } return b[x:], nil } @@ -1674,6 +1758,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { // Maps will be somewhat slow. Oh well. // Read key and value from data. + var nerr nonFatal k := reflect.New(kt) v := reflect.New(vt) for len(b) > 0 { @@ -1694,7 +1779,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { err = errInternalBadWireType // skip unknown tag } - if err == nil { + if nerr.Merge(err) { continue } if err != errInternalBadWireType { @@ -1717,7 +1802,7 @@ func makeUnmarshalMap(f *reflect.StructField) unmarshaler { // Insert into map. m.SetMapIndex(k.Elem(), v.Elem()) - return r, nil + return r, nerr.E } } @@ -1743,15 +1828,16 @@ func makeUnmarshalOneof(typ, ityp reflect.Type, unmarshal unmarshaler) unmarshal // Unmarshal data into holder. // We unmarshal into the first field of the holder object. var err error + var nerr nonFatal b, err = unmarshal(b, valToPointer(v).offset(field0), w) - if err != nil { + if !nerr.Merge(err) { return nil, err } // Write pointer to holder into target field. f.asPointerTo(ityp).Elem().Set(v) - return b, nil + return b, nerr.E } } @@ -1864,7 +1950,7 @@ func encodeVarint(b []byte, x uint64) []byte { // If there is an error, it returns 0,0. func decodeVarint(b []byte) (uint64, int) { var x, y uint64 - if len(b) <= 0 { + if len(b) == 0 { goto bad } x = uint64(b[0]) diff --git a/vendor/github.com/golang/protobuf/proto/text.go b/vendor/github.com/golang/protobuf/proto/text.go index 2205fdaadf..1aaee725b4 100644 --- a/vendor/github.com/golang/protobuf/proto/text.go +++ b/vendor/github.com/golang/protobuf/proto/text.go @@ -353,7 +353,7 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { return err } } - if err := tm.writeAny(w, key, props.mkeyprop); err != nil { + if err := tm.writeAny(w, key, props.MapKeyProp); err != nil { return err } if err := w.WriteByte('\n'); err != nil { @@ -370,7 +370,7 @@ func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error { return err } } - if err := tm.writeAny(w, val, props.mvalprop); err != nil { + if err := tm.writeAny(w, val, props.MapValProp); err != nil { return err } if err := w.WriteByte('\n'); err != nil { diff --git a/vendor/github.com/golang/protobuf/proto/text_parser.go b/vendor/github.com/golang/protobuf/proto/text_parser.go index 0685bae36d..bb55a3af27 100644 --- a/vendor/github.com/golang/protobuf/proto/text_parser.go +++ b/vendor/github.com/golang/protobuf/proto/text_parser.go @@ -630,17 +630,17 @@ func (p *textParser) readStruct(sv reflect.Value, terminator string) error { if err := p.consumeToken(":"); err != nil { return err } - if err := p.readAny(key, props.mkeyprop); err != nil { + if err := p.readAny(key, props.MapKeyProp); err != nil { return err } if err := p.consumeOptionalSeparator(); err != nil { return err } case "value": - if err := p.checkForColon(props.mvalprop, dst.Type().Elem()); err != nil { + if err := p.checkForColon(props.MapValProp, dst.Type().Elem()); err != nil { return err } - if err := p.readAny(val, props.mvalprop); err != nil { + if err := p.readAny(val, props.MapValProp); err != nil { return err } if err := p.consumeOptionalSeparator(); err != nil { diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go index e855b1f5c4..1ded05bbe7 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go @@ -1,11 +1,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: google/protobuf/descriptor.proto -package descriptor // import "github.com/golang/protobuf/protoc-gen-go/descriptor" +package descriptor -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -16,7 +18,7 @@ var _ = math.Inf // is compatible with the proto package it is being compiled against. // A compilation error at this line likely means your copy of the // proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type FieldDescriptorProto_Type int32 @@ -72,6 +74,7 @@ var FieldDescriptorProto_Type_name = map[int32]string{ 17: "TYPE_SINT32", 18: "TYPE_SINT64", } + var FieldDescriptorProto_Type_value = map[string]int32{ "TYPE_DOUBLE": 1, "TYPE_FLOAT": 2, @@ -98,9 +101,11 @@ func (x FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type { *p = x return p } + func (x FieldDescriptorProto_Type) String() string { return proto.EnumName(FieldDescriptorProto_Type_name, int32(x)) } + func (x *FieldDescriptorProto_Type) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Type_value, data, "FieldDescriptorProto_Type") if err != nil { @@ -109,8 +114,9 @@ func (x *FieldDescriptorProto_Type) UnmarshalJSON(data []byte) error { *x = FieldDescriptorProto_Type(value) return nil } + func (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{4, 0} + return fileDescriptor_e5baabe45344a177, []int{4, 0} } type FieldDescriptorProto_Label int32 @@ -127,6 +133,7 @@ var FieldDescriptorProto_Label_name = map[int32]string{ 2: "LABEL_REQUIRED", 3: "LABEL_REPEATED", } + var FieldDescriptorProto_Label_value = map[string]int32{ "LABEL_OPTIONAL": 1, "LABEL_REQUIRED": 2, @@ -138,9 +145,11 @@ func (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label { *p = x return p } + func (x FieldDescriptorProto_Label) String() string { return proto.EnumName(FieldDescriptorProto_Label_name, int32(x)) } + func (x *FieldDescriptorProto_Label) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Label_value, data, "FieldDescriptorProto_Label") if err != nil { @@ -149,8 +158,9 @@ func (x *FieldDescriptorProto_Label) UnmarshalJSON(data []byte) error { *x = FieldDescriptorProto_Label(value) return nil } + func (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{4, 1} + return fileDescriptor_e5baabe45344a177, []int{4, 1} } // Generated classes can be optimized for speed or code size. @@ -168,6 +178,7 @@ var FileOptions_OptimizeMode_name = map[int32]string{ 2: "CODE_SIZE", 3: "LITE_RUNTIME", } + var FileOptions_OptimizeMode_value = map[string]int32{ "SPEED": 1, "CODE_SIZE": 2, @@ -179,9 +190,11 @@ func (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode { *p = x return p } + func (x FileOptions_OptimizeMode) String() string { return proto.EnumName(FileOptions_OptimizeMode_name, int32(x)) } + func (x *FileOptions_OptimizeMode) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(FileOptions_OptimizeMode_value, data, "FileOptions_OptimizeMode") if err != nil { @@ -190,8 +203,9 @@ func (x *FileOptions_OptimizeMode) UnmarshalJSON(data []byte) error { *x = FileOptions_OptimizeMode(value) return nil } + func (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{10, 0} + return fileDescriptor_e5baabe45344a177, []int{10, 0} } type FieldOptions_CType int32 @@ -208,6 +222,7 @@ var FieldOptions_CType_name = map[int32]string{ 1: "CORD", 2: "STRING_PIECE", } + var FieldOptions_CType_value = map[string]int32{ "STRING": 0, "CORD": 1, @@ -219,9 +234,11 @@ func (x FieldOptions_CType) Enum() *FieldOptions_CType { *p = x return p } + func (x FieldOptions_CType) String() string { return proto.EnumName(FieldOptions_CType_name, int32(x)) } + func (x *FieldOptions_CType) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(FieldOptions_CType_value, data, "FieldOptions_CType") if err != nil { @@ -230,8 +247,9 @@ func (x *FieldOptions_CType) UnmarshalJSON(data []byte) error { *x = FieldOptions_CType(value) return nil } + func (FieldOptions_CType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{12, 0} + return fileDescriptor_e5baabe45344a177, []int{12, 0} } type FieldOptions_JSType int32 @@ -250,6 +268,7 @@ var FieldOptions_JSType_name = map[int32]string{ 1: "JS_STRING", 2: "JS_NUMBER", } + var FieldOptions_JSType_value = map[string]int32{ "JS_NORMAL": 0, "JS_STRING": 1, @@ -261,9 +280,11 @@ func (x FieldOptions_JSType) Enum() *FieldOptions_JSType { *p = x return p } + func (x FieldOptions_JSType) String() string { return proto.EnumName(FieldOptions_JSType_name, int32(x)) } + func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(FieldOptions_JSType_value, data, "FieldOptions_JSType") if err != nil { @@ -272,8 +293,9 @@ func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error { *x = FieldOptions_JSType(value) return nil } + func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{12, 1} + return fileDescriptor_e5baabe45344a177, []int{12, 1} } // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, @@ -292,6 +314,7 @@ var MethodOptions_IdempotencyLevel_name = map[int32]string{ 1: "NO_SIDE_EFFECTS", 2: "IDEMPOTENT", } + var MethodOptions_IdempotencyLevel_value = map[string]int32{ "IDEMPOTENCY_UNKNOWN": 0, "NO_SIDE_EFFECTS": 1, @@ -303,9 +326,11 @@ func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel { *p = x return p } + func (x MethodOptions_IdempotencyLevel) String() string { return proto.EnumName(MethodOptions_IdempotencyLevel_name, int32(x)) } + func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error { value, err := proto.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel") if err != nil { @@ -314,8 +339,9 @@ func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error { *x = MethodOptions_IdempotencyLevel(value) return nil } + func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{17, 0} + return fileDescriptor_e5baabe45344a177, []int{17, 0} } // The protocol compiler can output a FileDescriptorSet containing the .proto @@ -331,16 +357,17 @@ func (m *FileDescriptorSet) Reset() { *m = FileDescriptorSet{} } func (m *FileDescriptorSet) String() string { return proto.CompactTextString(m) } func (*FileDescriptorSet) ProtoMessage() {} func (*FileDescriptorSet) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{0} + return fileDescriptor_e5baabe45344a177, []int{0} } + func (m *FileDescriptorSet) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FileDescriptorSet.Unmarshal(m, b) } func (m *FileDescriptorSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FileDescriptorSet.Marshal(b, m, deterministic) } -func (dst *FileDescriptorSet) XXX_Merge(src proto.Message) { - xxx_messageInfo_FileDescriptorSet.Merge(dst, src) +func (m *FileDescriptorSet) XXX_Merge(src proto.Message) { + xxx_messageInfo_FileDescriptorSet.Merge(m, src) } func (m *FileDescriptorSet) XXX_Size() int { return xxx_messageInfo_FileDescriptorSet.Size(m) @@ -392,16 +419,17 @@ func (m *FileDescriptorProto) Reset() { *m = FileDescriptorProto{} } func (m *FileDescriptorProto) String() string { return proto.CompactTextString(m) } func (*FileDescriptorProto) ProtoMessage() {} func (*FileDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{1} + return fileDescriptor_e5baabe45344a177, []int{1} } + func (m *FileDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FileDescriptorProto.Unmarshal(m, b) } func (m *FileDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FileDescriptorProto.Marshal(b, m, deterministic) } -func (dst *FileDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_FileDescriptorProto.Merge(dst, src) +func (m *FileDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_FileDescriptorProto.Merge(m, src) } func (m *FileDescriptorProto) XXX_Size() int { return xxx_messageInfo_FileDescriptorProto.Size(m) @@ -519,16 +547,17 @@ func (m *DescriptorProto) Reset() { *m = DescriptorProto{} } func (m *DescriptorProto) String() string { return proto.CompactTextString(m) } func (*DescriptorProto) ProtoMessage() {} func (*DescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{2} + return fileDescriptor_e5baabe45344a177, []int{2} } + func (m *DescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DescriptorProto.Unmarshal(m, b) } func (m *DescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_DescriptorProto.Marshal(b, m, deterministic) } -func (dst *DescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_DescriptorProto.Merge(dst, src) +func (m *DescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_DescriptorProto.Merge(m, src) } func (m *DescriptorProto) XXX_Size() int { return xxx_messageInfo_DescriptorProto.Size(m) @@ -622,16 +651,17 @@ func (m *DescriptorProto_ExtensionRange) Reset() { *m = DescriptorProto_ func (m *DescriptorProto_ExtensionRange) String() string { return proto.CompactTextString(m) } func (*DescriptorProto_ExtensionRange) ProtoMessage() {} func (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{2, 0} + return fileDescriptor_e5baabe45344a177, []int{2, 0} } + func (m *DescriptorProto_ExtensionRange) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DescriptorProto_ExtensionRange.Unmarshal(m, b) } func (m *DescriptorProto_ExtensionRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_DescriptorProto_ExtensionRange.Marshal(b, m, deterministic) } -func (dst *DescriptorProto_ExtensionRange) XXX_Merge(src proto.Message) { - xxx_messageInfo_DescriptorProto_ExtensionRange.Merge(dst, src) +func (m *DescriptorProto_ExtensionRange) XXX_Merge(src proto.Message) { + xxx_messageInfo_DescriptorProto_ExtensionRange.Merge(m, src) } func (m *DescriptorProto_ExtensionRange) XXX_Size() int { return xxx_messageInfo_DescriptorProto_ExtensionRange.Size(m) @@ -678,16 +708,17 @@ func (m *DescriptorProto_ReservedRange) Reset() { *m = DescriptorProto_R func (m *DescriptorProto_ReservedRange) String() string { return proto.CompactTextString(m) } func (*DescriptorProto_ReservedRange) ProtoMessage() {} func (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{2, 1} + return fileDescriptor_e5baabe45344a177, []int{2, 1} } + func (m *DescriptorProto_ReservedRange) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DescriptorProto_ReservedRange.Unmarshal(m, b) } func (m *DescriptorProto_ReservedRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_DescriptorProto_ReservedRange.Marshal(b, m, deterministic) } -func (dst *DescriptorProto_ReservedRange) XXX_Merge(src proto.Message) { - xxx_messageInfo_DescriptorProto_ReservedRange.Merge(dst, src) +func (m *DescriptorProto_ReservedRange) XXX_Merge(src proto.Message) { + xxx_messageInfo_DescriptorProto_ReservedRange.Merge(m, src) } func (m *DescriptorProto_ReservedRange) XXX_Size() int { return xxx_messageInfo_DescriptorProto_ReservedRange.Size(m) @@ -725,7 +756,7 @@ func (m *ExtensionRangeOptions) Reset() { *m = ExtensionRangeOptions{} } func (m *ExtensionRangeOptions) String() string { return proto.CompactTextString(m) } func (*ExtensionRangeOptions) ProtoMessage() {} func (*ExtensionRangeOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{3} + return fileDescriptor_e5baabe45344a177, []int{3} } var extRange_ExtensionRangeOptions = []proto.ExtensionRange{ @@ -735,14 +766,15 @@ var extRange_ExtensionRangeOptions = []proto.ExtensionRange{ func (*ExtensionRangeOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_ExtensionRangeOptions } + func (m *ExtensionRangeOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExtensionRangeOptions.Unmarshal(m, b) } func (m *ExtensionRangeOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ExtensionRangeOptions.Marshal(b, m, deterministic) } -func (dst *ExtensionRangeOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_ExtensionRangeOptions.Merge(dst, src) +func (m *ExtensionRangeOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExtensionRangeOptions.Merge(m, src) } func (m *ExtensionRangeOptions) XXX_Size() int { return xxx_messageInfo_ExtensionRangeOptions.Size(m) @@ -801,16 +833,17 @@ func (m *FieldDescriptorProto) Reset() { *m = FieldDescriptorProto{} } func (m *FieldDescriptorProto) String() string { return proto.CompactTextString(m) } func (*FieldDescriptorProto) ProtoMessage() {} func (*FieldDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{4} + return fileDescriptor_e5baabe45344a177, []int{4} } + func (m *FieldDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FieldDescriptorProto.Unmarshal(m, b) } func (m *FieldDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FieldDescriptorProto.Marshal(b, m, deterministic) } -func (dst *FieldDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_FieldDescriptorProto.Merge(dst, src) +func (m *FieldDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_FieldDescriptorProto.Merge(m, src) } func (m *FieldDescriptorProto) XXX_Size() int { return xxx_messageInfo_FieldDescriptorProto.Size(m) @@ -904,16 +937,17 @@ func (m *OneofDescriptorProto) Reset() { *m = OneofDescriptorProto{} } func (m *OneofDescriptorProto) String() string { return proto.CompactTextString(m) } func (*OneofDescriptorProto) ProtoMessage() {} func (*OneofDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{5} + return fileDescriptor_e5baabe45344a177, []int{5} } + func (m *OneofDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OneofDescriptorProto.Unmarshal(m, b) } func (m *OneofDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_OneofDescriptorProto.Marshal(b, m, deterministic) } -func (dst *OneofDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_OneofDescriptorProto.Merge(dst, src) +func (m *OneofDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_OneofDescriptorProto.Merge(m, src) } func (m *OneofDescriptorProto) XXX_Size() int { return xxx_messageInfo_OneofDescriptorProto.Size(m) @@ -959,16 +993,17 @@ func (m *EnumDescriptorProto) Reset() { *m = EnumDescriptorProto{} } func (m *EnumDescriptorProto) String() string { return proto.CompactTextString(m) } func (*EnumDescriptorProto) ProtoMessage() {} func (*EnumDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{6} + return fileDescriptor_e5baabe45344a177, []int{6} } + func (m *EnumDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_EnumDescriptorProto.Unmarshal(m, b) } func (m *EnumDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_EnumDescriptorProto.Marshal(b, m, deterministic) } -func (dst *EnumDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_EnumDescriptorProto.Merge(dst, src) +func (m *EnumDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnumDescriptorProto.Merge(m, src) } func (m *EnumDescriptorProto) XXX_Size() int { return xxx_messageInfo_EnumDescriptorProto.Size(m) @@ -1032,16 +1067,17 @@ func (m *EnumDescriptorProto_EnumReservedRange) Reset() { *m = EnumDescr func (m *EnumDescriptorProto_EnumReservedRange) String() string { return proto.CompactTextString(m) } func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {} func (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{6, 0} + return fileDescriptor_e5baabe45344a177, []int{6, 0} } + func (m *EnumDescriptorProto_EnumReservedRange) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Unmarshal(m, b) } func (m *EnumDescriptorProto_EnumReservedRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Marshal(b, m, deterministic) } -func (dst *EnumDescriptorProto_EnumReservedRange) XXX_Merge(src proto.Message) { - xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Merge(dst, src) +func (m *EnumDescriptorProto_EnumReservedRange) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Merge(m, src) } func (m *EnumDescriptorProto_EnumReservedRange) XXX_Size() int { return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Size(m) @@ -1080,16 +1116,17 @@ func (m *EnumValueDescriptorProto) Reset() { *m = EnumValueDescriptorPro func (m *EnumValueDescriptorProto) String() string { return proto.CompactTextString(m) } func (*EnumValueDescriptorProto) ProtoMessage() {} func (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{7} + return fileDescriptor_e5baabe45344a177, []int{7} } + func (m *EnumValueDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_EnumValueDescriptorProto.Unmarshal(m, b) } func (m *EnumValueDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_EnumValueDescriptorProto.Marshal(b, m, deterministic) } -func (dst *EnumValueDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_EnumValueDescriptorProto.Merge(dst, src) +func (m *EnumValueDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnumValueDescriptorProto.Merge(m, src) } func (m *EnumValueDescriptorProto) XXX_Size() int { return xxx_messageInfo_EnumValueDescriptorProto.Size(m) @@ -1135,16 +1172,17 @@ func (m *ServiceDescriptorProto) Reset() { *m = ServiceDescriptorProto{} func (m *ServiceDescriptorProto) String() string { return proto.CompactTextString(m) } func (*ServiceDescriptorProto) ProtoMessage() {} func (*ServiceDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{8} + return fileDescriptor_e5baabe45344a177, []int{8} } + func (m *ServiceDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ServiceDescriptorProto.Unmarshal(m, b) } func (m *ServiceDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ServiceDescriptorProto.Marshal(b, m, deterministic) } -func (dst *ServiceDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_ServiceDescriptorProto.Merge(dst, src) +func (m *ServiceDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceDescriptorProto.Merge(m, src) } func (m *ServiceDescriptorProto) XXX_Size() int { return xxx_messageInfo_ServiceDescriptorProto.Size(m) @@ -1197,16 +1235,17 @@ func (m *MethodDescriptorProto) Reset() { *m = MethodDescriptorProto{} } func (m *MethodDescriptorProto) String() string { return proto.CompactTextString(m) } func (*MethodDescriptorProto) ProtoMessage() {} func (*MethodDescriptorProto) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{9} + return fileDescriptor_e5baabe45344a177, []int{9} } + func (m *MethodDescriptorProto) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MethodDescriptorProto.Unmarshal(m, b) } func (m *MethodDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_MethodDescriptorProto.Marshal(b, m, deterministic) } -func (dst *MethodDescriptorProto) XXX_Merge(src proto.Message) { - xxx_messageInfo_MethodDescriptorProto.Merge(dst, src) +func (m *MethodDescriptorProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_MethodDescriptorProto.Merge(m, src) } func (m *MethodDescriptorProto) XXX_Size() int { return xxx_messageInfo_MethodDescriptorProto.Size(m) @@ -1336,6 +1375,14 @@ type FileOptions struct { // is empty. When this option is empty, the package name will be used for // determining the namespace. PhpNamespace *string `protobuf:"bytes,41,opt,name=php_namespace,json=phpNamespace" json:"php_namespace,omitempty"` + // Use this option to change the namespace of php generated metadata classes. + // Default is empty. When this option is empty, the proto file name will be used + // for determining the namespace. + PhpMetadataNamespace *string `protobuf:"bytes,44,opt,name=php_metadata_namespace,json=phpMetadataNamespace" json:"php_metadata_namespace,omitempty"` + // Use this option to change the package of ruby generated classes. Default + // is empty. When this option is not set, the package name will be used for + // determining the ruby package. + RubyPackage *string `protobuf:"bytes,45,opt,name=ruby_package,json=rubyPackage" json:"ruby_package,omitempty"` // The parser stores options it doesn't recognize here. // See the documentation for the "Options" section above. UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"` @@ -1349,7 +1396,7 @@ func (m *FileOptions) Reset() { *m = FileOptions{} } func (m *FileOptions) String() string { return proto.CompactTextString(m) } func (*FileOptions) ProtoMessage() {} func (*FileOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{10} + return fileDescriptor_e5baabe45344a177, []int{10} } var extRange_FileOptions = []proto.ExtensionRange{ @@ -1359,14 +1406,15 @@ var extRange_FileOptions = []proto.ExtensionRange{ func (*FileOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_FileOptions } + func (m *FileOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FileOptions.Unmarshal(m, b) } func (m *FileOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FileOptions.Marshal(b, m, deterministic) } -func (dst *FileOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_FileOptions.Merge(dst, src) +func (m *FileOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_FileOptions.Merge(m, src) } func (m *FileOptions) XXX_Size() int { return xxx_messageInfo_FileOptions.Size(m) @@ -1514,6 +1562,20 @@ func (m *FileOptions) GetPhpNamespace() string { return "" } +func (m *FileOptions) GetPhpMetadataNamespace() string { + if m != nil && m.PhpMetadataNamespace != nil { + return *m.PhpMetadataNamespace + } + return "" +} + +func (m *FileOptions) GetRubyPackage() string { + if m != nil && m.RubyPackage != nil { + return *m.RubyPackage + } + return "" +} + func (m *FileOptions) GetUninterpretedOption() []*UninterpretedOption { if m != nil { return m.UninterpretedOption @@ -1584,7 +1646,7 @@ func (m *MessageOptions) Reset() { *m = MessageOptions{} } func (m *MessageOptions) String() string { return proto.CompactTextString(m) } func (*MessageOptions) ProtoMessage() {} func (*MessageOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{11} + return fileDescriptor_e5baabe45344a177, []int{11} } var extRange_MessageOptions = []proto.ExtensionRange{ @@ -1594,14 +1656,15 @@ var extRange_MessageOptions = []proto.ExtensionRange{ func (*MessageOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_MessageOptions } + func (m *MessageOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MessageOptions.Unmarshal(m, b) } func (m *MessageOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_MessageOptions.Marshal(b, m, deterministic) } -func (dst *MessageOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_MessageOptions.Merge(dst, src) +func (m *MessageOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_MessageOptions.Merge(m, src) } func (m *MessageOptions) XXX_Size() int { return xxx_messageInfo_MessageOptions.Size(m) @@ -1723,7 +1786,7 @@ func (m *FieldOptions) Reset() { *m = FieldOptions{} } func (m *FieldOptions) String() string { return proto.CompactTextString(m) } func (*FieldOptions) ProtoMessage() {} func (*FieldOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{12} + return fileDescriptor_e5baabe45344a177, []int{12} } var extRange_FieldOptions = []proto.ExtensionRange{ @@ -1733,14 +1796,15 @@ var extRange_FieldOptions = []proto.ExtensionRange{ func (*FieldOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_FieldOptions } + func (m *FieldOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FieldOptions.Unmarshal(m, b) } func (m *FieldOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_FieldOptions.Marshal(b, m, deterministic) } -func (dst *FieldOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_FieldOptions.Merge(dst, src) +func (m *FieldOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_FieldOptions.Merge(m, src) } func (m *FieldOptions) XXX_Size() int { return xxx_messageInfo_FieldOptions.Size(m) @@ -1819,7 +1883,7 @@ func (m *OneofOptions) Reset() { *m = OneofOptions{} } func (m *OneofOptions) String() string { return proto.CompactTextString(m) } func (*OneofOptions) ProtoMessage() {} func (*OneofOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{13} + return fileDescriptor_e5baabe45344a177, []int{13} } var extRange_OneofOptions = []proto.ExtensionRange{ @@ -1829,14 +1893,15 @@ var extRange_OneofOptions = []proto.ExtensionRange{ func (*OneofOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_OneofOptions } + func (m *OneofOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_OneofOptions.Unmarshal(m, b) } func (m *OneofOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_OneofOptions.Marshal(b, m, deterministic) } -func (dst *OneofOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_OneofOptions.Merge(dst, src) +func (m *OneofOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_OneofOptions.Merge(m, src) } func (m *OneofOptions) XXX_Size() int { return xxx_messageInfo_OneofOptions.Size(m) @@ -1875,7 +1940,7 @@ func (m *EnumOptions) Reset() { *m = EnumOptions{} } func (m *EnumOptions) String() string { return proto.CompactTextString(m) } func (*EnumOptions) ProtoMessage() {} func (*EnumOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{14} + return fileDescriptor_e5baabe45344a177, []int{14} } var extRange_EnumOptions = []proto.ExtensionRange{ @@ -1885,14 +1950,15 @@ var extRange_EnumOptions = []proto.ExtensionRange{ func (*EnumOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_EnumOptions } + func (m *EnumOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_EnumOptions.Unmarshal(m, b) } func (m *EnumOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_EnumOptions.Marshal(b, m, deterministic) } -func (dst *EnumOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_EnumOptions.Merge(dst, src) +func (m *EnumOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnumOptions.Merge(m, src) } func (m *EnumOptions) XXX_Size() int { return xxx_messageInfo_EnumOptions.Size(m) @@ -1944,7 +2010,7 @@ func (m *EnumValueOptions) Reset() { *m = EnumValueOptions{} } func (m *EnumValueOptions) String() string { return proto.CompactTextString(m) } func (*EnumValueOptions) ProtoMessage() {} func (*EnumValueOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{15} + return fileDescriptor_e5baabe45344a177, []int{15} } var extRange_EnumValueOptions = []proto.ExtensionRange{ @@ -1954,14 +2020,15 @@ var extRange_EnumValueOptions = []proto.ExtensionRange{ func (*EnumValueOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_EnumValueOptions } + func (m *EnumValueOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_EnumValueOptions.Unmarshal(m, b) } func (m *EnumValueOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_EnumValueOptions.Marshal(b, m, deterministic) } -func (dst *EnumValueOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_EnumValueOptions.Merge(dst, src) +func (m *EnumValueOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_EnumValueOptions.Merge(m, src) } func (m *EnumValueOptions) XXX_Size() int { return xxx_messageInfo_EnumValueOptions.Size(m) @@ -2006,7 +2073,7 @@ func (m *ServiceOptions) Reset() { *m = ServiceOptions{} } func (m *ServiceOptions) String() string { return proto.CompactTextString(m) } func (*ServiceOptions) ProtoMessage() {} func (*ServiceOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{16} + return fileDescriptor_e5baabe45344a177, []int{16} } var extRange_ServiceOptions = []proto.ExtensionRange{ @@ -2016,14 +2083,15 @@ var extRange_ServiceOptions = []proto.ExtensionRange{ func (*ServiceOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_ServiceOptions } + func (m *ServiceOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ServiceOptions.Unmarshal(m, b) } func (m *ServiceOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_ServiceOptions.Marshal(b, m, deterministic) } -func (dst *ServiceOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_ServiceOptions.Merge(dst, src) +func (m *ServiceOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServiceOptions.Merge(m, src) } func (m *ServiceOptions) XXX_Size() int { return xxx_messageInfo_ServiceOptions.Size(m) @@ -2069,7 +2137,7 @@ func (m *MethodOptions) Reset() { *m = MethodOptions{} } func (m *MethodOptions) String() string { return proto.CompactTextString(m) } func (*MethodOptions) ProtoMessage() {} func (*MethodOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{17} + return fileDescriptor_e5baabe45344a177, []int{17} } var extRange_MethodOptions = []proto.ExtensionRange{ @@ -2079,14 +2147,15 @@ var extRange_MethodOptions = []proto.ExtensionRange{ func (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange { return extRange_MethodOptions } + func (m *MethodOptions) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MethodOptions.Unmarshal(m, b) } func (m *MethodOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_MethodOptions.Marshal(b, m, deterministic) } -func (dst *MethodOptions) XXX_Merge(src proto.Message) { - xxx_messageInfo_MethodOptions.Merge(dst, src) +func (m *MethodOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_MethodOptions.Merge(m, src) } func (m *MethodOptions) XXX_Size() int { return xxx_messageInfo_MethodOptions.Size(m) @@ -2146,16 +2215,17 @@ func (m *UninterpretedOption) Reset() { *m = UninterpretedOption{} } func (m *UninterpretedOption) String() string { return proto.CompactTextString(m) } func (*UninterpretedOption) ProtoMessage() {} func (*UninterpretedOption) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{18} + return fileDescriptor_e5baabe45344a177, []int{18} } + func (m *UninterpretedOption) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UninterpretedOption.Unmarshal(m, b) } func (m *UninterpretedOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_UninterpretedOption.Marshal(b, m, deterministic) } -func (dst *UninterpretedOption) XXX_Merge(src proto.Message) { - xxx_messageInfo_UninterpretedOption.Merge(dst, src) +func (m *UninterpretedOption) XXX_Merge(src proto.Message) { + xxx_messageInfo_UninterpretedOption.Merge(m, src) } func (m *UninterpretedOption) XXX_Size() int { return xxx_messageInfo_UninterpretedOption.Size(m) @@ -2232,16 +2302,17 @@ func (m *UninterpretedOption_NamePart) Reset() { *m = UninterpretedOptio func (m *UninterpretedOption_NamePart) String() string { return proto.CompactTextString(m) } func (*UninterpretedOption_NamePart) ProtoMessage() {} func (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{18, 0} + return fileDescriptor_e5baabe45344a177, []int{18, 0} } + func (m *UninterpretedOption_NamePart) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UninterpretedOption_NamePart.Unmarshal(m, b) } func (m *UninterpretedOption_NamePart) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_UninterpretedOption_NamePart.Marshal(b, m, deterministic) } -func (dst *UninterpretedOption_NamePart) XXX_Merge(src proto.Message) { - xxx_messageInfo_UninterpretedOption_NamePart.Merge(dst, src) +func (m *UninterpretedOption_NamePart) XXX_Merge(src proto.Message) { + xxx_messageInfo_UninterpretedOption_NamePart.Merge(m, src) } func (m *UninterpretedOption_NamePart) XXX_Size() int { return xxx_messageInfo_UninterpretedOption_NamePart.Size(m) @@ -2322,16 +2393,17 @@ func (m *SourceCodeInfo) Reset() { *m = SourceCodeInfo{} } func (m *SourceCodeInfo) String() string { return proto.CompactTextString(m) } func (*SourceCodeInfo) ProtoMessage() {} func (*SourceCodeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{19} + return fileDescriptor_e5baabe45344a177, []int{19} } + func (m *SourceCodeInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SourceCodeInfo.Unmarshal(m, b) } func (m *SourceCodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_SourceCodeInfo.Marshal(b, m, deterministic) } -func (dst *SourceCodeInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_SourceCodeInfo.Merge(dst, src) +func (m *SourceCodeInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_SourceCodeInfo.Merge(m, src) } func (m *SourceCodeInfo) XXX_Size() int { return xxx_messageInfo_SourceCodeInfo.Size(m) @@ -2439,16 +2511,17 @@ func (m *SourceCodeInfo_Location) Reset() { *m = SourceCodeInfo_Location func (m *SourceCodeInfo_Location) String() string { return proto.CompactTextString(m) } func (*SourceCodeInfo_Location) ProtoMessage() {} func (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{19, 0} + return fileDescriptor_e5baabe45344a177, []int{19, 0} } + func (m *SourceCodeInfo_Location) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SourceCodeInfo_Location.Unmarshal(m, b) } func (m *SourceCodeInfo_Location) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_SourceCodeInfo_Location.Marshal(b, m, deterministic) } -func (dst *SourceCodeInfo_Location) XXX_Merge(src proto.Message) { - xxx_messageInfo_SourceCodeInfo_Location.Merge(dst, src) +func (m *SourceCodeInfo_Location) XXX_Merge(src proto.Message) { + xxx_messageInfo_SourceCodeInfo_Location.Merge(m, src) } func (m *SourceCodeInfo_Location) XXX_Size() int { return xxx_messageInfo_SourceCodeInfo_Location.Size(m) @@ -2510,16 +2583,17 @@ func (m *GeneratedCodeInfo) Reset() { *m = GeneratedCodeInfo{} } func (m *GeneratedCodeInfo) String() string { return proto.CompactTextString(m) } func (*GeneratedCodeInfo) ProtoMessage() {} func (*GeneratedCodeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{20} + return fileDescriptor_e5baabe45344a177, []int{20} } + func (m *GeneratedCodeInfo) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GeneratedCodeInfo.Unmarshal(m, b) } func (m *GeneratedCodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_GeneratedCodeInfo.Marshal(b, m, deterministic) } -func (dst *GeneratedCodeInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_GeneratedCodeInfo.Merge(dst, src) +func (m *GeneratedCodeInfo) XXX_Merge(src proto.Message) { + xxx_messageInfo_GeneratedCodeInfo.Merge(m, src) } func (m *GeneratedCodeInfo) XXX_Size() int { return xxx_messageInfo_GeneratedCodeInfo.Size(m) @@ -2559,16 +2633,17 @@ func (m *GeneratedCodeInfo_Annotation) Reset() { *m = GeneratedCodeInfo_ func (m *GeneratedCodeInfo_Annotation) String() string { return proto.CompactTextString(m) } func (*GeneratedCodeInfo_Annotation) ProtoMessage() {} func (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) { - return fileDescriptor_descriptor_4df4cb5f42392df6, []int{20, 0} + return fileDescriptor_e5baabe45344a177, []int{20, 0} } + func (m *GeneratedCodeInfo_Annotation) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_GeneratedCodeInfo_Annotation.Unmarshal(m, b) } func (m *GeneratedCodeInfo_Annotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_GeneratedCodeInfo_Annotation.Marshal(b, m, deterministic) } -func (dst *GeneratedCodeInfo_Annotation) XXX_Merge(src proto.Message) { - xxx_messageInfo_GeneratedCodeInfo_Annotation.Merge(dst, src) +func (m *GeneratedCodeInfo_Annotation) XXX_Merge(src proto.Message) { + xxx_messageInfo_GeneratedCodeInfo_Annotation.Merge(m, src) } func (m *GeneratedCodeInfo_Annotation) XXX_Size() int { return xxx_messageInfo_GeneratedCodeInfo_Annotation.Size(m) @@ -2608,6 +2683,12 @@ func (m *GeneratedCodeInfo_Annotation) GetEnd() int32 { } func init() { + proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Type", FieldDescriptorProto_Type_name, FieldDescriptorProto_Type_value) + proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Label", FieldDescriptorProto_Label_name, FieldDescriptorProto_Label_value) + proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value) + proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value) + proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value) + proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value) proto.RegisterType((*FileDescriptorSet)(nil), "google.protobuf.FileDescriptorSet") proto.RegisterType((*FileDescriptorProto)(nil), "google.protobuf.FileDescriptorProto") proto.RegisterType((*DescriptorProto)(nil), "google.protobuf.DescriptorProto") @@ -2635,178 +2716,172 @@ func init() { proto.RegisterType((*SourceCodeInfo_Location)(nil), "google.protobuf.SourceCodeInfo.Location") proto.RegisterType((*GeneratedCodeInfo)(nil), "google.protobuf.GeneratedCodeInfo") proto.RegisterType((*GeneratedCodeInfo_Annotation)(nil), "google.protobuf.GeneratedCodeInfo.Annotation") - proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Type", FieldDescriptorProto_Type_name, FieldDescriptorProto_Type_value) - proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Label", FieldDescriptorProto_Label_name, FieldDescriptorProto_Label_value) - proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value) - proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value) - proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value) - proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value) } -func init() { - proto.RegisterFile("google/protobuf/descriptor.proto", fileDescriptor_descriptor_4df4cb5f42392df6) -} - -var fileDescriptor_descriptor_4df4cb5f42392df6 = []byte{ - // 2555 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xdd, 0x6e, 0x1b, 0xc7, - 0xf5, 0xcf, 0xf2, 0x4b, 0xe4, 0x21, 0x45, 0x8d, 0x46, 0x8a, 0xbd, 0x56, 0x3e, 0x2c, 0x33, 0x1f, - 0x96, 0x9d, 0x7f, 0xa8, 0xc0, 0xb1, 0x1d, 0x47, 0xfe, 0x23, 0x2d, 0x45, 0xae, 0x15, 0xaa, 0x12, - 0xc9, 0x2e, 0xa9, 0xe6, 0x03, 0x28, 0x16, 0xa3, 0xdd, 0x21, 0xb9, 0xf6, 0x72, 0x77, 0xb3, 0xbb, - 0xb4, 0xad, 0xa0, 0x17, 0x06, 0x7a, 0xd5, 0xab, 0xde, 0x16, 0x45, 0xd1, 0x8b, 0xde, 0x04, 0xe8, - 0x03, 0x14, 0xc8, 0x5d, 0x9f, 0xa0, 0x40, 0xde, 0xa0, 0x68, 0x0b, 0xb4, 0x8f, 0xd0, 0xcb, 0x62, - 0x66, 0x76, 0x97, 0xbb, 0x24, 0x15, 0x2b, 0x01, 0xe2, 0x5c, 0x91, 0xf3, 0x9b, 0xdf, 0x39, 0x73, - 0xe6, 0xcc, 0x99, 0x33, 0x67, 0x66, 0x61, 0x7b, 0xe4, 0x38, 0x23, 0x8b, 0xee, 0xba, 0x9e, 0x13, - 0x38, 0xa7, 0xd3, 0xe1, 0xae, 0x41, 0x7d, 0xdd, 0x33, 0xdd, 0xc0, 0xf1, 0xea, 0x1c, 0xc3, 0x6b, - 0x82, 0x51, 0x8f, 0x18, 0xb5, 0x63, 0x58, 0x7f, 0x60, 0x5a, 0xb4, 0x15, 0x13, 0xfb, 0x34, 0xc0, - 0xf7, 0x20, 0x37, 0x34, 0x2d, 0x2a, 0x4b, 0xdb, 0xd9, 0x9d, 0xf2, 0xad, 0x37, 0xeb, 0x73, 0x42, - 0xf5, 0xb4, 0x44, 0x8f, 0xc1, 0x2a, 0x97, 0xa8, 0xfd, 0x2b, 0x07, 0x1b, 0x4b, 0x7a, 0x31, 0x86, - 0x9c, 0x4d, 0x26, 0x4c, 0xa3, 0xb4, 0x53, 0x52, 0xf9, 0x7f, 0x2c, 0xc3, 0x8a, 0x4b, 0xf4, 0x47, - 0x64, 0x44, 0xe5, 0x0c, 0x87, 0xa3, 0x26, 0x7e, 0x1d, 0xc0, 0xa0, 0x2e, 0xb5, 0x0d, 0x6a, 0xeb, - 0x67, 0x72, 0x76, 0x3b, 0xbb, 0x53, 0x52, 0x13, 0x08, 0x7e, 0x07, 0xd6, 0xdd, 0xe9, 0xa9, 0x65, - 0xea, 0x5a, 0x82, 0x06, 0xdb, 0xd9, 0x9d, 0xbc, 0x8a, 0x44, 0x47, 0x6b, 0x46, 0xbe, 0x0e, 0x6b, - 0x4f, 0x28, 0x79, 0x94, 0xa4, 0x96, 0x39, 0xb5, 0xca, 0xe0, 0x04, 0xb1, 0x09, 0x95, 0x09, 0xf5, - 0x7d, 0x32, 0xa2, 0x5a, 0x70, 0xe6, 0x52, 0x39, 0xc7, 0x67, 0xbf, 0xbd, 0x30, 0xfb, 0xf9, 0x99, - 0x97, 0x43, 0xa9, 0xc1, 0x99, 0x4b, 0x71, 0x03, 0x4a, 0xd4, 0x9e, 0x4e, 0x84, 0x86, 0xfc, 0x39, - 0xfe, 0x53, 0xec, 0xe9, 0x64, 0x5e, 0x4b, 0x91, 0x89, 0x85, 0x2a, 0x56, 0x7c, 0xea, 0x3d, 0x36, - 0x75, 0x2a, 0x17, 0xb8, 0x82, 0xeb, 0x0b, 0x0a, 0xfa, 0xa2, 0x7f, 0x5e, 0x47, 0x24, 0x87, 0x9b, - 0x50, 0xa2, 0x4f, 0x03, 0x6a, 0xfb, 0xa6, 0x63, 0xcb, 0x2b, 0x5c, 0xc9, 0x5b, 0x4b, 0x56, 0x91, - 0x5a, 0xc6, 0xbc, 0x8a, 0x99, 0x1c, 0xbe, 0x0b, 0x2b, 0x8e, 0x1b, 0x98, 0x8e, 0xed, 0xcb, 0xc5, - 0x6d, 0x69, 0xa7, 0x7c, 0xeb, 0xd5, 0xa5, 0x81, 0xd0, 0x15, 0x1c, 0x35, 0x22, 0xe3, 0x36, 0x20, - 0xdf, 0x99, 0x7a, 0x3a, 0xd5, 0x74, 0xc7, 0xa0, 0x9a, 0x69, 0x0f, 0x1d, 0xb9, 0xc4, 0x15, 0x5c, - 0x5d, 0x9c, 0x08, 0x27, 0x36, 0x1d, 0x83, 0xb6, 0xed, 0xa1, 0xa3, 0x56, 0xfd, 0x54, 0x1b, 0x5f, - 0x82, 0x82, 0x7f, 0x66, 0x07, 0xe4, 0xa9, 0x5c, 0xe1, 0x11, 0x12, 0xb6, 0x6a, 0x5f, 0x17, 0x60, - 0xed, 0x22, 0x21, 0x76, 0x1f, 0xf2, 0x43, 0x36, 0x4b, 0x39, 0xf3, 0x5d, 0x7c, 0x20, 0x64, 0xd2, - 0x4e, 0x2c, 0x7c, 0x4f, 0x27, 0x36, 0xa0, 0x6c, 0x53, 0x3f, 0xa0, 0x86, 0x88, 0x88, 0xec, 0x05, - 0x63, 0x0a, 0x84, 0xd0, 0x62, 0x48, 0xe5, 0xbe, 0x57, 0x48, 0x7d, 0x0a, 0x6b, 0xb1, 0x49, 0x9a, - 0x47, 0xec, 0x51, 0x14, 0x9b, 0xbb, 0xcf, 0xb3, 0xa4, 0xae, 0x44, 0x72, 0x2a, 0x13, 0x53, 0xab, - 0x34, 0xd5, 0xc6, 0x2d, 0x00, 0xc7, 0xa6, 0xce, 0x50, 0x33, 0xa8, 0x6e, 0xc9, 0xc5, 0x73, 0xbc, - 0xd4, 0x65, 0x94, 0x05, 0x2f, 0x39, 0x02, 0xd5, 0x2d, 0xfc, 0xe1, 0x2c, 0xd4, 0x56, 0xce, 0x89, - 0x94, 0x63, 0xb1, 0xc9, 0x16, 0xa2, 0xed, 0x04, 0xaa, 0x1e, 0x65, 0x71, 0x4f, 0x8d, 0x70, 0x66, - 0x25, 0x6e, 0x44, 0xfd, 0xb9, 0x33, 0x53, 0x43, 0x31, 0x31, 0xb1, 0x55, 0x2f, 0xd9, 0xc4, 0x6f, - 0x40, 0x0c, 0x68, 0x3c, 0xac, 0x80, 0x67, 0xa1, 0x4a, 0x04, 0x76, 0xc8, 0x84, 0x6e, 0x7d, 0x09, - 0xd5, 0xb4, 0x7b, 0xf0, 0x26, 0xe4, 0xfd, 0x80, 0x78, 0x01, 0x8f, 0xc2, 0xbc, 0x2a, 0x1a, 0x18, - 0x41, 0x96, 0xda, 0x06, 0xcf, 0x72, 0x79, 0x95, 0xfd, 0xc5, 0x3f, 0x9d, 0x4d, 0x38, 0xcb, 0x27, - 0xfc, 0xf6, 0xe2, 0x8a, 0xa6, 0x34, 0xcf, 0xcf, 0x7b, 0xeb, 0x03, 0x58, 0x4d, 0x4d, 0xe0, 0xa2, - 0x43, 0xd7, 0x7e, 0x05, 0x2f, 0x2f, 0x55, 0x8d, 0x3f, 0x85, 0xcd, 0xa9, 0x6d, 0xda, 0x01, 0xf5, - 0x5c, 0x8f, 0xb2, 0x88, 0x15, 0x43, 0xc9, 0xff, 0x5e, 0x39, 0x27, 0xe6, 0x4e, 0x92, 0x6c, 0xa1, - 0x45, 0xdd, 0x98, 0x2e, 0x82, 0x37, 0x4b, 0xc5, 0xff, 0xac, 0xa0, 0x67, 0xcf, 0x9e, 0x3d, 0xcb, - 0xd4, 0x7e, 0x57, 0x80, 0xcd, 0x65, 0x7b, 0x66, 0xe9, 0xf6, 0xbd, 0x04, 0x05, 0x7b, 0x3a, 0x39, - 0xa5, 0x1e, 0x77, 0x52, 0x5e, 0x0d, 0x5b, 0xb8, 0x01, 0x79, 0x8b, 0x9c, 0x52, 0x4b, 0xce, 0x6d, - 0x4b, 0x3b, 0xd5, 0x5b, 0xef, 0x5c, 0x68, 0x57, 0xd6, 0x8f, 0x98, 0x88, 0x2a, 0x24, 0xf1, 0x47, - 0x90, 0x0b, 0x53, 0x34, 0xd3, 0x70, 0xf3, 0x62, 0x1a, 0xd8, 0x5e, 0x52, 0xb9, 0x1c, 0x7e, 0x05, - 0x4a, 0xec, 0x57, 0xc4, 0x46, 0x81, 0xdb, 0x5c, 0x64, 0x00, 0x8b, 0x0b, 0xbc, 0x05, 0x45, 0xbe, - 0x4d, 0x0c, 0x1a, 0x1d, 0x6d, 0x71, 0x9b, 0x05, 0x96, 0x41, 0x87, 0x64, 0x6a, 0x05, 0xda, 0x63, - 0x62, 0x4d, 0x29, 0x0f, 0xf8, 0x92, 0x5a, 0x09, 0xc1, 0x5f, 0x30, 0x0c, 0x5f, 0x85, 0xb2, 0xd8, - 0x55, 0xa6, 0x6d, 0xd0, 0xa7, 0x3c, 0x7b, 0xe6, 0x55, 0xb1, 0xd1, 0xda, 0x0c, 0x61, 0xc3, 0x3f, - 0xf4, 0x1d, 0x3b, 0x0a, 0x4d, 0x3e, 0x04, 0x03, 0xf8, 0xf0, 0x1f, 0xcc, 0x27, 0xee, 0xd7, 0x96, - 0x4f, 0x6f, 0x3e, 0xa6, 0x6a, 0x7f, 0xc9, 0x40, 0x8e, 0xe7, 0x8b, 0x35, 0x28, 0x0f, 0x3e, 0xeb, - 0x29, 0x5a, 0xab, 0x7b, 0xb2, 0x7f, 0xa4, 0x20, 0x09, 0x57, 0x01, 0x38, 0xf0, 0xe0, 0xa8, 0xdb, - 0x18, 0xa0, 0x4c, 0xdc, 0x6e, 0x77, 0x06, 0x77, 0x6f, 0xa3, 0x6c, 0x2c, 0x70, 0x22, 0x80, 0x5c, - 0x92, 0xf0, 0xfe, 0x2d, 0x94, 0xc7, 0x08, 0x2a, 0x42, 0x41, 0xfb, 0x53, 0xa5, 0x75, 0xf7, 0x36, - 0x2a, 0xa4, 0x91, 0xf7, 0x6f, 0xa1, 0x15, 0xbc, 0x0a, 0x25, 0x8e, 0xec, 0x77, 0xbb, 0x47, 0xa8, - 0x18, 0xeb, 0xec, 0x0f, 0xd4, 0x76, 0xe7, 0x00, 0x95, 0x62, 0x9d, 0x07, 0x6a, 0xf7, 0xa4, 0x87, - 0x20, 0xd6, 0x70, 0xac, 0xf4, 0xfb, 0x8d, 0x03, 0x05, 0x95, 0x63, 0xc6, 0xfe, 0x67, 0x03, 0xa5, - 0x8f, 0x2a, 0x29, 0xb3, 0xde, 0xbf, 0x85, 0x56, 0xe3, 0x21, 0x94, 0xce, 0xc9, 0x31, 0xaa, 0xe2, - 0x75, 0x58, 0x15, 0x43, 0x44, 0x46, 0xac, 0xcd, 0x41, 0x77, 0x6f, 0x23, 0x34, 0x33, 0x44, 0x68, - 0x59, 0x4f, 0x01, 0x77, 0x6f, 0x23, 0x5c, 0x6b, 0x42, 0x9e, 0x47, 0x17, 0xc6, 0x50, 0x3d, 0x6a, - 0xec, 0x2b, 0x47, 0x5a, 0xb7, 0x37, 0x68, 0x77, 0x3b, 0x8d, 0x23, 0x24, 0xcd, 0x30, 0x55, 0xf9, - 0xf9, 0x49, 0x5b, 0x55, 0x5a, 0x28, 0x93, 0xc4, 0x7a, 0x4a, 0x63, 0xa0, 0xb4, 0x50, 0xb6, 0xa6, - 0xc3, 0xe6, 0xb2, 0x3c, 0xb9, 0x74, 0x67, 0x24, 0x96, 0x38, 0x73, 0xce, 0x12, 0x73, 0x5d, 0x0b, - 0x4b, 0xfc, 0xcf, 0x0c, 0x6c, 0x2c, 0x39, 0x2b, 0x96, 0x0e, 0xf2, 0x13, 0xc8, 0x8b, 0x10, 0x15, - 0xa7, 0xe7, 0x8d, 0xa5, 0x87, 0x0e, 0x0f, 0xd8, 0x85, 0x13, 0x94, 0xcb, 0x25, 0x2b, 0x88, 0xec, - 0x39, 0x15, 0x04, 0x53, 0xb1, 0x90, 0xd3, 0x7f, 0xb9, 0x90, 0xd3, 0xc5, 0xb1, 0x77, 0xf7, 0x22, - 0xc7, 0x1e, 0xc7, 0xbe, 0x5b, 0x6e, 0xcf, 0x2f, 0xc9, 0xed, 0xf7, 0x61, 0x7d, 0x41, 0xd1, 0x85, - 0x73, 0xec, 0xaf, 0x25, 0x90, 0xcf, 0x73, 0xce, 0x73, 0x32, 0x5d, 0x26, 0x95, 0xe9, 0xee, 0xcf, - 0x7b, 0xf0, 0xda, 0xf9, 0x8b, 0xb0, 0xb0, 0xd6, 0x5f, 0x49, 0x70, 0x69, 0x79, 0xa5, 0xb8, 0xd4, - 0x86, 0x8f, 0xa0, 0x30, 0xa1, 0xc1, 0xd8, 0x89, 0xaa, 0xa5, 0xb7, 0x97, 0x9c, 0xc1, 0xac, 0x7b, - 0x7e, 0xb1, 0x43, 0xa9, 0xe4, 0x21, 0x9e, 0x3d, 0xaf, 0xdc, 0x13, 0xd6, 0x2c, 0x58, 0xfa, 0x9b, - 0x0c, 0xbc, 0xbc, 0x54, 0xf9, 0x52, 0x43, 0x5f, 0x03, 0x30, 0x6d, 0x77, 0x1a, 0x88, 0x8a, 0x48, - 0x24, 0xd8, 0x12, 0x47, 0x78, 0xf2, 0x62, 0xc9, 0x73, 0x1a, 0xc4, 0xfd, 0x59, 0xde, 0x0f, 0x02, - 0xe2, 0x84, 0x7b, 0x33, 0x43, 0x73, 0xdc, 0xd0, 0xd7, 0xcf, 0x99, 0xe9, 0x42, 0x60, 0xbe, 0x07, - 0x48, 0xb7, 0x4c, 0x6a, 0x07, 0x9a, 0x1f, 0x78, 0x94, 0x4c, 0x4c, 0x7b, 0xc4, 0x4f, 0x90, 0xe2, - 0x5e, 0x7e, 0x48, 0x2c, 0x9f, 0xaa, 0x6b, 0xa2, 0xbb, 0x1f, 0xf5, 0x32, 0x09, 0x1e, 0x40, 0x5e, - 0x42, 0xa2, 0x90, 0x92, 0x10, 0xdd, 0xb1, 0x44, 0xed, 0xeb, 0x22, 0x94, 0x13, 0x75, 0x35, 0xbe, - 0x06, 0x95, 0x87, 0xe4, 0x31, 0xd1, 0xa2, 0xbb, 0x92, 0xf0, 0x44, 0x99, 0x61, 0xbd, 0xf0, 0xbe, - 0xf4, 0x1e, 0x6c, 0x72, 0x8a, 0x33, 0x0d, 0xa8, 0xa7, 0xe9, 0x16, 0xf1, 0x7d, 0xee, 0xb4, 0x22, - 0xa7, 0x62, 0xd6, 0xd7, 0x65, 0x5d, 0xcd, 0xa8, 0x07, 0xdf, 0x81, 0x0d, 0x2e, 0x31, 0x99, 0x5a, - 0x81, 0xe9, 0x5a, 0x54, 0x63, 0xb7, 0x37, 0x9f, 0x9f, 0x24, 0xb1, 0x65, 0xeb, 0x8c, 0x71, 0x1c, - 0x12, 0x98, 0x45, 0x3e, 0x6e, 0xc1, 0x6b, 0x5c, 0x6c, 0x44, 0x6d, 0xea, 0x91, 0x80, 0x6a, 0xf4, - 0x8b, 0x29, 0xb1, 0x7c, 0x8d, 0xd8, 0x86, 0x36, 0x26, 0xfe, 0x58, 0xde, 0x64, 0x0a, 0xf6, 0x33, - 0xb2, 0xa4, 0x5e, 0x61, 0xc4, 0x83, 0x90, 0xa7, 0x70, 0x5a, 0xc3, 0x36, 0x3e, 0x26, 0xfe, 0x18, - 0xef, 0xc1, 0x25, 0xae, 0xc5, 0x0f, 0x3c, 0xd3, 0x1e, 0x69, 0xfa, 0x98, 0xea, 0x8f, 0xb4, 0x69, - 0x30, 0xbc, 0x27, 0xbf, 0x92, 0x1c, 0x9f, 0x5b, 0xd8, 0xe7, 0x9c, 0x26, 0xa3, 0x9c, 0x04, 0xc3, - 0x7b, 0xb8, 0x0f, 0x15, 0xb6, 0x18, 0x13, 0xf3, 0x4b, 0xaa, 0x0d, 0x1d, 0x8f, 0x1f, 0x8d, 0xd5, - 0x25, 0xa9, 0x29, 0xe1, 0xc1, 0x7a, 0x37, 0x14, 0x38, 0x76, 0x0c, 0xba, 0x97, 0xef, 0xf7, 0x14, - 0xa5, 0xa5, 0x96, 0x23, 0x2d, 0x0f, 0x1c, 0x8f, 0x05, 0xd4, 0xc8, 0x89, 0x1d, 0x5c, 0x16, 0x01, - 0x35, 0x72, 0x22, 0xf7, 0xde, 0x81, 0x0d, 0x5d, 0x17, 0x73, 0x36, 0x75, 0x2d, 0xbc, 0x63, 0xf9, - 0x32, 0x4a, 0x39, 0x4b, 0xd7, 0x0f, 0x04, 0x21, 0x8c, 0x71, 0x1f, 0x7f, 0x08, 0x2f, 0xcf, 0x9c, - 0x95, 0x14, 0x5c, 0x5f, 0x98, 0xe5, 0xbc, 0xe8, 0x1d, 0xd8, 0x70, 0xcf, 0x16, 0x05, 0x71, 0x6a, - 0x44, 0xf7, 0x6c, 0x5e, 0xec, 0x03, 0xd8, 0x74, 0xc7, 0xee, 0xa2, 0xdc, 0xcd, 0xa4, 0x1c, 0x76, - 0xc7, 0xee, 0xbc, 0xe0, 0x5b, 0xfc, 0xc2, 0xed, 0x51, 0x9d, 0x04, 0xd4, 0x90, 0x2f, 0x27, 0xe9, - 0x89, 0x0e, 0xbc, 0x0b, 0x48, 0xd7, 0x35, 0x6a, 0x93, 0x53, 0x8b, 0x6a, 0xc4, 0xa3, 0x36, 0xf1, - 0xe5, 0xab, 0x49, 0x72, 0x55, 0xd7, 0x15, 0xde, 0xdb, 0xe0, 0x9d, 0xf8, 0x26, 0xac, 0x3b, 0xa7, - 0x0f, 0x75, 0x11, 0x92, 0x9a, 0xeb, 0xd1, 0xa1, 0xf9, 0x54, 0x7e, 0x93, 0xfb, 0x77, 0x8d, 0x75, - 0xf0, 0x80, 0xec, 0x71, 0x18, 0xdf, 0x00, 0xa4, 0xfb, 0x63, 0xe2, 0xb9, 0x3c, 0x27, 0xfb, 0x2e, - 0xd1, 0xa9, 0xfc, 0x96, 0xa0, 0x0a, 0xbc, 0x13, 0xc1, 0x6c, 0x4b, 0xf8, 0x4f, 0xcc, 0x61, 0x10, - 0x69, 0xbc, 0x2e, 0xb6, 0x04, 0xc7, 0x42, 0x6d, 0x3b, 0x80, 0x98, 0x2b, 0x52, 0x03, 0xef, 0x70, - 0x5a, 0xd5, 0x1d, 0xbb, 0xc9, 0x71, 0xdf, 0x80, 0x55, 0xc6, 0x9c, 0x0d, 0x7a, 0x43, 0x14, 0x64, - 0xee, 0x38, 0x31, 0xe2, 0x0f, 0x56, 0x1b, 0xd7, 0xf6, 0xa0, 0x92, 0x8c, 0x4f, 0x5c, 0x02, 0x11, - 0xa1, 0x48, 0x62, 0xc5, 0x4a, 0xb3, 0xdb, 0x62, 0x65, 0xc6, 0xe7, 0x0a, 0xca, 0xb0, 0x72, 0xe7, - 0xa8, 0x3d, 0x50, 0x34, 0xf5, 0xa4, 0x33, 0x68, 0x1f, 0x2b, 0x28, 0x9b, 0xa8, 0xab, 0x0f, 0x73, - 0xc5, 0xb7, 0xd1, 0xf5, 0xda, 0x37, 0x19, 0xa8, 0xa6, 0x2f, 0x4a, 0xf8, 0xff, 0xe1, 0x72, 0xf4, - 0xaa, 0xe1, 0xd3, 0x40, 0x7b, 0x62, 0x7a, 0x7c, 0xe3, 0x4c, 0x88, 0x38, 0xc4, 0xe2, 0xa5, 0xdb, - 0x0c, 0x59, 0x7d, 0x1a, 0x7c, 0x62, 0x7a, 0x6c, 0x5b, 0x4c, 0x48, 0x80, 0x8f, 0xe0, 0xaa, 0xed, - 0x68, 0x7e, 0x40, 0x6c, 0x83, 0x78, 0x86, 0x36, 0x7b, 0x4f, 0xd2, 0x88, 0xae, 0x53, 0xdf, 0x77, - 0xc4, 0x81, 0x15, 0x6b, 0x79, 0xd5, 0x76, 0xfa, 0x21, 0x79, 0x96, 0xc9, 0x1b, 0x21, 0x75, 0x2e, - 0xcc, 0xb2, 0xe7, 0x85, 0xd9, 0x2b, 0x50, 0x9a, 0x10, 0x57, 0xa3, 0x76, 0xe0, 0x9d, 0xf1, 0xf2, - 0xb8, 0xa8, 0x16, 0x27, 0xc4, 0x55, 0x58, 0xfb, 0x85, 0xdc, 0x52, 0x0e, 0x73, 0xc5, 0x22, 0x2a, - 0x1d, 0xe6, 0x8a, 0x25, 0x04, 0xb5, 0x7f, 0x64, 0xa1, 0x92, 0x2c, 0x97, 0xd9, 0xed, 0x43, 0xe7, - 0x27, 0x8b, 0xc4, 0x73, 0xcf, 0x1b, 0xdf, 0x5a, 0x5c, 0xd7, 0x9b, 0xec, 0xc8, 0xd9, 0x2b, 0x88, - 0x22, 0x56, 0x15, 0x92, 0xec, 0xb8, 0x67, 0xd9, 0x86, 0x8a, 0xa2, 0xa1, 0xa8, 0x86, 0x2d, 0x7c, - 0x00, 0x85, 0x87, 0x3e, 0xd7, 0x5d, 0xe0, 0xba, 0xdf, 0xfc, 0x76, 0xdd, 0x87, 0x7d, 0xae, 0xbc, - 0x74, 0xd8, 0xd7, 0x3a, 0x5d, 0xf5, 0xb8, 0x71, 0xa4, 0x86, 0xe2, 0xf8, 0x0a, 0xe4, 0x2c, 0xf2, - 0xe5, 0x59, 0xfa, 0x70, 0xe2, 0xd0, 0x45, 0x17, 0xe1, 0x0a, 0xe4, 0x9e, 0x50, 0xf2, 0x28, 0x7d, - 0x24, 0x70, 0xe8, 0x07, 0xdc, 0x0c, 0xbb, 0x90, 0xe7, 0xfe, 0xc2, 0x00, 0xa1, 0xc7, 0xd0, 0x4b, - 0xb8, 0x08, 0xb9, 0x66, 0x57, 0x65, 0x1b, 0x02, 0x41, 0x45, 0xa0, 0x5a, 0xaf, 0xad, 0x34, 0x15, - 0x94, 0xa9, 0xdd, 0x81, 0x82, 0x70, 0x02, 0xdb, 0x2c, 0xb1, 0x1b, 0xd0, 0x4b, 0x61, 0x33, 0xd4, - 0x21, 0x45, 0xbd, 0x27, 0xc7, 0xfb, 0x8a, 0x8a, 0x32, 0xe9, 0xa5, 0xce, 0xa1, 0x7c, 0xcd, 0x87, - 0x4a, 0xb2, 0x5e, 0x7e, 0x31, 0x77, 0xe1, 0xbf, 0x4a, 0x50, 0x4e, 0xd4, 0xbf, 0xac, 0x70, 0x21, - 0x96, 0xe5, 0x3c, 0xd1, 0x88, 0x65, 0x12, 0x3f, 0x0c, 0x0d, 0xe0, 0x50, 0x83, 0x21, 0x17, 0x5d, - 0xba, 0x17, 0xb4, 0x45, 0xf2, 0xa8, 0x50, 0xfb, 0xa3, 0x04, 0x68, 0xbe, 0x00, 0x9d, 0x33, 0x53, - 0xfa, 0x31, 0xcd, 0xac, 0xfd, 0x41, 0x82, 0x6a, 0xba, 0xea, 0x9c, 0x33, 0xef, 0xda, 0x8f, 0x6a, - 0xde, 0xdf, 0x33, 0xb0, 0x9a, 0xaa, 0x35, 0x2f, 0x6a, 0xdd, 0x17, 0xb0, 0x6e, 0x1a, 0x74, 0xe2, - 0x3a, 0x01, 0xb5, 0xf5, 0x33, 0xcd, 0xa2, 0x8f, 0xa9, 0x25, 0xd7, 0x78, 0xd2, 0xd8, 0xfd, 0xf6, - 0x6a, 0xb6, 0xde, 0x9e, 0xc9, 0x1d, 0x31, 0xb1, 0xbd, 0x8d, 0x76, 0x4b, 0x39, 0xee, 0x75, 0x07, - 0x4a, 0xa7, 0xf9, 0x99, 0x76, 0xd2, 0xf9, 0x59, 0xa7, 0xfb, 0x49, 0x47, 0x45, 0xe6, 0x1c, 0xed, - 0x07, 0xdc, 0xf6, 0x3d, 0x40, 0xf3, 0x46, 0xe1, 0xcb, 0xb0, 0xcc, 0x2c, 0xf4, 0x12, 0xde, 0x80, - 0xb5, 0x4e, 0x57, 0xeb, 0xb7, 0x5b, 0x8a, 0xa6, 0x3c, 0x78, 0xa0, 0x34, 0x07, 0x7d, 0xf1, 0x3e, - 0x11, 0xb3, 0x07, 0xa9, 0x0d, 0x5e, 0xfb, 0x7d, 0x16, 0x36, 0x96, 0x58, 0x82, 0x1b, 0xe1, 0xcd, - 0x42, 0x5c, 0x76, 0xde, 0xbd, 0x88, 0xf5, 0x75, 0x56, 0x10, 0xf4, 0x88, 0x17, 0x84, 0x17, 0x91, - 0x1b, 0xc0, 0xbc, 0x64, 0x07, 0xe6, 0xd0, 0xa4, 0x5e, 0xf8, 0x9c, 0x23, 0xae, 0x1b, 0x6b, 0x33, - 0x5c, 0xbc, 0xe8, 0xfc, 0x1f, 0x60, 0xd7, 0xf1, 0xcd, 0xc0, 0x7c, 0x4c, 0x35, 0xd3, 0x8e, 0xde, - 0x7e, 0xd8, 0xf5, 0x23, 0xa7, 0xa2, 0xa8, 0xa7, 0x6d, 0x07, 0x31, 0xdb, 0xa6, 0x23, 0x32, 0xc7, - 0x66, 0xc9, 0x3c, 0xab, 0xa2, 0xa8, 0x27, 0x66, 0x5f, 0x83, 0x8a, 0xe1, 0x4c, 0x59, 0x4d, 0x26, - 0x78, 0xec, 0xec, 0x90, 0xd4, 0xb2, 0xc0, 0x62, 0x4a, 0x58, 0x6d, 0xcf, 0x1e, 0x9d, 0x2a, 0x6a, - 0x59, 0x60, 0x82, 0x72, 0x1d, 0xd6, 0xc8, 0x68, 0xe4, 0x31, 0xe5, 0x91, 0x22, 0x71, 0x7f, 0xa8, - 0xc6, 0x30, 0x27, 0x6e, 0x1d, 0x42, 0x31, 0xf2, 0x03, 0x3b, 0xaa, 0x99, 0x27, 0x34, 0x57, 0x5c, - 0x8a, 0x33, 0x3b, 0x25, 0xb5, 0x68, 0x47, 0x9d, 0xd7, 0xa0, 0x62, 0xfa, 0xda, 0xec, 0x0d, 0x3d, - 0xb3, 0x9d, 0xd9, 0x29, 0xaa, 0x65, 0xd3, 0x8f, 0xdf, 0x1f, 0x6b, 0x5f, 0x65, 0xa0, 0x9a, 0xfe, - 0x06, 0x80, 0x5b, 0x50, 0xb4, 0x1c, 0x9d, 0xf0, 0xd0, 0x12, 0x1f, 0xa0, 0x76, 0x9e, 0xf3, 0xd9, - 0xa0, 0x7e, 0x14, 0xf2, 0xd5, 0x58, 0x72, 0xeb, 0x6f, 0x12, 0x14, 0x23, 0x18, 0x5f, 0x82, 0x9c, - 0x4b, 0x82, 0x31, 0x57, 0x97, 0xdf, 0xcf, 0x20, 0x49, 0xe5, 0x6d, 0x86, 0xfb, 0x2e, 0xb1, 0x79, - 0x08, 0x84, 0x38, 0x6b, 0xb3, 0x75, 0xb5, 0x28, 0x31, 0xf8, 0xe5, 0xc4, 0x99, 0x4c, 0xa8, 0x1d, - 0xf8, 0xd1, 0xba, 0x86, 0x78, 0x33, 0x84, 0xf1, 0x3b, 0xb0, 0x1e, 0x78, 0xc4, 0xb4, 0x52, 0xdc, - 0x1c, 0xe7, 0xa2, 0xa8, 0x23, 0x26, 0xef, 0xc1, 0x95, 0x48, 0xaf, 0x41, 0x03, 0xa2, 0x8f, 0xa9, - 0x31, 0x13, 0x2a, 0xf0, 0x47, 0x88, 0xcb, 0x21, 0xa1, 0x15, 0xf6, 0x47, 0xb2, 0xb5, 0x6f, 0x24, - 0x58, 0x8f, 0xae, 0x53, 0x46, 0xec, 0xac, 0x63, 0x00, 0x62, 0xdb, 0x4e, 0x90, 0x74, 0xd7, 0x62, - 0x28, 0x2f, 0xc8, 0xd5, 0x1b, 0xb1, 0x90, 0x9a, 0x50, 0xb0, 0x35, 0x01, 0x98, 0xf5, 0x9c, 0xeb, - 0xb6, 0xab, 0x50, 0x0e, 0x3f, 0xf0, 0xf0, 0xaf, 0x84, 0xe2, 0x02, 0x0e, 0x02, 0x62, 0xf7, 0x2e, - 0xbc, 0x09, 0xf9, 0x53, 0x3a, 0x32, 0xed, 0xf0, 0xd9, 0x56, 0x34, 0xa2, 0x67, 0x92, 0x5c, 0xfc, - 0x4c, 0xb2, 0xff, 0x5b, 0x09, 0x36, 0x74, 0x67, 0x32, 0x6f, 0xef, 0x3e, 0x9a, 0x7b, 0x05, 0xf0, - 0x3f, 0x96, 0x3e, 0xff, 0x68, 0x64, 0x06, 0xe3, 0xe9, 0x69, 0x5d, 0x77, 0x26, 0xbb, 0x23, 0xc7, - 0x22, 0xf6, 0x68, 0xf6, 0x99, 0x93, 0xff, 0xd1, 0xdf, 0x1d, 0x51, 0xfb, 0xdd, 0x91, 0x93, 0xf8, - 0xe8, 0x79, 0x7f, 0xf6, 0xf7, 0xbf, 0x92, 0xf4, 0xa7, 0x4c, 0xf6, 0xa0, 0xb7, 0xff, 0xe7, 0xcc, - 0xd6, 0x81, 0x18, 0xae, 0x17, 0xb9, 0x47, 0xa5, 0x43, 0x8b, 0xea, 0x6c, 0xca, 0xff, 0x0b, 0x00, - 0x00, 0xff, 0xff, 0x1a, 0x28, 0x25, 0x79, 0x42, 0x1d, 0x00, 0x00, +func init() { proto.RegisterFile("google/protobuf/descriptor.proto", fileDescriptor_e5baabe45344a177) } + +var fileDescriptor_e5baabe45344a177 = []byte{ + // 2589 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xdd, 0x8e, 0xdb, 0xc6, + 0x15, 0x0e, 0xf5, 0xb7, 0xd2, 0x91, 0x56, 0x3b, 0x3b, 0xbb, 0xb1, 0xe9, 0xcd, 0x8f, 0xd7, 0xca, + 0x8f, 0xd7, 0x4e, 0xac, 0x0d, 0x1c, 0xdb, 0x71, 0xd6, 0x45, 0x5a, 0xad, 0x44, 0x6f, 0xe4, 0xee, + 0x4a, 0x2a, 0xa5, 0x6d, 0x7e, 0x80, 0x82, 0x98, 0x25, 0x47, 0x12, 0x6d, 0x8a, 0x64, 0x48, 0xca, + 0xf6, 0x06, 0xbd, 0x30, 0xd0, 0xab, 0x5e, 0x15, 0xe8, 0x55, 0x51, 0x14, 0xbd, 0xe8, 0x4d, 0x80, + 0x3e, 0x40, 0x81, 0xde, 0xf5, 0x09, 0x0a, 0xe4, 0x0d, 0x8a, 0xb6, 0x40, 0xfb, 0x08, 0xbd, 0x2c, + 0x66, 0x86, 0xa4, 0x48, 0x49, 0x1b, 0x6f, 0x02, 0xc4, 0xb9, 0x92, 0xe6, 0x3b, 0xdf, 0x39, 0x73, + 0xe6, 0xcc, 0x99, 0x99, 0x33, 0x43, 0xd8, 0x1e, 0x39, 0xce, 0xc8, 0xa2, 0xbb, 0xae, 0xe7, 0x04, + 0xce, 0xc9, 0x74, 0xb8, 0x6b, 0x50, 0x5f, 0xf7, 0x4c, 0x37, 0x70, 0xbc, 0x3a, 0xc7, 0xf0, 0x9a, + 0x60, 0xd4, 0x23, 0x46, 0xed, 0x08, 0xd6, 0xef, 0x9b, 0x16, 0x6d, 0xc5, 0xc4, 0x3e, 0x0d, 0xf0, + 0x5d, 0xc8, 0x0d, 0x4d, 0x8b, 0xca, 0xd2, 0x76, 0x76, 0xa7, 0x7c, 0xf3, 0xcd, 0xfa, 0x9c, 0x52, + 0x3d, 0xad, 0xd1, 0x63, 0xb0, 0xca, 0x35, 0x6a, 0xff, 0xce, 0xc1, 0xc6, 0x12, 0x29, 0xc6, 0x90, + 0xb3, 0xc9, 0x84, 0x59, 0x94, 0x76, 0x4a, 0x2a, 0xff, 0x8f, 0x65, 0x58, 0x71, 0x89, 0xfe, 0x88, + 0x8c, 0xa8, 0x9c, 0xe1, 0x70, 0xd4, 0xc4, 0xaf, 0x03, 0x18, 0xd4, 0xa5, 0xb6, 0x41, 0x6d, 0xfd, + 0x54, 0xce, 0x6e, 0x67, 0x77, 0x4a, 0x6a, 0x02, 0xc1, 0xef, 0xc0, 0xba, 0x3b, 0x3d, 0xb1, 0x4c, + 0x5d, 0x4b, 0xd0, 0x60, 0x3b, 0xbb, 0x93, 0x57, 0x91, 0x10, 0xb4, 0x66, 0xe4, 0xab, 0xb0, 0xf6, + 0x84, 0x92, 0x47, 0x49, 0x6a, 0x99, 0x53, 0xab, 0x0c, 0x4e, 0x10, 0x9b, 0x50, 0x99, 0x50, 0xdf, + 0x27, 0x23, 0xaa, 0x05, 0xa7, 0x2e, 0x95, 0x73, 0x7c, 0xf4, 0xdb, 0x0b, 0xa3, 0x9f, 0x1f, 0x79, + 0x39, 0xd4, 0x1a, 0x9c, 0xba, 0x14, 0x37, 0xa0, 0x44, 0xed, 0xe9, 0x44, 0x58, 0xc8, 0x9f, 0x11, + 0x3f, 0xc5, 0x9e, 0x4e, 0xe6, 0xad, 0x14, 0x99, 0x5a, 0x68, 0x62, 0xc5, 0xa7, 0xde, 0x63, 0x53, + 0xa7, 0x72, 0x81, 0x1b, 0xb8, 0xba, 0x60, 0xa0, 0x2f, 0xe4, 0xf3, 0x36, 0x22, 0x3d, 0xdc, 0x84, + 0x12, 0x7d, 0x1a, 0x50, 0xdb, 0x37, 0x1d, 0x5b, 0x5e, 0xe1, 0x46, 0xde, 0x5a, 0x32, 0x8b, 0xd4, + 0x32, 0xe6, 0x4d, 0xcc, 0xf4, 0xf0, 0x1d, 0x58, 0x71, 0xdc, 0xc0, 0x74, 0x6c, 0x5f, 0x2e, 0x6e, + 0x4b, 0x3b, 0xe5, 0x9b, 0xaf, 0x2e, 0x4d, 0x84, 0xae, 0xe0, 0xa8, 0x11, 0x19, 0xb7, 0x01, 0xf9, + 0xce, 0xd4, 0xd3, 0xa9, 0xa6, 0x3b, 0x06, 0xd5, 0x4c, 0x7b, 0xe8, 0xc8, 0x25, 0x6e, 0xe0, 0xf2, + 0xe2, 0x40, 0x38, 0xb1, 0xe9, 0x18, 0xb4, 0x6d, 0x0f, 0x1d, 0xb5, 0xea, 0xa7, 0xda, 0xf8, 0x02, + 0x14, 0xfc, 0x53, 0x3b, 0x20, 0x4f, 0xe5, 0x0a, 0xcf, 0x90, 0xb0, 0x55, 0xfb, 0x6b, 0x01, 0xd6, + 0xce, 0x93, 0x62, 0xf7, 0x20, 0x3f, 0x64, 0xa3, 0x94, 0x33, 0xdf, 0x26, 0x06, 0x42, 0x27, 0x1d, + 0xc4, 0xc2, 0x77, 0x0c, 0x62, 0x03, 0xca, 0x36, 0xf5, 0x03, 0x6a, 0x88, 0x8c, 0xc8, 0x9e, 0x33, + 0xa7, 0x40, 0x28, 0x2d, 0xa6, 0x54, 0xee, 0x3b, 0xa5, 0xd4, 0xa7, 0xb0, 0x16, 0xbb, 0xa4, 0x79, + 0xc4, 0x1e, 0x45, 0xb9, 0xb9, 0xfb, 0x3c, 0x4f, 0xea, 0x4a, 0xa4, 0xa7, 0x32, 0x35, 0xb5, 0x4a, + 0x53, 0x6d, 0xdc, 0x02, 0x70, 0x6c, 0xea, 0x0c, 0x35, 0x83, 0xea, 0x96, 0x5c, 0x3c, 0x23, 0x4a, + 0x5d, 0x46, 0x59, 0x88, 0x92, 0x23, 0x50, 0xdd, 0xc2, 0x1f, 0xce, 0x52, 0x6d, 0xe5, 0x8c, 0x4c, + 0x39, 0x12, 0x8b, 0x6c, 0x21, 0xdb, 0x8e, 0xa1, 0xea, 0x51, 0x96, 0xf7, 0xd4, 0x08, 0x47, 0x56, + 0xe2, 0x4e, 0xd4, 0x9f, 0x3b, 0x32, 0x35, 0x54, 0x13, 0x03, 0x5b, 0xf5, 0x92, 0x4d, 0xfc, 0x06, + 0xc4, 0x80, 0xc6, 0xd3, 0x0a, 0xf8, 0x2e, 0x54, 0x89, 0xc0, 0x0e, 0x99, 0xd0, 0xad, 0x2f, 0xa1, + 0x9a, 0x0e, 0x0f, 0xde, 0x84, 0xbc, 0x1f, 0x10, 0x2f, 0xe0, 0x59, 0x98, 0x57, 0x45, 0x03, 0x23, + 0xc8, 0x52, 0xdb, 0xe0, 0xbb, 0x5c, 0x5e, 0x65, 0x7f, 0xf1, 0x4f, 0x66, 0x03, 0xce, 0xf2, 0x01, + 0xbf, 0xbd, 0x38, 0xa3, 0x29, 0xcb, 0xf3, 0xe3, 0xde, 0xfa, 0x00, 0x56, 0x53, 0x03, 0x38, 0x6f, + 0xd7, 0xb5, 0x5f, 0xc2, 0xcb, 0x4b, 0x4d, 0xe3, 0x4f, 0x61, 0x73, 0x6a, 0x9b, 0x76, 0x40, 0x3d, + 0xd7, 0xa3, 0x2c, 0x63, 0x45, 0x57, 0xf2, 0x7f, 0x56, 0xce, 0xc8, 0xb9, 0xe3, 0x24, 0x5b, 0x58, + 0x51, 0x37, 0xa6, 0x8b, 0xe0, 0xf5, 0x52, 0xf1, 0xbf, 0x2b, 0xe8, 0xd9, 0xb3, 0x67, 0xcf, 0x32, + 0xb5, 0xdf, 0x15, 0x60, 0x73, 0xd9, 0x9a, 0x59, 0xba, 0x7c, 0x2f, 0x40, 0xc1, 0x9e, 0x4e, 0x4e, + 0xa8, 0xc7, 0x83, 0x94, 0x57, 0xc3, 0x16, 0x6e, 0x40, 0xde, 0x22, 0x27, 0xd4, 0x92, 0x73, 0xdb, + 0xd2, 0x4e, 0xf5, 0xe6, 0x3b, 0xe7, 0x5a, 0x95, 0xf5, 0x43, 0xa6, 0xa2, 0x0a, 0x4d, 0xfc, 0x11, + 0xe4, 0xc2, 0x2d, 0x9a, 0x59, 0xb8, 0x7e, 0x3e, 0x0b, 0x6c, 0x2d, 0xa9, 0x5c, 0x0f, 0xbf, 0x02, + 0x25, 0xf6, 0x2b, 0x72, 0xa3, 0xc0, 0x7d, 0x2e, 0x32, 0x80, 0xe5, 0x05, 0xde, 0x82, 0x22, 0x5f, + 0x26, 0x06, 0x8d, 0x8e, 0xb6, 0xb8, 0xcd, 0x12, 0xcb, 0xa0, 0x43, 0x32, 0xb5, 0x02, 0xed, 0x31, + 0xb1, 0xa6, 0x94, 0x27, 0x7c, 0x49, 0xad, 0x84, 0xe0, 0xcf, 0x19, 0x86, 0x2f, 0x43, 0x59, 0xac, + 0x2a, 0xd3, 0x36, 0xe8, 0x53, 0xbe, 0x7b, 0xe6, 0x55, 0xb1, 0xd0, 0xda, 0x0c, 0x61, 0xdd, 0x3f, + 0xf4, 0x1d, 0x3b, 0x4a, 0x4d, 0xde, 0x05, 0x03, 0x78, 0xf7, 0x1f, 0xcc, 0x6f, 0xdc, 0xaf, 0x2d, + 0x1f, 0xde, 0x7c, 0x4e, 0xd5, 0xfe, 0x92, 0x81, 0x1c, 0xdf, 0x2f, 0xd6, 0xa0, 0x3c, 0xf8, 0xac, + 0xa7, 0x68, 0xad, 0xee, 0xf1, 0xfe, 0xa1, 0x82, 0x24, 0x5c, 0x05, 0xe0, 0xc0, 0xfd, 0xc3, 0x6e, + 0x63, 0x80, 0x32, 0x71, 0xbb, 0xdd, 0x19, 0xdc, 0xb9, 0x85, 0xb2, 0xb1, 0xc2, 0xb1, 0x00, 0x72, + 0x49, 0xc2, 0xfb, 0x37, 0x51, 0x1e, 0x23, 0xa8, 0x08, 0x03, 0xed, 0x4f, 0x95, 0xd6, 0x9d, 0x5b, + 0xa8, 0x90, 0x46, 0xde, 0xbf, 0x89, 0x56, 0xf0, 0x2a, 0x94, 0x38, 0xb2, 0xdf, 0xed, 0x1e, 0xa2, + 0x62, 0x6c, 0xb3, 0x3f, 0x50, 0xdb, 0x9d, 0x03, 0x54, 0x8a, 0x6d, 0x1e, 0xa8, 0xdd, 0xe3, 0x1e, + 0x82, 0xd8, 0xc2, 0x91, 0xd2, 0xef, 0x37, 0x0e, 0x14, 0x54, 0x8e, 0x19, 0xfb, 0x9f, 0x0d, 0x94, + 0x3e, 0xaa, 0xa4, 0xdc, 0x7a, 0xff, 0x26, 0x5a, 0x8d, 0xbb, 0x50, 0x3a, 0xc7, 0x47, 0xa8, 0x8a, + 0xd7, 0x61, 0x55, 0x74, 0x11, 0x39, 0xb1, 0x36, 0x07, 0xdd, 0xb9, 0x85, 0xd0, 0xcc, 0x11, 0x61, + 0x65, 0x3d, 0x05, 0xdc, 0xb9, 0x85, 0x70, 0xad, 0x09, 0x79, 0x9e, 0x5d, 0x18, 0x43, 0xf5, 0xb0, + 0xb1, 0xaf, 0x1c, 0x6a, 0xdd, 0xde, 0xa0, 0xdd, 0xed, 0x34, 0x0e, 0x91, 0x34, 0xc3, 0x54, 0xe5, + 0x67, 0xc7, 0x6d, 0x55, 0x69, 0xa1, 0x4c, 0x12, 0xeb, 0x29, 0x8d, 0x81, 0xd2, 0x42, 0xd9, 0x9a, + 0x0e, 0x9b, 0xcb, 0xf6, 0xc9, 0xa5, 0x2b, 0x23, 0x31, 0xc5, 0x99, 0x33, 0xa6, 0x98, 0xdb, 0x5a, + 0x98, 0xe2, 0x7f, 0x65, 0x60, 0x63, 0xc9, 0x59, 0xb1, 0xb4, 0x93, 0x1f, 0x43, 0x5e, 0xa4, 0xa8, + 0x38, 0x3d, 0xaf, 0x2d, 0x3d, 0x74, 0x78, 0xc2, 0x2e, 0x9c, 0xa0, 0x5c, 0x2f, 0x59, 0x41, 0x64, + 0xcf, 0xa8, 0x20, 0x98, 0x89, 0x85, 0x3d, 0xfd, 0x17, 0x0b, 0x7b, 0xba, 0x38, 0xf6, 0xee, 0x9c, + 0xe7, 0xd8, 0xe3, 0xd8, 0xb7, 0xdb, 0xdb, 0xf3, 0x4b, 0xf6, 0xf6, 0x7b, 0xb0, 0xbe, 0x60, 0xe8, + 0xdc, 0x7b, 0xec, 0xaf, 0x24, 0x90, 0xcf, 0x0a, 0xce, 0x73, 0x76, 0xba, 0x4c, 0x6a, 0xa7, 0xbb, + 0x37, 0x1f, 0xc1, 0x2b, 0x67, 0x4f, 0xc2, 0xc2, 0x5c, 0x7f, 0x25, 0xc1, 0x85, 0xe5, 0x95, 0xe2, + 0x52, 0x1f, 0x3e, 0x82, 0xc2, 0x84, 0x06, 0x63, 0x27, 0xaa, 0x96, 0xde, 0x5e, 0x72, 0x06, 0x33, + 0xf1, 0xfc, 0x64, 0x87, 0x5a, 0xc9, 0x43, 0x3c, 0x7b, 0x56, 0xb9, 0x27, 0xbc, 0x59, 0xf0, 0xf4, + 0xd7, 0x19, 0x78, 0x79, 0xa9, 0xf1, 0xa5, 0x8e, 0xbe, 0x06, 0x60, 0xda, 0xee, 0x34, 0x10, 0x15, + 0x91, 0xd8, 0x60, 0x4b, 0x1c, 0xe1, 0x9b, 0x17, 0xdb, 0x3c, 0xa7, 0x41, 0x2c, 0xcf, 0x72, 0x39, + 0x08, 0x88, 0x13, 0xee, 0xce, 0x1c, 0xcd, 0x71, 0x47, 0x5f, 0x3f, 0x63, 0xa4, 0x0b, 0x89, 0xf9, + 0x1e, 0x20, 0xdd, 0x32, 0xa9, 0x1d, 0x68, 0x7e, 0xe0, 0x51, 0x32, 0x31, 0xed, 0x11, 0x3f, 0x41, + 0x8a, 0x7b, 0xf9, 0x21, 0xb1, 0x7c, 0xaa, 0xae, 0x09, 0x71, 0x3f, 0x92, 0x32, 0x0d, 0x9e, 0x40, + 0x5e, 0x42, 0xa3, 0x90, 0xd2, 0x10, 0xe2, 0x58, 0xa3, 0xf6, 0xdb, 0x12, 0x94, 0x13, 0x75, 0x35, + 0xbe, 0x02, 0x95, 0x87, 0xe4, 0x31, 0xd1, 0xa2, 0xbb, 0x92, 0x88, 0x44, 0x99, 0x61, 0xbd, 0xf0, + 0xbe, 0xf4, 0x1e, 0x6c, 0x72, 0x8a, 0x33, 0x0d, 0xa8, 0xa7, 0xe9, 0x16, 0xf1, 0x7d, 0x1e, 0xb4, + 0x22, 0xa7, 0x62, 0x26, 0xeb, 0x32, 0x51, 0x33, 0x92, 0xe0, 0xdb, 0xb0, 0xc1, 0x35, 0x26, 0x53, + 0x2b, 0x30, 0x5d, 0x8b, 0x6a, 0xec, 0xf6, 0xe6, 0xf3, 0x93, 0x24, 0xf6, 0x6c, 0x9d, 0x31, 0x8e, + 0x42, 0x02, 0xf3, 0xc8, 0xc7, 0x2d, 0x78, 0x8d, 0xab, 0x8d, 0xa8, 0x4d, 0x3d, 0x12, 0x50, 0x8d, + 0x7e, 0x31, 0x25, 0x96, 0xaf, 0x11, 0xdb, 0xd0, 0xc6, 0xc4, 0x1f, 0xcb, 0x9b, 0xcc, 0xc0, 0x7e, + 0x46, 0x96, 0xd4, 0x4b, 0x8c, 0x78, 0x10, 0xf2, 0x14, 0x4e, 0x6b, 0xd8, 0xc6, 0xc7, 0xc4, 0x1f, + 0xe3, 0x3d, 0xb8, 0xc0, 0xad, 0xf8, 0x81, 0x67, 0xda, 0x23, 0x4d, 0x1f, 0x53, 0xfd, 0x91, 0x36, + 0x0d, 0x86, 0x77, 0xe5, 0x57, 0x92, 0xfd, 0x73, 0x0f, 0xfb, 0x9c, 0xd3, 0x64, 0x94, 0xe3, 0x60, + 0x78, 0x17, 0xf7, 0xa1, 0xc2, 0x26, 0x63, 0x62, 0x7e, 0x49, 0xb5, 0xa1, 0xe3, 0xf1, 0xa3, 0xb1, + 0xba, 0x64, 0x6b, 0x4a, 0x44, 0xb0, 0xde, 0x0d, 0x15, 0x8e, 0x1c, 0x83, 0xee, 0xe5, 0xfb, 0x3d, + 0x45, 0x69, 0xa9, 0xe5, 0xc8, 0xca, 0x7d, 0xc7, 0x63, 0x09, 0x35, 0x72, 0xe2, 0x00, 0x97, 0x45, + 0x42, 0x8d, 0x9c, 0x28, 0xbc, 0xb7, 0x61, 0x43, 0xd7, 0xc5, 0x98, 0x4d, 0x5d, 0x0b, 0xef, 0x58, + 0xbe, 0x8c, 0x52, 0xc1, 0xd2, 0xf5, 0x03, 0x41, 0x08, 0x73, 0xdc, 0xc7, 0x1f, 0xc2, 0xcb, 0xb3, + 0x60, 0x25, 0x15, 0xd7, 0x17, 0x46, 0x39, 0xaf, 0x7a, 0x1b, 0x36, 0xdc, 0xd3, 0x45, 0x45, 0x9c, + 0xea, 0xd1, 0x3d, 0x9d, 0x57, 0xfb, 0x00, 0x36, 0xdd, 0xb1, 0xbb, 0xa8, 0x77, 0x3d, 0xa9, 0x87, + 0xdd, 0xb1, 0x3b, 0xaf, 0xf8, 0x16, 0xbf, 0x70, 0x7b, 0x54, 0x27, 0x01, 0x35, 0xe4, 0x8b, 0x49, + 0x7a, 0x42, 0x80, 0x77, 0x01, 0xe9, 0xba, 0x46, 0x6d, 0x72, 0x62, 0x51, 0x8d, 0x78, 0xd4, 0x26, + 0xbe, 0x7c, 0x39, 0x49, 0xae, 0xea, 0xba, 0xc2, 0xa5, 0x0d, 0x2e, 0xc4, 0xd7, 0x61, 0xdd, 0x39, + 0x79, 0xa8, 0x8b, 0x94, 0xd4, 0x5c, 0x8f, 0x0e, 0xcd, 0xa7, 0xf2, 0x9b, 0x3c, 0xbe, 0x6b, 0x4c, + 0xc0, 0x13, 0xb2, 0xc7, 0x61, 0x7c, 0x0d, 0x90, 0xee, 0x8f, 0x89, 0xe7, 0xf2, 0x3d, 0xd9, 0x77, + 0x89, 0x4e, 0xe5, 0xb7, 0x04, 0x55, 0xe0, 0x9d, 0x08, 0x66, 0x4b, 0xc2, 0x7f, 0x62, 0x0e, 0x83, + 0xc8, 0xe2, 0x55, 0xb1, 0x24, 0x38, 0x16, 0x5a, 0xdb, 0x01, 0xc4, 0x42, 0x91, 0xea, 0x78, 0x87, + 0xd3, 0xaa, 0xee, 0xd8, 0x4d, 0xf6, 0xfb, 0x06, 0xac, 0x32, 0xe6, 0xac, 0xd3, 0x6b, 0xa2, 0x20, + 0x73, 0xc7, 0x89, 0x1e, 0x6f, 0xc1, 0x05, 0x46, 0x9a, 0xd0, 0x80, 0x18, 0x24, 0x20, 0x09, 0xf6, + 0xbb, 0x9c, 0xcd, 0xe2, 0x7e, 0x14, 0x0a, 0x53, 0x7e, 0x7a, 0xd3, 0x93, 0xd3, 0x38, 0xb3, 0x6e, + 0x08, 0x3f, 0x19, 0x16, 0xe5, 0xd6, 0xf7, 0x56, 0x74, 0xd7, 0xf6, 0xa0, 0x92, 0x4c, 0x7c, 0x5c, + 0x02, 0x91, 0xfa, 0x48, 0x62, 0x55, 0x50, 0xb3, 0xdb, 0x62, 0xf5, 0xcb, 0xe7, 0x0a, 0xca, 0xb0, + 0x3a, 0xea, 0xb0, 0x3d, 0x50, 0x34, 0xf5, 0xb8, 0x33, 0x68, 0x1f, 0x29, 0x28, 0x9b, 0x28, 0xd8, + 0x1f, 0xe4, 0x8a, 0x6f, 0xa3, 0xab, 0xb5, 0xaf, 0x33, 0x50, 0x4d, 0xdf, 0xc0, 0xf0, 0x8f, 0xe0, + 0x62, 0xf4, 0x5c, 0xe2, 0xd3, 0x40, 0x7b, 0x62, 0x7a, 0x7c, 0x45, 0x4e, 0x88, 0x38, 0x1d, 0xe3, + 0x9c, 0xd8, 0x0c, 0x59, 0x7d, 0x1a, 0x7c, 0x62, 0x7a, 0x6c, 0xbd, 0x4d, 0x48, 0x80, 0x0f, 0xe1, + 0xb2, 0xed, 0x68, 0x7e, 0x40, 0x6c, 0x83, 0x78, 0x86, 0x36, 0x7b, 0xa8, 0xd2, 0x88, 0xae, 0x53, + 0xdf, 0x77, 0xc4, 0x49, 0x18, 0x5b, 0x79, 0xd5, 0x76, 0xfa, 0x21, 0x79, 0x76, 0x44, 0x34, 0x42, + 0xea, 0x5c, 0xfe, 0x66, 0xcf, 0xca, 0xdf, 0x57, 0xa0, 0x34, 0x21, 0xae, 0x46, 0xed, 0xc0, 0x3b, + 0xe5, 0x75, 0x77, 0x51, 0x2d, 0x4e, 0x88, 0xab, 0xb0, 0xf6, 0x0b, 0xb9, 0xfe, 0x3c, 0xc8, 0x15, + 0x8b, 0xa8, 0xf4, 0x20, 0x57, 0x2c, 0x21, 0xa8, 0xfd, 0x33, 0x0b, 0x95, 0x64, 0x1d, 0xce, 0xae, + 0x35, 0x3a, 0x3f, 0xb2, 0x24, 0xbe, 0xa9, 0xbd, 0xf1, 0x8d, 0x55, 0x7b, 0xbd, 0xc9, 0xce, 0xb2, + 0xbd, 0x82, 0xa8, 0x8e, 0x55, 0xa1, 0xc9, 0xea, 0x08, 0x96, 0x6c, 0x54, 0x54, 0x23, 0x45, 0x35, + 0x6c, 0xe1, 0x03, 0x28, 0x3c, 0xf4, 0xb9, 0xed, 0x02, 0xb7, 0xfd, 0xe6, 0x37, 0xdb, 0x7e, 0xd0, + 0xe7, 0xc6, 0x4b, 0x0f, 0xfa, 0x5a, 0xa7, 0xab, 0x1e, 0x35, 0x0e, 0xd5, 0x50, 0x1d, 0x5f, 0x82, + 0x9c, 0x45, 0xbe, 0x3c, 0x4d, 0x9f, 0x7a, 0x1c, 0x3a, 0xef, 0x24, 0x5c, 0x82, 0xdc, 0x13, 0x4a, + 0x1e, 0xa5, 0xcf, 0x1a, 0x0e, 0x7d, 0x8f, 0x8b, 0x61, 0x17, 0xf2, 0x3c, 0x5e, 0x18, 0x20, 0x8c, + 0x18, 0x7a, 0x09, 0x17, 0x21, 0xd7, 0xec, 0xaa, 0x6c, 0x41, 0x20, 0xa8, 0x08, 0x54, 0xeb, 0xb5, + 0x95, 0xa6, 0x82, 0x32, 0xb5, 0xdb, 0x50, 0x10, 0x41, 0x60, 0x8b, 0x25, 0x0e, 0x03, 0x7a, 0x29, + 0x6c, 0x86, 0x36, 0xa4, 0x48, 0x7a, 0x7c, 0xb4, 0xaf, 0xa8, 0x28, 0x93, 0x9e, 0xea, 0x1c, 0xca, + 0xd7, 0x7c, 0xa8, 0x24, 0x0b, 0xf1, 0x17, 0x73, 0xc9, 0xfe, 0x9b, 0x04, 0xe5, 0x44, 0x61, 0xcd, + 0x2a, 0x22, 0x62, 0x59, 0xce, 0x13, 0x8d, 0x58, 0x26, 0xf1, 0xc3, 0xd4, 0x00, 0x0e, 0x35, 0x18, + 0x72, 0xde, 0xa9, 0x7b, 0x41, 0x4b, 0x24, 0x8f, 0x0a, 0xb5, 0x3f, 0x4a, 0x80, 0xe6, 0x2b, 0xdb, + 0x39, 0x37, 0xa5, 0x1f, 0xd2, 0xcd, 0xda, 0x1f, 0x24, 0xa8, 0xa6, 0xcb, 0xd9, 0x39, 0xf7, 0xae, + 0xfc, 0xa0, 0xee, 0xfd, 0x23, 0x03, 0xab, 0xa9, 0x22, 0xf6, 0xbc, 0xde, 0x7d, 0x01, 0xeb, 0xa6, + 0x41, 0x27, 0xae, 0x13, 0x50, 0x5b, 0x3f, 0xd5, 0x2c, 0xfa, 0x98, 0x5a, 0x72, 0x8d, 0x6f, 0x1a, + 0xbb, 0xdf, 0x5c, 0x26, 0xd7, 0xdb, 0x33, 0xbd, 0x43, 0xa6, 0xb6, 0xb7, 0xd1, 0x6e, 0x29, 0x47, + 0xbd, 0xee, 0x40, 0xe9, 0x34, 0x3f, 0xd3, 0x8e, 0x3b, 0x3f, 0xed, 0x74, 0x3f, 0xe9, 0xa8, 0xc8, + 0x9c, 0xa3, 0x7d, 0x8f, 0xcb, 0xbe, 0x07, 0x68, 0xde, 0x29, 0x7c, 0x11, 0x96, 0xb9, 0x85, 0x5e, + 0xc2, 0x1b, 0xb0, 0xd6, 0xe9, 0x6a, 0xfd, 0x76, 0x4b, 0xd1, 0x94, 0xfb, 0xf7, 0x95, 0xe6, 0xa0, + 0x2f, 0x1e, 0x3e, 0x62, 0xf6, 0x20, 0xb5, 0xc0, 0x6b, 0xbf, 0xcf, 0xc2, 0xc6, 0x12, 0x4f, 0x70, + 0x23, 0xbc, 0xb2, 0x88, 0x5b, 0xd4, 0x8d, 0xf3, 0x78, 0x5f, 0x67, 0x35, 0x43, 0x8f, 0x78, 0x41, + 0x78, 0xc3, 0xb9, 0x06, 0x2c, 0x4a, 0x76, 0x60, 0x0e, 0x4d, 0xea, 0x85, 0xef, 0x44, 0xe2, 0x1e, + 0xb3, 0x36, 0xc3, 0xc5, 0x53, 0xd1, 0xbb, 0x80, 0x5d, 0xc7, 0x37, 0x03, 0xf3, 0x31, 0xd5, 0x4c, + 0x3b, 0x7a, 0x54, 0x62, 0xf7, 0x9a, 0x9c, 0x8a, 0x22, 0x49, 0xdb, 0x0e, 0x62, 0xb6, 0x4d, 0x47, + 0x64, 0x8e, 0xcd, 0x36, 0xf3, 0xac, 0x8a, 0x22, 0x49, 0xcc, 0xbe, 0x02, 0x15, 0xc3, 0x99, 0xb2, + 0x62, 0x4f, 0xf0, 0xd8, 0xd9, 0x21, 0xa9, 0x65, 0x81, 0xc5, 0x94, 0xb0, 0x8c, 0x9f, 0xbd, 0x66, + 0x55, 0xd4, 0xb2, 0xc0, 0x04, 0xe5, 0x2a, 0xac, 0x91, 0xd1, 0xc8, 0x63, 0xc6, 0x23, 0x43, 0xe2, + 0x62, 0x52, 0x8d, 0x61, 0x4e, 0xdc, 0x7a, 0x00, 0xc5, 0x28, 0x0e, 0xec, 0xa8, 0x66, 0x91, 0xd0, + 0x5c, 0x71, 0xdb, 0xce, 0xec, 0x94, 0xd4, 0xa2, 0x1d, 0x09, 0xaf, 0x40, 0xc5, 0xf4, 0xb5, 0xd9, + 0xe3, 0x7c, 0x66, 0x3b, 0xb3, 0x53, 0x54, 0xcb, 0xa6, 0x1f, 0x3f, 0x6c, 0xd6, 0xbe, 0xca, 0x40, + 0x35, 0xfd, 0x71, 0x01, 0xb7, 0xa0, 0x68, 0x39, 0x3a, 0xe1, 0xa9, 0x25, 0xbe, 0x6c, 0xed, 0x3c, + 0xe7, 0x7b, 0x44, 0xfd, 0x30, 0xe4, 0xab, 0xb1, 0xe6, 0xd6, 0xdf, 0x25, 0x28, 0x46, 0x30, 0xbe, + 0x00, 0x39, 0x97, 0x04, 0x63, 0x6e, 0x2e, 0xbf, 0x9f, 0x41, 0x92, 0xca, 0xdb, 0x0c, 0xf7, 0x5d, + 0x62, 0xf3, 0x14, 0x08, 0x71, 0xd6, 0x66, 0xf3, 0x6a, 0x51, 0x62, 0xf0, 0x5b, 0x8f, 0x33, 0x99, + 0x50, 0x3b, 0xf0, 0xa3, 0x79, 0x0d, 0xf1, 0x66, 0x08, 0xe3, 0x77, 0x60, 0x3d, 0xf0, 0x88, 0x69, + 0xa5, 0xb8, 0x39, 0xce, 0x45, 0x91, 0x20, 0x26, 0xef, 0xc1, 0xa5, 0xc8, 0xae, 0x41, 0x03, 0xa2, + 0x8f, 0xa9, 0x31, 0x53, 0x2a, 0xf0, 0xd7, 0x8d, 0x8b, 0x21, 0xa1, 0x15, 0xca, 0x23, 0xdd, 0xda, + 0xd7, 0x12, 0xac, 0x47, 0xf7, 0x34, 0x23, 0x0e, 0xd6, 0x11, 0x00, 0xb1, 0x6d, 0x27, 0x48, 0x86, + 0x6b, 0x31, 0x95, 0x17, 0xf4, 0xea, 0x8d, 0x58, 0x49, 0x4d, 0x18, 0xd8, 0x9a, 0x00, 0xcc, 0x24, + 0x67, 0x86, 0xed, 0x32, 0x94, 0xc3, 0x2f, 0x47, 0xfc, 0xf3, 0xa3, 0xb8, 0xd9, 0x83, 0x80, 0xd8, + 0x85, 0x0e, 0x6f, 0x42, 0xfe, 0x84, 0x8e, 0x4c, 0x3b, 0x7c, 0x0f, 0x16, 0x8d, 0xe8, 0xfd, 0x25, + 0x17, 0xbf, 0xbf, 0xec, 0xff, 0x46, 0x82, 0x0d, 0xdd, 0x99, 0xcc, 0xfb, 0xbb, 0x8f, 0xe6, 0x9e, + 0x17, 0xfc, 0x8f, 0xa5, 0xcf, 0x3f, 0x1a, 0x99, 0xc1, 0x78, 0x7a, 0x52, 0xd7, 0x9d, 0xc9, 0xee, + 0xc8, 0xb1, 0x88, 0x3d, 0x9a, 0x7d, 0x3f, 0xe5, 0x7f, 0xf4, 0x1b, 0x23, 0x6a, 0xdf, 0x18, 0x39, + 0x89, 0xaf, 0xa9, 0xf7, 0x66, 0x7f, 0xff, 0x27, 0x49, 0x7f, 0xca, 0x64, 0x0f, 0x7a, 0xfb, 0x7f, + 0xce, 0x6c, 0x1d, 0x88, 0xee, 0x7a, 0x51, 0x78, 0x54, 0x3a, 0xb4, 0xa8, 0xce, 0x86, 0xfc, 0xff, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x3e, 0xe8, 0xef, 0xc4, 0x9b, 0x1d, 0x00, 0x00, } diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.proto index 8697a50de4..ed08fcbc54 100644 --- a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.proto +++ b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.proto @@ -417,6 +417,17 @@ message FileOptions { // determining the namespace. optional string php_namespace = 41; + + // Use this option to change the namespace of php generated metadata classes. + // Default is empty. When this option is empty, the proto file name will be used + // for determining the namespace. + optional string php_metadata_namespace = 44; + + // Use this option to change the package of ruby generated classes. Default + // is empty. When this option is not set, the package name will be used for + // determining the ruby package. + optional string ruby_package = 45; + // The parser stores options it doesn't recognize here. // See the documentation for the "Options" section above. repeated UninterpretedOption uninterpreted_option = 999; diff --git a/vendor/github.com/golang/protobuf/ptypes/any.go b/vendor/github.com/golang/protobuf/ptypes/any.go index b2af97f4a9..70276e8f5c 100644 --- a/vendor/github.com/golang/protobuf/ptypes/any.go +++ b/vendor/github.com/golang/protobuf/ptypes/any.go @@ -130,10 +130,12 @@ func UnmarshalAny(any *any.Any, pb proto.Message) error { // Is returns true if any value contains a given message type. func Is(any *any.Any, pb proto.Message) bool { - aname, err := AnyMessageName(any) - if err != nil { + // The following is equivalent to AnyMessageName(any) == proto.MessageName(pb), + // but it avoids scanning TypeUrl for the slash. + if any == nil { return false } - - return aname == proto.MessageName(pb) + name := proto.MessageName(pb) + prefix := len(any.TypeUrl) - len(name) + return prefix >= 1 && any.TypeUrl[prefix-1] == '/' && any.TypeUrl[prefix:] == name } diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go index f67edc7dc2..78ee523349 100644 --- a/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go @@ -1,11 +1,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: google/protobuf/any.proto -package any // import "github.com/golang/protobuf/ptypes/any" +package any -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -16,7 +18,7 @@ var _ = math.Inf // is compatible with the proto package it is being compiled against. // A compilation error at this line likely means your copy of the // proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package // `Any` contains an arbitrary serialized protocol buffer message along with a // URL that describes the type of the serialized message. @@ -99,17 +101,18 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // } // type Any struct { - // A URL/resource name whose content describes the type of the - // serialized protocol buffer message. + // A URL/resource name that uniquely identifies the type of the serialized + // protocol buffer message. The last segment of the URL's path must represent + // the fully qualified name of the type (as in + // `path/google.protobuf.Duration`). The name should be in a canonical form + // (e.g., leading "." is not accepted). // - // For URLs which use the scheme `http`, `https`, or no scheme, the - // following restrictions and interpretations apply: + // In practice, teams usually precompile into the binary all types that they + // expect it to use in the context of Any. However, for URLs which use the + // scheme `http`, `https`, or no scheme, one can optionally set up a type + // server that maps type URLs to message definitions as follows: // // * If no scheme is provided, `https` is assumed. - // * The last segment of the URL's path must represent the fully - // qualified name of the type (as in `path/google.protobuf.Duration`). - // The name should be in a canonical form (e.g., leading "." is - // not accepted). // * An HTTP GET on the URL must yield a [google.protobuf.Type][] // value in binary format, or produce an error. // * Applications are allowed to cache lookup results based on the @@ -118,10 +121,14 @@ type Any struct { // on changes to types. (Use versioned type names to manage // breaking changes.) // + // Note: this functionality is not currently available in the official + // protobuf release, and it is not used for type URLs beginning with + // type.googleapis.com. + // // Schemes other than `http`, `https` (or the empty scheme) might be // used with implementation specific semantics. // - TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl" json:"type_url,omitempty"` + TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"` // Must be a valid serialized protocol buffer of the above specified type. Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -133,17 +140,19 @@ func (m *Any) Reset() { *m = Any{} } func (m *Any) String() string { return proto.CompactTextString(m) } func (*Any) ProtoMessage() {} func (*Any) Descriptor() ([]byte, []int) { - return fileDescriptor_any_744b9ca530f228db, []int{0} + return fileDescriptor_b53526c13ae22eb4, []int{0} } + func (*Any) XXX_WellKnownType() string { return "Any" } + func (m *Any) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Any.Unmarshal(m, b) } func (m *Any) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Any.Marshal(b, m, deterministic) } -func (dst *Any) XXX_Merge(src proto.Message) { - xxx_messageInfo_Any.Merge(dst, src) +func (m *Any) XXX_Merge(src proto.Message) { + xxx_messageInfo_Any.Merge(m, src) } func (m *Any) XXX_Size() int { return xxx_messageInfo_Any.Size(m) @@ -172,9 +181,9 @@ func init() { proto.RegisterType((*Any)(nil), "google.protobuf.Any") } -func init() { proto.RegisterFile("google/protobuf/any.proto", fileDescriptor_any_744b9ca530f228db) } +func init() { proto.RegisterFile("google/protobuf/any.proto", fileDescriptor_b53526c13ae22eb4) } -var fileDescriptor_any_744b9ca530f228db = []byte{ +var fileDescriptor_b53526c13ae22eb4 = []byte{ // 185 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4c, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcc, 0xab, 0xd4, diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.proto b/vendor/github.com/golang/protobuf/ptypes/any/any.proto index c748667623..4932942558 100644 --- a/vendor/github.com/golang/protobuf/ptypes/any/any.proto +++ b/vendor/github.com/golang/protobuf/ptypes/any/any.proto @@ -120,17 +120,18 @@ option objc_class_prefix = "GPB"; // } // message Any { - // A URL/resource name whose content describes the type of the - // serialized protocol buffer message. + // A URL/resource name that uniquely identifies the type of the serialized + // protocol buffer message. The last segment of the URL's path must represent + // the fully qualified name of the type (as in + // `path/google.protobuf.Duration`). The name should be in a canonical form + // (e.g., leading "." is not accepted). // - // For URLs which use the scheme `http`, `https`, or no scheme, the - // following restrictions and interpretations apply: + // In practice, teams usually precompile into the binary all types that they + // expect it to use in the context of Any. However, for URLs which use the + // scheme `http`, `https`, or no scheme, one can optionally set up a type + // server that maps type URLs to message definitions as follows: // // * If no scheme is provided, `https` is assumed. - // * The last segment of the URL's path must represent the fully - // qualified name of the type (as in `path/google.protobuf.Duration`). - // The name should be in a canonical form (e.g., leading "." is - // not accepted). // * An HTTP GET on the URL must yield a [google.protobuf.Type][] // value in binary format, or produce an error. // * Applications are allowed to cache lookup results based on the @@ -139,6 +140,10 @@ message Any { // on changes to types. (Use versioned type names to manage // breaking changes.) // + // Note: this functionality is not currently available in the official + // protobuf release, and it is not used for type URLs beginning with + // type.googleapis.com. + // // Schemes other than `http`, `https` (or the empty scheme) might be // used with implementation specific semantics. // diff --git a/vendor/github.com/golang/protobuf/ptypes/duration.go b/vendor/github.com/golang/protobuf/ptypes/duration.go index 65cb0f8eb5..26d1ca2fb5 100644 --- a/vendor/github.com/golang/protobuf/ptypes/duration.go +++ b/vendor/github.com/golang/protobuf/ptypes/duration.go @@ -82,7 +82,7 @@ func Duration(p *durpb.Duration) (time.Duration, error) { return 0, fmt.Errorf("duration: %v is out of range for time.Duration", p) } if p.Nanos != 0 { - d += time.Duration(p.Nanos) + d += time.Duration(p.Nanos) * time.Nanosecond if (d < 0) != (p.Nanos < 0) { return 0, fmt.Errorf("duration: %v is out of range for time.Duration", p) } diff --git a/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go b/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go index 4d75473b8b..0d681ee21a 100644 --- a/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go @@ -1,11 +1,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: google/protobuf/duration.proto -package duration // import "github.com/golang/protobuf/ptypes/duration" +package duration -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -16,7 +18,7 @@ var _ = math.Inf // is compatible with the proto package it is being compiled against. // A compilation error at this line likely means your copy of the // proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package // A Duration represents a signed, fixed-length span of time represented // as a count of seconds and fractions of seconds at nanosecond @@ -82,14 +84,14 @@ type Duration struct { // Signed seconds of the span of time. Must be from -315,576,000,000 // to +315,576,000,000 inclusive. Note: these bounds are computed from: // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` + Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` // Signed fractions of a second at nanosecond resolution of the span // of time. Durations less than one second are represented with a 0 // `seconds` field and a positive or negative `nanos` field. For durations // of one second or more, a non-zero value for the `nanos` field must be // of the same sign as the `seconds` field. Must be from -999,999,999 // to +999,999,999 inclusive. - Nanos int32 `protobuf:"varint,2,opt,name=nanos" json:"nanos,omitempty"` + Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -99,17 +101,19 @@ func (m *Duration) Reset() { *m = Duration{} } func (m *Duration) String() string { return proto.CompactTextString(m) } func (*Duration) ProtoMessage() {} func (*Duration) Descriptor() ([]byte, []int) { - return fileDescriptor_duration_e7d612259e3f0613, []int{0} + return fileDescriptor_23597b2ebd7ac6c5, []int{0} } + func (*Duration) XXX_WellKnownType() string { return "Duration" } + func (m *Duration) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Duration.Unmarshal(m, b) } func (m *Duration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Duration.Marshal(b, m, deterministic) } -func (dst *Duration) XXX_Merge(src proto.Message) { - xxx_messageInfo_Duration.Merge(dst, src) +func (m *Duration) XXX_Merge(src proto.Message) { + xxx_messageInfo_Duration.Merge(m, src) } func (m *Duration) XXX_Size() int { return xxx_messageInfo_Duration.Size(m) @@ -138,11 +142,9 @@ func init() { proto.RegisterType((*Duration)(nil), "google.protobuf.Duration") } -func init() { - proto.RegisterFile("google/protobuf/duration.proto", fileDescriptor_duration_e7d612259e3f0613) -} +func init() { proto.RegisterFile("google/protobuf/duration.proto", fileDescriptor_23597b2ebd7ac6c5) } -var fileDescriptor_duration_e7d612259e3f0613 = []byte{ +var fileDescriptor_23597b2ebd7ac6c5 = []byte{ // 190 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0x29, 0x2d, 0x4a, diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp.go b/vendor/github.com/golang/protobuf/ptypes/timestamp.go index 47f10dbc2c..8da0df01ac 100644 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp.go +++ b/vendor/github.com/golang/protobuf/ptypes/timestamp.go @@ -111,11 +111,9 @@ func TimestampNow() *tspb.Timestamp { // TimestampProto converts the time.Time to a google.protobuf.Timestamp proto. // It returns an error if the resulting Timestamp is invalid. func TimestampProto(t time.Time) (*tspb.Timestamp, error) { - seconds := t.Unix() - nanos := int32(t.Sub(time.Unix(seconds, 0))) ts := &tspb.Timestamp{ - Seconds: seconds, - Nanos: nanos, + Seconds: t.Unix(), + Nanos: int32(t.Nanosecond()), } if err := validateTimestamp(ts); err != nil { return nil, err diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go index e9c2222821..31cd846de9 100644 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go +++ b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go @@ -1,11 +1,13 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // source: google/protobuf/timestamp.proto -package timestamp // import "github.com/golang/protobuf/ptypes/timestamp" +package timestamp -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + math "math" +) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal @@ -16,7 +18,7 @@ var _ = math.Inf // is compatible with the proto package it is being compiled against. // A compilation error at this line likely means your copy of the // proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package // A Timestamp represents a point in time independent of any time zone // or calendar, represented as seconds and fractions of seconds at @@ -81,7 +83,9 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional // seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), // are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone -// is required, though only UTC (as indicated by "Z") is presently supported. +// is required. A proto3 JSON serializer should always use UTC (as indicated by +// "Z") when printing the Timestamp type and a proto3 JSON parser should be +// able to accept both UTC and other timezones (as indicated by an offset). // // For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past // 01:30 UTC on January 15, 2017. @@ -92,20 +96,20 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package // to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) // with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one // can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--) -// to obtain a formatter capable of generating timestamps in this format. +// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime-- +// ) to obtain a formatter capable of generating timestamps in this format. // // type Timestamp struct { // Represents seconds of UTC time since Unix epoch // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to // 9999-12-31T23:59:59Z inclusive. - Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` + Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` // Non-negative fractions of a second at nanosecond resolution. Negative // second values with fractions must still have non-negative nanos values // that count forward in time. Must be from 0 to 999,999,999 // inclusive. - Nanos int32 `protobuf:"varint,2,opt,name=nanos" json:"nanos,omitempty"` + Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -115,17 +119,19 @@ func (m *Timestamp) Reset() { *m = Timestamp{} } func (m *Timestamp) String() string { return proto.CompactTextString(m) } func (*Timestamp) ProtoMessage() {} func (*Timestamp) Descriptor() ([]byte, []int) { - return fileDescriptor_timestamp_b826e8e5fba671a8, []int{0} + return fileDescriptor_292007bbfe81227e, []int{0} } + func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" } + func (m *Timestamp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Timestamp.Unmarshal(m, b) } func (m *Timestamp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return xxx_messageInfo_Timestamp.Marshal(b, m, deterministic) } -func (dst *Timestamp) XXX_Merge(src proto.Message) { - xxx_messageInfo_Timestamp.Merge(dst, src) +func (m *Timestamp) XXX_Merge(src proto.Message) { + xxx_messageInfo_Timestamp.Merge(m, src) } func (m *Timestamp) XXX_Size() int { return xxx_messageInfo_Timestamp.Size(m) @@ -154,11 +160,9 @@ func init() { proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp") } -func init() { - proto.RegisterFile("google/protobuf/timestamp.proto", fileDescriptor_timestamp_b826e8e5fba671a8) -} +func init() { proto.RegisterFile("google/protobuf/timestamp.proto", fileDescriptor_292007bbfe81227e) } -var fileDescriptor_timestamp_b826e8e5fba671a8 = []byte{ +var fileDescriptor_292007bbfe81227e = []byte{ // 191 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0xc9, 0xcc, 0x4d, diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto index 06750ab1f1..eafb3fa03a 100644 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto +++ b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto @@ -103,7 +103,9 @@ option objc_class_prefix = "GPB"; // {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional // seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), // are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone -// is required, though only UTC (as indicated by "Z") is presently supported. +// is required. A proto3 JSON serializer should always use UTC (as indicated by +// "Z") when printing the Timestamp type and a proto3 JSON parser should be +// able to accept both UTC and other timezones (as indicated by an offset). // // For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past // 01:30 UTC on January 15, 2017. @@ -114,8 +116,8 @@ option objc_class_prefix = "GPB"; // to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) // with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one // can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--) -// to obtain a formatter capable of generating timestamps in this format. +// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime-- +// ) to obtain a formatter capable of generating timestamps in this format. // // message Timestamp { diff --git a/vendor/github.com/google/go-cmp/cmp/compare.go b/vendor/github.com/google/go-cmp/cmp/compare.go index 7e215f2202..2133562b01 100644 --- a/vendor/github.com/google/go-cmp/cmp/compare.go +++ b/vendor/github.com/google/go-cmp/cmp/compare.go @@ -29,26 +29,17 @@ package cmp import ( "fmt" "reflect" + "strings" "github.com/google/go-cmp/cmp/internal/diff" + "github.com/google/go-cmp/cmp/internal/flags" "github.com/google/go-cmp/cmp/internal/function" "github.com/google/go-cmp/cmp/internal/value" ) -// BUG(dsnet): Maps with keys containing NaN values cannot be properly compared due to -// the reflection package's inability to retrieve such entries. Equal will panic -// anytime it comes across a NaN key, but this behavior may change. -// -// See https://golang.org/issue/11104 for more details. - -var nothing = reflect.Value{} - // Equal reports whether x and y are equal by recursively applying the // following rules in the given order to x and y and all of their sub-values: // -// • If two values are not of the same type, then they are never equal -// and the overall result is false. -// // • Let S be the set of all Ignore, Transformer, and Comparer options that // remain after applying all path filters, value filters, and type filters. // If at least one Ignore exists in S, then the comparison is ignored. @@ -61,43 +52,79 @@ var nothing = reflect.Value{} // // • If the values have an Equal method of the form "(T) Equal(T) bool" or // "(T) Equal(I) bool" where T is assignable to I, then use the result of -// x.Equal(y) even if x or y is nil. -// Otherwise, no such method exists and evaluation proceeds to the next rule. +// x.Equal(y) even if x or y is nil. Otherwise, no such method exists and +// evaluation proceeds to the next rule. // // • Lastly, try to compare x and y based on their basic kinds. // Simple kinds like booleans, integers, floats, complex numbers, strings, and // channels are compared using the equivalent of the == operator in Go. // Functions are only equal if they are both nil, otherwise they are unequal. -// Pointers are equal if the underlying values they point to are also equal. -// Interfaces are equal if their underlying concrete values are also equal. // -// Structs are equal if all of their fields are equal. If a struct contains -// unexported fields, Equal panics unless the AllowUnexported option is used or -// an Ignore option (e.g., cmpopts.IgnoreUnexported) ignores that field. +// Structs are equal if recursively calling Equal on all fields report equal. +// If a struct contains unexported fields, Equal panics unless an Ignore option +// (e.g., cmpopts.IgnoreUnexported) ignores that field or the AllowUnexported +// option explicitly permits comparing the unexported field. +// +// Slices are equal if they are both nil or both non-nil, where recursively +// calling Equal on all non-ignored slice or array elements report equal. +// Empty non-nil slices and nil slices are not equal; to equate empty slices, +// consider using cmpopts.EquateEmpty. // -// Arrays, slices, and maps are equal if they are both nil or both non-nil -// with the same length and the elements at each index or key are equal. -// Note that a non-nil empty slice and a nil slice are not equal. -// To equate empty slices and maps, consider using cmpopts.EquateEmpty. +// Maps are equal if they are both nil or both non-nil, where recursively +// calling Equal on all non-ignored map entries report equal. // Map keys are equal according to the == operator. // To use custom comparisons for map keys, consider using cmpopts.SortMaps. +// Empty non-nil maps and nil maps are not equal; to equate empty maps, +// consider using cmpopts.EquateEmpty. +// +// Pointers and interfaces are equal if they are both nil or both non-nil, +// where they have the same underlying concrete type and recursively +// calling Equal on the underlying values reports equal. func Equal(x, y interface{}, opts ...Option) bool { + vx := reflect.ValueOf(x) + vy := reflect.ValueOf(y) + + // If the inputs are different types, auto-wrap them in an empty interface + // so that they have the same parent type. + var t reflect.Type + if !vx.IsValid() || !vy.IsValid() || vx.Type() != vy.Type() { + t = reflect.TypeOf((*interface{})(nil)).Elem() + if vx.IsValid() { + vvx := reflect.New(t).Elem() + vvx.Set(vx) + vx = vvx + } + if vy.IsValid() { + vvy := reflect.New(t).Elem() + vvy.Set(vy) + vy = vvy + } + } else { + t = vx.Type() + } + s := newState(opts) - s.compareAny(reflect.ValueOf(x), reflect.ValueOf(y)) + s.compareAny(&pathStep{t, vx, vy}) return s.result.Equal() } // Diff returns a human-readable report of the differences between two values. // It returns an empty string if and only if Equal returns true for the same -// input values and options. The output string will use the "-" symbol to -// indicate elements removed from x, and the "+" symbol to indicate elements -// added to y. +// input values and options. +// +// The output is displayed as a literal in pseudo-Go syntax. +// At the start of each line, a "-" prefix indicates an element removed from x, +// a "+" prefix to indicates an element added to y, and the lack of a prefix +// indicates an element common to both x and y. If possible, the output +// uses fmt.Stringer.String or error.Error methods to produce more humanly +// readable outputs. In such cases, the string is prefixed with either an +// 's' or 'e' character, respectively, to indicate that the method was called. // -// Do not depend on this output being stable. +// Do not depend on this output being stable. If you need the ability to +// programmatically interpret the difference, consider using a custom Reporter. func Diff(x, y interface{}, opts ...Option) string { r := new(defaultReporter) - opts = Options{Options(opts), r} - eq := Equal(x, y, opts...) + eq := Equal(x, y, Options(opts), Reporter(r)) d := r.String() if (d == "") != eq { panic("inconsistent difference and equality results") @@ -108,9 +135,13 @@ func Diff(x, y interface{}, opts ...Option) string { type state struct { // These fields represent the "comparison state". // Calling statelessCompare must not result in observable changes to these. - result diff.Result // The current result of comparison - curPath Path // The current path in the value tree - reporter reporter // Optional reporter used for difference formatting + result diff.Result // The current result of comparison + curPath Path // The current path in the value tree + reporters []reporter // Optional reporters + + // recChecker checks for infinite cycles applying the same set of + // transformers upon the output of itself. + recChecker recChecker // dynChecker triggers pseudo-random checks for option correctness. // It is safe for statelessCompare to mutate this value. @@ -122,10 +153,9 @@ type state struct { } func newState(opts []Option) *state { - s := new(state) - for _, opt := range opts { - s.processOption(opt) - } + // Always ensure a validator option exists to validate the inputs. + s := &state{opts: Options{validator{}}} + s.processOption(Options(opts)) return s } @@ -152,10 +182,7 @@ func (s *state) processOption(opt Option) { s.exporters[t] = true } case reporter: - if s.reporter != nil { - panic("difference reporter already registered") - } - s.reporter = opt + s.reporters = append(s.reporters, opt) default: panic(fmt.Sprintf("unknown option %T", opt)) } @@ -164,153 +191,88 @@ func (s *state) processOption(opt Option) { // statelessCompare compares two values and returns the result. // This function is stateless in that it does not alter the current result, // or output to any registered reporters. -func (s *state) statelessCompare(vx, vy reflect.Value) diff.Result { +func (s *state) statelessCompare(step PathStep) diff.Result { // We do not save and restore the curPath because all of the compareX // methods should properly push and pop from the path. // It is an implementation bug if the contents of curPath differs from // when calling this function to when returning from it. - oldResult, oldReporter := s.result, s.reporter + oldResult, oldReporters := s.result, s.reporters s.result = diff.Result{} // Reset result - s.reporter = nil // Remove reporter to avoid spurious printouts - s.compareAny(vx, vy) + s.reporters = nil // Remove reporters to avoid spurious printouts + s.compareAny(step) res := s.result - s.result, s.reporter = oldResult, oldReporter + s.result, s.reporters = oldResult, oldReporters return res } -func (s *state) compareAny(vx, vy reflect.Value) { - // TODO: Support cyclic data structures. - - // Rule 0: Differing types are never equal. - if !vx.IsValid() || !vy.IsValid() { - s.report(vx.IsValid() == vy.IsValid(), vx, vy) - return - } - if vx.Type() != vy.Type() { - s.report(false, vx, vy) // Possible for path to be empty - return - } - t := vx.Type() - if len(s.curPath) == 0 { - s.curPath.push(&pathStep{typ: t}) - defer s.curPath.pop() +func (s *state) compareAny(step PathStep) { + // Update the path stack. + s.curPath.push(step) + defer s.curPath.pop() + for _, r := range s.reporters { + r.PushStep(step) + defer r.PopStep() } - vx, vy = s.tryExporting(vx, vy) + s.recChecker.Check(s.curPath) + + // Obtain the current type and values. + t := step.Type() + vx, vy := step.Values() // Rule 1: Check whether an option applies on this node in the value tree. - if s.tryOptions(vx, vy, t) { + if s.tryOptions(t, vx, vy) { return } // Rule 2: Check whether the type has a valid Equal method. - if s.tryMethod(vx, vy, t) { + if s.tryMethod(t, vx, vy) { return } - // Rule 3: Recursively descend into each value's underlying kind. + // Rule 3: Compare based on the underlying kind. switch t.Kind() { case reflect.Bool: - s.report(vx.Bool() == vy.Bool(), vx, vy) - return + s.report(vx.Bool() == vy.Bool(), 0) case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - s.report(vx.Int() == vy.Int(), vx, vy) - return + s.report(vx.Int() == vy.Int(), 0) case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - s.report(vx.Uint() == vy.Uint(), vx, vy) - return + s.report(vx.Uint() == vy.Uint(), 0) case reflect.Float32, reflect.Float64: - s.report(vx.Float() == vy.Float(), vx, vy) - return + s.report(vx.Float() == vy.Float(), 0) case reflect.Complex64, reflect.Complex128: - s.report(vx.Complex() == vy.Complex(), vx, vy) - return + s.report(vx.Complex() == vy.Complex(), 0) case reflect.String: - s.report(vx.String() == vy.String(), vx, vy) - return + s.report(vx.String() == vy.String(), 0) case reflect.Chan, reflect.UnsafePointer: - s.report(vx.Pointer() == vy.Pointer(), vx, vy) - return + s.report(vx.Pointer() == vy.Pointer(), 0) case reflect.Func: - s.report(vx.IsNil() && vy.IsNil(), vx, vy) - return + s.report(vx.IsNil() && vy.IsNil(), 0) + case reflect.Struct: + s.compareStruct(t, vx, vy) + case reflect.Slice, reflect.Array: + s.compareSlice(t, vx, vy) + case reflect.Map: + s.compareMap(t, vx, vy) case reflect.Ptr: - if vx.IsNil() || vy.IsNil() { - s.report(vx.IsNil() && vy.IsNil(), vx, vy) - return - } - s.curPath.push(&indirect{pathStep{t.Elem()}}) - defer s.curPath.pop() - s.compareAny(vx.Elem(), vy.Elem()) - return + s.comparePtr(t, vx, vy) case reflect.Interface: - if vx.IsNil() || vy.IsNil() { - s.report(vx.IsNil() && vy.IsNil(), vx, vy) - return - } - if vx.Elem().Type() != vy.Elem().Type() { - s.report(false, vx.Elem(), vy.Elem()) - return - } - s.curPath.push(&typeAssertion{pathStep{vx.Elem().Type()}}) - defer s.curPath.pop() - s.compareAny(vx.Elem(), vy.Elem()) - return - case reflect.Slice: - if vx.IsNil() || vy.IsNil() { - s.report(vx.IsNil() && vy.IsNil(), vx, vy) - return - } - fallthrough - case reflect.Array: - s.compareArray(vx, vy, t) - return - case reflect.Map: - s.compareMap(vx, vy, t) - return - case reflect.Struct: - s.compareStruct(vx, vy, t) - return + s.compareInterface(t, vx, vy) default: panic(fmt.Sprintf("%v kind not handled", t.Kind())) } } -func (s *state) tryExporting(vx, vy reflect.Value) (reflect.Value, reflect.Value) { - if sf, ok := s.curPath[len(s.curPath)-1].(*structField); ok && sf.unexported { - if sf.force { - // Use unsafe pointer arithmetic to get read-write access to an - // unexported field in the struct. - vx = unsafeRetrieveField(sf.pvx, sf.field) - vy = unsafeRetrieveField(sf.pvy, sf.field) - } else { - // We are not allowed to export the value, so invalidate them - // so that tryOptions can panic later if not explicitly ignored. - vx = nothing - vy = nothing - } - } - return vx, vy -} - -func (s *state) tryOptions(vx, vy reflect.Value, t reflect.Type) bool { - // If there were no FilterValues, we will not detect invalid inputs, - // so manually check for them and append invalid if necessary. - // We still evaluate the options since an ignore can override invalid. - opts := s.opts - if !vx.IsValid() || !vy.IsValid() { - opts = Options{opts, invalid{}} - } - +func (s *state) tryOptions(t reflect.Type, vx, vy reflect.Value) bool { // Evaluate all filters and apply the remaining options. - if opt := opts.filter(s, vx, vy, t); opt != nil { + if opt := s.opts.filter(s, t, vx, vy); opt != nil { opt.apply(s, vx, vy) return true } return false } -func (s *state) tryMethod(vx, vy reflect.Value, t reflect.Type) bool { +func (s *state) tryMethod(t reflect.Type, vx, vy reflect.Value) bool { // Check if this type even has an Equal method. m, ok := t.MethodByName("Equal") if !ok || !function.IsType(m.Type, function.EqualAssignable) { @@ -318,11 +280,11 @@ func (s *state) tryMethod(vx, vy reflect.Value, t reflect.Type) bool { } eq := s.callTTBFunc(m.Func, vx, vy) - s.report(eq, vx, vy) + s.report(eq, reportByMethod) return true } -func (s *state) callTRFunc(f, v reflect.Value) reflect.Value { +func (s *state) callTRFunc(f, v reflect.Value, step Transform) reflect.Value { v = sanitizeValue(v, f.Type().In(0)) if !s.dynChecker.Next() { return f.Call([]reflect.Value{v})[0] @@ -333,15 +295,15 @@ func (s *state) callTRFunc(f, v reflect.Value) reflect.Value { // unsafe mutations to the input. c := make(chan reflect.Value) go detectRaces(c, f, v) + got := <-c want := f.Call([]reflect.Value{v})[0] - if got := <-c; !s.statelessCompare(got, want).Equal() { + if step.vx, step.vy = got, want; !s.statelessCompare(step).Equal() { // To avoid false-positives with non-reflexive equality operations, // we sanity check whether a value is equal to itself. - if !s.statelessCompare(want, want).Equal() { + if step.vx, step.vy = want, want; !s.statelessCompare(step).Equal() { return want } - fn := getFuncName(f.Pointer()) - panic(fmt.Sprintf("non-deterministic function detected: %s", fn)) + panic(fmt.Sprintf("non-deterministic function detected: %s", function.NameOf(f))) } return want } @@ -359,10 +321,10 @@ func (s *state) callTTBFunc(f, x, y reflect.Value) bool { // unsafe mutations to the input. c := make(chan reflect.Value) go detectRaces(c, f, y, x) + got := <-c want := f.Call([]reflect.Value{x, y})[0].Bool() - if got := <-c; !got.IsValid() || got.Bool() != want { - fn := getFuncName(f.Pointer()) - panic(fmt.Sprintf("non-deterministic or non-symmetric function detected: %s", fn)) + if !got.IsValid() || got.Bool() != want { + panic(fmt.Sprintf("non-deterministic or non-symmetric function detected: %s", function.NameOf(f))) } return want } @@ -380,140 +342,241 @@ func detectRaces(c chan<- reflect.Value, f reflect.Value, vs ...reflect.Value) { // assuming that T is assignable to R. // Otherwise, it returns the input value as is. func sanitizeValue(v reflect.Value, t reflect.Type) reflect.Value { - // TODO(dsnet): Remove this hacky workaround. - // See https://golang.org/issue/22143 - if v.Kind() == reflect.Interface && v.IsNil() && v.Type() != t { - return reflect.New(t).Elem() + // TODO(dsnet): Workaround for reflect bug (https://golang.org/issue/22143). + if !flags.AtLeastGo110 { + if v.Kind() == reflect.Interface && v.IsNil() && v.Type() != t { + return reflect.New(t).Elem() + } } return v } -func (s *state) compareArray(vx, vy reflect.Value, t reflect.Type) { - step := &sliceIndex{pathStep{t.Elem()}, 0, 0} - s.curPath.push(step) +func (s *state) compareStruct(t reflect.Type, vx, vy reflect.Value) { + var vax, vay reflect.Value // Addressable versions of vx and vy - // Compute an edit-script for slices vx and vy. - es := diff.Difference(vx.Len(), vy.Len(), func(ix, iy int) diff.Result { - step.xkey, step.ykey = ix, iy - return s.statelessCompare(vx.Index(ix), vy.Index(iy)) - }) + step := StructField{&structField{}} + for i := 0; i < t.NumField(); i++ { + step.typ = t.Field(i).Type + step.vx = vx.Field(i) + step.vy = vy.Field(i) + step.name = t.Field(i).Name + step.idx = i + step.unexported = !isExported(step.name) + if step.unexported { + if step.name == "_" { + continue + } + // Defer checking of unexported fields until later to give an + // Ignore a chance to ignore the field. + if !vax.IsValid() || !vay.IsValid() { + // For retrieveUnexportedField to work, the parent struct must + // be addressable. Create a new copy of the values if + // necessary to make them addressable. + vax = makeAddressable(vx) + vay = makeAddressable(vy) + } + step.mayForce = s.exporters[t] + step.pvx = vax + step.pvy = vay + step.field = t.Field(i) + } + s.compareAny(step) + } +} - // Report the entire slice as is if the arrays are of primitive kind, - // and the arrays are different enough. - isPrimitive := false - switch t.Elem().Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, - reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, - reflect.Bool, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128: - isPrimitive = true - } - if isPrimitive && es.Dist() > (vx.Len()+vy.Len())/4 { - s.curPath.pop() // Pop first since we are reporting the whole slice - s.report(false, vx, vy) +func (s *state) compareSlice(t reflect.Type, vx, vy reflect.Value) { + isSlice := t.Kind() == reflect.Slice + if isSlice && (vx.IsNil() || vy.IsNil()) { + s.report(vx.IsNil() && vy.IsNil(), 0) return } - // Replay the edit-script. + // TODO: Support cyclic data structures. + + step := SliceIndex{&sliceIndex{pathStep: pathStep{typ: t.Elem()}}} + withIndexes := func(ix, iy int) SliceIndex { + if ix >= 0 { + step.vx, step.xkey = vx.Index(ix), ix + } else { + step.vx, step.xkey = reflect.Value{}, -1 + } + if iy >= 0 { + step.vy, step.ykey = vy.Index(iy), iy + } else { + step.vy, step.ykey = reflect.Value{}, -1 + } + return step + } + + // Ignore options are able to ignore missing elements in a slice. + // However, detecting these reliably requires an optimal differencing + // algorithm, for which diff.Difference is not. + // + // Instead, we first iterate through both slices to detect which elements + // would be ignored if standing alone. The index of non-discarded elements + // are stored in a separate slice, which diffing is then performed on. + var indexesX, indexesY []int + var ignoredX, ignoredY []bool + for ix := 0; ix < vx.Len(); ix++ { + ignored := s.statelessCompare(withIndexes(ix, -1)).NumDiff == 0 + if !ignored { + indexesX = append(indexesX, ix) + } + ignoredX = append(ignoredX, ignored) + } + for iy := 0; iy < vy.Len(); iy++ { + ignored := s.statelessCompare(withIndexes(-1, iy)).NumDiff == 0 + if !ignored { + indexesY = append(indexesY, iy) + } + ignoredY = append(ignoredY, ignored) + } + + // Compute an edit-script for slices vx and vy (excluding ignored elements). + edits := diff.Difference(len(indexesX), len(indexesY), func(ix, iy int) diff.Result { + return s.statelessCompare(withIndexes(indexesX[ix], indexesY[iy])) + }) + + // Replay the ignore-scripts and the edit-script. var ix, iy int - for _, e := range es { + for ix < vx.Len() || iy < vy.Len() { + var e diff.EditType + switch { + case ix < len(ignoredX) && ignoredX[ix]: + e = diff.UniqueX + case iy < len(ignoredY) && ignoredY[iy]: + e = diff.UniqueY + default: + e, edits = edits[0], edits[1:] + } switch e { case diff.UniqueX: - step.xkey, step.ykey = ix, -1 - s.report(false, vx.Index(ix), nothing) + s.compareAny(withIndexes(ix, -1)) ix++ case diff.UniqueY: - step.xkey, step.ykey = -1, iy - s.report(false, nothing, vy.Index(iy)) + s.compareAny(withIndexes(-1, iy)) iy++ default: - step.xkey, step.ykey = ix, iy - if e == diff.Identity { - s.report(true, vx.Index(ix), vy.Index(iy)) - } else { - s.compareAny(vx.Index(ix), vy.Index(iy)) - } + s.compareAny(withIndexes(ix, iy)) ix++ iy++ } } - s.curPath.pop() - return } -func (s *state) compareMap(vx, vy reflect.Value, t reflect.Type) { +func (s *state) compareMap(t reflect.Type, vx, vy reflect.Value) { if vx.IsNil() || vy.IsNil() { - s.report(vx.IsNil() && vy.IsNil(), vx, vy) + s.report(vx.IsNil() && vy.IsNil(), 0) return } + // TODO: Support cyclic data structures. + // We combine and sort the two map keys so that we can perform the // comparisons in a deterministic order. - step := &mapIndex{pathStep: pathStep{t.Elem()}} - s.curPath.push(step) - defer s.curPath.pop() + step := MapIndex{&mapIndex{pathStep: pathStep{typ: t.Elem()}}} for _, k := range value.SortKeys(append(vx.MapKeys(), vy.MapKeys()...)) { + step.vx = vx.MapIndex(k) + step.vy = vy.MapIndex(k) step.key = k - vvx := vx.MapIndex(k) - vvy := vy.MapIndex(k) - switch { - case vvx.IsValid() && vvy.IsValid(): - s.compareAny(vvx, vvy) - case vvx.IsValid() && !vvy.IsValid(): - s.report(false, vvx, nothing) - case !vvx.IsValid() && vvy.IsValid(): - s.report(false, nothing, vvy) - default: - // It is possible for both vvx and vvy to be invalid if the - // key contained a NaN value in it. There is no way in - // reflection to be able to retrieve these values. - // See https://golang.org/issue/11104 - panic(fmt.Sprintf("%#v has map key with NaNs", s.curPath)) + if !step.vx.IsValid() && !step.vy.IsValid() { + // It is possible for both vx and vy to be invalid if the + // key contained a NaN value in it. + // + // Even with the ability to retrieve NaN keys in Go 1.12, + // there still isn't a sensible way to compare the values since + // a NaN key may map to multiple unordered values. + // The most reasonable way to compare NaNs would be to compare the + // set of values. However, this is impossible to do efficiently + // since set equality is provably an O(n^2) operation given only + // an Equal function. If we had a Less function or Hash function, + // this could be done in O(n*log(n)) or O(n), respectively. + // + // Rather than adding complex logic to deal with NaNs, make it + // the user's responsibility to compare such obscure maps. + const help = "consider providing a Comparer to compare the map" + panic(fmt.Sprintf("%#v has map key with NaNs\n%s", s.curPath, help)) } + s.compareAny(step) } } -func (s *state) compareStruct(vx, vy reflect.Value, t reflect.Type) { - var vax, vay reflect.Value // Addressable versions of vx and vy +func (s *state) comparePtr(t reflect.Type, vx, vy reflect.Value) { + if vx.IsNil() || vy.IsNil() { + s.report(vx.IsNil() && vy.IsNil(), 0) + return + } - step := &structField{} - s.curPath.push(step) - defer s.curPath.pop() - for i := 0; i < t.NumField(); i++ { - vvx := vx.Field(i) - vvy := vy.Field(i) - step.typ = t.Field(i).Type - step.name = t.Field(i).Name - step.idx = i - step.unexported = !isExported(step.name) - if step.unexported { - // Defer checking of unexported fields until later to give an - // Ignore a chance to ignore the field. - if !vax.IsValid() || !vay.IsValid() { - // For unsafeRetrieveField to work, the parent struct must - // be addressable. Create a new copy of the values if - // necessary to make them addressable. - vax = makeAddressable(vx) - vay = makeAddressable(vy) - } - step.force = s.exporters[t] - step.pvx = vax - step.pvy = vay - step.field = t.Field(i) + // TODO: Support cyclic data structures. + + vx, vy = vx.Elem(), vy.Elem() + s.compareAny(Indirect{&indirect{pathStep{t.Elem(), vx, vy}}}) +} + +func (s *state) compareInterface(t reflect.Type, vx, vy reflect.Value) { + if vx.IsNil() || vy.IsNil() { + s.report(vx.IsNil() && vy.IsNil(), 0) + return + } + vx, vy = vx.Elem(), vy.Elem() + if vx.Type() != vy.Type() { + s.report(false, 0) + return + } + s.compareAny(TypeAssertion{&typeAssertion{pathStep{vx.Type(), vx, vy}}}) +} + +func (s *state) report(eq bool, rf resultFlags) { + if rf&reportByIgnore == 0 { + if eq { + s.result.NumSame++ + rf |= reportEqual + } else { + s.result.NumDiff++ + rf |= reportUnequal } - s.compareAny(vvx, vvy) + } + for _, r := range s.reporters { + r.Report(Result{flags: rf}) } } -// report records the result of a single comparison. -// It also calls Report if any reporter is registered. -func (s *state) report(eq bool, vx, vy reflect.Value) { - if eq { - s.result.NSame++ - } else { - s.result.NDiff++ +// recChecker tracks the state needed to periodically perform checks that +// user provided transformers are not stuck in an infinitely recursive cycle. +type recChecker struct{ next int } + +// Check scans the Path for any recursive transformers and panics when any +// recursive transformers are detected. Note that the presence of a +// recursive Transformer does not necessarily imply an infinite cycle. +// As such, this check only activates after some minimal number of path steps. +func (rc *recChecker) Check(p Path) { + const minLen = 1 << 16 + if rc.next == 0 { + rc.next = minLen + } + if len(p) < rc.next { + return + } + rc.next <<= 1 + + // Check whether the same transformer has appeared at least twice. + var ss []string + m := map[Option]int{} + for _, ps := range p { + if t, ok := ps.(Transform); ok { + t := t.Option() + if m[t] == 1 { // Transformer was used exactly once before + tf := t.(*transformer).fnc.Type() + ss = append(ss, fmt.Sprintf("%v: %v => %v", t, tf.In(0), tf.Out(0))) + } + m[t]++ + } } - if s.reporter != nil { - s.reporter.Report(vx, vy, eq, s.curPath) + if len(ss) > 0 { + const warning = "recursive set of Transformers detected" + const help = "consider using cmpopts.AcyclicTransformer" + set := strings.Join(ss, "\n\t") + panic(fmt.Sprintf("%s:\n\t%s\n%s", warning, set, help)) } } diff --git a/vendor/github.com/google/go-cmp/cmp/unsafe_panic.go b/vendor/github.com/google/go-cmp/cmp/export_panic.go similarity index 60% rename from vendor/github.com/google/go-cmp/cmp/unsafe_panic.go rename to vendor/github.com/google/go-cmp/cmp/export_panic.go index d1518eb3a8..abc3a1c3e7 100644 --- a/vendor/github.com/google/go-cmp/cmp/unsafe_panic.go +++ b/vendor/github.com/google/go-cmp/cmp/export_panic.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE.md file. -// +build purego appengine js +// +build purego package cmp @@ -10,6 +10,6 @@ import "reflect" const supportAllowUnexported = false -func unsafeRetrieveField(reflect.Value, reflect.StructField) reflect.Value { - panic("unsafeRetrieveField is not implemented") +func retrieveUnexportedField(reflect.Value, reflect.StructField) reflect.Value { + panic("retrieveUnexportedField is not implemented") } diff --git a/vendor/github.com/google/go-cmp/cmp/unsafe_reflect.go b/vendor/github.com/google/go-cmp/cmp/export_unsafe.go similarity index 64% rename from vendor/github.com/google/go-cmp/cmp/unsafe_reflect.go rename to vendor/github.com/google/go-cmp/cmp/export_unsafe.go index 579b65507f..59d4ee91b4 100644 --- a/vendor/github.com/google/go-cmp/cmp/unsafe_reflect.go +++ b/vendor/github.com/google/go-cmp/cmp/export_unsafe.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE.md file. -// +build !purego,!appengine,!js +// +build !purego package cmp @@ -13,11 +13,11 @@ import ( const supportAllowUnexported = true -// unsafeRetrieveField uses unsafe to forcibly retrieve any field from a struct -// such that the value has read-write permissions. +// retrieveUnexportedField uses unsafe to forcibly retrieve any field from +// a struct such that the value has read-write permissions. // // The parent struct, v, must be addressable, while f must be a StructField // describing the field to retrieve. -func unsafeRetrieveField(v reflect.Value, f reflect.StructField) reflect.Value { +func retrieveUnexportedField(v reflect.Value, f reflect.StructField) reflect.Value { return reflect.NewAt(f.Type, unsafe.Pointer(v.UnsafeAddr()+f.Offset)).Elem() } diff --git a/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go b/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go index 42afa4960e..fe98dcc677 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_disable.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE.md file. -// +build !debug +// +build !cmp_debug package diff diff --git a/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go b/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go index fd9f7f1773..597b6ae56b 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/diff/debug_enable.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE.md file. -// +build debug +// +build cmp_debug package diff @@ -14,7 +14,7 @@ import ( ) // The algorithm can be seen running in real-time by enabling debugging: -// go test -tags=debug -v +// go test -tags=cmp_debug -v // // Example output: // === RUN TestDifference/#34 diff --git a/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go b/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go index 260befea2f..3d2e42662c 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/diff/diff.go @@ -85,22 +85,31 @@ func (es EditScript) LenY() int { return len(es) - es.stats().NX } type EqualFunc func(ix int, iy int) Result // Result is the result of comparison. -// NSame is the number of sub-elements that are equal. -// NDiff is the number of sub-elements that are not equal. -type Result struct{ NSame, NDiff int } +// NumSame is the number of sub-elements that are equal. +// NumDiff is the number of sub-elements that are not equal. +type Result struct{ NumSame, NumDiff int } + +// BoolResult returns a Result that is either Equal or not Equal. +func BoolResult(b bool) Result { + if b { + return Result{NumSame: 1} // Equal, Similar + } else { + return Result{NumDiff: 2} // Not Equal, not Similar + } +} // Equal indicates whether the symbols are equal. Two symbols are equal -// if and only if NDiff == 0. If Equal, then they are also Similar. -func (r Result) Equal() bool { return r.NDiff == 0 } +// if and only if NumDiff == 0. If Equal, then they are also Similar. +func (r Result) Equal() bool { return r.NumDiff == 0 } // Similar indicates whether two symbols are similar and may be represented // by using the Modified type. As a special case, we consider binary comparisons // (i.e., those that return Result{1, 0} or Result{0, 1}) to be similar. // -// The exact ratio of NSame to NDiff to determine similarity may change. +// The exact ratio of NumSame to NumDiff to determine similarity may change. func (r Result) Similar() bool { - // Use NSame+1 to offset NSame so that binary comparisons are similar. - return r.NSame+1 >= r.NDiff + // Use NumSame+1 to offset NumSame so that binary comparisons are similar. + return r.NumSame+1 >= r.NumDiff } // Difference reports whether two lists of lengths nx and ny are equal @@ -191,9 +200,9 @@ func Difference(nx, ny int, f EqualFunc) (es EditScript) { // that two lists commonly differ because elements were added to the front // or end of the other list. // - // Running the tests with the "debug" build tag prints a visualization of - // the algorithm running in real-time. This is educational for understanding - // how the algorithm works. See debug_enable.go. + // Running the tests with the "cmp_debug" build tag prints a visualization + // of the algorithm running in real-time. This is educational for + // understanding how the algorithm works. See debug_enable.go. f = debug.Begin(nx, ny, f, &fwdPath.es, &revPath.es) for { // Forward search from the beginning. diff --git a/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go b/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go new file mode 100644 index 0000000000..a9e7fc0b5b --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go @@ -0,0 +1,9 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package flags + +// Deterministic controls whether the output of Diff should be deterministic. +// This is only used for testing. +var Deterministic bool diff --git a/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go new file mode 100644 index 0000000000..01aed0a153 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go @@ -0,0 +1,10 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build !go1.10 + +package flags + +// AtLeastGo110 reports whether the Go toolchain is at least Go 1.10. +const AtLeastGo110 = false diff --git a/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go new file mode 100644 index 0000000000..c0b667f58b --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go @@ -0,0 +1,10 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build go1.10 + +package flags + +// AtLeastGo110 reports whether the Go toolchain is at least Go 1.10. +const AtLeastGo110 = true diff --git a/vendor/github.com/google/go-cmp/cmp/internal/function/func.go b/vendor/github.com/google/go-cmp/cmp/internal/function/func.go index 4c35ff11ee..ace1dbe86e 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/function/func.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/function/func.go @@ -2,25 +2,34 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE.md file. -// Package function identifies function types. +// Package function provides functionality for identifying function types. package function -import "reflect" +import ( + "reflect" + "regexp" + "runtime" + "strings" +) type funcType int const ( _ funcType = iota + tbFunc // func(T) bool ttbFunc // func(T, T) bool + trbFunc // func(T, R) bool tibFunc // func(T, I) bool trFunc // func(T) R - Equal = ttbFunc // func(T, T) bool - EqualAssignable = tibFunc // func(T, I) bool; encapsulates func(T, T) bool - Transformer = trFunc // func(T) R - ValueFilter = ttbFunc // func(T, T) bool - Less = ttbFunc // func(T, T) bool + Equal = ttbFunc // func(T, T) bool + EqualAssignable = tibFunc // func(T, I) bool; encapsulates func(T, T) bool + Transformer = trFunc // func(T) R + ValueFilter = ttbFunc // func(T, T) bool + Less = ttbFunc // func(T, T) bool + ValuePredicate = tbFunc // func(T) bool + KeyValuePredicate = trbFunc // func(T, R) bool ) var boolType = reflect.TypeOf(true) @@ -32,10 +41,18 @@ func IsType(t reflect.Type, ft funcType) bool { } ni, no := t.NumIn(), t.NumOut() switch ft { + case tbFunc: // func(T) bool + if ni == 1 && no == 1 && t.Out(0) == boolType { + return true + } case ttbFunc: // func(T, T) bool if ni == 2 && no == 1 && t.In(0) == t.In(1) && t.Out(0) == boolType { return true } + case trbFunc: // func(T, R) bool + if ni == 2 && no == 1 && t.Out(0) == boolType { + return true + } case tibFunc: // func(T, I) bool if ni == 2 && no == 1 && t.In(0).AssignableTo(t.In(1)) && t.Out(0) == boolType { return true @@ -47,3 +64,36 @@ func IsType(t reflect.Type, ft funcType) bool { } return false } + +var lastIdentRx = regexp.MustCompile(`[_\p{L}][_\p{L}\p{N}]*$`) + +// NameOf returns the name of the function value. +func NameOf(v reflect.Value) string { + fnc := runtime.FuncForPC(v.Pointer()) + if fnc == nil { + return "" + } + fullName := fnc.Name() // e.g., "long/path/name/mypkg.(*MyType).(long/path/name/mypkg.myMethod)-fm" + + // Method closures have a "-fm" suffix. + fullName = strings.TrimSuffix(fullName, "-fm") + + var name string + for len(fullName) > 0 { + inParen := strings.HasSuffix(fullName, ")") + fullName = strings.TrimSuffix(fullName, ")") + + s := lastIdentRx.FindString(fullName) + if s == "" { + break + } + name = s + "." + name + fullName = strings.TrimSuffix(fullName, s) + + if i := strings.LastIndexByte(fullName, '('); inParen && i >= 0 { + fullName = fullName[:i] + } + fullName = strings.TrimSuffix(fullName, ".") + } + return strings.TrimSuffix(name, ".") +} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/format.go b/vendor/github.com/google/go-cmp/cmp/internal/value/format.go deleted file mode 100644 index 657e508779..0000000000 --- a/vendor/github.com/google/go-cmp/cmp/internal/value/format.go +++ /dev/null @@ -1,277 +0,0 @@ -// Copyright 2017, The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. - -// Package value provides functionality for reflect.Value types. -package value - -import ( - "fmt" - "reflect" - "strconv" - "strings" - "unicode" -) - -var stringerIface = reflect.TypeOf((*fmt.Stringer)(nil)).Elem() - -// Format formats the value v as a string. -// -// This is similar to fmt.Sprintf("%+v", v) except this: -// * Prints the type unless it can be elided -// * Avoids printing struct fields that are zero -// * Prints a nil-slice as being nil, not empty -// * Prints map entries in deterministic order -func Format(v reflect.Value, conf FormatConfig) string { - conf.printType = true - conf.followPointers = true - conf.realPointers = true - return formatAny(v, conf, nil) -} - -type FormatConfig struct { - UseStringer bool // Should the String method be used if available? - printType bool // Should we print the type before the value? - PrintPrimitiveType bool // Should we print the type of primitives? - followPointers bool // Should we recursively follow pointers? - realPointers bool // Should we print the real address of pointers? -} - -func formatAny(v reflect.Value, conf FormatConfig, visited map[uintptr]bool) string { - // TODO: Should this be a multi-line printout in certain situations? - - if !v.IsValid() { - return "" - } - if conf.UseStringer && v.Type().Implements(stringerIface) && v.CanInterface() { - if (v.Kind() == reflect.Ptr || v.Kind() == reflect.Interface) && v.IsNil() { - return "" - } - - const stringerPrefix = "s" // Indicates that the String method was used - s := v.Interface().(fmt.Stringer).String() - return stringerPrefix + formatString(s) - } - - switch v.Kind() { - case reflect.Bool: - return formatPrimitive(v.Type(), v.Bool(), conf) - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return formatPrimitive(v.Type(), v.Int(), conf) - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - if v.Type().PkgPath() == "" || v.Kind() == reflect.Uintptr { - // Unnamed uints are usually bytes or words, so use hexadecimal. - return formatPrimitive(v.Type(), formatHex(v.Uint()), conf) - } - return formatPrimitive(v.Type(), v.Uint(), conf) - case reflect.Float32, reflect.Float64: - return formatPrimitive(v.Type(), v.Float(), conf) - case reflect.Complex64, reflect.Complex128: - return formatPrimitive(v.Type(), v.Complex(), conf) - case reflect.String: - return formatPrimitive(v.Type(), formatString(v.String()), conf) - case reflect.UnsafePointer, reflect.Chan, reflect.Func: - return formatPointer(v, conf) - case reflect.Ptr: - if v.IsNil() { - if conf.printType { - return fmt.Sprintf("(%v)(nil)", v.Type()) - } - return "" - } - if visited[v.Pointer()] || !conf.followPointers { - return formatPointer(v, conf) - } - visited = insertPointer(visited, v.Pointer()) - return "&" + formatAny(v.Elem(), conf, visited) - case reflect.Interface: - if v.IsNil() { - if conf.printType { - return fmt.Sprintf("%v(nil)", v.Type()) - } - return "" - } - return formatAny(v.Elem(), conf, visited) - case reflect.Slice: - if v.IsNil() { - if conf.printType { - return fmt.Sprintf("%v(nil)", v.Type()) - } - return "" - } - if visited[v.Pointer()] { - return formatPointer(v, conf) - } - visited = insertPointer(visited, v.Pointer()) - fallthrough - case reflect.Array: - var ss []string - subConf := conf - subConf.printType = v.Type().Elem().Kind() == reflect.Interface - for i := 0; i < v.Len(); i++ { - s := formatAny(v.Index(i), subConf, visited) - ss = append(ss, s) - } - s := fmt.Sprintf("{%s}", strings.Join(ss, ", ")) - if conf.printType { - return v.Type().String() + s - } - return s - case reflect.Map: - if v.IsNil() { - if conf.printType { - return fmt.Sprintf("%v(nil)", v.Type()) - } - return "" - } - if visited[v.Pointer()] { - return formatPointer(v, conf) - } - visited = insertPointer(visited, v.Pointer()) - - var ss []string - keyConf, valConf := conf, conf - keyConf.printType = v.Type().Key().Kind() == reflect.Interface - keyConf.followPointers = false - valConf.printType = v.Type().Elem().Kind() == reflect.Interface - for _, k := range SortKeys(v.MapKeys()) { - sk := formatAny(k, keyConf, visited) - sv := formatAny(v.MapIndex(k), valConf, visited) - ss = append(ss, fmt.Sprintf("%s: %s", sk, sv)) - } - s := fmt.Sprintf("{%s}", strings.Join(ss, ", ")) - if conf.printType { - return v.Type().String() + s - } - return s - case reflect.Struct: - var ss []string - subConf := conf - subConf.printType = true - for i := 0; i < v.NumField(); i++ { - vv := v.Field(i) - if isZero(vv) { - continue // Elide zero value fields - } - name := v.Type().Field(i).Name - subConf.UseStringer = conf.UseStringer - s := formatAny(vv, subConf, visited) - ss = append(ss, fmt.Sprintf("%s: %s", name, s)) - } - s := fmt.Sprintf("{%s}", strings.Join(ss, ", ")) - if conf.printType { - return v.Type().String() + s - } - return s - default: - panic(fmt.Sprintf("%v kind not handled", v.Kind())) - } -} - -func formatString(s string) string { - // Use quoted string if it the same length as a raw string literal. - // Otherwise, attempt to use the raw string form. - qs := strconv.Quote(s) - if len(qs) == 1+len(s)+1 { - return qs - } - - // Disallow newlines to ensure output is a single line. - // Only allow printable runes for readability purposes. - rawInvalid := func(r rune) bool { - return r == '`' || r == '\n' || !unicode.IsPrint(r) - } - if strings.IndexFunc(s, rawInvalid) < 0 { - return "`" + s + "`" - } - return qs -} - -func formatPrimitive(t reflect.Type, v interface{}, conf FormatConfig) string { - if conf.printType && (conf.PrintPrimitiveType || t.PkgPath() != "") { - return fmt.Sprintf("%v(%v)", t, v) - } - return fmt.Sprintf("%v", v) -} - -func formatPointer(v reflect.Value, conf FormatConfig) string { - p := v.Pointer() - if !conf.realPointers { - p = 0 // For deterministic printing purposes - } - s := formatHex(uint64(p)) - if conf.printType { - return fmt.Sprintf("(%v)(%s)", v.Type(), s) - } - return s -} - -func formatHex(u uint64) string { - var f string - switch { - case u <= 0xff: - f = "0x%02x" - case u <= 0xffff: - f = "0x%04x" - case u <= 0xffffff: - f = "0x%06x" - case u <= 0xffffffff: - f = "0x%08x" - case u <= 0xffffffffff: - f = "0x%010x" - case u <= 0xffffffffffff: - f = "0x%012x" - case u <= 0xffffffffffffff: - f = "0x%014x" - case u <= 0xffffffffffffffff: - f = "0x%016x" - } - return fmt.Sprintf(f, u) -} - -// insertPointer insert p into m, allocating m if necessary. -func insertPointer(m map[uintptr]bool, p uintptr) map[uintptr]bool { - if m == nil { - m = make(map[uintptr]bool) - } - m[p] = true - return m -} - -// isZero reports whether v is the zero value. -// This does not rely on Interface and so can be used on unexported fields. -func isZero(v reflect.Value) bool { - switch v.Kind() { - case reflect.Bool: - return v.Bool() == false - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return v.Uint() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.Complex64, reflect.Complex128: - return v.Complex() == 0 - case reflect.String: - return v.String() == "" - case reflect.UnsafePointer: - return v.Pointer() == 0 - case reflect.Chan, reflect.Func, reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: - return v.IsNil() - case reflect.Array: - for i := 0; i < v.Len(); i++ { - if !isZero(v.Index(i)) { - return false - } - } - return true - case reflect.Struct: - for i := 0; i < v.NumField(); i++ { - if !isZero(v.Field(i)) { - return false - } - } - return true - } - return false -} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go new file mode 100644 index 0000000000..0a01c4796f --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go @@ -0,0 +1,23 @@ +// Copyright 2018, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build purego + +package value + +import "reflect" + +// Pointer is an opaque typed pointer and is guaranteed to be comparable. +type Pointer struct { + p uintptr + t reflect.Type +} + +// PointerOf returns a Pointer from v, which must be a +// reflect.Ptr, reflect.Slice, or reflect.Map. +func PointerOf(v reflect.Value) Pointer { + // NOTE: Storing a pointer as an uintptr is technically incorrect as it + // assumes that the GC implementation does not use a moving collector. + return Pointer{v.Pointer(), v.Type()} +} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go new file mode 100644 index 0000000000..da134ae2a8 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go @@ -0,0 +1,26 @@ +// Copyright 2018, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +// +build !purego + +package value + +import ( + "reflect" + "unsafe" +) + +// Pointer is an opaque typed pointer and is guaranteed to be comparable. +type Pointer struct { + p unsafe.Pointer + t reflect.Type +} + +// PointerOf returns a Pointer from v, which must be a +// reflect.Ptr, reflect.Slice, or reflect.Map. +func PointerOf(v reflect.Value) Pointer { + // The proper representation of a pointer is unsafe.Pointer, + // which is necessary if the GC ever uses a moving collector. + return Pointer{unsafe.Pointer(v.Pointer()), v.Type()} +} diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go b/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go index fe8aa27a07..938f646f00 100644 --- a/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/sort.go @@ -19,7 +19,7 @@ func SortKeys(vs []reflect.Value) []reflect.Value { } // Sort the map keys. - sort.Sort(valueSorter(vs)) + sort.Slice(vs, func(i, j int) bool { return isLess(vs[i], vs[j]) }) // Deduplicate keys (fails for NaNs). vs2 := vs[:1] @@ -31,13 +31,6 @@ func SortKeys(vs []reflect.Value) []reflect.Value { return vs2 } -// TODO: Use sort.Slice once Google AppEngine is on Go1.8 or above. -type valueSorter []reflect.Value - -func (vs valueSorter) Len() int { return len(vs) } -func (vs valueSorter) Less(i, j int) bool { return isLess(vs[i], vs[j]) } -func (vs valueSorter) Swap(i, j int) { vs[i], vs[j] = vs[j], vs[i] } - // isLess is a generic function for sorting arbitrary map keys. // The inputs must be of the same type and must be comparable. func isLess(x, y reflect.Value) bool { diff --git a/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go b/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go new file mode 100644 index 0000000000..d13a12ccfc --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/internal/value/zero.go @@ -0,0 +1,45 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package value + +import "reflect" + +// IsZero reports whether v is the zero value. +// This does not rely on Interface and so can be used on unexported fields. +func IsZero(v reflect.Value) bool { + switch v.Kind() { + case reflect.Bool: + return v.Bool() == false + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return v.Int() == 0 + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + return v.Uint() == 0 + case reflect.Float32, reflect.Float64: + return v.Float() == 0 + case reflect.Complex64, reflect.Complex128: + return v.Complex() == 0 + case reflect.String: + return v.String() == "" + case reflect.UnsafePointer: + return v.Pointer() == 0 + case reflect.Chan, reflect.Func, reflect.Interface, reflect.Ptr, reflect.Map, reflect.Slice: + return v.IsNil() + case reflect.Array: + for i := 0; i < v.Len(); i++ { + if !IsZero(v.Index(i)) { + return false + } + } + return true + case reflect.Struct: + for i := 0; i < v.NumField(); i++ { + if !IsZero(v.Field(i)) { + return false + } + } + return true + } + return false +} diff --git a/vendor/github.com/google/go-cmp/cmp/options.go b/vendor/github.com/google/go-cmp/cmp/options.go index 91d4b066e0..793448160e 100644 --- a/vendor/github.com/google/go-cmp/cmp/options.go +++ b/vendor/github.com/google/go-cmp/cmp/options.go @@ -7,7 +7,7 @@ package cmp import ( "fmt" "reflect" - "runtime" + "regexp" "strings" "github.com/google/go-cmp/cmp/internal/function" @@ -29,11 +29,11 @@ type Option interface { // An Options is returned only if multiple comparers or transformers // can apply simultaneously and will only contain values of those types // or sub-Options containing values of those types. - filter(s *state, vx, vy reflect.Value, t reflect.Type) applicableOption + filter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption } // applicableOption represents the following types: -// Fundamental: ignore | invalid | *comparer | *transformer +// Fundamental: ignore | validator | *comparer | *transformer // Grouping: Options type applicableOption interface { Option @@ -43,7 +43,7 @@ type applicableOption interface { } // coreOption represents the following types: -// Fundamental: ignore | invalid | *comparer | *transformer +// Fundamental: ignore | validator | *comparer | *transformer // Filters: *pathFilter | *valuesFilter type coreOption interface { Option @@ -63,19 +63,19 @@ func (core) isCore() {} // on all individual options held within. type Options []Option -func (opts Options) filter(s *state, vx, vy reflect.Value, t reflect.Type) (out applicableOption) { +func (opts Options) filter(s *state, t reflect.Type, vx, vy reflect.Value) (out applicableOption) { for _, opt := range opts { - switch opt := opt.filter(s, vx, vy, t); opt.(type) { + switch opt := opt.filter(s, t, vx, vy); opt.(type) { case ignore: return ignore{} // Only ignore can short-circuit evaluation - case invalid: - out = invalid{} // Takes precedence over comparer or transformer + case validator: + out = validator{} // Takes precedence over comparer or transformer case *comparer, *transformer, Options: switch out.(type) { case nil: out = opt - case invalid: - // Keep invalid + case validator: + // Keep validator case *comparer, *transformer, Options: out = Options{out, opt} // Conflicting comparers or transformers } @@ -106,6 +106,11 @@ func (opts Options) String() string { // FilterPath returns a new Option where opt is only evaluated if filter f // returns true for the current Path in the value tree. // +// This filter is called even if a slice element or map entry is missing and +// provides an opportunity to ignore such cases. The filter function must be +// symmetric such that the filter result is identical regardless of whether the +// missing value is from x or y. +// // The option passed in may be an Ignore, Transformer, Comparer, Options, or // a previously filtered Option. func FilterPath(f func(Path) bool, opt Option) Option { @@ -124,22 +129,22 @@ type pathFilter struct { opt Option } -func (f pathFilter) filter(s *state, vx, vy reflect.Value, t reflect.Type) applicableOption { +func (f pathFilter) filter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption { if f.fnc(s.curPath) { - return f.opt.filter(s, vx, vy, t) + return f.opt.filter(s, t, vx, vy) } return nil } func (f pathFilter) String() string { - fn := getFuncName(reflect.ValueOf(f.fnc).Pointer()) - return fmt.Sprintf("FilterPath(%s, %v)", fn, f.opt) + return fmt.Sprintf("FilterPath(%s, %v)", function.NameOf(reflect.ValueOf(f.fnc)), f.opt) } // FilterValues returns a new Option where opt is only evaluated if filter f, // which is a function of the form "func(T, T) bool", returns true for the -// current pair of values being compared. If the type of the values is not -// assignable to T, then this filter implicitly returns false. +// current pair of values being compared. If either value is invalid or +// the type of the values is not assignable to T, then this filter implicitly +// returns false. // // The filter function must be // symmetric (i.e., agnostic to the order of the inputs) and @@ -171,19 +176,18 @@ type valuesFilter struct { opt Option } -func (f valuesFilter) filter(s *state, vx, vy reflect.Value, t reflect.Type) applicableOption { - if !vx.IsValid() || !vy.IsValid() { - return invalid{} +func (f valuesFilter) filter(s *state, t reflect.Type, vx, vy reflect.Value) applicableOption { + if !vx.IsValid() || !vx.CanInterface() || !vy.IsValid() || !vy.CanInterface() { + return nil } if (f.typ == nil || t.AssignableTo(f.typ)) && s.callTTBFunc(f.fnc, vx, vy) { - return f.opt.filter(s, vx, vy, t) + return f.opt.filter(s, t, vx, vy) } return nil } func (f valuesFilter) String() string { - fn := getFuncName(f.fnc.Pointer()) - return fmt.Sprintf("FilterValues(%s, %v)", fn, f.opt) + return fmt.Sprintf("FilterValues(%s, %v)", function.NameOf(f.fnc), f.opt) } // Ignore is an Option that causes all comparisons to be ignored. @@ -194,20 +198,45 @@ func Ignore() Option { return ignore{} } type ignore struct{ core } func (ignore) isFiltered() bool { return false } -func (ignore) filter(_ *state, _, _ reflect.Value, _ reflect.Type) applicableOption { return ignore{} } -func (ignore) apply(_ *state, _, _ reflect.Value) { return } +func (ignore) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption { return ignore{} } +func (ignore) apply(s *state, _, _ reflect.Value) { s.report(true, reportByIgnore) } func (ignore) String() string { return "Ignore()" } -// invalid is a sentinel Option type to indicate that some options could not -// be evaluated due to unexported fields. -type invalid struct{ core } +// validator is a sentinel Option type to indicate that some options could not +// be evaluated due to unexported fields, missing slice elements, or +// missing map entries. Both values are validator only for unexported fields. +type validator struct{ core } + +func (validator) filter(_ *state, _ reflect.Type, vx, vy reflect.Value) applicableOption { + if !vx.IsValid() || !vy.IsValid() { + return validator{} + } + if !vx.CanInterface() || !vy.CanInterface() { + return validator{} + } + return nil +} +func (validator) apply(s *state, vx, vy reflect.Value) { + // Implies missing slice element or map entry. + if !vx.IsValid() || !vy.IsValid() { + s.report(vx.IsValid() == vy.IsValid(), 0) + return + } + + // Unable to Interface implies unexported field without visibility access. + if !vx.CanInterface() || !vy.CanInterface() { + const help = "consider using a custom Comparer; if you control the implementation of type, you can also consider AllowUnexported or cmpopts.IgnoreUnexported" + panic(fmt.Sprintf("cannot handle unexported field: %#v\n%s", s.curPath, help)) + } -func (invalid) filter(_ *state, _, _ reflect.Value, _ reflect.Type) applicableOption { return invalid{} } -func (invalid) apply(s *state, _, _ reflect.Value) { - const help = "consider using AllowUnexported or cmpopts.IgnoreUnexported" - panic(fmt.Sprintf("cannot handle unexported field: %#v\n%s", s.curPath, help)) + panic("not reachable") } +// identRx represents a valid identifier according to the Go specification. +const identRx = `[_\p{L}][_\p{L}\p{N}]*` + +var identsRx = regexp.MustCompile(`^` + identRx + `(\.` + identRx + `)*$`) + // Transformer returns an Option that applies a transformation function that // converts values of a certain type into that of another. // @@ -220,18 +249,25 @@ func (invalid) apply(s *state, _, _ reflect.Value) { // input and output types are the same), an implicit filter is added such that // a transformer is applicable only if that exact transformer is not already // in the tail of the Path since the last non-Transform step. +// For situations where the implicit filter is still insufficient, +// consider using cmpopts.AcyclicTransformer, which adds a filter +// to prevent the transformer from being recursively applied upon itself. // // The name is a user provided label that is used as the Transform.Name in the -// transformation PathStep. If empty, an arbitrary name is used. +// transformation PathStep (and eventually shown in the Diff output). +// The name must be a valid identifier or qualified identifier in Go syntax. +// If empty, an arbitrary name is used. func Transformer(name string, f interface{}) Option { v := reflect.ValueOf(f) if !function.IsType(v.Type(), function.Transformer) || v.IsNil() { panic(fmt.Sprintf("invalid transformer function: %T", f)) } if name == "" { - name = "λ" // Lambda-symbol as place-holder for anonymous transformer - } - if !isValid(name) { + name = function.NameOf(v) + if !identsRx.MatchString(name) { + name = "λ" // Lambda-symbol as placeholder name + } + } else if !identsRx.MatchString(name) { panic(fmt.Sprintf("invalid name: %q", name)) } tr := &transformer{name: name, fnc: reflect.ValueOf(f)} @@ -250,9 +286,9 @@ type transformer struct { func (tr *transformer) isFiltered() bool { return tr.typ != nil } -func (tr *transformer) filter(s *state, _, _ reflect.Value, t reflect.Type) applicableOption { +func (tr *transformer) filter(s *state, t reflect.Type, _, _ reflect.Value) applicableOption { for i := len(s.curPath) - 1; i >= 0; i-- { - if t, ok := s.curPath[i].(*transform); !ok { + if t, ok := s.curPath[i].(Transform); !ok { break // Hit most recent non-Transform step } else if tr == t.trans { return nil // Cannot directly use same Transform @@ -265,18 +301,15 @@ func (tr *transformer) filter(s *state, _, _ reflect.Value, t reflect.Type) appl } func (tr *transformer) apply(s *state, vx, vy reflect.Value) { - // Update path before calling the Transformer so that dynamic checks - // will use the updated path. - s.curPath.push(&transform{pathStep{tr.fnc.Type().Out(0)}, tr}) - defer s.curPath.pop() - - vx = s.callTRFunc(tr.fnc, vx) - vy = s.callTRFunc(tr.fnc, vy) - s.compareAny(vx, vy) + step := Transform{&transform{pathStep{typ: tr.fnc.Type().Out(0)}, tr}} + vvx := s.callTRFunc(tr.fnc, vx, step) + vvy := s.callTRFunc(tr.fnc, vy, step) + step.vx, step.vy = vvx, vvy + s.compareAny(step) } func (tr transformer) String() string { - return fmt.Sprintf("Transformer(%s, %s)", tr.name, getFuncName(tr.fnc.Pointer())) + return fmt.Sprintf("Transformer(%s, %s)", tr.name, function.NameOf(tr.fnc)) } // Comparer returns an Option that determines whether two values are equal @@ -311,7 +344,7 @@ type comparer struct { func (cm *comparer) isFiltered() bool { return cm.typ != nil } -func (cm *comparer) filter(_ *state, _, _ reflect.Value, t reflect.Type) applicableOption { +func (cm *comparer) filter(_ *state, t reflect.Type, _, _ reflect.Value) applicableOption { if cm.typ == nil || t.AssignableTo(cm.typ) { return cm } @@ -320,11 +353,11 @@ func (cm *comparer) filter(_ *state, _, _ reflect.Value, t reflect.Type) applica func (cm *comparer) apply(s *state, vx, vy reflect.Value) { eq := s.callTTBFunc(cm.fnc, vx, vy) - s.report(eq, vx, vy) + s.report(eq, reportByFunc) } func (cm comparer) String() string { - return fmt.Sprintf("Comparer(%s)", getFuncName(cm.fnc.Pointer())) + return fmt.Sprintf("Comparer(%s)", function.NameOf(cm.fnc)) } // AllowUnexported returns an Option that forcibly allows operations on @@ -338,7 +371,7 @@ func (cm comparer) String() string { // defined in an internal package where the semantic meaning of an unexported // field is in the control of the user. // -// For some cases, a custom Comparer should be used instead that defines +// In many cases, a custom Comparer should be used instead that defines // equality as a function of the public API of a type rather than the underlying // unexported implementation. // @@ -370,27 +403,92 @@ func AllowUnexported(types ...interface{}) Option { type visibleStructs map[reflect.Type]bool -func (visibleStructs) filter(_ *state, _, _ reflect.Value, _ reflect.Type) applicableOption { +func (visibleStructs) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption { panic("not implemented") } -// reporter is an Option that configures how differences are reported. -type reporter interface { - // TODO: Not exported yet. +// Result represents the comparison result for a single node and +// is provided by cmp when calling Result (see Reporter). +type Result struct { + _ [0]func() // Make Result incomparable + flags resultFlags +} + +// Equal reports whether the node was determined to be equal or not. +// As a special case, ignored nodes are considered equal. +func (r Result) Equal() bool { + return r.flags&(reportEqual|reportByIgnore) != 0 +} + +// ByIgnore reports whether the node is equal because it was ignored. +// This never reports true if Equal reports false. +func (r Result) ByIgnore() bool { + return r.flags&reportByIgnore != 0 +} + +// ByMethod reports whether the Equal method determined equality. +func (r Result) ByMethod() bool { + return r.flags&reportByMethod != 0 +} + +// ByFunc reports whether a Comparer function determined equality. +func (r Result) ByFunc() bool { + return r.flags&reportByFunc != 0 +} + +type resultFlags uint + +const ( + _ resultFlags = (1 << iota) / 2 + + reportEqual + reportUnequal + reportByIgnore + reportByMethod + reportByFunc +) + +// Reporter is an Option that can be passed to Equal. When Equal traverses +// the value trees, it calls PushStep as it descends into each node in the +// tree and PopStep as it ascend out of the node. The leaves of the tree are +// either compared (determined to be equal or not equal) or ignored and reported +// as such by calling the Report method. +func Reporter(r interface { + // PushStep is called when a tree-traversal operation is performed. + // The PathStep itself is only valid until the step is popped. + // The PathStep.Values are valid for the duration of the entire traversal + // and must not be mutated. + // + // Equal always calls PushStep at the start to provide an operation-less + // PathStep used to report the root values. // - // Perhaps add PushStep and PopStep and change Report to only accept - // a PathStep instead of the full-path? Adding a PushStep and PopStep makes - // it clear that we are traversing the value tree in a depth-first-search - // manner, which has an effect on how values are printed. + // Within a slice, the exact set of inserted, removed, or modified elements + // is unspecified and may change in future implementations. + // The entries of a map are iterated through in an unspecified order. + PushStep(PathStep) + + // Report is called exactly once on leaf nodes to report whether the + // comparison identified the node as equal, unequal, or ignored. + // A leaf node is one that is immediately preceded by and followed by + // a pair of PushStep and PopStep calls. + Report(Result) + + // PopStep ascends back up the value tree. + // There is always a matching pop call for every push call. + PopStep() +}) Option { + return reporter{r} +} - Option +type reporter struct{ reporterIface } +type reporterIface interface { + PushStep(PathStep) + Report(Result) + PopStep() +} - // Report is called for every comparison made and will be provided with - // the two values being compared, the equality result, and the - // current path in the value tree. It is possible for x or y to be an - // invalid reflect.Value if one of the values is non-existent; - // which is possible with maps and slices. - Report(x, y reflect.Value, eq bool, p Path) +func (reporter) filter(_ *state, _ reflect.Type, _, _ reflect.Value) applicableOption { + panic("not implemented") } // normalizeOption normalizes the input options such that all Options groups @@ -424,30 +522,3 @@ func flattenOptions(dst, src Options) Options { } return dst } - -// getFuncName returns a short function name from the pointer. -// The string parsing logic works up until Go1.9. -func getFuncName(p uintptr) string { - fnc := runtime.FuncForPC(p) - if fnc == nil { - return "" - } - name := fnc.Name() // E.g., "long/path/name/mypkg.(mytype).(long/path/name/mypkg.myfunc)-fm" - if strings.HasSuffix(name, ")-fm") || strings.HasSuffix(name, ")·fm") { - // Strip the package name from method name. - name = strings.TrimSuffix(name, ")-fm") - name = strings.TrimSuffix(name, ")·fm") - if i := strings.LastIndexByte(name, '('); i >= 0 { - methodName := name[i+1:] // E.g., "long/path/name/mypkg.myfunc" - if j := strings.LastIndexByte(methodName, '.'); j >= 0 { - methodName = methodName[j+1:] // E.g., "myfunc" - } - name = name[:i] + methodName // E.g., "long/path/name/mypkg.(mytype)." + "myfunc" - } - } - if i := strings.LastIndexByte(name, '/'); i >= 0 { - // Strip the package name. - name = name[i+1:] // E.g., "mypkg.(mytype).myfunc" - } - return name -} diff --git a/vendor/github.com/google/go-cmp/cmp/path.go b/vendor/github.com/google/go-cmp/cmp/path.go index c08a3cf80d..96fffd291f 100644 --- a/vendor/github.com/google/go-cmp/cmp/path.go +++ b/vendor/github.com/google/go-cmp/cmp/path.go @@ -12,80 +12,52 @@ import ( "unicode/utf8" ) -type ( - // Path is a list of PathSteps describing the sequence of operations to get - // from some root type to the current position in the value tree. - // The first Path element is always an operation-less PathStep that exists - // simply to identify the initial type. - // - // When traversing structs with embedded structs, the embedded struct will - // always be accessed as a field before traversing the fields of the - // embedded struct themselves. That is, an exported field from the - // embedded struct will never be accessed directly from the parent struct. - Path []PathStep - - // PathStep is a union-type for specific operations to traverse - // a value's tree structure. Users of this package never need to implement - // these types as values of this type will be returned by this package. - PathStep interface { - String() string - Type() reflect.Type // Resulting type after performing the path step - isPathStep() - } +// Path is a list of PathSteps describing the sequence of operations to get +// from some root type to the current position in the value tree. +// The first Path element is always an operation-less PathStep that exists +// simply to identify the initial type. +// +// When traversing structs with embedded structs, the embedded struct will +// always be accessed as a field before traversing the fields of the +// embedded struct themselves. That is, an exported field from the +// embedded struct will never be accessed directly from the parent struct. +type Path []PathStep - // SliceIndex is an index operation on a slice or array at some index Key. - SliceIndex interface { - PathStep - Key() int // May return -1 if in a split state - - // SplitKeys returns the indexes for indexing into slices in the - // x and y values, respectively. These indexes may differ due to the - // insertion or removal of an element in one of the slices, causing - // all of the indexes to be shifted. If an index is -1, then that - // indicates that the element does not exist in the associated slice. - // - // Key is guaranteed to return -1 if and only if the indexes returned - // by SplitKeys are not the same. SplitKeys will never return -1 for - // both indexes. - SplitKeys() (x int, y int) - - isSliceIndex() - } - // MapIndex is an index operation on a map at some index Key. - MapIndex interface { - PathStep - Key() reflect.Value - isMapIndex() - } - // TypeAssertion represents a type assertion on an interface. - TypeAssertion interface { - PathStep - isTypeAssertion() - } - // StructField represents a struct field access on a field called Name. - StructField interface { - PathStep - Name() string - Index() int - isStructField() - } - // Indirect represents pointer indirection on the parent type. - Indirect interface { - PathStep - isIndirect() - } - // Transform is a transformation from the parent type to the current type. - Transform interface { - PathStep - Name() string - Func() reflect.Value +// PathStep is a union-type for specific operations to traverse +// a value's tree structure. Users of this package never need to implement +// these types as values of this type will be returned by this package. +// +// Implementations of this interface are +// StructField, SliceIndex, MapIndex, Indirect, TypeAssertion, and Transform. +type PathStep interface { + String() string - // Option returns the originally constructed Transformer option. - // The == operator can be used to detect the exact option used. - Option() Option + // Type is the resulting type after performing the path step. + Type() reflect.Type - isTransform() - } + // Values is the resulting values after performing the path step. + // The type of each valid value is guaranteed to be identical to Type. + // + // In some cases, one or both may be invalid or have restrictions: + // • For StructField, both are not interface-able if the current field + // is unexported and the struct type is not explicitly permitted by + // AllowUnexported to traverse unexported fields. + // • For SliceIndex, one may be invalid if an element is missing from + // either the x or y slice. + // • For MapIndex, one may be invalid if an entry is missing from + // either the x or y map. + // + // The provided values must not be mutated. + Values() (vx, vy reflect.Value) +} + +var ( + _ PathStep = StructField{} + _ PathStep = SliceIndex{} + _ PathStep = MapIndex{} + _ PathStep = Indirect{} + _ PathStep = TypeAssertion{} + _ PathStep = Transform{} ) func (pa *Path) push(s PathStep) { @@ -124,7 +96,7 @@ func (pa Path) Index(i int) PathStep { func (pa Path) String() string { var ss []string for _, s := range pa { - if _, ok := s.(*structField); ok { + if _, ok := s.(StructField); ok { ss = append(ss, s.String()) } } @@ -144,13 +116,13 @@ func (pa Path) GoString() string { nextStep = pa[i+1] } switch s := s.(type) { - case *indirect: + case Indirect: numIndirect++ pPre, pPost := "(", ")" switch nextStep.(type) { - case *indirect: + case Indirect: continue // Next step is indirection, so let them batch up - case *structField: + case StructField: numIndirect-- // Automatic indirection on struct fields case nil: pPre, pPost = "", "" // Last step; no need for parenthesis @@ -161,19 +133,10 @@ func (pa Path) GoString() string { } numIndirect = 0 continue - case *transform: + case Transform: ssPre = append(ssPre, s.trans.name+"(") ssPost = append(ssPost, ")") continue - case *typeAssertion: - // As a special-case, elide type assertions on anonymous types - // since they are typically generated dynamically and can be very - // verbose. For example, some transforms return interface{} because - // of Go's lack of generics, but typically take in and return the - // exact same concrete type. - if s.Type().PkgPath() == "" { - continue - } } ssPost = append(ssPost, s.String()) } @@ -183,44 +146,13 @@ func (pa Path) GoString() string { return strings.Join(ssPre, "") + strings.Join(ssPost, "") } -type ( - pathStep struct { - typ reflect.Type - } - - sliceIndex struct { - pathStep - xkey, ykey int - } - mapIndex struct { - pathStep - key reflect.Value - } - typeAssertion struct { - pathStep - } - structField struct { - pathStep - name string - idx int - - // These fields are used for forcibly accessing an unexported field. - // pvx, pvy, and field are only valid if unexported is true. - unexported bool - force bool // Forcibly allow visibility - pvx, pvy reflect.Value // Parent values - field reflect.StructField // Field information - } - indirect struct { - pathStep - } - transform struct { - pathStep - trans *transformer - } -) +type pathStep struct { + typ reflect.Type + vx, vy reflect.Value +} -func (ps pathStep) Type() reflect.Type { return ps.typ } +func (ps pathStep) Type() reflect.Type { return ps.typ } +func (ps pathStep) Values() (vx, vy reflect.Value) { return ps.vx, ps.vy } func (ps pathStep) String() string { if ps.typ == nil { return "" @@ -232,7 +164,54 @@ func (ps pathStep) String() string { return fmt.Sprintf("{%s}", s) } -func (si sliceIndex) String() string { +// StructField represents a struct field access on a field called Name. +type StructField struct{ *structField } +type structField struct { + pathStep + name string + idx int + + // These fields are used for forcibly accessing an unexported field. + // pvx, pvy, and field are only valid if unexported is true. + unexported bool + mayForce bool // Forcibly allow visibility + pvx, pvy reflect.Value // Parent values + field reflect.StructField // Field information +} + +func (sf StructField) Type() reflect.Type { return sf.typ } +func (sf StructField) Values() (vx, vy reflect.Value) { + if !sf.unexported { + return sf.vx, sf.vy // CanInterface reports true + } + + // Forcibly obtain read-write access to an unexported struct field. + if sf.mayForce { + vx = retrieveUnexportedField(sf.pvx, sf.field) + vy = retrieveUnexportedField(sf.pvy, sf.field) + return vx, vy // CanInterface reports true + } + return sf.vx, sf.vy // CanInterface reports false +} +func (sf StructField) String() string { return fmt.Sprintf(".%s", sf.name) } + +// Name is the field name. +func (sf StructField) Name() string { return sf.name } + +// Index is the index of the field in the parent struct type. +// See reflect.Type.Field. +func (sf StructField) Index() int { return sf.idx } + +// SliceIndex is an index operation on a slice or array at some index Key. +type SliceIndex struct{ *sliceIndex } +type sliceIndex struct { + pathStep + xkey, ykey int +} + +func (si SliceIndex) Type() reflect.Type { return si.typ } +func (si SliceIndex) Values() (vx, vy reflect.Value) { return si.vx, si.vy } +func (si SliceIndex) String() string { switch { case si.xkey == si.ykey: return fmt.Sprintf("[%d]", si.xkey) @@ -247,63 +226,83 @@ func (si sliceIndex) String() string { return fmt.Sprintf("[%d->%d]", si.xkey, si.ykey) } } -func (mi mapIndex) String() string { return fmt.Sprintf("[%#v]", mi.key) } -func (ta typeAssertion) String() string { return fmt.Sprintf(".(%v)", ta.typ) } -func (sf structField) String() string { return fmt.Sprintf(".%s", sf.name) } -func (in indirect) String() string { return "*" } -func (tf transform) String() string { return fmt.Sprintf("%s()", tf.trans.name) } -func (si sliceIndex) Key() int { +// Key is the index key; it may return -1 if in a split state +func (si SliceIndex) Key() int { if si.xkey != si.ykey { return -1 } return si.xkey } -func (si sliceIndex) SplitKeys() (x, y int) { return si.xkey, si.ykey } -func (mi mapIndex) Key() reflect.Value { return mi.key } -func (sf structField) Name() string { return sf.name } -func (sf structField) Index() int { return sf.idx } -func (tf transform) Name() string { return tf.trans.name } -func (tf transform) Func() reflect.Value { return tf.trans.fnc } -func (tf transform) Option() Option { return tf.trans } - -func (pathStep) isPathStep() {} -func (sliceIndex) isSliceIndex() {} -func (mapIndex) isMapIndex() {} -func (typeAssertion) isTypeAssertion() {} -func (structField) isStructField() {} -func (indirect) isIndirect() {} -func (transform) isTransform() {} -var ( - _ SliceIndex = sliceIndex{} - _ MapIndex = mapIndex{} - _ TypeAssertion = typeAssertion{} - _ StructField = structField{} - _ Indirect = indirect{} - _ Transform = transform{} - - _ PathStep = sliceIndex{} - _ PathStep = mapIndex{} - _ PathStep = typeAssertion{} - _ PathStep = structField{} - _ PathStep = indirect{} - _ PathStep = transform{} -) +// SplitKeys are the indexes for indexing into slices in the +// x and y values, respectively. These indexes may differ due to the +// insertion or removal of an element in one of the slices, causing +// all of the indexes to be shifted. If an index is -1, then that +// indicates that the element does not exist in the associated slice. +// +// Key is guaranteed to return -1 if and only if the indexes returned +// by SplitKeys are not the same. SplitKeys will never return -1 for +// both indexes. +func (si SliceIndex) SplitKeys() (ix, iy int) { return si.xkey, si.ykey } + +// MapIndex is an index operation on a map at some index Key. +type MapIndex struct{ *mapIndex } +type mapIndex struct { + pathStep + key reflect.Value +} + +func (mi MapIndex) Type() reflect.Type { return mi.typ } +func (mi MapIndex) Values() (vx, vy reflect.Value) { return mi.vx, mi.vy } +func (mi MapIndex) String() string { return fmt.Sprintf("[%#v]", mi.key) } + +// Key is the value of the map key. +func (mi MapIndex) Key() reflect.Value { return mi.key } + +// Indirect represents pointer indirection on the parent type. +type Indirect struct{ *indirect } +type indirect struct { + pathStep +} + +func (in Indirect) Type() reflect.Type { return in.typ } +func (in Indirect) Values() (vx, vy reflect.Value) { return in.vx, in.vy } +func (in Indirect) String() string { return "*" } + +// TypeAssertion represents a type assertion on an interface. +type TypeAssertion struct{ *typeAssertion } +type typeAssertion struct { + pathStep +} + +func (ta TypeAssertion) Type() reflect.Type { return ta.typ } +func (ta TypeAssertion) Values() (vx, vy reflect.Value) { return ta.vx, ta.vy } +func (ta TypeAssertion) String() string { return fmt.Sprintf(".(%v)", ta.typ) } + +// Transform is a transformation from the parent type to the current type. +type Transform struct{ *transform } +type transform struct { + pathStep + trans *transformer +} + +func (tf Transform) Type() reflect.Type { return tf.typ } +func (tf Transform) Values() (vx, vy reflect.Value) { return tf.vx, tf.vy } +func (tf Transform) String() string { return fmt.Sprintf("%s()", tf.trans.name) } + +// Name is the name of the Transformer. +func (tf Transform) Name() string { return tf.trans.name } + +// Func is the function pointer to the transformer function. +func (tf Transform) Func() reflect.Value { return tf.trans.fnc } + +// Option returns the originally constructed Transformer option. +// The == operator can be used to detect the exact option used. +func (tf Transform) Option() Option { return tf.trans } // isExported reports whether the identifier is exported. func isExported(id string) bool { r, _ := utf8.DecodeRuneInString(id) return unicode.IsUpper(r) } - -// isValid reports whether the identifier is valid. -// Empty and underscore-only strings are not valid. -func isValid(id string) bool { - ok := id != "" && id != "_" - for j, c := range id { - ok = ok && (j > 0 || !unicode.IsDigit(c)) - ok = ok && (c == '_' || unicode.IsLetter(c) || unicode.IsDigit(c)) - } - return ok -} diff --git a/vendor/github.com/google/go-cmp/cmp/report.go b/vendor/github.com/google/go-cmp/cmp/report.go new file mode 100644 index 0000000000..6ddf29993e --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report.go @@ -0,0 +1,51 @@ +// Copyright 2017, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +// defaultReporter implements the reporter interface. +// +// As Equal serially calls the PushStep, Report, and PopStep methods, the +// defaultReporter constructs a tree-based representation of the compared value +// and the result of each comparison (see valueNode). +// +// When the String method is called, the FormatDiff method transforms the +// valueNode tree into a textNode tree, which is a tree-based representation +// of the textual output (see textNode). +// +// Lastly, the textNode.String method produces the final report as a string. +type defaultReporter struct { + root *valueNode + curr *valueNode +} + +func (r *defaultReporter) PushStep(ps PathStep) { + r.curr = r.curr.PushStep(ps) + if r.root == nil { + r.root = r.curr + } +} +func (r *defaultReporter) Report(rs Result) { + r.curr.Report(rs) +} +func (r *defaultReporter) PopStep() { + r.curr = r.curr.PopStep() +} + +// String provides a full report of the differences detected as a structured +// literal in pseudo-Go syntax. String may only be called after the entire tree +// has been traversed. +func (r *defaultReporter) String() string { + assert(r.root != nil && r.curr == nil) + if r.root.NumDiff == 0 { + return "" + } + return formatOptions{}.FormatDiff(r.root).String() +} + +func assert(ok bool) { + if !ok { + panic("assertion failure") + } +} diff --git a/vendor/github.com/google/go-cmp/cmp/report_compare.go b/vendor/github.com/google/go-cmp/cmp/report_compare.go new file mode 100644 index 0000000000..05efb992c5 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report_compare.go @@ -0,0 +1,296 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import ( + "fmt" + "reflect" + + "github.com/google/go-cmp/cmp/internal/value" +) + +// TODO: Enforce limits? +// * Enforce maximum number of records to print per node? +// * Enforce maximum size in bytes allowed? +// * As a heuristic, use less verbosity for equal nodes than unequal nodes. +// TODO: Enforce unique outputs? +// * Avoid Stringer methods if it results in same output? +// * Print pointer address if outputs still equal? + +// numContextRecords is the number of surrounding equal records to print. +const numContextRecords = 2 + +type diffMode byte + +const ( + diffUnknown diffMode = 0 + diffIdentical diffMode = ' ' + diffRemoved diffMode = '-' + diffInserted diffMode = '+' +) + +type typeMode int + +const ( + // emitType always prints the type. + emitType typeMode = iota + // elideType never prints the type. + elideType + // autoType prints the type only for composite kinds + // (i.e., structs, slices, arrays, and maps). + autoType +) + +type formatOptions struct { + // DiffMode controls the output mode of FormatDiff. + // + // If diffUnknown, then produce a diff of the x and y values. + // If diffIdentical, then emit values as if they were equal. + // If diffRemoved, then only emit x values (ignoring y values). + // If diffInserted, then only emit y values (ignoring x values). + DiffMode diffMode + + // TypeMode controls whether to print the type for the current node. + // + // As a general rule of thumb, we always print the type of the next node + // after an interface, and always elide the type of the next node after + // a slice or map node. + TypeMode typeMode + + // formatValueOptions are options specific to printing reflect.Values. + formatValueOptions +} + +func (opts formatOptions) WithDiffMode(d diffMode) formatOptions { + opts.DiffMode = d + return opts +} +func (opts formatOptions) WithTypeMode(t typeMode) formatOptions { + opts.TypeMode = t + return opts +} + +// FormatDiff converts a valueNode tree into a textNode tree, where the later +// is a textual representation of the differences detected in the former. +func (opts formatOptions) FormatDiff(v *valueNode) textNode { + // Check whether we have specialized formatting for this node. + // This is not necessary, but helpful for producing more readable outputs. + if opts.CanFormatDiffSlice(v) { + return opts.FormatDiffSlice(v) + } + + // For leaf nodes, format the value based on the reflect.Values alone. + if v.MaxDepth == 0 { + switch opts.DiffMode { + case diffUnknown, diffIdentical: + // Format Equal. + if v.NumDiff == 0 { + outx := opts.FormatValue(v.ValueX, visitedPointers{}) + outy := opts.FormatValue(v.ValueY, visitedPointers{}) + if v.NumIgnored > 0 && v.NumSame == 0 { + return textEllipsis + } else if outx.Len() < outy.Len() { + return outx + } else { + return outy + } + } + + // Format unequal. + assert(opts.DiffMode == diffUnknown) + var list textList + outx := opts.WithTypeMode(elideType).FormatValue(v.ValueX, visitedPointers{}) + outy := opts.WithTypeMode(elideType).FormatValue(v.ValueY, visitedPointers{}) + if outx != nil { + list = append(list, textRecord{Diff: '-', Value: outx}) + } + if outy != nil { + list = append(list, textRecord{Diff: '+', Value: outy}) + } + return opts.WithTypeMode(emitType).FormatType(v.Type, list) + case diffRemoved: + return opts.FormatValue(v.ValueX, visitedPointers{}) + case diffInserted: + return opts.FormatValue(v.ValueY, visitedPointers{}) + default: + panic("invalid diff mode") + } + } + + // Descend into the child value node. + if v.TransformerName != "" { + out := opts.WithTypeMode(emitType).FormatDiff(v.Value) + out = textWrap{"Inverse(" + v.TransformerName + ", ", out, ")"} + return opts.FormatType(v.Type, out) + } else { + switch k := v.Type.Kind(); k { + case reflect.Struct, reflect.Array, reflect.Slice, reflect.Map: + return opts.FormatType(v.Type, opts.formatDiffList(v.Records, k)) + case reflect.Ptr: + return textWrap{"&", opts.FormatDiff(v.Value), ""} + case reflect.Interface: + return opts.WithTypeMode(emitType).FormatDiff(v.Value) + default: + panic(fmt.Sprintf("%v cannot have children", k)) + } + } +} + +func (opts formatOptions) formatDiffList(recs []reportRecord, k reflect.Kind) textNode { + // Derive record name based on the data structure kind. + var name string + var formatKey func(reflect.Value) string + switch k { + case reflect.Struct: + name = "field" + opts = opts.WithTypeMode(autoType) + formatKey = func(v reflect.Value) string { return v.String() } + case reflect.Slice, reflect.Array: + name = "element" + opts = opts.WithTypeMode(elideType) + formatKey = func(reflect.Value) string { return "" } + case reflect.Map: + name = "entry" + opts = opts.WithTypeMode(elideType) + formatKey = formatMapKey + } + + // Handle unification. + switch opts.DiffMode { + case diffIdentical, diffRemoved, diffInserted: + var list textList + var deferredEllipsis bool // Add final "..." to indicate records were dropped + for _, r := range recs { + // Elide struct fields that are zero value. + if k == reflect.Struct { + var isZero bool + switch opts.DiffMode { + case diffIdentical: + isZero = value.IsZero(r.Value.ValueX) || value.IsZero(r.Value.ValueX) + case diffRemoved: + isZero = value.IsZero(r.Value.ValueX) + case diffInserted: + isZero = value.IsZero(r.Value.ValueY) + } + if isZero { + continue + } + } + // Elide ignored nodes. + if r.Value.NumIgnored > 0 && r.Value.NumSame+r.Value.NumDiff == 0 { + deferredEllipsis = !(k == reflect.Slice || k == reflect.Array) + if !deferredEllipsis { + list.AppendEllipsis(diffStats{}) + } + continue + } + if out := opts.FormatDiff(r.Value); out != nil { + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + } + } + if deferredEllipsis { + list.AppendEllipsis(diffStats{}) + } + return textWrap{"{", list, "}"} + case diffUnknown: + default: + panic("invalid diff mode") + } + + // Handle differencing. + var list textList + groups := coalesceAdjacentRecords(name, recs) + for i, ds := range groups { + // Handle equal records. + if ds.NumDiff() == 0 { + // Compute the number of leading and trailing records to print. + var numLo, numHi int + numEqual := ds.NumIgnored + ds.NumIdentical + for numLo < numContextRecords && numLo+numHi < numEqual && i != 0 { + if r := recs[numLo].Value; r.NumIgnored > 0 && r.NumSame+r.NumDiff == 0 { + break + } + numLo++ + } + for numHi < numContextRecords && numLo+numHi < numEqual && i != len(groups)-1 { + if r := recs[numEqual-numHi-1].Value; r.NumIgnored > 0 && r.NumSame+r.NumDiff == 0 { + break + } + numHi++ + } + if numEqual-(numLo+numHi) == 1 && ds.NumIgnored == 0 { + numHi++ // Avoid pointless coalescing of a single equal record + } + + // Format the equal values. + for _, r := range recs[:numLo] { + out := opts.WithDiffMode(diffIdentical).FormatDiff(r.Value) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + } + if numEqual > numLo+numHi { + ds.NumIdentical -= numLo + numHi + list.AppendEllipsis(ds) + } + for _, r := range recs[numEqual-numHi : numEqual] { + out := opts.WithDiffMode(diffIdentical).FormatDiff(r.Value) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + } + recs = recs[numEqual:] + continue + } + + // Handle unequal records. + for _, r := range recs[:ds.NumDiff()] { + switch { + case opts.CanFormatDiffSlice(r.Value): + out := opts.FormatDiffSlice(r.Value) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + case r.Value.NumChildren == r.Value.MaxDepth: + outx := opts.WithDiffMode(diffRemoved).FormatDiff(r.Value) + outy := opts.WithDiffMode(diffInserted).FormatDiff(r.Value) + if outx != nil { + list = append(list, textRecord{Diff: diffRemoved, Key: formatKey(r.Key), Value: outx}) + } + if outy != nil { + list = append(list, textRecord{Diff: diffInserted, Key: formatKey(r.Key), Value: outy}) + } + default: + out := opts.FormatDiff(r.Value) + list = append(list, textRecord{Key: formatKey(r.Key), Value: out}) + } + } + recs = recs[ds.NumDiff():] + } + assert(len(recs) == 0) + return textWrap{"{", list, "}"} +} + +// coalesceAdjacentRecords coalesces the list of records into groups of +// adjacent equal, or unequal counts. +func coalesceAdjacentRecords(name string, recs []reportRecord) (groups []diffStats) { + var prevCase int // Arbitrary index into which case last occurred + lastStats := func(i int) *diffStats { + if prevCase != i { + groups = append(groups, diffStats{Name: name}) + prevCase = i + } + return &groups[len(groups)-1] + } + for _, r := range recs { + switch rv := r.Value; { + case rv.NumIgnored > 0 && rv.NumSame+rv.NumDiff == 0: + lastStats(1).NumIgnored++ + case rv.NumDiff == 0: + lastStats(1).NumIdentical++ + case rv.NumDiff > 0 && !rv.ValueY.IsValid(): + lastStats(2).NumRemoved++ + case rv.NumDiff > 0 && !rv.ValueX.IsValid(): + lastStats(2).NumInserted++ + default: + lastStats(2).NumModified++ + } + } + return groups +} diff --git a/vendor/github.com/google/go-cmp/cmp/report_reflect.go b/vendor/github.com/google/go-cmp/cmp/report_reflect.go new file mode 100644 index 0000000000..5521c604c5 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report_reflect.go @@ -0,0 +1,279 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import ( + "fmt" + "reflect" + "strconv" + "strings" + "unicode" + + "github.com/google/go-cmp/cmp/internal/flags" + "github.com/google/go-cmp/cmp/internal/value" +) + +type formatValueOptions struct { + // AvoidStringer controls whether to avoid calling custom stringer + // methods like error.Error or fmt.Stringer.String. + AvoidStringer bool + + // ShallowPointers controls whether to avoid descending into pointers. + // Useful when printing map keys, where pointer comparison is performed + // on the pointer address rather than the pointed-at value. + ShallowPointers bool + + // PrintAddresses controls whether to print the address of all pointers, + // slice elements, and maps. + PrintAddresses bool +} + +// FormatType prints the type as if it were wrapping s. +// This may return s as-is depending on the current type and TypeMode mode. +func (opts formatOptions) FormatType(t reflect.Type, s textNode) textNode { + // Check whether to emit the type or not. + switch opts.TypeMode { + case autoType: + switch t.Kind() { + case reflect.Struct, reflect.Slice, reflect.Array, reflect.Map: + if s.Equal(textNil) { + return s + } + default: + return s + } + case elideType: + return s + } + + // Determine the type label, applying special handling for unnamed types. + typeName := t.String() + if t.Name() == "" { + // According to Go grammar, certain type literals contain symbols that + // do not strongly bind to the next lexicographical token (e.g., *T). + switch t.Kind() { + case reflect.Chan, reflect.Func, reflect.Ptr: + typeName = "(" + typeName + ")" + } + typeName = strings.Replace(typeName, "struct {", "struct{", -1) + typeName = strings.Replace(typeName, "interface {", "interface{", -1) + } + + // Avoid wrap the value in parenthesis if unnecessary. + if s, ok := s.(textWrap); ok { + hasParens := strings.HasPrefix(s.Prefix, "(") && strings.HasSuffix(s.Suffix, ")") + hasBraces := strings.HasPrefix(s.Prefix, "{") && strings.HasSuffix(s.Suffix, "}") + if hasParens || hasBraces { + return textWrap{typeName, s, ""} + } + } + return textWrap{typeName + "(", s, ")"} +} + +// FormatValue prints the reflect.Value, taking extra care to avoid descending +// into pointers already in m. As pointers are visited, m is also updated. +func (opts formatOptions) FormatValue(v reflect.Value, m visitedPointers) (out textNode) { + if !v.IsValid() { + return nil + } + t := v.Type() + + // Check whether there is an Error or String method to call. + if !opts.AvoidStringer && v.CanInterface() { + // Avoid calling Error or String methods on nil receivers since many + // implementations crash when doing so. + if (t.Kind() != reflect.Ptr && t.Kind() != reflect.Interface) || !v.IsNil() { + switch v := v.Interface().(type) { + case error: + return textLine("e" + formatString(v.Error())) + case fmt.Stringer: + return textLine("s" + formatString(v.String())) + } + } + } + + // Check whether to explicitly wrap the result with the type. + var skipType bool + defer func() { + if !skipType { + out = opts.FormatType(t, out) + } + }() + + var ptr string + switch t.Kind() { + case reflect.Bool: + return textLine(fmt.Sprint(v.Bool())) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + return textLine(fmt.Sprint(v.Int())) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + // Unnamed uints are usually bytes or words, so use hexadecimal. + if t.PkgPath() == "" || t.Kind() == reflect.Uintptr { + return textLine(formatHex(v.Uint())) + } + return textLine(fmt.Sprint(v.Uint())) + case reflect.Float32, reflect.Float64: + return textLine(fmt.Sprint(v.Float())) + case reflect.Complex64, reflect.Complex128: + return textLine(fmt.Sprint(v.Complex())) + case reflect.String: + return textLine(formatString(v.String())) + case reflect.UnsafePointer, reflect.Chan, reflect.Func: + return textLine(formatPointer(v)) + case reflect.Struct: + var list textList + for i := 0; i < v.NumField(); i++ { + vv := v.Field(i) + if value.IsZero(vv) { + continue // Elide fields with zero values + } + s := opts.WithTypeMode(autoType).FormatValue(vv, m) + list = append(list, textRecord{Key: t.Field(i).Name, Value: s}) + } + return textWrap{"{", list, "}"} + case reflect.Slice: + if v.IsNil() { + return textNil + } + if opts.PrintAddresses { + ptr = formatPointer(v) + } + fallthrough + case reflect.Array: + var list textList + for i := 0; i < v.Len(); i++ { + vi := v.Index(i) + if vi.CanAddr() { // Check for cyclic elements + p := vi.Addr() + if m.Visit(p) { + var out textNode + out = textLine(formatPointer(p)) + out = opts.WithTypeMode(emitType).FormatType(p.Type(), out) + out = textWrap{"*", out, ""} + list = append(list, textRecord{Value: out}) + continue + } + } + s := opts.WithTypeMode(elideType).FormatValue(vi, m) + list = append(list, textRecord{Value: s}) + } + return textWrap{ptr + "{", list, "}"} + case reflect.Map: + if v.IsNil() { + return textNil + } + if m.Visit(v) { + return textLine(formatPointer(v)) + } + + var list textList + for _, k := range value.SortKeys(v.MapKeys()) { + sk := formatMapKey(k) + sv := opts.WithTypeMode(elideType).FormatValue(v.MapIndex(k), m) + list = append(list, textRecord{Key: sk, Value: sv}) + } + if opts.PrintAddresses { + ptr = formatPointer(v) + } + return textWrap{ptr + "{", list, "}"} + case reflect.Ptr: + if v.IsNil() { + return textNil + } + if m.Visit(v) || opts.ShallowPointers { + return textLine(formatPointer(v)) + } + if opts.PrintAddresses { + ptr = formatPointer(v) + } + skipType = true // Let the underlying value print the type instead + return textWrap{"&" + ptr, opts.FormatValue(v.Elem(), m), ""} + case reflect.Interface: + if v.IsNil() { + return textNil + } + // Interfaces accept different concrete types, + // so configure the underlying value to explicitly print the type. + skipType = true // Print the concrete type instead + return opts.WithTypeMode(emitType).FormatValue(v.Elem(), m) + default: + panic(fmt.Sprintf("%v kind not handled", v.Kind())) + } +} + +// formatMapKey formats v as if it were a map key. +// The result is guaranteed to be a single line. +func formatMapKey(v reflect.Value) string { + var opts formatOptions + opts.TypeMode = elideType + opts.AvoidStringer = true + opts.ShallowPointers = true + s := opts.FormatValue(v, visitedPointers{}).String() + return strings.TrimSpace(s) +} + +// formatString prints s as a double-quoted or backtick-quoted string. +func formatString(s string) string { + // Use quoted string if it the same length as a raw string literal. + // Otherwise, attempt to use the raw string form. + qs := strconv.Quote(s) + if len(qs) == 1+len(s)+1 { + return qs + } + + // Disallow newlines to ensure output is a single line. + // Only allow printable runes for readability purposes. + rawInvalid := func(r rune) bool { + return r == '`' || r == '\n' || !(unicode.IsPrint(r) || r == '\t') + } + if strings.IndexFunc(s, rawInvalid) < 0 { + return "`" + s + "`" + } + return qs +} + +// formatHex prints u as a hexadecimal integer in Go notation. +func formatHex(u uint64) string { + var f string + switch { + case u <= 0xff: + f = "0x%02x" + case u <= 0xffff: + f = "0x%04x" + case u <= 0xffffff: + f = "0x%06x" + case u <= 0xffffffff: + f = "0x%08x" + case u <= 0xffffffffff: + f = "0x%010x" + case u <= 0xffffffffffff: + f = "0x%012x" + case u <= 0xffffffffffffff: + f = "0x%014x" + case u <= 0xffffffffffffffff: + f = "0x%016x" + } + return fmt.Sprintf(f, u) +} + +// formatPointer prints the address of the pointer. +func formatPointer(v reflect.Value) string { + p := v.Pointer() + if flags.Deterministic { + p = 0xdeadf00f // Only used for stable testing purposes + } + return fmt.Sprintf("⟪0x%x⟫", p) +} + +type visitedPointers map[value.Pointer]struct{} + +// Visit inserts pointer v into the visited map and reports whether it had +// already been visited before. +func (m visitedPointers) Visit(v reflect.Value) bool { + p := value.PointerOf(v) + _, visited := m[p] + m[p] = struct{}{} + return visited +} diff --git a/vendor/github.com/google/go-cmp/cmp/report_slices.go b/vendor/github.com/google/go-cmp/cmp/report_slices.go new file mode 100644 index 0000000000..8cb3265e76 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report_slices.go @@ -0,0 +1,333 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import ( + "bytes" + "fmt" + "reflect" + "strings" + "unicode" + "unicode/utf8" + + "github.com/google/go-cmp/cmp/internal/diff" +) + +// CanFormatDiffSlice reports whether we support custom formatting for nodes +// that are slices of primitive kinds or strings. +func (opts formatOptions) CanFormatDiffSlice(v *valueNode) bool { + switch { + case opts.DiffMode != diffUnknown: + return false // Must be formatting in diff mode + case v.NumDiff == 0: + return false // No differences detected + case v.NumIgnored+v.NumCompared+v.NumTransformed > 0: + // TODO: Handle the case where someone uses bytes.Equal on a large slice. + return false // Some custom option was used to determined equality + case !v.ValueX.IsValid() || !v.ValueY.IsValid(): + return false // Both values must be valid + } + + switch t := v.Type; t.Kind() { + case reflect.String: + case reflect.Array, reflect.Slice: + // Only slices of primitive types have specialized handling. + switch t.Elem().Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, + reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, + reflect.Bool, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128: + default: + return false + } + + // If a sufficient number of elements already differ, + // use specialized formatting even if length requirement is not met. + if v.NumDiff > v.NumSame { + return true + } + default: + return false + } + + // Use specialized string diffing for longer slices or strings. + const minLength = 64 + return v.ValueX.Len() >= minLength && v.ValueY.Len() >= minLength +} + +// FormatDiffSlice prints a diff for the slices (or strings) represented by v. +// This provides custom-tailored logic to make printing of differences in +// textual strings and slices of primitive kinds more readable. +func (opts formatOptions) FormatDiffSlice(v *valueNode) textNode { + assert(opts.DiffMode == diffUnknown) + t, vx, vy := v.Type, v.ValueX, v.ValueY + + // Auto-detect the type of the data. + var isLinedText, isText, isBinary bool + var sx, sy string + switch { + case t.Kind() == reflect.String: + sx, sy = vx.String(), vy.String() + isText = true // Initial estimate, verify later + case t.Kind() == reflect.Slice && t.Elem() == reflect.TypeOf(byte(0)): + sx, sy = string(vx.Bytes()), string(vy.Bytes()) + isBinary = true // Initial estimate, verify later + case t.Kind() == reflect.Array: + // Arrays need to be addressable for slice operations to work. + vx2, vy2 := reflect.New(t).Elem(), reflect.New(t).Elem() + vx2.Set(vx) + vy2.Set(vy) + vx, vy = vx2, vy2 + } + if isText || isBinary { + var numLines, lastLineIdx, maxLineLen int + isBinary = false + for i, r := range sx + sy { + if !(unicode.IsPrint(r) || unicode.IsSpace(r)) || r == utf8.RuneError { + isBinary = true + break + } + if r == '\n' { + if maxLineLen < i-lastLineIdx { + lastLineIdx = i - lastLineIdx + } + lastLineIdx = i + 1 + numLines++ + } + } + isText = !isBinary + isLinedText = isText && numLines >= 4 && maxLineLen <= 256 + } + + // Format the string into printable records. + var list textList + var delim string + switch { + // If the text appears to be multi-lined text, + // then perform differencing across individual lines. + case isLinedText: + ssx := strings.Split(sx, "\n") + ssy := strings.Split(sy, "\n") + list = opts.formatDiffSlice( + reflect.ValueOf(ssx), reflect.ValueOf(ssy), 1, "line", + func(v reflect.Value, d diffMode) textRecord { + s := formatString(v.Index(0).String()) + return textRecord{Diff: d, Value: textLine(s)} + }, + ) + delim = "\n" + // If the text appears to be single-lined text, + // then perform differencing in approximately fixed-sized chunks. + // The output is printed as quoted strings. + case isText: + list = opts.formatDiffSlice( + reflect.ValueOf(sx), reflect.ValueOf(sy), 64, "byte", + func(v reflect.Value, d diffMode) textRecord { + s := formatString(v.String()) + return textRecord{Diff: d, Value: textLine(s)} + }, + ) + delim = "" + // If the text appears to be binary data, + // then perform differencing in approximately fixed-sized chunks. + // The output is inspired by hexdump. + case isBinary: + list = opts.formatDiffSlice( + reflect.ValueOf(sx), reflect.ValueOf(sy), 16, "byte", + func(v reflect.Value, d diffMode) textRecord { + var ss []string + for i := 0; i < v.Len(); i++ { + ss = append(ss, formatHex(v.Index(i).Uint())) + } + s := strings.Join(ss, ", ") + comment := commentString(fmt.Sprintf("%c|%v|", d, formatASCII(v.String()))) + return textRecord{Diff: d, Value: textLine(s), Comment: comment} + }, + ) + // For all other slices of primitive types, + // then perform differencing in approximately fixed-sized chunks. + // The size of each chunk depends on the width of the element kind. + default: + var chunkSize int + if t.Elem().Kind() == reflect.Bool { + chunkSize = 16 + } else { + switch t.Elem().Bits() { + case 8: + chunkSize = 16 + case 16: + chunkSize = 12 + case 32: + chunkSize = 8 + default: + chunkSize = 8 + } + } + list = opts.formatDiffSlice( + vx, vy, chunkSize, t.Elem().Kind().String(), + func(v reflect.Value, d diffMode) textRecord { + var ss []string + for i := 0; i < v.Len(); i++ { + switch t.Elem().Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + ss = append(ss, fmt.Sprint(v.Index(i).Int())) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: + ss = append(ss, formatHex(v.Index(i).Uint())) + case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Complex64, reflect.Complex128: + ss = append(ss, fmt.Sprint(v.Index(i).Interface())) + } + } + s := strings.Join(ss, ", ") + return textRecord{Diff: d, Value: textLine(s)} + }, + ) + } + + // Wrap the output with appropriate type information. + var out textNode = textWrap{"{", list, "}"} + if !isText { + // The "{...}" byte-sequence literal is not valid Go syntax for strings. + // Emit the type for extra clarity (e.g. "string{...}"). + if t.Kind() == reflect.String { + opts = opts.WithTypeMode(emitType) + } + return opts.FormatType(t, out) + } + switch t.Kind() { + case reflect.String: + out = textWrap{"strings.Join(", out, fmt.Sprintf(", %q)", delim)} + if t != reflect.TypeOf(string("")) { + out = opts.FormatType(t, out) + } + case reflect.Slice: + out = textWrap{"bytes.Join(", out, fmt.Sprintf(", %q)", delim)} + if t != reflect.TypeOf([]byte(nil)) { + out = opts.FormatType(t, out) + } + } + return out +} + +// formatASCII formats s as an ASCII string. +// This is useful for printing binary strings in a semi-legible way. +func formatASCII(s string) string { + b := bytes.Repeat([]byte{'.'}, len(s)) + for i := 0; i < len(s); i++ { + if ' ' <= s[i] && s[i] <= '~' { + b[i] = s[i] + } + } + return string(b) +} + +func (opts formatOptions) formatDiffSlice( + vx, vy reflect.Value, chunkSize int, name string, + makeRec func(reflect.Value, diffMode) textRecord, +) (list textList) { + es := diff.Difference(vx.Len(), vy.Len(), func(ix int, iy int) diff.Result { + return diff.BoolResult(vx.Index(ix).Interface() == vy.Index(iy).Interface()) + }) + + appendChunks := func(v reflect.Value, d diffMode) int { + n0 := v.Len() + for v.Len() > 0 { + n := chunkSize + if n > v.Len() { + n = v.Len() + } + list = append(list, makeRec(v.Slice(0, n), d)) + v = v.Slice(n, v.Len()) + } + return n0 - v.Len() + } + + groups := coalesceAdjacentEdits(name, es) + groups = coalesceInterveningIdentical(groups, chunkSize/4) + for i, ds := range groups { + // Print equal. + if ds.NumDiff() == 0 { + // Compute the number of leading and trailing equal bytes to print. + var numLo, numHi int + numEqual := ds.NumIgnored + ds.NumIdentical + for numLo < chunkSize*numContextRecords && numLo+numHi < numEqual && i != 0 { + numLo++ + } + for numHi < chunkSize*numContextRecords && numLo+numHi < numEqual && i != len(groups)-1 { + numHi++ + } + if numEqual-(numLo+numHi) <= chunkSize && ds.NumIgnored == 0 { + numHi = numEqual - numLo // Avoid pointless coalescing of single equal row + } + + // Print the equal bytes. + appendChunks(vx.Slice(0, numLo), diffIdentical) + if numEqual > numLo+numHi { + ds.NumIdentical -= numLo + numHi + list.AppendEllipsis(ds) + } + appendChunks(vx.Slice(numEqual-numHi, numEqual), diffIdentical) + vx = vx.Slice(numEqual, vx.Len()) + vy = vy.Slice(numEqual, vy.Len()) + continue + } + + // Print unequal. + nx := appendChunks(vx.Slice(0, ds.NumIdentical+ds.NumRemoved+ds.NumModified), diffRemoved) + vx = vx.Slice(nx, vx.Len()) + ny := appendChunks(vy.Slice(0, ds.NumIdentical+ds.NumInserted+ds.NumModified), diffInserted) + vy = vy.Slice(ny, vy.Len()) + } + assert(vx.Len() == 0 && vy.Len() == 0) + return list +} + +// coalesceAdjacentEdits coalesces the list of edits into groups of adjacent +// equal or unequal counts. +func coalesceAdjacentEdits(name string, es diff.EditScript) (groups []diffStats) { + var prevCase int // Arbitrary index into which case last occurred + lastStats := func(i int) *diffStats { + if prevCase != i { + groups = append(groups, diffStats{Name: name}) + prevCase = i + } + return &groups[len(groups)-1] + } + for _, e := range es { + switch e { + case diff.Identity: + lastStats(1).NumIdentical++ + case diff.UniqueX: + lastStats(2).NumRemoved++ + case diff.UniqueY: + lastStats(2).NumInserted++ + case diff.Modified: + lastStats(2).NumModified++ + } + } + return groups +} + +// coalesceInterveningIdentical coalesces sufficiently short (<= windowSize) +// equal groups into adjacent unequal groups that currently result in a +// dual inserted/removed printout. This acts as a high-pass filter to smooth +// out high-frequency changes within the windowSize. +func coalesceInterveningIdentical(groups []diffStats, windowSize int) []diffStats { + groups, groupsOrig := groups[:0], groups + for i, ds := range groupsOrig { + if len(groups) >= 2 && ds.NumDiff() > 0 { + prev := &groups[len(groups)-2] // Unequal group + curr := &groups[len(groups)-1] // Equal group + next := &groupsOrig[i] // Unequal group + hadX, hadY := prev.NumRemoved > 0, prev.NumInserted > 0 + hasX, hasY := next.NumRemoved > 0, next.NumInserted > 0 + if ((hadX || hasX) && (hadY || hasY)) && curr.NumIdentical <= windowSize { + *prev = (*prev).Append(*curr).Append(*next) + groups = groups[:len(groups)-1] // Truncate off equal group + continue + } + } + groups = append(groups, ds) + } + return groups +} diff --git a/vendor/github.com/google/go-cmp/cmp/report_text.go b/vendor/github.com/google/go-cmp/cmp/report_text.go new file mode 100644 index 0000000000..80605d0e44 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report_text.go @@ -0,0 +1,382 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import ( + "bytes" + "fmt" + "math/rand" + "strings" + "time" + + "github.com/google/go-cmp/cmp/internal/flags" +) + +var randBool = rand.New(rand.NewSource(time.Now().Unix())).Intn(2) == 0 + +type indentMode int + +func (n indentMode) appendIndent(b []byte, d diffMode) []byte { + if flags.Deterministic || randBool { + // Use regular spaces (U+0020). + switch d { + case diffUnknown, diffIdentical: + b = append(b, " "...) + case diffRemoved: + b = append(b, "- "...) + case diffInserted: + b = append(b, "+ "...) + } + } else { + // Use non-breaking spaces (U+00a0). + switch d { + case diffUnknown, diffIdentical: + b = append(b, "  "...) + case diffRemoved: + b = append(b, "- "...) + case diffInserted: + b = append(b, "+ "...) + } + } + return repeatCount(n).appendChar(b, '\t') +} + +type repeatCount int + +func (n repeatCount) appendChar(b []byte, c byte) []byte { + for ; n > 0; n-- { + b = append(b, c) + } + return b +} + +// textNode is a simplified tree-based representation of structured text. +// Possible node types are textWrap, textList, or textLine. +type textNode interface { + // Len reports the length in bytes of a single-line version of the tree. + // Nested textRecord.Diff and textRecord.Comment fields are ignored. + Len() int + // Equal reports whether the two trees are structurally identical. + // Nested textRecord.Diff and textRecord.Comment fields are compared. + Equal(textNode) bool + // String returns the string representation of the text tree. + // It is not guaranteed that len(x.String()) == x.Len(), + // nor that x.String() == y.String() implies that x.Equal(y). + String() string + + // formatCompactTo formats the contents of the tree as a single-line string + // to the provided buffer. Any nested textRecord.Diff and textRecord.Comment + // fields are ignored. + // + // However, not all nodes in the tree should be collapsed as a single-line. + // If a node can be collapsed as a single-line, it is replaced by a textLine + // node. Since the top-level node cannot replace itself, this also returns + // the current node itself. + // + // This does not mutate the receiver. + formatCompactTo([]byte, diffMode) ([]byte, textNode) + // formatExpandedTo formats the contents of the tree as a multi-line string + // to the provided buffer. In order for column alignment to operate well, + // formatCompactTo must be called before calling formatExpandedTo. + formatExpandedTo([]byte, diffMode, indentMode) []byte +} + +// textWrap is a wrapper that concatenates a prefix and/or a suffix +// to the underlying node. +type textWrap struct { + Prefix string // e.g., "bytes.Buffer{" + Value textNode // textWrap | textList | textLine + Suffix string // e.g., "}" +} + +func (s textWrap) Len() int { + return len(s.Prefix) + s.Value.Len() + len(s.Suffix) +} +func (s1 textWrap) Equal(s2 textNode) bool { + if s2, ok := s2.(textWrap); ok { + return s1.Prefix == s2.Prefix && s1.Value.Equal(s2.Value) && s1.Suffix == s2.Suffix + } + return false +} +func (s textWrap) String() string { + var d diffMode + var n indentMode + _, s2 := s.formatCompactTo(nil, d) + b := n.appendIndent(nil, d) // Leading indent + b = s2.formatExpandedTo(b, d, n) // Main body + b = append(b, '\n') // Trailing newline + return string(b) +} +func (s textWrap) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) { + n0 := len(b) // Original buffer length + b = append(b, s.Prefix...) + b, s.Value = s.Value.formatCompactTo(b, d) + b = append(b, s.Suffix...) + if _, ok := s.Value.(textLine); ok { + return b, textLine(b[n0:]) + } + return b, s +} +func (s textWrap) formatExpandedTo(b []byte, d diffMode, n indentMode) []byte { + b = append(b, s.Prefix...) + b = s.Value.formatExpandedTo(b, d, n) + b = append(b, s.Suffix...) + return b +} + +// textList is a comma-separated list of textWrap or textLine nodes. +// The list may be formatted as multi-lines or single-line at the discretion +// of the textList.formatCompactTo method. +type textList []textRecord +type textRecord struct { + Diff diffMode // e.g., 0 or '-' or '+' + Key string // e.g., "MyField" + Value textNode // textWrap | textLine + Comment fmt.Stringer // e.g., "6 identical fields" +} + +// AppendEllipsis appends a new ellipsis node to the list if none already +// exists at the end. If cs is non-zero it coalesces the statistics with the +// previous diffStats. +func (s *textList) AppendEllipsis(ds diffStats) { + hasStats := ds != diffStats{} + if len(*s) == 0 || !(*s)[len(*s)-1].Value.Equal(textEllipsis) { + if hasStats { + *s = append(*s, textRecord{Value: textEllipsis, Comment: ds}) + } else { + *s = append(*s, textRecord{Value: textEllipsis}) + } + return + } + if hasStats { + (*s)[len(*s)-1].Comment = (*s)[len(*s)-1].Comment.(diffStats).Append(ds) + } +} + +func (s textList) Len() (n int) { + for i, r := range s { + n += len(r.Key) + if r.Key != "" { + n += len(": ") + } + n += r.Value.Len() + if i < len(s)-1 { + n += len(", ") + } + } + return n +} + +func (s1 textList) Equal(s2 textNode) bool { + if s2, ok := s2.(textList); ok { + if len(s1) != len(s2) { + return false + } + for i := range s1 { + r1, r2 := s1[i], s2[i] + if !(r1.Diff == r2.Diff && r1.Key == r2.Key && r1.Value.Equal(r2.Value) && r1.Comment == r2.Comment) { + return false + } + } + return true + } + return false +} + +func (s textList) String() string { + return textWrap{"{", s, "}"}.String() +} + +func (s textList) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) { + s = append(textList(nil), s...) // Avoid mutating original + + // Determine whether we can collapse this list as a single line. + n0 := len(b) // Original buffer length + var multiLine bool + for i, r := range s { + if r.Diff == diffInserted || r.Diff == diffRemoved { + multiLine = true + } + b = append(b, r.Key...) + if r.Key != "" { + b = append(b, ": "...) + } + b, s[i].Value = r.Value.formatCompactTo(b, d|r.Diff) + if _, ok := s[i].Value.(textLine); !ok { + multiLine = true + } + if r.Comment != nil { + multiLine = true + } + if i < len(s)-1 { + b = append(b, ", "...) + } + } + // Force multi-lined output when printing a removed/inserted node that + // is sufficiently long. + if (d == diffInserted || d == diffRemoved) && len(b[n0:]) > 80 { + multiLine = true + } + if !multiLine { + return b, textLine(b[n0:]) + } + return b, s +} + +func (s textList) formatExpandedTo(b []byte, d diffMode, n indentMode) []byte { + alignKeyLens := s.alignLens( + func(r textRecord) bool { + _, isLine := r.Value.(textLine) + return r.Key == "" || !isLine + }, + func(r textRecord) int { return len(r.Key) }, + ) + alignValueLens := s.alignLens( + func(r textRecord) bool { + _, isLine := r.Value.(textLine) + return !isLine || r.Value.Equal(textEllipsis) || r.Comment == nil + }, + func(r textRecord) int { return len(r.Value.(textLine)) }, + ) + + // Format the list as a multi-lined output. + n++ + for i, r := range s { + b = n.appendIndent(append(b, '\n'), d|r.Diff) + if r.Key != "" { + b = append(b, r.Key+": "...) + } + b = alignKeyLens[i].appendChar(b, ' ') + + b = r.Value.formatExpandedTo(b, d|r.Diff, n) + if !r.Value.Equal(textEllipsis) { + b = append(b, ',') + } + b = alignValueLens[i].appendChar(b, ' ') + + if r.Comment != nil { + b = append(b, " // "+r.Comment.String()...) + } + } + n-- + + return n.appendIndent(append(b, '\n'), d) +} + +func (s textList) alignLens( + skipFunc func(textRecord) bool, + lenFunc func(textRecord) int, +) []repeatCount { + var startIdx, endIdx, maxLen int + lens := make([]repeatCount, len(s)) + for i, r := range s { + if skipFunc(r) { + for j := startIdx; j < endIdx && j < len(s); j++ { + lens[j] = repeatCount(maxLen - lenFunc(s[j])) + } + startIdx, endIdx, maxLen = i+1, i+1, 0 + } else { + if maxLen < lenFunc(r) { + maxLen = lenFunc(r) + } + endIdx = i + 1 + } + } + for j := startIdx; j < endIdx && j < len(s); j++ { + lens[j] = repeatCount(maxLen - lenFunc(s[j])) + } + return lens +} + +// textLine is a single-line segment of text and is always a leaf node +// in the textNode tree. +type textLine []byte + +var ( + textNil = textLine("nil") + textEllipsis = textLine("...") +) + +func (s textLine) Len() int { + return len(s) +} +func (s1 textLine) Equal(s2 textNode) bool { + if s2, ok := s2.(textLine); ok { + return bytes.Equal([]byte(s1), []byte(s2)) + } + return false +} +func (s textLine) String() string { + return string(s) +} +func (s textLine) formatCompactTo(b []byte, d diffMode) ([]byte, textNode) { + return append(b, s...), s +} +func (s textLine) formatExpandedTo(b []byte, _ diffMode, _ indentMode) []byte { + return append(b, s...) +} + +type diffStats struct { + Name string + NumIgnored int + NumIdentical int + NumRemoved int + NumInserted int + NumModified int +} + +func (s diffStats) NumDiff() int { + return s.NumRemoved + s.NumInserted + s.NumModified +} + +func (s diffStats) Append(ds diffStats) diffStats { + assert(s.Name == ds.Name) + s.NumIgnored += ds.NumIgnored + s.NumIdentical += ds.NumIdentical + s.NumRemoved += ds.NumRemoved + s.NumInserted += ds.NumInserted + s.NumModified += ds.NumModified + return s +} + +// String prints a humanly-readable summary of coalesced records. +// +// Example: +// diffStats{Name: "Field", NumIgnored: 5}.String() => "5 ignored fields" +func (s diffStats) String() string { + var ss []string + var sum int + labels := [...]string{"ignored", "identical", "removed", "inserted", "modified"} + counts := [...]int{s.NumIgnored, s.NumIdentical, s.NumRemoved, s.NumInserted, s.NumModified} + for i, n := range counts { + if n > 0 { + ss = append(ss, fmt.Sprintf("%d %v", n, labels[i])) + } + sum += n + } + + // Pluralize the name (adjusting for some obscure English grammar rules). + name := s.Name + if sum > 1 { + name = name + "s" + if strings.HasSuffix(name, "ys") { + name = name[:len(name)-2] + "ies" // e.g., "entrys" => "entries" + } + } + + // Format the list according to English grammar (with Oxford comma). + switch n := len(ss); n { + case 0: + return "" + case 1, 2: + return strings.Join(ss, " and ") + " " + name + default: + return strings.Join(ss[:n-1], ", ") + ", and " + ss[n-1] + " " + name + } +} + +type commentString string + +func (s commentString) String() string { return string(s) } diff --git a/vendor/github.com/google/go-cmp/cmp/report_value.go b/vendor/github.com/google/go-cmp/cmp/report_value.go new file mode 100644 index 0000000000..83031a7f50 --- /dev/null +++ b/vendor/github.com/google/go-cmp/cmp/report_value.go @@ -0,0 +1,121 @@ +// Copyright 2019, The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE.md file. + +package cmp + +import "reflect" + +// valueNode represents a single node within a report, which is a +// structured representation of the value tree, containing information +// regarding which nodes are equal or not. +type valueNode struct { + parent *valueNode + + Type reflect.Type + ValueX reflect.Value + ValueY reflect.Value + + // NumSame is the number of leaf nodes that are equal. + // All descendants are equal only if NumDiff is 0. + NumSame int + // NumDiff is the number of leaf nodes that are not equal. + NumDiff int + // NumIgnored is the number of leaf nodes that are ignored. + NumIgnored int + // NumCompared is the number of leaf nodes that were compared + // using an Equal method or Comparer function. + NumCompared int + // NumTransformed is the number of non-leaf nodes that were transformed. + NumTransformed int + // NumChildren is the number of transitive descendants of this node. + // This counts from zero; thus, leaf nodes have no descendants. + NumChildren int + // MaxDepth is the maximum depth of the tree. This counts from zero; + // thus, leaf nodes have a depth of zero. + MaxDepth int + + // Records is a list of struct fields, slice elements, or map entries. + Records []reportRecord // If populated, implies Value is not populated + + // Value is the result of a transformation, pointer indirect, of + // type assertion. + Value *valueNode // If populated, implies Records is not populated + + // TransformerName is the name of the transformer. + TransformerName string // If non-empty, implies Value is populated +} +type reportRecord struct { + Key reflect.Value // Invalid for slice element + Value *valueNode +} + +func (parent *valueNode) PushStep(ps PathStep) (child *valueNode) { + vx, vy := ps.Values() + child = &valueNode{parent: parent, Type: ps.Type(), ValueX: vx, ValueY: vy} + switch s := ps.(type) { + case StructField: + assert(parent.Value == nil) + parent.Records = append(parent.Records, reportRecord{Key: reflect.ValueOf(s.Name()), Value: child}) + case SliceIndex: + assert(parent.Value == nil) + parent.Records = append(parent.Records, reportRecord{Value: child}) + case MapIndex: + assert(parent.Value == nil) + parent.Records = append(parent.Records, reportRecord{Key: s.Key(), Value: child}) + case Indirect: + assert(parent.Value == nil && parent.Records == nil) + parent.Value = child + case TypeAssertion: + assert(parent.Value == nil && parent.Records == nil) + parent.Value = child + case Transform: + assert(parent.Value == nil && parent.Records == nil) + parent.Value = child + parent.TransformerName = s.Name() + parent.NumTransformed++ + default: + assert(parent == nil) // Must be the root step + } + return child +} + +func (r *valueNode) Report(rs Result) { + assert(r.MaxDepth == 0) // May only be called on leaf nodes + + if rs.ByIgnore() { + r.NumIgnored++ + } else { + if rs.Equal() { + r.NumSame++ + } else { + r.NumDiff++ + } + } + assert(r.NumSame+r.NumDiff+r.NumIgnored == 1) + + if rs.ByMethod() { + r.NumCompared++ + } + if rs.ByFunc() { + r.NumCompared++ + } + assert(r.NumCompared <= 1) +} + +func (child *valueNode) PopStep() (parent *valueNode) { + if child.parent == nil { + return nil + } + parent = child.parent + parent.NumSame += child.NumSame + parent.NumDiff += child.NumDiff + parent.NumIgnored += child.NumIgnored + parent.NumCompared += child.NumCompared + parent.NumTransformed += child.NumTransformed + parent.NumChildren += child.NumChildren + 1 + if parent.MaxDepth < child.MaxDepth+1 { + parent.MaxDepth = child.MaxDepth + 1 + } + return parent +} diff --git a/vendor/github.com/google/go-cmp/cmp/reporter.go b/vendor/github.com/google/go-cmp/cmp/reporter.go deleted file mode 100644 index 20e9f18e0d..0000000000 --- a/vendor/github.com/google/go-cmp/cmp/reporter.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017, The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE.md file. - -package cmp - -import ( - "fmt" - "reflect" - "strings" - - "github.com/google/go-cmp/cmp/internal/value" -) - -type defaultReporter struct { - Option - diffs []string // List of differences, possibly truncated - ndiffs int // Total number of differences - nbytes int // Number of bytes in diffs - nlines int // Number of lines in diffs -} - -var _ reporter = (*defaultReporter)(nil) - -func (r *defaultReporter) Report(x, y reflect.Value, eq bool, p Path) { - if eq { - return // Ignore equal results - } - const maxBytes = 4096 - const maxLines = 256 - r.ndiffs++ - if r.nbytes < maxBytes && r.nlines < maxLines { - sx := value.Format(x, value.FormatConfig{UseStringer: true}) - sy := value.Format(y, value.FormatConfig{UseStringer: true}) - if sx == sy { - // Unhelpful output, so use more exact formatting. - sx = value.Format(x, value.FormatConfig{PrintPrimitiveType: true}) - sy = value.Format(y, value.FormatConfig{PrintPrimitiveType: true}) - } - s := fmt.Sprintf("%#v:\n\t-: %s\n\t+: %s\n", p, sx, sy) - r.diffs = append(r.diffs, s) - r.nbytes += len(s) - r.nlines += strings.Count(s, "\n") - } -} - -func (r *defaultReporter) String() string { - s := strings.Join(r.diffs, "") - if r.ndiffs == len(r.diffs) { - return s - } - return fmt.Sprintf("%s... %d more differences ...", s, r.ndiffs-len(r.diffs)) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/anon.go b/vendor/github.com/google/go-containerregistry/pkg/authn/anon.go index c9c08ec737..83214957d5 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/anon.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/anon.go @@ -18,8 +18,8 @@ package authn type anonymous struct{} // Authorization implements Authenticator. -func (a *anonymous) Authorization() (string, error) { - return "", nil +func (a *anonymous) Authorization() (*AuthConfig, error) { + return &AuthConfig{}, nil } // Anonymous is a singleton Authenticator for providing anonymous auth. diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/auth.go b/vendor/github.com/google/go-containerregistry/pkg/authn/auth.go index c39ee5a9f9..0111f1ae72 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/auth.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/auth.go @@ -14,16 +14,17 @@ package authn -import ( - "fmt" -) - -// auth implements Authenticator for an "auth" entry of the docker config. +// auth is an Authenticator that simply returns the wrapped AuthConfig. type auth struct { - token string + config AuthConfig +} + +// FromConfig returns an Authenticator that just returns the given AuthConfig. +func FromConfig(cfg AuthConfig) Authenticator { + return &auth{cfg} } // Authorization implements Authenticator. -func (a *auth) Authorization() (string, error) { - return fmt.Sprintf("Basic %s", a.token), nil +func (a *auth) Authorization() (*AuthConfig, error) { + return &a.config, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go b/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go index 30e935cbc9..3c43fbd39b 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go @@ -14,8 +14,23 @@ package authn +// AuthConfig contains authorization information for connecting to a Registry +// Inlined what we use from github.com/cli/cli/config/types +type AuthConfig struct { + Username string `json:"username,omitempty"` + Password string `json:"password,omitempty"` + Auth string `json:"auth,omitempty"` + + // IdentityToken is used to authenticate the user and get + // an access token for the registry. + IdentityToken string `json:"identitytoken,omitempty"` + + // RegistryToken is a bearer token to be sent to a registry + RegistryToken string `json:"registrytoken,omitempty"` +} + // Authenticator is used to authenticate Docker transports. type Authenticator interface { // Authorization returns the value to use in an http transport's Authorization header. - Authorization() (string, error) + Authorization() (*AuthConfig, error) } diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/basic.go b/vendor/github.com/google/go-containerregistry/pkg/authn/basic.go index 7cd4984069..500cb6616f 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/basic.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/basic.go @@ -14,11 +14,6 @@ package authn -import ( - "encoding/base64" - "fmt" -) - // Basic implements Authenticator for basic authentication. type Basic struct { Username string @@ -26,8 +21,9 @@ type Basic struct { } // Authorization implements Authenticator. -func (b *Basic) Authorization() (string, error) { - delimited := fmt.Sprintf("%s:%s", b.Username, b.Password) - encoded := base64.StdEncoding.EncodeToString([]byte(delimited)) - return fmt.Sprintf("Basic %s", encoded), nil +func (b *Basic) Authorization() (*AuthConfig, error) { + return &AuthConfig{ + Username: b.Username, + Password: b.Password, + }, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/bearer.go b/vendor/github.com/google/go-containerregistry/pkg/authn/bearer.go index cb1ae5845a..4cf86df92f 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/bearer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/bearer.go @@ -14,16 +14,14 @@ package authn -import ( - "fmt" -) - // Bearer implements Authenticator for bearer authentication. type Bearer struct { Token string `json:"token"` } // Authorization implements Authenticator. -func (b *Bearer) Authorization() (string, error) { - return fmt.Sprintf("Bearer %s", b.Token), nil +func (b *Bearer) Authorization() (*AuthConfig, error) { + return &AuthConfig{ + RegistryToken: b.Token, + }, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/helper.go b/vendor/github.com/google/go-containerregistry/pkg/authn/helper.go deleted file mode 100644 index c8ba4e6e24..0000000000 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/helper.go +++ /dev/null @@ -1,102 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package authn - -import ( - "bytes" - "encoding/json" - "fmt" - "os/exec" - "strings" - - "github.com/google/go-containerregistry/pkg/name" -) - -// magicNotFoundMessage is the string that the CLI special cases to mean -// that a given registry domain wasn't found. -const ( - magicNotFoundMessage = "credentials not found in native keychain" -) - -// runner allows us to swap out how we "Run" os/exec commands. -type runner interface { - Run(*exec.Cmd) error -} - -// defaultRunner implements runner by just calling Run(). -type defaultRunner struct{} - -// Run implements runner. -func (dr *defaultRunner) Run(cmd *exec.Cmd) error { - return cmd.Run() -} - -// helper executes the named credential helper against the given domain. -type helper struct { - name string - domain name.Registry - - // We add this layer of indirection to facilitate unit testing. - r runner -} - -// helperOutput is the expected JSON output form of a credential helper -// (or at least these are the fields that we care about). -type helperOutput struct { - Username string - Secret string -} - -// Authorization implements Authenticator. -func (h *helper) Authorization() (string, error) { - helperName := fmt.Sprintf("docker-credential-%s", h.name) - // We want to execute: - // echo -n {domain} | docker-credential-{name} get - cmd := exec.Command(helperName, "get") - - // Some keychains expect a scheme: - // https://github.com/bazelbuild/rules_docker/issues/111 - cmd.Stdin = strings.NewReader(fmt.Sprintf("https://%v", h.domain)) - - var out bytes.Buffer - cmd.Stdout = &out - cmdErr := h.r.Run(cmd) - - // If we see this specific message, it means the domain wasn't found - // and we should fall back on anonymous auth. - output := strings.TrimSpace(out.String()) - if output == magicNotFoundMessage { - return Anonymous.Authorization() - } - - // Any other output should be parsed as JSON and the Username / Secret - // fields used for Basic authentication. - ho := helperOutput{} - if err := json.Unmarshal([]byte(output), &ho); err != nil { - if cmdErr != nil { - // If we failed to parse output, it won't contain Secret, so returning it - // in an error should be fine. - return "", fmt.Errorf("invoking %s: %v; output: %s", helperName, cmdErr, output) - } - return "", err - } - - if cmdErr != nil { - return "", fmt.Errorf("invoking %s: %v", helperName, cmdErr) - } - - b := Basic{Username: ho.Username, Password: ho.Secret} - return b.Authorization() -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain.go b/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain.go index d90ac4d1d3..9e0ccd6609 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain.go @@ -23,14 +23,6 @@ import ( "k8s.io/client-go/rest" "k8s.io/kubernetes/pkg/credentialprovider" credentialprovidersecrets "k8s.io/kubernetes/pkg/credentialprovider/secrets" - - // Credential providers - _ "k8s.io/kubernetes/pkg/credentialprovider/aws" - _ "k8s.io/kubernetes/pkg/credentialprovider/azure" - _ "k8s.io/kubernetes/pkg/credentialprovider/gcp" - // TODO(mattmoor): This doesn't seem to build, figure out why `dep ensure` - // is not working and add constraints. - // _ "k8s.io/kubernetes/pkg/credentialprovider/rancher" ) // Options holds configuration data for guiding credential resolution. @@ -133,19 +125,15 @@ func NewNoClient() (authn.Keychain, error) { type lazyProvider credentialprovider.LazyAuthConfiguration // Authorization implements Authenticator. -func (lp lazyProvider) Authorization() (string, error) { +func (lp lazyProvider) Authorization() (*authn.AuthConfig, error) { authConfig := credentialprovider.LazyProvide(credentialprovider.LazyAuthConfiguration(lp)) - if authConfig.Auth != "" { - return "Basic " + authConfig.Auth, nil - } - if authConfig.Username != "" { - basic := authn.Basic{ - Username: authConfig.Username, - Password: authConfig.Password, - } - return basic.Authorization() - } - return authn.Anonymous.Authorization() + return &authn.AuthConfig{ + Username: authConfig.Username, + Password: authConfig.Password, + Auth: authConfig.Auth, + IdentityToken: authConfig.IdentityToken, + RegistryToken: authConfig.RegistryToken, + }, nil } type keychain struct { @@ -153,10 +141,17 @@ type keychain struct { } // Resolve implements authn.Keychain -func (kc *keychain) Resolve(reg name.Registry) (authn.Authenticator, error) { - // TODO(mattmoor): Lookup expects an image reference and we only have a registry, - // find something better than this. - creds, found := kc.keyring.Lookup(reg.String() + "/foo/bar") +func (kc *keychain) Resolve(target authn.Resource) (authn.Authenticator, error) { + var ( + creds []credentialprovider.LazyAuthConfiguration + found bool + ) + if repo, ok := target.(name.Repository); ok { + creds, found = kc.keyring.Lookup(repo.String()) + } else { + // Lookup expects an image reference and we only have a registry. + creds, found = kc.keyring.Lookup(target.RegistryStr() + "/foo/bar") + } if !found || len(creds) < 1 { return authn.Anonymous, nil } diff --git a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.proto b/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain_aws.go similarity index 56% rename from vendor/google.golang.org/grpc/health/grpc_health_v1/health.proto rename to vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain_aws.go index 6072fdc3b8..57ef1853d7 100644 --- a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.proto +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain_aws.go @@ -1,10 +1,11 @@ -// Copyright 2017 gRPC authors. +// +build !disable_aws +// Copyright 2019 Google LLC All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -12,23 +13,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -syntax = "proto3"; +package k8schain -package grpc.health.v1; - -message HealthCheckRequest { - string service = 1; -} - -message HealthCheckResponse { - enum ServingStatus { - UNKNOWN = 0; - SERVING = 1; - NOT_SERVING = 2; - } - ServingStatus status = 1; -} - -service Health{ - rpc Check(HealthCheckRequest) returns (HealthCheckResponse); -} +import ( + // aws credential provider + _ "k8s.io/kubernetes/pkg/credentialprovider/aws" +) diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain_azure.go b/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain_azure.go new file mode 100644 index 0000000000..a9710ef6b1 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain_azure.go @@ -0,0 +1,21 @@ +// +build !disable_azure +// Copyright 2019 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package k8schain + +import ( + // azure credential provider + _ "k8s.io/kubernetes/pkg/credentialprovider/azure" +) diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain_gcp.go b/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain_gcp.go new file mode 100644 index 0000000000..cb8e1f8b61 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/k8schain/k8schain_gcp.go @@ -0,0 +1,21 @@ +// +build !disable_gcp +// Copyright 2019 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package k8schain + +import ( + // gcp credential provider + _ "k8s.io/kubernetes/pkg/credentialprovider/gcp" +) diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go b/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go index 8b2ead5dbf..ce999e8e17 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go @@ -16,137 +16,80 @@ package authn import ( "encoding/json" - "errors" - "fmt" - "io/ioutil" "os" - "path/filepath" - "runtime" + "github.com/docker/cli/cli/config" + "github.com/docker/cli/cli/config/types" "github.com/google/go-containerregistry/pkg/logs" "github.com/google/go-containerregistry/pkg/name" ) +// Resource represents a registry or repository that can be authenticated against. +type Resource interface { + // String returns the full string representation of the target, e.g. + // gcr.io/my-project or just gcr.io. + String() string + + // RegistryStr returns just the registry portion of the target, e.g. for + // gcr.io/my-project, this should just return gcr.io. This is needed to + // pull out an appropriate hostname. + RegistryStr() string +} + // Keychain is an interface for resolving an image reference to a credential. type Keychain interface { - // Resolve looks up the most appropriate credential for the specified registry. - Resolve(name.Registry) (Authenticator, error) + // Resolve looks up the most appropriate credential for the specified target. + Resolve(Resource) (Authenticator, error) } // defaultKeychain implements Keychain with the semantics of the standard Docker // credential keychain. type defaultKeychain struct{} -// configDir returns the directory containing Docker's config.json -func configDir() (string, error) { - if dc := os.Getenv("DOCKER_CONFIG"); dc != "" { - return dc, nil - } - if h := dockerUserHomeDir(); h != "" { - return filepath.Join(dockerUserHomeDir(), ".docker"), nil - } - return "", errNoHomeDir -} - -var errNoHomeDir = errors.New("could not determine home directory") - -// dockerUserHomeDir returns the current user's home directory, as interpreted by Docker. -func dockerUserHomeDir() string { - if runtime.GOOS == "windows" { - // Docker specifically expands "%USERPROFILE%" on Windows, - return os.Getenv("USERPROFILE") - } - // Docker defaults to "$HOME" Linux and OSX. - return os.Getenv("HOME") -} - -// authEntry is a helper for JSON parsing an "auth" entry of config.json -// This is not meant for direct consumption. -type authEntry struct { - Auth string `json:"auth"` - Username string `json:"username"` - Password string `json:"password"` -} - -// cfg is a helper for JSON parsing Docker's config.json -// This is not meant for direct consumption. -type cfg struct { - CredHelper map[string]string `json:"credHelpers,omitempty"` - CredStore string `json:"credsStore,omitempty"` - Auths map[string]authEntry `json:"auths,omitempty"` -} - -// There are a variety of ways a domain may get qualified within the Docker credential file. -// We enumerate them here as format strings. var ( - domainForms = []string{ - // Allow naked domains - "%s", - // Allow scheme-prefixed. - "https://%s", - "http://%s", - // Allow scheme-prefixes with version in url path. - "https://%s/v1/", - "http://%s/v1/", - "https://%s/v2/", - "http://%s/v2/", - } - - // Export an instance of the default keychain. + // DefaultKeychain implements Keychain by interpreting the docker config file. DefaultKeychain Keychain = &defaultKeychain{} ) +const ( + defaultAuthKey = "https://" + name.DefaultRegistry + "/v1/" +) + // Resolve implements Keychain. -func (dk *defaultKeychain) Resolve(reg name.Registry) (Authenticator, error) { - dir, err := configDir() - if err != nil { - logs.Warn.Printf("Unable to determine config dir: %v", err) - return Anonymous, nil - } - file := filepath.Join(dir, "config.json") - content, err := ioutil.ReadFile(file) +func (dk *defaultKeychain) Resolve(target Resource) (Authenticator, error) { + cf, err := config.Load(os.Getenv("DOCKER_CONFIG")) if err != nil { - logs.Warn.Printf("Unable to read %q: %v", file, err) - return Anonymous, nil + return nil, err } - var cf cfg - if err := json.Unmarshal(content, &cf); err != nil { - logs.Warn.Printf("Unable to parse %q: %v", file, err) - return Anonymous, nil + // See: + // https://github.com/google/ko/issues/90 + // https://github.com/moby/moby/blob/fc01c2b481097a6057bec3cd1ab2d7b4488c50c4/registry/config.go#L397-L404 + key := target.RegistryStr() + if key == name.DefaultRegistry { + key = defaultAuthKey } - // Per-registry credential helpers take precedence. - if cf.CredHelper != nil { - for _, form := range domainForms { - if entry, ok := cf.CredHelper[fmt.Sprintf(form, reg.Name())]; ok { - return &helper{name: entry, domain: reg, r: &defaultRunner{}}, nil - } - } - } - - // A global credential helper is next in precedence. - if cf.CredStore != "" { - return &helper{name: cf.CredStore, domain: reg, r: &defaultRunner{}}, nil + cfg, err := cf.GetAuthConfig(key) + if err != nil { + return nil, err } - - // Lastly, the 'auths' section directly contains basic auth entries. - if cf.Auths != nil { - for _, form := range domainForms { - if entry, ok := cf.Auths[fmt.Sprintf(form, reg.Name())]; ok { - if entry.Auth != "" { - return &auth{entry.Auth}, nil - } else if entry.Username != "" { - return &Basic{Username: entry.Username, Password: entry.Password}, nil - } else { - // TODO(mattmoor): Support identitytoken - // TODO(mattmoor): Support registrytoken - return nil, fmt.Errorf("Unsupported entry in \"auths\" section of %q", file) - } - } + if logs.Enabled(logs.Debug) { + b, err := json.Marshal(cfg) + if err == nil { + logs.Debug.Printf("defaultKeychain.Resolve(%q) = %s", key, string(b)) } } - // Fallback on anonymous. - return Anonymous, nil + empty := types.AuthConfig{} + if cfg == empty { + return Anonymous, nil + } + return FromConfig(AuthConfig{ + Username: cfg.Username, + Password: cfg.Password, + Auth: cfg.Auth, + IdentityToken: cfg.IdentityToken, + RegistryToken: cfg.RegistryToken, + }), nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go b/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go index 9d7fb3145c..3b1804f5d0 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go @@ -14,10 +14,6 @@ package authn -import ( - "github.com/google/go-containerregistry/pkg/name" -) - type multiKeychain struct { keychains []Keychain } @@ -31,9 +27,9 @@ func NewMultiKeychain(kcs ...Keychain) Keychain { } // Resolve implements Keychain. -func (mk *multiKeychain) Resolve(reg name.Registry) (Authenticator, error) { +func (mk *multiKeychain) Resolve(target Resource) (Authenticator, error) { for _, kc := range mk.keychains { - auth, err := kc.Resolve(reg) + auth, err := kc.Resolve(target) if err != nil { return nil, err } diff --git a/vendor/github.com/google/go-containerregistry/pkg/internal/retry/retry.go b/vendor/github.com/google/go-containerregistry/pkg/internal/retry/retry.go index 87f7309557..542ba49b49 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/internal/retry/retry.go +++ b/vendor/github.com/google/go-containerregistry/pkg/internal/retry/retry.go @@ -17,11 +17,17 @@ package retry import ( + "context" "fmt" - "k8s.io/apimachinery/pkg/util/wait" + "github.com/google/go-containerregistry/pkg/internal/retry/wait" ) +// Backoff is an alias of our own wait.Backoff to avoid name conflicts with +// the kubernetes wait package. Typing retry.Backoff is aesier than fixing +// the wrong import every time you use wait.Backoff. +type Backoff = wait.Backoff + // This is implemented by several errors in the net package as well as our // transport.Error. type temporary interface { @@ -30,6 +36,9 @@ type temporary interface { // IsTemporary returns true if err implements Temporary() and it returns true. func IsTemporary(err error) bool { + if err == context.DeadlineExceeded { + return false + } if te, ok := err.(temporary); ok && te.Temporary() { return true } diff --git a/vendor/github.com/google/go-containerregistry/pkg/internal/retry/wait/kubernetes_apimachinery_wait.go b/vendor/github.com/google/go-containerregistry/pkg/internal/retry/wait/kubernetes_apimachinery_wait.go new file mode 100644 index 0000000000..ab06e5f109 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/internal/retry/wait/kubernetes_apimachinery_wait.go @@ -0,0 +1,123 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package wait is a subset of k8s.io/apimachinery to avoid conflicts +// in dependencies (specifically, logging). +package wait + +import ( + "errors" + "math/rand" + "time" +) + +// Jitter returns a time.Duration between duration and duration + maxFactor * +// duration. +// +// This allows clients to avoid converging on periodic behavior. If maxFactor +// is 0.0, a suggested default value will be chosen. +func Jitter(duration time.Duration, maxFactor float64) time.Duration { + if maxFactor <= 0.0 { + maxFactor = 1.0 + } + wait := duration + time.Duration(rand.Float64()*maxFactor*float64(duration)) + return wait +} + +// ErrWaitTimeout is returned when the condition exited without success. +var ErrWaitTimeout = errors.New("timed out waiting for the condition") + +// ConditionFunc returns true if the condition is satisfied, or an error +// if the loop should be aborted. +type ConditionFunc func() (done bool, err error) + +// Backoff holds parameters applied to a Backoff function. +type Backoff struct { + // The initial duration. + Duration time.Duration + // Duration is multiplied by factor each iteration, if factor is not zero + // and the limits imposed by Steps and Cap have not been reached. + // Should not be negative. + // The jitter does not contribute to the updates to the duration parameter. + Factor float64 + // The sleep at each iteration is the duration plus an additional + // amount chosen uniformly at random from the interval between + // zero and `jitter*duration`. + Jitter float64 + // The remaining number of iterations in which the duration + // parameter may change (but progress can be stopped earlier by + // hitting the cap). If not positive, the duration is not + // changed. Used for exponential backoff in combination with + // Factor and Cap. + Steps int + // A limit on revised values of the duration parameter. If a + // multiplication by the factor parameter would make the duration + // exceed the cap then the duration is set to the cap and the + // steps parameter is set to zero. + Cap time.Duration +} + +// Step (1) returns an amount of time to sleep determined by the +// original Duration and Jitter and (2) mutates the provided Backoff +// to update its Steps and Duration. +func (b *Backoff) Step() time.Duration { + if b.Steps < 1 { + if b.Jitter > 0 { + return Jitter(b.Duration, b.Jitter) + } + return b.Duration + } + b.Steps-- + + duration := b.Duration + + // calculate the next step + if b.Factor != 0 { + b.Duration = time.Duration(float64(b.Duration) * b.Factor) + if b.Cap > 0 && b.Duration > b.Cap { + b.Duration = b.Cap + b.Steps = 0 + } + } + + if b.Jitter > 0 { + duration = Jitter(duration, b.Jitter) + } + return duration +} + +// ExponentialBackoff repeats a condition check with exponential backoff. +// +// It repeatedly checks the condition and then sleeps, using `backoff.Step()` +// to determine the length of the sleep and adjust Duration and Steps. +// Stops and returns as soon as: +// 1. the condition check returns true or an error, +// 2. `backoff.Steps` checks of the condition have been done, or +// 3. a sleep truncated by the cap on duration has been completed. +// In case (1) the returned error is what the condition function returned. +// In all other cases, ErrWaitTimeout is returned. +func ExponentialBackoff(backoff Backoff, condition ConditionFunc) error { + for backoff.Steps > 0 { + if ok, err := condition(); err != nil || ok { + return err + } + if backoff.Steps == 1 { + break + } + time.Sleep(backoff.Step()) + } + return ErrWaitTimeout +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/logs/logs.go b/vendor/github.com/google/go-containerregistry/pkg/logs/logs.go index af3c1a3b7d..5d25d63d61 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/logs/logs.go +++ b/vendor/github.com/google/go-containerregistry/pkg/logs/logs.go @@ -26,4 +26,14 @@ var ( // Progress is used to log notable, successful events. Progress = log.New(ioutil.Discard, "", log.LstdFlags) + + // Debug is used to log information that is useful for debugging. + Debug = log.New(ioutil.Discard, "", log.LstdFlags) ) + +// Enabled checks to see if the logger's writer is set to something other +// than ioutil.Discard. This allows callers to avoid expensive operations +// that will end up in /dev/null anyway. +func Enabled(l *log.Logger) bool { + return l.Writer() != ioutil.Discard +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/digest.go b/vendor/github.com/google/go-containerregistry/pkg/name/digest.go index 2dc0f7f371..120dd216ab 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/name/digest.go +++ b/vendor/github.com/google/go-containerregistry/pkg/name/digest.go @@ -28,7 +28,8 @@ const ( // Digest stores a digest name in a structured form. type Digest struct { Repository - digest string + digest string + original string } // Ensure Digest implements Reference @@ -54,8 +55,9 @@ func (d Digest) Name() string { return d.Repository.Name() + digestDelim + d.DigestStr() } +// String returns the original input string. func (d Digest) String() string { - return d.Name() + return d.original } func checkDigest(name string) error { @@ -86,5 +88,9 @@ func NewDigest(name string, opts ...Option) (Digest, error) { if err != nil { return Digest{}, err } - return Digest{repo, digest}, nil + return Digest{ + Repository: repo, + digest: digest, + original: name, + }, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/ref.go b/vendor/github.com/google/go-containerregistry/pkg/name/ref.go index cca3034053..f9388253f1 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/name/ref.go +++ b/vendor/github.com/google/go-containerregistry/pkg/name/ref.go @@ -15,7 +15,6 @@ package name import ( - "errors" "fmt" ) @@ -45,6 +44,6 @@ func ParseReference(s string, opts ...Option) (Reference, error) { if d, err := NewDigest(s, opts...); err == nil { return d, nil } - // TODO: Combine above errors into something more useful? - return nil, errors.New("could not parse reference") + return nil, NewErrBadName("could not parse reference: " + s) + } diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/repository.go b/vendor/github.com/google/go-containerregistry/pkg/name/repository.go index f333779884..54367a15cd 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/name/repository.go +++ b/vendor/github.com/google/go-containerregistry/pkg/name/repository.go @@ -50,6 +50,7 @@ func (r Repository) Name() string { if regName != "" { return regName + regRepoDelimiter + r.RepositoryStr() } + // TODO: As far as I can tell, this is unreachable. return r.RepositoryStr() } @@ -98,3 +99,23 @@ func NewRepository(name string, opts ...Option) (Repository, error) { } return Repository{reg, repo}, nil } + +// Tag returns a Tag in this Repository. +func (r Repository) Tag(identifier string) Tag { + t := Tag{ + tag: identifier, + Repository: r, + } + t.original = t.Name() + return t +} + +// Digest returns a Digest in this Repository. +func (r Repository) Digest(identifier string) Digest { + d := Digest{ + digest: identifier, + Repository: r, + } + d.original = d.Name() + return d +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/tag.go b/vendor/github.com/google/go-containerregistry/pkg/name/tag.go index e6cce34dbd..eac9ad1480 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/name/tag.go +++ b/vendor/github.com/google/go-containerregistry/pkg/name/tag.go @@ -28,7 +28,8 @@ const ( // Tag stores a docker tag name in a structured form. type Tag struct { Repository - tag string + tag string + original string } // Ensure Tag implements Reference @@ -57,8 +58,9 @@ func (t Tag) Name() string { return t.Repository.Name() + tagDelim + t.TagStr() } +// String returns the original input string. func (t Tag) String() string { - return t.Name() + return t.original } // Scope returns the scope required to perform the given action on the tag. @@ -98,5 +100,9 @@ func NewTag(name string, opts ...Option) (Tag, error) { if err != nil { return Tag{}, err } - return Tag{repo, tag}, nil + return Tag{ + Repository: repo, + tag: tag, + original: name, + }, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/config.go b/vendor/github.com/google/go-containerregistry/pkg/v1/config.go index 3d8d6d30db..158e28d16f 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/config.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/config.go @@ -24,17 +24,16 @@ import ( // how to launch a container. See: // https://github.com/opencontainers/image-spec/blob/master/config.md type ConfigFile struct { - Architecture string `json:"architecture"` - Author string `json:"author,omitempty"` - Container string `json:"container,omitempty"` - Created Time `json:"created,omitempty"` - DockerVersion string `json:"docker_version,omitempty"` - History []History `json:"history,omitempty"` - OS string `json:"os"` - RootFS RootFS `json:"rootfs"` - Config Config `json:"config"` - ContainerConfig Config `json:"container_config,omitempty"` - OSVersion string `json:"osversion,omitempty"` + Architecture string `json:"architecture"` + Author string `json:"author,omitempty"` + Container string `json:"container,omitempty"` + Created Time `json:"created,omitempty"` + DockerVersion string `json:"docker_version,omitempty"` + History []History `json:"history,omitempty"` + OS string `json:"os"` + RootFS RootFS `json:"rootfs"` + Config Config `json:"config"` + OSVersion string `json:"osversion,omitempty"` } // History is one entry of a list recording how this container image was built. @@ -95,30 +94,30 @@ type HealthConfig struct { // and // https://github.com/opencontainers/image-spec/blob/master/config.md type Config struct { - AttachStderr bool - AttachStdin bool - AttachStdout bool - Cmd []string - Healthcheck *HealthConfig - Domainname string - Entrypoint []string - Env []string - Hostname string - Image string - Labels map[string]string - OnBuild []string - OpenStdin bool - StdinOnce bool - Tty bool - User string - Volumes map[string]struct{} - WorkingDir string - ExposedPorts map[string]struct{} - ArgsEscaped bool - NetworkDisabled bool - MacAddress string - StopSignal string - Shell []string + AttachStderr bool `json:"AttachStderr,omitempty"` + AttachStdin bool `json:"AttachStdin,omitempty"` + AttachStdout bool `json:"AttachStdout,omitempty"` + Cmd []string `json:"Cmd,omitempty"` + Healthcheck *HealthConfig `json:"Healthcheck,omitempty"` + Domainname string `json:"Domainname,omitempty"` + Entrypoint []string `json:"Entrypoint,omitempty"` + Env []string `json:"Env,omitempty"` + Hostname string `json:"Hostname,omitempty"` + Image string `json:"Image,omitempty"` + Labels map[string]string `json:"Labels,omitempty"` + OnBuild []string `json:"OnBuild,omitempty"` + OpenStdin bool `json:"OpenStdin,omitempty"` + StdinOnce bool `json:"StdinOnce,omitempty"` + Tty bool `json:"Tty,omitempty"` + User string `json:"User,omitempty"` + Volumes map[string]struct{} `json:"Volumes,omitempty"` + WorkingDir string `json:"WorkingDir,omitempty"` + ExposedPorts map[string]struct{} `json:"ExposedPorts,omitempty"` + ArgsEscaped bool `json:"ArgsEscaped,omitempty"` + NetworkDisabled bool `json:"NetworkDisabled,omitempty"` + MacAddress string `json:"MacAddress,omitempty"` + StopSignal string `json:"StopSignal,omitempty"` + Shell []string `json:"Shell,omitempty"` } // ParseConfigFile parses the io.Reader's contents into a ConfigFile. diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/image.go index b7f5f3ef6c..f0b216d2ad 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/image.go @@ -29,9 +29,6 @@ import ( // image accesses an image from a docker daemon type image struct { v1.Image - - opener tarball.Opener - ref name.Reference } var _ v1.Image = (*image)(nil) @@ -73,7 +70,7 @@ type ImageSaver interface { // This is a variable so we can override in tests. var getImageSaver = func() (ImageSaver, error) { - cli, err := client.NewEnvClient() + cli, err := client.NewClientWithOpts(client.FromEnv) if err != nil { return nil, err } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/write.go b/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/write.go index 09e9bbdb56..f29dd73fd5 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/write.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/write.go @@ -16,6 +16,7 @@ package daemon import ( "context" + "fmt" "io" "io/ioutil" @@ -24,7 +25,6 @@ import ( "github.com/google/go-containerregistry/pkg/name" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/tarball" - "github.com/pkg/errors" ) // ImageLoader is an interface for testing. @@ -35,7 +35,7 @@ type ImageLoader interface { // GetImageLoader is a variable so we can override in tests. var GetImageLoader = func() (ImageLoader, error) { - cli, err := client.NewEnvClient() + cli, err := client.NewClientWithOpts(client.FromEnv) if err != nil { return nil, err } @@ -68,13 +68,13 @@ func Write(tag name.Tag, img v1.Image) (string, error) { // write the image in docker save format first, then load it resp, err := cli.ImageLoad(context.Background(), pr, false) if err != nil { - return "", errors.Wrapf(err, "error loading image") + return "", fmt.Errorf("error loading image: %v", err) } defer resp.Body.Close() b, readErr := ioutil.ReadAll(resp.Body) response := string(b) if readErr != nil { - return response, errors.Wrapf(err, "error reading load response body") + return response, fmt.Errorf("error reading load response body: %v", err) } return response, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/empty/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/empty/image.go index fa24748a83..c58a06ce02 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/empty/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/empty/image.go @@ -15,8 +15,38 @@ package empty import ( - "github.com/google/go-containerregistry/pkg/v1/random" + "fmt" + + v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/partial" + "github.com/google/go-containerregistry/pkg/v1/types" ) // Image is a singleton empty image, think: FROM scratch. -var Image, _ = random.Image(0, 0) +var Image, _ = partial.UncompressedToImage(emptyImage{}) + +type emptyImage struct{} + +// MediaType implements partial.UncompressedImageCore. +func (i emptyImage) MediaType() (types.MediaType, error) { + return types.DockerManifestSchema2, nil +} + +// RawConfigFile implements partial.UncompressedImageCore. +func (i emptyImage) RawConfigFile() ([]byte, error) { + return partial.RawConfigFile(i) +} + +// ConfigFile implements v1.Image. +func (i emptyImage) ConfigFile() (*v1.ConfigFile, error) { + return &v1.ConfigFile{ + RootFS: v1.RootFS{ + // Some clients check this. + Type: "layers", + }, + }, nil +} + +func (i emptyImage) LayerByDiffID(h v1.Hash) (partial.UncompressedLayer, error) { + return nil, fmt.Errorf("LayerByDiffID(%s): empty image", h) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/empty/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/empty/index.go index a03d758fd4..8edab24d4a 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/empty/index.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/empty/index.go @@ -36,18 +36,16 @@ func (i emptyIndex) Digest() (v1.Hash, error) { return partial.Digest(i) } +func (i emptyIndex) Size() (int64, error) { + return partial.Size(i) +} + func (i emptyIndex) IndexManifest() (*v1.IndexManifest, error) { - return &v1.IndexManifest{ - SchemaVersion: 2, - }, nil + return base(), nil } func (i emptyIndex) RawManifest() ([]byte, error) { - im, err := i.IndexManifest() - if err != nil { - return nil, err - } - return json.Marshal(im) + return json.Marshal(base()) } func (i emptyIndex) Image(v1.Hash) (v1.Image, error) { @@ -57,3 +55,9 @@ func (i emptyIndex) Image(v1.Hash) (v1.Image, error) { func (i emptyIndex) ImageIndex(v1.Hash) (v1.ImageIndex, error) { return nil, errors.New("empty index") } + +func base() *v1.IndexManifest { + return &v1.IndexManifest{ + SchemaVersion: 2, + } +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go b/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go index 40933030d3..7fdf22e9ee 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go @@ -62,6 +62,18 @@ func (h *Hash) UnmarshalJSON(data []byte) error { return h.parse(s) } +// MarshalText implements encoding.TextMarshaler. This is required to use +// v1.Hash as a key in a map when marshalling JSON. +func (h Hash) MarshalText() (text []byte, err error) { + return []byte(h.String()), nil +} + +// UnmarshalText implements encoding.TextUnmarshaler. This is required to use +// v1.Hash as a key in a map when unmarshalling JSON. +func (h *Hash) UnmarshalText(text []byte) error { + return h.parse(string(text)) +} + // Hasher returns a hash.Hash for the named algorithm (e.g. "sha256") func Hasher(name string) (hash.Hash, error) { switch name { diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/image.go index 9ef026799b..59651199c4 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/image.go @@ -28,6 +28,9 @@ type Image interface { // MediaType of this image's manifest. MediaType() (types.MediaType, error) + // Size returns the size of the manifest. + Size() (int64, error) + // ConfigName returns the hash of the image's config file. ConfigName() (Hash, error) diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/index.go index b4e84e02a5..d5007d2b75 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/index.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/index.go @@ -27,6 +27,9 @@ type ImageIndex interface { // Digest returns the sha256 of this index's manifest. Digest() (Hash, error) + // Size returns the size of the manifest. + Size() (int64, error) + // IndexManifest returns this image index's manifest object. IndexManifest() (*IndexManifest, error) diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/layout/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/layout/index.go index aba139d9dd..8ae3a7bb64 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/layout/index.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/layout/index.go @@ -28,8 +28,9 @@ import ( var _ v1.ImageIndex = (*layoutIndex)(nil) type layoutIndex struct { - path Path - rawIndex []byte + mediaType types.MediaType + path Path + rawIndex []byte } // ImageIndexFromPath is a convenience function which constructs a Path and returns its v1.ImageIndex. @@ -49,21 +50,26 @@ func (l Path) ImageIndex() (v1.ImageIndex, error) { } idx := &layoutIndex{ - path: l, - rawIndex: rawIndex, + mediaType: types.OCIImageIndex, + path: l, + rawIndex: rawIndex, } return idx, nil } func (i *layoutIndex) MediaType() (types.MediaType, error) { - return types.OCIImageIndex, nil + return i.mediaType, nil } func (i *layoutIndex) Digest() (v1.Hash, error) { return partial.Digest(i) } +func (i *layoutIndex) Size() (int64, error) { + return partial.Size(i) +} + func (i *layoutIndex) IndexManifest() (*v1.IndexManifest, error) { var index v1.IndexManifest err := json.Unmarshal(i.rawIndex, &index) @@ -109,8 +115,9 @@ func (i *layoutIndex) ImageIndex(h v1.Hash) (v1.ImageIndex, error) { } return &layoutIndex{ - path: i.path, - rawIndex: rawIndex, + mediaType: desc.MediaType, + path: i.path, + rawIndex: rawIndex, }, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/image.go new file mode 100644 index 0000000000..0f0f6c3c69 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/image.go @@ -0,0 +1,260 @@ +// Copyright 2019 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mutate + +import ( + "bytes" + "encoding/json" + "errors" + "strings" + + v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/partial" + "github.com/google/go-containerregistry/pkg/v1/stream" + "github.com/google/go-containerregistry/pkg/v1/types" +) + +type image struct { + base v1.Image + adds []Addendum + + computed bool + configFile *v1.ConfigFile + manifest *v1.Manifest + mediaType *types.MediaType + diffIDMap map[v1.Hash]v1.Layer + digestMap map[v1.Hash]v1.Layer +} + +var _ v1.Image = (*image)(nil) + +func (i *image) MediaType() (types.MediaType, error) { + if i.mediaType != nil { + return *i.mediaType, nil + } + return i.base.MediaType() +} + +func (i *image) compute() error { + // Don't re-compute if already computed. + if i.computed { + return nil + } + var configFile *v1.ConfigFile + if i.configFile != nil { + configFile = i.configFile + } else { + cf, err := i.base.ConfigFile() + if err != nil { + return err + } + configFile = cf.DeepCopy() + } + diffIDs := configFile.RootFS.DiffIDs + history := configFile.History + + diffIDMap := make(map[v1.Hash]v1.Layer) + digestMap := make(map[v1.Hash]v1.Layer) + + for _, add := range i.adds { + diffID, err := add.Layer.DiffID() + if err != nil { + return err + } + diffIDs = append(diffIDs, diffID) + history = append(history, add.History) + diffIDMap[diffID] = add.Layer + } + + m, err := i.base.Manifest() + if err != nil { + return err + } + manifest := m.DeepCopy() + manifestLayers := manifest.Layers + for _, add := range i.adds { + d := v1.Descriptor{} + var err error + + if d.Size, err = add.Layer.Size(); err != nil { + return err + } + + if d.Digest, err = add.Layer.Digest(); err != nil { + return err + } + + if d.MediaType, err = add.Layer.MediaType(); err != nil { + return err + } + + d.Annotations = add.Annotations + d.URLs = add.URLs + + manifestLayers = append(manifestLayers, d) + digestMap[d.Digest] = add.Layer + } + + configFile.RootFS.DiffIDs = diffIDs + configFile.History = history + + manifest.Layers = manifestLayers + + rcfg, err := json.Marshal(configFile) + if err != nil { + return err + } + d, sz, err := v1.SHA256(bytes.NewBuffer(rcfg)) + if err != nil { + return err + } + manifest.Config.Digest = d + manifest.Config.Size = sz + + // With OCI media types, this should not be set, see discussion: + // https://github.com/opencontainers/image-spec/pull/795 + if i.mediaType != nil && strings.Contains(string(*i.mediaType), types.OCIVendorPrefix) { + manifest.MediaType = "" + } + + i.configFile = configFile + i.manifest = manifest + i.diffIDMap = diffIDMap + i.digestMap = digestMap + i.computed = true + return nil +} + +// Layers returns the ordered collection of filesystem layers that comprise this image. +// The order of the list is oldest/base layer first, and most-recent/top layer last. +func (i *image) Layers() ([]v1.Layer, error) { + if err := i.compute(); err == stream.ErrNotComputed { + // Image contains a streamable layer which has not yet been + // consumed. Just return the layers we have in case the caller + // is going to consume the layers. + layers, err := i.base.Layers() + if err != nil { + return nil, err + } + for _, add := range i.adds { + layers = append(layers, add.Layer) + } + return layers, nil + } else if err != nil { + return nil, err + } + + diffIDs, err := partial.DiffIDs(i) + if err != nil { + return nil, err + } + ls := make([]v1.Layer, 0, len(diffIDs)) + for _, h := range diffIDs { + l, err := i.LayerByDiffID(h) + if err != nil { + return nil, err + } + ls = append(ls, l) + } + return ls, nil +} + +// ConfigName returns the hash of the image's config file. +func (i *image) ConfigName() (v1.Hash, error) { + if err := i.compute(); err != nil { + return v1.Hash{}, err + } + return partial.ConfigName(i) +} + +// ConfigFile returns this image's config file. +func (i *image) ConfigFile() (*v1.ConfigFile, error) { + if err := i.compute(); err != nil { + return nil, err + } + return i.configFile, nil +} + +// RawConfigFile returns the serialized bytes of ConfigFile() +func (i *image) RawConfigFile() ([]byte, error) { + if err := i.compute(); err != nil { + return nil, err + } + return json.Marshal(i.configFile) +} + +// Digest returns the sha256 of this image's manifest. +func (i *image) Digest() (v1.Hash, error) { + if err := i.compute(); err != nil { + return v1.Hash{}, err + } + return partial.Digest(i) +} + +// Size implements v1.Image. +func (i *image) Size() (int64, error) { + if err := i.compute(); err != nil { + return -1, err + } + return partial.Size(i) +} + +// Manifest returns this image's Manifest object. +func (i *image) Manifest() (*v1.Manifest, error) { + if err := i.compute(); err != nil { + return nil, err + } + return i.manifest, nil +} + +// RawManifest returns the serialized bytes of Manifest() +func (i *image) RawManifest() ([]byte, error) { + if err := i.compute(); err != nil { + return nil, err + } + return json.Marshal(i.manifest) +} + +// LayerByDigest returns a Layer for interacting with a particular layer of +// the image, looking it up by "digest" (the compressed hash). +func (i *image) LayerByDigest(h v1.Hash) (v1.Layer, error) { + if cn, err := i.ConfigName(); err != nil { + return nil, err + } else if h == cn { + return partial.ConfigLayer(i) + } + if layer, ok := i.digestMap[h]; ok { + return layer, nil + } + return i.base.LayerByDigest(h) +} + +// LayerByDiffID is an analog to LayerByDigest, looking up by "diff id" +// (the uncompressed hash). +func (i *image) LayerByDiffID(h v1.Hash) (v1.Layer, error) { + if layer, ok := i.diffIDMap[h]; ok { + return layer, nil + } + return i.base.LayerByDiffID(h) +} + +func validate(adds []Addendum) error { + for _, add := range adds { + if add.Layer == nil { + return errors.New("unable to add a nil layer to the image") + } + } + return nil +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/index.go new file mode 100644 index 0000000000..21ccf50c26 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/index.go @@ -0,0 +1,155 @@ +// Copyright 2019 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package mutate + +import ( + "encoding/json" + "strings" + + "github.com/google/go-containerregistry/pkg/logs" + v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/partial" + "github.com/google/go-containerregistry/pkg/v1/types" +) + +func computeDescriptor(desc v1.Descriptor, add Appendable) (*v1.Descriptor, error) { + d, err := add.Digest() + if err != nil { + return nil, err + } + mt, err := add.MediaType() + if err != nil { + return nil, err + } + sz, err := add.Size() + if err != nil { + return nil, err + } + + // The IndexAddendum allows overriding These values. + if desc.Size == 0 { + desc.Size = sz + } + if string(desc.MediaType) == "" { + desc.MediaType = mt + } + if desc.Digest == (v1.Hash{}) { + desc.Digest = d + } + return &desc, nil +} + +type index struct { + base v1.ImageIndex + adds []IndexAddendum + + computed bool + manifest *v1.IndexManifest + mediaType *types.MediaType + imageMap map[v1.Hash]v1.Image + indexMap map[v1.Hash]v1.ImageIndex +} + +var _ v1.ImageIndex = (*index)(nil) + +func (i *index) MediaType() (types.MediaType, error) { + if i.mediaType != nil { + return *i.mediaType, nil + } + return i.base.MediaType() +} + +func (i *index) Size() (int64, error) { return partial.Size(i) } + +func (i *index) compute() error { + // Don't re-compute if already computed. + if i.computed { + return nil + } + + i.imageMap = make(map[v1.Hash]v1.Image) + i.indexMap = make(map[v1.Hash]v1.ImageIndex) + + m, err := i.base.IndexManifest() + if err != nil { + return err + } + manifest := m.DeepCopy() + manifests := manifest.Manifests + for _, add := range i.adds { + desc, err := computeDescriptor(add.Descriptor, add.Add) + if err != nil { + return err + } + + manifests = append(manifests, *desc) + if idx, ok := add.Add.(v1.ImageIndex); ok { + i.indexMap[desc.Digest] = idx + } else if img, ok := add.Add.(v1.Image); ok { + i.imageMap[desc.Digest] = img + } else { + logs.Warn.Printf("Unexpected index addendum: %T", add.Add) + } + } + manifest.Manifests = manifests + + // With OCI media types, this should not be set, see discussion: + // https://github.com/opencontainers/image-spec/pull/795 + if i.mediaType != nil && strings.Contains(string(*i.mediaType), types.OCIVendorPrefix) { + manifest.MediaType = "" + } + + i.manifest = manifest + i.computed = true + return nil +} + +func (i *index) Image(h v1.Hash) (v1.Image, error) { + if img, ok := i.imageMap[h]; ok { + return img, nil + } + return i.base.Image(h) +} + +func (i *index) ImageIndex(h v1.Hash) (v1.ImageIndex, error) { + if idx, ok := i.indexMap[h]; ok { + return idx, nil + } + return i.base.ImageIndex(h) +} + +// Digest returns the sha256 of this image's manifest. +func (i *index) Digest() (v1.Hash, error) { + if err := i.compute(); err != nil { + return v1.Hash{}, err + } + return partial.Digest(i) +} + +// Manifest returns this image's Manifest object. +func (i *index) IndexManifest() (*v1.IndexManifest, error) { + if err := i.compute(); err != nil { + return nil, err + } + return i.manifest, nil +} + +// RawManifest returns the serialized bytes of Manifest() +func (i *index) RawManifest() ([]byte, error) { + if err := i.compute(); err != nil { + return nil, err + } + return json.Marshal(i.manifest) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go index eafd599b9f..97044da436 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go @@ -17,8 +17,6 @@ package mutate import ( "archive/tar" "bytes" - "encoding/json" - "errors" "fmt" "io" "io/ioutil" @@ -28,8 +26,6 @@ import ( v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/empty" - "github.com/google/go-containerregistry/pkg/v1/partial" - "github.com/google/go-containerregistry/pkg/v1/stream" "github.com/google/go-containerregistry/pkg/v1/tarball" "github.com/google/go-containerregistry/pkg/v1/types" "github.com/google/go-containerregistry/pkg/v1/v1util" @@ -40,11 +36,13 @@ const whiteoutPrefix = ".wh." // Addendum contains layers and history to be appended // to a base image type Addendum struct { - Layer v1.Layer - History v1.History + Layer v1.Layer + History v1.History + URLs []string + Annotations map[string]string } -// AppendLayers applies layers to a base image +// AppendLayers applies layers to a base image. func AppendLayers(base v1.Image, layers ...v1.Layer) (v1.Image, error) { additions := make([]Addendum, 0, len(layers)) for _, layer := range layers { @@ -69,6 +67,30 @@ func Append(base v1.Image, adds ...Addendum) (v1.Image, error) { }, nil } +// Appendable is an interface that represents something that can be appended +// to an ImageIndex. We need to be able to construct a v1.Descriptor in order +// to append something, and this is the minimum required information for that. +type Appendable interface { + MediaType() (types.MediaType, error) + Digest() (v1.Hash, error) + Size() (int64, error) +} + +// IndexAddendum represents an appendable thing and all the properties that +// we may want to override in the resulting v1.Descriptor. +type IndexAddendum struct { + Add Appendable + v1.Descriptor +} + +// AppendManifests appends a manifest to the ImageIndex. +func AppendManifests(base v1.ImageIndex, adds ...IndexAddendum) v1.ImageIndex { + return &index{ + base: base, + adds: adds, + } +} + // Config mutates the provided v1.Image to have the provided v1.Config func Config(base v1.Image, cfg v1.Config) (v1.Image, error) { cf, err := base.ConfigFile() @@ -77,8 +99,6 @@ func Config(base v1.Image, cfg v1.Config) (v1.Image, error) { } cf.Config = cfg - // Downstream tooling expects these to match. - cf.ContainerConfig = cfg return ConfigFile(base, cf) } @@ -112,216 +132,6 @@ func CreatedAt(base v1.Image, created v1.Time) (v1.Image, error) { return ConfigFile(base, cfg) } -type image struct { - base v1.Image - adds []Addendum - - computed bool - configFile *v1.ConfigFile - manifest *v1.Manifest - diffIDMap map[v1.Hash]v1.Layer - digestMap map[v1.Hash]v1.Layer -} - -var _ v1.Image = (*image)(nil) - -func (i *image) MediaType() (types.MediaType, error) { return i.base.MediaType() } - -func (i *image) compute() error { - // Don't re-compute if already computed. - if i.computed { - return nil - } - var configFile *v1.ConfigFile - if i.configFile != nil { - configFile = i.configFile - } else { - cf, err := i.base.ConfigFile() - if err != nil { - return err - } - configFile = cf.DeepCopy() - } - diffIDs := configFile.RootFS.DiffIDs - history := configFile.History - - diffIDMap := make(map[v1.Hash]v1.Layer) - digestMap := make(map[v1.Hash]v1.Layer) - - for _, add := range i.adds { - diffID, err := add.Layer.DiffID() - if err != nil { - return err - } - diffIDs = append(diffIDs, diffID) - history = append(history, add.History) - diffIDMap[diffID] = add.Layer - } - - m, err := i.base.Manifest() - if err != nil { - return err - } - manifest := m.DeepCopy() - manifestLayers := manifest.Layers - for _, add := range i.adds { - d := v1.Descriptor{} - var err error - - if d.Size, err = add.Layer.Size(); err != nil { - return err - } - - if d.Digest, err = add.Layer.Digest(); err != nil { - return err - } - - if d.MediaType, err = add.Layer.MediaType(); err != nil { - return err - } - - manifestLayers = append(manifestLayers, d) - digestMap[d.Digest] = add.Layer - } - - configFile.RootFS.DiffIDs = diffIDs - configFile.History = history - - manifest.Layers = manifestLayers - - rcfg, err := json.Marshal(configFile) - if err != nil { - return err - } - d, sz, err := v1.SHA256(bytes.NewBuffer(rcfg)) - if err != nil { - return err - } - manifest.Config.Digest = d - manifest.Config.Size = sz - - i.configFile = configFile - i.manifest = manifest - i.diffIDMap = diffIDMap - i.digestMap = digestMap - i.computed = true - return nil -} - -// Layers returns the ordered collection of filesystem layers that comprise this image. -// The order of the list is oldest/base layer first, and most-recent/top layer last. -func (i *image) Layers() ([]v1.Layer, error) { - if err := i.compute(); err == stream.ErrNotComputed { - // Image contains a streamable layer which has not yet been - // consumed. Just return the layers we have in case the caller - // is going to consume the layers. - layers, err := i.base.Layers() - if err != nil { - return nil, err - } - for _, add := range i.adds { - layers = append(layers, add.Layer) - } - return layers, nil - } else if err != nil { - return nil, err - } - - diffIDs, err := partial.DiffIDs(i) - if err != nil { - return nil, err - } - ls := make([]v1.Layer, 0, len(diffIDs)) - for _, h := range diffIDs { - l, err := i.LayerByDiffID(h) - if err != nil { - return nil, err - } - ls = append(ls, l) - } - return ls, nil -} - -// ConfigName returns the hash of the image's config file. -func (i *image) ConfigName() (v1.Hash, error) { - if err := i.compute(); err != nil { - return v1.Hash{}, err - } - return partial.ConfigName(i) -} - -// ConfigFile returns this image's config file. -func (i *image) ConfigFile() (*v1.ConfigFile, error) { - if err := i.compute(); err != nil { - return nil, err - } - return i.configFile, nil -} - -// RawConfigFile returns the serialized bytes of ConfigFile() -func (i *image) RawConfigFile() ([]byte, error) { - if err := i.compute(); err != nil { - return nil, err - } - return json.Marshal(i.configFile) -} - -// Digest returns the sha256 of this image's manifest. -func (i *image) Digest() (v1.Hash, error) { - if err := i.compute(); err != nil { - return v1.Hash{}, err - } - return partial.Digest(i) -} - -// Manifest returns this image's Manifest object. -func (i *image) Manifest() (*v1.Manifest, error) { - if err := i.compute(); err != nil { - return nil, err - } - return i.manifest, nil -} - -// RawManifest returns the serialized bytes of Manifest() -func (i *image) RawManifest() ([]byte, error) { - if err := i.compute(); err != nil { - return nil, err - } - return json.Marshal(i.manifest) -} - -// LayerByDigest returns a Layer for interacting with a particular layer of -// the image, looking it up by "digest" (the compressed hash). -func (i *image) LayerByDigest(h v1.Hash) (v1.Layer, error) { - if cn, err := i.ConfigName(); err != nil { - return nil, err - } else if h == cn { - return partial.ConfigLayer(i) - } - if layer, ok := i.digestMap[h]; ok { - return layer, nil - } - return i.base.LayerByDigest(h) -} - -// LayerByDiffID is an analog to LayerByDigest, looking up by "diff id" -// (the uncompressed hash). -func (i *image) LayerByDiffID(h v1.Hash) (v1.Layer, error) { - if layer, ok := i.diffIDMap[h]; ok { - return layer, nil - } - return i.base.LayerByDiffID(h) -} - -func validate(adds []Addendum) error { - for _, add := range adds { - if add.Layer == nil { - return errors.New("Unable to add a nil layer to the image") - } - } - return nil -} - // Extract takes an image and returns an io.ReadCloser containing the image's // flattened filesystem. // @@ -439,8 +249,7 @@ func Time(img v1.Image, t time.Time) (v1.Image, error) { layers, err := img.Layers() if err != nil { - - return nil, fmt.Errorf("Error getting image layers: %v", err) + return nil, fmt.Errorf("getting image layers: %v", err) } // Strip away all timestamps from layers @@ -448,31 +257,30 @@ func Time(img v1.Image, t time.Time) (v1.Image, error) { for _, layer := range layers { newLayer, err := layerTime(layer, t) if err != nil { - return nil, fmt.Errorf("Error setting layer times: %v", err) + return nil, fmt.Errorf("setting layer times: %v", err) } newLayers = append(newLayers, newLayer) } newImage, err = AppendLayers(newImage, newLayers...) if err != nil { - return nil, fmt.Errorf("Error appending layers: %v", err) + return nil, fmt.Errorf("appending layers: %v", err) } ocf, err := img.ConfigFile() if err != nil { - return nil, fmt.Errorf("Error getting original config file: %v", err) + return nil, fmt.Errorf("getting original config file: %v", err) } cf, err := newImage.ConfigFile() if err != nil { - return nil, fmt.Errorf("Error setting config file: %v", err) + return nil, fmt.Errorf("setting config file: %v", err) } cfg := cf.DeepCopy() // Copy basic config over cfg.Config = ocf.Config - cfg.ContainerConfig = ocf.Config // Downstream tooling expects these to match. // Strip away timestamps from the config file cfg.Created = v1.Time{Time: t} @@ -487,7 +295,7 @@ func Time(img v1.Image, t time.Time) (v1.Image, error) { func layerTime(layer v1.Layer, t time.Time) (v1.Layer, error) { layerReader, err := layer.Uncompressed() if err != nil { - return nil, fmt.Errorf("Error getting layer: %v", err) + return nil, fmt.Errorf("getting layer: %v", err) } w := new(bytes.Buffer) tarWriter := tar.NewWriter(w) @@ -500,17 +308,17 @@ func layerTime(layer v1.Layer, t time.Time) (v1.Layer, error) { break } if err != nil { - return nil, fmt.Errorf("Error reading layer: %v", err) + return nil, fmt.Errorf("reading layer: %v", err) } header.ModTime = t if err := tarWriter.WriteHeader(header); err != nil { - return nil, fmt.Errorf("Error writing tar header: %v", err) + return nil, fmt.Errorf("writing tar header: %v", err) } if header.Typeflag == tar.TypeReg { if _, err = io.Copy(tarWriter, tarReader); err != nil { - return nil, fmt.Errorf("Error writing layer file: %v", err) + return nil, fmt.Errorf("writing layer file: %v", err) } } } @@ -522,16 +330,11 @@ func layerTime(layer v1.Layer, t time.Time) (v1.Layer, error) { b := w.Bytes() // gzip the contents, then create the layer opener := func() (io.ReadCloser, error) { - g, err := v1util.GzipReadCloser(ioutil.NopCloser(bytes.NewReader(b))) - if err != nil { - return nil, fmt.Errorf("Error compressing layer: %v", err) - } - - return g, nil + return v1util.GzipReadCloser(ioutil.NopCloser(bytes.NewReader(b))), nil } layer, err = tarball.LayerFromOpener(opener) if err != nil { - return nil, fmt.Errorf("Error creating layer: %v", err) + return nil, fmt.Errorf("creating layer: %v", err) } return layer, nil @@ -557,8 +360,23 @@ func Canonical(img v1.Image) (v1.Image, error) { cfg.Container = "" cfg.Config.Hostname = "" - cfg.ContainerConfig.Hostname = "" cfg.DockerVersion = "" return ConfigFile(img, cfg) } + +// MediaType modifies the MediaType() of the given image. +func MediaType(img v1.Image, mt types.MediaType) v1.Image { + return &image{ + base: img, + mediaType: &mt, + } +} + +// IndexMediaType modifies the MediaType() of the given index. +func IndexMediaType(idx v1.ImageIndex, mt types.MediaType) v1.ImageIndex { + return &index{ + base: idx, + mediaType: &mt, + } +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/compressed.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/compressed.go index 1c631b7aa5..c63e8a1ff9 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/compressed.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/compressed.go @@ -150,6 +150,11 @@ func (i *compressedImageExtender) Manifest() (*v1.Manifest, error) { return Manifest(i) } +// Size implements v1.Image +func (i *compressedImageExtender) Size() (int64, error) { + return Size(i) +} + // CompressedToImage fills in the missing methods from a CompressedImageCore so that it implements v1.Image func CompressedToImage(cic CompressedImageCore) (v1.Image, error) { return &compressedImageExtender{ diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/uncompressed.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/uncompressed.go index 07658be425..ab82b28e13 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/uncompressed.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/uncompressed.go @@ -54,7 +54,7 @@ func (ule *uncompressedLayerExtender) Compressed() (io.ReadCloser, error) { if err != nil { return nil, err } - return v1util.GzipReadCloser(u) + return v1util.GzipReadCloser(u), nil } // Digest implements v1.Layer @@ -81,6 +81,30 @@ func (ule *uncompressedLayerExtender) calcSizeHash() { }) } +// Descriptor returns the layer manifest descriptor for this uncompressed layer. +// The embedded UncompressedLayer is checked to see if it has a Descriptor +// function which is returned if it exists. The underlying descriptor provides +// foreign layer data like URLs. Otherwise, a new descriptor is +// generated. +func (ule *uncompressedLayerExtender) Descriptor() (*v1.Descriptor, error) { + if withDesc, ok := ule.UncompressedLayer.(withDescriptor); ok { + return withDesc.Descriptor() + } + ule.calcSizeHash() + if ule.hashSizeError != nil { + return nil, ule.hashSizeError + } + mt, err := ule.MediaType() + if err != nil { + return nil, err + } + return &v1.Descriptor{ + MediaType: mt, + Size: ule.size, + Digest: ule.hash, + }, nil +} + // UncompressedToLayer fills in the missing methods from an UncompressedLayer so that it implements v1.Layer func UncompressedToLayer(ul UncompressedLayer) (v1.Layer, error) { return &uncompressedLayerExtender{UncompressedLayer: ul}, nil @@ -155,6 +179,15 @@ func (i *uncompressedImageExtender) Manifest() (*v1.Manifest, error) { m.Layers = make([]v1.Descriptor, len(ls)) for i, l := range ls { + // Check if the layer implementation provides the descriptor directly. + if withDesc, ok := l.(withDescriptor); ok { + desc, err := withDesc.Descriptor() + if err != nil { + return nil, err + } + m.Layers[i] = *desc + continue + } sz, err := l.Size() if err != nil { return nil, err @@ -180,6 +213,11 @@ func (i *uncompressedImageExtender) RawManifest() ([]byte, error) { return RawManifest(i) } +// Size implements v1.Image +func (i *uncompressedImageExtender) Size() (int64, error) { + return Size(i) +} + // ConfigName implements v1.Image func (i *uncompressedImageExtender) ConfigName() (v1.Hash, error) { return ConfigName(i) diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go index 9926720483..8e7bcb0829 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go @@ -23,7 +23,6 @@ import ( v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/types" - "github.com/google/go-containerregistry/pkg/v1/v1util" ) // WithRawConfigFile defines the subset of v1.Image used by these helper methods @@ -136,15 +135,6 @@ type WithUncompressedLayer interface { UncompressedLayer(v1.Hash) (io.ReadCloser, error) } -// Layer is the same as Blob, but takes the "diff id". -func Layer(wul WithUncompressedLayer, h v1.Hash) (io.ReadCloser, error) { - rc, err := wul.UncompressedLayer(h) - if err != nil { - return nil, err - } - return v1util.GzipReadCloser(rc) -} - // WithRawManifest defines the subset of v1.Image used by these helper methods type WithRawManifest interface { // RawManifest returns the serialized bytes of this image's config file. @@ -185,6 +175,15 @@ func RawManifest(i WithManifest) ([]byte, error) { return json.Marshal(m) } +// Size is a helper for implementing v1.Image +func Size(i WithRawManifest) (int64, error) { + b, err := i.RawManifest() + if err != nil { + return -1, err + } + return int64(len(b)), nil +} + // FSLayers is a helper for implementing v1.Image func FSLayers(i WithManifest) ([]v1.Hash, error) { m, err := i.Manifest() @@ -200,16 +199,30 @@ func FSLayers(i WithManifest) ([]v1.Hash, error) { // BlobSize is a helper for implementing v1.Image func BlobSize(i WithManifest, h v1.Hash) (int64, error) { - m, err := i.Manifest() + d, err := BlobDescriptor(i, h) if err != nil { return -1, err } + return d.Size, nil +} + +// BlobDescriptor is a helper for implementing v1.Image +func BlobDescriptor(i WithManifest, h v1.Hash) (v1.Descriptor, error) { + m, err := i.Manifest() + if err != nil { + return v1.Descriptor{}, err + } + + if m.Config.Digest == h { + return m.Config, nil + } + for _, l := range m.Layers { if l.Digest == h { - return l.Size, nil + return l, nil } } - return -1, fmt.Errorf("blob %v not found", h) + return v1.Descriptor{}, fmt.Errorf("blob %v not found", h) } // WithManifestAndConfigFile defines the subset of v1.Image used by these helper methods @@ -262,25 +275,17 @@ func DiffIDToBlob(wm WithManifestAndConfigFile, h v1.Hash) (v1.Hash, error) { } } return v1.Hash{}, fmt.Errorf("unknown diffID %v", h) - -} - -// WithBlob defines the subset of v1.Image used by these helper methods -type WithBlob interface { - // Blob returns a ReadCloser for streaming the blob's content. - Blob(v1.Hash) (io.ReadCloser, error) -} - -// UncompressedBlob returns a ReadCloser for streaming the blob's content uncompressed. -func UncompressedBlob(b WithBlob, h v1.Hash) (io.ReadCloser, error) { - rc, err := b.Blob(h) - if err != nil { - return nil, err - } - return v1util.GunzipReadCloser(rc) } // WithDiffID defines the subset of v1.Layer for exposing the DiffID method. type WithDiffID interface { DiffID() (v1.Hash, error) } + +// withDescriptor allows partial layer implementations to provide a layer +// descriptor to the partial image manifest builder. This allows partial +// uncompressed layers to provide foreign layer metadata like URLs to the +// uncompressed image manifest. +type withDescriptor interface { + Descriptor() (*v1.Descriptor, error) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go index e09984cbfb..14cc43819d 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go @@ -18,21 +18,26 @@ import ( "archive/tar" "bytes" "crypto/rand" + "crypto/sha256" + "encoding/hex" "fmt" "io" "io/ioutil" + mrand "math/rand" "time" v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/empty" + "github.com/google/go-containerregistry/pkg/v1/mutate" "github.com/google/go-containerregistry/pkg/v1/partial" "github.com/google/go-containerregistry/pkg/v1/types" ) // uncompressedLayer implements partial.UncompressedLayer from raw bytes. -// TODO(mattmoor): Consider moving this into a library. type uncompressedLayer struct { - diffID v1.Hash - content []byte + diffID v1.Hash + mediaType types.MediaType + content []byte } // DiffID implements partial.UncompressedLayer @@ -47,97 +52,66 @@ func (ul *uncompressedLayer) Uncompressed() (io.ReadCloser, error) { // MediaType returns the media type of the layer func (ul *uncompressedLayer) MediaType() (types.MediaType, error) { - // Technically the media type should be 'application/tar' but given that our - // v1.Layer doesn't force consumers to care about whether the layer is compressed - // we should be fine returning the DockerLayer media type - return types.DockerLayer, nil + return ul.mediaType, nil } var _ partial.UncompressedLayer = (*uncompressedLayer)(nil) // Image returns a pseudo-randomly generated Image. func Image(byteSize, layers int64) (v1.Image, error) { - layerz := make(map[v1.Hash]partial.UncompressedLayer) + adds := make([]mutate.Addendum, 0, 5) for i := int64(0); i < layers; i++ { - var b bytes.Buffer - tw := tar.NewWriter(&b) - if err := tw.WriteHeader(&tar.Header{ - Name: fmt.Sprintf("random_file_%d.txt", i), - Size: byteSize, - Typeflag: tar.TypeRegA, - }); err != nil { - return nil, err - } - if _, err := io.CopyN(tw, rand.Reader, byteSize); err != nil { - return nil, err - } - if err := tw.Close(); err != nil { - return nil, err - } - bts := b.Bytes() - h, _, err := v1.SHA256(bytes.NewReader(bts)) + layer, err := Layer(byteSize, types.DockerLayer) if err != nil { return nil, err } - layerz[h] = &uncompressedLayer{ - diffID: h, - content: bts, - } + adds = append(adds, mutate.Addendum{ + Layer: layer, + History: v1.History{ + Author: "random.Image", + Comment: fmt.Sprintf("this is a random history %d", i), + CreatedBy: "random", + Created: v1.Time{time.Now()}, + }, + }) } - cfg := &v1.ConfigFile{} - - // Some clients check this. - cfg.RootFS.Type = "layers" + return mutate.Append(empty.Image, adds...) +} - // It is ok that iteration order is random in Go, because this is the random image anyways. - for k := range layerz { - cfg.RootFS.DiffIDs = append(cfg.RootFS.DiffIDs, k) +// Layer returns a layer with pseudo-randomly generated content. +func Layer(byteSize int64, mt types.MediaType) (v1.Layer, error) { + fileName := fmt.Sprintf("random_file_%d.txt", mrand.Int()) + + // Hash the contents as we write it out to the buffer. + var b bytes.Buffer + hasher := sha256.New() + mw := io.MultiWriter(&b, hasher) + + // Write a single file with a random name and random contents. + tw := tar.NewWriter(mw) + if err := tw.WriteHeader(&tar.Header{ + Name: fileName, + Size: byteSize, + Typeflag: tar.TypeRegA, + }); err != nil { + return nil, err + } + if _, err := io.CopyN(tw, rand.Reader, byteSize); err != nil { + return nil, err + } + if err := tw.Close(); err != nil { + return nil, err } - for i := int64(0); i < layers; i++ { - cfg.History = append(cfg.History, v1.History{ - Author: "random.Image", - Comment: fmt.Sprintf("this is a random history %d", i), - CreatedBy: "random", - Created: v1.Time{time.Now()}, - }) + h := v1.Hash{ + Algorithm: "sha256", + Hex: hex.EncodeToString(hasher.Sum(make([]byte, 0, hasher.Size()))), } - return partial.UncompressedToImage(&image{ - config: cfg, - layers: layerz, + return partial.UncompressedToLayer(&uncompressedLayer{ + diffID: h, + mediaType: mt, + content: b.Bytes(), }) } - -// image is pseudo-randomly generated. -type image struct { - config *v1.ConfigFile - layers map[v1.Hash]partial.UncompressedLayer -} - -var _ partial.UncompressedImageCore = (*image)(nil) - -// RawConfigFile implements partial.UncompressedImageCore -func (i *image) RawConfigFile() ([]byte, error) { - return partial.RawConfigFile(i) -} - -// ConfigFile implements v1.Image -func (i *image) ConfigFile() (*v1.ConfigFile, error) { - return i.config, nil -} - -// MediaType implements partial.UncompressedImageCore -func (i *image) MediaType() (types.MediaType, error) { - return types.DockerManifestSchema2, nil -} - -// LayerByDiffID implements partial.UncompressedImageCore -func (i *image) LayerByDiffID(diffID v1.Hash) (partial.UncompressedLayer, error) { - l, ok := i.layers[diffID] - if !ok { - return nil, fmt.Errorf("unknown diff_id: %v", diffID) - } - return l, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/random/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/random/index.go index b6dacec5ac..fb992211a5 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/random/index.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/random/index.go @@ -80,6 +80,10 @@ func (i *randomIndex) Digest() (v1.Hash, error) { return partial.Digest(i) } +func (i *randomIndex) Size() (int64, error) { + return partial.Size(i) +} + func (i *randomIndex) IndexManifest() (*v1.IndexManifest, error) { return i.manifest, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/catalog.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/catalog.go new file mode 100644 index 0000000000..0923a9defb --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/catalog.go @@ -0,0 +1,142 @@ +// Copyright 2019 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package remote + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "net/url" + + "github.com/google/go-containerregistry/pkg/name" + "github.com/google/go-containerregistry/pkg/v1/remote/transport" +) + +type catalog struct { + Repos []string `json:"repositories"` +} + +// CatalogPage calls /_catalog, returning the list of repositories on the registry. +func CatalogPage(target name.Registry, last string, n int, options ...Option) ([]string, error) { + o, err := makeOptions(target, options...) + if err != nil { + return nil, err + } + + scopes := []string{target.Scope(transport.PullScope)} + tr, err := transport.New(target, o.auth, o.transport, scopes) + if err != nil { + return nil, err + } + + query := fmt.Sprintf("last=%s&n=%d", url.QueryEscape(last), n) + + uri := url.URL{ + Scheme: target.Scheme(), + Host: target.RegistryStr(), + Path: "/v2/_catalog", + RawQuery: query, + } + + client := http.Client{Transport: tr} + resp, err := client.Get(uri.String()) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if err := transport.CheckError(resp, http.StatusOK); err != nil { + return nil, err + } + + var parsed catalog + if err := json.NewDecoder(resp.Body).Decode(&parsed); err != nil { + return nil, err + } + + return parsed.Repos, nil +} + +// Catalog calls /_catalog, returning the list of repositories on the registry. +func Catalog(ctx context.Context, target name.Registry, options ...Option) ([]string, error) { + o, err := makeOptions(target, options...) + if err != nil { + return nil, err + } + + scopes := []string{target.Scope(transport.PullScope)} + tr, err := transport.New(target, o.auth, o.transport, scopes) + if err != nil { + return nil, err + } + + uri := &url.URL{ + Scheme: target.Scheme(), + Host: target.RegistryStr(), + Path: "/v2/_catalog", + RawQuery: "n=10000", + } + + client := http.Client{Transport: tr} + + var ( + parsed catalog + repoList []string + ) + + // get responses until there is no next page + for { + select { + case <-ctx.Done(): + return nil, ctx.Err() + default: + } + + req, err := http.NewRequest("GET", uri.String(), nil) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + + resp, err := client.Do(req) + if err != nil { + return nil, err + } + + if err := transport.CheckError(resp, http.StatusOK); err != nil { + return nil, err + } + + if err := json.NewDecoder(resp.Body).Decode(&parsed); err != nil { + return nil, err + } + if err := resp.Body.Close(); err != nil { + return nil, err + } + + repoList = append(repoList, parsed.Repos...) + + uri, err = getNextPageURL(resp) + if err != nil { + return nil, err + } + // no next page + if uri == nil { + break + } + } + return repoList, nil +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go index c034435f90..215c8f17f3 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go @@ -16,7 +16,6 @@ package remote import ( "fmt" - "io/ioutil" "net/http" "net/url" @@ -26,7 +25,7 @@ import ( // Delete removes the specified image reference from the remote registry. func Delete(ref name.Reference, options ...Option) error { - o, err := makeOptions(ref.Context().Registry, options...) + o, err := makeOptions(ref.Context(), options...) if err != nil { return err } @@ -54,14 +53,5 @@ func Delete(ref name.Reference, options ...Option) error { } defer resp.Body.Close() - switch resp.StatusCode { - case http.StatusOK, http.StatusAccepted: - return nil - default: - b, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - return fmt.Errorf("unrecognized status code during DELETE: %v; %v", resp.Status, string(b)) - } + return transport.CheckError(resp, http.StatusOK, http.StatusAccepted) } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/descriptor.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/descriptor.go index 6c3620740d..36ee6778e3 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/descriptor.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/descriptor.go @@ -17,16 +17,19 @@ package remote import ( "bytes" "fmt" + "io" "io/ioutil" "net/http" "net/url" "strings" + "github.com/google/go-containerregistry/pkg/logs" "github.com/google/go-containerregistry/pkg/name" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/partial" "github.com/google/go-containerregistry/pkg/v1/remote/transport" "github.com/google/go-containerregistry/pkg/v1/types" + "github.com/google/go-containerregistry/pkg/v1/v1util" ) var defaultPlatform = v1.Platform{ @@ -41,7 +44,8 @@ type ErrSchema1 struct { schema string } -func NewErrSchema1(schema types.MediaType) error { +// newErrSchema1 returns an ErrSchema1 with the unexpected MediaType. +func newErrSchema1(schema types.MediaType) error { return &ErrSchema1{ schema: string(schema), } @@ -63,6 +67,11 @@ type Descriptor struct { platform v1.Platform } +// RawManifest exists to satisfy the Taggable interface. +func (d *Descriptor) RawManifest() ([]byte, error) { + return d.Manifest, nil +} + // Get returns a remote.Descriptor for the given reference. The response from // the registry is left un-interpreted, for the most part. This is useful for // querying what kind of artifact a reference represents. @@ -82,28 +91,20 @@ func Get(ref name.Reference, options ...Option) (*Descriptor, error) { // Handle options and fetch the manifest with the acceptable MediaTypes in the // Accept header. func get(ref name.Reference, acceptable []types.MediaType, options ...Option) (*Descriptor, error) { - o, err := makeOptions(ref.Context().Registry, options...) + o, err := makeOptions(ref.Context(), options...) if err != nil { return nil, err } - - tr, err := transport.New(ref.Context().Registry, o.auth, o.transport, []string{ref.Scope(transport.PullScope)}) + f, err := makeFetcher(ref, o) if err != nil { return nil, err } - - f := fetcher{ - Ref: ref, - Client: &http.Client{Transport: tr}, - } - b, desc, err := f.fetchManifest(ref, acceptable) if err != nil { return nil, err } - return &Descriptor{ - fetcher: f, + fetcher: *f, Manifest: b, Descriptor: *desc, platform: o.platform, @@ -123,7 +124,7 @@ func (d *Descriptor) Image() (v1.Image, error) { case types.DockerManifestSchema1, types.DockerManifestSchema1Signed: // We don't care to support schema 1 images: // https://github.com/google/go-containerregistry/issues/377 - return nil, NewErrSchema1(d.MediaType) + return nil, newErrSchema1(d.MediaType) case types.OCIImageIndex, types.DockerManifestList: // We want an image but the registry has an index, resolve it to an image. return d.remoteIndex().imageByPlatform(d.platform) @@ -132,7 +133,7 @@ func (d *Descriptor) Image() (v1.Image, error) { default: // We could just return an error here, but some registries (e.g. static // registries) don't set the Content-Type headers correctly, so instead... - // TODO(#390): Log a warning. + logs.Warn.Printf("Unexpected media type for Image(): %s", d.MediaType) } // Wrap the v1.Layers returned by this v1.Image in a hint for downstream @@ -153,7 +154,7 @@ func (d *Descriptor) ImageIndex() (v1.ImageIndex, error) { case types.DockerManifestSchema1, types.DockerManifestSchema1Signed: // We don't care to support schema 1 images: // https://github.com/google/go-containerregistry/issues/377 - return nil, NewErrSchema1(d.MediaType) + return nil, newErrSchema1(d.MediaType) case types.OCIManifestSchema1, types.DockerManifestSchema2: // We want an index but the registry has an image, nothing we can do. return nil, fmt.Errorf("unexpected media type for ImageIndex(): %s; call Image() instead", d.MediaType) @@ -162,7 +163,7 @@ func (d *Descriptor) ImageIndex() (v1.ImageIndex, error) { default: // We could just return an error here, but some registries (e.g. static // registries) don't set the Content-Type headers correctly, so instead... - // TODO(#390): Log a warning. + logs.Warn.Printf("Unexpected media type for ImageIndex(): %s", d.MediaType) } return d.remoteIndex(), nil } @@ -195,6 +196,17 @@ type fetcher struct { Client *http.Client } +func makeFetcher(ref name.Reference, o *options) (*fetcher, error) { + tr, err := transport.New(ref.Context().Registry, o.auth, o.transport, []string{ref.Scope(transport.PullScope)}) + if err != nil { + return nil, err + } + return &fetcher{ + Ref: ref, + Client: &http.Client{Transport: tr}, + }, nil +} + // url returns a url.Url for the specified path in the context of this remote image reference. func (f *fetcher) url(resource, identifier string) url.URL { return url.URL{ @@ -249,16 +261,14 @@ func (f *fetcher) fetchManifest(ref name.Reference, acceptable []types.MediaType if digest.String() != dgst.DigestStr() { return nil, nil, fmt.Errorf("manifest digest: %q does not match requested digest: %q for %q", digest, dgst.DigestStr(), f.Ref) } - } else { - // Do nothing for tags; I give up. - // - // We'd like to validate that the "Docker-Content-Digest" header matches what is returned by the registry, - // but so many registries implement this incorrectly that it's not worth checking. - // - // For reference: - // https://github.com/docker/distribution/issues/2395 - // https://github.com/GoogleContainerTools/kaniko/issues/298 } + // Do nothing for tags; I give up. + // + // We'd like to validate that the "Docker-Content-Digest" header matches what is returned by the registry, + // but so many registries implement this incorrectly that it's not worth checking. + // + // For reference: + // https://github.com/GoogleContainerTools/kaniko/issues/298 // Return all this info since we have to calculate it anyway. desc := v1.Descriptor{ @@ -269,3 +279,33 @@ func (f *fetcher) fetchManifest(ref name.Reference, acceptable []types.MediaType return manifest, &desc, nil } + +func (f *fetcher) fetchBlob(h v1.Hash) (io.ReadCloser, error) { + u := f.url("blobs", h.String()) + resp, err := f.Client.Get(u.String()) + if err != nil { + return nil, err + } + + if err := transport.CheckError(resp, http.StatusOK); err != nil { + resp.Body.Close() + return nil, err + } + + return v1util.VerifyReadCloser(resp.Body, h) +} + +func (f *fetcher) headBlob(h v1.Hash) (*http.Response, error) { + u := f.url("blobs", h.String()) + resp, err := f.Client.Head(u.String()) + if err != nil { + return nil, err + } + + if err := transport.CheckError(resp, http.StatusOK); err != nil { + resp.Body.Close() + return nil, err + } + + return resp, nil +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go index 752c71608f..947f8bca59 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go @@ -15,10 +15,10 @@ package remote import ( - "fmt" "io" "io/ioutil" "net/http" + "net/url" "sync" "github.com/google/go-containerregistry/pkg/name" @@ -43,15 +43,7 @@ var _ partial.CompressedImageCore = (*remoteImage)(nil) // Image provides access to a remote image reference. func Image(ref name.Reference, options ...Option) (v1.Image, error) { - acceptable := []types.MediaType{ - types.DockerManifestSchema2, - types.OCIManifestSchema1, - // We resolve these to images later. - types.DockerManifestList, - types.OCIImageIndex, - } - - desc, err := get(ref, acceptable, options...) + desc, err := Get(ref, options...) if err != nil { return nil, err } @@ -102,11 +94,7 @@ func (r *remoteImage) RawConfigFile() ([]byte, error) { return nil, err } - cl, err := r.LayerByDigest(m.Config.Digest) - if err != nil { - return nil, err - } - body, err := cl.Compressed() + body, err := r.fetchBlob(m.Config.Digest) if err != nil { return nil, err } @@ -119,74 +107,94 @@ func (r *remoteImage) RawConfigFile() ([]byte, error) { return r.config, nil } -// remoteLayer implements partial.CompressedLayer -type remoteLayer struct { +// remoteImageLayer implements partial.CompressedLayer +type remoteImageLayer struct { ri *remoteImage digest v1.Hash } // Digest implements partial.CompressedLayer -func (rl *remoteLayer) Digest() (v1.Hash, error) { +func (rl *remoteImageLayer) Digest() (v1.Hash, error) { return rl.digest, nil } // Compressed implements partial.CompressedLayer -func (rl *remoteLayer) Compressed() (io.ReadCloser, error) { - u := rl.ri.url("blobs", rl.digest.String()) - resp, err := rl.ri.Client.Get(u.String()) +func (rl *remoteImageLayer) Compressed() (io.ReadCloser, error) { + urls := []url.URL{rl.ri.url("blobs", rl.digest.String())} + + // Add alternative layer sources from URLs (usually none). + d, err := partial.BlobDescriptor(rl, rl.digest) if err != nil { return nil, err } - if err := transport.CheckError(resp, http.StatusOK); err != nil { - resp.Body.Close() - return nil, err + for _, s := range d.URLs { + u, err := url.Parse(s) + if err != nil { + return nil, err + } + urls = append(urls, *u) + } + + // The lastErr for most pulls will be the same (the first error), but for + // foreign layers we'll want to surface the last one, since we try to pull + // from the registry first, which would often fail. + // TODO: Maybe we don't want to try pulling from the registry first? + var lastErr error + for _, u := range urls { + resp, err := rl.ri.Client.Get(u.String()) + if err != nil { + lastErr = err + continue + } + + if err := transport.CheckError(resp, http.StatusOK); err != nil { + resp.Body.Close() + lastErr = err + continue + } + + return v1util.VerifyReadCloser(resp.Body, rl.digest) } - return v1util.VerifyReadCloser(resp.Body, rl.digest) + return nil, lastErr } // Manifest implements partial.WithManifest so that we can use partial.BlobSize below. -func (rl *remoteLayer) Manifest() (*v1.Manifest, error) { +func (rl *remoteImageLayer) Manifest() (*v1.Manifest, error) { return partial.Manifest(rl.ri) } // MediaType implements v1.Layer -func (rl *remoteLayer) MediaType() (types.MediaType, error) { - m, err := rl.Manifest() +func (rl *remoteImageLayer) MediaType() (types.MediaType, error) { + bd, err := partial.BlobDescriptor(rl, rl.digest) if err != nil { return "", err } - for _, layer := range m.Layers { - if layer.Digest == rl.digest { - return layer.MediaType, nil - } - } - - return "", fmt.Errorf("unable to find layer with digest: %v", rl.digest) + return bd.MediaType, nil } // Size implements partial.CompressedLayer -func (rl *remoteLayer) Size() (int64, error) { +func (rl *remoteImageLayer) Size() (int64, error) { // Look up the size of this digest in the manifest to avoid a request. return partial.BlobSize(rl, rl.digest) } // ConfigFile implements partial.WithManifestAndConfigFile so that we can use partial.BlobToDiffID below. -func (rl *remoteLayer) ConfigFile() (*v1.ConfigFile, error) { +func (rl *remoteImageLayer) ConfigFile() (*v1.ConfigFile, error) { return partial.ConfigFile(rl.ri) } // DiffID implements partial.WithDiffID so that we don't recompute a DiffID that we already have // available in our ConfigFile. -func (rl *remoteLayer) DiffID() (v1.Hash, error) { +func (rl *remoteImageLayer) DiffID() (v1.Hash, error) { return partial.BlobToDiffID(rl, rl.digest) } // LayerByDigest implements partial.CompressedLayer func (r *remoteImage) LayerByDigest(h v1.Hash) (partial.CompressedLayer, error) { - return &remoteLayer{ + return &remoteImageLayer{ ri: r, digest: h, }, nil diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/index.go index 043dc83b68..c739d1127d 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/index.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/index.go @@ -59,6 +59,10 @@ func (r *remoteIndex) Digest() (v1.Hash, error) { return partial.Digest(r) } +func (r *remoteIndex) Size() (int64, error) { + return partial.Size(r) +} + func (r *remoteIndex) RawManifest() ([]byte, error) { r.manifestLock.Lock() defer r.manifestLock.Unlock() @@ -158,16 +162,9 @@ func (r *remoteIndex) childByHash(h v1.Hash) (*Descriptor, error) { return nil, fmt.Errorf("no child with digest %s in index %s", h, r.Ref) } -func (r *remoteIndex) childRef(h v1.Hash) (name.Reference, error) { - return name.ParseReference(fmt.Sprintf("%s@%s", r.Ref.Context(), h), name.StrictValidation) -} - // Convert one of this index's child's v1.Descriptor into a remote.Descriptor, with the given platform option. func (r *remoteIndex) childDescriptor(child v1.Descriptor, platform v1.Platform) (*Descriptor, error) { - ref, err := r.childRef(child.Digest) - if err != nil { - return nil, err - } + ref := r.Ref.Context().Digest(child.Digest.String()) manifest, desc, err := r.fetchManifest(ref, []types.MediaType{child.MediaType}) if err != nil { return nil, err diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/layer.go new file mode 100644 index 0000000000..1e1e331cc0 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/layer.go @@ -0,0 +1,84 @@ +// Copyright 2019 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package remote + +import ( + "io" + + "github.com/google/go-containerregistry/pkg/name" + v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/partial" + "github.com/google/go-containerregistry/pkg/v1/types" +) + +// remoteImagelayer implements partial.CompressedLayer +type remoteLayer struct { + fetcher + digest v1.Hash +} + +// Compressed implements partial.CompressedLayer +func (rl *remoteLayer) Compressed() (io.ReadCloser, error) { + return rl.fetchBlob(rl.digest) +} + +// Compressed implements partial.CompressedLayer +func (rl *remoteLayer) Size() (int64, error) { + resp, err := rl.headBlob(rl.digest) + if err != nil { + return -1, err + } + return resp.ContentLength, nil +} + +// Digest implements partial.CompressedLayer +func (rl *remoteLayer) Digest() (v1.Hash, error) { + return rl.digest, nil +} + +// MediaType implements v1.Layer +func (rl *remoteLayer) MediaType() (types.MediaType, error) { + return types.DockerLayer, nil +} + +// Layer reads the given blob reference from a registry as a Layer. A blob +// reference here is just a punned name.Digest where the digest portion is the +// digest of the blob to be read and the repository portion is the repo where +// that blob lives. +func Layer(ref name.Digest, options ...Option) (v1.Layer, error) { + o, err := makeOptions(ref.Context(), options...) + if err != nil { + return nil, err + } + f, err := makeFetcher(ref, o) + if err != nil { + return nil, err + } + h, err := v1.NewHash(ref.Identifier()) + if err != nil { + return nil, err + } + l, err := partial.CompressedToLayer(&remoteLayer{ + fetcher: *f, + digest: h, + }) + if err != nil { + return nil, err + } + return &MountableLayer{ + Layer: l, + Reference: ref, + }, nil +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go index 4cbdc4f191..b2b03a1dcd 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go @@ -15,10 +15,12 @@ package remote import ( + "context" "encoding/json" "fmt" "net/http" "net/url" + "strings" "github.com/google/go-containerregistry/pkg/name" "github.com/google/go-containerregistry/pkg/v1/remote/transport" @@ -29,10 +31,15 @@ type tags struct { Tags []string `json:"tags"` } -// List calls /tags/list for the given repository, returning the list of tags -// in the "tags" property. +// List wraps ListWithContext using the background context. func List(repo name.Repository, options ...Option) ([]string, error) { - o, err := makeOptions(repo.Registry, options...) + return ListWithContext(context.Background(), repo, options...) +} + +// ListWithContext calls /tags/list for the given repository, returning the list of tags +// in the "tags" property. +func ListWithContext(ctx context.Context, repo name.Repository, options ...Option) ([]string, error) { + o, err := makeOptions(repo, options...) if err != nil { return nil, err } @@ -42,27 +49,89 @@ func List(repo name.Repository, options ...Option) ([]string, error) { return nil, err } - uri := url.URL{ - Scheme: repo.Registry.Scheme(), - Host: repo.Registry.RegistryStr(), - Path: fmt.Sprintf("/v2/%s/tags/list", repo.RepositoryStr()), + uri := &url.URL{ + Scheme: repo.Registry.Scheme(), + Host: repo.Registry.RegistryStr(), + Path: fmt.Sprintf("/v2/%s/tags/list", repo.RepositoryStr()), + RawQuery: "n=10000", } client := http.Client{Transport: tr} - resp, err := client.Get(uri.String()) - if err != nil { - return nil, err + tagList := []string{} + parsed := tags{} + + // get responses until there is no next page + for { + select { + case <-ctx.Done(): + return nil, ctx.Err() + default: + } + + req, err := http.NewRequest("GET", uri.String(), nil) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + + resp, err := client.Do(req) + if err != nil { + return nil, err + } + + if err := transport.CheckError(resp, http.StatusOK); err != nil { + return nil, err + } + + if err := json.NewDecoder(resp.Body).Decode(&parsed); err != nil { + return nil, err + } + + if err := resp.Body.Close(); err != nil { + return nil, err + } + + tagList = append(tagList, parsed.Tags...) + + uri, err = getNextPageURL(resp) + if err != nil { + return nil, err + } + // no next page + if uri == nil { + break + } } - defer resp.Body.Close() - if err := transport.CheckError(resp, http.StatusOK); err != nil { - return nil, err + return tagList, nil +} + +// getNextPageURL checks if there is a Link header in a http.Response which +// contains a link to the next page. If yes it returns the url.URL of the next +// page otherwise it returns nil. +func getNextPageURL(resp *http.Response) (*url.URL, error) { + link := resp.Header.Get("Link") + if link == "" { + return nil, nil } - parsed := tags{} - if err := json.NewDecoder(resp.Body).Decode(&parsed); err != nil { - return nil, err + if link[0] != '<' { + return nil, fmt.Errorf("failed to parse link header: missing '<' in: %s", link) } - return parsed.Tags, nil + end := strings.Index(link, ">") + if end == -1 { + return nil, fmt.Errorf("failed to parse link header: missing '>' in: %s", link) + } + link = link[1:end] + + linkURL, err := url.Parse(link) + if err != nil { + return nil, err + } + if resp.Request == nil || resp.Request.URL == nil { + return nil, nil + } + linkURL = resp.Request.URL.ResolveReference(linkURL) + return linkURL, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go index c603448401..1de65ee79e 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go @@ -19,7 +19,6 @@ import ( "github.com/google/go-containerregistry/pkg/authn" "github.com/google/go-containerregistry/pkg/logs" - "github.com/google/go-containerregistry/pkg/name" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/remote/transport" ) @@ -34,7 +33,7 @@ type options struct { platform v1.Platform } -func makeOptions(reg name.Registry, opts ...Option) (*options, error) { +func makeOptions(target authn.Resource, opts ...Option) (*options, error) { o := &options{ auth: authn.Anonymous, transport: http.DefaultTransport, @@ -48,7 +47,7 @@ func makeOptions(reg name.Registry, opts ...Option) (*options, error) { } if o.keychain != nil { - auth, err := o.keychain.Resolve(reg) + auth, err := o.keychain.Resolve(target) if err != nil { return nil, err } @@ -58,6 +57,13 @@ func makeOptions(reg name.Registry, opts ...Option) (*options, error) { o.auth = auth } + // Wrap the transport in something that logs requests and responses. + // It's expensive to generate the dumps, so skip it if we're writing + // to nothing. + if logs.Enabled(logs.Debug) { + o.transport = transport.NewLogger(o.transport) + } + // Wrap the transport in something that can retry network flakes. o.transport = transport.NewRetry(o.transport) diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/README.md b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/README.md new file mode 100644 index 0000000000..afaa294bb4 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/README.md @@ -0,0 +1,127 @@ +# `transport` + +The [distribution protocol](https://github.com/opencontainers/distribution-spec) is fairly simple, but correctly implementing authentication is **hard**. + +This package [implements](https://godoc.org/github.com/google/go-containerregistry/pkg/v1/remote/transport#New) an [`http.RoundTripper`](https://godoc.org/net/http#RoundTripper) +that transparently performs: +* [Token +Authentication](https://docs.docker.com/registry/spec/auth/token/) and +* [OAuth2 +Authentication](https://docs.docker.com/registry/spec/auth/oauth/) + +for registry clients. + +## Raison d'être + +> Why not just use the [`docker/distribution`](https://godoc.org/github.com/docker/distribution/registry/client/auth) client? + +Great question! Mostly, because I don't want to depend on [`prometheus/client_golang`](https://github.com/prometheus/client_golang). + +As a performance optimization, that client uses [a cache](https://github.com/docker/distribution/blob/a8371794149d1d95f1e846744b05c87f2f825e5a/registry/client/repository.go#L173) to keep track of a mapping between blob digests and their [descriptors](https://github.com/docker/distribution/blob/a8371794149d1d95f1e846744b05c87f2f825e5a/blobs.go#L57-L86). Unfortunately, the cache [uses prometheus](https://github.com/docker/distribution/blob/a8371794149d1d95f1e846744b05c87f2f825e5a/registry/storage/cache/cachedblobdescriptorstore.go#L44) to track hits and misses, so if you want to use that client you have to pull in all of prometheus, which is pretty large. + +![docker/distribution](../../../../images/docker.dot.svg) + +> Why does it matter if you depend on prometheus? Who cares? + +It's generally polite to your downstream to reduce the number of dependencies your package requires: + +* Downloading your package is faster, which helps our Australian friends and people on airplanes. +* There is less code to compile, which speeds up builds and saves the planet from global warming. +* You reduce the likelihood of inflicting dependency hell upon your consumers. +* [Tim Hockin](https://twitter.com/thockin/status/958606077456654336) prefers it based on his experience working on Kubernetes, and he's a pretty smart guy. + +> Okay, what about [`containerd/containerd`](https://godoc.org/github.com/containerd/containerd/remotes/docker)? + +Similar reasons! That ends up pulling in grpc, protobuf, and logrus. + +![containerd/containerd](../../../../images/containerd.dot.svg) + +> Well... what about [`containers/image`](https://godoc.org/github.com/containers/image/docker)? + +That just uses the the `docker/distribution` client... and more! + +![containerd/containerd](../../../../images/containers.dot.svg) + +> Wow, what about this package? + +Of course, this package isn't perfect either. `transport` depends on `authn`, +which in turn depends on docker's config file parsing and handling package, +which you don't strictly need but almost certainly want if you're going to be +interacting with a registry. + +![google/go-containerregistry](../../../../images/ggcr.dot.svg) + +*These graphs were generated by +[`kisielk/godepgraph`](https://github.com/kisielk/godepgraph).* + +## Usage + +This is heavily used by the +[`remote`](https://godoc.org/github.com/google/go-containerregistry/pkg/v1/remote) +package, which implements higher level image-centric functionality, but this +package is useful if you want to interact directly with the registry to do +something that `remote` doesn't support, e.g. [to handle with schema 1 +images](https://github.com/google/go-containerregistry/pull/509). + +This package also includes some [error +handling](https://github.com/opencontainers/distribution-spec/blob/60be706c34ee7805bdd1d3d11affec53b0dfb8fb/spec.md#errors) +facilities in the form of +[`CheckError`](https://godoc.org/github.com/google/go-containerregistry/pkg/v1/remote/transport#CheckError), +which will parse the response body into a structured error for unexpected http +status codes. + +Here's a "simple" program that writes the result of +[listing tags](https://github.com/opencontainers/distribution-spec/blob/60be706c34ee7805bdd1d3d11affec53b0dfb8fb/spec.md#tags) +for [`gcr.io/google-containers/pause`](https://gcr.io/google-containers/pause) +to stdout. + +```go +package main + +import ( + "io" + "net/http" + "os" + + "github.com/google/go-containerregistry/pkg/authn" + "github.com/google/go-containerregistry/pkg/name" + "github.com/google/go-containerregistry/pkg/v1/remote/transport" +) + +func main() { + repo, err := name.NewRepository("gcr.io/google-containers/pause") + if err != nil { + panic(err) + } + + // Fetch credentials based on your docker config file, which is $HOME/.docker/config.json or $DOCKER_CONFIG. + auth, err := authn.DefaultKeychain.Resolve(repo.Registry) + if err != nil { + panic(err) + } + + // Construct an http.Client that is authorized to pull from gcr.io/google-containers/pause. + scopes := []string{repo.Scope(transport.PullScope)} + t, err := transport.New(repo.Registry, auth, http.DefaultTransport, scopes) + if err != nil { + panic(err) + } + client := &http.Client{Transport: t} + + // Make the actual request. + resp, err := client.Get("https://gcr.io/v2/google-containers/pause/tags/list") + if err != nil { + panic(err) + } + + // Assert that we get a 200, otherwise attempt to parse body as a structured error. + if err := transport.CheckError(resp, http.StatusOK); err != nil { + panic(err) + } + + // Write the response to stdout. + if _, err := io.Copy(os.Stdout, resp.Body); err != nil { + panic(err) + } +} +``` diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go index b98b4a6251..5e0f609374 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go @@ -15,6 +15,8 @@ package transport import ( + "encoding/base64" + "fmt" "net/http" "github.com/google/go-containerregistry/pkg/authn" @@ -30,18 +32,31 @@ var _ http.RoundTripper = (*basicTransport)(nil) // RoundTrip implements http.RoundTripper func (bt *basicTransport) RoundTrip(in *http.Request) (*http.Response, error) { - hdr, err := bt.auth.Authorization() - if err != nil { - return nil, err - } + if bt.auth != authn.Anonymous { + auth, err := bt.auth.Authorization() + if err != nil { + return nil, err + } - // http.Client handles redirects at a layer above the http.RoundTripper - // abstraction, so to avoid forwarding Authorization headers to places - // we are redirected, only set it when the authorization header matches - // the host with which we are interacting. - // In case of redirect http.Client can use an empty Host, check URL too. - if hdr != "" && (in.Host == bt.target || in.URL.Host == bt.target) { - in.Header.Set("Authorization", hdr) + // http.Client handles redirects at a layer above the http.RoundTripper + // abstraction, so to avoid forwarding Authorization headers to places + // we are redirected, only set it when the authorization header matches + // the host with which we are interacting. + // In case of redirect http.Client can use an empty Host, check URL too. + if in.Host == bt.target || in.URL.Host == bt.target { + if bearer := auth.RegistryToken; bearer != "" { + hdr := fmt.Sprintf("Bearer %s", bearer) + in.Header.Set("Authorization", hdr) + } else if user, pass := auth.Username, auth.Password; user != "" && pass != "" { + delimited := fmt.Sprintf("%s:%s", user, pass) + encoded := base64.StdEncoding.EncodeToString([]byte(delimited)) + hdr := fmt.Sprintf("Basic %s", encoded) + in.Header.Set("Authorization", hdr) + } else if token := auth.Auth; token != "" { + hdr := fmt.Sprintf("Basic %s", token) + in.Header.Set("Authorization", hdr) + } + } } in.Header.Set("User-Agent", transportName) return bt.inner.RoundTrip(in) diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go index 326708b975..9c404df52b 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go @@ -55,29 +55,19 @@ var portMap = map[string]string{ // RoundTrip implements http.RoundTripper func (bt *bearerTransport) RoundTrip(in *http.Request) (*http.Response, error) { sendRequest := func() (*http.Response, error) { - hdr, err := bt.bearer.Authorization() - if err != nil { - return nil, err - } - // http.Client handles redirects at a layer above the http.RoundTripper // abstraction, so to avoid forwarding Authorization headers to places // we are redirected, only set it when the authorization header matches // the registry with which we are interacting. // In case of redirect http.Client can use an empty Host, check URL too. - canonicalHeaderHost := bt.canonicalAddress(in.Host) - canonicalURLHost := bt.canonicalAddress(in.URL.Host) - canonicalRegistryHost := bt.canonicalAddress(bt.registry.RegistryStr()) - if canonicalHeaderHost == canonicalRegistryHost || canonicalURLHost == canonicalRegistryHost { + if matchesHost(bt.registry, in, bt.scheme) { + auth, err := bt.bearer.Authorization() + if err != nil { + return nil, err + } + hdr := fmt.Sprintf("Bearer %s", auth.RegistryToken) in.Header.Set("Authorization", hdr) - - // When we ping() the registry, we determine whether to use http or https - // based on which scheme was successful. That is only valid for the - // registry server and not e.g. a separate token server or blob storage, - // so we should only override the scheme if the host is the registry. - in.URL.Scheme = bt.scheme } - in.Header.Set("User-Agent", transportName) return bt.inner.RoundTrip(in) } @@ -97,42 +87,40 @@ func (bt *bearerTransport) RoundTrip(in *http.Request) (*http.Response, error) { return res, err } +// It's unclear which authentication flow to use based purely on the protocol, +// so we rely on heuristics and fallbacks to support as many registries as possible. +// The basic token exchange is attempted first, falling back to the oauth flow. +// If the IdentityToken is set, this indicates that we should start with the oauth flow. func (bt *bearerTransport) refresh() error { - u, err := url.Parse(bt.realm) - if err != nil { - return err - } - b := &basicTransport{ - inner: bt.inner, - auth: bt.basic, - target: u.Host, - } - client := http.Client{Transport: b} - - u.RawQuery = url.Values{ - "scope": bt.scopes, - "service": []string{bt.service}, - }.Encode() - - resp, err := client.Get(u.String()) + auth, err := bt.basic.Authorization() if err != nil { return err } - defer resp.Body.Close() - - if err := CheckError(resp, http.StatusOK); err != nil { - return err + var content []byte + if auth.IdentityToken != "" { + // If the secret being stored is an identity token, + // the Username should be set to , which indicates + // we are using an oauth flow. + content, err = bt.refreshOauth() + if terr, ok := err.(*Error); ok && terr.StatusCode == http.StatusNotFound { + // Note: Not all token servers implement oauth2. + // If the request to the endpoint returns 404 using the HTTP POST method, + // refer to Token Documentation for using the HTTP GET method supported by all token servers. + content, err = bt.refreshBasic() + } + } else { + content, err = bt.refreshBasic() } - - content, err := ioutil.ReadAll(resp.Body) if err != nil { return err } // Some registries don't have "token" in the response. See #54. type tokenResponse struct { - Token string `json:"token"` - AccessToken string `json:"access_token"` + Token string `json:"token"` + AccessToken string `json:"access_token"` + RefreshToken string `json:"refresh_token"` + // TODO: handle expiry? } var response tokenResponse @@ -140,22 +128,39 @@ func (bt *bearerTransport) refresh() error { return err } + // Some registries set access_token instead of token. + if response.AccessToken != "" { + response.Token = response.AccessToken + } + // Find a token to turn into a Bearer authenticator var bearer authn.Bearer if response.Token != "" { bearer = authn.Bearer{Token: response.Token} - } else if response.AccessToken != "" { - bearer = authn.Bearer{Token: response.AccessToken} } else { return fmt.Errorf("no token in bearer response:\n%s", content) } + // If we obtained a refresh token from the oauth flow, use that for refresh() now. + if response.RefreshToken != "" { + bt.basic = authn.FromConfig(authn.AuthConfig{ + IdentityToken: response.RefreshToken, + }) + } + // Replace our old bearer authenticator (if we had one) with our newly refreshed authenticator. bt.bearer = &bearer return nil } -func (bt *bearerTransport) canonicalAddress(host string) (address string) { +func matchesHost(reg name.Registry, in *http.Request, scheme string) bool { + canonicalHeaderHost := canonicalAddress(in.Host, scheme) + canonicalURLHost := canonicalAddress(in.URL.Host, scheme) + canonicalRegistryHost := canonicalAddress(reg.RegistryStr(), scheme) + return canonicalHeaderHost == canonicalRegistryHost || canonicalURLHost == canonicalRegistryHost +} + +func canonicalAddress(host, scheme string) (address string) { // The host may be any one of: // - hostname // - hostname:port @@ -171,11 +176,83 @@ func (bt *bearerTransport) canonicalAddress(host string) (address string) { return host } if port == "" { - port = portMap[bt.scheme] + port = portMap[scheme] } return net.JoinHostPort(hostname, port) } - return net.JoinHostPort(host, portMap[bt.scheme]) + return net.JoinHostPort(host, portMap[scheme]) +} + +// https://docs.docker.com/registry/spec/auth/oauth/ +func (bt *bearerTransport) refreshOauth() ([]byte, error) { + auth, err := bt.basic.Authorization() + if err != nil { + return nil, err + } + + u, err := url.Parse(bt.realm) + if err != nil { + return nil, err + } + + v := url.Values{} + v.Set("scope", strings.Join(bt.scopes, " ")) + v.Set("service", bt.service) + v.Set("client_id", transportName) + if auth.IdentityToken != "" { + v.Set("grant_type", "refresh_token") + v.Set("refresh_token", auth.IdentityToken) + } else if auth.Username != "" && auth.Password != "" { + // TODO(#629): This is unreachable. + v.Set("grant_type", "password") + v.Set("username", auth.Username) + v.Set("password", auth.Password) + v.Set("access_type", "offline") + } + + client := http.Client{Transport: bt.inner} + resp, err := client.PostForm(u.String(), v) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if err := CheckError(resp, http.StatusOK); err != nil { + return nil, err + } + + return ioutil.ReadAll(resp.Body) +} + +// https://docs.docker.com/registry/spec/auth/token/ +func (bt *bearerTransport) refreshBasic() ([]byte, error) { + u, err := url.Parse(bt.realm) + if err != nil { + return nil, err + } + b := &basicTransport{ + inner: bt.inner, + auth: bt.basic, + target: u.Host, + } + client := http.Client{Transport: b} + + u.RawQuery = url.Values{ + "scope": bt.scopes, + "service": []string{bt.service}, + }.Encode() + + resp, err := client.Get(u.String()) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if err := CheckError(resp, http.StatusOK); err != nil { + return nil, err + } + + return ioutil.ReadAll(resp.Body) } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/logger.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/logger.go new file mode 100644 index 0000000000..8fcad6f2f0 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/logger.go @@ -0,0 +1,44 @@ +package transport + +import ( + "fmt" + "net/http" + "net/http/httputil" + + "github.com/google/go-containerregistry/pkg/logs" +) + +type logTransport struct { + inner http.RoundTripper +} + +// NewLogger returns a transport that logs requests and responses to +// github.com/google/go-containerregistry/pkg/logs.Debug. +func NewLogger(inner http.RoundTripper) http.RoundTripper { + return &logTransport{inner} +} + +func (t *logTransport) RoundTrip(in *http.Request) (out *http.Response, err error) { + // Inspired by: github.com/motemen/go-loghttp + logs.Debug.Printf("--> %s %s", in.Method, in.URL) + b, err := httputil.DumpRequestOut(in, true) + if err == nil { + logs.Debug.Println(string(b)) + } + out, err = t.inner.RoundTrip(in) + if err != nil { + logs.Debug.Printf("<-- %v %s", err, in.URL) + } + if out != nil { + msg := fmt.Sprintf("<-- %d", out.StatusCode) + if out.Request != nil { + msg = fmt.Sprintf("%s %s", msg, out.Request.URL) + } + logs.Debug.Print(msg) + b, err := httputil.DumpResponse(out, true) + if err == nil { + logs.Debug.Println(string(b)) + } + } + return +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go index cc0d2cfeaa..d999ebcff0 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go @@ -93,7 +93,7 @@ func ping(reg name.Registry, t http.RoundTripper) (*pingResp, error) { scheme: scheme, }, nil case http.StatusUnauthorized: - wac := resp.Header.Get(http.CanonicalHeaderKey("WWW-Authenticate")) + wac := resp.Header.Get("WWW-Authenticate") if parts := strings.SplitN(wac, " ", 2); len(parts) == 2 { // If there are two parts, then parse the challenge parameters. return &pingResp{ @@ -108,7 +108,7 @@ func ping(reg name.Registry, t http.RoundTripper) (*pingResp, error) { scheme: scheme, }, nil default: - return nil, fmt.Errorf("unrecognized HTTP status: %v", resp.Status) + return nil, CheckError(resp, http.StatusOK, http.StatusUnauthorized) } } return nil, connErr diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/retry.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/retry.go index b6b2181dab..672622b61f 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/retry.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/retry.go @@ -19,11 +19,10 @@ import ( "time" "github.com/google/go-containerregistry/pkg/internal/retry" - "k8s.io/apimachinery/pkg/util/wait" ) // Sleep for 0.1, 0.3, 0.9, 2.7 seconds. This should cover networking blips. -var defaultBackoff = wait.Backoff{ +var defaultBackoff = retry.Backoff{ Duration: 100 * time.Millisecond, Factor: 3.0, Jitter: 0.1, @@ -35,7 +34,7 @@ var _ http.RoundTripper = (*retryTransport)(nil) // retryTransport wraps a RoundTripper and retries temporary network errors. type retryTransport struct { inner http.RoundTripper - backoff wait.Backoff + backoff retry.Backoff predicate retry.Predicate } @@ -43,12 +42,12 @@ type retryTransport struct { type Option func(*options) type options struct { - backoff wait.Backoff + backoff retry.Backoff predicate retry.Predicate } // WithRetryBackoff sets the backoff for retry operations. -func WithRetryBackoff(backoff wait.Backoff) Option { +func WithRetryBackoff(backoff retry.Backoff) Option { return func(o *options) { o.backoff = backoff } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/schemer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/schemer.go new file mode 100644 index 0000000000..d70b6a850c --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/schemer.go @@ -0,0 +1,44 @@ +// Copyright 2019 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package transport + +import ( + "net/http" + + "github.com/google/go-containerregistry/pkg/name" +) + +type schemeTransport struct { + // Scheme we should use, determined by ping response. + scheme string + + // Registry we're talking to. + registry name.Registry + + // Wrapped by schemeTransport. + inner http.RoundTripper +} + +// RoundTrip implements http.RoundTripper +func (st *schemeTransport) RoundTrip(in *http.Request) (*http.Response, error) { + // When we ping() the registry, we determine whether to use http or https + // based on which scheme was successful. That is only valid for the + // registry server and not e.g. a separate token server or blob storage, + // so we should only override the scheme if the host is the registry. + if matchesHost(st.registry, in, st.scheme) { + in.URL.Scheme = st.scheme + } + return st.inner.RoundTrip(in) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go index 18c8e66c75..1bea604acb 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go @@ -22,10 +22,6 @@ import ( "github.com/google/go-containerregistry/pkg/name" ) -const ( - transportName = "go-containerregistry" -) - // New returns a new RoundTripper based on the provided RoundTripper that has been // setup to authenticate with the remote registry "reg", in the capacity // laid out by the specified scopes. @@ -49,6 +45,16 @@ func New(reg name.Registry, auth authn.Authenticator, t http.RoundTripper, scope return nil, err } + // Wrap the given transport in transports that use an appropriate scheme, + // (based on the ping response) and set the user agent. + t = &useragentTransport{ + inner: &schemeTransport{ + scheme: pr.scheme, + registry: reg, + inner: t, + }, + } + switch pr.challenge.Canonical() { case anonymous: return t, nil @@ -80,6 +86,6 @@ func New(reg name.Registry, auth authn.Authenticator, t http.RoundTripper, scope } return bt, nil default: - return nil, fmt.Errorf("Unrecognized challenge: %s", pr.challenge) + return nil, fmt.Errorf("unrecognized challenge: %s", pr.challenge) } } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/useragent.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/useragent.go new file mode 100644 index 0000000000..8d59ab76ca --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/useragent.go @@ -0,0 +1,32 @@ +// Copyright 2019 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package transport + +import "net/http" + +const ( + transportName = "go-containerregistry" +) + +type useragentTransport struct { + // Wrapped by useragentTransport. + inner http.RoundTripper +} + +// RoundTrip implements http.RoundTripper +func (ut *useragentTransport) RoundTrip(in *http.Request) (*http.Response, error) { + in.Header.Set("User-Agent", transportName) + return ut.inner.RoundTrip(in) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go index 8806aa1875..7be851f088 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go @@ -31,13 +31,11 @@ import ( "github.com/google/go-containerregistry/pkg/v1/remote/transport" "github.com/google/go-containerregistry/pkg/v1/types" "golang.org/x/sync/errgroup" - "k8s.io/apimachinery/pkg/util/wait" ) -type manifest interface { +// Taggable is an interface that enables a manifest PUT (e.g. for tagging). +type Taggable interface { RawManifest() ([]byte, error) - MediaType() (types.MediaType, error) - Digest() (v1.Hash, error) } // Write pushes the provided img to the specified image reference. @@ -47,7 +45,7 @@ func Write(ref name.Reference, img v1.Image, options ...Option) error { return err } - o, err := makeOptions(ref.Context().Registry, options...) + o, err := makeOptions(ref.Context(), options...) if err != nil { return err } @@ -70,6 +68,16 @@ func Write(ref name.Reference, img v1.Image, options ...Option) error { for _, l := range ls { l := l + // Handle foreign layers. + mt, err := l.MediaType() + if err != nil { + return err + } + if !mt.IsDistributable() { + // TODO(jonjohnsonjr): Add "allow-nondistributable-artifacts" option. + continue + } + // Streaming layers calculate their digests while uploading them. Assume // an error here indicates we need to upload the layer. h, err := l.Digest() @@ -346,7 +354,7 @@ func (w *writer) uploadOne(l v1.Layer) error { } // Try this three times, waiting 1s after first failure, 3s after second. - backoff := wait.Backoff{ + backoff := retry.Backoff{ Duration: 1.0 * time.Second, Factor: 3.0, Jitter: 0.1, @@ -356,13 +364,55 @@ func (w *writer) uploadOne(l v1.Layer) error { return retry.Retry(tryUpload, retry.IsTemporary, backoff) } +type withMediaType interface { + MediaType() (types.MediaType, error) +} + +// This is really silly, but go interfaces don't let me satisfy remote.Taggable +// with remote.Descriptor because of name collisions between method names and +// struct fields. +// +// Use reflection to either pull the v1.Descriptor out of remote.Descriptor or +// create a descriptor based on the RawManifest and (optionally) MediaType. +func unpackTaggable(t Taggable) (*v1.Descriptor, error) { + if d, ok := t.(*Descriptor); ok { + return &d.Descriptor, nil + } + b, err := t.RawManifest() + if err != nil { + return nil, err + } + + // A reasonable default if Taggable doesn't implement MediaType. + mt := types.DockerManifestSchema2 + + if wmt, ok := t.(withMediaType); ok { + m, err := wmt.MediaType() + if err != nil { + return nil, err + } + mt = m + } + + h, sz, err := v1.SHA256(bytes.NewReader(b)) + if err != nil { + return nil, err + } + + return &v1.Descriptor{ + MediaType: mt, + Size: sz, + Digest: h, + }, nil +} + // commitImage does a PUT of the image's manifest. -func (w *writer) commitImage(man manifest) error { - raw, err := man.RawManifest() +func (w *writer) commitImage(t Taggable) error { + raw, err := t.RawManifest() if err != nil { return err } - mt, err := man.MediaType() + desc, err := unpackTaggable(t) if err != nil { return err } @@ -374,7 +424,7 @@ func (w *writer) commitImage(man manifest) error { if err != nil { return err } - req.Header.Set("Content-Type", string(mt)) + req.Header.Set("Content-Type", string(desc.MediaType)) resp, err := w.client.Do(req) if err != nil { @@ -386,13 +436,8 @@ func (w *writer) commitImage(man manifest) error { return err } - digest, err := man.Digest() - if err != nil { - return err - } - // The image was successfully pushed! - logs.Progress.Printf("%v: digest: %v size: %d", w.ref, digest, len(raw)) + logs.Progress.Printf("%v: digest: %v size: %d", w.ref, desc.Digest, len(raw)) return nil } @@ -402,9 +447,10 @@ func scopesForUploadingImage(ref name.Reference, layers []v1.Layer) []string { for _, l := range layers { if ml, ok := l.(*MountableLayer); ok { - // we add push scope for ref.Context() after the loop - if ml.Reference.Context() != ref.Context() { - scopeSet[ml.Reference.Context().Scope(transport.PullScope)] = struct{}{} + // we will add push scope for ref.Context() after the loop. + // for now we ask pull scope for references of the same registry + if ml.Reference.Context() != ref.Context() && ml.Reference.Context().Registry == ref.Context().Registry { + scopeSet[ml.Reference.Scope(transport.PullScope)] = struct{}{} } } } @@ -429,7 +475,7 @@ func WriteIndex(ref name.Reference, ii v1.ImageIndex, options ...Option) error { return err } - o, err := makeOptions(ref.Context().Registry, options...) + o, err := makeOptions(ref.Context(), options...) if err != nil { return err } @@ -444,10 +490,7 @@ func WriteIndex(ref name.Reference, ii v1.ImageIndex, options ...Option) error { } for _, desc := range index.Manifests { - ref, err := name.ParseReference(fmt.Sprintf("%s@%s", ref.Context(), desc.Digest), name.StrictValidation) - if err != nil { - return err - } + ref := ref.Context().Digest(desc.Digest.String()) exists, err := w.checkExistingManifest(desc.Digest, desc.MediaType) if err != nil { return err @@ -482,3 +525,48 @@ func WriteIndex(ref name.Reference, ii v1.ImageIndex, options ...Option) error { // to commit the image. return w.commitImage(ii) } + +// WriteLayer uploads the provided Layer to the specified name.Digest. +func WriteLayer(ref name.Digest, layer v1.Layer, options ...Option) error { + o, err := makeOptions(ref.Context(), options...) + if err != nil { + return err + } + scopes := scopesForUploadingImage(ref, []v1.Layer{layer}) + tr, err := transport.New(ref.Context().Registry, o.auth, o.transport, scopes) + if err != nil { + return err + } + w := writer{ + ref: ref, + client: &http.Client{Transport: tr}, + } + + return w.uploadOne(layer) +} + +// Tag adds a tag to the given Taggable. +func Tag(tag name.Tag, t Taggable, options ...Option) error { + o, err := makeOptions(tag.Context(), options...) + if err != nil { + return err + } + scopes := []string{tag.Scope(transport.PushScope)} + + // TODO: This *always* does a token exchange. For some registries, + // that's pretty slow. Some ideas; + // * Tag could take a list of tags. + // * Allow callers to pass in a transport.Transport, typecheck + // it to allow them to reuse the transport across multiple calls. + // * WithTag option to do multiple manifest PUTs in commitImage. + tr, err := transport.New(tag.Context().Registry, o.auth, o.transport, scopes) + if err != nil { + return err + } + w := writer{ + ref: tag, + client: &http.Client{Transport: tr}, + } + + return w.commitImage(t) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go index aa816359c4..03ddfb9a10 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/stream/layer.go @@ -39,8 +39,9 @@ var ( // Layer is a streaming implementation of v1.Layer. type Layer struct { - blob io.ReadCloser - consumed bool + blob io.ReadCloser + consumed bool + compression int mu sync.Mutex digest, diffID *v1.Hash @@ -49,8 +50,29 @@ type Layer struct { var _ v1.Layer = (*Layer)(nil) +// LayerOption applies options to layer +type LayerOption func(*Layer) + +// WithCompressionLevel sets the gzip compression. See `gzip.NewWriterLevel` for possible values. +func WithCompressionLevel(level int) LayerOption { + return func(l *Layer) { + l.compression = level + } +} + // NewLayer creates a Layer from an io.ReadCloser. -func NewLayer(rc io.ReadCloser) *Layer { return &Layer{blob: rc} } +func NewLayer(rc io.ReadCloser, opts ...LayerOption) *Layer { + layer := &Layer{ + blob: rc, + compression: gzip.BestSpeed, + } + + for _, opt := range opts { + opt(layer) + } + + return layer +} // Digest implements v1.Layer. func (l *Layer) Digest() (v1.Hash, error) { @@ -121,7 +143,7 @@ func newCompressedReader(l *Layer) (*compressedReader, error) { // capture compressed digest, and a countWriter to capture compressed // size. pr, pw := io.Pipe() - zw, err := gzip.NewWriterLevel(io.MultiWriter(pw, zh, count), gzip.BestSpeed) + zw, err := gzip.NewWriterLevel(io.MultiWriter(pw, zh, count), l.compression) if err != nil { return nil, err } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go index 06ecd9a771..0d36125d6f 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go @@ -34,9 +34,9 @@ import ( type image struct { opener Opener - td *tarDescriptor + manifest *Manifest config []byte - imgDescriptor *singleImageTarDescriptor + imgDescriptor *Descriptor tag *name.Tag } @@ -100,24 +100,27 @@ func (i *image) MediaType() (types.MediaType, error) { return types.DockerManifestSchema2, nil } -// singleImageTarDescriptor is the struct used to represent a single image inside a `docker save` tarball. -type singleImageTarDescriptor struct { +// Descriptor stores the manifest data for a single image inside a `docker save` tarball. +type Descriptor struct { Config string RepoTags []string Layers []string + + // Tracks foreign layer info. Key is DiffID. + LayerSources map[v1.Hash]v1.Descriptor `json:",omitempty"` } -// tarDescriptor is the struct used inside the `manifest.json` file of a `docker save` tarball. -type tarDescriptor []singleImageTarDescriptor +// Manifest represents the manifests of all images as the `manifest.json` file in a `docker save` tarball. +type Manifest []Descriptor -func (td tarDescriptor) findSpecifiedImageDescriptor(tag *name.Tag) (*singleImageTarDescriptor, error) { +func (m Manifest) findDescriptor(tag *name.Tag) (*Descriptor, error) { if tag == nil { - if len(td) != 1 { + if len(m) != 1 { return nil, errors.New("tarball must contain only a single image to be used with tarball.Image") } - return &(td)[0], nil + return &(m)[0], nil } - for _, img := range td { + for _, img := range m { for _, tagStr := range img.RepoTags { repoTag, err := name.NewTag(tagStr) if err != nil { @@ -147,17 +150,17 @@ func (i *image) areLayersCompressed() (bool, error) { } func (i *image) loadTarDescriptorAndConfig() error { - td, err := extractFileFromTar(i.opener, "manifest.json") + m, err := extractFileFromTar(i.opener, "manifest.json") if err != nil { return err } - defer td.Close() + defer m.Close() - if err := json.NewDecoder(td).Decode(&i.td); err != nil { + if err := json.NewDecoder(m).Decode(&i.manifest); err != nil { return err } - i.imgDescriptor, err = i.td.findSpecifiedImageDescriptor(i.tag) + i.imgDescriptor, err = i.manifest.findDescriptor(i.tag) if err != nil { return err } @@ -211,9 +214,22 @@ func extractFileFromTar(opener Opener, filePath string) (io.ReadCloser, error) { // uncompressedLayerFromTarball implements partial.UncompressedLayer type uncompressedLayerFromTarball struct { - diffID v1.Hash - opener Opener - filePath string + diffID v1.Hash + mediaType types.MediaType + opener Opener + filePath string +} + +// foreignUncompressedLayer implements partial.UncompressedLayer but returns +// a custom descriptor. This allows the foreign layer URLs to be included in +// the generated image manifest for uncompressed layers. +type foreignUncompressedLayer struct { + uncompressedLayerFromTarball + desc v1.Descriptor +} + +func (fl *foreignUncompressedLayer) Descriptor() (*v1.Descriptor, error) { + return &fl.desc, nil } // DiffID implements partial.UncompressedLayer @@ -227,10 +243,7 @@ func (ulft *uncompressedLayerFromTarball) Uncompressed() (io.ReadCloser, error) } func (ulft *uncompressedLayerFromTarball) MediaType() (types.MediaType, error) { - // Technically the media type should be 'application/tar' but given that our - // v1.Layer doesn't force consumers to care about whether the layer is compressed - // we should be fine returning the DockerLayer media type - return types.DockerLayer, nil + return ulft.mediaType, nil } func (i *uncompressedImage) LayerByDiffID(h v1.Hash) (partial.UncompressedLayer, error) { @@ -240,10 +253,27 @@ func (i *uncompressedImage) LayerByDiffID(h v1.Hash) (partial.UncompressedLayer, } for idx, diffID := range cfg.RootFS.DiffIDs { if diffID == h { + // Technically the media type should be 'application/tar' but given that our + // v1.Layer doesn't force consumers to care about whether the layer is compressed + // we should be fine returning the DockerLayer media type + mt := types.DockerLayer + if bd, ok := i.imgDescriptor.LayerSources[h]; ok { + // Overwrite the mediaType for foreign layers. + return &foreignUncompressedLayer{ + uncompressedLayerFromTarball: uncompressedLayerFromTarball{ + diffID: diffID, + mediaType: bd.MediaType, + opener: i.opener, + filePath: i.imgDescriptor.Layers[idx], + }, + desc: bd, + }, nil + } return &uncompressedLayerFromTarball{ - diffID: diffID, - opener: i.opener, - filePath: i.imgDescriptor.Layers[idx], + diffID: diffID, + mediaType: mt, + opener: i.opener, + filePath: i.imgDescriptor.Layers[idx], }, nil } } @@ -277,21 +307,32 @@ func (c *compressedImage) Manifest() (*v1.Manifest, error) { }, } - for _, p := range c.imgDescriptor.Layers { - l, err := extractFileFromTar(c.opener, p) + for i, p := range c.imgDescriptor.Layers { + cfg, err := partial.ConfigFile(c) if err != nil { return nil, err } - defer l.Close() - sha, size, err := v1.SHA256(l) - if err != nil { - return nil, err + diffid := cfg.RootFS.DiffIDs[i] + if d, ok := c.imgDescriptor.LayerSources[diffid]; ok { + // If it's a foreign layer, just append the descriptor so we can avoid + // reading the entire file. + c.manifest.Layers = append(c.manifest.Layers, d) + } else { + l, err := extractFileFromTar(c.opener, p) + if err != nil { + return nil, err + } + defer l.Close() + sha, size, err := v1.SHA256(l) + if err != nil { + return nil, err + } + c.manifest.Layers = append(c.manifest.Layers, v1.Descriptor{ + MediaType: types.DockerLayer, + Size: size, + Digest: sha, + }) } - c.manifest.Layers = append(c.manifest.Layers, v1.Descriptor{ - MediaType: types.DockerLayer, - Size: size, - Digest: sha, - }) } return c.manifest, nil } @@ -302,14 +343,14 @@ func (c *compressedImage) RawManifest() ([]byte, error) { // compressedLayerFromTarball implements partial.CompressedLayer type compressedLayerFromTarball struct { - digest v1.Hash + desc v1.Descriptor opener Opener filePath string } // Digest implements partial.CompressedLayer func (clft *compressedLayerFromTarball) Digest() (v1.Hash, error) { - return clft.digest, nil + return clft.desc.Digest, nil } // Compressed implements partial.CompressedLayer @@ -319,18 +360,12 @@ func (clft *compressedLayerFromTarball) Compressed() (io.ReadCloser, error) { // MediaType implements partial.CompressedLayer func (clft *compressedLayerFromTarball) MediaType() (types.MediaType, error) { - return types.DockerLayer, nil + return clft.desc.MediaType, nil } // Size implements partial.CompressedLayer func (clft *compressedLayerFromTarball) Size() (int64, error) { - r, err := clft.Compressed() - if err != nil { - return -1, err - } - defer r.Close() - _, i, err := v1.SHA256(r) - return i, err + return clft.desc.Size, nil } func (c *compressedImage) LayerByDigest(h v1.Hash) (partial.CompressedLayer, error) { @@ -342,7 +377,7 @@ func (c *compressedImage) LayerByDigest(h v1.Hash) (partial.CompressedLayer, err if l.Digest == h { fp := c.imgDescriptor.Layers[i] return &compressedLayerFromTarball{ - digest: h, + desc: l, opener: c.opener, filePath: fp, }, nil diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go index 85c1b7838a..314a51f140 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go @@ -27,11 +27,12 @@ import ( ) type layer struct { - digest v1.Hash - diffID v1.Hash - size int64 - opener Opener - compressed bool + digest v1.Hash + diffID v1.Hash + size int64 + opener Opener + compressed bool + compression int } func (l *layer) Digest() (v1.Hash, error) { @@ -45,7 +46,7 @@ func (l *layer) DiffID() (v1.Hash, error) { func (l *layer) Compressed() (io.ReadCloser, error) { rc, err := l.opener() if err == nil && !l.compressed { - return v1util.GzipReadCloser(rc) + return v1util.GzipReadCloserLevel(rc, l.compression), nil } return rc, err @@ -68,16 +69,26 @@ func (l *layer) MediaType() (types.MediaType, error) { return types.DockerLayer, nil } +// LayerOption applies options to layer +type LayerOption func(*layer) + +// WithCompressionLevel sets the gzip compression. See `gzip.NewWriterLevel` for possible values. +func WithCompressionLevel(level int) LayerOption { + return func(l *layer) { + l.compression = level + } +} + // LayerFromFile returns a v1.Layer given a tarball -func LayerFromFile(path string) (v1.Layer, error) { +func LayerFromFile(path string, opts ...LayerOption) (v1.Layer, error) { opener := func() (io.ReadCloser, error) { return os.Open(path) } - return LayerFromOpener(opener) + return LayerFromOpener(opener, opts...) } // LayerFromOpener returns a v1.Layer given an Opener function -func LayerFromOpener(opener Opener) (v1.Layer, error) { +func LayerFromOpener(opener Opener, opts ...LayerOption) (v1.Layer, error) { rc, err := opener() if err != nil { return nil, err @@ -89,24 +100,25 @@ func LayerFromOpener(opener Opener) (v1.Layer, error) { return nil, err } - var digest v1.Hash - var size int64 - if digest, size, err = computeDigest(opener, compressed); err != nil { + layer := &layer{ + compressed: compressed, + compression: gzip.BestSpeed, + opener: opener, + } + + for _, opt := range opts { + opt(layer) + } + + if layer.digest, layer.size, err = computeDigest(opener, compressed, layer.compression); err != nil { return nil, err } - diffID, err := computeDiffID(opener, compressed) - if err != nil { + if layer.diffID, err = computeDiffID(opener, compressed); err != nil { return nil, err } - return &layer{ - digest: digest, - diffID: diffID, - size: size, - compressed: compressed, - opener: opener, - }, nil + return layer, nil } // LayerFromReader returns a v1.Layer given a io.Reader. @@ -121,7 +133,7 @@ func LayerFromReader(reader io.Reader) (v1.Layer, error) { }) } -func computeDigest(opener Opener, compressed bool) (v1.Hash, int64, error) { +func computeDigest(opener Opener, compressed bool, compression int) (v1.Hash, int64, error) { rc, err := opener() if err != nil { return v1.Hash{}, 0, err @@ -132,12 +144,7 @@ func computeDigest(opener Opener, compressed bool) (v1.Hash, int64, error) { return v1.SHA256(rc) } - reader, err := v1util.GzipReadCloser(ioutil.NopCloser(rc)) - if err != nil { - return v1.Hash{}, 0, err - } - - return v1.SHA256(reader) + return v1.SHA256(v1util.GzipReadCloserLevel(ioutil.NopCloser(rc), compression)) } func computeDiffID(opener Opener, compressed bool) (v1.Hash, error) { diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go index 2ee81f0b80..054d52b1fd 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go @@ -24,6 +24,7 @@ import ( "github.com/google/go-containerregistry/pkg/name" v1 "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/partial" ) // WriteToFile writes in the compressed format to a tarball, on disk. @@ -41,7 +42,7 @@ func WriteToFile(p string, ref name.Reference, img v1.Image) error { // MultiWriteToFile writes in the compressed format to a tarball, on disk. // This is just syntactic sugar wrapping tarball.MultiWrite with a new file. func MultiWriteToFile(p string, tagToImage map[name.Tag]v1.Image) error { - var refToImage map[name.Reference]v1.Image = make(map[name.Reference]v1.Image, len(tagToImage)) + refToImage := make(map[name.Reference]v1.Image, len(tagToImage)) for i, d := range tagToImage { refToImage[i] = d } @@ -71,7 +72,7 @@ func Write(ref name.Reference, img v1.Image, w io.Writer) error { // One file for each layer, named after the layer's SHA. // One file for the config blob, named after its SHA. func MultiWrite(tagToImage map[name.Tag]v1.Image, w io.Writer) error { - var refToImage map[name.Reference]v1.Image = make(map[name.Reference]v1.Image, len(tagToImage)) + refToImage := make(map[name.Reference]v1.Image, len(tagToImage)) for i, d := range tagToImage { refToImage[i] = d } @@ -88,8 +89,9 @@ func MultiRefWrite(refToImage map[name.Reference]v1.Image, w io.Writer) error { defer tf.Close() imageToTags := dedupRefToImage(refToImage) - var td tarDescriptor + var m Manifest + seenLayerDigests := make(map[string]struct{}) for img, tags := range imageToTags { // Write the config. cfgName, err := img.ConfigName() @@ -104,6 +106,9 @@ func MultiRefWrite(refToImage map[name.Reference]v1.Image, w io.Writer) error { return err } + // Store foreign layer info. + layerSources := make(map[v1.Hash]v1.Descriptor) + // Write the layers. layers, err := img.Layers() if err != nil { @@ -115,7 +120,6 @@ func MultiRefWrite(refToImage map[name.Reference]v1.Image, w io.Writer) error { if err != nil { return err } - // Munge the file name to appease ancient technology. // // tar assumes anything with a colon is a remote tape drive: @@ -127,6 +131,24 @@ func MultiRefWrite(refToImage map[name.Reference]v1.Image, w io.Writer) error { // https://www.gnu.org/software/gzip/manual/html_node/Overview.html layerFiles[i] = fmt.Sprintf("%s.tar.gz", hex) + if _, ok := seenLayerDigests[hex]; ok { + continue + } + seenLayerDigests[hex] = struct{}{} + + // Add to LayerSources if it's a foreign layer. + desc, err := partial.BlobDescriptor(img, d) + if err != nil { + return err + } + if !desc.MediaType.IsDistributable() { + diffid, err := partial.BlobToDiffID(img, d) + if err != nil { + return err + } + layerSources[diffid] = desc + } + r, err := l.Compressed() if err != nil { return err @@ -142,20 +164,19 @@ func MultiRefWrite(refToImage map[name.Reference]v1.Image, w io.Writer) error { } // Generate the tar descriptor and write it. - sitd := singleImageTarDescriptor{ - Config: cfgName.String(), - RepoTags: tags, - Layers: layerFiles, - } - - td = append(td, sitd) + m = append(m, Descriptor{ + Config: cfgName.String(), + RepoTags: tags, + Layers: layerFiles, + LayerSources: layerSources, + }) } - tdBytes, err := json.Marshal(td) + mBytes, err := json.Marshal(m) if err != nil { return err } - return writeTarEntry(tf, "manifest.json", bytes.NewReader(tdBytes), int64(len(tdBytes))) + return writeTarEntry(tf, "manifest.json", bytes.NewReader(mBytes), int64(len(mBytes))) } func dedupRefToImage(refToImage map[name.Reference]v1.Image) map[v1.Image][]string { @@ -178,7 +199,7 @@ func dedupRefToImage(refToImage map[name.Reference]v1.Image) map[v1.Image][]stri return imageToTags } -// write a file to the provided writer with a corresponding tar header +// Writes a file to the provided writer with a corresponding tar header func writeTarEntry(tf *tar.Writer, path string, r io.Reader, size int64) error { hdr := &tar.Header{ Mode: 0644, diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go b/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go index ddaf71962e..2b21ab0d99 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go @@ -37,4 +37,17 @@ const ( DockerPluginConfig MediaType = "application/vnd.docker.plugin.v1+json" DockerForeignLayer MediaType = "application/vnd.docker.image.rootfs.foreign.diff.tar.gzip" DockerUncompressedLayer MediaType = "application/vnd.docker.image.rootfs.diff.tar" + + OCIVendorPrefix = "vnd.oci" + DockerVendorPrefix = "vnd.docker" ) + +// IsDistributable returns true if a layer is distributable, see: +// https://github.com/opencontainers/image-spec/blob/master/layer.md#non-distributable-layers +func (m MediaType) IsDistributable() bool { + switch m { + case DockerForeignLayer, OCIRestrictedLayer, OCIUncompressedRestrictedLayer: + return false + } + return true +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/zip.go b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/zip.go index 2b0f24f6a2..8e48b8adc5 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/zip.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/zip.go @@ -25,7 +25,7 @@ var gzipMagicHeader = []byte{'\x1f', '\x8b'} // GzipReadCloser reads uncompressed input data from the io.ReadCloser and // returns an io.ReadCloser from which compressed data may be read. // This uses gzip.BestSpeed for the compression level. -func GzipReadCloser(r io.ReadCloser) (io.ReadCloser, error) { +func GzipReadCloser(r io.ReadCloser) io.ReadCloser { return GzipReadCloserLevel(r, gzip.BestSpeed) } @@ -33,23 +33,31 @@ func GzipReadCloser(r io.ReadCloser) (io.ReadCloser, error) { // returns an io.ReadCloser from which compressed data may be read. // Refer to compress/gzip for the level: // https://golang.org/pkg/compress/gzip/#pkg-constants -func GzipReadCloserLevel(r io.ReadCloser, level int) (io.ReadCloser, error) { +func GzipReadCloserLevel(r io.ReadCloser, level int) io.ReadCloser { pr, pw := io.Pipe() - go func() { + // Returns err so we can pw.CloseWithError(err) + go func() error { + // TODO(go1.14): Just defer {pw,gw,r}.Close like you'd expect. + // Context: https://golang.org/issue/24283 + gw, err := gzip.NewWriterLevel(pw, level) + if err != nil { + return pw.CloseWithError(err) + } + + if _, err := io.Copy(gw, r); err != nil { + defer r.Close() + defer gw.Close() + return pw.CloseWithError(err) + } defer pw.Close() defer r.Close() - - gw, _ := gzip.NewWriterLevel(pw, level) defer gw.Close() - _, err := io.Copy(gw, r) - if err != nil { - pr.CloseWithError(err) - } + return nil }() - return pr, nil + return pr } // GunzipReadCloser reads compressed input data from the io.ReadCloser and diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/validate/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/validate/image.go index c71d7d65e7..61477218bf 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/validate/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/validate/image.go @@ -15,15 +15,9 @@ package validate import ( - "archive/tar" "bytes" - "compress/gzip" - "crypto/sha256" - "encoding/hex" "errors" "fmt" - "io" - "io/ioutil" "strings" "github.com/google/go-cmp/cmp" @@ -114,87 +108,19 @@ func validateLayers(img v1.Image) error { digests := []v1.Hash{} diffids := []v1.Hash{} + udiffids := []v1.Hash{} sizes := []int64{} for _, layer := range layers { - // TODO: Test layer.Uncompressed. - compressed, err := layer.Compressed() + cl, err := computeLayer(layer) if err != nil { return err } - - // Keep track of compressed digest. - digester := sha256.New() - // Everything read from compressed is written to digester to compute digest. - hashCompressed := io.TeeReader(compressed, digester) - - // Call io.Copy to write from the layer Reader through to the tarReader on - // the other side of the pipe. - pr, pw := io.Pipe() - var size int64 - go func() { - n, err := io.Copy(pw, hashCompressed) - if err != nil { - pw.CloseWithError(err) - return - } - size = n - - // Now close the compressed reader, to flush the gzip stream - // and calculate digest/diffID/size. This will cause pr to - // return EOF which will cause readers of the Compressed stream - // to finish reading. - pw.CloseWithError(compressed.Close()) - }() - - // Read the bytes through gzip.Reader to compute the DiffID. - uncompressed, err := gzip.NewReader(pr) - if err != nil { - return err - } - diffider := sha256.New() - hashUncompressed := io.TeeReader(uncompressed, diffider) - - // Ensure there aren't duplicate file paths. - tarReader := tar.NewReader(hashUncompressed) - files := make(map[string]struct{}) - for { - hdr, err := tarReader.Next() - if err == io.EOF { - break - } - if err != nil { - return err - } - if _, ok := files[hdr.Name]; ok { - return fmt.Errorf("duplicate file path: %s", hdr.Name) - } - files[hdr.Name] = struct{}{} - } - - // Discard any trailing padding that the tar.Reader doesn't consume. - if _, err := io.Copy(ioutil.Discard, hashUncompressed); err != nil { - return err - } - - if err := uncompressed.Close(); err != nil { - return err - } - - digest := v1.Hash{ - Algorithm: "sha256", - Hex: hex.EncodeToString(digester.Sum(make([]byte, 0, digester.Size()))), - } - - diffid := v1.Hash{ - Algorithm: "sha256", - Hex: hex.EncodeToString(diffider.Sum(make([]byte, 0, diffider.Size()))), - } - // Compute all of these first before we call Config() and Manifest() to allow // for lazy access e.g. for stream.Layer. - digests = append(digests, digest) - diffids = append(diffids, diffid) - sizes = append(sizes, size) + digests = append(digests, cl.digest) + diffids = append(diffids, cl.diffid) + udiffids = append(udiffids, cl.uncompressedDiffid) + sizes = append(sizes, cl.size) } cf, err := img.ConfigFile() @@ -221,6 +147,18 @@ func validateLayers(img v1.Image) error { if err != nil { return err } + mediaType, err := layer.MediaType() + if err != nil { + return err + } + + if _, err := img.LayerByDigest(digest); err != nil { + return err + } + + if _, err := img.LayerByDiffID(diffid); err != nil { + return err + } if digest != digests[i] { errs = append(errs, fmt.Sprintf("mismatched layer[%d] digest: Digest()=%s, SHA256(Compressed())=%s", i, digest, digests[i])) @@ -234,6 +172,10 @@ func validateLayers(img v1.Image) error { errs = append(errs, fmt.Sprintf("mismatched layer[%d] diffid: DiffID()=%s, SHA256(Gunzip(Compressed()))=%s", i, diffid, diffids[i])) } + if diffid != udiffids[i] { + errs = append(errs, fmt.Sprintf("mismatched layer[%d] diffid: DiffID()=%s, SHA256(Uncompressed())=%s", i, diffid, udiffids[i])) + } + if cf.RootFS.DiffIDs[i] != diffids[i] { errs = append(errs, fmt.Sprintf("mismatched layer[%d] diffid: ConfigFile.RootFS.DiffIDs[%d]=%s, SHA256(Gunzip(Compressed()))=%s", i, i, cf.RootFS.DiffIDs[i], diffids[i])) } @@ -246,6 +188,9 @@ func validateLayers(img v1.Image) error { errs = append(errs, fmt.Sprintf("mismatched layer[%d] size: Manifest.Layers[%d].Size=%d, len(Compressed())=%d", i, i, m.Layers[i].Size, sizes[i])) } + if m.Layers[i].MediaType != mediaType { + errs = append(errs, fmt.Sprintf("mismatched layer[%d] mediaType: Manifest.Layers[%d].MediaType=%s, layer.MediaType()=%s", i, i, m.Layers[i].MediaType, mediaType)) + } } if len(errs) != 0 { return errors.New(strings.Join(errs, "\n")) @@ -260,6 +205,11 @@ func validateManifest(img v1.Image) error { return err } + size, err := img.Size() + if err != nil { + return err + } + rm, err := img.RawManifest() if err != nil { return err @@ -289,6 +239,10 @@ func validateManifest(img v1.Image) error { errs = append(errs, fmt.Sprintf("mismatched manifest content: (-ParseManifest(RawManifest()) +Manifest()) %s", diff)) } + if size != int64(len(rm)) { + errs = append(errs, fmt.Sprintf("mismatched manifest size: Size()=%d, len(RawManifest())=%d", size, len(rm))) + } + if len(errs) != 0 { return errors.New(strings.Join(errs, "\n")) } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/validate/index.go b/vendor/github.com/google/go-containerregistry/pkg/v1/validate/index.go index 871e241537..71648461b7 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/validate/index.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/validate/index.go @@ -21,6 +21,7 @@ import ( "strings" "github.com/google/go-cmp/cmp" + "github.com/google/go-containerregistry/pkg/logs" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/types" ) @@ -60,6 +61,9 @@ func validateChildren(idx v1.ImageIndex) error { if err := Index(idx); err != nil { errs = append(errs, fmt.Sprintf("failed to validate index Manifests[%d](%s): %v", i, desc.Digest, err)) } + if err := validateMediaType(idx, desc.MediaType); err != nil { + errs = append(errs, fmt.Sprintf("failed to validate index MediaType[%d](%s): %v", i, desc.Digest, err)) + } case types.OCIManifestSchema1, types.DockerManifestSchema2: img, err := idx.Image(desc.Digest) if err != nil { @@ -68,8 +72,11 @@ func validateChildren(idx v1.ImageIndex) error { if err := Image(img); err != nil { errs = append(errs, fmt.Sprintf("failed to validate image Manifests[%d](%s): %v", i, desc.Digest, err)) } + if err := validateMediaType(img, desc.MediaType); err != nil { + errs = append(errs, fmt.Sprintf("failed to validate image MediaType[%d](%s): %v", i, desc.Digest, err)) + } default: - return fmt.Errorf("todo: validate index Blob()") + logs.Warn.Printf("Unexpected manifest: %s", desc.MediaType) } } @@ -80,12 +87,33 @@ func validateChildren(idx v1.ImageIndex) error { return nil } +type withMediaType interface { + MediaType() (types.MediaType, error) +} + +func validateMediaType(i withMediaType, want types.MediaType) error { + got, err := i.MediaType() + if err != nil { + return err + } + if want != got { + return fmt.Errorf("mismatched mediaType: MediaType() = %v != %v", got, want) + } + + return nil +} + func validateIndexManifest(idx v1.ImageIndex) error { digest, err := idx.Digest() if err != nil { return err } + size, err := idx.Size() + if err != nil { + return err + } + rm, err := idx.RawManifest() if err != nil { return err @@ -115,6 +143,10 @@ func validateIndexManifest(idx v1.ImageIndex) error { errs = append(errs, fmt.Sprintf("mismatched manifest content: (-ParseIndexManifest(RawManifest()) +Manifest()) %s", diff)) } + if size != int64(len(rm)) { + errs = append(errs, fmt.Sprintf("mismatched manifest size: Size()=%d, len(RawManifest())=%d", size, len(rm))) + } + if len(errs) != 0 { return errors.New(strings.Join(errs, "\n")) } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/validate/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/validate/layer.go new file mode 100644 index 0000000000..e259e8691f --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/validate/layer.go @@ -0,0 +1,178 @@ +// Copyright 2019 Google LLC All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package validate + +import ( + "archive/tar" + "compress/gzip" + "crypto/sha256" + "encoding/hex" + "errors" + "fmt" + "io" + "io/ioutil" + "strings" + + v1 "github.com/google/go-containerregistry/pkg/v1" +) + +// Layer validates that the values return by its methods are consistent with the +// contents returned by Compressed and Uncompressed. +func Layer(layer v1.Layer) error { + cl, err := computeLayer(layer) + if err != nil { + return err + } + + errs := []string{} + + digest, err := layer.Digest() + if err != nil { + return err + } + diffid, err := layer.DiffID() + if err != nil { + return err + } + size, err := layer.Size() + if err != nil { + return err + } + + if digest != cl.digest { + errs = append(errs, fmt.Sprintf("mismatched digest: Digest()=%s, SHA256(Compressed())=%s", digest, cl.digest)) + } + + if diffid != cl.diffid { + errs = append(errs, fmt.Sprintf("mismatched diffid: DiffID()=%s, SHA256(Gunzip(Compressed()))=%s", diffid, cl.diffid)) + } + + if diffid != cl.uncompressedDiffid { + errs = append(errs, fmt.Sprintf("mismatched diffid: DiffID()=%s, SHA256(Uncompressed())=%s", diffid, cl.uncompressedDiffid)) + } + + if size != cl.size { + errs = append(errs, fmt.Sprintf("mismatched size: Size()=%d, len(Compressed())=%d", size, cl.size)) + } + + if len(errs) != 0 { + return errors.New(strings.Join(errs, "\n")) + } + + return nil +} + +type computedLayer struct { + // Calculated from Compressed stream. + digest v1.Hash + size int64 + diffid v1.Hash + + // Calculated from Uncompressed stream. + uncompressedDiffid v1.Hash + uncompressedSize int64 +} + +func computeLayer(layer v1.Layer) (*computedLayer, error) { + compressed, err := layer.Compressed() + if err != nil { + return nil, err + } + + // Keep track of compressed digest. + digester := sha256.New() + // Everything read from compressed is written to digester to compute digest. + hashCompressed := io.TeeReader(compressed, digester) + + // Call io.Copy to write from the layer Reader through to the tarReader on + // the other side of the pipe. + pr, pw := io.Pipe() + var size int64 + go func() { + n, err := io.Copy(pw, hashCompressed) + if err != nil { + pw.CloseWithError(err) + return + } + size = n + + // Now close the compressed reader, to flush the gzip stream + // and calculate digest/diffID/size. This will cause pr to + // return EOF which will cause readers of the Compressed stream + // to finish reading. + pw.CloseWithError(compressed.Close()) + }() + + // Read the bytes through gzip.Reader to compute the DiffID. + uncompressed, err := gzip.NewReader(pr) + if err != nil { + return nil, err + } + diffider := sha256.New() + hashUncompressed := io.TeeReader(uncompressed, diffider) + + // Ensure there aren't duplicate file paths. + tarReader := tar.NewReader(hashUncompressed) + files := make(map[string]struct{}) + for { + hdr, err := tarReader.Next() + if err == io.EOF { + break + } + if err != nil { + return nil, err + } + if _, ok := files[hdr.Name]; ok { + return nil, fmt.Errorf("duplicate file path: %s", hdr.Name) + } + files[hdr.Name] = struct{}{} + } + + // Discard any trailing padding that the tar.Reader doesn't consume. + if _, err := io.Copy(ioutil.Discard, hashUncompressed); err != nil { + return nil, err + } + + if err := uncompressed.Close(); err != nil { + return nil, err + } + + digest := v1.Hash{ + Algorithm: "sha256", + Hex: hex.EncodeToString(digester.Sum(make([]byte, 0, digester.Size()))), + } + + diffid := v1.Hash{ + Algorithm: "sha256", + Hex: hex.EncodeToString(diffider.Sum(make([]byte, 0, diffider.Size()))), + } + + ur, err := layer.Uncompressed() + if err != nil { + return nil, err + } + udiffid, usize, err := v1.SHA256(ur) + if err != nil { + return nil, err + } + + return &computedLayer{ + digest: digest, + diffid: diffid, + size: size, + uncompressedDiffid: udiffid, + uncompressedSize: usize, + }, nil +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go b/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go index 3440b5e130..3f92f09135 100644 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go @@ -98,7 +98,6 @@ func (in *ConfigFile) DeepCopyInto(out *ConfigFile) { } in.RootFS.DeepCopyInto(&out.RootFS) in.Config.DeepCopyInto(&out.Config) - in.ContainerConfig.DeepCopyInto(&out.ContainerConfig) return } @@ -269,6 +268,11 @@ func (in *Platform) DeepCopyInto(out *Platform) { *out = make([]string, len(*in)) copy(*out, *in) } + if in.Features != nil { + in, out := &in.Features, &out.Features + *out = make([]string, len(*in)) + copy(*out, *in) + } return } diff --git a/vendor/github.com/google/gofuzz/go.mod b/vendor/github.com/google/gofuzz/go.mod new file mode 100644 index 0000000000..8ec4fe9e97 --- /dev/null +++ b/vendor/github.com/google/gofuzz/go.mod @@ -0,0 +1,3 @@ +module github.com/google/gofuzz + +go 1.12 diff --git a/vendor/github.com/hashicorp/go-immutable-radix/go.mod b/vendor/github.com/hashicorp/go-immutable-radix/go.mod new file mode 100644 index 0000000000..27e7b7c955 --- /dev/null +++ b/vendor/github.com/hashicorp/go-immutable-radix/go.mod @@ -0,0 +1,6 @@ +module github.com/hashicorp/go-immutable-radix + +require ( + github.com/hashicorp/go-uuid v1.0.0 + github.com/hashicorp/golang-lru v0.5.0 +) diff --git a/vendor/github.com/hashicorp/go-immutable-radix/go.sum b/vendor/github.com/hashicorp/go-immutable-radix/go.sum new file mode 100644 index 0000000000..7de5dfc503 --- /dev/null +++ b/vendor/github.com/hashicorp/go-immutable-radix/go.sum @@ -0,0 +1,4 @@ +github.com/hashicorp/go-uuid v1.0.0 h1:RS8zrF7PhGwyNPOtxSClXXj9HA8feRnJzgnI1RJCSnM= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= diff --git a/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go b/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go index 744cac01c6..74c7077440 100644 --- a/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go +++ b/vendor/github.com/hashicorp/golang-lru/simplelru/lru_interface.go @@ -1,37 +1,36 @@ package simplelru - // LRUCache is the interface for simple LRU cache. type LRUCache interface { - // Adds a value to the cache, returns true if an eviction occurred and - // updates the "recently used"-ness of the key. - Add(key, value interface{}) bool + // Adds a value to the cache, returns true if an eviction occurred and + // updates the "recently used"-ness of the key. + Add(key, value interface{}) bool - // Returns key's value from the cache and - // updates the "recently used"-ness of the key. #value, isFound - Get(key interface{}) (value interface{}, ok bool) + // Returns key's value from the cache and + // updates the "recently used"-ness of the key. #value, isFound + Get(key interface{}) (value interface{}, ok bool) - // Check if a key exsists in cache without updating the recent-ness. - Contains(key interface{}) (ok bool) + // Check if a key exsists in cache without updating the recent-ness. + Contains(key interface{}) (ok bool) - // Returns key's value without updating the "recently used"-ness of the key. - Peek(key interface{}) (value interface{}, ok bool) + // Returns key's value without updating the "recently used"-ness of the key. + Peek(key interface{}) (value interface{}, ok bool) - // Removes a key from the cache. - Remove(key interface{}) bool + // Removes a key from the cache. + Remove(key interface{}) bool - // Removes the oldest entry from cache. - RemoveOldest() (interface{}, interface{}, bool) + // Removes the oldest entry from cache. + RemoveOldest() (interface{}, interface{}, bool) - // Returns the oldest entry from the cache. #key, value, isFound - GetOldest() (interface{}, interface{}, bool) + // Returns the oldest entry from the cache. #key, value, isFound + GetOldest() (interface{}, interface{}, bool) - // Returns a slice of the keys in the cache, from oldest to newest. - Keys() []interface{} + // Returns a slice of the keys in the cache, from oldest to newest. + Keys() []interface{} - // Returns the number of items in the cache. - Len() int + // Returns the number of items in the cache. + Len() int - // Clear all cache entries - Purge() + // Clear all cache entries + Purge() } diff --git a/vendor/github.com/json-iterator/go/README.md b/vendor/github.com/json-iterator/go/README.md index 54d5afe957..50d56ffbf0 100644 --- a/vendor/github.com/json-iterator/go/README.md +++ b/vendor/github.com/json-iterator/go/README.md @@ -10,10 +10,6 @@ A high-performance 100% compatible drop-in replacement of "encoding/json" You can also use thrift like JSON using [thrift-iterator](https://github.com/thrift-iterator/go) -``` -Go开发者们请加入我们,滴滴出行平台技术部 taowen@didichuxing.com -``` - # Benchmark ![benchmark](http://jsoniter.com/benchmarks/go-benchmark.png) diff --git a/vendor/github.com/json-iterator/go/adapter.go b/vendor/github.com/json-iterator/go/adapter.go index f371bfed76..92d2cc4a3d 100644 --- a/vendor/github.com/json-iterator/go/adapter.go +++ b/vendor/github.com/json-iterator/go/adapter.go @@ -16,7 +16,7 @@ func Unmarshal(data []byte, v interface{}) error { return ConfigDefault.Unmarshal(data, v) } -// UnmarshalFromString convenient method to read from string instead of []byte +// UnmarshalFromString is a convenient method to read from string instead of []byte func UnmarshalFromString(str string, v interface{}) error { return ConfigDefault.UnmarshalFromString(str, v) } @@ -81,10 +81,12 @@ func (adapter *Decoder) More() bool { if iter.Error != nil { return false } - if iter.head != iter.tail { - return true + c := iter.nextToken() + if c == 0 { + return false } - return iter.loadMore() + iter.unreadByte() + return c != ']' && c != '}' } // Buffered remaining buffer @@ -98,7 +100,7 @@ func (adapter *Decoder) Buffered() io.Reader { func (adapter *Decoder) UseNumber() { cfg := adapter.iter.cfg.configBeforeFrozen cfg.UseNumber = true - adapter.iter.cfg = cfg.frozeWithCacheReuse() + adapter.iter.cfg = cfg.frozeWithCacheReuse(adapter.iter.cfg.extraExtensions) } // DisallowUnknownFields causes the Decoder to return an error when the destination @@ -107,7 +109,7 @@ func (adapter *Decoder) UseNumber() { func (adapter *Decoder) DisallowUnknownFields() { cfg := adapter.iter.cfg.configBeforeFrozen cfg.DisallowUnknownFields = true - adapter.iter.cfg = cfg.frozeWithCacheReuse() + adapter.iter.cfg = cfg.frozeWithCacheReuse(adapter.iter.cfg.extraExtensions) } // NewEncoder same as json.NewEncoder @@ -132,14 +134,14 @@ func (adapter *Encoder) Encode(val interface{}) error { func (adapter *Encoder) SetIndent(prefix, indent string) { config := adapter.stream.cfg.configBeforeFrozen config.IndentionStep = len(indent) - adapter.stream.cfg = config.frozeWithCacheReuse() + adapter.stream.cfg = config.frozeWithCacheReuse(adapter.stream.cfg.extraExtensions) } // SetEscapeHTML escape html by default, set to false to disable func (adapter *Encoder) SetEscapeHTML(escapeHTML bool) { config := adapter.stream.cfg.configBeforeFrozen config.EscapeHTML = escapeHTML - adapter.stream.cfg = config.frozeWithCacheReuse() + adapter.stream.cfg = config.frozeWithCacheReuse(adapter.stream.cfg.extraExtensions) } // Valid reports whether data is a valid JSON encoding. diff --git a/vendor/github.com/json-iterator/go/any.go b/vendor/github.com/json-iterator/go/any.go index daecfed615..f6b8aeab0a 100644 --- a/vendor/github.com/json-iterator/go/any.go +++ b/vendor/github.com/json-iterator/go/any.go @@ -312,6 +312,10 @@ func (codec *directAnyCodec) Decode(ptr unsafe.Pointer, iter *Iterator) { func (codec *directAnyCodec) Encode(ptr unsafe.Pointer, stream *Stream) { any := *(*Any)(ptr) + if any == nil { + stream.WriteNil() + return + } any.WriteTo(stream) } diff --git a/vendor/github.com/json-iterator/go/config.go b/vendor/github.com/json-iterator/go/config.go index 835819129c..8c58fcba59 100644 --- a/vendor/github.com/json-iterator/go/config.go +++ b/vendor/github.com/json-iterator/go/config.go @@ -74,7 +74,9 @@ type frozenConfig struct { disallowUnknownFields bool decoderCache *concurrent.Map encoderCache *concurrent.Map - extensions []Extension + encoderExtension Extension + decoderExtension Extension + extraExtensions []Extension streamPool *sync.Pool iteratorPool *sync.Pool caseSensitive bool @@ -158,22 +160,21 @@ func (cfg Config) Froze() API { if cfg.ValidateJsonRawMessage { api.validateJsonRawMessage(encoderExtension) } - if len(encoderExtension) > 0 { - api.extensions = append(api.extensions, encoderExtension) - } - if len(decoderExtension) > 0 { - api.extensions = append(api.extensions, decoderExtension) - } + api.encoderExtension = encoderExtension + api.decoderExtension = decoderExtension api.configBeforeFrozen = cfg return api } -func (cfg Config) frozeWithCacheReuse() *frozenConfig { +func (cfg Config) frozeWithCacheReuse(extraExtensions []Extension) *frozenConfig { api := getFrozenConfigFromCache(cfg) if api != nil { return api } api = cfg.Froze().(*frozenConfig) + for _, extension := range extraExtensions { + api.RegisterExtension(extension) + } addFrozenConfigToCache(cfg, api) return api } @@ -190,7 +191,7 @@ func (cfg *frozenConfig) validateJsonRawMessage(extension EncoderExtension) { stream.WriteRaw(string(rawMessage)) } }, func(ptr unsafe.Pointer) bool { - return false + return len(*((*json.RawMessage)(ptr))) == 0 }} extension[reflect2.TypeOfPtr((*json.RawMessage)(nil)).Elem()] = encoder extension[reflect2.TypeOfPtr((*RawMessage)(nil)).Elem()] = encoder @@ -219,7 +220,9 @@ func (cfg *frozenConfig) getTagKey() string { } func (cfg *frozenConfig) RegisterExtension(extension Extension) { - cfg.extensions = append(cfg.extensions, extension) + cfg.extraExtensions = append(cfg.extraExtensions, extension) + copied := cfg.configBeforeFrozen + cfg.configBeforeFrozen = copied } type lossyFloat32Encoder struct { @@ -314,7 +317,7 @@ func (cfg *frozenConfig) MarshalIndent(v interface{}, prefix, indent string) ([] } newCfg := cfg.configBeforeFrozen newCfg.IndentionStep = len(indent) - return newCfg.frozeWithCacheReuse().Marshal(v) + return newCfg.frozeWithCacheReuse(cfg.extraExtensions).Marshal(v) } func (cfg *frozenConfig) UnmarshalFromString(str string, v interface{}) error { diff --git a/vendor/github.com/json-iterator/go/go.mod b/vendor/github.com/json-iterator/go/go.mod new file mode 100644 index 0000000000..e05c42ff58 --- /dev/null +++ b/vendor/github.com/json-iterator/go/go.mod @@ -0,0 +1,11 @@ +module github.com/json-iterator/go + +go 1.12 + +require ( + github.com/davecgh/go-spew v1.1.1 + github.com/google/gofuzz v1.0.0 + github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 + github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 + github.com/stretchr/testify v1.3.0 +) diff --git a/vendor/github.com/json-iterator/go/go.sum b/vendor/github.com/json-iterator/go/go.sum new file mode 100644 index 0000000000..d778b5a14d --- /dev/null +++ b/vendor/github.com/json-iterator/go/go.sum @@ -0,0 +1,14 @@ +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/vendor/github.com/json-iterator/go/iter.go b/vendor/github.com/json-iterator/go/iter.go index 95ae54fbfe..29b31cf789 100644 --- a/vendor/github.com/json-iterator/go/iter.go +++ b/vendor/github.com/json-iterator/go/iter.go @@ -74,6 +74,7 @@ type Iterator struct { buf []byte head int tail int + depth int captureStartedAt int captured []byte Error error @@ -88,6 +89,7 @@ func NewIterator(cfg API) *Iterator { buf: nil, head: 0, tail: 0, + depth: 0, } } @@ -99,6 +101,7 @@ func Parse(cfg API, reader io.Reader, bufSize int) *Iterator { buf: make([]byte, bufSize), head: 0, tail: 0, + depth: 0, } } @@ -110,6 +113,7 @@ func ParseBytes(cfg API, input []byte) *Iterator { buf: input, head: 0, tail: len(input), + depth: 0, } } @@ -128,6 +132,7 @@ func (iter *Iterator) Reset(reader io.Reader) *Iterator { iter.reader = reader iter.head = 0 iter.tail = 0 + iter.depth = 0 return iter } @@ -137,6 +142,7 @@ func (iter *Iterator) ResetBytes(input []byte) *Iterator { iter.buf = input iter.head = 0 iter.tail = len(input) + iter.depth = 0 return iter } @@ -320,3 +326,24 @@ func (iter *Iterator) Read() interface{} { return nil } } + +// limit maximum depth of nesting, as allowed by https://tools.ietf.org/html/rfc7159#section-9 +const maxDepth = 10000 + +func (iter *Iterator) incrementDepth() (success bool) { + iter.depth++ + if iter.depth <= maxDepth { + return true + } + iter.ReportError("incrementDepth", "exceeded max depth") + return false +} + +func (iter *Iterator) decrementDepth() (success bool) { + iter.depth-- + if iter.depth >= 0 { + return true + } + iter.ReportError("decrementDepth", "unexpected negative nesting") + return false +} diff --git a/vendor/github.com/json-iterator/go/iter_array.go b/vendor/github.com/json-iterator/go/iter_array.go index 6188cb4577..204fe0e092 100644 --- a/vendor/github.com/json-iterator/go/iter_array.go +++ b/vendor/github.com/json-iterator/go/iter_array.go @@ -28,26 +28,32 @@ func (iter *Iterator) ReadArray() (ret bool) { func (iter *Iterator) ReadArrayCB(callback func(*Iterator) bool) (ret bool) { c := iter.nextToken() if c == '[' { + if !iter.incrementDepth() { + return false + } c = iter.nextToken() if c != ']' { iter.unreadByte() if !callback(iter) { + iter.decrementDepth() return false } c = iter.nextToken() for c == ',' { if !callback(iter) { + iter.decrementDepth() return false } c = iter.nextToken() } if c != ']' { iter.ReportError("ReadArrayCB", "expect ] in the end, but found "+string([]byte{c})) + iter.decrementDepth() return false } - return true + return iter.decrementDepth() } - return true + return iter.decrementDepth() } if c == 'n' { iter.skipThreeBytes('u', 'l', 'l') diff --git a/vendor/github.com/json-iterator/go/iter_float.go b/vendor/github.com/json-iterator/go/iter_float.go index 4f883c0959..b9754638e8 100644 --- a/vendor/github.com/json-iterator/go/iter_float.go +++ b/vendor/github.com/json-iterator/go/iter_float.go @@ -77,14 +77,12 @@ func (iter *Iterator) ReadFloat32() (ret float32) { } func (iter *Iterator) readPositiveFloat32() (ret float32) { - value := uint64(0) - c := byte(' ') i := iter.head // first char if i == iter.tail { return iter.readFloat32SlowPath() } - c = iter.buf[i] + c := iter.buf[i] i++ ind := floatDigits[c] switch ind { @@ -107,7 +105,7 @@ func (iter *Iterator) readPositiveFloat32() (ret float32) { return } } - value = uint64(ind) + value := uint64(ind) // chars before dot non_decimal_loop: for ; i < iter.tail; i++ { @@ -145,9 +143,7 @@ non_decimal_loop: } // too many decimal places return iter.readFloat32SlowPath() - case invalidCharForNumber: - fallthrough - case dotInNumber: + case invalidCharForNumber, dotInNumber: return iter.readFloat32SlowPath() } decimalPlaces++ @@ -218,14 +214,12 @@ func (iter *Iterator) ReadFloat64() (ret float64) { } func (iter *Iterator) readPositiveFloat64() (ret float64) { - value := uint64(0) - c := byte(' ') i := iter.head // first char if i == iter.tail { return iter.readFloat64SlowPath() } - c = iter.buf[i] + c := iter.buf[i] i++ ind := floatDigits[c] switch ind { @@ -248,7 +242,7 @@ func (iter *Iterator) readPositiveFloat64() (ret float64) { return } } - value = uint64(ind) + value := uint64(ind) // chars before dot non_decimal_loop: for ; i < iter.tail; i++ { @@ -286,9 +280,7 @@ non_decimal_loop: } // too many decimal places return iter.readFloat64SlowPath() - case invalidCharForNumber: - fallthrough - case dotInNumber: + case invalidCharForNumber, dotInNumber: return iter.readFloat64SlowPath() } decimalPlaces++ diff --git a/vendor/github.com/json-iterator/go/iter_object.go b/vendor/github.com/json-iterator/go/iter_object.go index 6e7c370abe..b65137114f 100644 --- a/vendor/github.com/json-iterator/go/iter_object.go +++ b/vendor/github.com/json-iterator/go/iter_object.go @@ -2,7 +2,7 @@ package jsoniter import ( "fmt" - "unicode" + "strings" ) // ReadObject read one field from object. @@ -96,13 +96,12 @@ func (iter *Iterator) readFieldHash() int64 { } func calcHash(str string, caseSensitive bool) int64 { + if !caseSensitive { + str = strings.ToLower(str) + } hash := int64(0x811c9dc5) - for _, b := range str { - if caseSensitive { - hash ^= int64(b) - } else { - hash ^= int64(unicode.ToLower(b)) - } + for _, b := range []byte(str) { + hash ^= int64(b) hash *= 0x1000193 } return int64(hash) @@ -113,6 +112,9 @@ func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool { c := iter.nextToken() var field string if c == '{' { + if !iter.incrementDepth() { + return false + } c = iter.nextToken() if c == '"' { iter.unreadByte() @@ -122,6 +124,7 @@ func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool { iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c})) } if !callback(iter, field) { + iter.decrementDepth() return false } c = iter.nextToken() @@ -132,20 +135,23 @@ func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool { iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c})) } if !callback(iter, field) { + iter.decrementDepth() return false } c = iter.nextToken() } if c != '}' { iter.ReportError("ReadObjectCB", `object not ended with }`) + iter.decrementDepth() return false } - return true + return iter.decrementDepth() } if c == '}' { - return true + return iter.decrementDepth() } iter.ReportError("ReadObjectCB", `expect " after }, but found `+string([]byte{c})) + iter.decrementDepth() return false } if c == 'n' { @@ -160,15 +166,20 @@ func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool { func (iter *Iterator) ReadMapCB(callback func(*Iterator, string) bool) bool { c := iter.nextToken() if c == '{' { + if !iter.incrementDepth() { + return false + } c = iter.nextToken() if c == '"' { iter.unreadByte() field := iter.ReadString() if iter.nextToken() != ':' { iter.ReportError("ReadMapCB", "expect : after object field, but found "+string([]byte{c})) + iter.decrementDepth() return false } if !callback(iter, field) { + iter.decrementDepth() return false } c = iter.nextToken() @@ -176,23 +187,27 @@ func (iter *Iterator) ReadMapCB(callback func(*Iterator, string) bool) bool { field = iter.ReadString() if iter.nextToken() != ':' { iter.ReportError("ReadMapCB", "expect : after object field, but found "+string([]byte{c})) + iter.decrementDepth() return false } if !callback(iter, field) { + iter.decrementDepth() return false } c = iter.nextToken() } if c != '}' { iter.ReportError("ReadMapCB", `object not ended with }`) + iter.decrementDepth() return false } - return true + return iter.decrementDepth() } if c == '}' { - return true + return iter.decrementDepth() } iter.ReportError("ReadMapCB", `expect " after }, but found `+string([]byte{c})) + iter.decrementDepth() return false } if c == 'n' { diff --git a/vendor/github.com/json-iterator/go/iter_skip.go b/vendor/github.com/json-iterator/go/iter_skip.go index f58beb9137..e91eefb15b 100644 --- a/vendor/github.com/json-iterator/go/iter_skip.go +++ b/vendor/github.com/json-iterator/go/iter_skip.go @@ -37,17 +37,24 @@ func (iter *Iterator) SkipAndReturnBytes() []byte { return iter.stopCapture() } -type captureBuffer struct { - startedAt int - captured []byte +// SkipAndAppendBytes skips next JSON element and appends its content to +// buffer, returning the result. +func (iter *Iterator) SkipAndAppendBytes(buf []byte) []byte { + iter.startCaptureTo(buf, iter.head) + iter.Skip() + return iter.stopCapture() } -func (iter *Iterator) startCapture(captureStartedAt int) { +func (iter *Iterator) startCaptureTo(buf []byte, captureStartedAt int) { if iter.captured != nil { panic("already in capture mode") } iter.captureStartedAt = captureStartedAt - iter.captured = make([]byte, 0, 32) + iter.captured = buf +} + +func (iter *Iterator) startCapture(captureStartedAt int) { + iter.startCaptureTo(make([]byte, 0, 32), captureStartedAt) } func (iter *Iterator) stopCapture() []byte { @@ -58,13 +65,7 @@ func (iter *Iterator) stopCapture() []byte { remaining := iter.buf[iter.captureStartedAt:iter.head] iter.captureStartedAt = -1 iter.captured = nil - if len(captured) == 0 { - copied := make([]byte, len(remaining)) - copy(copied, remaining) - return copied - } - captured = append(captured, remaining...) - return captured + return append(captured, remaining...) } // Skip skips a json object and positions to relatively the next json object diff --git a/vendor/github.com/json-iterator/go/iter_skip_sloppy.go b/vendor/github.com/json-iterator/go/iter_skip_sloppy.go index 8fcdc3b69b..9303de41e4 100644 --- a/vendor/github.com/json-iterator/go/iter_skip_sloppy.go +++ b/vendor/github.com/json-iterator/go/iter_skip_sloppy.go @@ -22,6 +22,9 @@ func (iter *Iterator) skipNumber() { func (iter *Iterator) skipArray() { level := 1 + if !iter.incrementDepth() { + return + } for { for i := iter.head; i < iter.tail; i++ { switch iter.buf[i] { @@ -31,8 +34,14 @@ func (iter *Iterator) skipArray() { i = iter.head - 1 // it will be i++ soon case '[': // If open symbol, increase level level++ + if !iter.incrementDepth() { + return + } case ']': // If close symbol, increase level level-- + if !iter.decrementDepth() { + return + } // If we have returned to the original level, we're done if level == 0 { @@ -50,6 +59,10 @@ func (iter *Iterator) skipArray() { func (iter *Iterator) skipObject() { level := 1 + if !iter.incrementDepth() { + return + } + for { for i := iter.head; i < iter.tail; i++ { switch iter.buf[i] { @@ -59,8 +72,14 @@ func (iter *Iterator) skipObject() { i = iter.head - 1 // it will be i++ soon case '{': // If open symbol, increase level level++ + if !iter.incrementDepth() { + return + } case '}': // If close symbol, increase level level-- + if !iter.decrementDepth() { + return + } // If we have returned to the original level, we're done if level == 0 { diff --git a/vendor/github.com/json-iterator/go/iter_skip_strict.go b/vendor/github.com/json-iterator/go/iter_skip_strict.go index f67bc2e831..6cf66d0438 100644 --- a/vendor/github.com/json-iterator/go/iter_skip_strict.go +++ b/vendor/github.com/json-iterator/go/iter_skip_strict.go @@ -2,12 +2,22 @@ package jsoniter -import "fmt" +import ( + "fmt" + "io" +) func (iter *Iterator) skipNumber() { if !iter.trySkipNumber() { iter.unreadByte() - iter.ReadFloat32() + if iter.Error != nil && iter.Error != io.EOF { + return + } + iter.ReadFloat64() + if iter.Error != nil && iter.Error != io.EOF { + iter.Error = nil + iter.ReadBigFloat() + } } } diff --git a/vendor/github.com/json-iterator/go/reflect.go b/vendor/github.com/json-iterator/go/reflect.go index be7a0e2188..74974ba74b 100644 --- a/vendor/github.com/json-iterator/go/reflect.go +++ b/vendor/github.com/json-iterator/go/reflect.go @@ -60,6 +60,7 @@ func (b *ctx) append(prefix string) *ctx { // ReadVal copy the underlying JSON into go interface, same as json.Unmarshal func (iter *Iterator) ReadVal(obj interface{}) { + depth := iter.depth cacheKey := reflect2.RTypeOf(obj) decoder := iter.cfg.getDecoderFromCache(cacheKey) if decoder == nil { @@ -76,6 +77,10 @@ func (iter *Iterator) ReadVal(obj interface{}) { return } decoder.Decode(ptr, iter) + if iter.depth != depth { + iter.ReportError("ReadVal", "unexpected mismatched nesting") + return + } } // WriteVal copy the go interface into underlying JSON, same as json.Marshal @@ -120,7 +125,8 @@ func decoderOfType(ctx *ctx, typ reflect2.Type) ValDecoder { for _, extension := range extensions { decoder = extension.DecorateDecoder(typ, decoder) } - for _, extension := range ctx.extensions { + decoder = ctx.decoderExtension.DecorateDecoder(typ, decoder) + for _, extension := range ctx.extraExtensions { decoder = extension.DecorateDecoder(typ, decoder) } return decoder @@ -222,7 +228,8 @@ func encoderOfType(ctx *ctx, typ reflect2.Type) ValEncoder { for _, extension := range extensions { encoder = extension.DecorateEncoder(typ, encoder) } - for _, extension := range ctx.extensions { + encoder = ctx.encoderExtension.DecorateEncoder(typ, encoder) + for _, extension := range ctx.extraExtensions { encoder = extension.DecorateEncoder(typ, encoder) } return encoder diff --git a/vendor/github.com/json-iterator/go/reflect_extension.go b/vendor/github.com/json-iterator/go/reflect_extension.go index 917bbe84ec..e27e8d1917 100644 --- a/vendor/github.com/json-iterator/go/reflect_extension.go +++ b/vendor/github.com/json-iterator/go/reflect_extension.go @@ -246,7 +246,8 @@ func getTypeDecoderFromExtension(ctx *ctx, typ reflect2.Type) ValDecoder { for _, extension := range extensions { decoder = extension.DecorateDecoder(typ, decoder) } - for _, extension := range ctx.extensions { + decoder = ctx.decoderExtension.DecorateDecoder(typ, decoder) + for _, extension := range ctx.extraExtensions { decoder = extension.DecorateDecoder(typ, decoder) } } @@ -259,14 +260,18 @@ func _getTypeDecoderFromExtension(ctx *ctx, typ reflect2.Type) ValDecoder { return decoder } } - for _, extension := range ctx.extensions { + decoder := ctx.decoderExtension.CreateDecoder(typ) + if decoder != nil { + return decoder + } + for _, extension := range ctx.extraExtensions { decoder := extension.CreateDecoder(typ) if decoder != nil { return decoder } } typeName := typ.String() - decoder := typeDecoders[typeName] + decoder = typeDecoders[typeName] if decoder != nil { return decoder } @@ -286,7 +291,8 @@ func getTypeEncoderFromExtension(ctx *ctx, typ reflect2.Type) ValEncoder { for _, extension := range extensions { encoder = extension.DecorateEncoder(typ, encoder) } - for _, extension := range ctx.extensions { + encoder = ctx.encoderExtension.DecorateEncoder(typ, encoder) + for _, extension := range ctx.extraExtensions { encoder = extension.DecorateEncoder(typ, encoder) } } @@ -300,14 +306,18 @@ func _getTypeEncoderFromExtension(ctx *ctx, typ reflect2.Type) ValEncoder { return encoder } } - for _, extension := range ctx.extensions { + encoder := ctx.encoderExtension.CreateEncoder(typ) + if encoder != nil { + return encoder + } + for _, extension := range ctx.extraExtensions { encoder := extension.CreateEncoder(typ) if encoder != nil { return encoder } } typeName := typ.String() - encoder := typeEncoders[typeName] + encoder = typeEncoders[typeName] if encoder != nil { return encoder } @@ -328,13 +338,13 @@ func describeStruct(ctx *ctx, typ reflect2.Type) *StructDescriptor { for i := 0; i < structType.NumField(); i++ { field := structType.Field(i) tag, hastag := field.Tag().Lookup(ctx.getTagKey()) - if ctx.onlyTaggedField && !hastag { + if ctx.onlyTaggedField && !hastag && !field.Anonymous() { continue } - tagParts := strings.Split(tag, ",") if tag == "-" { continue } + tagParts := strings.Split(tag, ",") if field.Anonymous() && (tag == "" || tagParts[0] == "") { if field.Type().Kind() == reflect.Struct { structDescriptor := describeStruct(ctx, field.Type()) @@ -393,7 +403,9 @@ func createStructDescriptor(ctx *ctx, typ reflect2.Type, bindings []*Binding, em for _, extension := range extensions { extension.UpdateStructDescriptor(structDescriptor) } - for _, extension := range ctx.extensions { + ctx.encoderExtension.UpdateStructDescriptor(structDescriptor) + ctx.decoderExtension.UpdateStructDescriptor(structDescriptor) + for _, extension := range ctx.extraExtensions { extension.UpdateStructDescriptor(structDescriptor) } processTags(structDescriptor, ctx.frozenConfig) diff --git a/vendor/github.com/json-iterator/go/reflect_map.go b/vendor/github.com/json-iterator/go/reflect_map.go index 8812f08501..08e9a39125 100644 --- a/vendor/github.com/json-iterator/go/reflect_map.go +++ b/vendor/github.com/json-iterator/go/reflect_map.go @@ -39,7 +39,11 @@ func encoderOfMap(ctx *ctx, typ reflect2.Type) ValEncoder { } func decoderOfMapKey(ctx *ctx, typ reflect2.Type) ValDecoder { - for _, extension := range ctx.extensions { + decoder := ctx.decoderExtension.CreateMapKeyDecoder(typ) + if decoder != nil { + return decoder + } + for _, extension := range ctx.extraExtensions { decoder := extension.CreateMapKeyDecoder(typ) if decoder != nil { return decoder @@ -60,14 +64,26 @@ func decoderOfMapKey(ctx *ctx, typ reflect2.Type) ValDecoder { return &numericMapKeyDecoder{decoderOfType(ctx, typ)} default: ptrType := reflect2.PtrTo(typ) - if ptrType.Implements(textMarshalerType) { + if ptrType.Implements(unmarshalerType) { + return &referenceDecoder{ + &unmarshalerDecoder{ + valType: ptrType, + }, + } + } + if typ.Implements(unmarshalerType) { + return &unmarshalerDecoder{ + valType: typ, + } + } + if ptrType.Implements(textUnmarshalerType) { return &referenceDecoder{ &textUnmarshalerDecoder{ valType: ptrType, }, } } - if typ.Implements(textMarshalerType) { + if typ.Implements(textUnmarshalerType) { return &textUnmarshalerDecoder{ valType: typ, } @@ -77,7 +93,11 @@ func decoderOfMapKey(ctx *ctx, typ reflect2.Type) ValDecoder { } func encoderOfMapKey(ctx *ctx, typ reflect2.Type) ValEncoder { - for _, extension := range ctx.extensions { + encoder := ctx.encoderExtension.CreateMapKeyEncoder(typ) + if encoder != nil { + return encoder + } + for _, extension := range ctx.extraExtensions { encoder := extension.CreateMapKeyEncoder(typ) if encoder != nil { return encoder @@ -229,6 +249,10 @@ type mapEncoder struct { } func (encoder *mapEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { + if *(*unsafe.Pointer)(ptr) == nil { + stream.WriteNil() + return + } stream.WriteObjectStart() iter := encoder.mapType.UnsafeIterate(ptr) for i := 0; iter.HasNext(); i++ { diff --git a/vendor/github.com/json-iterator/go/reflect_marshaler.go b/vendor/github.com/json-iterator/go/reflect_marshaler.go index 58ac959ad8..3e21f37567 100644 --- a/vendor/github.com/json-iterator/go/reflect_marshaler.go +++ b/vendor/github.com/json-iterator/go/reflect_marshaler.go @@ -3,8 +3,9 @@ package jsoniter import ( "encoding" "encoding/json" - "github.com/modern-go/reflect2" "unsafe" + + "github.com/modern-go/reflect2" ) var marshalerType = reflect2.TypeOfPtr((*json.Marshaler)(nil)).Elem() @@ -98,6 +99,12 @@ func (encoder *marshalerEncoder) Encode(ptr unsafe.Pointer, stream *Stream) { if err != nil { stream.Error = err } else { + // html escape was already done by jsoniter + // but the extra '\n' should be trimed + l := len(bytes) + if l > 0 && bytes[l-1] == '\n' { + bytes = bytes[:l-1] + } stream.Write(bytes) } } diff --git a/vendor/github.com/json-iterator/go/reflect_native.go b/vendor/github.com/json-iterator/go/reflect_native.go index 9042eb0cb9..f88722d14d 100644 --- a/vendor/github.com/json-iterator/go/reflect_native.go +++ b/vendor/github.com/json-iterator/go/reflect_native.go @@ -432,17 +432,19 @@ func (codec *base64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) { } func (codec *base64Codec) Encode(ptr unsafe.Pointer, stream *Stream) { - src := *((*[]byte)(ptr)) - if len(src) == 0 { + if codec.sliceType.UnsafeIsNil(ptr) { stream.WriteNil() return } + src := *((*[]byte)(ptr)) encoding := base64.StdEncoding stream.writeByte('"') - size := encoding.EncodedLen(len(src)) - buf := make([]byte, size) - encoding.Encode(buf, src) - stream.buf = append(stream.buf, buf...) + if len(src) != 0 { + size := encoding.EncodedLen(len(src)) + buf := make([]byte, size) + encoding.Encode(buf, src) + stream.buf = append(stream.buf, buf...) + } stream.writeByte('"') } diff --git a/vendor/github.com/json-iterator/go/reflect_struct_decoder.go b/vendor/github.com/json-iterator/go/reflect_struct_decoder.go index 355d2d116b..5ad5cc561a 100644 --- a/vendor/github.com/json-iterator/go/reflect_struct_decoder.go +++ b/vendor/github.com/json-iterator/go/reflect_struct_decoder.go @@ -500,6 +500,9 @@ func (decoder *generalStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) if !iter.readObjectStart() { return } + if !iter.incrementDepth() { + return + } var c byte for c = ','; c == ','; c = iter.nextToken() { decoder.decodeOneField(ptr, iter) @@ -510,6 +513,7 @@ func (decoder *generalStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) if c != '}' { iter.ReportError("struct Decode", `expect }, but found `+string([]byte{c})) } + iter.decrementDepth() } func (decoder *generalStructDecoder) decodeOneField(ptr unsafe.Pointer, iter *Iterator) { @@ -530,8 +534,8 @@ func (decoder *generalStructDecoder) decodeOneField(ptr unsafe.Pointer, iter *It } } if fieldDecoder == nil { - msg := "found unknown field: " + field if decoder.disallowUnknownFields { + msg := "found unknown field: " + field iter.ReportError("ReadObject", msg) } c := iter.nextToken() @@ -571,6 +575,9 @@ func (decoder *oneFieldStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) if !iter.readObjectStart() { return } + if !iter.incrementDepth() { + return + } for { if iter.readFieldHash() == decoder.fieldHash { decoder.fieldDecoder.Decode(ptr, iter) @@ -584,6 +591,7 @@ func (decoder *oneFieldStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) if iter.Error != nil && iter.Error != io.EOF { iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) } + iter.decrementDepth() } type twoFieldsStructDecoder struct { @@ -598,6 +606,9 @@ func (decoder *twoFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator if !iter.readObjectStart() { return } + if !iter.incrementDepth() { + return + } for { switch iter.readFieldHash() { case decoder.fieldHash1: @@ -614,6 +625,7 @@ func (decoder *twoFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator if iter.Error != nil && iter.Error != io.EOF { iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) } + iter.decrementDepth() } type threeFieldsStructDecoder struct { @@ -630,6 +642,9 @@ func (decoder *threeFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat if !iter.readObjectStart() { return } + if !iter.incrementDepth() { + return + } for { switch iter.readFieldHash() { case decoder.fieldHash1: @@ -648,6 +663,7 @@ func (decoder *threeFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat if iter.Error != nil && iter.Error != io.EOF { iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) } + iter.decrementDepth() } type fourFieldsStructDecoder struct { @@ -666,6 +682,9 @@ func (decoder *fourFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato if !iter.readObjectStart() { return } + if !iter.incrementDepth() { + return + } for { switch iter.readFieldHash() { case decoder.fieldHash1: @@ -686,6 +705,7 @@ func (decoder *fourFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato if iter.Error != nil && iter.Error != io.EOF { iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) } + iter.decrementDepth() } type fiveFieldsStructDecoder struct { @@ -706,6 +726,9 @@ func (decoder *fiveFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato if !iter.readObjectStart() { return } + if !iter.incrementDepth() { + return + } for { switch iter.readFieldHash() { case decoder.fieldHash1: @@ -728,6 +751,7 @@ func (decoder *fiveFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato if iter.Error != nil && iter.Error != io.EOF { iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) } + iter.decrementDepth() } type sixFieldsStructDecoder struct { @@ -750,6 +774,9 @@ func (decoder *sixFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator if !iter.readObjectStart() { return } + if !iter.incrementDepth() { + return + } for { switch iter.readFieldHash() { case decoder.fieldHash1: @@ -774,6 +801,7 @@ func (decoder *sixFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator if iter.Error != nil && iter.Error != io.EOF { iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) } + iter.decrementDepth() } type sevenFieldsStructDecoder struct { @@ -798,6 +826,9 @@ func (decoder *sevenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat if !iter.readObjectStart() { return } + if !iter.incrementDepth() { + return + } for { switch iter.readFieldHash() { case decoder.fieldHash1: @@ -824,6 +855,7 @@ func (decoder *sevenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat if iter.Error != nil && iter.Error != io.EOF { iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) } + iter.decrementDepth() } type eightFieldsStructDecoder struct { @@ -850,6 +882,9 @@ func (decoder *eightFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat if !iter.readObjectStart() { return } + if !iter.incrementDepth() { + return + } for { switch iter.readFieldHash() { case decoder.fieldHash1: @@ -878,6 +913,7 @@ func (decoder *eightFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat if iter.Error != nil && iter.Error != io.EOF { iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) } + iter.decrementDepth() } type nineFieldsStructDecoder struct { @@ -906,6 +942,9 @@ func (decoder *nineFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato if !iter.readObjectStart() { return } + if !iter.incrementDepth() { + return + } for { switch iter.readFieldHash() { case decoder.fieldHash1: @@ -936,6 +975,7 @@ func (decoder *nineFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato if iter.Error != nil && iter.Error != io.EOF { iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) } + iter.decrementDepth() } type tenFieldsStructDecoder struct { @@ -966,6 +1006,9 @@ func (decoder *tenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator if !iter.readObjectStart() { return } + if !iter.incrementDepth() { + return + } for { switch iter.readFieldHash() { case decoder.fieldHash1: @@ -998,6 +1041,7 @@ func (decoder *tenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator if iter.Error != nil && iter.Error != io.EOF { iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) } + iter.decrementDepth() } type structFieldDecoder struct { diff --git a/vendor/github.com/json-iterator/go/stream_float.go b/vendor/github.com/json-iterator/go/stream_float.go index f318d2c59d..826aa594ac 100644 --- a/vendor/github.com/json-iterator/go/stream_float.go +++ b/vendor/github.com/json-iterator/go/stream_float.go @@ -1,6 +1,7 @@ package jsoniter import ( + "fmt" "math" "strconv" ) @@ -13,6 +14,10 @@ func init() { // WriteFloat32 write float32 to stream func (stream *Stream) WriteFloat32(val float32) { + if math.IsInf(float64(val), 0) || math.IsNaN(float64(val)) { + stream.Error = fmt.Errorf("unsupported value: %f", val) + return + } abs := math.Abs(float64(val)) fmt := byte('f') // Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right. @@ -26,6 +31,10 @@ func (stream *Stream) WriteFloat32(val float32) { // WriteFloat32Lossy write float32 to stream with ONLY 6 digits precision although much much faster func (stream *Stream) WriteFloat32Lossy(val float32) { + if math.IsInf(float64(val), 0) || math.IsNaN(float64(val)) { + stream.Error = fmt.Errorf("unsupported value: %f", val) + return + } if val < 0 { stream.writeByte('-') val = -val @@ -54,6 +63,10 @@ func (stream *Stream) WriteFloat32Lossy(val float32) { // WriteFloat64 write float64 to stream func (stream *Stream) WriteFloat64(val float64) { + if math.IsInf(val, 0) || math.IsNaN(val) { + stream.Error = fmt.Errorf("unsupported value: %f", val) + return + } abs := math.Abs(val) fmt := byte('f') // Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right. @@ -67,6 +80,10 @@ func (stream *Stream) WriteFloat64(val float64) { // WriteFloat64Lossy write float64 to stream with ONLY 6 digits precision although much much faster func (stream *Stream) WriteFloat64Lossy(val float64) { + if math.IsInf(val, 0) || math.IsNaN(val) { + stream.Error = fmt.Errorf("unsupported value: %f", val) + return + } if val < 0 { stream.writeByte('-') val = -val diff --git a/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md b/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md index 949b77e304..195333e51d 100644 --- a/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md +++ b/vendor/github.com/konsorten/go-windows-terminal-sequences/README.md @@ -26,6 +26,7 @@ The tool is sponsored by the [marvin + konsorten GmbH](http://www.konsorten.de). We thank all the authors who provided code to this library: * Felix Kollmann +* Nicolas Perraut ## License diff --git a/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go b/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go new file mode 100644 index 0000000000..df61a6f2f6 --- /dev/null +++ b/vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go @@ -0,0 +1,11 @@ +// +build linux darwin + +package sequences + +import ( + "fmt" +) + +func EnableVirtualTerminalProcessing(stream uintptr, enable bool) error { + return fmt.Errorf("windows only package") +} diff --git a/vendor/github.com/mitchellh/go-homedir/homedir.go b/vendor/github.com/mitchellh/go-homedir/homedir.go index fb87bef94f..25378537ea 100644 --- a/vendor/github.com/mitchellh/go-homedir/homedir.go +++ b/vendor/github.com/mitchellh/go-homedir/homedir.go @@ -76,6 +76,16 @@ func Expand(path string) (string, error) { return filepath.Join(dir, path[1:]), nil } +// Reset clears the cache, forcing the next call to Dir to re-detect +// the home directory. This generally never has to be called, but can be +// useful in tests if you're modifying the home directory via the HOME +// env var or something. +func Reset() { + cacheLock.Lock() + defer cacheLock.Unlock() + homedirCache = "" +} + func dirUnix() (string, error) { homeEnv := "HOME" if runtime.GOOS == "plan9" { diff --git a/vendor/github.com/moby/buildkit/AUTHORS b/vendor/github.com/moby/buildkit/AUTHORS new file mode 100644 index 0000000000..c1dce65586 --- /dev/null +++ b/vendor/github.com/moby/buildkit/AUTHORS @@ -0,0 +1,66 @@ +# This file lists all individuals having contributed content to the repository. +# For how it is generated, see `scripts/generate-authors.sh`. + +Aaron L. Xu +Aaron Lehmann +Akihiro Suda +Alexander Morozov +Alice Frosi +Allen Sun +Anda Xu +Anthony Sottile +Arnaud Bailly +Bin Liu +Brian Goff +Daniel Nephin +Dave Chen +David Calavera +Dennis Chen +Derek McGowan +Doug Davis +Edgar Lee +Eli Uriegas +f0 +Fernando Miguel +Hao Hu +Helen Xie +Himanshu Pandey +Hiromu Nakamura +Ian Campbell +Iskander (Alex) Sharipov +Jean-Pierre Huynh +Jessica Frazelle +John Howard +Jonathan Stoppani +Justas Brazauskas +Justin Cormack +Kunal Kushwaha +Lajos Papp +Matt Rickard +Michael Crosby +Miyachi Katsuya +Nao YONASHIRO +Natasha Jarus +Noel Georgi <18496730+frezbo@users.noreply.github.com> +Ondrej Fabry +Patrick Van Stee +Ri Xu +Sebastiaan van Stijn +Shev Yan +Simon Ferquel +Stefan Weil +Thomas Leonard +Thomas Shaw +Tibor Vass +Tiffany Jernigan +Tino Rusch +Tobias Klauser +Tomas Tomecek +Tomohiro Kusumoto +Tõnis Tiigi +Vincent Demeester +Wei Fu +Yong Tang +Yuichiro Kaneko +Ziv Tsarfati +郑泽宇 diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands.go index 28b34f681b..ed96d7e075 100644 --- a/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands.go +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands.go @@ -200,6 +200,11 @@ type CopyCommand struct { // Expand variables func (c *CopyCommand) Expand(expander SingleWordExpander) error { + expandedChown, err := expander(c.Chown) + if err != nil { + return err + } + c.Chown = expandedChown return expandSliceInPlace(c.SourcesAndDest, expander) } diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_nosecrets.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_nosecrets.go new file mode 100644 index 0000000000..58780648db --- /dev/null +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_nosecrets.go @@ -0,0 +1,7 @@ +// +build !dfsecrets + +package instructions + +func isSecretMountsSupported() bool { + return false +} diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_nossh.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_nossh.go new file mode 100644 index 0000000000..a131a273c3 --- /dev/null +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_nossh.go @@ -0,0 +1,7 @@ +// +build !dfssh + +package instructions + +func isSSHMountsSupported() bool { + return false +} diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_runmount.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_runmount.go index 569c60bc68..442877d866 100644 --- a/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_runmount.go +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_runmount.go @@ -1,4 +1,4 @@ -// +build dfrunmount dfextall +// +build dfrunmount package instructions @@ -13,11 +13,15 @@ import ( const MountTypeBind = "bind" const MountTypeCache = "cache" const MountTypeTmpfs = "tmpfs" +const MountTypeSecret = "secret" +const MountTypeSSH = "ssh" var allowedMountTypes = map[string]struct{}{ - MountTypeBind: {}, - MountTypeCache: {}, - MountTypeTmpfs: {}, + MountTypeBind: {}, + MountTypeCache: {}, + MountTypeTmpfs: {}, + MountTypeSecret: {}, + MountTypeSSH: {}, } const MountSharingShared = "shared" @@ -40,6 +44,16 @@ func init() { } func isValidMountType(s string) bool { + if s == "secret" { + if !isSecretMountsSupported() { + return false + } + } + if s == "ssh" { + if !isSSHMountsSupported() { + return false + } + } _, ok := allowedMountTypes[s] return ok } @@ -93,6 +107,10 @@ type Mount struct { ReadOnly bool CacheID string CacheSharing string + Required bool + Mode *uint64 + UID *uint64 + GID *uint64 } func parseMount(value string) (*Mount, error) { @@ -120,6 +138,13 @@ func parseMount(value string) (*Mount, error) { m.ReadOnly = false roAuto = false continue + case "required": + if m.Type == "secret" || m.Type == "ssh" { + m.Required = true + continue + } else { + return nil, errors.Errorf("unexpected key '%s' for mount type '%s'", key, m.Type) + } } } @@ -153,6 +178,16 @@ func parseMount(value string) (*Mount, error) { } m.ReadOnly = !rw roAuto = false + case "required": + if m.Type == "secret" || m.Type == "ssh" { + v, err := strconv.ParseBool(value) + if err != nil { + return nil, errors.Errorf("invalid value for %s: %s", key, value) + } + m.Required = v + } else { + return nil, errors.Errorf("unexpected key '%s' for mount type '%s'", key, m.Type) + } case "id": m.CacheID = value case "sharing": @@ -160,13 +195,45 @@ func parseMount(value string) (*Mount, error) { return nil, errors.Errorf("unsupported sharing value %q", value) } m.CacheSharing = strings.ToLower(value) + case "mode": + mode, err := strconv.ParseUint(value, 8, 32) + if err != nil { + return nil, errors.Errorf("invalid value %s for mode", value) + } + m.Mode = &mode + case "uid": + uid, err := strconv.ParseUint(value, 10, 32) + if err != nil { + return nil, errors.Errorf("invalid value %s for uid", value) + } + m.UID = &uid + case "gid": + gid, err := strconv.ParseUint(value, 10, 32) + if err != nil { + return nil, errors.Errorf("invalid value %s for gid", value) + } + m.GID = &gid default: return nil, errors.Errorf("unexpected key '%s' in '%s'", key, field) } } + fileInfoAllowed := m.Type == MountTypeSecret || m.Type == MountTypeSSH || m.Type == MountTypeCache + + if m.Mode != nil && !fileInfoAllowed { + return nil, errors.Errorf("mode not allowed for %q type mounts", m.Type) + } + + if m.UID != nil && !fileInfoAllowed { + return nil, errors.Errorf("uid not allowed for %q type mounts", m.Type) + } + + if m.GID != nil && !fileInfoAllowed { + return nil, errors.Errorf("gid not allowed for %q type mounts", m.Type) + } + if roAuto { - if m.Type == MountTypeCache { + if m.Type == MountTypeCache || m.Type == MountTypeTmpfs { m.ReadOnly = false } else { m.ReadOnly = true @@ -177,5 +244,20 @@ func parseMount(value string) (*Mount, error) { return nil, errors.Errorf("invalid cache sharing set for %v mount", m.Type) } + if m.Type == MountTypeSecret { + if m.From != "" { + return nil, errors.Errorf("secret mount should not have a from") + } + if m.CacheSharing != "" { + return nil, errors.Errorf("secret mount should not define sharing") + } + if m.Source == "" && m.Target == "" && m.CacheID == "" { + return nil, errors.Errorf("invalid secret mount. one of source, target required") + } + if m.Source != "" && m.CacheID != "" { + return nil, errors.Errorf("both source and id can't be set") + } + } + return m, nil } diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_runnetwork.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_runnetwork.go new file mode 100644 index 0000000000..adef3fd7aa --- /dev/null +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_runnetwork.go @@ -0,0 +1,63 @@ +// +build dfrunnetwork + +package instructions + +import ( + "github.com/pkg/errors" +) + +const ( + NetworkDefault = "default" + NetworkNone = "none" + NetworkHost = "host" +) + +var allowedNetwork = map[string]struct{}{ + NetworkDefault: {}, + NetworkNone: {}, + NetworkHost: {}, +} + +func isValidNetwork(value string) bool { + _, ok := allowedNetwork[value] + return ok +} + +var networkKey = "dockerfile/run/network" + +func init() { + parseRunPreHooks = append(parseRunPreHooks, runNetworkPreHook) + parseRunPostHooks = append(parseRunPostHooks, runNetworkPostHook) +} + +func runNetworkPreHook(cmd *RunCommand, req parseRequest) error { + st := &networkState{} + st.flag = req.flags.AddString("network", NetworkDefault) + cmd.setExternalValue(networkKey, st) + return nil +} + +func runNetworkPostHook(cmd *RunCommand, req parseRequest) error { + st := cmd.getExternalValue(networkKey).(*networkState) + if st == nil { + return errors.Errorf("no network state") + } + + value := st.flag.Value + if !isValidNetwork(value) { + return errors.Errorf("invalid network mode %q", value) + } + + st.networkMode = value + + return nil +} + +func GetNetwork(cmd *RunCommand) string { + return cmd.getExternalValue(networkKey).(*networkState).networkMode +} + +type networkState struct { + flag *Flag + networkMode string +} diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_runsecurity.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_runsecurity.go new file mode 100644 index 0000000000..0c0be80664 --- /dev/null +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_runsecurity.go @@ -0,0 +1,61 @@ +// +build dfrunsecurity + +package instructions + +import ( + "github.com/pkg/errors" +) + +const ( + SecurityInsecure = "insecure" + SecuritySandbox = "sandbox" +) + +var allowedSecurity = map[string]struct{}{ + SecurityInsecure: {}, + SecuritySandbox: {}, +} + +func isValidSecurity(value string) bool { + _, ok := allowedSecurity[value] + return ok +} + +var securityKey = "dockerfile/run/security" + +func init() { + parseRunPreHooks = append(parseRunPreHooks, runSecurityPreHook) + parseRunPostHooks = append(parseRunPostHooks, runSecurityPostHook) +} + +func runSecurityPreHook(cmd *RunCommand, req parseRequest) error { + st := &securityState{} + st.flag = req.flags.AddString("security", SecuritySandbox) + cmd.setExternalValue(securityKey, st) + return nil +} + +func runSecurityPostHook(cmd *RunCommand, req parseRequest) error { + st := cmd.getExternalValue(securityKey).(*securityState) + if st == nil { + return errors.Errorf("no security state") + } + + value := st.flag.Value + if !isValidSecurity(value) { + return errors.Errorf("security %q is not valid", value) + } + + st.security = value + + return nil +} + +func GetSecurity(cmd *RunCommand) string { + return cmd.getExternalValue(securityKey).(*securityState).security +} + +type securityState struct { + flag *Flag + security string +} diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_secrets.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_secrets.go new file mode 100644 index 0000000000..6cce1191d7 --- /dev/null +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_secrets.go @@ -0,0 +1,7 @@ +// +build dfsecrets + +package instructions + +func isSecretMountsSupported() bool { + return true +} diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_ssh.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_ssh.go new file mode 100644 index 0000000000..0b94a56447 --- /dev/null +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/instructions/commands_ssh.go @@ -0,0 +1,7 @@ +// +build dfssh + +package instructions + +func isSSHMountsSupported() bool { + return true +} diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/parser/parser.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/parser/parser.go index 0453f3a9a2..e9268abb81 100644 --- a/vendor/github.com/moby/buildkit/frontend/dockerfile/parser/parser.go +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/parser/parser.go @@ -35,7 +35,7 @@ type Node struct { Original string // original line used before parsing Flags []string // only top Node should have this set StartLine int // the line in the original dockerfile where the node begins - endLine int // the line in the original dockerfile where the node ends + EndLine int // the line in the original dockerfile where the node ends } // Dump dumps the AST defined by `node` as a list of sexps. @@ -65,7 +65,7 @@ func (node *Node) Dump() string { func (node *Node) lines(start, end int) { node.StartLine = start - node.endLine = end + node.EndLine = end } // AddChild adds a new child node, and updates line information @@ -74,7 +74,7 @@ func (node *Node) AddChild(child *Node, startLine, endLine int) { if node.StartLine < 0 { node.StartLine = startLine } - node.endLine = endLine + node.EndLine = endLine node.Children = append(node.Children, child) } @@ -275,6 +275,11 @@ func Parse(rwc io.Reader) (*Result, error) { if len(warnings) > 0 { warnings = append(warnings, "[WARNING]: Empty continuation lines will become errors in a future release.") } + + if root.StartLine < 0 { + return nil, errors.New("file with no instructions.") + } + return &Result{ AST: root, Warnings: warnings, diff --git a/vendor/github.com/moby/buildkit/frontend/dockerfile/shell/lex.go b/vendor/github.com/moby/buildkit/frontend/dockerfile/shell/lex.go index c242546e55..f9eb26f48b 100644 --- a/vendor/github.com/moby/buildkit/frontend/dockerfile/shell/lex.go +++ b/vendor/github.com/moby/buildkit/frontend/dockerfile/shell/lex.go @@ -2,6 +2,7 @@ package shell import ( "bytes" + "fmt" "strings" "text/scanner" "unicode" @@ -17,7 +18,9 @@ import ( // It doesn't support all flavors of ${xx:...} formats but new ones can // be added by adding code to the "special ${} format processing" section type Lex struct { - escapeToken rune + escapeToken rune + RawQuotes bool + SkipUnsetEnv bool } // NewLex creates a new Lex which uses escapeToken to escape quotes. @@ -58,17 +61,21 @@ func (s *Lex) ProcessWordsWithMap(word string, env map[string]string) ([]string, func (s *Lex) process(word string, env map[string]string) (string, []string, error) { sw := &shellWord{ - envs: env, - escapeToken: s.escapeToken, + envs: env, + escapeToken: s.escapeToken, + skipUnsetEnv: s.SkipUnsetEnv, + rawQuotes: s.RawQuotes, } sw.scanner.Init(strings.NewReader(word)) return sw.process(word) } type shellWord struct { - scanner scanner.Scanner - envs map[string]string - escapeToken rune + scanner scanner.Scanner + envs map[string]string + escapeToken rune + rawQuotes bool + skipUnsetEnv bool } func (sw *shellWord) process(source string) (string, []string, error) { @@ -103,10 +110,8 @@ func (w *wordsStruct) addRawChar(ch rune) { } func (w *wordsStruct) addString(str string) { - var scan scanner.Scanner - scan.Init(strings.NewReader(str)) - for scan.Peek() != scanner.EOF { - w.addChar(scan.Next()) + for _, ch := range str { + w.addChar(ch) } } @@ -196,14 +201,20 @@ func (sw *shellWord) processSingleQuote() (string, error) { var result bytes.Buffer - sw.scanner.Next() + ch := sw.scanner.Next() + if sw.rawQuotes { + result.WriteRune(ch) + } for { - ch := sw.scanner.Next() + ch = sw.scanner.Next() switch ch { case scanner.EOF: return "", errors.New("unexpected end of statement while looking for matching single-quote") case '\'': + if sw.rawQuotes { + result.WriteRune(ch) + } return result.String(), nil } result.WriteRune(ch) @@ -225,14 +236,20 @@ func (sw *shellWord) processDoubleQuote() (string, error) { var result bytes.Buffer - sw.scanner.Next() + ch := sw.scanner.Next() + if sw.rawQuotes { + result.WriteRune(ch) + } for { switch sw.scanner.Peek() { case scanner.EOF: return "", errors.New("unexpected end of statement while looking for matching double-quote") case '"': - sw.scanner.Next() + ch := sw.scanner.Next() + if sw.rawQuotes { + result.WriteRune(ch) + } return result.String(), nil case '$': value, err := sw.processDollar() @@ -269,7 +286,11 @@ func (sw *shellWord) processDollar() (string, error) { if name == "" { return "$", nil } - return sw.getEnv(name), nil + value, found := sw.getEnv(name) + if !found && sw.skipUnsetEnv { + return "$" + name, nil + } + return value, nil } sw.scanner.Next() @@ -285,7 +306,11 @@ func (sw *shellWord) processDollar() (string, error) { switch ch { case '}': // Normal ${xx} case - return sw.getEnv(name), nil + value, found := sw.getEnv(name) + if !found && sw.skipUnsetEnv { + return fmt.Sprintf("${%s}", name), nil + } + return value, nil case ':': // Special ${xx:...} format processing // Yes it allows for recursive $'s in the ... spot @@ -301,19 +326,26 @@ func (sw *shellWord) processDollar() (string, error) { // Grab the current value of the variable in question so we // can use to to determine what to do based on the modifier - newValue := sw.getEnv(name) + newValue, found := sw.getEnv(name) switch modifier { case '+': if newValue != "" { newValue = word } + if !found && sw.skipUnsetEnv { + return fmt.Sprintf("${%s:%s%s}", name, string(modifier), word), nil + } return newValue, nil case '-': if newValue == "" { newValue = word } + if !found && sw.skipUnsetEnv { + return fmt.Sprintf("${%s:%s%s}", name, string(modifier), word), nil + } + return newValue, nil default: @@ -364,13 +396,13 @@ func isSpecialParam(char rune) bool { return false } -func (sw *shellWord) getEnv(name string) string { +func (sw *shellWord) getEnv(name string) (string, bool) { for key, value := range sw.envs { if EqualEnvKeys(name, key) { - return value + return value, true } } - return "" + return "", false } func BuildEnvs(env []string) map[string]string { @@ -385,10 +417,7 @@ func BuildEnvs(env []string) map[string]string { k := e[:i] v := e[i+1:] - // If key already exists, keep previous value. - if _, ok := envs[k]; ok { - continue - } + // overwrite value if key already exists envs[k] = v } } diff --git a/vendor/github.com/moby/buildkit/session/filesync/diffcopy.go b/vendor/github.com/moby/buildkit/session/filesync/diffcopy.go index b50da2b331..f1d7d78ee3 100644 --- a/vendor/github.com/moby/buildkit/session/filesync/diffcopy.go +++ b/vendor/github.com/moby/buildkit/session/filesync/diffcopy.go @@ -9,11 +9,12 @@ import ( "github.com/pkg/errors" "github.com/sirupsen/logrus" "github.com/tonistiigi/fsutil" + fstypes "github.com/tonistiigi/fsutil/types" "google.golang.org/grpc" ) func sendDiffCopy(stream grpc.Stream, fs fsutil.FS, progress progressCb) error { - return fsutil.Send(stream.Context(), stream, fs, progress) + return errors.WithStack(fsutil.Send(stream.Context(), stream, fs, progress)) } func newStreamWriter(stream grpc.ClientStream) io.WriteCloser { @@ -28,7 +29,7 @@ type bufferedWriteCloser struct { func (bwc *bufferedWriteCloser) Close() error { if err := bwc.Writer.Flush(); err != nil { - return err + return errors.WithStack(err) } return bwc.Closer.Close() } @@ -39,24 +40,30 @@ type streamWriterCloser struct { func (wc *streamWriterCloser) Write(dt []byte) (int, error) { if err := wc.ClientStream.SendMsg(&BytesMessage{Data: dt}); err != nil { - return 0, err + // SendMsg return EOF on remote errors + if errors.Cause(err) == io.EOF { + if err := errors.WithStack(wc.ClientStream.RecvMsg(struct{}{})); err != nil { + return 0, err + } + } + return 0, errors.WithStack(err) } return len(dt), nil } func (wc *streamWriterCloser) Close() error { if err := wc.ClientStream.CloseSend(); err != nil { - return err + return errors.WithStack(err) } // block until receiver is done var bm BytesMessage if err := wc.ClientStream.RecvMsg(&bm); err != io.EOF { - return err + return errors.WithStack(err) } return nil } -func recvDiffCopy(ds grpc.Stream, dest string, cu CacheUpdater, progress progressCb) error { +func recvDiffCopy(ds grpc.Stream, dest string, cu CacheUpdater, progress progressCb, filter func(string, *fstypes.Stat) bool) error { st := time.Now() defer func() { logrus.Debugf("diffcopy took: %v", time.Since(st)) @@ -68,29 +75,30 @@ func recvDiffCopy(ds grpc.Stream, dest string, cu CacheUpdater, progress progres cf = cu.HandleChange ch = cu.ContentHasher() } - return fsutil.Receive(ds.Context(), ds, dest, fsutil.ReceiveOpt{ + return errors.WithStack(fsutil.Receive(ds.Context(), ds, dest, fsutil.ReceiveOpt{ NotifyHashed: cf, ContentHasher: ch, ProgressCb: progress, - }) + Filter: fsutil.FilterFunc(filter), + })) } func syncTargetDiffCopy(ds grpc.Stream, dest string) error { if err := os.MkdirAll(dest, 0700); err != nil { - return err + return errors.Wrapf(err, "failed to create synctarget dest dir %s", dest) } - return fsutil.Receive(ds.Context(), ds, dest, fsutil.ReceiveOpt{ + return errors.WithStack(fsutil.Receive(ds.Context(), ds, dest, fsutil.ReceiveOpt{ Merge: true, - Filter: func() func(*fsutil.Stat) bool { + Filter: func() func(string, *fstypes.Stat) bool { uid := os.Getuid() gid := os.Getgid() - return func(st *fsutil.Stat) bool { + return func(p string, st *fstypes.Stat) bool { st.Uid = uint32(uid) st.Gid = uint32(gid) return true } }(), - }) + })) } func writeTargetFile(ds grpc.Stream, wc io.WriteCloser) error { @@ -100,10 +108,10 @@ func writeTargetFile(ds grpc.Stream, wc io.WriteCloser) error { if errors.Cause(err) == io.EOF { return nil } - return err + return errors.WithStack(err) } if _, err := wc.Write(bm.Data); err != nil { - return err + return errors.WithStack(err) } } } diff --git a/vendor/github.com/moby/buildkit/session/filesync/filesync.go b/vendor/github.com/moby/buildkit/session/filesync/filesync.go index 8f0a7c1e07..a45abe02e7 100644 --- a/vendor/github.com/moby/buildkit/session/filesync/filesync.go +++ b/vendor/github.com/moby/buildkit/session/filesync/filesync.go @@ -10,6 +10,7 @@ import ( "github.com/moby/buildkit/session" "github.com/pkg/errors" "github.com/tonistiigi/fsutil" + fstypes "github.com/tonistiigi/fsutil/types" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" @@ -17,11 +18,12 @@ import ( ) const ( - keyOverrideExcludes = "override-excludes" - keyIncludePatterns = "include-patterns" - keyExcludePatterns = "exclude-patterns" - keyFollowPaths = "followpaths" - keyDirName = "dir-name" + keyOverrideExcludes = "override-excludes" + keyIncludePatterns = "include-patterns" + keyExcludePatterns = "exclude-patterns" + keyFollowPaths = "followpaths" + keyDirName = "dir-name" + keyExporterMetaPrefix = "exporter-md-" ) type fsSyncProvider struct { @@ -34,7 +36,7 @@ type SyncedDir struct { Name string Dir string Excludes []string - Map func(*fsutil.Stat) bool + Map func(string, *fstypes.Stat) bool } // NewFSSyncProvider creates a new provider for sending files from client @@ -128,7 +130,7 @@ type progressCb func(int, bool) type protocol struct { name string sendFn func(stream grpc.Stream, fs fsutil.FS, progress progressCb) error - recvFn func(stream grpc.Stream, destDir string, cu CacheUpdater, progress progressCb) error + recvFn func(stream grpc.Stream, destDir string, cu CacheUpdater, progress progressCb, mapFunc func(string, *fstypes.Stat) bool) error } func isProtoSupported(p string) bool { @@ -157,6 +159,7 @@ type FSSendRequestOpt struct { DestDir string CacheUpdater CacheUpdater ProgressCb func(int, bool) + Filter func(string, *fstypes.Stat) bool } // CacheUpdater is an object capable of sending notifications for the cache hash changes @@ -224,7 +227,7 @@ func FSSync(ctx context.Context, c session.Caller, opt FSSendRequestOpt) error { panic(fmt.Sprintf("invalid protocol: %q", pr.name)) } - return pr.recvFn(stream, opt.DestDir, opt.CacheUpdater, opt.ProgressCb) + return pr.recvFn(stream, opt.DestDir, opt.CacheUpdater, opt.ProgressCb, opt.Filter) } // NewFSSyncTargetDir allows writing into a directory @@ -236,16 +239,16 @@ func NewFSSyncTargetDir(outdir string) session.Attachable { } // NewFSSyncTarget allows writing into an io.WriteCloser -func NewFSSyncTarget(w io.WriteCloser) session.Attachable { +func NewFSSyncTarget(f func(map[string]string) (io.WriteCloser, error)) session.Attachable { p := &fsSyncTarget{ - outfile: w, + f: f, } return p } type fsSyncTarget struct { - outdir string - outfile io.WriteCloser + outdir string + f func(map[string]string) (io.WriteCloser, error) } func (sp *fsSyncTarget) Register(server *grpc.Server) { @@ -256,11 +259,26 @@ func (sp *fsSyncTarget) DiffCopy(stream FileSend_DiffCopyServer) error { if sp.outdir != "" { return syncTargetDiffCopy(stream, sp.outdir) } - if sp.outfile == nil { + + if sp.f == nil { return errors.New("empty outfile and outdir") } - defer sp.outfile.Close() - return writeTargetFile(stream, sp.outfile) + opts, _ := metadata.FromIncomingContext(stream.Context()) // if no metadata continue with empty object + md := map[string]string{} + for k, v := range opts { + if strings.HasPrefix(k, keyExporterMetaPrefix) { + md[strings.TrimPrefix(k, keyExporterMetaPrefix)] = strings.Join(v, ",") + } + } + wc, err := sp.f(md) + if err != nil { + return err + } + if wc == nil { + return status.Errorf(codes.AlreadyExists, "target already exists") + } + defer wc.Close() + return writeTargetFile(stream, wc) } func CopyToCaller(ctx context.Context, fs fsutil.FS, c session.Caller, progress func(int, bool)) error { @@ -273,13 +291,13 @@ func CopyToCaller(ctx context.Context, fs fsutil.FS, c session.Caller, progress cc, err := client.DiffCopy(ctx) if err != nil { - return err + return errors.WithStack(err) } return sendDiffCopy(cc, fs, progress) } -func CopyFileWriter(ctx context.Context, c session.Caller) (io.WriteCloser, error) { +func CopyFileWriter(ctx context.Context, md map[string]string, c session.Caller) (io.WriteCloser, error) { method := session.MethodURL(_FileSend_serviceDesc.ServiceName, "diffcopy") if !c.Supports(method) { return nil, errors.Errorf("method %s not supported by the client", method) @@ -287,9 +305,16 @@ func CopyFileWriter(ctx context.Context, c session.Caller) (io.WriteCloser, erro client := NewFileSendClient(c.Conn()) + opts := make(map[string][]string, len(md)) + for k, v := range md { + opts[keyExporterMetaPrefix+k] = []string{v} + } + + ctx = metadata.NewOutgoingContext(ctx, opts) + cc, err := client.DiffCopy(ctx) if err != nil { - return nil, err + return nil, errors.WithStack(err) } return newStreamWriter(cc), nil diff --git a/vendor/github.com/moby/buildkit/session/filesync/filesync.pb.go b/vendor/github.com/moby/buildkit/session/filesync/filesync.pb.go index 4a9697e342..86c93acc0b 100644 --- a/vendor/github.com/moby/buildkit/session/filesync/filesync.pb.go +++ b/vendor/github.com/moby/buildkit/session/filesync/filesync.pb.go @@ -1,15 +1,6 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. // source: filesync.proto -/* -Package filesync is a generated protocol buffer package. - -It is generated from these files: - filesync.proto - -It has these top-level messages: - BytesMessage -*/ package filesync import proto "github.com/gogo/protobuf/proto" @@ -21,8 +12,10 @@ import bytes "bytes" import strings "strings" import reflect "reflect" -import context "golang.org/x/net/context" -import grpc "google.golang.org/grpc" +import ( + context "golang.org/x/net/context" + grpc "google.golang.org/grpc" +) import io "io" @@ -42,9 +35,37 @@ type BytesMessage struct { Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` } -func (m *BytesMessage) Reset() { *m = BytesMessage{} } -func (*BytesMessage) ProtoMessage() {} -func (*BytesMessage) Descriptor() ([]byte, []int) { return fileDescriptorFilesync, []int{0} } +func (m *BytesMessage) Reset() { *m = BytesMessage{} } +func (*BytesMessage) ProtoMessage() {} +func (*BytesMessage) Descriptor() ([]byte, []int) { + return fileDescriptor_filesync_26f8b7bce2e5ac0e, []int{0} +} +func (m *BytesMessage) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BytesMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BytesMessage.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalTo(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (dst *BytesMessage) XXX_Merge(src proto.Message) { + xxx_messageInfo_BytesMessage.Merge(dst, src) +} +func (m *BytesMessage) XXX_Size() int { + return m.Size() +} +func (m *BytesMessage) XXX_DiscardUnknown() { + xxx_messageInfo_BytesMessage.DiscardUnknown(m) +} + +var xxx_messageInfo_BytesMessage proto.InternalMessageInfo func (m *BytesMessage) GetData() []byte { if m != nil { @@ -107,8 +128,9 @@ var _ grpc.ClientConn // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion4 -// Client API for FileSync service - +// FileSyncClient is the client API for FileSync service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type FileSyncClient interface { DiffCopy(ctx context.Context, opts ...grpc.CallOption) (FileSync_DiffCopyClient, error) TarStream(ctx context.Context, opts ...grpc.CallOption) (FileSync_TarStreamClient, error) @@ -123,7 +145,7 @@ func NewFileSyncClient(cc *grpc.ClientConn) FileSyncClient { } func (c *fileSyncClient) DiffCopy(ctx context.Context, opts ...grpc.CallOption) (FileSync_DiffCopyClient, error) { - stream, err := grpc.NewClientStream(ctx, &_FileSync_serviceDesc.Streams[0], c.cc, "/moby.filesync.v1.FileSync/DiffCopy", opts...) + stream, err := c.cc.NewStream(ctx, &_FileSync_serviceDesc.Streams[0], "/moby.filesync.v1.FileSync/DiffCopy", opts...) if err != nil { return nil, err } @@ -154,7 +176,7 @@ func (x *fileSyncDiffCopyClient) Recv() (*BytesMessage, error) { } func (c *fileSyncClient) TarStream(ctx context.Context, opts ...grpc.CallOption) (FileSync_TarStreamClient, error) { - stream, err := grpc.NewClientStream(ctx, &_FileSync_serviceDesc.Streams[1], c.cc, "/moby.filesync.v1.FileSync/TarStream", opts...) + stream, err := c.cc.NewStream(ctx, &_FileSync_serviceDesc.Streams[1], "/moby.filesync.v1.FileSync/TarStream", opts...) if err != nil { return nil, err } @@ -184,8 +206,7 @@ func (x *fileSyncTarStreamClient) Recv() (*BytesMessage, error) { return m, nil } -// Server API for FileSync service - +// FileSyncServer is the server API for FileSync service. type FileSyncServer interface { DiffCopy(FileSync_DiffCopyServer) error TarStream(FileSync_TarStreamServer) error @@ -268,8 +289,9 @@ var _FileSync_serviceDesc = grpc.ServiceDesc{ Metadata: "filesync.proto", } -// Client API for FileSend service - +// FileSendClient is the client API for FileSend service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type FileSendClient interface { DiffCopy(ctx context.Context, opts ...grpc.CallOption) (FileSend_DiffCopyClient, error) } @@ -283,7 +305,7 @@ func NewFileSendClient(cc *grpc.ClientConn) FileSendClient { } func (c *fileSendClient) DiffCopy(ctx context.Context, opts ...grpc.CallOption) (FileSend_DiffCopyClient, error) { - stream, err := grpc.NewClientStream(ctx, &_FileSend_serviceDesc.Streams[0], c.cc, "/moby.filesync.v1.FileSend/DiffCopy", opts...) + stream, err := c.cc.NewStream(ctx, &_FileSend_serviceDesc.Streams[0], "/moby.filesync.v1.FileSend/DiffCopy", opts...) if err != nil { return nil, err } @@ -313,8 +335,7 @@ func (x *fileSendDiffCopyClient) Recv() (*BytesMessage, error) { return m, nil } -// Server API for FileSend service - +// FileSendServer is the server API for FileSend service. type FileSendServer interface { DiffCopy(FileSend_DiffCopyServer) error } @@ -398,6 +419,9 @@ func encodeVarintFilesync(dAtA []byte, offset int, v uint64) int { return offset + 1 } func (m *BytesMessage) Size() (n int) { + if m == nil { + return 0 + } var l int _ = l l = len(m.Data) @@ -624,10 +648,10 @@ var ( ErrIntOverflowFilesync = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("filesync.proto", fileDescriptorFilesync) } +func init() { proto.RegisterFile("filesync.proto", fileDescriptor_filesync_26f8b7bce2e5ac0e) } -var fileDescriptorFilesync = []byte{ - // 208 bytes of a gzipped FileDescriptorProto +var fileDescriptor_filesync_26f8b7bce2e5ac0e = []byte{ + // 217 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4b, 0xcb, 0xcc, 0x49, 0x2d, 0xae, 0xcc, 0x4b, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xc8, 0xcd, 0x4f, 0xaa, 0xd4, 0x83, 0x0b, 0x96, 0x19, 0x2a, 0x29, 0x71, 0xf1, 0x38, 0x55, 0x96, 0xa4, 0x16, 0xfb, 0xa6, @@ -636,9 +660,10 @@ var fileDescriptorFilesync = []byte{ 0x2b, 0xf3, 0x92, 0x85, 0xfc, 0xb8, 0x38, 0x5c, 0x32, 0xd3, 0xd2, 0x9c, 0xf3, 0x0b, 0x2a, 0x85, 0xe4, 0xf4, 0xd0, 0xcd, 0xd3, 0x43, 0x36, 0x4c, 0x8a, 0x80, 0xbc, 0x06, 0xa3, 0x01, 0xa3, 0x90, 0x3f, 0x17, 0x67, 0x48, 0x62, 0x51, 0x70, 0x49, 0x51, 0x6a, 0x62, 0x2e, 0x35, 0x0c, 0x34, 0x8a, - 0x82, 0x3a, 0x36, 0x35, 0x2f, 0x85, 0xda, 0x8e, 0x75, 0x32, 0xbb, 0xf0, 0x50, 0x8e, 0xe1, 0xc6, + 0x82, 0x3a, 0x36, 0x35, 0x2f, 0x85, 0xda, 0x8e, 0x75, 0xb2, 0xbb, 0xf0, 0x50, 0x8e, 0xe1, 0xc6, 0x43, 0x39, 0x86, 0x0f, 0x0f, 0xe5, 0x18, 0x1b, 0x1e, 0xc9, 0x31, 0xae, 0x78, 0x24, 0xc7, 0x78, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0xbe, 0x78, 0x24, 0xc7, - 0xf0, 0xe1, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x51, 0x1c, 0x30, 0xb3, 0x92, 0xd8, 0xc0, - 0xc1, 0x6f, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x72, 0x81, 0x1a, 0x91, 0x90, 0x01, 0x00, 0x00, + 0xf0, 0xe1, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, 0x31, 0xdc, 0x78, 0x2c, + 0xc7, 0x10, 0xc5, 0x01, 0x33, 0x33, 0x89, 0x0d, 0x1c, 0x0d, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x5e, 0xce, 0x52, 0xb3, 0x98, 0x01, 0x00, 0x00, } diff --git a/vendor/github.com/moby/buildkit/session/manager.go b/vendor/github.com/moby/buildkit/session/manager.go index f401c7fb33..e01b047e23 100644 --- a/vendor/github.com/moby/buildkit/session/manager.go +++ b/vendor/github.com/moby/buildkit/session/manager.go @@ -162,7 +162,9 @@ func (sm *Manager) Get(ctx context.Context, id string) (Caller, error) { go func() { select { case <-ctx.Done(): + sm.mu.Lock() sm.updateCondition.Broadcast() + sm.mu.Unlock() } }() diff --git a/vendor/github.com/moby/buildkit/session/session.go b/vendor/github.com/moby/buildkit/session/session.go index 47c9579633..5d04738ef7 100644 --- a/vendor/github.com/moby/buildkit/session/session.go +++ b/vendor/github.com/moby/buildkit/session/session.go @@ -24,7 +24,7 @@ const ( // Dialer returns a connection that can be used by the session type Dialer func(ctx context.Context, proto string, meta map[string][]string) (net.Conn, error) -// Attachable defines a feature that can be expsed on a session +// Attachable defines a feature that can be exposed on a session type Attachable interface { Register(*grpc.Server) } @@ -66,7 +66,7 @@ func NewSession(ctx context.Context, name, sharedKey string) (*Session, error) { return s, nil } -// Allow enable a given service to be reachable through the grpc session +// Allow enables a given service to be reachable through the grpc session func (s *Session) Allow(a Attachable) { a.Register(s.grpcServer) } diff --git a/vendor/github.com/modern-go/reflect2/type_map.go b/vendor/github.com/modern-go/reflect2/type_map.go index 6d489112ff..3acfb55803 100644 --- a/vendor/github.com/modern-go/reflect2/type_map.go +++ b/vendor/github.com/modern-go/reflect2/type_map.go @@ -4,6 +4,7 @@ import ( "reflect" "runtime" "strings" + "sync" "unsafe" ) @@ -15,10 +16,17 @@ func typelinks1() [][]unsafe.Pointer //go:linkname typelinks2 reflect.typelinks func typelinks2() (sections []unsafe.Pointer, offset [][]int32) -var types = map[string]reflect.Type{} -var packages = map[string]map[string]reflect.Type{} +// initOnce guards initialization of types and packages +var initOnce sync.Once + +var types map[string]reflect.Type +var packages map[string]map[string]reflect.Type + +// discoverTypes initializes types and packages +func discoverTypes() { + types = make(map[string]reflect.Type) + packages = make(map[string]map[string]reflect.Type) -func init() { ver := runtime.Version() if ver == "go1.5" || strings.HasPrefix(ver, "go1.5.") { loadGo15Types() @@ -90,11 +98,13 @@ type emptyInterface struct { // TypeByName return the type by its name, just like Class.forName in java func TypeByName(typeName string) Type { + initOnce.Do(discoverTypes) return Type2(types[typeName]) } // TypeByPackageName return the type by its package and name func TypeByPackageName(pkgPath string, name string) Type { + initOnce.Do(discoverTypes) pkgTypes := packages[pkgPath] if pkgTypes == nil { return nil diff --git a/vendor/github.com/morikuni/aec/LICENSE b/vendor/github.com/morikuni/aec/LICENSE new file mode 100644 index 0000000000..1c26401641 --- /dev/null +++ b/vendor/github.com/morikuni/aec/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Taihei Morikuni + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/morikuni/aec/README.md b/vendor/github.com/morikuni/aec/README.md new file mode 100644 index 0000000000..3cbc4343ee --- /dev/null +++ b/vendor/github.com/morikuni/aec/README.md @@ -0,0 +1,178 @@ +# aec + +[![GoDoc](https://godoc.org/github.com/morikuni/aec?status.svg)](https://godoc.org/github.com/morikuni/aec) + +Go wrapper for ANSI escape code. + +## Install + +```bash +go get github.com/morikuni/aec +``` + +## Features + +ANSI escape codes depend on terminal environment. +Some of these features may not work. +Check supported Font-Style/Font-Color features with [checkansi](./checkansi). + +[Wikipedia](https://en.wikipedia.org/wiki/ANSI_escape_code) for more detail. + +### Cursor + +- `Up(n)` +- `Down(n)` +- `Right(n)` +- `Left(n)` +- `NextLine(n)` +- `PreviousLine(n)` +- `Column(col)` +- `Position(row, col)` +- `Save` +- `Restore` +- `Hide` +- `Show` +- `Report` + +### Erase + +- `EraseDisplay(mode)` +- `EraseLine(mode)` + +### Scroll + +- `ScrollUp(n)` +- `ScrollDown(n)` + +### Font Style + +- `Bold` +- `Faint` +- `Italic` +- `Underline` +- `BlinkSlow` +- `BlinkRapid` +- `Inverse` +- `Conceal` +- `CrossOut` +- `Frame` +- `Encircle` +- `Overline` + +### Font Color + +Foreground color. + +- `DefaultF` +- `BlackF` +- `RedF` +- `GreenF` +- `YellowF` +- `BlueF` +- `MagentaF` +- `CyanF` +- `WhiteF` +- `LightBlackF` +- `LightRedF` +- `LightGreenF` +- `LightYellowF` +- `LightBlueF` +- `LightMagentaF` +- `LightCyanF` +- `LightWhiteF` +- `Color3BitF(color)` +- `Color8BitF(color)` +- `FullColorF(r, g, b)` + +Background color. + +- `DefaultB` +- `BlackB` +- `RedB` +- `GreenB` +- `YellowB` +- `BlueB` +- `MagentaB` +- `CyanB` +- `WhiteB` +- `LightBlackB` +- `LightRedB` +- `LightGreenB` +- `LightYellowB` +- `LightBlueB` +- `LightMagentaB` +- `LightCyanB` +- `LightWhiteB` +- `Color3BitB(color)` +- `Color8BitB(color)` +- `FullColorB(r, g, b)` + +### Color Converter + +24bit RGB color to ANSI color. + +- `NewRGB3Bit(r, g, b)` +- `NewRGB8Bit(r, g, b)` + +### Builder + +To mix these features. + +```go +custom := aec.EmptyBuilder.Right(2).RGB8BitF(128, 255, 64).RedB().ANSI +custom.Apply("Hello World") +``` + +## Usage + +1. Create ANSI by `aec.XXX().With(aec.YYY())` or `aec.EmptyBuilder.XXX().YYY().ANSI` +2. Print ANSI by `fmt.Print(ansi, "some string", aec.Reset)` or `fmt.Print(ansi.Apply("some string"))` + +`aec.Reset` should be added when using font style or font color features. + +## Example + +Simple progressbar. + +![sample](./sample.gif) + +```go +package main + +import ( + "fmt" + "strings" + "time" + + "github.com/morikuni/aec" +) + +func main() { + const n = 20 + builder := aec.EmptyBuilder + + up2 := aec.Up(2) + col := aec.Column(n + 2) + bar := aec.Color8BitF(aec.NewRGB8Bit(64, 255, 64)) + label := builder.LightRedF().Underline().With(col).Right(1).ANSI + + // for up2 + fmt.Println() + fmt.Println() + + for i := 0; i <= n; i++ { + fmt.Print(up2) + fmt.Println(label.Apply(fmt.Sprint(i, "/", n))) + fmt.Print("[") + fmt.Print(bar.Apply(strings.Repeat("=", i))) + fmt.Println(col.Apply("]")) + time.Sleep(100 * time.Millisecond) + } +} +``` + +## License + +[MIT](./LICENSE) + + diff --git a/vendor/github.com/morikuni/aec/aec.go b/vendor/github.com/morikuni/aec/aec.go new file mode 100644 index 0000000000..566be6eb1e --- /dev/null +++ b/vendor/github.com/morikuni/aec/aec.go @@ -0,0 +1,137 @@ +package aec + +import "fmt" + +// EraseMode is listed in a variable EraseModes. +type EraseMode uint + +var ( + // EraseModes is a list of EraseMode. + EraseModes struct { + // All erase all. + All EraseMode + + // Head erase to head. + Head EraseMode + + // Tail erase to tail. + Tail EraseMode + } + + // Save saves the cursor position. + Save ANSI + + // Restore restores the cursor position. + Restore ANSI + + // Hide hides the cursor. + Hide ANSI + + // Show shows the cursor. + Show ANSI + + // Report reports the cursor position. + Report ANSI +) + +// Up moves up the cursor. +func Up(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dA", n)) +} + +// Down moves down the cursor. +func Down(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dB", n)) +} + +// Right moves right the cursor. +func Right(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dC", n)) +} + +// Left moves left the cursor. +func Left(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dD", n)) +} + +// NextLine moves down the cursor to head of a line. +func NextLine(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dE", n)) +} + +// PreviousLine moves up the cursor to head of a line. +func PreviousLine(n uint) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dF", n)) +} + +// Column set the cursor position to a given column. +func Column(col uint) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dG", col)) +} + +// Position set the cursor position to a given absolute position. +func Position(row, col uint) ANSI { + return newAnsi(fmt.Sprintf(esc+"%d;%dH", row, col)) +} + +// EraseDisplay erases display by given EraseMode. +func EraseDisplay(m EraseMode) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dJ", m)) +} + +// EraseLine erases lines by given EraseMode. +func EraseLine(m EraseMode) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dK", m)) +} + +// ScrollUp scrolls up the page. +func ScrollUp(n int) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dS", n)) +} + +// ScrollDown scrolls down the page. +func ScrollDown(n int) ANSI { + if n == 0 { + return empty + } + return newAnsi(fmt.Sprintf(esc+"%dT", n)) +} + +func init() { + EraseModes = struct { + All EraseMode + Head EraseMode + Tail EraseMode + }{ + Tail: 0, + Head: 1, + All: 2, + } + + Save = newAnsi(esc + "s") + Restore = newAnsi(esc + "u") + Hide = newAnsi(esc + "?25l") + Show = newAnsi(esc + "?25h") + Report = newAnsi(esc + "6n") +} diff --git a/vendor/github.com/morikuni/aec/ansi.go b/vendor/github.com/morikuni/aec/ansi.go new file mode 100644 index 0000000000..e60722e6e6 --- /dev/null +++ b/vendor/github.com/morikuni/aec/ansi.go @@ -0,0 +1,59 @@ +package aec + +import ( + "fmt" + "strings" +) + +const esc = "\x1b[" + +// Reset resets SGR effect. +const Reset string = "\x1b[0m" + +var empty = newAnsi("") + +// ANSI represents ANSI escape code. +type ANSI interface { + fmt.Stringer + + // With adapts given ANSIs. + With(...ANSI) ANSI + + // Apply wraps given string in ANSI. + Apply(string) string +} + +type ansiImpl string + +func newAnsi(s string) *ansiImpl { + r := ansiImpl(s) + return &r +} + +func (a *ansiImpl) With(ansi ...ANSI) ANSI { + return concat(append([]ANSI{a}, ansi...)) +} + +func (a *ansiImpl) Apply(s string) string { + return a.String() + s + Reset +} + +func (a *ansiImpl) String() string { + return string(*a) +} + +// Apply wraps given string in ANSIs. +func Apply(s string, ansi ...ANSI) string { + if len(ansi) == 0 { + return s + } + return concat(ansi).Apply(s) +} + +func concat(ansi []ANSI) ANSI { + strs := make([]string, 0, len(ansi)) + for _, p := range ansi { + strs = append(strs, p.String()) + } + return newAnsi(strings.Join(strs, "")) +} diff --git a/vendor/github.com/morikuni/aec/builder.go b/vendor/github.com/morikuni/aec/builder.go new file mode 100644 index 0000000000..13bd002d4e --- /dev/null +++ b/vendor/github.com/morikuni/aec/builder.go @@ -0,0 +1,388 @@ +package aec + +// Builder is a lightweight syntax to construct customized ANSI. +type Builder struct { + ANSI ANSI +} + +// EmptyBuilder is an initialized Builder. +var EmptyBuilder *Builder + +// NewBuilder creates a Builder from existing ANSI. +func NewBuilder(a ...ANSI) *Builder { + return &Builder{concat(a)} +} + +// With is a syntax for With. +func (builder *Builder) With(a ...ANSI) *Builder { + return NewBuilder(builder.ANSI.With(a...)) +} + +// Up is a syntax for Up. +func (builder *Builder) Up(n uint) *Builder { + return builder.With(Up(n)) +} + +// Down is a syntax for Down. +func (builder *Builder) Down(n uint) *Builder { + return builder.With(Down(n)) +} + +// Right is a syntax for Right. +func (builder *Builder) Right(n uint) *Builder { + return builder.With(Right(n)) +} + +// Left is a syntax for Left. +func (builder *Builder) Left(n uint) *Builder { + return builder.With(Left(n)) +} + +// NextLine is a syntax for NextLine. +func (builder *Builder) NextLine(n uint) *Builder { + return builder.With(NextLine(n)) +} + +// PreviousLine is a syntax for PreviousLine. +func (builder *Builder) PreviousLine(n uint) *Builder { + return builder.With(PreviousLine(n)) +} + +// Column is a syntax for Column. +func (builder *Builder) Column(col uint) *Builder { + return builder.With(Column(col)) +} + +// Position is a syntax for Position. +func (builder *Builder) Position(row, col uint) *Builder { + return builder.With(Position(row, col)) +} + +// EraseDisplay is a syntax for EraseDisplay. +func (builder *Builder) EraseDisplay(m EraseMode) *Builder { + return builder.With(EraseDisplay(m)) +} + +// EraseLine is a syntax for EraseLine. +func (builder *Builder) EraseLine(m EraseMode) *Builder { + return builder.With(EraseLine(m)) +} + +// ScrollUp is a syntax for ScrollUp. +func (builder *Builder) ScrollUp(n int) *Builder { + return builder.With(ScrollUp(n)) +} + +// ScrollDown is a syntax for ScrollDown. +func (builder *Builder) ScrollDown(n int) *Builder { + return builder.With(ScrollDown(n)) +} + +// Save is a syntax for Save. +func (builder *Builder) Save() *Builder { + return builder.With(Save) +} + +// Restore is a syntax for Restore. +func (builder *Builder) Restore() *Builder { + return builder.With(Restore) +} + +// Hide is a syntax for Hide. +func (builder *Builder) Hide() *Builder { + return builder.With(Hide) +} + +// Show is a syntax for Show. +func (builder *Builder) Show() *Builder { + return builder.With(Show) +} + +// Report is a syntax for Report. +func (builder *Builder) Report() *Builder { + return builder.With(Report) +} + +// Bold is a syntax for Bold. +func (builder *Builder) Bold() *Builder { + return builder.With(Bold) +} + +// Faint is a syntax for Faint. +func (builder *Builder) Faint() *Builder { + return builder.With(Faint) +} + +// Italic is a syntax for Italic. +func (builder *Builder) Italic() *Builder { + return builder.With(Italic) +} + +// Underline is a syntax for Underline. +func (builder *Builder) Underline() *Builder { + return builder.With(Underline) +} + +// BlinkSlow is a syntax for BlinkSlow. +func (builder *Builder) BlinkSlow() *Builder { + return builder.With(BlinkSlow) +} + +// BlinkRapid is a syntax for BlinkRapid. +func (builder *Builder) BlinkRapid() *Builder { + return builder.With(BlinkRapid) +} + +// Inverse is a syntax for Inverse. +func (builder *Builder) Inverse() *Builder { + return builder.With(Inverse) +} + +// Conceal is a syntax for Conceal. +func (builder *Builder) Conceal() *Builder { + return builder.With(Conceal) +} + +// CrossOut is a syntax for CrossOut. +func (builder *Builder) CrossOut() *Builder { + return builder.With(CrossOut) +} + +// BlackF is a syntax for BlackF. +func (builder *Builder) BlackF() *Builder { + return builder.With(BlackF) +} + +// RedF is a syntax for RedF. +func (builder *Builder) RedF() *Builder { + return builder.With(RedF) +} + +// GreenF is a syntax for GreenF. +func (builder *Builder) GreenF() *Builder { + return builder.With(GreenF) +} + +// YellowF is a syntax for YellowF. +func (builder *Builder) YellowF() *Builder { + return builder.With(YellowF) +} + +// BlueF is a syntax for BlueF. +func (builder *Builder) BlueF() *Builder { + return builder.With(BlueF) +} + +// MagentaF is a syntax for MagentaF. +func (builder *Builder) MagentaF() *Builder { + return builder.With(MagentaF) +} + +// CyanF is a syntax for CyanF. +func (builder *Builder) CyanF() *Builder { + return builder.With(CyanF) +} + +// WhiteF is a syntax for WhiteF. +func (builder *Builder) WhiteF() *Builder { + return builder.With(WhiteF) +} + +// DefaultF is a syntax for DefaultF. +func (builder *Builder) DefaultF() *Builder { + return builder.With(DefaultF) +} + +// BlackB is a syntax for BlackB. +func (builder *Builder) BlackB() *Builder { + return builder.With(BlackB) +} + +// RedB is a syntax for RedB. +func (builder *Builder) RedB() *Builder { + return builder.With(RedB) +} + +// GreenB is a syntax for GreenB. +func (builder *Builder) GreenB() *Builder { + return builder.With(GreenB) +} + +// YellowB is a syntax for YellowB. +func (builder *Builder) YellowB() *Builder { + return builder.With(YellowB) +} + +// BlueB is a syntax for BlueB. +func (builder *Builder) BlueB() *Builder { + return builder.With(BlueB) +} + +// MagentaB is a syntax for MagentaB. +func (builder *Builder) MagentaB() *Builder { + return builder.With(MagentaB) +} + +// CyanB is a syntax for CyanB. +func (builder *Builder) CyanB() *Builder { + return builder.With(CyanB) +} + +// WhiteB is a syntax for WhiteB. +func (builder *Builder) WhiteB() *Builder { + return builder.With(WhiteB) +} + +// DefaultB is a syntax for DefaultB. +func (builder *Builder) DefaultB() *Builder { + return builder.With(DefaultB) +} + +// Frame is a syntax for Frame. +func (builder *Builder) Frame() *Builder { + return builder.With(Frame) +} + +// Encircle is a syntax for Encircle. +func (builder *Builder) Encircle() *Builder { + return builder.With(Encircle) +} + +// Overline is a syntax for Overline. +func (builder *Builder) Overline() *Builder { + return builder.With(Overline) +} + +// LightBlackF is a syntax for LightBlueF. +func (builder *Builder) LightBlackF() *Builder { + return builder.With(LightBlackF) +} + +// LightRedF is a syntax for LightRedF. +func (builder *Builder) LightRedF() *Builder { + return builder.With(LightRedF) +} + +// LightGreenF is a syntax for LightGreenF. +func (builder *Builder) LightGreenF() *Builder { + return builder.With(LightGreenF) +} + +// LightYellowF is a syntax for LightYellowF. +func (builder *Builder) LightYellowF() *Builder { + return builder.With(LightYellowF) +} + +// LightBlueF is a syntax for LightBlueF. +func (builder *Builder) LightBlueF() *Builder { + return builder.With(LightBlueF) +} + +// LightMagentaF is a syntax for LightMagentaF. +func (builder *Builder) LightMagentaF() *Builder { + return builder.With(LightMagentaF) +} + +// LightCyanF is a syntax for LightCyanF. +func (builder *Builder) LightCyanF() *Builder { + return builder.With(LightCyanF) +} + +// LightWhiteF is a syntax for LightWhiteF. +func (builder *Builder) LightWhiteF() *Builder { + return builder.With(LightWhiteF) +} + +// LightBlackB is a syntax for LightBlackB. +func (builder *Builder) LightBlackB() *Builder { + return builder.With(LightBlackB) +} + +// LightRedB is a syntax for LightRedB. +func (builder *Builder) LightRedB() *Builder { + return builder.With(LightRedB) +} + +// LightGreenB is a syntax for LightGreenB. +func (builder *Builder) LightGreenB() *Builder { + return builder.With(LightGreenB) +} + +// LightYellowB is a syntax for LightYellowB. +func (builder *Builder) LightYellowB() *Builder { + return builder.With(LightYellowB) +} + +// LightBlueB is a syntax for LightBlueB. +func (builder *Builder) LightBlueB() *Builder { + return builder.With(LightBlueB) +} + +// LightMagentaB is a syntax for LightMagentaB. +func (builder *Builder) LightMagentaB() *Builder { + return builder.With(LightMagentaB) +} + +// LightCyanB is a syntax for LightCyanB. +func (builder *Builder) LightCyanB() *Builder { + return builder.With(LightCyanB) +} + +// LightWhiteB is a syntax for LightWhiteB. +func (builder *Builder) LightWhiteB() *Builder { + return builder.With(LightWhiteB) +} + +// Color3BitF is a syntax for Color3BitF. +func (builder *Builder) Color3BitF(c RGB3Bit) *Builder { + return builder.With(Color3BitF(c)) +} + +// Color3BitB is a syntax for Color3BitB. +func (builder *Builder) Color3BitB(c RGB3Bit) *Builder { + return builder.With(Color3BitB(c)) +} + +// Color8BitF is a syntax for Color8BitF. +func (builder *Builder) Color8BitF(c RGB8Bit) *Builder { + return builder.With(Color8BitF(c)) +} + +// Color8BitB is a syntax for Color8BitB. +func (builder *Builder) Color8BitB(c RGB8Bit) *Builder { + return builder.With(Color8BitB(c)) +} + +// FullColorF is a syntax for FullColorF. +func (builder *Builder) FullColorF(r, g, b uint8) *Builder { + return builder.With(FullColorF(r, g, b)) +} + +// FullColorB is a syntax for FullColorB. +func (builder *Builder) FullColorB(r, g, b uint8) *Builder { + return builder.With(FullColorB(r, g, b)) +} + +// RGB3BitF is a syntax for Color3BitF with NewRGB3Bit. +func (builder *Builder) RGB3BitF(r, g, b uint8) *Builder { + return builder.Color3BitF(NewRGB3Bit(r, g, b)) +} + +// RGB3BitB is a syntax for Color3BitB with NewRGB3Bit. +func (builder *Builder) RGB3BitB(r, g, b uint8) *Builder { + return builder.Color3BitB(NewRGB3Bit(r, g, b)) +} + +// RGB8BitF is a syntax for Color8BitF with NewRGB8Bit. +func (builder *Builder) RGB8BitF(r, g, b uint8) *Builder { + return builder.Color8BitF(NewRGB8Bit(r, g, b)) +} + +// RGB8BitB is a syntax for Color8BitB with NewRGB8Bit. +func (builder *Builder) RGB8BitB(r, g, b uint8) *Builder { + return builder.Color8BitB(NewRGB8Bit(r, g, b)) +} + +func init() { + EmptyBuilder = &Builder{empty} +} diff --git a/vendor/github.com/morikuni/aec/sample.gif b/vendor/github.com/morikuni/aec/sample.gif new file mode 100644 index 0000000000..c6c613bb70 Binary files /dev/null and b/vendor/github.com/morikuni/aec/sample.gif differ diff --git a/vendor/github.com/morikuni/aec/sgr.go b/vendor/github.com/morikuni/aec/sgr.go new file mode 100644 index 0000000000..0ba3464e6d --- /dev/null +++ b/vendor/github.com/morikuni/aec/sgr.go @@ -0,0 +1,202 @@ +package aec + +import ( + "fmt" +) + +// RGB3Bit is a 3bit RGB color. +type RGB3Bit uint8 + +// RGB8Bit is a 8bit RGB color. +type RGB8Bit uint8 + +func newSGR(n uint) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dm", n)) +} + +// NewRGB3Bit create a RGB3Bit from given RGB. +func NewRGB3Bit(r, g, b uint8) RGB3Bit { + return RGB3Bit((r >> 7) | ((g >> 6) & 0x2) | ((b >> 5) & 0x4)) +} + +// NewRGB8Bit create a RGB8Bit from given RGB. +func NewRGB8Bit(r, g, b uint8) RGB8Bit { + return RGB8Bit(16 + 36*(r/43) + 6*(g/43) + b/43) +} + +// Color3BitF set the foreground color of text. +func Color3BitF(c RGB3Bit) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dm", c+30)) +} + +// Color3BitB set the background color of text. +func Color3BitB(c RGB3Bit) ANSI { + return newAnsi(fmt.Sprintf(esc+"%dm", c+40)) +} + +// Color8BitF set the foreground color of text. +func Color8BitF(c RGB8Bit) ANSI { + return newAnsi(fmt.Sprintf(esc+"38;5;%dm", c)) +} + +// Color8BitB set the background color of text. +func Color8BitB(c RGB8Bit) ANSI { + return newAnsi(fmt.Sprintf(esc+"48;5;%dm", c)) +} + +// FullColorF set the foreground color of text. +func FullColorF(r, g, b uint8) ANSI { + return newAnsi(fmt.Sprintf(esc+"38;2;%d;%d;%dm", r, g, b)) +} + +// FullColorB set the foreground color of text. +func FullColorB(r, g, b uint8) ANSI { + return newAnsi(fmt.Sprintf(esc+"48;2;%d;%d;%dm", r, g, b)) +} + +// Style +var ( + // Bold set the text style to bold or increased intensity. + Bold ANSI + + // Faint set the text style to faint. + Faint ANSI + + // Italic set the text style to italic. + Italic ANSI + + // Underline set the text style to underline. + Underline ANSI + + // BlinkSlow set the text style to slow blink. + BlinkSlow ANSI + + // BlinkRapid set the text style to rapid blink. + BlinkRapid ANSI + + // Inverse swap the foreground color and background color. + Inverse ANSI + + // Conceal set the text style to conceal. + Conceal ANSI + + // CrossOut set the text style to crossed out. + CrossOut ANSI + + // Frame set the text style to framed. + Frame ANSI + + // Encircle set the text style to encircled. + Encircle ANSI + + // Overline set the text style to overlined. + Overline ANSI +) + +// Foreground color of text. +var ( + // DefaultF is the default color of foreground. + DefaultF ANSI + + // Normal color + BlackF ANSI + RedF ANSI + GreenF ANSI + YellowF ANSI + BlueF ANSI + MagentaF ANSI + CyanF ANSI + WhiteF ANSI + + // Light color + LightBlackF ANSI + LightRedF ANSI + LightGreenF ANSI + LightYellowF ANSI + LightBlueF ANSI + LightMagentaF ANSI + LightCyanF ANSI + LightWhiteF ANSI +) + +// Background color of text. +var ( + // DefaultB is the default color of background. + DefaultB ANSI + + // Normal color + BlackB ANSI + RedB ANSI + GreenB ANSI + YellowB ANSI + BlueB ANSI + MagentaB ANSI + CyanB ANSI + WhiteB ANSI + + // Light color + LightBlackB ANSI + LightRedB ANSI + LightGreenB ANSI + LightYellowB ANSI + LightBlueB ANSI + LightMagentaB ANSI + LightCyanB ANSI + LightWhiteB ANSI +) + +func init() { + Bold = newSGR(1) + Faint = newSGR(2) + Italic = newSGR(3) + Underline = newSGR(4) + BlinkSlow = newSGR(5) + BlinkRapid = newSGR(6) + Inverse = newSGR(7) + Conceal = newSGR(8) + CrossOut = newSGR(9) + + BlackF = newSGR(30) + RedF = newSGR(31) + GreenF = newSGR(32) + YellowF = newSGR(33) + BlueF = newSGR(34) + MagentaF = newSGR(35) + CyanF = newSGR(36) + WhiteF = newSGR(37) + + DefaultF = newSGR(39) + + BlackB = newSGR(40) + RedB = newSGR(41) + GreenB = newSGR(42) + YellowB = newSGR(43) + BlueB = newSGR(44) + MagentaB = newSGR(45) + CyanB = newSGR(46) + WhiteB = newSGR(47) + + DefaultB = newSGR(49) + + Frame = newSGR(51) + Encircle = newSGR(52) + Overline = newSGR(53) + + LightBlackF = newSGR(90) + LightRedF = newSGR(91) + LightGreenF = newSGR(92) + LightYellowF = newSGR(93) + LightBlueF = newSGR(94) + LightMagentaF = newSGR(95) + LightCyanF = newSGR(96) + LightWhiteF = newSGR(97) + + LightBlackB = newSGR(100) + LightRedB = newSGR(101) + LightGreenB = newSGR(102) + LightYellowB = newSGR(103) + LightBlueB = newSGR(104) + LightMagentaB = newSGR(105) + LightCyanB = newSGR(106) + LightWhiteB = newSGR(107) +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/cgroups.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/cgroups.go new file mode 100644 index 0000000000..25ff515893 --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/cgroups.go @@ -0,0 +1,64 @@ +// +build linux + +package cgroups + +import ( + "fmt" + + "github.com/opencontainers/runc/libcontainer/configs" +) + +type Manager interface { + // Applies cgroup configuration to the process with the specified pid + Apply(pid int) error + + // Returns the PIDs inside the cgroup set + GetPids() ([]int, error) + + // Returns the PIDs inside the cgroup set & all sub-cgroups + GetAllPids() ([]int, error) + + // Returns statistics for the cgroup set + GetStats() (*Stats, error) + + // Toggles the freezer cgroup according with specified state + Freeze(state configs.FreezerState) error + + // Destroys the cgroup set + Destroy() error + + // The option func SystemdCgroups() and Cgroupfs() require following attributes: + // Paths map[string]string + // Cgroups *configs.Cgroup + // Paths maps cgroup subsystem to path at which it is mounted. + // Cgroups specifies specific cgroup settings for the various subsystems + + // Returns cgroup paths to save in a state file and to be able to + // restore the object later. + GetPaths() map[string]string + + // Sets the cgroup as configured. + Set(container *configs.Config) error +} + +type NotFoundError struct { + Subsystem string +} + +func (e *NotFoundError) Error() string { + return fmt.Sprintf("mountpoint for %s not found", e.Subsystem) +} + +func NewNotFoundError(sub string) error { + return &NotFoundError{ + Subsystem: sub, + } +} + +func IsNotFound(err error) bool { + if err == nil { + return false + } + _, ok := err.(*NotFoundError) + return ok +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/cgroups_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/cgroups_unsupported.go new file mode 100644 index 0000000000..278d507e28 --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/cgroups_unsupported.go @@ -0,0 +1,3 @@ +// +build !linux + +package cgroups diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/stats.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/stats.go new file mode 100644 index 0000000000..8eeedc55b0 --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/stats.go @@ -0,0 +1,108 @@ +// +build linux + +package cgroups + +type ThrottlingData struct { + // Number of periods with throttling active + Periods uint64 `json:"periods,omitempty"` + // Number of periods when the container hit its throttling limit. + ThrottledPeriods uint64 `json:"throttled_periods,omitempty"` + // Aggregate time the container was throttled for in nanoseconds. + ThrottledTime uint64 `json:"throttled_time,omitempty"` +} + +// CpuUsage denotes the usage of a CPU. +// All CPU stats are aggregate since container inception. +type CpuUsage struct { + // Total CPU time consumed. + // Units: nanoseconds. + TotalUsage uint64 `json:"total_usage,omitempty"` + // Total CPU time consumed per core. + // Units: nanoseconds. + PercpuUsage []uint64 `json:"percpu_usage,omitempty"` + // Time spent by tasks of the cgroup in kernel mode. + // Units: nanoseconds. + UsageInKernelmode uint64 `json:"usage_in_kernelmode"` + // Time spent by tasks of the cgroup in user mode. + // Units: nanoseconds. + UsageInUsermode uint64 `json:"usage_in_usermode"` +} + +type CpuStats struct { + CpuUsage CpuUsage `json:"cpu_usage,omitempty"` + ThrottlingData ThrottlingData `json:"throttling_data,omitempty"` +} + +type MemoryData struct { + Usage uint64 `json:"usage,omitempty"` + MaxUsage uint64 `json:"max_usage,omitempty"` + Failcnt uint64 `json:"failcnt"` + Limit uint64 `json:"limit"` +} + +type MemoryStats struct { + // memory used for cache + Cache uint64 `json:"cache,omitempty"` + // usage of memory + Usage MemoryData `json:"usage,omitempty"` + // usage of memory + swap + SwapUsage MemoryData `json:"swap_usage,omitempty"` + // usage of kernel memory + KernelUsage MemoryData `json:"kernel_usage,omitempty"` + // usage of kernel TCP memory + KernelTCPUsage MemoryData `json:"kernel_tcp_usage,omitempty"` + // if true, memory usage is accounted for throughout a hierarchy of cgroups. + UseHierarchy bool `json:"use_hierarchy"` + + Stats map[string]uint64 `json:"stats,omitempty"` +} + +type PidsStats struct { + // number of pids in the cgroup + Current uint64 `json:"current,omitempty"` + // active pids hard limit + Limit uint64 `json:"limit,omitempty"` +} + +type BlkioStatEntry struct { + Major uint64 `json:"major,omitempty"` + Minor uint64 `json:"minor,omitempty"` + Op string `json:"op,omitempty"` + Value uint64 `json:"value,omitempty"` +} + +type BlkioStats struct { + // number of bytes tranferred to and from the block device + IoServiceBytesRecursive []BlkioStatEntry `json:"io_service_bytes_recursive,omitempty"` + IoServicedRecursive []BlkioStatEntry `json:"io_serviced_recursive,omitempty"` + IoQueuedRecursive []BlkioStatEntry `json:"io_queue_recursive,omitempty"` + IoServiceTimeRecursive []BlkioStatEntry `json:"io_service_time_recursive,omitempty"` + IoWaitTimeRecursive []BlkioStatEntry `json:"io_wait_time_recursive,omitempty"` + IoMergedRecursive []BlkioStatEntry `json:"io_merged_recursive,omitempty"` + IoTimeRecursive []BlkioStatEntry `json:"io_time_recursive,omitempty"` + SectorsRecursive []BlkioStatEntry `json:"sectors_recursive,omitempty"` +} + +type HugetlbStats struct { + // current res_counter usage for hugetlb + Usage uint64 `json:"usage,omitempty"` + // maximum usage ever recorded. + MaxUsage uint64 `json:"max_usage,omitempty"` + // number of times hugetlb usage allocation failure. + Failcnt uint64 `json:"failcnt"` +} + +type Stats struct { + CpuStats CpuStats `json:"cpu_stats,omitempty"` + MemoryStats MemoryStats `json:"memory_stats,omitempty"` + PidsStats PidsStats `json:"pids_stats,omitempty"` + BlkioStats BlkioStats `json:"blkio_stats,omitempty"` + // the map is in the format "size of hugepage: stats of the hugepage" + HugetlbStats map[string]HugetlbStats `json:"hugetlb_stats,omitempty"` +} + +func NewStats() *Stats { + memoryStats := MemoryStats{Stats: make(map[string]uint64)} + hugetlbStats := make(map[string]HugetlbStats) + return &Stats{MemoryStats: memoryStats, HugetlbStats: hugetlbStats} +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/utils.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/utils.go new file mode 100644 index 0000000000..ec79ae7672 --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/utils.go @@ -0,0 +1,517 @@ +// +build linux + +package cgroups + +import ( + "bufio" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strconv" + "strings" + "time" + + units "github.com/docker/go-units" + "golang.org/x/sys/unix" +) + +const ( + CgroupNamePrefix = "name=" + CgroupProcesses = "cgroup.procs" +) + +// HugePageSizeUnitList is a list of the units used by the linux kernel when +// naming the HugePage control files. +// https://www.kernel.org/doc/Documentation/cgroup-v1/hugetlb.txt +// TODO Since the kernel only use KB, MB and GB; TB and PB should be removed, +// depends on https://github.com/docker/go-units/commit/a09cd47f892041a4fac473133d181f5aea6fa393 +var HugePageSizeUnitList = []string{"B", "KB", "MB", "GB", "TB", "PB"} + +// https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt +func FindCgroupMountpoint(cgroupPath, subsystem string) (string, error) { + mnt, _, err := FindCgroupMountpointAndRoot(cgroupPath, subsystem) + return mnt, err +} + +func FindCgroupMountpointAndRoot(cgroupPath, subsystem string) (string, string, error) { + // We are not using mount.GetMounts() because it's super-inefficient, + // parsing it directly sped up x10 times because of not using Sscanf. + // It was one of two major performance drawbacks in container start. + if !isSubsystemAvailable(subsystem) { + return "", "", NewNotFoundError(subsystem) + } + + f, err := os.Open("/proc/self/mountinfo") + if err != nil { + return "", "", err + } + defer f.Close() + + return findCgroupMountpointAndRootFromReader(f, cgroupPath, subsystem) +} + +func findCgroupMountpointAndRootFromReader(reader io.Reader, cgroupPath, subsystem string) (string, string, error) { + scanner := bufio.NewScanner(reader) + for scanner.Scan() { + txt := scanner.Text() + fields := strings.Fields(txt) + if len(fields) < 5 { + continue + } + if strings.HasPrefix(fields[4], cgroupPath) { + for _, opt := range strings.Split(fields[len(fields)-1], ",") { + if opt == subsystem { + return fields[4], fields[3], nil + } + } + } + } + if err := scanner.Err(); err != nil { + return "", "", err + } + + return "", "", NewNotFoundError(subsystem) +} + +func isSubsystemAvailable(subsystem string) bool { + cgroups, err := ParseCgroupFile("/proc/self/cgroup") + if err != nil { + return false + } + _, avail := cgroups[subsystem] + return avail +} + +func GetClosestMountpointAncestor(dir, mountinfo string) string { + deepestMountPoint := "" + for _, mountInfoEntry := range strings.Split(mountinfo, "\n") { + mountInfoParts := strings.Fields(mountInfoEntry) + if len(mountInfoParts) < 5 { + continue + } + mountPoint := mountInfoParts[4] + if strings.HasPrefix(mountPoint, deepestMountPoint) && strings.HasPrefix(dir, mountPoint) { + deepestMountPoint = mountPoint + } + } + return deepestMountPoint +} + +func FindCgroupMountpointDir() (string, error) { + f, err := os.Open("/proc/self/mountinfo") + if err != nil { + return "", err + } + defer f.Close() + + scanner := bufio.NewScanner(f) + for scanner.Scan() { + text := scanner.Text() + fields := strings.Split(text, " ") + // Safe as mountinfo encodes mountpoints with spaces as \040. + index := strings.Index(text, " - ") + postSeparatorFields := strings.Fields(text[index+3:]) + numPostFields := len(postSeparatorFields) + + // This is an error as we can't detect if the mount is for "cgroup" + if numPostFields == 0 { + return "", fmt.Errorf("Found no fields post '-' in %q", text) + } + + if postSeparatorFields[0] == "cgroup" { + // Check that the mount is properly formatted. + if numPostFields < 3 { + return "", fmt.Errorf("Error found less than 3 fields post '-' in %q", text) + } + + return filepath.Dir(fields[4]), nil + } + } + if err := scanner.Err(); err != nil { + return "", err + } + + return "", NewNotFoundError("cgroup") +} + +type Mount struct { + Mountpoint string + Root string + Subsystems []string +} + +func (m Mount) GetOwnCgroup(cgroups map[string]string) (string, error) { + if len(m.Subsystems) == 0 { + return "", fmt.Errorf("no subsystem for mount") + } + + return getControllerPath(m.Subsystems[0], cgroups) +} + +func getCgroupMountsHelper(ss map[string]bool, mi io.Reader, all bool) ([]Mount, error) { + res := make([]Mount, 0, len(ss)) + scanner := bufio.NewScanner(mi) + numFound := 0 + for scanner.Scan() && numFound < len(ss) { + txt := scanner.Text() + sepIdx := strings.Index(txt, " - ") + if sepIdx == -1 { + return nil, fmt.Errorf("invalid mountinfo format") + } + if txt[sepIdx+3:sepIdx+10] == "cgroup2" || txt[sepIdx+3:sepIdx+9] != "cgroup" { + continue + } + fields := strings.Split(txt, " ") + m := Mount{ + Mountpoint: fields[4], + Root: fields[3], + } + for _, opt := range strings.Split(fields[len(fields)-1], ",") { + seen, known := ss[opt] + if !known || (!all && seen) { + continue + } + ss[opt] = true + if strings.HasPrefix(opt, CgroupNamePrefix) { + opt = opt[len(CgroupNamePrefix):] + } + m.Subsystems = append(m.Subsystems, opt) + numFound++ + } + if len(m.Subsystems) > 0 || all { + res = append(res, m) + } + } + if err := scanner.Err(); err != nil { + return nil, err + } + return res, nil +} + +// GetCgroupMounts returns the mounts for the cgroup subsystems. +// all indicates whether to return just the first instance or all the mounts. +func GetCgroupMounts(all bool) ([]Mount, error) { + f, err := os.Open("/proc/self/mountinfo") + if err != nil { + return nil, err + } + defer f.Close() + + allSubsystems, err := ParseCgroupFile("/proc/self/cgroup") + if err != nil { + return nil, err + } + + allMap := make(map[string]bool) + for s := range allSubsystems { + allMap[s] = false + } + return getCgroupMountsHelper(allMap, f, all) +} + +// GetAllSubsystems returns all the cgroup subsystems supported by the kernel +func GetAllSubsystems() ([]string, error) { + f, err := os.Open("/proc/cgroups") + if err != nil { + return nil, err + } + defer f.Close() + + subsystems := []string{} + + s := bufio.NewScanner(f) + for s.Scan() { + text := s.Text() + if text[0] != '#' { + parts := strings.Fields(text) + if len(parts) >= 4 && parts[3] != "0" { + subsystems = append(subsystems, parts[0]) + } + } + } + if err := s.Err(); err != nil { + return nil, err + } + return subsystems, nil +} + +// GetOwnCgroup returns the relative path to the cgroup docker is running in. +func GetOwnCgroup(subsystem string) (string, error) { + cgroups, err := ParseCgroupFile("/proc/self/cgroup") + if err != nil { + return "", err + } + + return getControllerPath(subsystem, cgroups) +} + +func GetOwnCgroupPath(subsystem string) (string, error) { + cgroup, err := GetOwnCgroup(subsystem) + if err != nil { + return "", err + } + + return getCgroupPathHelper(subsystem, cgroup) +} + +func GetInitCgroup(subsystem string) (string, error) { + cgroups, err := ParseCgroupFile("/proc/1/cgroup") + if err != nil { + return "", err + } + + return getControllerPath(subsystem, cgroups) +} + +func GetInitCgroupPath(subsystem string) (string, error) { + cgroup, err := GetInitCgroup(subsystem) + if err != nil { + return "", err + } + + return getCgroupPathHelper(subsystem, cgroup) +} + +func getCgroupPathHelper(subsystem, cgroup string) (string, error) { + mnt, root, err := FindCgroupMountpointAndRoot("", subsystem) + if err != nil { + return "", err + } + + // This is needed for nested containers, because in /proc/self/cgroup we + // see paths from host, which don't exist in container. + relCgroup, err := filepath.Rel(root, cgroup) + if err != nil { + return "", err + } + + return filepath.Join(mnt, relCgroup), nil +} + +func readProcsFile(dir string) ([]int, error) { + f, err := os.Open(filepath.Join(dir, CgroupProcesses)) + if err != nil { + return nil, err + } + defer f.Close() + + var ( + s = bufio.NewScanner(f) + out = []int{} + ) + + for s.Scan() { + if t := s.Text(); t != "" { + pid, err := strconv.Atoi(t) + if err != nil { + return nil, err + } + out = append(out, pid) + } + } + return out, nil +} + +// ParseCgroupFile parses the given cgroup file, typically from +// /proc//cgroup, into a map of subgroups to cgroup names. +func ParseCgroupFile(path string) (map[string]string, error) { + f, err := os.Open(path) + if err != nil { + return nil, err + } + defer f.Close() + + return parseCgroupFromReader(f) +} + +// helper function for ParseCgroupFile to make testing easier +func parseCgroupFromReader(r io.Reader) (map[string]string, error) { + s := bufio.NewScanner(r) + cgroups := make(map[string]string) + + for s.Scan() { + text := s.Text() + // from cgroups(7): + // /proc/[pid]/cgroup + // ... + // For each cgroup hierarchy ... there is one entry + // containing three colon-separated fields of the form: + // hierarchy-ID:subsystem-list:cgroup-path + parts := strings.SplitN(text, ":", 3) + if len(parts) < 3 { + return nil, fmt.Errorf("invalid cgroup entry: must contain at least two colons: %v", text) + } + + for _, subs := range strings.Split(parts[1], ",") { + cgroups[subs] = parts[2] + } + } + if err := s.Err(); err != nil { + return nil, err + } + + return cgroups, nil +} + +func getControllerPath(subsystem string, cgroups map[string]string) (string, error) { + + if p, ok := cgroups[subsystem]; ok { + return p, nil + } + + if p, ok := cgroups[CgroupNamePrefix+subsystem]; ok { + return p, nil + } + + return "", NewNotFoundError(subsystem) +} + +func PathExists(path string) bool { + if _, err := os.Stat(path); err != nil { + return false + } + return true +} + +func EnterPid(cgroupPaths map[string]string, pid int) error { + for _, path := range cgroupPaths { + if PathExists(path) { + if err := WriteCgroupProc(path, pid); err != nil { + return err + } + } + } + return nil +} + +// RemovePaths iterates over the provided paths removing them. +// We trying to remove all paths five times with increasing delay between tries. +// If after all there are not removed cgroups - appropriate error will be +// returned. +func RemovePaths(paths map[string]string) (err error) { + delay := 10 * time.Millisecond + for i := 0; i < 5; i++ { + if i != 0 { + time.Sleep(delay) + delay *= 2 + } + for s, p := range paths { + os.RemoveAll(p) + // TODO: here probably should be logging + _, err := os.Stat(p) + // We need this strange way of checking cgroups existence because + // RemoveAll almost always returns error, even on already removed + // cgroups + if os.IsNotExist(err) { + delete(paths, s) + } + } + if len(paths) == 0 { + return nil + } + } + return fmt.Errorf("Failed to remove paths: %v", paths) +} + +func GetHugePageSize() ([]string, error) { + files, err := ioutil.ReadDir("/sys/kernel/mm/hugepages") + if err != nil { + return []string{}, err + } + var fileNames []string + for _, st := range files { + fileNames = append(fileNames, st.Name()) + } + return getHugePageSizeFromFilenames(fileNames) +} + +func getHugePageSizeFromFilenames(fileNames []string) ([]string, error) { + var pageSizes []string + for _, fileName := range fileNames { + nameArray := strings.Split(fileName, "-") + pageSize, err := units.RAMInBytes(nameArray[1]) + if err != nil { + return []string{}, err + } + sizeString := units.CustomSize("%g%s", float64(pageSize), 1024.0, HugePageSizeUnitList) + pageSizes = append(pageSizes, sizeString) + } + + return pageSizes, nil +} + +// GetPids returns all pids, that were added to cgroup at path. +func GetPids(path string) ([]int, error) { + return readProcsFile(path) +} + +// GetAllPids returns all pids, that were added to cgroup at path and to all its +// subcgroups. +func GetAllPids(path string) ([]int, error) { + var pids []int + // collect pids from all sub-cgroups + err := filepath.Walk(path, func(p string, info os.FileInfo, iErr error) error { + dir, file := filepath.Split(p) + if file != CgroupProcesses { + return nil + } + if iErr != nil { + return iErr + } + cPids, err := readProcsFile(dir) + if err != nil { + return err + } + pids = append(pids, cPids...) + return nil + }) + return pids, err +} + +// WriteCgroupProc writes the specified pid into the cgroup's cgroup.procs file +func WriteCgroupProc(dir string, pid int) error { + // Normally dir should not be empty, one case is that cgroup subsystem + // is not mounted, we will get empty dir, and we want it fail here. + if dir == "" { + return fmt.Errorf("no such directory for %s", CgroupProcesses) + } + + // Dont attach any pid to the cgroup if -1 is specified as a pid + if pid == -1 { + return nil + } + + cgroupProcessesFile, err := os.OpenFile(filepath.Join(dir, CgroupProcesses), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0700) + if err != nil { + return fmt.Errorf("failed to write %v to %v: %v", pid, CgroupProcesses, err) + } + defer cgroupProcessesFile.Close() + + for i := 0; i < 5; i++ { + _, err = cgroupProcessesFile.WriteString(strconv.Itoa(pid)) + if err == nil { + return nil + } + + // EINVAL might mean that the task being added to cgroup.procs is in state + // TASK_NEW. We should attempt to do so again. + if isEINVAL(err) { + time.Sleep(30 * time.Millisecond) + continue + } + + return fmt.Errorf("failed to write %v to %v: %v", pid, CgroupProcesses, err) + } + return err +} + +func isEINVAL(err error) bool { + switch err := err.(type) { + case *os.PathError: + return err.Err == unix.EINVAL + default: + return false + } +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/config.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/config.go index 3cae4fd8d9..7728522fef 100644 --- a/vendor/github.com/opencontainers/runc/libcontainer/configs/config.go +++ b/vendor/github.com/opencontainers/runc/libcontainer/configs/config.go @@ -141,9 +141,10 @@ type Config struct { // OomScoreAdj specifies the adjustment to be made by the kernel when calculating oom scores // for a process. Valid values are between the range [-1000, '1000'], where processes with - // higher scores are preferred for being killed. + // higher scores are preferred for being killed. If it is unset then we don't touch the current + // value. // More information about kernel oom score calculation here: https://lwn.net/Articles/317814/ - OomScoreAdj int `json:"oom_score_adj"` + OomScoreAdj *int `json:"oom_score_adj,omitempty"` // UidMappings is an array of User ID mappings for User Namespaces UidMappings []IDMap `json:"uid_mappings"` @@ -185,12 +186,19 @@ type Config struct { // callers keyring in this case. NoNewKeyring bool `json:"no_new_keyring"` - // Rootless specifies whether the container is a rootless container. - Rootless bool `json:"rootless"` - - // IntelRdt specifies settings for Intel RDT/CAT group that the container is placed into - // to limit the resources (e.g., L3 cache) the container has available + // IntelRdt specifies settings for Intel RDT group that the container is placed into + // to limit the resources (e.g., L3 cache, memory bandwidth) the container has available IntelRdt *IntelRdt `json:"intel_rdt,omitempty"` + + // RootlessEUID is set when the runc was launched with non-zero EUID. + // Note that RootlessEUID is set to false when launched with EUID=0 in userns. + // When RootlessEUID is set, runc creates a new userns for the container. + // (config.json needs to contain userns settings) + RootlessEUID bool `json:"rootless_euid,omitempty"` + + // RootlessCgroups is set when unlikely to have the full access to cgroups. + // When RootlessCgroups is set, cgroups errors are ignored. + RootlessCgroups bool `json:"rootless_cgroups,omitempty"` } type Hooks struct { @@ -264,26 +272,23 @@ func (hooks Hooks) MarshalJSON() ([]byte, error) { }) } -// HookState is the payload provided to a hook on execution. -type HookState specs.State - type Hook interface { // Run executes the hook with the provided state. - Run(HookState) error + Run(*specs.State) error } // NewFunctionHook will call the provided function when the hook is run. -func NewFunctionHook(f func(HookState) error) FuncHook { +func NewFunctionHook(f func(*specs.State) error) FuncHook { return FuncHook{ run: f, } } type FuncHook struct { - run func(HookState) error + run func(*specs.State) error } -func (f FuncHook) Run(s HookState) error { +func (f FuncHook) Run(s *specs.State) error { return f.run(s) } @@ -306,7 +311,7 @@ type CommandHook struct { Command } -func (c Command) Run(s HookState) error { +func (c Command) Run(s *specs.State) error { b, err := json.Marshal(s) if err != nil { return err diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/intelrdt.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/intelrdt.go index 36bd5f96a1..57e9f037d9 100644 --- a/vendor/github.com/opencontainers/runc/libcontainer/configs/intelrdt.go +++ b/vendor/github.com/opencontainers/runc/libcontainer/configs/intelrdt.go @@ -4,4 +4,10 @@ type IntelRdt struct { // The schema for L3 cache id and capacity bitmask (CBM) // Format: "L3:=;=;..." L3CacheSchema string `json:"l3_cache_schema,omitempty"` + + // The schema of memory bandwidth per L3 cache id + // Format: "MB:=bandwidth0;=bandwidth1;..." + // The unit of memory bandwidth is specified in "percentages" by + // default, and in "MBps" if MBA Software Controller is enabled. + MemBwSchema string `json:"memBwSchema,omitempty"` } diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_linux.go index 5fc171a57b..1bbaef9bd9 100644 --- a/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_linux.go +++ b/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_linux.go @@ -7,12 +7,13 @@ import ( ) const ( - NEWNET NamespaceType = "NEWNET" - NEWPID NamespaceType = "NEWPID" - NEWNS NamespaceType = "NEWNS" - NEWUTS NamespaceType = "NEWUTS" - NEWIPC NamespaceType = "NEWIPC" - NEWUSER NamespaceType = "NEWUSER" + NEWNET NamespaceType = "NEWNET" + NEWPID NamespaceType = "NEWPID" + NEWNS NamespaceType = "NEWNS" + NEWUTS NamespaceType = "NEWUTS" + NEWIPC NamespaceType = "NEWIPC" + NEWUSER NamespaceType = "NEWUSER" + NEWCGROUP NamespaceType = "NEWCGROUP" ) var ( @@ -35,6 +36,8 @@ func NsName(ns NamespaceType) string { return "user" case NEWUTS: return "uts" + case NEWCGROUP: + return "cgroup" } return "" } @@ -68,6 +71,7 @@ func NamespaceTypes() []NamespaceType { NEWNET, NEWPID, NEWNS, + NEWCGROUP, } } diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_syscall.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_syscall.go index 4ce6813d23..2dc7adfc96 100644 --- a/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_syscall.go +++ b/vendor/github.com/opencontainers/runc/libcontainer/configs/namespaces_syscall.go @@ -9,12 +9,13 @@ func (n *Namespace) Syscall() int { } var namespaceInfo = map[NamespaceType]int{ - NEWNET: unix.CLONE_NEWNET, - NEWNS: unix.CLONE_NEWNS, - NEWUSER: unix.CLONE_NEWUSER, - NEWIPC: unix.CLONE_NEWIPC, - NEWUTS: unix.CLONE_NEWUTS, - NEWPID: unix.CLONE_NEWPID, + NEWNET: unix.CLONE_NEWNET, + NEWNS: unix.CLONE_NEWNS, + NEWUSER: unix.CLONE_NEWUSER, + NEWIPC: unix.CLONE_NEWIPC, + NEWUTS: unix.CLONE_NEWUTS, + NEWPID: unix.CLONE_NEWPID, + NEWCGROUP: unix.CLONE_NEWCGROUP, } // CloneFlags parses the container's Namespaces options to set the correct diff --git a/vendor/github.com/opencontainers/runc/libcontainer/devices/devices.go b/vendor/github.com/opencontainers/runc/libcontainer/devices/devices.go index 3619258905..5e2ab0581e 100644 --- a/vendor/github.com/opencontainers/runc/libcontainer/devices/devices.go +++ b/vendor/github.com/opencontainers/runc/libcontainer/devices/devices.go @@ -30,8 +30,9 @@ func DeviceFromPath(path, permissions string) (*configs.Device, error) { } var ( - devNumber = stat.Rdev + devNumber = uint64(stat.Rdev) major = unix.Major(devNumber) + minor = unix.Minor(devNumber) ) if major == 0 { return nil, ErrNotADevice @@ -51,7 +52,7 @@ func DeviceFromPath(path, permissions string) (*configs.Device, error) { Type: devType, Path: path, Major: int64(major), - Minor: int64(unix.Minor(devNumber)), + Minor: int64(minor), Permissions: permissions, FileMode: os.FileMode(mode), Uid: stat.Uid, diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go b/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go index 5f124cd8bb..a4ae8901ac 100644 --- a/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go +++ b/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go @@ -3,13 +3,12 @@ package system import ( - "bufio" - "fmt" "os" "os/exec" "syscall" // only for exec "unsafe" + "github.com/opencontainers/runc/libcontainer/user" "golang.org/x/sys/unix" ) @@ -102,34 +101,43 @@ func Setctty() error { } // RunningInUserNS detects whether we are currently running in a user namespace. -// Copied from github.com/lxc/lxd/shared/util.go +// Originally copied from github.com/lxc/lxd/shared/util.go func RunningInUserNS() bool { - file, err := os.Open("/proc/self/uid_map") + uidmap, err := user.CurrentProcessUIDMap() if err != nil { // This kernel-provided file only exists if user namespaces are supported return false } - defer file.Close() - - buf := bufio.NewReader(file) - l, _, err := buf.ReadLine() - if err != nil { - return false - } + return UIDMapInUserNS(uidmap) +} - line := string(l) - var a, b, c int64 - fmt.Sscanf(line, "%d %d %d", &a, &b, &c) +func UIDMapInUserNS(uidmap []user.IDMap) bool { /* * We assume we are in the initial user namespace if we have a full * range - 4294967295 uids starting at uid 0. */ - if a == 0 && b == 0 && c == 4294967295 { + if len(uidmap) == 1 && uidmap[0].ID == 0 && uidmap[0].ParentID == 0 && uidmap[0].Count == 4294967295 { return false } return true } +// GetParentNSeuid returns the euid within the parent user namespace +func GetParentNSeuid() int64 { + euid := int64(os.Geteuid()) + uidmap, err := user.CurrentProcessUIDMap() + if err != nil { + // This kernel-provided file only exists if user namespaces are supported + return euid + } + for _, um := range uidmap { + if um.ID <= euid && euid <= um.ID+um.Count-1 { + return um.ParentID + euid - um.ID + } + } + return euid +} + // SetSubreaper sets the value i as the subreaper setting for the calling process func SetSubreaper(i int) error { return unix.Prctl(PR_SET_CHILD_SUBREAPER, uintptr(i), 0, 0, 0) diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/system/unsupported.go index e7cfd62b29..b94be74a66 100644 --- a/vendor/github.com/opencontainers/runc/libcontainer/system/unsupported.go +++ b/vendor/github.com/opencontainers/runc/libcontainer/system/unsupported.go @@ -2,8 +2,26 @@ package system +import ( + "os" + + "github.com/opencontainers/runc/libcontainer/user" +) + // RunningInUserNS is a stub for non-Linux systems // Always returns false func RunningInUserNS() bool { return false } + +// UIDMapInUserNS is a stub for non-Linux systems +// Always returns false +func UIDMapInUserNS(uidmap []user.IDMap) bool { + return false +} + +// GetParentNSeuid returns the euid within the parent user namespace +// Always returns os.Geteuid on non-linux +func GetParentNSeuid() int { + return os.Geteuid() +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup.go b/vendor/github.com/opencontainers/runc/libcontainer/user/lookup.go index 95e9eebc0b..6fd8dd0d44 100644 --- a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup.go +++ b/vendor/github.com/opencontainers/runc/libcontainer/user/lookup.go @@ -12,84 +12,30 @@ var ( ErrNoGroupEntries = errors.New("no matching entries in group file") ) -func lookupUser(filter func(u User) bool) (User, error) { - // Get operating system-specific passwd reader-closer. - passwd, err := GetPasswd() - if err != nil { - return User{}, err - } - defer passwd.Close() - - // Get the users. - users, err := ParsePasswdFilter(passwd, filter) - if err != nil { - return User{}, err - } - - // No user entries found. - if len(users) == 0 { - return User{}, ErrNoPasswdEntries - } - - // Assume the first entry is the "correct" one. - return users[0], nil -} - // LookupUser looks up a user by their username in /etc/passwd. If the user // cannot be found (or there is no /etc/passwd file on the filesystem), then // LookupUser returns an error. func LookupUser(username string) (User, error) { - return lookupUser(func(u User) bool { - return u.Name == username - }) + return lookupUser(username) } // LookupUid looks up a user by their user id in /etc/passwd. If the user cannot // be found (or there is no /etc/passwd file on the filesystem), then LookupId // returns an error. func LookupUid(uid int) (User, error) { - return lookupUser(func(u User) bool { - return u.Uid == uid - }) -} - -func lookupGroup(filter func(g Group) bool) (Group, error) { - // Get operating system-specific group reader-closer. - group, err := GetGroup() - if err != nil { - return Group{}, err - } - defer group.Close() - - // Get the users. - groups, err := ParseGroupFilter(group, filter) - if err != nil { - return Group{}, err - } - - // No user entries found. - if len(groups) == 0 { - return Group{}, ErrNoGroupEntries - } - - // Assume the first entry is the "correct" one. - return groups[0], nil + return lookupUid(uid) } // LookupGroup looks up a group by its name in /etc/group. If the group cannot // be found (or there is no /etc/group file on the filesystem), then LookupGroup // returns an error. func LookupGroup(groupname string) (Group, error) { - return lookupGroup(func(g Group) bool { - return g.Name == groupname - }) + return lookupGroup(groupname) } // LookupGid looks up a group by its group id in /etc/group. If the group cannot // be found (or there is no /etc/group file on the filesystem), then LookupGid // returns an error. func LookupGid(gid int) (Group, error) { - return lookupGroup(func(g Group) bool { - return g.Gid == gid - }) + return lookupGid(gid) } diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go b/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go index c2bb9ec90d..92b5ae8de0 100644 --- a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go +++ b/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unix.go @@ -5,6 +5,7 @@ package user import ( "io" "os" + "strconv" "golang.org/x/sys/unix" ) @@ -15,6 +16,76 @@ const ( unixGroupPath = "/etc/group" ) +func lookupUser(username string) (User, error) { + return lookupUserFunc(func(u User) bool { + return u.Name == username + }) +} + +func lookupUid(uid int) (User, error) { + return lookupUserFunc(func(u User) bool { + return u.Uid == uid + }) +} + +func lookupUserFunc(filter func(u User) bool) (User, error) { + // Get operating system-specific passwd reader-closer. + passwd, err := GetPasswd() + if err != nil { + return User{}, err + } + defer passwd.Close() + + // Get the users. + users, err := ParsePasswdFilter(passwd, filter) + if err != nil { + return User{}, err + } + + // No user entries found. + if len(users) == 0 { + return User{}, ErrNoPasswdEntries + } + + // Assume the first entry is the "correct" one. + return users[0], nil +} + +func lookupGroup(groupname string) (Group, error) { + return lookupGroupFunc(func(g Group) bool { + return g.Name == groupname + }) +} + +func lookupGid(gid int) (Group, error) { + return lookupGroupFunc(func(g Group) bool { + return g.Gid == gid + }) +} + +func lookupGroupFunc(filter func(g Group) bool) (Group, error) { + // Get operating system-specific group reader-closer. + group, err := GetGroup() + if err != nil { + return Group{}, err + } + defer group.Close() + + // Get the users. + groups, err := ParseGroupFilter(group, filter) + if err != nil { + return Group{}, err + } + + // No user entries found. + if len(groups) == 0 { + return Group{}, ErrNoGroupEntries + } + + // Assume the first entry is the "correct" one. + return groups[0], nil +} + func GetPasswdPath() (string, error) { return unixPasswdPath, nil } @@ -44,3 +115,30 @@ func CurrentUser() (User, error) { func CurrentGroup() (Group, error) { return LookupGid(unix.Getgid()) } + +func currentUserSubIDs(fileName string) ([]SubID, error) { + u, err := CurrentUser() + if err != nil { + return nil, err + } + filter := func(entry SubID) bool { + return entry.Name == u.Name || entry.Name == strconv.Itoa(u.Uid) + } + return ParseSubIDFileFilter(fileName, filter) +} + +func CurrentUserSubUIDs() ([]SubID, error) { + return currentUserSubIDs("/etc/subuid") +} + +func CurrentUserSubGIDs() ([]SubID, error) { + return currentUserSubIDs("/etc/subgid") +} + +func CurrentProcessUIDMap() ([]IDMap, error) { + return ParseIDMapFile("/proc/self/uid_map") +} + +func CurrentProcessGIDMap() ([]IDMap, error) { + return ParseIDMapFile("/proc/self/gid_map") +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_windows.go b/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_windows.go new file mode 100644 index 0000000000..65cd40e928 --- /dev/null +++ b/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_windows.go @@ -0,0 +1,40 @@ +// +build windows + +package user + +import ( + "fmt" + "os/user" +) + +func lookupUser(username string) (User, error) { + u, err := user.Lookup(username) + if err != nil { + return User{}, err + } + return userFromOS(u) +} + +func lookupUid(uid int) (User, error) { + u, err := user.LookupId(fmt.Sprintf("%d", uid)) + if err != nil { + return User{}, err + } + return userFromOS(u) +} + +func lookupGroup(groupname string) (Group, error) { + g, err := user.LookupGroup(groupname) + if err != nil { + return Group{}, err + } + return groupFromOS(g) +} + +func lookupGid(gid int) (Group, error) { + g, err := user.LookupGroupId(fmt.Sprintf("%d", gid)) + if err != nil { + return Group{}, err + } + return groupFromOS(g) +} diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/user.go b/vendor/github.com/opencontainers/runc/libcontainer/user/user.go index 8962cab331..7b912bbf8b 100644 --- a/vendor/github.com/opencontainers/runc/libcontainer/user/user.go +++ b/vendor/github.com/opencontainers/runc/libcontainer/user/user.go @@ -5,6 +5,7 @@ import ( "fmt" "io" "os" + "os/user" "strconv" "strings" ) @@ -28,6 +29,28 @@ type User struct { Shell string } +// userFromOS converts an os/user.(*User) to local User +// +// (This does not include Pass, Shell or Gecos) +func userFromOS(u *user.User) (User, error) { + newUser := User{ + Name: u.Username, + Home: u.HomeDir, + } + id, err := strconv.Atoi(u.Uid) + if err != nil { + return newUser, err + } + newUser.Uid = id + + id, err = strconv.Atoi(u.Gid) + if err != nil { + return newUser, err + } + newUser.Gid = id + return newUser, nil +} + type Group struct { Name string Pass string @@ -35,12 +58,46 @@ type Group struct { List []string } +// groupFromOS converts an os/user.(*Group) to local Group +// +// (This does not include Pass, Shell or Gecos) +func groupFromOS(g *user.Group) (Group, error) { + newGroup := Group{ + Name: g.Name, + } + + id, err := strconv.Atoi(g.Gid) + if err != nil { + return newGroup, err + } + newGroup.Gid = id + + return newGroup, nil +} + +// SubID represents an entry in /etc/sub{u,g}id +type SubID struct { + Name string + SubID int64 + Count int64 +} + +// IDMap represents an entry in /proc/PID/{u,g}id_map +type IDMap struct { + ID int64 + ParentID int64 + Count int64 +} + func parseLine(line string, v ...interface{}) { - if line == "" { + parseParts(strings.Split(line, ":"), v...) +} + +func parseParts(parts []string, v ...interface{}) { + if len(parts) == 0 { return } - parts := strings.Split(line, ":") for i, p := range parts { // Ignore cases where we don't have enough fields to populate the arguments. // Some configuration files like to misbehave. @@ -56,6 +113,8 @@ func parseLine(line string, v ...interface{}) { case *int: // "numbers", with conversion errors ignored because of some misbehaving configuration files. *e, _ = strconv.Atoi(p) + case *int64: + *e, _ = strconv.ParseInt(p, 10, 64) case *[]string: // Comma-separated lists. if p != "" { @@ -65,7 +124,7 @@ func parseLine(line string, v ...interface{}) { } default: // Someone goof'd when writing code using this function. Scream so they can hear us. - panic(fmt.Sprintf("parseLine only accepts {*string, *int, *[]string} as arguments! %#v is not a pointer!", e)) + panic(fmt.Sprintf("parseLine only accepts {*string, *int, *int64, *[]string} as arguments! %#v is not a pointer!", e)) } } } @@ -439,3 +498,111 @@ func GetAdditionalGroupsPath(additionalGroups []string, groupPath string) ([]int } return GetAdditionalGroups(additionalGroups, group) } + +func ParseSubIDFile(path string) ([]SubID, error) { + subid, err := os.Open(path) + if err != nil { + return nil, err + } + defer subid.Close() + return ParseSubID(subid) +} + +func ParseSubID(subid io.Reader) ([]SubID, error) { + return ParseSubIDFilter(subid, nil) +} + +func ParseSubIDFileFilter(path string, filter func(SubID) bool) ([]SubID, error) { + subid, err := os.Open(path) + if err != nil { + return nil, err + } + defer subid.Close() + return ParseSubIDFilter(subid, filter) +} + +func ParseSubIDFilter(r io.Reader, filter func(SubID) bool) ([]SubID, error) { + if r == nil { + return nil, fmt.Errorf("nil source for subid-formatted data") + } + + var ( + s = bufio.NewScanner(r) + out = []SubID{} + ) + + for s.Scan() { + if err := s.Err(); err != nil { + return nil, err + } + + line := strings.TrimSpace(s.Text()) + if line == "" { + continue + } + + // see: man 5 subuid + p := SubID{} + parseLine(line, &p.Name, &p.SubID, &p.Count) + + if filter == nil || filter(p) { + out = append(out, p) + } + } + + return out, nil +} + +func ParseIDMapFile(path string) ([]IDMap, error) { + r, err := os.Open(path) + if err != nil { + return nil, err + } + defer r.Close() + return ParseIDMap(r) +} + +func ParseIDMap(r io.Reader) ([]IDMap, error) { + return ParseIDMapFilter(r, nil) +} + +func ParseIDMapFileFilter(path string, filter func(IDMap) bool) ([]IDMap, error) { + r, err := os.Open(path) + if err != nil { + return nil, err + } + defer r.Close() + return ParseIDMapFilter(r, filter) +} + +func ParseIDMapFilter(r io.Reader, filter func(IDMap) bool) ([]IDMap, error) { + if r == nil { + return nil, fmt.Errorf("nil source for idmap-formatted data") + } + + var ( + s = bufio.NewScanner(r) + out = []IDMap{} + ) + + for s.Scan() { + if err := s.Err(); err != nil { + return nil, err + } + + line := strings.TrimSpace(s.Text()) + if line == "" { + continue + } + + // see: man 7 user_namespaces + p := IDMap{} + parseParts(strings.Fields(line), &p.ID, &p.ParentID, &p.Count) + + if filter == nil || filter(p) { + out = append(out, p) + } + } + + return out, nil +} diff --git a/vendor/github.com/pkg/errors/.travis.yml b/vendor/github.com/pkg/errors/.travis.yml index 588ceca183..d4b92663ba 100644 --- a/vendor/github.com/pkg/errors/.travis.yml +++ b/vendor/github.com/pkg/errors/.travis.yml @@ -1,10 +1,14 @@ language: go go_import_path: github.com/pkg/errors go: - - 1.4.3 - - 1.5.4 - - 1.6.2 - - 1.7.1 + - 1.4.x + - 1.5.x + - 1.6.x + - 1.7.x + - 1.8.x + - 1.9.x + - 1.10.x + - 1.11.x - tip script: diff --git a/vendor/github.com/pkg/errors/README.md b/vendor/github.com/pkg/errors/README.md index 273db3c98a..6483ba2afb 100644 --- a/vendor/github.com/pkg/errors/README.md +++ b/vendor/github.com/pkg/errors/README.md @@ -1,4 +1,4 @@ -# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) +# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) [![Sourcegraph](https://sourcegraph.com/github.com/pkg/errors/-/badge.svg)](https://sourcegraph.com/github.com/pkg/errors?badge) Package errors provides simple error handling primitives. @@ -47,6 +47,6 @@ We welcome pull requests, bug fixes and issue reports. With that said, the bar f Before proposing a change, please discuss your change by raising an issue. -## Licence +## License BSD-2-Clause diff --git a/vendor/github.com/pkg/errors/errors.go b/vendor/github.com/pkg/errors/errors.go index 842ee80456..7421f326ff 100644 --- a/vendor/github.com/pkg/errors/errors.go +++ b/vendor/github.com/pkg/errors/errors.go @@ -6,7 +6,7 @@ // return err // } // -// which applied recursively up the call stack results in error reports +// which when applied recursively up the call stack results in error reports // without context or debugging information. The errors package allows // programmers to add context to the failure path in their code in a way // that does not destroy the original value of the error. @@ -15,16 +15,17 @@ // // The errors.Wrap function returns a new error that adds context to the // original error by recording a stack trace at the point Wrap is called, -// and the supplied message. For example +// together with the supplied message. For example // // _, err := ioutil.ReadAll(r) // if err != nil { // return errors.Wrap(err, "read failed") // } // -// If additional control is required the errors.WithStack and errors.WithMessage -// functions destructure errors.Wrap into its component operations of annotating -// an error with a stack trace and an a message, respectively. +// If additional control is required, the errors.WithStack and +// errors.WithMessage functions destructure errors.Wrap into its component +// operations: annotating an error with a stack trace and with a message, +// respectively. // // Retrieving the cause of an error // @@ -38,7 +39,7 @@ // } // // can be inspected by errors.Cause. errors.Cause will recursively retrieve -// the topmost error which does not implement causer, which is assumed to be +// the topmost error that does not implement causer, which is assumed to be // the original cause. For example: // // switch err := errors.Cause(err).(type) { @@ -48,16 +49,16 @@ // // unknown error // } // -// causer interface is not exported by this package, but is considered a part -// of stable public API. +// Although the causer interface is not exported by this package, it is +// considered a part of its stable public interface. // // Formatted printing of errors // // All error values returned from this package implement fmt.Formatter and can -// be formatted by the fmt package. The following verbs are supported +// be formatted by the fmt package. The following verbs are supported: // // %s print the error. If the error has a Cause it will be -// printed recursively +// printed recursively. // %v see %s // %+v extended format. Each Frame of the error's StackTrace will // be printed in detail. @@ -65,13 +66,13 @@ // Retrieving the stack trace of an error or wrapper // // New, Errorf, Wrap, and Wrapf record a stack trace at the point they are -// invoked. This information can be retrieved with the following interface. +// invoked. This information can be retrieved with the following interface: // // type stackTracer interface { // StackTrace() errors.StackTrace // } // -// Where errors.StackTrace is defined as +// The returned errors.StackTrace type is defined as // // type StackTrace []Frame // @@ -85,8 +86,8 @@ // } // } // -// stackTracer interface is not exported by this package, but is considered a part -// of stable public API. +// Although the stackTracer interface is not exported by this package, it is +// considered a part of its stable public interface. // // See the documentation for Frame.Format for more details. package errors @@ -192,7 +193,7 @@ func Wrap(err error, message string) error { } // Wrapf returns an error annotating err with a stack trace -// at the point Wrapf is call, and the format specifier. +// at the point Wrapf is called, and the format specifier. // If err is nil, Wrapf returns nil. func Wrapf(err error, format string, args ...interface{}) error { if err == nil { @@ -220,6 +221,18 @@ func WithMessage(err error, message string) error { } } +// WithMessagef annotates err with the format specifier. +// If err is nil, WithMessagef returns nil. +func WithMessagef(err error, format string, args ...interface{}) error { + if err == nil { + return nil + } + return &withMessage{ + cause: err, + msg: fmt.Sprintf(format, args...), + } +} + type withMessage struct { cause error msg string diff --git a/vendor/github.com/pkg/errors/stack.go b/vendor/github.com/pkg/errors/stack.go index 6b1f2891a5..2874a048cf 100644 --- a/vendor/github.com/pkg/errors/stack.go +++ b/vendor/github.com/pkg/errors/stack.go @@ -46,7 +46,8 @@ func (f Frame) line() int { // // Format accepts flags that alter the printing of some verbs, as follows: // -// %+s path of source file relative to the compile time GOPATH +// %+s function name and path of source file relative to the compile time +// GOPATH separated by \n\t (\n\t) // %+v equivalent to %+s:%d func (f Frame) Format(s fmt.State, verb rune) { switch verb { @@ -79,6 +80,14 @@ func (f Frame) Format(s fmt.State, verb rune) { // StackTrace is stack of Frames from innermost (newest) to outermost (oldest). type StackTrace []Frame +// Format formats the stack of Frames according to the fmt.Formatter interface. +// +// %s lists source files for each Frame in the stack +// %v lists the source file and line number for each Frame in the stack +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+v Prints filename, function, and line number for each Frame in the stack. func (st StackTrace) Format(s fmt.State, verb rune) { switch verb { case 'v': @@ -136,43 +145,3 @@ func funcname(name string) string { i = strings.Index(name, ".") return name[i+1:] } - -func trimGOPATH(name, file string) string { - // Here we want to get the source file path relative to the compile time - // GOPATH. As of Go 1.6.x there is no direct way to know the compiled - // GOPATH at runtime, but we can infer the number of path segments in the - // GOPATH. We note that fn.Name() returns the function name qualified by - // the import path, which does not include the GOPATH. Thus we can trim - // segments from the beginning of the file path until the number of path - // separators remaining is one more than the number of path separators in - // the function name. For example, given: - // - // GOPATH /home/user - // file /home/user/src/pkg/sub/file.go - // fn.Name() pkg/sub.Type.Method - // - // We want to produce: - // - // pkg/sub/file.go - // - // From this we can easily see that fn.Name() has one less path separator - // than our desired output. We count separators from the end of the file - // path until it finds two more than in the function name and then move - // one character forward to preserve the initial path segment without a - // leading separator. - const sep = "/" - goal := strings.Count(name, sep) + 2 - i := len(file) - for n := 0; n < goal; n++ { - i = strings.LastIndex(file[:i], sep) - if i == -1 { - // not enough separators found, set i so that the slice expression - // below leaves file unmodified - i = -len(sep) - break - } - } - // get back to 0 or trim the leading separator - file = file[i+len(sep):] - return file -} diff --git a/vendor/github.com/prometheus/procfs/.golangci.yml b/vendor/github.com/prometheus/procfs/.golangci.yml new file mode 100644 index 0000000000..438ca92eca --- /dev/null +++ b/vendor/github.com/prometheus/procfs/.golangci.yml @@ -0,0 +1,6 @@ +# Run only staticcheck for now. Additional linters will be enabled one-by-one. +linters: + enable: + - staticcheck + - govet + disable-all: true diff --git a/vendor/github.com/prometheus/procfs/.travis.yml b/vendor/github.com/prometheus/procfs/.travis.yml deleted file mode 100644 index 66a0b7cf79..0000000000 --- a/vendor/github.com/prometheus/procfs/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -sudo: false - -language: go - -go: -- 1.9.x -- 1.10.x - -go_import_path: github.com/prometheus/procfs - -script: -- make style check_license vet test staticcheck diff --git a/vendor/github.com/prometheus/procfs/MAINTAINERS.md b/vendor/github.com/prometheus/procfs/MAINTAINERS.md index 35993c41c2..56ba67d3e3 100644 --- a/vendor/github.com/prometheus/procfs/MAINTAINERS.md +++ b/vendor/github.com/prometheus/procfs/MAINTAINERS.md @@ -1 +1,2 @@ -* Tobias Schmidt +* Johannes 'fish' Ziemke @discordianfish +* Paul Gier @pgier diff --git a/vendor/github.com/prometheus/procfs/Makefile b/vendor/github.com/prometheus/procfs/Makefile index 4d10983946..616a0d25eb 100644 --- a/vendor/github.com/prometheus/procfs/Makefile +++ b/vendor/github.com/prometheus/procfs/Makefile @@ -11,67 +11,19 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Ensure GOBIN is not set during build so that promu is installed to the correct path -unexport GOBIN - -GO ?= go -GOFMT ?= $(GO)fmt -FIRST_GOPATH := $(firstword $(subst :, ,$(shell $(GO) env GOPATH))) -STATICCHECK := $(FIRST_GOPATH)/bin/staticcheck -pkgs = $(shell $(GO) list ./... | grep -v /vendor/) - -PREFIX ?= $(shell pwd) -BIN_DIR ?= $(shell pwd) - -ifdef DEBUG - bindata_flags = -debug -endif - -STATICCHECK_IGNORE = - -all: format staticcheck build test - -style: - @echo ">> checking code style" - @! $(GOFMT) -d $(shell find . -path ./vendor -prune -o -name '*.go' -print) | grep '^' - -check_license: - @echo ">> checking license header" - @./scripts/check_license.sh - -test: fixtures/.unpacked sysfs/fixtures/.unpacked - @echo ">> running all tests" - @$(GO) test -race $(shell $(GO) list ./... | grep -v /vendor/ | grep -v examples) - -format: - @echo ">> formatting code" - @$(GO) fmt $(pkgs) - -vet: - @echo ">> vetting code" - @$(GO) vet $(pkgs) - -staticcheck: $(STATICCHECK) - @echo ">> running staticcheck" - @$(STATICCHECK) -ignore "$(STATICCHECK_IGNORE)" $(pkgs) +include Makefile.common %/.unpacked: %.ttar + @echo ">> extracting fixtures" ./ttar -C $(dir $*) -x -f $*.ttar touch $@ -update_fixtures: fixtures.ttar sysfs/fixtures.ttar - -%fixtures.ttar: %/fixtures - rm -v $(dir $*)fixtures/.unpacked - ./ttar -C $(dir $*) -c -f $*fixtures.ttar fixtures/ - -$(FIRST_GOPATH)/bin/staticcheck: - @GOOS= GOARCH= $(GO) get -u honnef.co/go/tools/cmd/staticcheck +update_fixtures: + rm -vf fixtures/.unpacked + ./ttar -c -f fixtures.ttar fixtures/ -.PHONY: all style check_license format test vet staticcheck +.PHONY: build +build: -# Declaring the binaries at their default locations as PHONY targets is a hack -# to ensure the latest version is downloaded on every make execution. -# If this is not desired, copy/symlink these binaries to a different path and -# set the respective environment variables. -.PHONY: $(GOPATH)/bin/staticcheck +.PHONY: test +test: fixtures/.unpacked common-test diff --git a/vendor/github.com/prometheus/procfs/Makefile.common b/vendor/github.com/prometheus/procfs/Makefile.common new file mode 100644 index 0000000000..d7aea1b86f --- /dev/null +++ b/vendor/github.com/prometheus/procfs/Makefile.common @@ -0,0 +1,275 @@ +# Copyright 2018 The Prometheus Authors +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# A common Makefile that includes rules to be reused in different prometheus projects. +# !!! Open PRs only against the prometheus/prometheus/Makefile.common repository! + +# Example usage : +# Create the main Makefile in the root project directory. +# include Makefile.common +# customTarget: +# @echo ">> Running customTarget" +# + +# Ensure GOBIN is not set during build so that promu is installed to the correct path +unexport GOBIN + +GO ?= go +GOFMT ?= $(GO)fmt +FIRST_GOPATH := $(firstword $(subst :, ,$(shell $(GO) env GOPATH))) +GOOPTS ?= +GOHOSTOS ?= $(shell $(GO) env GOHOSTOS) +GOHOSTARCH ?= $(shell $(GO) env GOHOSTARCH) + +GO_VERSION ?= $(shell $(GO) version) +GO_VERSION_NUMBER ?= $(word 3, $(GO_VERSION)) +PRE_GO_111 ?= $(shell echo $(GO_VERSION_NUMBER) | grep -E 'go1\.(10|[0-9])\.') + +GOVENDOR := +GO111MODULE := +ifeq (, $(PRE_GO_111)) + ifneq (,$(wildcard go.mod)) + # Enforce Go modules support just in case the directory is inside GOPATH (and for Travis CI). + GO111MODULE := on + + ifneq (,$(wildcard vendor)) + # Always use the local vendor/ directory to satisfy the dependencies. + GOOPTS := $(GOOPTS) -mod=vendor + endif + endif +else + ifneq (,$(wildcard go.mod)) + ifneq (,$(wildcard vendor)) +$(warning This repository requires Go >= 1.11 because of Go modules) +$(warning Some recipes may not work as expected as the current Go runtime is '$(GO_VERSION_NUMBER)') + endif + else + # This repository isn't using Go modules (yet). + GOVENDOR := $(FIRST_GOPATH)/bin/govendor + endif +endif +PROMU := $(FIRST_GOPATH)/bin/promu +pkgs = ./... + +ifeq (arm, $(GOHOSTARCH)) + GOHOSTARM ?= $(shell GOARM= $(GO) env GOARM) + GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH)v$(GOHOSTARM) +else + GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH) +endif + +PROMU_VERSION ?= 0.4.0 +PROMU_URL := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz + +GOLANGCI_LINT := +GOLANGCI_LINT_OPTS ?= +GOLANGCI_LINT_VERSION ?= v1.16.0 +# golangci-lint only supports linux, darwin and windows platforms on i386/amd64. +# windows isn't included here because of the path separator being different. +ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) + ifeq ($(GOHOSTARCH),$(filter $(GOHOSTARCH),amd64 i386)) + GOLANGCI_LINT := $(FIRST_GOPATH)/bin/golangci-lint + endif +endif + +PREFIX ?= $(shell pwd) +BIN_DIR ?= $(shell pwd) +DOCKER_IMAGE_TAG ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD)) +DOCKERFILE_PATH ?= ./ +DOCKER_REPO ?= prom + +DOCKER_ARCHS ?= amd64 + +BUILD_DOCKER_ARCHS = $(addprefix common-docker-,$(DOCKER_ARCHS)) +PUBLISH_DOCKER_ARCHS = $(addprefix common-docker-publish-,$(DOCKER_ARCHS)) +TAG_DOCKER_ARCHS = $(addprefix common-docker-tag-latest-,$(DOCKER_ARCHS)) + +ifeq ($(GOHOSTARCH),amd64) + ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux freebsd darwin windows)) + # Only supported on amd64 + test-flags := -race + endif +endif + +# This rule is used to forward a target like "build" to "common-build". This +# allows a new "build" target to be defined in a Makefile which includes this +# one and override "common-build" without override warnings. +%: common-% ; + +.PHONY: common-all +common-all: precheck style check_license lint unused build test + +.PHONY: common-style +common-style: + @echo ">> checking code style" + @fmtRes=$$($(GOFMT) -d $$(find . -path ./vendor -prune -o -name '*.go' -print)); \ + if [ -n "$${fmtRes}" ]; then \ + echo "gofmt checking failed!"; echo "$${fmtRes}"; echo; \ + echo "Please ensure you are using $$($(GO) version) for formatting code."; \ + exit 1; \ + fi + +.PHONY: common-check_license +common-check_license: + @echo ">> checking license header" + @licRes=$$(for file in $$(find . -type f -iname '*.go' ! -path './vendor/*') ; do \ + awk 'NR<=3' $$file | grep -Eq "(Copyright|generated|GENERATED)" || echo $$file; \ + done); \ + if [ -n "$${licRes}" ]; then \ + echo "license header checking failed:"; echo "$${licRes}"; \ + exit 1; \ + fi + +.PHONY: common-deps +common-deps: + @echo ">> getting dependencies" +ifdef GO111MODULE + GO111MODULE=$(GO111MODULE) $(GO) mod download +else + $(GO) get $(GOOPTS) -t ./... +endif + +.PHONY: common-test-short +common-test-short: + @echo ">> running short tests" + GO111MODULE=$(GO111MODULE) $(GO) test -short $(GOOPTS) $(pkgs) + +.PHONY: common-test +common-test: + @echo ">> running all tests" + GO111MODULE=$(GO111MODULE) $(GO) test $(test-flags) $(GOOPTS) $(pkgs) + +.PHONY: common-format +common-format: + @echo ">> formatting code" + GO111MODULE=$(GO111MODULE) $(GO) fmt $(pkgs) + +.PHONY: common-vet +common-vet: + @echo ">> vetting code" + GO111MODULE=$(GO111MODULE) $(GO) vet $(GOOPTS) $(pkgs) + +.PHONY: common-lint +common-lint: $(GOLANGCI_LINT) +ifdef GOLANGCI_LINT + @echo ">> running golangci-lint" +ifdef GO111MODULE +# 'go list' needs to be executed before staticcheck to prepopulate the modules cache. +# Otherwise staticcheck might fail randomly for some reason not yet explained. + GO111MODULE=$(GO111MODULE) $(GO) list -e -compiled -test=true -export=false -deps=true -find=false -tags= -- ./... > /dev/null + GO111MODULE=$(GO111MODULE) $(GOLANGCI_LINT) run $(GOLANGCI_LINT_OPTS) $(pkgs) +else + $(GOLANGCI_LINT) run $(pkgs) +endif +endif + +# For backward-compatibility. +.PHONY: common-staticcheck +common-staticcheck: lint + +.PHONY: common-unused +common-unused: $(GOVENDOR) +ifdef GOVENDOR + @echo ">> running check for unused packages" + @$(GOVENDOR) list +unused | grep . && exit 1 || echo 'No unused packages' +else +ifdef GO111MODULE + @echo ">> running check for unused/missing packages in go.mod" + GO111MODULE=$(GO111MODULE) $(GO) mod tidy +ifeq (,$(wildcard vendor)) + @git diff --exit-code -- go.sum go.mod +else + @echo ">> running check for unused packages in vendor/" + GO111MODULE=$(GO111MODULE) $(GO) mod vendor + @git diff --exit-code -- go.sum go.mod vendor/ +endif +endif +endif + +.PHONY: common-build +common-build: promu + @echo ">> building binaries" + GO111MODULE=$(GO111MODULE) $(PROMU) build --prefix $(PREFIX) + +.PHONY: common-tarball +common-tarball: promu + @echo ">> building release tarball" + $(PROMU) tarball --prefix $(PREFIX) $(BIN_DIR) + +.PHONY: common-docker $(BUILD_DOCKER_ARCHS) +common-docker: $(BUILD_DOCKER_ARCHS) +$(BUILD_DOCKER_ARCHS): common-docker-%: + docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" \ + --build-arg ARCH="$*" \ + --build-arg OS="linux" \ + $(DOCKERFILE_PATH) + +.PHONY: common-docker-publish $(PUBLISH_DOCKER_ARCHS) +common-docker-publish: $(PUBLISH_DOCKER_ARCHS) +$(PUBLISH_DOCKER_ARCHS): common-docker-publish-%: + docker push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" + +.PHONY: common-docker-tag-latest $(TAG_DOCKER_ARCHS) +common-docker-tag-latest: $(TAG_DOCKER_ARCHS) +$(TAG_DOCKER_ARCHS): common-docker-tag-latest-%: + docker tag "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:latest" + +.PHONY: common-docker-manifest +common-docker-manifest: + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest create -a "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" $(foreach ARCH,$(DOCKER_ARCHS),$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$(ARCH):$(DOCKER_IMAGE_TAG)) + DOCKER_CLI_EXPERIMENTAL=enabled docker manifest push "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)" + +.PHONY: promu +promu: $(PROMU) + +$(PROMU): + $(eval PROMU_TMP := $(shell mktemp -d)) + curl -s -L $(PROMU_URL) | tar -xvzf - -C $(PROMU_TMP) + mkdir -p $(FIRST_GOPATH)/bin + cp $(PROMU_TMP)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM)/promu $(FIRST_GOPATH)/bin/promu + rm -r $(PROMU_TMP) + +.PHONY: proto +proto: + @echo ">> generating code from proto files" + @./scripts/genproto.sh + +ifdef GOLANGCI_LINT +$(GOLANGCI_LINT): + mkdir -p $(FIRST_GOPATH)/bin + curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/$(GOLANGCI_LINT_VERSION)/install.sh \ + | sed -e '/install -d/d' \ + | sh -s -- -b $(FIRST_GOPATH)/bin $(GOLANGCI_LINT_VERSION) +endif + +ifdef GOVENDOR +.PHONY: $(GOVENDOR) +$(GOVENDOR): + GOOS= GOARCH= $(GO) get -u github.com/kardianos/govendor +endif + +.PHONY: precheck +precheck:: + +define PRECHECK_COMMAND_template = +precheck:: $(1)_precheck + +PRECHECK_COMMAND_$(1) ?= $(1) $$(strip $$(PRECHECK_OPTIONS_$(1))) +.PHONY: $(1)_precheck +$(1)_precheck: + @if ! $$(PRECHECK_COMMAND_$(1)) 1>/dev/null 2>&1; then \ + echo "Execution of '$$(PRECHECK_COMMAND_$(1))' command failed. Is $(1) installed?"; \ + exit 1; \ + fi +endef diff --git a/vendor/github.com/prometheus/procfs/README.md b/vendor/github.com/prometheus/procfs/README.md index 2095494719..6f8850feb6 100644 --- a/vendor/github.com/prometheus/procfs/README.md +++ b/vendor/github.com/prometheus/procfs/README.md @@ -1,7 +1,7 @@ # procfs This procfs package provides functions to retrieve system, kernel and process -metrics from the pseudo-filesystem proc. +metrics from the pseudo-filesystems /proc and /sys. *WARNING*: This package is a work in progress. Its API may still break in backwards-incompatible ways without warnings. Use it at your own risk. @@ -9,3 +9,45 @@ backwards-incompatible ways without warnings. Use it at your own risk. [![GoDoc](https://godoc.org/github.com/prometheus/procfs?status.png)](https://godoc.org/github.com/prometheus/procfs) [![Build Status](https://travis-ci.org/prometheus/procfs.svg?branch=master)](https://travis-ci.org/prometheus/procfs) [![Go Report Card](https://goreportcard.com/badge/github.com/prometheus/procfs)](https://goreportcard.com/report/github.com/prometheus/procfs) + +## Usage + +The procfs library is organized by packages based on whether the gathered data is coming from +/proc, /sys, or both. Each package contains an `FS` type which represents the path to either /proc, /sys, or both. For example, current cpu statistics are gathered from +`/proc/stat` and are available via the root procfs package. First, the proc filesystem mount +point is initialized, and then the stat information is read. + +```go +fs, err := procfs.NewFS("/proc") +stats, err := fs.Stat() +``` + +Some sub-packages such as `blockdevice`, require access to both the proc and sys filesystems. + +```go + fs, err := blockdevice.NewFS("/proc", "/sys") + stats, err := fs.ProcDiskstats() +``` + +## Building and Testing + +The procfs library is normally built as part of another application. However, when making +changes to the library, the `make test` command can be used to run the API test suite. + +### Updating Test Fixtures + +The procfs library includes a set of test fixtures which include many example files from +the `/proc` and `/sys` filesystems. These fixtures are included as a [ttar](https://github.com/ideaship/ttar) file +which is extracted automatically during testing. To add/update the test fixtures, first +ensure the `fixtures` directory is up to date by removing the existing directory and then +extracting the ttar file using `make fixtures/.unpacked` or just `make test`. + +```bash +rm -rf fixtures +make test +``` + +Next, make the required changes to the extracted files in the `fixtures` directory. When +the changes are complete, run `make update_fixtures` to create a new `fixtures.ttar` file +based on the updated `fixtures` directory. And finally, verify the changes using +`git diff fixtures.ttar`. diff --git a/vendor/github.com/prometheus/procfs/buddyinfo.go b/vendor/github.com/prometheus/procfs/buddyinfo.go index d3a8268078..63d4229a45 100644 --- a/vendor/github.com/prometheus/procfs/buddyinfo.go +++ b/vendor/github.com/prometheus/procfs/buddyinfo.go @@ -31,19 +31,9 @@ type BuddyInfo struct { Sizes []float64 } -// NewBuddyInfo reads the buddyinfo statistics. -func NewBuddyInfo() ([]BuddyInfo, error) { - fs, err := NewFS(DefaultMountPoint) - if err != nil { - return nil, err - } - - return fs.NewBuddyInfo() -} - // NewBuddyInfo reads the buddyinfo statistics from the specified `proc` filesystem. -func (fs FS) NewBuddyInfo() ([]BuddyInfo, error) { - file, err := os.Open(fs.Path("buddyinfo")) +func (fs FS) BuddyInfo() ([]BuddyInfo, error) { + file, err := os.Open(fs.proc.Path("buddyinfo")) if err != nil { return nil, err } diff --git a/vendor/github.com/prometheus/procfs/fixtures.ttar b/vendor/github.com/prometheus/procfs/fixtures.ttar index 3ee8291e81..6b42e7ba14 100644 --- a/vendor/github.com/prometheus/procfs/fixtures.ttar +++ b/vendor/github.com/prometheus/procfs/fixtures.ttar @@ -1,42 +1,53 @@ # Archive created by ttar -c -f fixtures.ttar fixtures/ Directory: fixtures -Mode: 755 +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/proc +Mode: 775 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/26231 +Directory: fixtures/proc/26231 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/cmdline +Path: fixtures/proc/26231/cmdline Lines: 1 vimNULLBYTEtest.goNULLBYTE+10NULLBYTEEOF Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/comm +Path: fixtures/proc/26231/comm Lines: 1 vim Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/exe +Path: fixtures/proc/26231/cwd +SymlinkTo: /usr/bin +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/26231/environ +Lines: 1 +PATH=/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binNULLBYTEHOSTNAME=cd24e11f73a5NULLBYTETERM=xtermNULLBYTEGOLANG_VERSION=1.12.5NULLBYTEGOPATH=/goNULLBYTEHOME=/rootNULLBYTEEOF +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/26231/exe SymlinkTo: /usr/bin/vim # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/26231/fd +Directory: fixtures/proc/26231/fd Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/fd/0 +Path: fixtures/proc/26231/fd/0 SymlinkTo: ../../symlinktargets/abc # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/fd/1 +Path: fixtures/proc/26231/fd/1 SymlinkTo: ../../symlinktargets/def # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/fd/10 +Path: fixtures/proc/26231/fd/10 SymlinkTo: ../../symlinktargets/xyz # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/fd/2 +Path: fixtures/proc/26231/fd/2 SymlinkTo: ../../symlinktargets/ghi # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/fd/3 +Path: fixtures/proc/26231/fd/3 SymlinkTo: ../../symlinktargets/uvw # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/io +Path: fixtures/proc/26231/io Lines: 7 rchar: 750339 wchar: 818609 @@ -47,7 +58,7 @@ write_bytes: 2048 cancelled_write_bytes: -1024 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/limits +Path: fixtures/proc/26231/limits Lines: 17 Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds @@ -68,14 +79,14 @@ Max realtime priority 0 0 Max realtime timeout unlimited unlimited us Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/mountstats -Lines: 19 +Path: fixtures/proc/26231/mountstats +Lines: 20 device rootfs mounted on / with fstype rootfs device sysfs mounted on /sys with fstype sysfs device proc mounted on /proc with fstype proc device /dev/sda1 mounted on / with fstype ext4 device 192.168.1.1:/srv/test mounted on /mnt/nfs/test with fstype nfs4 statvers=1.1 - opts: rw,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,acregmin=3,acregmax=60,acdirmin=30,acdirmax=60,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.5,local_lock=none + opts: rw,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,acregmin=3,acregmax=60,acdirmin=30,acdirmax=60,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.1,clientaddr=192.168.1.5,local_lock=none age: 13968 caps: caps=0xfff7,wtmult=512,dtsize=32768,bsize=0,namlen=255 nfsv4: bm0=0xfdffafff,bm1=0xf9be3e,bm2=0x0,acl=0x0,pnfs=not configured @@ -88,13 +99,14 @@ device 192.168.1.1:/srv/test mounted on /mnt/nfs/test with fstype nfs4 statvers= NULL: 0 0 0 0 0 0 0 0 READ: 1298 1298 0 207680 1210292152 6 79386 79407 WRITE: 0 0 0 0 0 0 0 0 + ACCESS: 2927395007 2927394995 0 526931094212 362996810236 18446743919241604546 1667369447 1953587717 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/26231/net +Directory: fixtures/proc/26231/net Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/net/dev +Path: fixtures/proc/26231/net/dev Lines: 4 Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed @@ -102,133 +114,226 @@ Inter-| Receive | Transmit eth0: 438 5 0 0 0 0 0 0 648 8 0 0 0 0 0 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/26231/ns +Directory: fixtures/proc/26231/ns Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/ns/mnt +Path: fixtures/proc/26231/ns/mnt SymlinkTo: mnt:[4026531840] # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/ns/net +Path: fixtures/proc/26231/ns/net SymlinkTo: net:[4026531993] # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26231/stat +Path: fixtures/proc/26231/root +SymlinkTo: / +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/26231/stat Lines: 1 26231 (vim) R 5392 7446 5392 34835 7446 4218880 32533 309516 26 82 1677 44 158 99 20 0 1 0 82375 56274944 1981 18446744073709551615 4194304 6294284 140736914091744 140736914087944 139965136429984 0 0 12288 1870679807 0 0 0 17 0 0 0 31 0 0 8391624 8481048 16420864 140736914093252 140736914093279 140736914093279 140736914096107 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/26232 +Path: fixtures/proc/26231/status +Lines: 53 + +Name: prometheus +Umask: 0022 +State: S (sleeping) +Tgid: 1 +Ngid: 0 +Pid: 1 +PPid: 0 +TracerPid: 0 +Uid: 0 0 0 0 +Gid: 0 0 0 0 +FDSize: 128 +Groups: +NStgid: 1 +NSpid: 1 +NSpgid: 1 +NSsid: 1 +VmPeak: 58472 kB +VmSize: 58440 kB +VmLck: 0 kB +VmPin: 0 kB +VmHWM: 8028 kB +VmRSS: 6716 kB +RssAnon: 2092 kB +RssFile: 4624 kB +RssShmem: 0 kB +VmData: 2580 kB +VmStk: 136 kB +VmExe: 948 kB +VmLib: 6816 kB +VmPTE: 128 kB +VmPMD: 12 kB +VmSwap: 660 kB +HugetlbPages: 0 kB +Threads: 1 +SigQ: 8/63965 +SigPnd: 0000000000000000 +ShdPnd: 0000000000000000 +SigBlk: 7be3c0fe28014a03 +SigIgn: 0000000000001000 +SigCgt: 00000001800004ec +CapInh: 0000000000000000 +CapPrm: 0000003fffffffff +CapEff: 0000003fffffffff +CapBnd: 0000003fffffffff +CapAmb: 0000000000000000 +Seccomp: 0 +Cpus_allowed: ff +Cpus_allowed_list: 0-7 +Mems_allowed: 00000000,00000001 +Mems_allowed_list: 0 +voluntary_ctxt_switches: 4742839 +nonvoluntary_ctxt_switches: 1727500 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/proc/26232 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26232/cmdline +Path: fixtures/proc/26232/cmdline Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26232/comm +Path: fixtures/proc/26232/comm Lines: 1 ata_sff Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/26232/fd +Path: fixtures/proc/26232/cwd +SymlinkTo: /does/not/exist +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/proc/26232/fd Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26232/fd/0 +Path: fixtures/proc/26232/fd/0 SymlinkTo: ../../symlinktargets/abc # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26232/fd/1 +Path: fixtures/proc/26232/fd/1 SymlinkTo: ../../symlinktargets/def # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26232/fd/2 +Path: fixtures/proc/26232/fd/2 SymlinkTo: ../../symlinktargets/ghi # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26232/fd/3 +Path: fixtures/proc/26232/fd/3 SymlinkTo: ../../symlinktargets/uvw # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26232/fd/4 +Path: fixtures/proc/26232/fd/4 SymlinkTo: ../../symlinktargets/xyz # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26232/limits +Path: fixtures/proc/26232/limits Lines: 17 -Limit Soft Limit Hard Limit Units -Max cpu time unlimited unlimited seconds -Max file size unlimited unlimited bytes -Max data size unlimited unlimited bytes -Max stack size 8388608 unlimited bytes -Max core file size 0 unlimited bytes -Max resident set unlimited unlimited bytes -Max processes 29436 29436 processes -Max open files 1024 4096 files -Max locked memory 65536 65536 bytes -Max address space unlimited unlimited bytes -Max file locks unlimited unlimited locks -Max pending signals 29436 29436 signals -Max msgqueue size 819200 819200 bytes -Max nice priority 0 0 -Max realtime priority 0 0 -Max realtime timeout unlimited unlimited us -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26232/stat +Limit Soft Limit Hard Limit Units +Max cpu time unlimited unlimited seconds +Max file size unlimited unlimited bytes +Max data size unlimited unlimited bytes +Max stack size 8388608 unlimited bytes +Max core file size 0 unlimited bytes +Max resident set unlimited unlimited bytes +Max processes 29436 29436 processes +Max open files 1024 4096 files +Max locked memory 65536 65536 bytes +Max address space unlimited unlimited bytes +Max file locks unlimited unlimited locks +Max pending signals 29436 29436 signals +Max msgqueue size 819200 819200 bytes +Max nice priority 0 0 +Max realtime priority 0 0 +Max realtime timeout unlimited unlimited us +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/26232/root +SymlinkTo: /does/not/exist +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/26232/stat Lines: 1 33 (ata_sff) S 2 0 0 0 -1 69238880 0 0 0 0 0 0 0 0 0 -20 1 0 5 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744073709551615 0 0 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/26233 +Directory: fixtures/proc/26233 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/26233/cmdline +Path: fixtures/proc/26233/cmdline Lines: 1 com.github.uiautomatorNULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTENULLBYTEEOF Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/584 +Directory: fixtures/proc/584 Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/584/stat +Path: fixtures/proc/584/stat Lines: 2 1020 ((a b ) ( c d) ) R 28378 1020 28378 34842 1020 4218880 286 0 0 0 0 0 0 0 20 0 1 0 10839175 10395648 155 18446744073709551615 4194304 4238788 140736466511168 140736466511168 140609271124624 0 0 0 0 0 0 0 17 5 0 0 0 0 0 6336016 6337300 25579520 140736466515030 140736466515061 140736466515061 140736466518002 0 #!/bin/cat /proc/self/stat Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/buddyinfo -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/buddyinfo/short -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/buddyinfo/short/buddyinfo -Lines: 3 -Node 0, zone -Node 0, zone -Node 0, zone -Mode: 644 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/buddyinfo/sizemismatch -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/buddyinfo/sizemismatch/buddyinfo +Path: fixtures/proc/buddyinfo Lines: 3 -Node 0, zone DMA 1 0 1 0 2 1 1 0 1 1 3 -Node 0, zone DMA32 759 572 791 475 194 45 12 0 0 0 0 0 -Node 0, zone Normal 4381 1093 185 1530 567 102 4 0 0 0 +Node 0, zone DMA 1 0 1 0 2 1 1 0 1 1 3 +Node 0, zone DMA32 759 572 791 475 194 45 12 0 0 0 0 +Node 0, zone Normal 4381 1093 185 1530 567 102 4 0 0 0 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/buddyinfo/valid -Mode: 755 -# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/buddyinfo/valid/buddyinfo -Lines: 3 -Node 0, zone DMA 1 0 1 0 2 1 1 0 1 1 3 -Node 0, zone DMA32 759 572 791 475 194 45 12 0 0 0 0 -Node 0, zone Normal 4381 1093 185 1530 567 102 4 0 0 0 0 -Mode: 644 +Path: fixtures/proc/diskstats +Lines: 49 + 1 0 ram0 0 0 0 0 0 0 0 0 0 0 0 + 1 1 ram1 0 0 0 0 0 0 0 0 0 0 0 + 1 2 ram2 0 0 0 0 0 0 0 0 0 0 0 + 1 3 ram3 0 0 0 0 0 0 0 0 0 0 0 + 1 4 ram4 0 0 0 0 0 0 0 0 0 0 0 + 1 5 ram5 0 0 0 0 0 0 0 0 0 0 0 + 1 6 ram6 0 0 0 0 0 0 0 0 0 0 0 + 1 7 ram7 0 0 0 0 0 0 0 0 0 0 0 + 1 8 ram8 0 0 0 0 0 0 0 0 0 0 0 + 1 9 ram9 0 0 0 0 0 0 0 0 0 0 0 + 1 10 ram10 0 0 0 0 0 0 0 0 0 0 0 + 1 11 ram11 0 0 0 0 0 0 0 0 0 0 0 + 1 12 ram12 0 0 0 0 0 0 0 0 0 0 0 + 1 13 ram13 0 0 0 0 0 0 0 0 0 0 0 + 1 14 ram14 0 0 0 0 0 0 0 0 0 0 0 + 1 15 ram15 0 0 0 0 0 0 0 0 0 0 0 + 7 0 loop0 0 0 0 0 0 0 0 0 0 0 0 + 7 1 loop1 0 0 0 0 0 0 0 0 0 0 0 + 7 2 loop2 0 0 0 0 0 0 0 0 0 0 0 + 7 3 loop3 0 0 0 0 0 0 0 0 0 0 0 + 7 4 loop4 0 0 0 0 0 0 0 0 0 0 0 + 7 5 loop5 0 0 0 0 0 0 0 0 0 0 0 + 7 6 loop6 0 0 0 0 0 0 0 0 0 0 0 + 7 7 loop7 0 0 0 0 0 0 0 0 0 0 0 + 8 0 sda 25354637 34367663 1003346126 18492372 28444756 11134226 505697032 63877960 0 9653880 82621804 + 8 1 sda1 250 0 2000 36 0 0 0 0 0 36 36 + 8 2 sda2 246 0 1968 32 0 0 0 0 0 32 32 + 8 3 sda3 340 13 2818 52 11 8 152 8 0 56 60 + 8 4 sda4 25353629 34367650 1003337964 18492232 27448755 11134218 505696880 61593380 0 7576432 80332428 + 252 0 dm-0 59910002 0 1003337218 46229572 39231014 0 505696880 1158557800 0 11325968 1206301256 + 252 1 dm-1 388 0 3104 84 74 0 592 0 0 76 84 + 252 2 dm-2 11571 0 308350 6536 153522 0 5093416 122884 0 65400 129416 + 252 3 dm-3 3870 0 3870 104 0 0 0 0 0 16 104 + 252 4 dm-4 392 0 1034 28 38 0 137 16 0 24 44 + 252 5 dm-5 3729 0 84279 924 98918 0 1151688 104684 0 58848 105632 + 179 0 mmcblk0 192 3 1560 156 0 0 0 0 0 136 156 + 179 1 mmcblk0p1 17 3 160 24 0 0 0 0 0 24 24 + 179 2 mmcblk0p2 95 0 760 68 0 0 0 0 0 68 68 + 2 0 fd0 2 0 16 80 0 0 0 0 0 80 80 + 254 0 vda 1775784 15386 32670882 8655768 6038856 20711856 213637440 2069221364 0 41614592 2077872228 + 254 1 vda1 668 85 5984 956 207 4266 35784 32772 0 8808 33720 + 254 2 vda2 1774936 15266 32663262 8654692 5991028 20707590 213601656 2069152216 0 41607628 2077801992 + 11 0 sr0 0 0 0 0 0 0 0 0 0 0 0 + 259 0 nvme0n1 47114 4 4643973 21650 1078320 43950 39451633 1011053 0 222766 1032546 + 259 1 nvme0n1p1 1140 0 9370 16 1 0 1 0 0 16 16 + 259 2 nvme0n1p2 45914 4 4631243 21626 1036885 43950 39451632 919480 0 131580 940970 + 8 0 sdb 326552 841 9657779 84 41822 2895 1972905 5007 0 60730 67070 68851 0 1925173784 11130 + 8 1 sdb1 231 3 34466 4 24 23 106 0 0 64 64 0 0 0 0 + 8 2 sdb2 326310 838 9622281 67 40726 2872 1972799 4924 0 58250 64567 68851 0 1925173784 11130 +Mode: 664 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/fs +Directory: fixtures/proc/fs Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/fs/xfs +Directory: fixtures/proc/fs/xfs Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/fs/xfs/stat +Path: fixtures/proc/fs/xfs/stat Lines: 23 extent_alloc 92447 97589 92448 93751 abt 0 0 0 0 @@ -255,40 +360,70 @@ xpc 399724544 92823103 86219234 debug 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/mdstat -Lines: 26 +Path: fixtures/proc/mdstat +Lines: 56 Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] -md3 : active raid6 sda1[8] sdh1[7] sdg1[6] sdf1[5] sde1[11] sdd1[3] sdc1[10] sdb1[9] + +md3 : active raid6 sda1[8] sdh1[7] sdg1[6] sdf1[5] sde1[11] sdd1[3] sdc1[10] sdb1[9] sdd1[10](S) sdd2[11](S) 5853468288 blocks super 1.2 level 6, 64k chunk, algorithm 2 [8/8] [UUUUUUUU] - + md127 : active raid1 sdi2[0] sdj2[1] 312319552 blocks [2/2] [UU] - -md0 : active raid1 sdk[2](S) sdi1[0] sdj1[1] + +md0 : active raid1 sdi1[0] sdj1[1] 248896 blocks [2/2] [UU] - -md4 : inactive raid1 sda3[0] sdb3[1] + +md4 : inactive raid1 sda3[0](F) sdb3[1](S) 4883648 blocks [2/2] [UU] -md6 : active raid1 sdb2[2] sda2[0] +md6 : active raid1 sdb2[2](F) sdc[1](S) sda2[0] 195310144 blocks [2/1] [U_] [=>...................] recovery = 8.5% (16775552/195310144) finish=17.0min speed=259783K/sec -md8 : active raid1 sdb1[1] sda1[0] +md8 : active raid1 sdb1[1] sda1[0] sdc[2](S) sde[3](S) 195310144 blocks [2/2] [UU] [=>...................] resync = 8.5% (16775552/195310144) finish=17.0min speed=259783K/sec -md7 : active raid6 sdb1[0] sde1[3] sdd1[2] sdc1[1] +md7 : active raid6 sdb1[0] sde1[3] sdd1[2] sdc1[1](F) 7813735424 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/3] [U_UU] bitmap: 0/30 pages [0KB], 65536KB chunk +md9 : active raid1 sdc2[2] sdd2[3] sdb2[1] sda2[0] sde[4](F) sdf[5](F) sdg[6](S) + 523968 blocks super 1.2 [4/4] [UUUU] + resync=DELAYED + +md10 : active raid0 sda1[0] sdb1[1] + 314159265 blocks 64k chunks + +md11 : active (auto-read-only) raid1 sdb2[0] sdc2[1] sdc3[2](F) hda[4](S) ssdc2[3](S) + 4190208 blocks super 1.2 [2/2] [UU] + resync=PENDING + +md12 : active raid0 sdc2[0] sdd2[1] + 3886394368 blocks super 1.2 512k chunks + +md126 : active raid0 sdb[1] sdc[0] + 1855870976 blocks super external:/md127/0 128k chunks + +md219 : inactive sdb[2](S) sdc[1](S) sda[0](S) + 7932 blocks super external:imsm + +md00 : active raid0 xvdb[0] + 4186624 blocks super 1.2 256k chunks + +md120 : active linear sda1[1] sdb1[0] + 2095104 blocks super 1.2 0k rounding + +md101 : active (read-only) raid0 sdb[2] sdd[1] sdc[0] + 322560 blocks super 1.2 512k chunks + unused devices: Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/net +Directory: fixtures/proc/net Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/net/dev +Path: fixtures/proc/net/dev Lines: 6 Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed @@ -298,7 +433,7 @@ docker0: 2568 38 0 0 0 0 0 0 438 eth0: 874354587 1036395 0 0 0 0 0 0 563352563 732147 0 0 0 0 0 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/net/ip_vs +Path: fixtures/proc/net/ip_vs Lines: 21 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags @@ -323,7 +458,7 @@ FWM 10001000 wlc -> C0A83215:0CEA Route 0 0 2 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/net/ip_vs_stats +Path: fixtures/proc/net/ip_vs_stats Lines: 6 Total Incoming Outgoing Incoming Outgoing Conns Packets Packets Bytes Bytes @@ -333,10 +468,10 @@ Lines: 6 4 1FB3C 0 1282A8F 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/net/rpc +Directory: fixtures/proc/net/rpc Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/net/rpc/nfs +Path: fixtures/proc/net/rpc/nfs Lines: 5 net 18628 0 18628 6 rpc 4329785 0 4338291 @@ -345,7 +480,7 @@ proc3 22 1 4084749 29200 94754 32580 186 47747 7981 8639 0 6356 0 6962 0 7958 0 proc4 61 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/net/rpc/nfsd +Path: fixtures/proc/net/rpc/nfsd Lines: 11 rc 0 6 18622 fh 0 0 0 0 0 @@ -360,7 +495,27 @@ proc4 2 2 10853 proc4ops 72 0 0 0 1098 2 0 0 0 0 8179 5896 0 0 0 0 5900 0 0 2 0 2 0 9609 0 2 150 1272 0 0 0 1236 0 0 0 0 3 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/net/xfrm_stat +Path: fixtures/proc/net/unix +Lines: 6 +Num RefCount Protocol Flags Type St Inode Path +0000000000000000: 00000002 00000000 00010000 0001 01 3442596 /var/run/postgresql/.s.PGSQL.5432 +0000000000000000: 0000000a 00000000 00010000 0005 01 10061 /run/udev/control +0000000000000000: 00000007 00000000 00000000 0002 01 12392 /dev/log +0000000000000000: 00000003 00000000 00000000 0001 03 4787297 /var/run/postgresql/.s.PGSQL.5432 +0000000000000000: 00000003 00000000 00000000 0001 03 5091797 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/net/unix_without_inode +Lines: 6 +Num RefCount Protocol Flags Type St Path +0000000000000000: 00000002 00000000 00010000 0001 01 /var/run/postgresql/.s.PGSQL.5432 +0000000000000000: 0000000a 00000000 00010000 0005 01 /run/udev/control +0000000000000000: 00000007 00000000 00000000 0002 01 /dev/log +0000000000000000: 00000003 00000000 00000000 0001 03 /var/run/postgresql/.s.PGSQL.5432 +0000000000000000: 00000003 00000000 00000000 0001 03 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/net/xfrm_stat Lines: 28 XfrmInError 1 XfrmInBufferError 2 @@ -392,10 +547,30 @@ XfrmOutStateInvalid 28765 XfrmAcquireError 24532 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/self +Directory: fixtures/proc/pressure +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/pressure/cpu +Lines: 1 +some avg10=0.10 avg60=2.00 avg300=3.85 total=15 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/pressure/io +Lines: 2 +some avg10=0.10 avg60=2.00 avg300=3.85 total=15 +full avg10=0.20 avg60=3.00 avg300=4.95 total=25 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/pressure/memory +Lines: 2 +some avg10=0.10 avg60=2.00 avg300=3.85 total=15 +full avg10=0.20 avg60=3.00 avg300=4.95 total=25 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/proc/self SymlinkTo: 26231 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/stat +Path: fixtures/proc/stat Lines: 16 cpu 301854 612 111922 8979004 3552 2 3944 0 0 0 cpu0 44490 19 21045 1087069 220 1 3410 0 0 0 @@ -415,32 +590,1754 @@ procs_blocked 1 softirq 5057579 250191 1481983 1647 211099 186066 0 1783454 622196 12499 508444 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Directory: fixtures/symlinktargets +Directory: fixtures/proc/symlinktargets Mode: 755 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/symlinktargets/README +Path: fixtures/proc/symlinktargets/README Lines: 2 This directory contains some empty files that are the symlinks the files in the "fd" directory point to. They are otherwise ignored by the tests Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/symlinktargets/abc +Path: fixtures/proc/symlinktargets/abc Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/symlinktargets/def +Path: fixtures/proc/symlinktargets/def Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/symlinktargets/ghi +Path: fixtures/proc/symlinktargets/ghi Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/symlinktargets/uvw +Path: fixtures/proc/symlinktargets/uvw Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Path: fixtures/symlinktargets/xyz +Path: fixtures/proc/symlinktargets/xyz Lines: 0 Mode: 644 # ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/block +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/block/dm-0 +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/block/dm-0/stat +Lines: 1 +6447303 0 710266738 1529043 953216 0 31201176 4557464 0 796160 6088971 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/block/sda +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/block/sda/stat +Lines: 1 +9652963 396792 759304206 412943 8422549 6731723 286915323 13947418 0 5658367 19174573 1 2 3 12 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband/mlx4_0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/board_id +Lines: 1 +SM_1141000001000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/fw_ver +Lines: 1 +2.31.5050 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/hca_type +Lines: 1 +MT4099 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband/mlx4_0/ports +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband/mlx4_0/ports/1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/excessive_buffer_overrun_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/link_downed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/link_error_recovery +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/local_link_integrity_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_constraint_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_data +Lines: 1 +2221223609 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_packets +Lines: 1 +87169372 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_remote_physical_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_rcv_switch_relay_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_constraint_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_data +Lines: 1 +26509113295 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_discards +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_packets +Lines: 1 +85734114 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/port_xmit_wait +Lines: 1 +3599 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/counters/symbol_error +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/phys_state +Lines: 1 +5: LinkUp +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/rate +Lines: 1 +40 Gb/sec (4X QDR) +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/1/state +Lines: 1 +4: ACTIVE +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband/mlx4_0/ports/2 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/excessive_buffer_overrun_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/link_downed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/link_error_recovery +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/local_link_integrity_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_constraint_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_data +Lines: 1 +2460436784 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_packets +Lines: 1 +89332064 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_remote_physical_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_rcv_switch_relay_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_xmit_constraint_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_xmit_data +Lines: 1 +26540356890 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_xmit_discards +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_xmit_packets +Lines: 1 +88622850 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/port_xmit_wait +Lines: 1 +3846 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/counters/symbol_error +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/phys_state +Lines: 1 +5: LinkUp +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/rate +Lines: 1 +40 Gb/sec (4X QDR) +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/infiniband/mlx4_0/ports/2/state +Lines: 1 +4: ACTIVE +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/net +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/net/eth0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/addr_assign_type +Lines: 1 +3 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/addr_len +Lines: 1 +6 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/address +Lines: 1 +01:01:01:01:01:01 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/broadcast +Lines: 1 +ff:ff:ff:ff:ff:ff +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/carrier +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/carrier_changes +Lines: 1 +2 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/carrier_down_count +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/carrier_up_count +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/dev_id +Lines: 1 +0x20 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/dormant +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/duplex +Lines: 1 +full +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/flags +Lines: 1 +0x1303 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/ifalias +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/ifindex +Lines: 1 +2 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/iflink +Lines: 1 +2 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/link_mode +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/mtu +Lines: 1 +1500 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/name_assign_type +Lines: 1 +2 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/netdev_group +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/operstate +Lines: 1 +up +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/phys_port_id +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/phys_port_name +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/phys_switch_id +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/speed +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/tx_queue_len +Lines: 1 +1000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/net/eth0/type +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/power_supply +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/power_supply/AC +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/AC/online +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/AC/type +Lines: 1 +Mains +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/AC/uevent +Lines: 2 +POWER_SUPPLY_NAME=AC +POWER_SUPPLY_ONLINE=0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/power_supply/BAT0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/alarm +Lines: 1 +2503000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/capacity +Lines: 1 +98 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/capacity_level +Lines: 1 +Normal +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/charge_start_threshold +Lines: 1 +95 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/charge_stop_threshold +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/cycle_count +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/energy_full +Lines: 1 +50060000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/energy_full_design +Lines: 1 +47520000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/energy_now +Lines: 1 +49450000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/manufacturer +Lines: 1 +LGC +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/model_name +Lines: 1 +LNV-45N1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/power_now +Lines: 1 +4830000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/present +Lines: 1 +1 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/serial_number +Lines: 1 +38109 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/status +Lines: 1 +Discharging +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/technology +Lines: 1 +Li-ion +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/type +Lines: 1 +Battery +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/uevent +Lines: 16 +POWER_SUPPLY_NAME=BAT0 +POWER_SUPPLY_STATUS=Discharging +POWER_SUPPLY_PRESENT=1 +POWER_SUPPLY_TECHNOLOGY=Li-ion +POWER_SUPPLY_CYCLE_COUNT=0 +POWER_SUPPLY_VOLTAGE_MIN_DESIGN=10800000 +POWER_SUPPLY_VOLTAGE_NOW=12229000 +POWER_SUPPLY_POWER_NOW=4830000 +POWER_SUPPLY_ENERGY_FULL_DESIGN=47520000 +POWER_SUPPLY_ENERGY_FULL=50060000 +POWER_SUPPLY_ENERGY_NOW=49450000 +POWER_SUPPLY_CAPACITY=98 +POWER_SUPPLY_CAPACITY_LEVEL=Normal +POWER_SUPPLY_MODEL_NAME=LNV-45N1 +POWER_SUPPLY_MANUFACTURER=LGC +POWER_SUPPLY_SERIAL_NUMBER=38109 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/voltage_min_design +Lines: 1 +10800000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/power_supply/BAT0/voltage_now +Lines: 1 +12229000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/thermal +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/thermal/thermal_zone0 +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/thermal/thermal_zone0/policy +Lines: 1 +step_wise +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/thermal/thermal_zone0/temp +Lines: 1 +49925 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/thermal/thermal_zone0/type +Lines: 1 +bcm2835_thermal +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/class/thermal/thermal_zone1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/thermal/thermal_zone1/mode +Lines: 1 +enabled +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/thermal/thermal_zone1/passive +Lines: 1 +0 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/thermal/thermal_zone1/policy +Lines: 1 +step_wise +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/thermal/thermal_zone1/temp +Lines: 1 +44000 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/class/thermal/thermal_zone1/type +Lines: 1 +acpitz +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/dirty_data +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_hit_ratio +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_hits +Lines: 1 +289 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_day/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_hit_ratio +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_five_minute/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_hit_ratio +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_hour/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_hit_ratio +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_hits +Lines: 1 +546 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdb/bcache/stats_total/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache/io_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache/metadata_written +Lines: 1 +512 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache/priority_stats +Lines: 5 +Unused: 99% +Metadata: 0% +Average: 10473 +Sectors per Q: 64 +Quantiles: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946] +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdc/bcache/written +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/rbd +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/rbd/0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/rbd/0/name +Lines: 1 +demo +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/rbd/0/pool +Lines: 1 +iscsi-images +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/rbd/1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/rbd/1/name +Lines: 1 +wrong +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/rbd/1/pool +Lines: 1 +wrong-images +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/clocksource +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/clocksource/clocksource0 +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/clocksource/clocksource0/available_clocksource +Lines: 1 +tsc hpet acpi_pm +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/clocksource/clocksource0/current_clocksource +Lines: 1 +tsc +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/cpu +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/cpu/cpu0 +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu0/cpufreq +SymlinkTo: ../cpufreq/policy0 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/cpu/cpu1 +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/cpu/cpu1/cpufreq +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq +Lines: 1 +1200195 +Mode: 400 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_max_freq +Lines: 1 +3300000 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_min_freq +Lines: 1 +1200000 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_transition_latency +Lines: 1 +4294967295 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/related_cpus +Lines: 1 +1 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_available_governors +Lines: 1 +performance powersave +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_driver +Lines: 1 +intel_pstate +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_governor +Lines: 1 +powersave +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq +Lines: 1 +3300000 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq +Lines: 1 +1200000 +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpu1/cpufreq/scaling_setspeed +Lines: 1 + +Mode: 664 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/cpu/cpufreq +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/cpu/cpufreq/policy0 +Mode: 775 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/affected_cpus +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq +Lines: 1 +2400000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_min_freq +Lines: 1 +800000 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_transition_latency +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/related_cpus +Lines: 1 +0 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors +Lines: 1 +performance powersave +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq +Lines: 1 +1219917 +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_driver +Lines: 1 +intel_pstate +Mode: 444 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_governor +Lines: 1 +powersave +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq +Lines: 1 +2400000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq +Lines: 1 +800000 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed +Lines: 1 + +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/devices/system/cpu/cpufreq/policy1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/average_key_size +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0 +Mode: 777 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/dirty_data +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_hit_ratio +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_hits +Lines: 1 +289 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_day/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_hit_ratio +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_five_minute/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_hit_ratio +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_hour/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_hit_ratio +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_hits +Lines: 1 +546 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/bdev0/stats_total/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/btree_cache_size +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0 +Mode: 777 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0/io_errors +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0/metadata_written +Lines: 1 +512 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0/priority_stats +Lines: 5 +Unused: 99% +Metadata: 0% +Average: 10473 +Sectors per Q: 64 +Quantiles: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946 20946] +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache0/written +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/cache_available_percent +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/congested +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/active_journal_entries +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/btree_nodes +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/btree_read_average_duration_us +Lines: 1 +1305 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/internal/cache_read_races +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/root_usage_percent +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_hit_ratio +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_hits +Lines: 1 +289 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_day/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_hit_ratio +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_five_minute/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_hit_ratio +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_hour/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/bypassed +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_bypass_hits +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_bypass_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_hit_ratio +Lines: 1 +100 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_hits +Lines: 1 +546 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_miss_collisions +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_misses +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/stats_total/cache_readaheads +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/bcache/deaddd54-c735-46d5-868e-f331c5fd7c74/tree_depth +Lines: 1 +0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/xfs +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/xfs/sda1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/xfs/sda1/stats +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/xfs/sda1/stats/stats +Lines: 1 +extent_alloc 1 0 0 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/xfs/sdb1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/fs/xfs/sdb1/stats +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/fs/xfs/sdb1/stats/stats +Lines: 1 +extent_alloc 2 0 0 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/core +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/core/fileio_0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/core/fileio_1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/core/fileio_1/file_lio_1G +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/core/fileio_1/file_lio_1G/enable +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/core/fileio_1/file_lio_1G/udev_path +Lines: 1 +/home/iscsi/file_back_1G +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/core/iblock_0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/core/iblock_0/block_lio_rbd1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/core/iblock_0/block_lio_rbd1/enable +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/core/iblock_0/block_lio_rbd1/udev_path +Lines: 1 +/dev/rbd1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/core/rbd_0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/core/rbd_0/iscsi-images-demo +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/core/rbd_0/iscsi-images-demo/enable +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/core/rbd_0/iscsi-images-demo/udev_path +Lines: 1 +/dev/rbd/iscsi-images/demo +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/core/rd_mcp_119 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/core/rd_mcp_119/ramdisk_lio_1G +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/core/rd_mcp_119/ramdisk_lio_1G/enable +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/core/rd_mcp_119/ramdisk_lio_1G/udev_path +Lines: 0 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/enable +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/7f4a4eb56d +SymlinkTo: ../../../../../../target/core/rd_mcp_119/ramdisk_lio_1G +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/statistics +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/in_cmds +Lines: 1 +204950 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/read_mbytes +Lines: 1 +10325 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.8888bbbbddd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/write_mbytes +Lines: 1 +40325 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/enable +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/795b7c7026 +SymlinkTo: ../../../../../../target/core/iblock_0/block_lio_rbd1 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/statistics +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/statistics/scsi_tgt_port +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/in_cmds +Lines: 1 +104950 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/read_mbytes +Lines: 1 +20095 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2003-01.org.linux-iscsi.osd1.x8664:sn.abcd1abcd2ab/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/write_mbytes +Lines: 1 +71235 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/enable +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/fff5e16686 +SymlinkTo: ../../../../../../target/core/fileio_1/file_lio_1G +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/statistics +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/in_cmds +Lines: 1 +301950 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/read_mbytes +Lines: 1 +10195 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:dev.rbd0/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/write_mbytes +Lines: 1 +30195 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/enable +Lines: 1 +1 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0 +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/eba1edf893 +SymlinkTo: ../../../../../../target/core/rbd_0/iscsi-images-demo +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/statistics +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Directory: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/statistics/scsi_tgt_port +Mode: 755 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/in_cmds +Lines: 1 +1234 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/read_mbytes +Lines: 1 +1504 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Path: fixtures/sys/kernel/config/target/iscsi/iqn.2016-11.org.linux-iscsi.igw.x86:sn.ramdemo/tpgt_1/lun/lun_0/statistics/scsi_tgt_port/write_mbytes +Lines: 1 +4733 +Mode: 644 +# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/github.com/prometheus/procfs/fs.go b/vendor/github.com/prometheus/procfs/fs.go index b6c6b2ce1f..0102ab0fd8 100644 --- a/vendor/github.com/prometheus/procfs/fs.go +++ b/vendor/github.com/prometheus/procfs/fs.go @@ -14,69 +14,30 @@ package procfs import ( - "fmt" - "os" - "path" - - "github.com/prometheus/procfs/nfs" - "github.com/prometheus/procfs/xfs" + "github.com/prometheus/procfs/internal/fs" ) -// FS represents the pseudo-filesystem proc, which provides an interface to +// FS represents the pseudo-filesystem sys, which provides an interface to // kernel data structures. -type FS string - -// DefaultMountPoint is the common mount point of the proc filesystem. -const DefaultMountPoint = "/proc" - -// NewFS returns a new FS mounted under the given mountPoint. It will error -// if the mount point can't be read. -func NewFS(mountPoint string) (FS, error) { - info, err := os.Stat(mountPoint) - if err != nil { - return "", fmt.Errorf("could not read %s: %s", mountPoint, err) - } - if !info.IsDir() { - return "", fmt.Errorf("mount point %s is not a directory", mountPoint) - } - - return FS(mountPoint), nil -} - -// Path returns the path of the given subsystem relative to the procfs root. -func (fs FS) Path(p ...string) string { - return path.Join(append([]string{string(fs)}, p...)...) +type FS struct { + proc fs.FS } -// XFSStats retrieves XFS filesystem runtime statistics. -func (fs FS) XFSStats() (*xfs.Stats, error) { - f, err := os.Open(fs.Path("fs/xfs/stat")) - if err != nil { - return nil, err - } - defer f.Close() - - return xfs.ParseStats(f) -} - -// NFSClientRPCStats retrieves NFS client RPC statistics. -func (fs FS) NFSClientRPCStats() (*nfs.ClientRPCStats, error) { - f, err := os.Open(fs.Path("net/rpc/nfs")) - if err != nil { - return nil, err - } - defer f.Close() +// DefaultMountPoint is the common mount point of the proc filesystem. +const DefaultMountPoint = fs.DefaultProcMountPoint - return nfs.ParseClientRPCStats(f) +// NewDefaultFS returns a new proc FS mounted under the default proc mountPoint. +// It will error if the mount point directory can't be read or is a file. +func NewDefaultFS() (FS, error) { + return NewFS(DefaultMountPoint) } -// NFSdServerRPCStats retrieves NFS daemon RPC statistics. -func (fs FS) NFSdServerRPCStats() (*nfs.ServerRPCStats, error) { - f, err := os.Open(fs.Path("net/rpc/nfsd")) +// NewFS returns a new proc FS mounted under the given proc mountPoint. It will error +// if the mount point directory can't be read or is a file. +func NewFS(mountPoint string) (FS, error) { + fs, err := fs.NewFS(mountPoint) if err != nil { - return nil, err + return FS{}, err } - defer f.Close() - - return nfs.ParseServerRPCStats(f) + return FS{fs}, nil } diff --git a/vendor/github.com/prometheus/procfs/go.mod b/vendor/github.com/prometheus/procfs/go.mod new file mode 100644 index 0000000000..b2f8cca933 --- /dev/null +++ b/vendor/github.com/prometheus/procfs/go.mod @@ -0,0 +1,6 @@ +module github.com/prometheus/procfs + +require ( + github.com/google/go-cmp v0.3.0 + golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 +) diff --git a/vendor/github.com/prometheus/procfs/go.sum b/vendor/github.com/prometheus/procfs/go.sum new file mode 100644 index 0000000000..db54133d7c --- /dev/null +++ b/vendor/github.com/prometheus/procfs/go.sum @@ -0,0 +1,4 @@ +github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/vendor/github.com/prometheus/procfs/internal/fs/fs.go b/vendor/github.com/prometheus/procfs/internal/fs/fs.go new file mode 100644 index 0000000000..7ddfd6b6ed --- /dev/null +++ b/vendor/github.com/prometheus/procfs/internal/fs/fs.go @@ -0,0 +1,55 @@ +// Copyright 2019 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package fs + +import ( + "fmt" + "os" + "path/filepath" +) + +const ( + // DefaultProcMountPoint is the common mount point of the proc filesystem. + DefaultProcMountPoint = "/proc" + + // DefaultSysMountPoint is the common mount point of the sys filesystem. + DefaultSysMountPoint = "/sys" + + // DefaultConfigfsMountPoint is the commont mount point of the configfs + DefaultConfigfsMountPoint = "/sys/kernel/config" +) + +// FS represents a pseudo-filesystem, normally /proc or /sys, which provides an +// interface to kernel data structures. +type FS string + +// NewFS returns a new FS mounted under the given mountPoint. It will error +// if the mount point can't be read. +func NewFS(mountPoint string) (FS, error) { + info, err := os.Stat(mountPoint) + if err != nil { + return "", fmt.Errorf("could not read %s: %s", mountPoint, err) + } + if !info.IsDir() { + return "", fmt.Errorf("mount point %s is not a directory", mountPoint) + } + + return FS(mountPoint), nil +} + +// Path appends the given path elements to the filesystem path, adding separators +// as necessary. +func (fs FS) Path(p ...string) string { + return filepath.Join(append([]string{string(fs)}, p...)...) +} diff --git a/vendor/github.com/prometheus/procfs/internal/util/parse.go b/vendor/github.com/prometheus/procfs/internal/util/parse.go deleted file mode 100644 index 1ad21c91a3..0000000000 --- a/vendor/github.com/prometheus/procfs/internal/util/parse.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package util - -import "strconv" - -// ParseUint32s parses a slice of strings into a slice of uint32s. -func ParseUint32s(ss []string) ([]uint32, error) { - us := make([]uint32, 0, len(ss)) - for _, s := range ss { - u, err := strconv.ParseUint(s, 10, 32) - if err != nil { - return nil, err - } - - us = append(us, uint32(u)) - } - - return us, nil -} - -// ParseUint64s parses a slice of strings into a slice of uint64s. -func ParseUint64s(ss []string) ([]uint64, error) { - us := make([]uint64, 0, len(ss)) - for _, s := range ss { - u, err := strconv.ParseUint(s, 10, 64) - if err != nil { - return nil, err - } - - us = append(us, u) - } - - return us, nil -} diff --git a/vendor/github.com/prometheus/procfs/ipvs.go b/vendor/github.com/prometheus/procfs/ipvs.go index e36d4a3bd0..2d6cb8d1c6 100644 --- a/vendor/github.com/prometheus/procfs/ipvs.go +++ b/vendor/github.com/prometheus/procfs/ipvs.go @@ -62,19 +62,9 @@ type IPVSBackendStatus struct { Weight uint64 } -// NewIPVSStats reads the IPVS statistics. -func NewIPVSStats() (IPVSStats, error) { - fs, err := NewFS(DefaultMountPoint) - if err != nil { - return IPVSStats{}, err - } - - return fs.NewIPVSStats() -} - -// NewIPVSStats reads the IPVS statistics from the specified `proc` filesystem. -func (fs FS) NewIPVSStats() (IPVSStats, error) { - file, err := os.Open(fs.Path("net/ip_vs_stats")) +// IPVSStats reads the IPVS statistics from the specified `proc` filesystem. +func (fs FS) IPVSStats() (IPVSStats, error) { + file, err := os.Open(fs.proc.Path("net/ip_vs_stats")) if err != nil { return IPVSStats{}, err } @@ -131,19 +121,9 @@ func parseIPVSStats(file io.Reader) (IPVSStats, error) { return stats, nil } -// NewIPVSBackendStatus reads and returns the status of all (virtual,real) server pairs. -func NewIPVSBackendStatus() ([]IPVSBackendStatus, error) { - fs, err := NewFS(DefaultMountPoint) - if err != nil { - return []IPVSBackendStatus{}, err - } - - return fs.NewIPVSBackendStatus() -} - -// NewIPVSBackendStatus reads and returns the status of all (virtual,real) server pairs from the specified `proc` filesystem. -func (fs FS) NewIPVSBackendStatus() ([]IPVSBackendStatus, error) { - file, err := os.Open(fs.Path("net/ip_vs")) +// IPVSBackendStatus reads and returns the status of all (virtual,real) server pairs from the specified `proc` filesystem. +func (fs FS) IPVSBackendStatus() ([]IPVSBackendStatus, error) { + file, err := os.Open(fs.proc.Path("net/ip_vs")) if err != nil { return nil, err } diff --git a/vendor/github.com/prometheus/procfs/mdstat.go b/vendor/github.com/prometheus/procfs/mdstat.go index 9dc19583d8..2af3ada180 100644 --- a/vendor/github.com/prometheus/procfs/mdstat.go +++ b/vendor/github.com/prometheus/procfs/mdstat.go @@ -22,8 +22,8 @@ import ( ) var ( - statuslineRE = regexp.MustCompile(`(\d+) blocks .*\[(\d+)/(\d+)\] \[[U_]+\]`) - buildlineRE = regexp.MustCompile(`\((\d+)/\d+\)`) + statusLineRE = regexp.MustCompile(`(\d+) blocks .*\[(\d+)/(\d+)\] \[[U_]+\]`) + recoveryLineRE = regexp.MustCompile(`\((\d+)/\d+\)`) ) // MDStat holds info parsed from /proc/mdstat. @@ -34,117 +34,160 @@ type MDStat struct { ActivityState string // Number of active disks. DisksActive int64 - // Total number of disks the device consists of. + // Total number of disks the device requires. DisksTotal int64 + // Number of failed disks. + DisksFailed int64 + // Spare disks in the device. + DisksSpare int64 // Number of blocks the device holds. BlocksTotal int64 // Number of blocks on the device that are in sync. BlocksSynced int64 } -// ParseMDStat parses an mdstat-file and returns a struct with the relevant infos. -func (fs FS) ParseMDStat() (mdstates []MDStat, err error) { - mdStatusFilePath := fs.Path("mdstat") - content, err := ioutil.ReadFile(mdStatusFilePath) +// MDStat parses an mdstat-file (/proc/mdstat) and returns a slice of +// structs containing the relevant info. More information available here: +// https://raid.wiki.kernel.org/index.php/Mdstat +func (fs FS) MDStat() ([]MDStat, error) { + data, err := ioutil.ReadFile(fs.proc.Path("mdstat")) if err != nil { - return []MDStat{}, fmt.Errorf("error parsing %s: %s", mdStatusFilePath, err) + return nil, fmt.Errorf("error parsing mdstat %s: %s", fs.proc.Path("mdstat"), err) } + mdstat, err := parseMDStat(data) + if err != nil { + return nil, fmt.Errorf("error parsing mdstat %s: %s", fs.proc.Path("mdstat"), err) + } + return mdstat, nil +} - mdStates := []MDStat{} - lines := strings.Split(string(content), "\n") - for i, l := range lines { - if l == "" { - continue - } - if l[0] == ' ' { - continue - } - if strings.HasPrefix(l, "Personalities") || strings.HasPrefix(l, "unused") { +// parseMDStat parses data from mdstat file (/proc/mdstat) and returns a slice of +// structs containing the relevant info. +func parseMDStat(mdStatData []byte) ([]MDStat, error) { + mdStats := []MDStat{} + lines := strings.Split(string(mdStatData), "\n") + + for i, line := range lines { + if strings.TrimSpace(line) == "" || line[0] == ' ' || + strings.HasPrefix(line, "Personalities") || + strings.HasPrefix(line, "unused") { continue } - mainLine := strings.Split(l, " ") - if len(mainLine) < 3 { - return mdStates, fmt.Errorf("error parsing mdline: %s", l) + deviceFields := strings.Fields(line) + if len(deviceFields) < 3 { + return nil, fmt.Errorf("not enough fields in mdline (expected at least 3): %s", line) } - mdName := mainLine[0] - activityState := mainLine[2] + mdName := deviceFields[0] // mdx + state := deviceFields[2] // active or inactive if len(lines) <= i+3 { - return mdStates, fmt.Errorf( - "error parsing %s: too few lines for md device %s", - mdStatusFilePath, + return nil, fmt.Errorf( + "error parsing %s: too few lines for md device", mdName, ) } - active, total, size, err := evalStatusline(lines[i+1]) + // Failed disks have the suffix (F) & Spare disks have the suffix (S). + fail := int64(strings.Count(line, "(F)")) + spare := int64(strings.Count(line, "(S)")) + active, total, size, err := evalStatusLine(lines[i], lines[i+1]) + if err != nil { - return mdStates, fmt.Errorf("error parsing %s: %s", mdStatusFilePath, err) + return nil, fmt.Errorf("error parsing md device lines: %s", err) } - // j is the line number of the syncing-line. - j := i + 2 + syncLineIdx := i + 2 if strings.Contains(lines[i+2], "bitmap") { // skip bitmap line - j = i + 3 + syncLineIdx++ } // If device is syncing at the moment, get the number of currently // synced bytes, otherwise that number equals the size of the device. syncedBlocks := size - if strings.Contains(lines[j], "recovery") || strings.Contains(lines[j], "resync") { - syncedBlocks, err = evalBuildline(lines[j]) - if err != nil { - return mdStates, fmt.Errorf("error parsing %s: %s", mdStatusFilePath, err) + recovering := strings.Contains(lines[syncLineIdx], "recovery") + resyncing := strings.Contains(lines[syncLineIdx], "resync") + + // Append recovery and resyncing state info. + if recovering || resyncing { + if recovering { + state = "recovering" + } else { + state = "resyncing" + } + + // Handle case when resync=PENDING or resync=DELAYED. + if strings.Contains(lines[syncLineIdx], "PENDING") || + strings.Contains(lines[syncLineIdx], "DELAYED") { + syncedBlocks = 0 + } else { + syncedBlocks, err = evalRecoveryLine(lines[syncLineIdx]) + if err != nil { + return nil, fmt.Errorf("error parsing sync line in md device %s: %s", mdName, err) + } } } - mdStates = append(mdStates, MDStat{ + mdStats = append(mdStats, MDStat{ Name: mdName, - ActivityState: activityState, + ActivityState: state, DisksActive: active, + DisksFailed: fail, + DisksSpare: spare, DisksTotal: total, BlocksTotal: size, BlocksSynced: syncedBlocks, }) } - return mdStates, nil + return mdStats, nil } -func evalStatusline(statusline string) (active, total, size int64, err error) { - matches := statuslineRE.FindStringSubmatch(statusline) - if len(matches) != 4 { - return 0, 0, 0, fmt.Errorf("unexpected statusline: %s", statusline) - } +func evalStatusLine(deviceLine, statusLine string) (active, total, size int64, err error) { - size, err = strconv.ParseInt(matches[1], 10, 64) + sizeStr := strings.Fields(statusLine)[0] + size, err = strconv.ParseInt(sizeStr, 10, 64) if err != nil { - return 0, 0, 0, fmt.Errorf("unexpected statusline %s: %s", statusline, err) + return 0, 0, 0, fmt.Errorf("unexpected statusLine %s: %s", statusLine, err) + } + + if strings.Contains(deviceLine, "raid0") || strings.Contains(deviceLine, "linear") { + // In the device deviceLine, only disks have a number associated with them in []. + total = int64(strings.Count(deviceLine, "[")) + return total, total, size, nil + } + + if strings.Contains(deviceLine, "inactive") { + return 0, 0, size, nil + } + + matches := statusLineRE.FindStringSubmatch(statusLine) + if len(matches) != 4 { + return 0, 0, 0, fmt.Errorf("couldn't find all the substring matches: %s", statusLine) } total, err = strconv.ParseInt(matches[2], 10, 64) if err != nil { - return 0, 0, 0, fmt.Errorf("unexpected statusline %s: %s", statusline, err) + return 0, 0, 0, fmt.Errorf("unexpected statusLine %s: %s", statusLine, err) } active, err = strconv.ParseInt(matches[3], 10, 64) if err != nil { - return 0, 0, 0, fmt.Errorf("unexpected statusline %s: %s", statusline, err) + return 0, 0, 0, fmt.Errorf("unexpected statusLine %s: %s", statusLine, err) } return active, total, size, nil } -func evalBuildline(buildline string) (syncedBlocks int64, err error) { - matches := buildlineRE.FindStringSubmatch(buildline) +func evalRecoveryLine(recoveryLine string) (syncedBlocks int64, err error) { + matches := recoveryLineRE.FindStringSubmatch(recoveryLine) if len(matches) != 2 { - return 0, fmt.Errorf("unexpected buildline: %s", buildline) + return 0, fmt.Errorf("unexpected recoveryLine: %s", recoveryLine) } syncedBlocks, err = strconv.ParseInt(matches[1], 10, 64) if err != nil { - return 0, fmt.Errorf("%s in buildline: %s", err, buildline) + return 0, fmt.Errorf("%s in recoveryLine: %s", err, recoveryLine) } return syncedBlocks, nil diff --git a/vendor/github.com/prometheus/procfs/mountinfo.go b/vendor/github.com/prometheus/procfs/mountinfo.go new file mode 100644 index 0000000000..61fa618874 --- /dev/null +++ b/vendor/github.com/prometheus/procfs/mountinfo.go @@ -0,0 +1,178 @@ +// Copyright 2019 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package procfs + +import ( + "bufio" + "fmt" + "io" + "os" + "strconv" + "strings" +) + +var validOptionalFields = map[string]bool{ + "shared": true, + "master": true, + "propagate_from": true, + "unbindable": true, +} + +// A MountInfo is a type that describes the details, options +// for each mount, parsed from /proc/self/mountinfo. +// The fields described in each entry of /proc/self/mountinfo +// is described in the following man page. +// http://man7.org/linux/man-pages/man5/proc.5.html +type MountInfo struct { + // Unique Id for the mount + MountId int + // The Id of the parent mount + ParentId int + // The value of `st_dev` for the files on this FS + MajorMinorVer string + // The pathname of the directory in the FS that forms + // the root for this mount + Root string + // The pathname of the mount point relative to the root + MountPoint string + // Mount options + Options map[string]string + // Zero or more optional fields + OptionalFields map[string]string + // The Filesystem type + FSType string + // FS specific information or "none" + Source string + // Superblock options + SuperOptions map[string]string +} + +// Returns part of the mountinfo line, if it exists, else an empty string. +func getStringSliceElement(parts []string, idx int, defaultValue string) string { + if idx >= len(parts) { + return defaultValue + } + return parts[idx] +} + +// Reads each line of the mountinfo file, and returns a list of formatted MountInfo structs. +func parseMountInfo(r io.Reader) ([]*MountInfo, error) { + mounts := []*MountInfo{} + scanner := bufio.NewScanner(r) + for scanner.Scan() { + mountString := scanner.Text() + parsedMounts, err := parseMountInfoString(mountString) + if err != nil { + return nil, err + } + mounts = append(mounts, parsedMounts) + } + + err := scanner.Err() + return mounts, err +} + +// Parses a mountinfo file line, and converts it to a MountInfo struct. +// An important check here is to see if the hyphen separator, as if it does not exist, +// it means that the line is malformed. +func parseMountInfoString(mountString string) (*MountInfo, error) { + var err error + + // OptionalFields can be zero, hence these checks to ensure we do not populate the wrong values in the wrong spots + separatorIndex := strings.Index(mountString, "-") + if separatorIndex == -1 { + return nil, fmt.Errorf("no separator found in mountinfo string: %s", mountString) + } + beforeFields := strings.Fields(mountString[:separatorIndex]) + afterFields := strings.Fields(mountString[separatorIndex+1:]) + if (len(beforeFields) + len(afterFields)) < 7 { + return nil, fmt.Errorf("too few fields") + } + + mount := &MountInfo{ + MajorMinorVer: getStringSliceElement(beforeFields, 2, ""), + Root: getStringSliceElement(beforeFields, 3, ""), + MountPoint: getStringSliceElement(beforeFields, 4, ""), + Options: mountOptionsParser(getStringSliceElement(beforeFields, 5, "")), + OptionalFields: nil, + FSType: getStringSliceElement(afterFields, 0, ""), + Source: getStringSliceElement(afterFields, 1, ""), + SuperOptions: mountOptionsParser(getStringSliceElement(afterFields, 2, "")), + } + + mount.MountId, err = strconv.Atoi(getStringSliceElement(beforeFields, 0, "")) + if err != nil { + return nil, fmt.Errorf("failed to parse mount ID") + } + mount.ParentId, err = strconv.Atoi(getStringSliceElement(beforeFields, 1, "")) + if err != nil { + return nil, fmt.Errorf("failed to parse parent ID") + } + // Has optional fields, which is a space separated list of values. + // Example: shared:2 master:7 + if len(beforeFields) > 6 { + mount.OptionalFields = make(map[string]string) + optionalFields := beforeFields[6:] + for _, field := range optionalFields { + optionSplit := strings.Split(field, ":") + target, value := optionSplit[0], "" + if len(optionSplit) == 2 { + value = optionSplit[1] + } + // Checks if the 'keys' in the optional fields in the mountinfo line are acceptable. + // Allowed 'keys' are shared, master, propagate_from, unbindable. + if _, ok := validOptionalFields[target]; ok { + mount.OptionalFields[target] = value + } + } + } + return mount, nil +} + +// Parses the mount options, superblock options. +func mountOptionsParser(mountOptions string) map[string]string { + opts := make(map[string]string) + options := strings.Split(mountOptions, ",") + for _, opt := range options { + splitOption := strings.Split(opt, "=") + if len(splitOption) < 2 { + key := splitOption[0] + opts[key] = "" + } else { + key, value := splitOption[0], splitOption[1] + opts[key] = value + } + } + return opts +} + +// Retrieves mountinfo information from `/proc/self/mountinfo`. +func GetMounts() ([]*MountInfo, error) { + f, err := os.Open("/proc/self/mountinfo") + if err != nil { + return nil, err + } + defer f.Close() + return parseMountInfo(f) +} + +// Retrieves mountinfo information from a processes' `/proc//mountinfo`. +func GetProcMounts(pid int) ([]*MountInfo, error) { + f, err := os.Open(fmt.Sprintf("/proc/%d/mountinfo", pid)) + if err != nil { + return nil, err + } + defer f.Close() + return parseMountInfo(f) +} diff --git a/vendor/github.com/prometheus/procfs/mountstats.go b/vendor/github.com/prometheus/procfs/mountstats.go index 7a8a1e0990..35b2ef3513 100644 --- a/vendor/github.com/prometheus/procfs/mountstats.go +++ b/vendor/github.com/prometheus/procfs/mountstats.go @@ -69,6 +69,8 @@ type MountStats interface { type MountStatsNFS struct { // The version of statistics provided. StatVersion string + // The mount options of the NFS mount. + Opts map[string]string // The age of the NFS mount. Age time.Duration // Statistics related to byte counters for various operations. @@ -179,11 +181,11 @@ type NFSOperationStats struct { // Number of bytes received for this operation, including RPC headers and payload. BytesReceived uint64 // Duration all requests spent queued for transmission before they were sent. - CumulativeQueueTime time.Duration + CumulativeQueueMilliseconds uint64 // Duration it took to get a reply back after the request was transmitted. - CumulativeTotalResponseTime time.Duration + CumulativeTotalResponseMilliseconds uint64 // Duration from when a request was enqueued to when it was completely handled. - CumulativeTotalRequestTime time.Duration + CumulativeTotalRequestMilliseconds uint64 } // A NFSTransportStats contains statistics for the NFS mount RPC requests and @@ -202,7 +204,7 @@ type NFSTransportStats struct { // spent waiting for connections to the server to be established. ConnectIdleTime uint64 // Duration since the NFS mount last saw any RPC traffic. - IdleTime time.Duration + IdleTimeSeconds uint64 // Number of RPC requests for this mount sent to the NFS server. Sends uint64 // Number of RPC responses for this mount received from the NFS server. @@ -317,6 +319,7 @@ func parseMount(ss []string) (*Mount, error) { func parseMountStatsNFS(s *bufio.Scanner, statVersion string) (*MountStatsNFS, error) { // Field indicators for parsing specific types of data const ( + fieldOpts = "opts:" fieldAge = "age:" fieldBytes = "bytes:" fieldEvents = "events:" @@ -338,6 +341,18 @@ func parseMountStatsNFS(s *bufio.Scanner, statVersion string) (*MountStatsNFS, e } switch ss[0] { + case fieldOpts: + if stats.Opts == nil { + stats.Opts = map[string]string{} + } + for _, opt := range strings.Split(ss[1], ",") { + split := strings.Split(opt, "=") + if len(split) == 2 { + stats.Opts[split[0]] = split[1] + } else { + stats.Opts[opt] = "" + } + } case fieldAge: // Age integer is in seconds d, err := time.ParseDuration(ss[1] + "s") @@ -509,15 +524,15 @@ func parseNFSOperationStats(s *bufio.Scanner) ([]NFSOperationStats, error) { } ops = append(ops, NFSOperationStats{ - Operation: strings.TrimSuffix(ss[0], ":"), - Requests: ns[0], - Transmissions: ns[1], - MajorTimeouts: ns[2], - BytesSent: ns[3], - BytesReceived: ns[4], - CumulativeQueueTime: time.Duration(ns[5]) * time.Millisecond, - CumulativeTotalResponseTime: time.Duration(ns[6]) * time.Millisecond, - CumulativeTotalRequestTime: time.Duration(ns[7]) * time.Millisecond, + Operation: strings.TrimSuffix(ss[0], ":"), + Requests: ns[0], + Transmissions: ns[1], + MajorTimeouts: ns[2], + BytesSent: ns[3], + BytesReceived: ns[4], + CumulativeQueueMilliseconds: ns[5], + CumulativeTotalResponseMilliseconds: ns[6], + CumulativeTotalRequestMilliseconds: ns[7], }) } @@ -593,7 +608,7 @@ func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats Bind: ns[1], Connect: ns[2], ConnectIdleTime: ns[3], - IdleTime: time.Duration(ns[4]) * time.Second, + IdleTimeSeconds: ns[4], Sends: ns[5], Receives: ns[6], BadTransactionIDs: ns[7], diff --git a/vendor/github.com/prometheus/procfs/net_dev.go b/vendor/github.com/prometheus/procfs/net_dev.go index 3f2523371a..a0b7a01196 100644 --- a/vendor/github.com/prometheus/procfs/net_dev.go +++ b/vendor/github.com/prometheus/procfs/net_dev.go @@ -47,23 +47,13 @@ type NetDevLine struct { // are interface names. type NetDev map[string]NetDevLine -// NewNetDev returns kernel/system statistics read from /proc/net/dev. -func NewNetDev() (NetDev, error) { - fs, err := NewFS(DefaultMountPoint) - if err != nil { - return nil, err - } - - return fs.NewNetDev() -} - -// NewNetDev returns kernel/system statistics read from /proc/net/dev. -func (fs FS) NewNetDev() (NetDev, error) { - return newNetDev(fs.Path("net/dev")) +// NetDev returns kernel/system statistics read from /proc/net/dev. +func (fs FS) NetDev() (NetDev, error) { + return newNetDev(fs.proc.Path("net/dev")) } -// NewNetDev returns kernel/system statistics read from /proc/[pid]/net/dev. -func (p Proc) NewNetDev() (NetDev, error) { +// NetDev returns kernel/system statistics read from /proc/[pid]/net/dev. +func (p Proc) NetDev() (NetDev, error) { return newNetDev(p.path("net/dev")) } @@ -75,7 +65,7 @@ func newNetDev(file string) (NetDev, error) { } defer f.Close() - nd := NetDev{} + netDev := NetDev{} s := bufio.NewScanner(f) for n := 0; s.Scan(); n++ { // Skip the 2 header lines. @@ -83,20 +73,20 @@ func newNetDev(file string) (NetDev, error) { continue } - line, err := nd.parseLine(s.Text()) + line, err := netDev.parseLine(s.Text()) if err != nil { - return nd, err + return netDev, err } - nd[line.Name] = *line + netDev[line.Name] = *line } - return nd, s.Err() + return netDev, s.Err() } // parseLine parses a single line from the /proc/net/dev file. Header lines // must be filtered prior to calling this method. -func (nd NetDev) parseLine(rawLine string) (*NetDevLine, error) { +func (netDev NetDev) parseLine(rawLine string) (*NetDevLine, error) { parts := strings.SplitN(rawLine, ":", 2) if len(parts) != 2 { return nil, errors.New("invalid net/dev line, missing colon") @@ -185,11 +175,11 @@ func (nd NetDev) parseLine(rawLine string) (*NetDevLine, error) { // Total aggregates the values across interfaces and returns a new NetDevLine. // The Name field will be a sorted comma separated list of interface names. -func (nd NetDev) Total() NetDevLine { +func (netDev NetDev) Total() NetDevLine { total := NetDevLine{} - names := make([]string, 0, len(nd)) - for _, ifc := range nd { + names := make([]string, 0, len(netDev)) + for _, ifc := range netDev { names = append(names, ifc.Name) total.RxBytes += ifc.RxBytes total.RxPackets += ifc.RxPackets diff --git a/vendor/github.com/prometheus/procfs/net_unix.go b/vendor/github.com/prometheus/procfs/net_unix.go new file mode 100644 index 0000000000..240340a83a --- /dev/null +++ b/vendor/github.com/prometheus/procfs/net_unix.go @@ -0,0 +1,275 @@ +// Copyright 2018 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package procfs + +import ( + "bufio" + "errors" + "fmt" + "io" + "os" + "strconv" + "strings" +) + +// For the proc file format details, +// see https://elixir.bootlin.com/linux/v4.17/source/net/unix/af_unix.c#L2815 +// and https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/net.h#L48. + +const ( + netUnixKernelPtrIdx = iota + netUnixRefCountIdx + _ + netUnixFlagsIdx + netUnixTypeIdx + netUnixStateIdx + netUnixInodeIdx + + // Inode and Path are optional. + netUnixStaticFieldsCnt = 6 +) + +const ( + netUnixTypeStream = 1 + netUnixTypeDgram = 2 + netUnixTypeSeqpacket = 5 + + netUnixFlagListen = 1 << 16 + + netUnixStateUnconnected = 1 + netUnixStateConnecting = 2 + netUnixStateConnected = 3 + netUnixStateDisconnected = 4 +) + +var errInvalidKernelPtrFmt = errors.New("Invalid Num(the kernel table slot number) format") + +// NetUnixType is the type of the type field. +type NetUnixType uint64 + +// NetUnixFlags is the type of the flags field. +type NetUnixFlags uint64 + +// NetUnixState is the type of the state field. +type NetUnixState uint64 + +// NetUnixLine represents a line of /proc/net/unix. +type NetUnixLine struct { + KernelPtr string + RefCount uint64 + Protocol uint64 + Flags NetUnixFlags + Type NetUnixType + State NetUnixState + Inode uint64 + Path string +} + +// NetUnix holds the data read from /proc/net/unix. +type NetUnix struct { + Rows []*NetUnixLine +} + +// NewNetUnix returns data read from /proc/net/unix. +func NewNetUnix() (*NetUnix, error) { + fs, err := NewFS(DefaultMountPoint) + if err != nil { + return nil, err + } + + return fs.NewNetUnix() +} + +// NewNetUnix returns data read from /proc/net/unix. +func (fs FS) NewNetUnix() (*NetUnix, error) { + return NewNetUnixByPath(fs.proc.Path("net/unix")) +} + +// NewNetUnixByPath returns data read from /proc/net/unix by file path. +// It might returns an error with partial parsed data, if an error occur after some data parsed. +func NewNetUnixByPath(path string) (*NetUnix, error) { + f, err := os.Open(path) + if err != nil { + return nil, err + } + defer f.Close() + return NewNetUnixByReader(f) +} + +// NewNetUnixByReader returns data read from /proc/net/unix by a reader. +// It might returns an error with partial parsed data, if an error occur after some data parsed. +func NewNetUnixByReader(reader io.Reader) (*NetUnix, error) { + nu := &NetUnix{ + Rows: make([]*NetUnixLine, 0, 32), + } + scanner := bufio.NewScanner(reader) + // Omit the header line. + scanner.Scan() + header := scanner.Text() + // From the man page of proc(5), it does not contain an Inode field, + // but in actually it exists. + // This code works for both cases. + hasInode := strings.Contains(header, "Inode") + + minFieldsCnt := netUnixStaticFieldsCnt + if hasInode { + minFieldsCnt++ + } + for scanner.Scan() { + line := scanner.Text() + item, err := nu.parseLine(line, hasInode, minFieldsCnt) + if err != nil { + return nu, err + } + nu.Rows = append(nu.Rows, item) + } + + return nu, scanner.Err() +} + +func (u *NetUnix) parseLine(line string, hasInode bool, minFieldsCnt int) (*NetUnixLine, error) { + fields := strings.Fields(line) + fieldsLen := len(fields) + if fieldsLen < minFieldsCnt { + return nil, fmt.Errorf( + "Parse Unix domain failed: expect at least %d fields but got %d", + minFieldsCnt, fieldsLen) + } + kernelPtr, err := u.parseKernelPtr(fields[netUnixKernelPtrIdx]) + if err != nil { + return nil, fmt.Errorf("Parse Unix domain num(%s) failed: %s", fields[netUnixKernelPtrIdx], err) + } + users, err := u.parseUsers(fields[netUnixRefCountIdx]) + if err != nil { + return nil, fmt.Errorf("Parse Unix domain ref count(%s) failed: %s", fields[netUnixRefCountIdx], err) + } + flags, err := u.parseFlags(fields[netUnixFlagsIdx]) + if err != nil { + return nil, fmt.Errorf("Parse Unix domain flags(%s) failed: %s", fields[netUnixFlagsIdx], err) + } + typ, err := u.parseType(fields[netUnixTypeIdx]) + if err != nil { + return nil, fmt.Errorf("Parse Unix domain type(%s) failed: %s", fields[netUnixTypeIdx], err) + } + state, err := u.parseState(fields[netUnixStateIdx]) + if err != nil { + return nil, fmt.Errorf("Parse Unix domain state(%s) failed: %s", fields[netUnixStateIdx], err) + } + var inode uint64 + if hasInode { + inodeStr := fields[netUnixInodeIdx] + inode, err = u.parseInode(inodeStr) + if err != nil { + return nil, fmt.Errorf("Parse Unix domain inode(%s) failed: %s", inodeStr, err) + } + } + + nuLine := &NetUnixLine{ + KernelPtr: kernelPtr, + RefCount: users, + Type: typ, + Flags: flags, + State: state, + Inode: inode, + } + + // Path field is optional. + if fieldsLen > minFieldsCnt { + pathIdx := netUnixInodeIdx + 1 + if !hasInode { + pathIdx-- + } + nuLine.Path = fields[pathIdx] + } + + return nuLine, nil +} + +func (u NetUnix) parseKernelPtr(str string) (string, error) { + if !strings.HasSuffix(str, ":") { + return "", errInvalidKernelPtrFmt + } + return str[:len(str)-1], nil +} + +func (u NetUnix) parseUsers(hexStr string) (uint64, error) { + return strconv.ParseUint(hexStr, 16, 32) +} + +func (u NetUnix) parseProtocol(hexStr string) (uint64, error) { + return strconv.ParseUint(hexStr, 16, 32) +} + +func (u NetUnix) parseType(hexStr string) (NetUnixType, error) { + typ, err := strconv.ParseUint(hexStr, 16, 16) + if err != nil { + return 0, err + } + return NetUnixType(typ), nil +} + +func (u NetUnix) parseFlags(hexStr string) (NetUnixFlags, error) { + flags, err := strconv.ParseUint(hexStr, 16, 32) + if err != nil { + return 0, err + } + return NetUnixFlags(flags), nil +} + +func (u NetUnix) parseState(hexStr string) (NetUnixState, error) { + st, err := strconv.ParseInt(hexStr, 16, 8) + if err != nil { + return 0, err + } + return NetUnixState(st), nil +} + +func (u NetUnix) parseInode(inodeStr string) (uint64, error) { + return strconv.ParseUint(inodeStr, 10, 64) +} + +func (t NetUnixType) String() string { + switch t { + case netUnixTypeStream: + return "stream" + case netUnixTypeDgram: + return "dgram" + case netUnixTypeSeqpacket: + return "seqpacket" + } + return "unknown" +} + +func (f NetUnixFlags) String() string { + switch f { + case netUnixFlagListen: + return "listen" + default: + return "default" + } +} + +func (s NetUnixState) String() string { + switch s { + case netUnixStateUnconnected: + return "unconnected" + case netUnixStateConnecting: + return "connecting" + case netUnixStateConnected: + return "connected" + case netUnixStateDisconnected: + return "disconnected" + } + return "unknown" +} diff --git a/vendor/github.com/prometheus/procfs/nfs/nfs.go b/vendor/github.com/prometheus/procfs/nfs/nfs.go deleted file mode 100644 index 651bf68195..0000000000 --- a/vendor/github.com/prometheus/procfs/nfs/nfs.go +++ /dev/null @@ -1,263 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package nfs implements parsing of /proc/net/rpc/nfsd. -// Fields are documented in https://www.svennd.be/nfsd-stats-explained-procnetrpcnfsd/ -package nfs - -// ReplyCache models the "rc" line. -type ReplyCache struct { - Hits uint64 - Misses uint64 - NoCache uint64 -} - -// FileHandles models the "fh" line. -type FileHandles struct { - Stale uint64 - TotalLookups uint64 - AnonLookups uint64 - DirNoCache uint64 - NoDirNoCache uint64 -} - -// InputOutput models the "io" line. -type InputOutput struct { - Read uint64 - Write uint64 -} - -// Threads models the "th" line. -type Threads struct { - Threads uint64 - FullCnt uint64 -} - -// ReadAheadCache models the "ra" line. -type ReadAheadCache struct { - CacheSize uint64 - CacheHistogram []uint64 - NotFound uint64 -} - -// Network models the "net" line. -type Network struct { - NetCount uint64 - UDPCount uint64 - TCPCount uint64 - TCPConnect uint64 -} - -// ClientRPC models the nfs "rpc" line. -type ClientRPC struct { - RPCCount uint64 - Retransmissions uint64 - AuthRefreshes uint64 -} - -// ServerRPC models the nfsd "rpc" line. -type ServerRPC struct { - RPCCount uint64 - BadCnt uint64 - BadFmt uint64 - BadAuth uint64 - BadcInt uint64 -} - -// V2Stats models the "proc2" line. -type V2Stats struct { - Null uint64 - GetAttr uint64 - SetAttr uint64 - Root uint64 - Lookup uint64 - ReadLink uint64 - Read uint64 - WrCache uint64 - Write uint64 - Create uint64 - Remove uint64 - Rename uint64 - Link uint64 - SymLink uint64 - MkDir uint64 - RmDir uint64 - ReadDir uint64 - FsStat uint64 -} - -// V3Stats models the "proc3" line. -type V3Stats struct { - Null uint64 - GetAttr uint64 - SetAttr uint64 - Lookup uint64 - Access uint64 - ReadLink uint64 - Read uint64 - Write uint64 - Create uint64 - MkDir uint64 - SymLink uint64 - MkNod uint64 - Remove uint64 - RmDir uint64 - Rename uint64 - Link uint64 - ReadDir uint64 - ReadDirPlus uint64 - FsStat uint64 - FsInfo uint64 - PathConf uint64 - Commit uint64 -} - -// ClientV4Stats models the nfs "proc4" line. -type ClientV4Stats struct { - Null uint64 - Read uint64 - Write uint64 - Commit uint64 - Open uint64 - OpenConfirm uint64 - OpenNoattr uint64 - OpenDowngrade uint64 - Close uint64 - Setattr uint64 - FsInfo uint64 - Renew uint64 - SetClientID uint64 - SetClientIDConfirm uint64 - Lock uint64 - Lockt uint64 - Locku uint64 - Access uint64 - Getattr uint64 - Lookup uint64 - LookupRoot uint64 - Remove uint64 - Rename uint64 - Link uint64 - Symlink uint64 - Create uint64 - Pathconf uint64 - StatFs uint64 - ReadLink uint64 - ReadDir uint64 - ServerCaps uint64 - DelegReturn uint64 - GetACL uint64 - SetACL uint64 - FsLocations uint64 - ReleaseLockowner uint64 - Secinfo uint64 - FsidPresent uint64 - ExchangeID uint64 - CreateSession uint64 - DestroySession uint64 - Sequence uint64 - GetLeaseTime uint64 - ReclaimComplete uint64 - LayoutGet uint64 - GetDeviceInfo uint64 - LayoutCommit uint64 - LayoutReturn uint64 - SecinfoNoName uint64 - TestStateID uint64 - FreeStateID uint64 - GetDeviceList uint64 - BindConnToSession uint64 - DestroyClientID uint64 - Seek uint64 - Allocate uint64 - DeAllocate uint64 - LayoutStats uint64 - Clone uint64 -} - -// ServerV4Stats models the nfsd "proc4" line. -type ServerV4Stats struct { - Null uint64 - Compound uint64 -} - -// V4Ops models the "proc4ops" line: NFSv4 operations -// Variable list, see: -// v4.0 https://tools.ietf.org/html/rfc3010 (38 operations) -// v4.1 https://tools.ietf.org/html/rfc5661 (58 operations) -// v4.2 https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-41 (71 operations) -type V4Ops struct { - //Values uint64 // Variable depending on v4.x sub-version. TODO: Will this always at least include the fields in this struct? - Op0Unused uint64 - Op1Unused uint64 - Op2Future uint64 - Access uint64 - Close uint64 - Commit uint64 - Create uint64 - DelegPurge uint64 - DelegReturn uint64 - GetAttr uint64 - GetFH uint64 - Link uint64 - Lock uint64 - Lockt uint64 - Locku uint64 - Lookup uint64 - LookupRoot uint64 - Nverify uint64 - Open uint64 - OpenAttr uint64 - OpenConfirm uint64 - OpenDgrd uint64 - PutFH uint64 - PutPubFH uint64 - PutRootFH uint64 - Read uint64 - ReadDir uint64 - ReadLink uint64 - Remove uint64 - Rename uint64 - Renew uint64 - RestoreFH uint64 - SaveFH uint64 - SecInfo uint64 - SetAttr uint64 - Verify uint64 - Write uint64 - RelLockOwner uint64 -} - -// ClientRPCStats models all stats from /proc/net/rpc/nfs. -type ClientRPCStats struct { - Network Network - ClientRPC ClientRPC - V2Stats V2Stats - V3Stats V3Stats - ClientV4Stats ClientV4Stats -} - -// ServerRPCStats models all stats from /proc/net/rpc/nfsd. -type ServerRPCStats struct { - ReplyCache ReplyCache - FileHandles FileHandles - InputOutput InputOutput - Threads Threads - ReadAheadCache ReadAheadCache - Network Network - ServerRPC ServerRPC - V2Stats V2Stats - V3Stats V3Stats - ServerV4Stats ServerV4Stats - V4Ops V4Ops -} diff --git a/vendor/github.com/prometheus/procfs/nfs/parse.go b/vendor/github.com/prometheus/procfs/nfs/parse.go deleted file mode 100644 index 95a83cc5bc..0000000000 --- a/vendor/github.com/prometheus/procfs/nfs/parse.go +++ /dev/null @@ -1,317 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package nfs - -import ( - "fmt" -) - -func parseReplyCache(v []uint64) (ReplyCache, error) { - if len(v) != 3 { - return ReplyCache{}, fmt.Errorf("invalid ReplyCache line %q", v) - } - - return ReplyCache{ - Hits: v[0], - Misses: v[1], - NoCache: v[2], - }, nil -} - -func parseFileHandles(v []uint64) (FileHandles, error) { - if len(v) != 5 { - return FileHandles{}, fmt.Errorf("invalid FileHandles, line %q", v) - } - - return FileHandles{ - Stale: v[0], - TotalLookups: v[1], - AnonLookups: v[2], - DirNoCache: v[3], - NoDirNoCache: v[4], - }, nil -} - -func parseInputOutput(v []uint64) (InputOutput, error) { - if len(v) != 2 { - return InputOutput{}, fmt.Errorf("invalid InputOutput line %q", v) - } - - return InputOutput{ - Read: v[0], - Write: v[1], - }, nil -} - -func parseThreads(v []uint64) (Threads, error) { - if len(v) != 2 { - return Threads{}, fmt.Errorf("invalid Threads line %q", v) - } - - return Threads{ - Threads: v[0], - FullCnt: v[1], - }, nil -} - -func parseReadAheadCache(v []uint64) (ReadAheadCache, error) { - if len(v) != 12 { - return ReadAheadCache{}, fmt.Errorf("invalid ReadAheadCache line %q", v) - } - - return ReadAheadCache{ - CacheSize: v[0], - CacheHistogram: v[1:11], - NotFound: v[11], - }, nil -} - -func parseNetwork(v []uint64) (Network, error) { - if len(v) != 4 { - return Network{}, fmt.Errorf("invalid Network line %q", v) - } - - return Network{ - NetCount: v[0], - UDPCount: v[1], - TCPCount: v[2], - TCPConnect: v[3], - }, nil -} - -func parseServerRPC(v []uint64) (ServerRPC, error) { - if len(v) != 5 { - return ServerRPC{}, fmt.Errorf("invalid RPC line %q", v) - } - - return ServerRPC{ - RPCCount: v[0], - BadCnt: v[1], - BadFmt: v[2], - BadAuth: v[3], - BadcInt: v[4], - }, nil -} - -func parseClientRPC(v []uint64) (ClientRPC, error) { - if len(v) != 3 { - return ClientRPC{}, fmt.Errorf("invalid RPC line %q", v) - } - - return ClientRPC{ - RPCCount: v[0], - Retransmissions: v[1], - AuthRefreshes: v[2], - }, nil -} - -func parseV2Stats(v []uint64) (V2Stats, error) { - values := int(v[0]) - if len(v[1:]) != values || values != 18 { - return V2Stats{}, fmt.Errorf("invalid V2Stats line %q", v) - } - - return V2Stats{ - Null: v[1], - GetAttr: v[2], - SetAttr: v[3], - Root: v[4], - Lookup: v[5], - ReadLink: v[6], - Read: v[7], - WrCache: v[8], - Write: v[9], - Create: v[10], - Remove: v[11], - Rename: v[12], - Link: v[13], - SymLink: v[14], - MkDir: v[15], - RmDir: v[16], - ReadDir: v[17], - FsStat: v[18], - }, nil -} - -func parseV3Stats(v []uint64) (V3Stats, error) { - values := int(v[0]) - if len(v[1:]) != values || values != 22 { - return V3Stats{}, fmt.Errorf("invalid V3Stats line %q", v) - } - - return V3Stats{ - Null: v[1], - GetAttr: v[2], - SetAttr: v[3], - Lookup: v[4], - Access: v[5], - ReadLink: v[6], - Read: v[7], - Write: v[8], - Create: v[9], - MkDir: v[10], - SymLink: v[11], - MkNod: v[12], - Remove: v[13], - RmDir: v[14], - Rename: v[15], - Link: v[16], - ReadDir: v[17], - ReadDirPlus: v[18], - FsStat: v[19], - FsInfo: v[20], - PathConf: v[21], - Commit: v[22], - }, nil -} - -func parseClientV4Stats(v []uint64) (ClientV4Stats, error) { - values := int(v[0]) - if len(v[1:]) != values { - return ClientV4Stats{}, fmt.Errorf("invalid ClientV4Stats line %q", v) - } - - // This function currently supports mapping 59 NFS v4 client stats. Older - // kernels may emit fewer stats, so we must detect this and pad out the - // values to match the expected slice size. - if values < 59 { - newValues := make([]uint64, 60) - copy(newValues, v) - v = newValues - } - - return ClientV4Stats{ - Null: v[1], - Read: v[2], - Write: v[3], - Commit: v[4], - Open: v[5], - OpenConfirm: v[6], - OpenNoattr: v[7], - OpenDowngrade: v[8], - Close: v[9], - Setattr: v[10], - FsInfo: v[11], - Renew: v[12], - SetClientID: v[13], - SetClientIDConfirm: v[14], - Lock: v[15], - Lockt: v[16], - Locku: v[17], - Access: v[18], - Getattr: v[19], - Lookup: v[20], - LookupRoot: v[21], - Remove: v[22], - Rename: v[23], - Link: v[24], - Symlink: v[25], - Create: v[26], - Pathconf: v[27], - StatFs: v[28], - ReadLink: v[29], - ReadDir: v[30], - ServerCaps: v[31], - DelegReturn: v[32], - GetACL: v[33], - SetACL: v[34], - FsLocations: v[35], - ReleaseLockowner: v[36], - Secinfo: v[37], - FsidPresent: v[38], - ExchangeID: v[39], - CreateSession: v[40], - DestroySession: v[41], - Sequence: v[42], - GetLeaseTime: v[43], - ReclaimComplete: v[44], - LayoutGet: v[45], - GetDeviceInfo: v[46], - LayoutCommit: v[47], - LayoutReturn: v[48], - SecinfoNoName: v[49], - TestStateID: v[50], - FreeStateID: v[51], - GetDeviceList: v[52], - BindConnToSession: v[53], - DestroyClientID: v[54], - Seek: v[55], - Allocate: v[56], - DeAllocate: v[57], - LayoutStats: v[58], - Clone: v[59], - }, nil -} - -func parseServerV4Stats(v []uint64) (ServerV4Stats, error) { - values := int(v[0]) - if len(v[1:]) != values || values != 2 { - return ServerV4Stats{}, fmt.Errorf("invalid V4Stats line %q", v) - } - - return ServerV4Stats{ - Null: v[1], - Compound: v[2], - }, nil -} - -func parseV4Ops(v []uint64) (V4Ops, error) { - values := int(v[0]) - if len(v[1:]) != values || values < 39 { - return V4Ops{}, fmt.Errorf("invalid V4Ops line %q", v) - } - - stats := V4Ops{ - Op0Unused: v[1], - Op1Unused: v[2], - Op2Future: v[3], - Access: v[4], - Close: v[5], - Commit: v[6], - Create: v[7], - DelegPurge: v[8], - DelegReturn: v[9], - GetAttr: v[10], - GetFH: v[11], - Link: v[12], - Lock: v[13], - Lockt: v[14], - Locku: v[15], - Lookup: v[16], - LookupRoot: v[17], - Nverify: v[18], - Open: v[19], - OpenAttr: v[20], - OpenConfirm: v[21], - OpenDgrd: v[22], - PutFH: v[23], - PutPubFH: v[24], - PutRootFH: v[25], - Read: v[26], - ReadDir: v[27], - ReadLink: v[28], - Remove: v[29], - Rename: v[30], - Renew: v[31], - RestoreFH: v[32], - SaveFH: v[33], - SecInfo: v[34], - SetAttr: v[35], - Verify: v[36], - Write: v[37], - RelLockOwner: v[38], - } - - return stats, nil -} diff --git a/vendor/github.com/prometheus/procfs/nfs/parse_nfs.go b/vendor/github.com/prometheus/procfs/nfs/parse_nfs.go deleted file mode 100644 index c0d3a5ad9b..0000000000 --- a/vendor/github.com/prometheus/procfs/nfs/parse_nfs.go +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package nfs - -import ( - "bufio" - "fmt" - "io" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// ParseClientRPCStats returns stats read from /proc/net/rpc/nfs -func ParseClientRPCStats(r io.Reader) (*ClientRPCStats, error) { - stats := &ClientRPCStats{} - - scanner := bufio.NewScanner(r) - for scanner.Scan() { - line := scanner.Text() - parts := strings.Fields(scanner.Text()) - // require at least - if len(parts) < 2 { - return nil, fmt.Errorf("invalid NFS metric line %q", line) - } - - values, err := util.ParseUint64s(parts[1:]) - if err != nil { - return nil, fmt.Errorf("error parsing NFS metric line: %s", err) - } - - switch metricLine := parts[0]; metricLine { - case "net": - stats.Network, err = parseNetwork(values) - case "rpc": - stats.ClientRPC, err = parseClientRPC(values) - case "proc2": - stats.V2Stats, err = parseV2Stats(values) - case "proc3": - stats.V3Stats, err = parseV3Stats(values) - case "proc4": - stats.ClientV4Stats, err = parseClientV4Stats(values) - default: - return nil, fmt.Errorf("unknown NFS metric line %q", metricLine) - } - if err != nil { - return nil, fmt.Errorf("errors parsing NFS metric line: %s", err) - } - } - - if err := scanner.Err(); err != nil { - return nil, fmt.Errorf("error scanning NFS file: %s", err) - } - - return stats, nil -} diff --git a/vendor/github.com/prometheus/procfs/nfs/parse_nfsd.go b/vendor/github.com/prometheus/procfs/nfs/parse_nfsd.go deleted file mode 100644 index 57bb4a3585..0000000000 --- a/vendor/github.com/prometheus/procfs/nfs/parse_nfsd.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2018 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package nfs - -import ( - "bufio" - "fmt" - "io" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// ParseServerRPCStats returns stats read from /proc/net/rpc/nfsd -func ParseServerRPCStats(r io.Reader) (*ServerRPCStats, error) { - stats := &ServerRPCStats{} - - scanner := bufio.NewScanner(r) - for scanner.Scan() { - line := scanner.Text() - parts := strings.Fields(scanner.Text()) - // require at least - if len(parts) < 2 { - return nil, fmt.Errorf("invalid NFSd metric line %q", line) - } - label := parts[0] - - var values []uint64 - var err error - if label == "th" { - if len(parts) < 3 { - return nil, fmt.Errorf("invalid NFSd th metric line %q", line) - } - values, err = util.ParseUint64s(parts[1:3]) - } else { - values, err = util.ParseUint64s(parts[1:]) - } - if err != nil { - return nil, fmt.Errorf("error parsing NFSd metric line: %s", err) - } - - switch metricLine := parts[0]; metricLine { - case "rc": - stats.ReplyCache, err = parseReplyCache(values) - case "fh": - stats.FileHandles, err = parseFileHandles(values) - case "io": - stats.InputOutput, err = parseInputOutput(values) - case "th": - stats.Threads, err = parseThreads(values) - case "ra": - stats.ReadAheadCache, err = parseReadAheadCache(values) - case "net": - stats.Network, err = parseNetwork(values) - case "rpc": - stats.ServerRPC, err = parseServerRPC(values) - case "proc2": - stats.V2Stats, err = parseV2Stats(values) - case "proc3": - stats.V3Stats, err = parseV3Stats(values) - case "proc4": - stats.ServerV4Stats, err = parseServerV4Stats(values) - case "proc4ops": - stats.V4Ops, err = parseV4Ops(values) - default: - return nil, fmt.Errorf("unknown NFSd metric line %q", metricLine) - } - if err != nil { - return nil, fmt.Errorf("errors parsing NFSd metric line: %s", err) - } - } - - if err := scanner.Err(); err != nil { - return nil, fmt.Errorf("error scanning NFSd file: %s", err) - } - - return stats, nil -} diff --git a/vendor/github.com/prometheus/procfs/proc.go b/vendor/github.com/prometheus/procfs/proc.go index 7cf5b8acf9..41c148d066 100644 --- a/vendor/github.com/prometheus/procfs/proc.go +++ b/vendor/github.com/prometheus/procfs/proc.go @@ -20,6 +20,8 @@ import ( "os" "strconv" "strings" + + "github.com/prometheus/procfs/internal/fs" ) // Proc provides information about a running process. @@ -27,7 +29,7 @@ type Proc struct { // The process ID. PID int - fs FS + fs fs.FS } // Procs represents a list of Proc structs. @@ -52,7 +54,7 @@ func NewProc(pid int) (Proc, error) { if err != nil { return Proc{}, err } - return fs.NewProc(pid) + return fs.Proc(pid) } // AllProcs returns a list of all currently available processes under /proc. @@ -66,28 +68,35 @@ func AllProcs() (Procs, error) { // Self returns a process for the current process. func (fs FS) Self() (Proc, error) { - p, err := os.Readlink(fs.Path("self")) + p, err := os.Readlink(fs.proc.Path("self")) if err != nil { return Proc{}, err } - pid, err := strconv.Atoi(strings.Replace(p, string(fs), "", -1)) + pid, err := strconv.Atoi(strings.Replace(p, string(fs.proc), "", -1)) if err != nil { return Proc{}, err } - return fs.NewProc(pid) + return fs.Proc(pid) } // NewProc returns a process for the given pid. +// +// Deprecated: use fs.Proc() instead func (fs FS) NewProc(pid int) (Proc, error) { - if _, err := os.Stat(fs.Path(strconv.Itoa(pid))); err != nil { + return fs.Proc(pid) +} + +// Proc returns a process for the given pid. +func (fs FS) Proc(pid int) (Proc, error) { + if _, err := os.Stat(fs.proc.Path(strconv.Itoa(pid))); err != nil { return Proc{}, err } - return Proc{PID: pid, fs: fs}, nil + return Proc{PID: pid, fs: fs.proc}, nil } // AllProcs returns a list of all currently available processes. func (fs FS) AllProcs() (Procs, error) { - d, err := os.Open(fs.Path()) + d, err := os.Open(fs.proc.Path()) if err != nil { return Procs{}, err } @@ -104,7 +113,7 @@ func (fs FS) AllProcs() (Procs, error) { if err != nil { continue } - p = append(p, Proc{PID: int(pid), fs: fs}) + p = append(p, Proc{PID: int(pid), fs: fs.proc}) } return p, nil @@ -156,6 +165,26 @@ func (p Proc) Executable() (string, error) { return exe, err } +// Cwd returns the absolute path to the current working directory of the process. +func (p Proc) Cwd() (string, error) { + wd, err := os.Readlink(p.path("cwd")) + if os.IsNotExist(err) { + return "", nil + } + + return wd, err +} + +// RootDir returns the absolute path to the process's root directory (as set by chroot) +func (p Proc) RootDir() (string, error) { + rdir, err := os.Readlink(p.path("root")) + if os.IsNotExist(err) { + return "", nil + } + + return rdir, err +} + // FileDescriptors returns the currently open file descriptors of a process. func (p Proc) FileDescriptors() ([]uintptr, error) { names, err := p.fileDescriptors() @@ -218,6 +247,20 @@ func (p Proc) MountStats() ([]*Mount, error) { return parseMountStats(f) } +// MountInfo retrieves mount information for mount points in a +// process's namespace. +// It supplies information missing in `/proc/self/mounts` and +// fixes various other problems with that file too. +func (p Proc) MountInfo() ([]*MountInfo, error) { + f, err := os.Open(p.path("mountinfo")) + if err != nil { + return nil, err + } + defer f.Close() + + return parseMountInfo(f) +} + func (p Proc) fileDescriptors() ([]string, error) { d, err := os.Open(p.path("fd")) if err != nil { diff --git a/vendor/github.com/prometheus/procfs/proc_environ.go b/vendor/github.com/prometheus/procfs/proc_environ.go new file mode 100644 index 0000000000..7172bb586e --- /dev/null +++ b/vendor/github.com/prometheus/procfs/proc_environ.go @@ -0,0 +1,43 @@ +// Copyright 2019 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package procfs + +import ( + "io/ioutil" + "os" + "strings" +) + +// Environ reads process environments from /proc//environ +func (p Proc) Environ() ([]string, error) { + environments := make([]string, 0) + + f, err := os.Open(p.path("environ")) + if err != nil { + return environments, err + } + defer f.Close() + + data, err := ioutil.ReadAll(f) + if err != nil { + return environments, err + } + + environments = strings.Split(string(data), "\000") + if len(environments) > 0 { + environments = environments[:len(environments)-1] + } + + return environments, nil +} diff --git a/vendor/github.com/prometheus/procfs/proc_io.go b/vendor/github.com/prometheus/procfs/proc_io.go index 0251c83bfe..0ff89b1cef 100644 --- a/vendor/github.com/prometheus/procfs/proc_io.go +++ b/vendor/github.com/prometheus/procfs/proc_io.go @@ -39,8 +39,8 @@ type ProcIO struct { CancelledWriteBytes int64 } -// NewIO creates a new ProcIO instance from a given Proc instance. -func (p Proc) NewIO() (ProcIO, error) { +// IO creates a new ProcIO instance from a given Proc instance. +func (p Proc) IO() (ProcIO, error) { pio := ProcIO{} f, err := os.Open(p.path("io")) diff --git a/vendor/github.com/prometheus/procfs/proc_limits.go b/vendor/github.com/prometheus/procfs/proc_limits.go index f04ba6fda8..91ee24df8b 100644 --- a/vendor/github.com/prometheus/procfs/proc_limits.go +++ b/vendor/github.com/prometheus/procfs/proc_limits.go @@ -78,7 +78,14 @@ var ( ) // NewLimits returns the current soft limits of the process. +// +// Deprecated: use p.Limits() instead func (p Proc) NewLimits() (ProcLimits, error) { + return p.Limits() +} + +// Limits returns the current soft limits of the process. +func (p Proc) Limits() (ProcLimits, error) { f, err := os.Open(p.path("limits")) if err != nil { return ProcLimits{}, err diff --git a/vendor/github.com/prometheus/procfs/proc_ns.go b/vendor/github.com/prometheus/procfs/proc_ns.go index d06c26ebad..c66740ff74 100644 --- a/vendor/github.com/prometheus/procfs/proc_ns.go +++ b/vendor/github.com/prometheus/procfs/proc_ns.go @@ -29,9 +29,9 @@ type Namespace struct { // Namespaces contains all of the namespaces that the process is contained in. type Namespaces map[string]Namespace -// NewNamespaces reads from /proc/[pid/ns/* to get the namespaces of which the +// Namespaces reads from /proc//ns/* to get the namespaces of which the // process is a member. -func (p Proc) NewNamespaces() (Namespaces, error) { +func (p Proc) Namespaces() (Namespaces, error) { d, err := os.Open(p.path("ns")) if err != nil { return nil, err diff --git a/vendor/github.com/prometheus/procfs/proc_psi.go b/vendor/github.com/prometheus/procfs/proc_psi.go new file mode 100644 index 0000000000..46fe266263 --- /dev/null +++ b/vendor/github.com/prometheus/procfs/proc_psi.go @@ -0,0 +1,101 @@ +// Copyright 2019 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package procfs + +// The PSI / pressure interface is described at +// https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/accounting/psi.txt +// Each resource (cpu, io, memory, ...) is exposed as a single file. +// Each file may contain up to two lines, one for "some" pressure and one for "full" pressure. +// Each line contains several averages (over n seconds) and a total in µs. +// +// Example io pressure file: +// > some avg10=0.06 avg60=0.21 avg300=0.99 total=8537362 +// > full avg10=0.00 avg60=0.13 avg300=0.96 total=8183134 + +import ( + "fmt" + "io" + "io/ioutil" + "os" + "strings" +) + +const lineFormat = "avg10=%f avg60=%f avg300=%f total=%d" + +// PSILine is a single line of values as returned by /proc/pressure/* +// The Avg entries are averages over n seconds, as a percentage +// The Total line is in microseconds +type PSILine struct { + Avg10 float64 + Avg60 float64 + Avg300 float64 + Total uint64 +} + +// PSIStats represent pressure stall information from /proc/pressure/* +// Some indicates the share of time in which at least some tasks are stalled +// Full indicates the share of time in which all non-idle tasks are stalled simultaneously +type PSIStats struct { + Some *PSILine + Full *PSILine +} + +// PSIStatsForResource reads pressure stall information for the specified +// resource from /proc/pressure/. At time of writing this can be +// either "cpu", "memory" or "io". +func (fs FS) PSIStatsForResource(resource string) (PSIStats, error) { + file, err := os.Open(fs.proc.Path(fmt.Sprintf("%s/%s", "pressure", resource))) + if err != nil { + return PSIStats{}, fmt.Errorf("psi_stats: unavailable for %s", resource) + } + + defer file.Close() + return parsePSIStats(resource, file) +} + +// parsePSIStats parses the specified file for pressure stall information +func parsePSIStats(resource string, file io.Reader) (PSIStats, error) { + psiStats := PSIStats{} + stats, err := ioutil.ReadAll(file) + if err != nil { + return psiStats, fmt.Errorf("psi_stats: unable to read data for %s", resource) + } + + for _, l := range strings.Split(string(stats), "\n") { + prefix := strings.Split(l, " ")[0] + switch prefix { + case "some": + psi := PSILine{} + _, err := fmt.Sscanf(l, fmt.Sprintf("some %s", lineFormat), &psi.Avg10, &psi.Avg60, &psi.Avg300, &psi.Total) + if err != nil { + return PSIStats{}, err + } + psiStats.Some = &psi + case "full": + psi := PSILine{} + _, err := fmt.Sscanf(l, fmt.Sprintf("full %s", lineFormat), &psi.Avg10, &psi.Avg60, &psi.Avg300, &psi.Total) + if err != nil { + return PSIStats{}, err + } + psiStats.Full = &psi + default: + // If we encounter a line with an unknown prefix, ignore it and move on + // Should new measurement types be added in the future we'll simply ignore them instead + // of erroring on retrieval + continue + } + } + + return psiStats, nil +} diff --git a/vendor/github.com/prometheus/procfs/proc_stat.go b/vendor/github.com/prometheus/procfs/proc_stat.go index 3cf2a9f18f..dbde1fa0d6 100644 --- a/vendor/github.com/prometheus/procfs/proc_stat.go +++ b/vendor/github.com/prometheus/procfs/proc_stat.go @@ -18,6 +18,8 @@ import ( "fmt" "io/ioutil" "os" + + "github.com/prometheus/procfs/internal/fs" ) // Originally, this USER_HZ value was dynamically retrieved via a sysconf call @@ -95,15 +97,22 @@ type ProcStat struct { // in clock ticks. Starttime uint64 // Virtual memory size in bytes. - VSize int + VSize uint // Resident set size in pages. RSS int - fs FS + proc fs.FS } // NewStat returns the current status information of the process. +// +// Deprecated: use p.Stat() instead func (p Proc) NewStat() (ProcStat, error) { + return p.Stat() +} + +// Stat returns the current status information of the process. +func (p Proc) Stat() (ProcStat, error) { f, err := os.Open(p.path("stat")) if err != nil { return ProcStat{}, err @@ -118,7 +127,7 @@ func (p Proc) NewStat() (ProcStat, error) { var ( ignore int - s = ProcStat{PID: p.PID, fs: p.fs} + s = ProcStat{PID: p.PID, proc: p.fs} l = bytes.Index(data, []byte("(")) r = bytes.LastIndex(data, []byte(")")) ) @@ -164,7 +173,7 @@ func (p Proc) NewStat() (ProcStat, error) { } // VirtualMemory returns the virtual memory size in bytes. -func (s ProcStat) VirtualMemory() int { +func (s ProcStat) VirtualMemory() uint { return s.VSize } @@ -175,7 +184,8 @@ func (s ProcStat) ResidentMemory() int { // StartTime returns the unix timestamp of the process in seconds. func (s ProcStat) StartTime() (float64, error) { - stat, err := s.fs.NewStat() + fs := FS{proc: s.proc} + stat, err := fs.Stat() if err != nil { return 0, err } diff --git a/vendor/github.com/prometheus/procfs/proc_status.go b/vendor/github.com/prometheus/procfs/proc_status.go new file mode 100644 index 0000000000..6b4b61f71c --- /dev/null +++ b/vendor/github.com/prometheus/procfs/proc_status.go @@ -0,0 +1,162 @@ +// Copyright 2018 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package procfs + +import ( + "bytes" + "io/ioutil" + "os" + "strconv" + "strings" +) + +// ProcStat provides status information about the process, +// read from /proc/[pid]/stat. +type ProcStatus struct { + // The process ID. + PID int + // The process name. + Name string + + // Peak virtual memory size. + VmPeak uint64 + // Virtual memory size. + VmSize uint64 + // Locked memory size. + VmLck uint64 + // Pinned memory size. + VmPin uint64 + // Peak resident set size. + VmHWM uint64 + // Resident set size (sum of RssAnnon RssFile and RssShmem). + VmRSS uint64 + // Size of resident anonymous memory. + RssAnon uint64 + // Size of resident file mappings. + RssFile uint64 + // Size of resident shared memory. + RssShmem uint64 + // Size of data segments. + VmData uint64 + // Size of stack segments. + VmStk uint64 + // Size of text segments. + VmExe uint64 + // Shared library code size. + VmLib uint64 + // Page table entries size. + VmPTE uint64 + // Size of second-level page tables. + VmPMD uint64 + // Swapped-out virtual memory size by anonymous private. + VmSwap uint64 + // Size of hugetlb memory portions + HugetlbPages uint64 + + // Number of voluntary context switches. + VoluntaryCtxtSwitches uint64 + // Number of involuntary context switches. + NonVoluntaryCtxtSwitches uint64 +} + +// NewStatus returns the current status information of the process. +func (p Proc) NewStatus() (ProcStatus, error) { + f, err := os.Open(p.path("status")) + if err != nil { + return ProcStatus{}, err + } + defer f.Close() + + data, err := ioutil.ReadAll(f) + if err != nil { + return ProcStatus{}, err + } + + s := ProcStatus{PID: p.PID} + + lines := strings.Split(string(data), "\n") + for _, line := range lines { + if !bytes.Contains([]byte(line), []byte(":")) { + continue + } + + kv := strings.SplitN(line, ":", 2) + + // removes spaces + k := string(strings.TrimSpace(kv[0])) + v := string(strings.TrimSpace(kv[1])) + // removes "kB" + v = string(bytes.Trim([]byte(v), " kB")) + + // value to int when possible + // we can skip error check here, 'cause vKBytes is not used when value is a string + vKBytes, _ := strconv.ParseUint(v, 10, 64) + // convert kB to B + vBytes := vKBytes * 1024 + + s.fillStatus(k, v, vKBytes, vBytes) + } + + return s, nil +} + +func (s *ProcStatus) fillStatus(k string, vString string, vUint uint64, vUintBytes uint64) { + switch k { + case "Name": + s.Name = vString + case "VmPeak": + s.VmPeak = vUintBytes + case "VmSize": + s.VmSize = vUintBytes + case "VmLck": + s.VmLck = vUintBytes + case "VmPin": + s.VmPin = vUintBytes + case "VmHWM": + s.VmHWM = vUintBytes + case "VmRSS": + s.VmRSS = vUintBytes + case "RssAnon": + s.RssAnon = vUintBytes + case "RssFile": + s.RssFile = vUintBytes + case "RssShmem": + s.RssShmem = vUintBytes + case "VmData": + s.VmData = vUintBytes + case "VmStk": + s.VmStk = vUintBytes + case "VmExe": + s.VmExe = vUintBytes + case "VmLib": + s.VmLib = vUintBytes + case "VmPTE": + s.VmPTE = vUintBytes + case "VmPMD": + s.VmPMD = vUintBytes + case "VmSwap": + s.VmSwap = vUintBytes + case "HugetlbPages": + s.HugetlbPages = vUintBytes + case "voluntary_ctxt_switches": + s.VoluntaryCtxtSwitches = vUint + case "nonvoluntary_ctxt_switches": + s.NonVoluntaryCtxtSwitches = vUint + } +} + +// TotalCtxtSwitches returns the total context switch. +func (s ProcStatus) TotalCtxtSwitches() uint64 { + return s.VoluntaryCtxtSwitches + s.NonVoluntaryCtxtSwitches +} diff --git a/vendor/github.com/prometheus/procfs/stat.go b/vendor/github.com/prometheus/procfs/stat.go index 61eb6b0e3c..6661ee03a6 100644 --- a/vendor/github.com/prometheus/procfs/stat.go +++ b/vendor/github.com/prometheus/procfs/stat.go @@ -20,6 +20,8 @@ import ( "os" "strconv" "strings" + + "github.com/prometheus/procfs/internal/fs" ) // CPUStat shows how much time the cpu spend in various stages. @@ -78,16 +80,6 @@ type Stat struct { SoftIRQ SoftIRQStat } -// NewStat returns kernel/system statistics read from /proc/stat. -func NewStat() (Stat, error) { - fs, err := NewFS(DefaultMountPoint) - if err != nil { - return Stat{}, err - } - - return fs.NewStat() -} - // Parse a cpu statistics line and returns the CPUStat struct plus the cpu id (or -1 for the overall sum). func parseCPUStat(line string) (CPUStat, int64, error) { cpuStat := CPUStat{} @@ -149,11 +141,31 @@ func parseSoftIRQStat(line string) (SoftIRQStat, uint64, error) { return softIRQStat, total, nil } -// NewStat returns an information about current kernel/system statistics. +// NewStat returns information about current cpu/process statistics. +// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt +// +// Deprecated: use fs.Stat() instead +func NewStat() (Stat, error) { + fs, err := NewFS(fs.DefaultProcMountPoint) + if err != nil { + return Stat{}, err + } + return fs.Stat() +} + +// NewStat returns information about current cpu/process statistics. +// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt +// +// Deprecated: use fs.Stat() instead func (fs FS) NewStat() (Stat, error) { - // See https://www.kernel.org/doc/Documentation/filesystems/proc.txt + return fs.Stat() +} + +// Stat returns information about current cpu/process statistics. +// See https://www.kernel.org/doc/Documentation/filesystems/proc.txt +func (fs FS) Stat() (Stat, error) { - f, err := os.Open(fs.Path("stat")) + f, err := os.Open(fs.proc.Path("stat")) if err != nil { return Stat{}, err } diff --git a/vendor/github.com/prometheus/procfs/ttar b/vendor/github.com/prometheus/procfs/ttar index b0171a12b5..19ef02b8d4 100644 --- a/vendor/github.com/prometheus/procfs/ttar +++ b/vendor/github.com/prometheus/procfs/ttar @@ -86,8 +86,10 @@ Usage: $bname [-C

] -c -f (create archive) $bname [-C ] -x -f (extract archive) Options: - -C (change directory) - -v (verbose) + -C (change directory) + -v (verbose) + --recursive-unlink (recursively delete existing directory if path + collides with file or directory to extract) Example: Change to sysfs directory, create ttar file from fixtures directory $bname -C sysfs -c -f sysfs/fixtures.ttar fixtures/ @@ -111,8 +113,9 @@ function set_cmd { } unset VERBOSE +unset RECURSIVE_UNLINK -while getopts :cf:htxvC: opt; do +while getopts :cf:-:htxvC: opt; do case $opt in c) set_cmd "create" @@ -136,6 +139,18 @@ while getopts :cf:htxvC: opt; do C) CDIR=$OPTARG ;; + -) + case $OPTARG in + recursive-unlink) + RECURSIVE_UNLINK="yes" + ;; + *) + echo -e "Error: invalid option -$OPTARG" + echo + usage 1 + ;; + esac + ;; *) echo >&2 "ERROR: invalid option -$OPTARG" echo @@ -212,16 +227,16 @@ function extract { local eof_without_newline if [ "$size" -gt 0 ]; then if [[ "$line" =~ [^\\]EOF ]]; then - # An EOF not preceeded by a backslash indicates that the line + # An EOF not preceded by a backslash indicates that the line # does not end with a newline eof_without_newline=1 else eof_without_newline=0 fi # Replace NULLBYTE with null byte if at beginning of line - # Replace NULLBYTE with null byte unless preceeded by backslash + # Replace NULLBYTE with null byte unless preceded by backslash # Remove one backslash in front of NULLBYTE (if any) - # Remove EOF unless preceeded by backslash + # Remove EOF unless preceded by backslash # Remove one backslash in front of EOF if [ $USE_PYTHON -eq 1 ]; then echo -n "$line" | python -c "$PYTHON_EXTRACT_FILTER" >> "$path" @@ -245,7 +260,16 @@ function extract { fi if [[ $line =~ ^Path:\ (.*)$ ]]; then path=${BASH_REMATCH[1]} - if [ -e "$path" ] || [ -L "$path" ]; then + if [ -L "$path" ]; then + rm "$path" + elif [ -d "$path" ]; then + if [ "${RECURSIVE_UNLINK:-}" == "yes" ]; then + rm -r "$path" + else + # Safe because symlinks to directories are dealt with above + rmdir "$path" + fi + elif [ -e "$path" ]; then rm "$path" fi elif [[ $line =~ ^Lines:\ (.*)$ ]]; then @@ -338,8 +362,8 @@ function _create { else < "$file" \ sed 's/EOF/\\EOF/g; - s/NULLBYTE/\\NULLBYTE/g; - s/\x0/NULLBYTE/g; + s/NULLBYTE/\\NULLBYTE/g; + s/\x0/NULLBYTE/g; ' fi if [[ "$eof_without_newline" -eq 1 ]]; then diff --git a/vendor/github.com/prometheus/procfs/xfrm.go b/vendor/github.com/prometheus/procfs/xfrm.go index 8f1508f0fd..30aa417d53 100644 --- a/vendor/github.com/prometheus/procfs/xfrm.go +++ b/vendor/github.com/prometheus/procfs/xfrm.go @@ -97,7 +97,7 @@ func NewXfrmStat() (XfrmStat, error) { // NewXfrmStat reads the xfrm_stat statistics from the 'proc' filesystem. func (fs FS) NewXfrmStat() (XfrmStat, error) { - file, err := os.Open(fs.Path("net/xfrm_stat")) + file, err := os.Open(fs.proc.Path("net/xfrm_stat")) if err != nil { return XfrmStat{}, err } diff --git a/vendor/github.com/prometheus/procfs/xfs/parse.go b/vendor/github.com/prometheus/procfs/xfs/parse.go deleted file mode 100644 index 2bc0ef3427..0000000000 --- a/vendor/github.com/prometheus/procfs/xfs/parse.go +++ /dev/null @@ -1,330 +0,0 @@ -// Copyright 2017 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package xfs - -import ( - "bufio" - "fmt" - "io" - "strings" - - "github.com/prometheus/procfs/internal/util" -) - -// ParseStats parses a Stats from an input io.Reader, using the format -// found in /proc/fs/xfs/stat. -func ParseStats(r io.Reader) (*Stats, error) { - const ( - // Fields parsed into stats structures. - fieldExtentAlloc = "extent_alloc" - fieldAbt = "abt" - fieldBlkMap = "blk_map" - fieldBmbt = "bmbt" - fieldDir = "dir" - fieldTrans = "trans" - fieldIg = "ig" - fieldLog = "log" - fieldRw = "rw" - fieldAttr = "attr" - fieldIcluster = "icluster" - fieldVnodes = "vnodes" - fieldBuf = "buf" - fieldXpc = "xpc" - - // Unimplemented at this time due to lack of documentation. - fieldPushAil = "push_ail" - fieldXstrat = "xstrat" - fieldAbtb2 = "abtb2" - fieldAbtc2 = "abtc2" - fieldBmbt2 = "bmbt2" - fieldIbt2 = "ibt2" - fieldFibt2 = "fibt2" - fieldQm = "qm" - fieldDebug = "debug" - ) - - var xfss Stats - - s := bufio.NewScanner(r) - for s.Scan() { - // Expect at least a string label and a single integer value, ex: - // - abt 0 - // - rw 1 2 - ss := strings.Fields(string(s.Bytes())) - if len(ss) < 2 { - continue - } - label := ss[0] - - // Extended precision counters are uint64 values. - if label == fieldXpc { - us, err := util.ParseUint64s(ss[1:]) - if err != nil { - return nil, err - } - - xfss.ExtendedPrecision, err = extendedPrecisionStats(us) - if err != nil { - return nil, err - } - - continue - } - - // All other counters are uint32 values. - us, err := util.ParseUint32s(ss[1:]) - if err != nil { - return nil, err - } - - switch label { - case fieldExtentAlloc: - xfss.ExtentAllocation, err = extentAllocationStats(us) - case fieldAbt: - xfss.AllocationBTree, err = btreeStats(us) - case fieldBlkMap: - xfss.BlockMapping, err = blockMappingStats(us) - case fieldBmbt: - xfss.BlockMapBTree, err = btreeStats(us) - case fieldDir: - xfss.DirectoryOperation, err = directoryOperationStats(us) - case fieldTrans: - xfss.Transaction, err = transactionStats(us) - case fieldIg: - xfss.InodeOperation, err = inodeOperationStats(us) - case fieldLog: - xfss.LogOperation, err = logOperationStats(us) - case fieldRw: - xfss.ReadWrite, err = readWriteStats(us) - case fieldAttr: - xfss.AttributeOperation, err = attributeOperationStats(us) - case fieldIcluster: - xfss.InodeClustering, err = inodeClusteringStats(us) - case fieldVnodes: - xfss.Vnode, err = vnodeStats(us) - case fieldBuf: - xfss.Buffer, err = bufferStats(us) - } - if err != nil { - return nil, err - } - } - - return &xfss, s.Err() -} - -// extentAllocationStats builds an ExtentAllocationStats from a slice of uint32s. -func extentAllocationStats(us []uint32) (ExtentAllocationStats, error) { - if l := len(us); l != 4 { - return ExtentAllocationStats{}, fmt.Errorf("incorrect number of values for XFS extent allocation stats: %d", l) - } - - return ExtentAllocationStats{ - ExtentsAllocated: us[0], - BlocksAllocated: us[1], - ExtentsFreed: us[2], - BlocksFreed: us[3], - }, nil -} - -// btreeStats builds a BTreeStats from a slice of uint32s. -func btreeStats(us []uint32) (BTreeStats, error) { - if l := len(us); l != 4 { - return BTreeStats{}, fmt.Errorf("incorrect number of values for XFS btree stats: %d", l) - } - - return BTreeStats{ - Lookups: us[0], - Compares: us[1], - RecordsInserted: us[2], - RecordsDeleted: us[3], - }, nil -} - -// BlockMappingStat builds a BlockMappingStats from a slice of uint32s. -func blockMappingStats(us []uint32) (BlockMappingStats, error) { - if l := len(us); l != 7 { - return BlockMappingStats{}, fmt.Errorf("incorrect number of values for XFS block mapping stats: %d", l) - } - - return BlockMappingStats{ - Reads: us[0], - Writes: us[1], - Unmaps: us[2], - ExtentListInsertions: us[3], - ExtentListDeletions: us[4], - ExtentListLookups: us[5], - ExtentListCompares: us[6], - }, nil -} - -// DirectoryOperationStats builds a DirectoryOperationStats from a slice of uint32s. -func directoryOperationStats(us []uint32) (DirectoryOperationStats, error) { - if l := len(us); l != 4 { - return DirectoryOperationStats{}, fmt.Errorf("incorrect number of values for XFS directory operation stats: %d", l) - } - - return DirectoryOperationStats{ - Lookups: us[0], - Creates: us[1], - Removes: us[2], - Getdents: us[3], - }, nil -} - -// TransactionStats builds a TransactionStats from a slice of uint32s. -func transactionStats(us []uint32) (TransactionStats, error) { - if l := len(us); l != 3 { - return TransactionStats{}, fmt.Errorf("incorrect number of values for XFS transaction stats: %d", l) - } - - return TransactionStats{ - Sync: us[0], - Async: us[1], - Empty: us[2], - }, nil -} - -// InodeOperationStats builds an InodeOperationStats from a slice of uint32s. -func inodeOperationStats(us []uint32) (InodeOperationStats, error) { - if l := len(us); l != 7 { - return InodeOperationStats{}, fmt.Errorf("incorrect number of values for XFS inode operation stats: %d", l) - } - - return InodeOperationStats{ - Attempts: us[0], - Found: us[1], - Recycle: us[2], - Missed: us[3], - Duplicate: us[4], - Reclaims: us[5], - AttributeChange: us[6], - }, nil -} - -// LogOperationStats builds a LogOperationStats from a slice of uint32s. -func logOperationStats(us []uint32) (LogOperationStats, error) { - if l := len(us); l != 5 { - return LogOperationStats{}, fmt.Errorf("incorrect number of values for XFS log operation stats: %d", l) - } - - return LogOperationStats{ - Writes: us[0], - Blocks: us[1], - NoInternalBuffers: us[2], - Force: us[3], - ForceSleep: us[4], - }, nil -} - -// ReadWriteStats builds a ReadWriteStats from a slice of uint32s. -func readWriteStats(us []uint32) (ReadWriteStats, error) { - if l := len(us); l != 2 { - return ReadWriteStats{}, fmt.Errorf("incorrect number of values for XFS read write stats: %d", l) - } - - return ReadWriteStats{ - Read: us[0], - Write: us[1], - }, nil -} - -// AttributeOperationStats builds an AttributeOperationStats from a slice of uint32s. -func attributeOperationStats(us []uint32) (AttributeOperationStats, error) { - if l := len(us); l != 4 { - return AttributeOperationStats{}, fmt.Errorf("incorrect number of values for XFS attribute operation stats: %d", l) - } - - return AttributeOperationStats{ - Get: us[0], - Set: us[1], - Remove: us[2], - List: us[3], - }, nil -} - -// InodeClusteringStats builds an InodeClusteringStats from a slice of uint32s. -func inodeClusteringStats(us []uint32) (InodeClusteringStats, error) { - if l := len(us); l != 3 { - return InodeClusteringStats{}, fmt.Errorf("incorrect number of values for XFS inode clustering stats: %d", l) - } - - return InodeClusteringStats{ - Iflush: us[0], - Flush: us[1], - FlushInode: us[2], - }, nil -} - -// VnodeStats builds a VnodeStats from a slice of uint32s. -func vnodeStats(us []uint32) (VnodeStats, error) { - // The attribute "Free" appears to not be available on older XFS - // stats versions. Therefore, 7 or 8 elements may appear in - // this slice. - l := len(us) - if l != 7 && l != 8 { - return VnodeStats{}, fmt.Errorf("incorrect number of values for XFS vnode stats: %d", l) - } - - s := VnodeStats{ - Active: us[0], - Allocate: us[1], - Get: us[2], - Hold: us[3], - Release: us[4], - Reclaim: us[5], - Remove: us[6], - } - - // Skip adding free, unless it is present. The zero value will - // be used in place of an actual count. - if l == 7 { - return s, nil - } - - s.Free = us[7] - return s, nil -} - -// BufferStats builds a BufferStats from a slice of uint32s. -func bufferStats(us []uint32) (BufferStats, error) { - if l := len(us); l != 9 { - return BufferStats{}, fmt.Errorf("incorrect number of values for XFS buffer stats: %d", l) - } - - return BufferStats{ - Get: us[0], - Create: us[1], - GetLocked: us[2], - GetLockedWaited: us[3], - BusyLocked: us[4], - MissLocked: us[5], - PageRetries: us[6], - PageFound: us[7], - GetRead: us[8], - }, nil -} - -// ExtendedPrecisionStats builds an ExtendedPrecisionStats from a slice of uint32s. -func extendedPrecisionStats(us []uint64) (ExtendedPrecisionStats, error) { - if l := len(us); l != 3 { - return ExtendedPrecisionStats{}, fmt.Errorf("incorrect number of values for XFS extended precision stats: %d", l) - } - - return ExtendedPrecisionStats{ - FlushBytes: us[0], - WriteBytes: us[1], - ReadBytes: us[2], - }, nil -} diff --git a/vendor/github.com/prometheus/procfs/xfs/xfs.go b/vendor/github.com/prometheus/procfs/xfs/xfs.go deleted file mode 100644 index d86794b7ca..0000000000 --- a/vendor/github.com/prometheus/procfs/xfs/xfs.go +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2017 The Prometheus Authors -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package xfs provides access to statistics exposed by the XFS filesystem. -package xfs - -// Stats contains XFS filesystem runtime statistics, parsed from -// /proc/fs/xfs/stat. -// -// The names and meanings of each statistic were taken from -// http://xfs.org/index.php/Runtime_Stats and xfs_stats.h in the Linux -// kernel source. Most counters are uint32s (same data types used in -// xfs_stats.h), but some of the "extended precision stats" are uint64s. -type Stats struct { - // The name of the filesystem used to source these statistics. - // If empty, this indicates aggregated statistics for all XFS - // filesystems on the host. - Name string - - ExtentAllocation ExtentAllocationStats - AllocationBTree BTreeStats - BlockMapping BlockMappingStats - BlockMapBTree BTreeStats - DirectoryOperation DirectoryOperationStats - Transaction TransactionStats - InodeOperation InodeOperationStats - LogOperation LogOperationStats - ReadWrite ReadWriteStats - AttributeOperation AttributeOperationStats - InodeClustering InodeClusteringStats - Vnode VnodeStats - Buffer BufferStats - ExtendedPrecision ExtendedPrecisionStats -} - -// ExtentAllocationStats contains statistics regarding XFS extent allocations. -type ExtentAllocationStats struct { - ExtentsAllocated uint32 - BlocksAllocated uint32 - ExtentsFreed uint32 - BlocksFreed uint32 -} - -// BTreeStats contains statistics regarding an XFS internal B-tree. -type BTreeStats struct { - Lookups uint32 - Compares uint32 - RecordsInserted uint32 - RecordsDeleted uint32 -} - -// BlockMappingStats contains statistics regarding XFS block maps. -type BlockMappingStats struct { - Reads uint32 - Writes uint32 - Unmaps uint32 - ExtentListInsertions uint32 - ExtentListDeletions uint32 - ExtentListLookups uint32 - ExtentListCompares uint32 -} - -// DirectoryOperationStats contains statistics regarding XFS directory entries. -type DirectoryOperationStats struct { - Lookups uint32 - Creates uint32 - Removes uint32 - Getdents uint32 -} - -// TransactionStats contains statistics regarding XFS metadata transactions. -type TransactionStats struct { - Sync uint32 - Async uint32 - Empty uint32 -} - -// InodeOperationStats contains statistics regarding XFS inode operations. -type InodeOperationStats struct { - Attempts uint32 - Found uint32 - Recycle uint32 - Missed uint32 - Duplicate uint32 - Reclaims uint32 - AttributeChange uint32 -} - -// LogOperationStats contains statistics regarding the XFS log buffer. -type LogOperationStats struct { - Writes uint32 - Blocks uint32 - NoInternalBuffers uint32 - Force uint32 - ForceSleep uint32 -} - -// ReadWriteStats contains statistics regarding the number of read and write -// system calls for XFS filesystems. -type ReadWriteStats struct { - Read uint32 - Write uint32 -} - -// AttributeOperationStats contains statistics regarding manipulation of -// XFS extended file attributes. -type AttributeOperationStats struct { - Get uint32 - Set uint32 - Remove uint32 - List uint32 -} - -// InodeClusteringStats contains statistics regarding XFS inode clustering -// operations. -type InodeClusteringStats struct { - Iflush uint32 - Flush uint32 - FlushInode uint32 -} - -// VnodeStats contains statistics regarding XFS vnode operations. -type VnodeStats struct { - Active uint32 - Allocate uint32 - Get uint32 - Hold uint32 - Release uint32 - Reclaim uint32 - Remove uint32 - Free uint32 -} - -// BufferStats contains statistics regarding XFS read/write I/O buffers. -type BufferStats struct { - Get uint32 - Create uint32 - GetLocked uint32 - GetLockedWaited uint32 - BusyLocked uint32 - MissLocked uint32 - PageRetries uint32 - PageFound uint32 - GetRead uint32 -} - -// ExtendedPrecisionStats contains high precision counters used to track the -// total number of bytes read, written, or flushed, during XFS operations. -type ExtendedPrecisionStats struct { - FlushBytes uint64 - WriteBytes uint64 - ReadBytes uint64 -} diff --git a/vendor/github.com/spf13/cobra/.gitignore b/vendor/github.com/spf13/cobra/.gitignore index 1b8c7c2611..3b053c59ec 100644 --- a/vendor/github.com/spf13/cobra/.gitignore +++ b/vendor/github.com/spf13/cobra/.gitignore @@ -34,3 +34,5 @@ tags *.exe cobra.test + +.idea/* diff --git a/vendor/github.com/spf13/cobra/.travis.yml b/vendor/github.com/spf13/cobra/.travis.yml index 5afcb20961..38b85f499c 100644 --- a/vendor/github.com/spf13/cobra/.travis.yml +++ b/vendor/github.com/spf13/cobra/.travis.yml @@ -1,21 +1,31 @@ language: go +stages: + - diff + - test + +go: + - 1.10.x + - 1.11.x + - 1.12.x + - tip + matrix: - include: - - go: 1.9.4 - - go: 1.10.0 - - go: tip allow_failures: - go: tip + include: + - stage: diff + go: 1.12.x + script: diff -u <(echo -n) <(gofmt -d -s .) before_install: - mkdir -p bin - - curl -Lso bin/shellcheck https://github.com/caarlos0/shellcheck-docker/releases/download/v0.4.3/shellcheck + - curl -Lso bin/shellcheck https://github.com/caarlos0/shellcheck-docker/releases/download/v0.6.0/shellcheck - chmod +x bin/shellcheck + - go get -u github.com/kyoh86/richgo script: - - PATH=$PATH:$PWD/bin go test -v ./... + - PATH=$PATH:$PWD/bin richgo test -v ./... - go build - - diff -u <(echo -n) <(gofmt -d -s .) - if [ -z $NOVET ]; then - diff -u <(echo -n) <(go tool vet . 2>&1 | grep -vE 'ExampleCommand|bash_completions.*Fprint'); + diff -u <(echo -n) <(go vet . 2>&1 | grep -vE 'ExampleCommand|bash_completions.*Fprint'); fi diff --git a/vendor/github.com/spf13/cobra/README.md b/vendor/github.com/spf13/cobra/README.md index 851fcc087c..60c5a425bc 100644 --- a/vendor/github.com/spf13/cobra/README.md +++ b/vendor/github.com/spf13/cobra/README.md @@ -2,25 +2,29 @@ Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files. -Many of the most widely used Go projects are built using Cobra including: - -* [Kubernetes](http://kubernetes.io/) -* [Hugo](http://gohugo.io) -* [rkt](https://github.com/coreos/rkt) -* [etcd](https://github.com/coreos/etcd) -* [Moby (former Docker)](https://github.com/moby/moby) -* [Docker (distribution)](https://github.com/docker/distribution) -* [OpenShift](https://www.openshift.com/) -* [Delve](https://github.com/derekparker/delve) -* [GopherJS](http://www.gopherjs.org/) -* [CockroachDB](http://www.cockroachlabs.com/) -* [Bleve](http://www.blevesearch.com/) -* [ProjectAtomic (enterprise)](http://www.projectatomic.io/) -* [GiantSwarm's swarm](https://github.com/giantswarm/cli) -* [Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack) -* [rclone](http://rclone.org/) -* [nehm](https://github.com/bogem/nehm) -* [Pouch](https://github.com/alibaba/pouch) +Many of the most widely used Go projects are built using Cobra, such as: +[Kubernetes](http://kubernetes.io/), +[Hugo](http://gohugo.io), +[rkt](https://github.com/coreos/rkt), +[etcd](https://github.com/coreos/etcd), +[Moby (former Docker)](https://github.com/moby/moby), +[Docker (distribution)](https://github.com/docker/distribution), +[OpenShift](https://www.openshift.com/), +[Delve](https://github.com/derekparker/delve), +[GopherJS](http://www.gopherjs.org/), +[CockroachDB](http://www.cockroachlabs.com/), +[Bleve](http://www.blevesearch.com/), +[ProjectAtomic (enterprise)](http://www.projectatomic.io/), +[Giant Swarm's gsctl](https://github.com/giantswarm/gsctl), +[Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack), +[rclone](http://rclone.org/), +[nehm](https://github.com/bogem/nehm), +[Pouch](https://github.com/alibaba/pouch), +[Istio](https://istio.io), +[Prototool](https://github.com/uber/prototool), +[mattermost-server](https://github.com/mattermost/mattermost-server), +[Gardener](https://github.com/gardener/gardenctl), +etc. [![Build Status](https://travis-ci.org/spf13/cobra.svg "Travis CI status")](https://travis-ci.org/spf13/cobra) [![CircleCI status](https://circleci.com/gh/spf13/cobra.png?circle-token=:circle-token "CircleCI status")](https://circleci.com/gh/spf13/cobra) @@ -45,6 +49,7 @@ Many of the most widely used Go projects are built using Cobra including: * [Suggestions when "unknown command" happens](#suggestions-when-unknown-command-happens) * [Generating documentation for your command](#generating-documentation-for-your-command) * [Generating bash completions](#generating-bash-completions) + * [Generating zsh completions](#generating-zsh-completions) - [Contributing](#contributing) - [License](#license) @@ -152,9 +157,6 @@ In a Cobra app, typically the main.go file is very bare. It serves one purpose: package main import ( - "fmt" - "os" - "{pathToYourApp}/cmd" ) @@ -265,9 +267,6 @@ In a Cobra app, typically the main.go file is very bare. It serves, one purpose, package main import ( - "fmt" - "os" - "{pathToYourApp}/cmd" ) @@ -339,7 +338,7 @@ rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose out A flag can also be assigned locally which will only apply to that specific command. ```go -rootCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from") +localCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from") ``` ### Local Flag on Parent Commands @@ -395,6 +394,7 @@ The following validators are built in: - `MinimumNArgs(int)` - the command will report an error if there are not at least N positional args. - `MaximumNArgs(int)` - the command will report an error if there are more than N positional args. - `ExactArgs(int)` - the command will report an error if there are not exactly N positional args. +- `ExactValidArgs(int)` - the command will report an error if there are not exactly N positional args OR if there are any positional args that are not in the `ValidArgs` field of `Command` - `RangeArgs(min, max)` - the command will report an error if the number of args is not between the minimum and maximum number of expected args. An example of setting the custom validator: @@ -404,7 +404,7 @@ var cmd = &cobra.Command{ Short: "hello", Args: func(cmd *cobra.Command, args []string) error { if len(args) < 1 { - return errors.New("requires at least one arg") + return errors.New("requires a color argument") } if myapp.IsValidColor(args[0]) { return nil @@ -464,7 +464,7 @@ Echo works a lot like print, except it has a child command.`, } var cmdTimes = &cobra.Command{ - Use: "times [# times] [string to echo]", + Use: "times [string to echo]", Short: "Echo anything to the screen more times", Long: `echo things multiple times back to the user by providing a count and a string.`, @@ -721,6 +721,11 @@ Cobra can generate documentation based on subcommands, flags, etc. in the follow Cobra can generate a bash-completion file. If you add more information to your command, these completions can be amazingly powerful and flexible. Read more about it in [Bash Completions](bash_completions.md). +## Generating zsh completions + +Cobra can generate zsh-completion file. Read more about it in +[Zsh Completions](zsh_completions.md). + # Contributing 1. Fork it diff --git a/vendor/github.com/spf13/cobra/args.go b/vendor/github.com/spf13/cobra/args.go index a5d8a9273e..c4d820b853 100644 --- a/vendor/github.com/spf13/cobra/args.go +++ b/vendor/github.com/spf13/cobra/args.go @@ -78,6 +78,18 @@ func ExactArgs(n int) PositionalArgs { } } +// ExactValidArgs returns an error if +// there are not exactly N positional args OR +// there are any positional args that are not in the `ValidArgs` field of `Command` +func ExactValidArgs(n int) PositionalArgs { + return func(cmd *Command, args []string) error { + if err := ExactArgs(n)(cmd, args); err != nil { + return err + } + return OnlyValidArgs(cmd, args) + } +} + // RangeArgs returns an error if the number of args is not within the expected range. func RangeArgs(min int, max int) PositionalArgs { return func(cmd *Command, args []string) error { diff --git a/vendor/github.com/spf13/cobra/bash_completions.go b/vendor/github.com/spf13/cobra/bash_completions.go index 8fa8f486fa..57bb8e1b3f 100644 --- a/vendor/github.com/spf13/cobra/bash_completions.go +++ b/vendor/github.com/spf13/cobra/bash_completions.go @@ -129,7 +129,13 @@ __%[1]s_handle_reply() fi if [[ ${#COMPREPLY[@]} -eq 0 ]]; then - declare -F __custom_func >/dev/null && __custom_func + if declare -F __%[1]s_custom_func >/dev/null; then + # try command name qualified custom func + __%[1]s_custom_func + else + # otherwise fall back to unqualified for compatibility + declare -F __custom_func >/dev/null && __custom_func + fi fi # available in bash-completion >= 2, not always present on macOS @@ -193,7 +199,8 @@ __%[1]s_handle_flag() fi # skip the argument to a two word flag - if __%[1]s_contains_word "${words[c]}" "${two_word_flags[@]}"; then + if [[ ${words[c]} != *"="* ]] && __%[1]s_contains_word "${words[c]}" "${two_word_flags[@]}"; then + __%[1]s_debug "${FUNCNAME[0]}: found a flag ${words[c]}, skip the next argument" c=$((c+1)) # if we are looking for a flags value, don't show commands if [[ $c -eq $cword ]]; then @@ -373,6 +380,10 @@ func writeFlag(buf *bytes.Buffer, flag *pflag.Flag, cmd *Command) { } format += "\")\n" buf.WriteString(fmt.Sprintf(format, name)) + if len(flag.NoOptDefVal) == 0 { + format = " two_word_flags+=(\"--%s\")\n" + buf.WriteString(fmt.Sprintf(format, name)) + } writeFlagHandler(buf, "--"+name, flag.Annotations, cmd) } @@ -534,51 +545,3 @@ func (c *Command) GenBashCompletionFile(filename string) error { return c.GenBashCompletion(outFile) } - -// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists, -// and causes your command to report an error if invoked without the flag. -func (c *Command) MarkFlagRequired(name string) error { - return MarkFlagRequired(c.Flags(), name) -} - -// MarkPersistentFlagRequired adds the BashCompOneRequiredFlag annotation to the named persistent flag if it exists, -// and causes your command to report an error if invoked without the flag. -func (c *Command) MarkPersistentFlagRequired(name string) error { - return MarkFlagRequired(c.PersistentFlags(), name) -} - -// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists, -// and causes your command to report an error if invoked without the flag. -func MarkFlagRequired(flags *pflag.FlagSet, name string) error { - return flags.SetAnnotation(name, BashCompOneRequiredFlag, []string{"true"}) -} - -// MarkFlagFilename adds the BashCompFilenameExt annotation to the named flag, if it exists. -// Generated bash autocompletion will select filenames for the flag, limiting to named extensions if provided. -func (c *Command) MarkFlagFilename(name string, extensions ...string) error { - return MarkFlagFilename(c.Flags(), name, extensions...) -} - -// MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists. -// Generated bash autocompletion will call the bash function f for the flag. -func (c *Command) MarkFlagCustom(name string, f string) error { - return MarkFlagCustom(c.Flags(), name, f) -} - -// MarkPersistentFlagFilename adds the BashCompFilenameExt annotation to the named persistent flag, if it exists. -// Generated bash autocompletion will select filenames for the flag, limiting to named extensions if provided. -func (c *Command) MarkPersistentFlagFilename(name string, extensions ...string) error { - return MarkFlagFilename(c.PersistentFlags(), name, extensions...) -} - -// MarkFlagFilename adds the BashCompFilenameExt annotation to the named flag in the flag set, if it exists. -// Generated bash autocompletion will select filenames for the flag, limiting to named extensions if provided. -func MarkFlagFilename(flags *pflag.FlagSet, name string, extensions ...string) error { - return flags.SetAnnotation(name, BashCompFilenameExt, extensions) -} - -// MarkFlagCustom adds the BashCompCustom annotation to the named flag in the flag set, if it exists. -// Generated bash autocompletion will call the bash function f for the flag. -func MarkFlagCustom(flags *pflag.FlagSet, name string, f string) error { - return flags.SetAnnotation(name, BashCompCustom, []string{f}) -} diff --git a/vendor/github.com/spf13/cobra/bash_completions.md b/vendor/github.com/spf13/cobra/bash_completions.md index e79d4769d1..4ac61ee132 100644 --- a/vendor/github.com/spf13/cobra/bash_completions.md +++ b/vendor/github.com/spf13/cobra/bash_completions.md @@ -1,5 +1,40 @@ # Generating Bash Completions For Your Own cobra.Command +If you are using the generator you can create a completion command by running + +```bash +cobra add completion +``` + +Update the help text show how to install the bash_completion Linux show here [Kubectl docs show mac options](https://kubernetes.io/docs/tasks/tools/install-kubectl/#enabling-shell-autocompletion) + +Writing the shell script to stdout allows the most flexible use. + +```go +// completionCmd represents the completion command +var completionCmd = &cobra.Command{ + Use: "completion", + Short: "Generates bash completion scripts", + Long: `To load completion run + +. <(bitbucket completion) + +To configure your bash shell to load completions for each session add to your bashrc + +# ~/.bashrc or ~/.profile +. <(bitbucket completion) +`, + Run: func(cmd *cobra.Command, args []string) { + rootCmd.GenBashCompletion(os.Stdout); + }, +} +``` + +**Note:** The cobra generator may include messages printed to stdout for example if the config file is loaded, this will break the auto complete script + + +## Example from kubectl + Generating bash completions from a cobra command is incredibly easy. An actual program which does so for the kubernetes kubectl binary is as follows: ```go @@ -47,7 +82,7 @@ __kubectl_get_resource() fi } -__custom_func() { +__kubectl_custom_func() { case ${last_command} in kubectl_get | kubectl_describe | kubectl_delete | kubectl_stop) __kubectl_get_resource @@ -74,7 +109,7 @@ Find more information at https://github.com/GoogleCloudPlatform/kubernetes.`, } ``` -The `BashCompletionFunction` option is really only valid/useful on the root command. Doing the above will cause `__custom_func()` to be called when the built in processor was unable to find a solution. In the case of kubernetes a valid command might look something like `kubectl get pod [mypod]`. If you type `kubectl get pod [tab][tab]` the `__customc_func()` will run because the cobra.Command only understood "kubectl" and "get." `__custom_func()` will see that the cobra.Command is "kubectl_get" and will thus call another helper `__kubectl_get_resource()`. `__kubectl_get_resource` will look at the 'nouns' collected. In our example the only noun will be `pod`. So it will call `__kubectl_parse_get pod`. `__kubectl_parse_get` will actually call out to kubernetes and get any pods. It will then set `COMPREPLY` to valid pods! +The `BashCompletionFunction` option is really only valid/useful on the root command. Doing the above will cause `__kubectl_custom_func()` (`___custom_func()`) to be called when the built in processor was unable to find a solution. In the case of kubernetes a valid command might look something like `kubectl get pod [mypod]`. If you type `kubectl get pod [tab][tab]` the `__kubectl_customc_func()` will run because the cobra.Command only understood "kubectl" and "get." `__kubectl_custom_func()` will see that the cobra.Command is "kubectl_get" and will thus call another helper `__kubectl_get_resource()`. `__kubectl_get_resource` will look at the 'nouns' collected. In our example the only noun will be `pod`. So it will call `__kubectl_parse_get pod`. `__kubectl_parse_get` will actually call out to kubernetes and get any pods. It will then set `COMPREPLY` to valid pods! ## Have the completions code complete your 'nouns' diff --git a/vendor/github.com/spf13/cobra/cobra.go b/vendor/github.com/spf13/cobra/cobra.go index 7010fd15b7..6505c070b4 100644 --- a/vendor/github.com/spf13/cobra/cobra.go +++ b/vendor/github.com/spf13/cobra/cobra.go @@ -23,6 +23,7 @@ import ( "strconv" "strings" "text/template" + "time" "unicode" ) @@ -56,6 +57,12 @@ var MousetrapHelpText string = `This is a command line tool. You need to open cmd.exe and run it from there. ` +// MousetrapDisplayDuration controls how long the MousetrapHelpText message is displayed on Windows +// if the CLI is started from explorer.exe. Set to 0 to wait for the return key to be pressed. +// To disable the mousetrap, just set MousetrapHelpText to blank string (""). +// Works only on Microsoft Windows. +var MousetrapDisplayDuration time.Duration = 5 * time.Second + // AddTemplateFunc adds a template function that's available to Usage and Help // template generation. func AddTemplateFunc(name string, tmplFunc interface{}) { diff --git a/vendor/github.com/spf13/cobra/command.go b/vendor/github.com/spf13/cobra/command.go index 34d1bf3671..c7e8983034 100644 --- a/vendor/github.com/spf13/cobra/command.go +++ b/vendor/github.com/spf13/cobra/command.go @@ -177,8 +177,6 @@ type Command struct { // that we can use on every pflag set and children commands globNormFunc func(f *flag.FlagSet, name string) flag.NormalizedName - // output is an output writer defined by user. - output io.Writer // usageFunc is usage func defined by user. usageFunc func(*Command) error // usageTemplate is usage template defined by user. @@ -195,6 +193,13 @@ type Command struct { helpCommand *Command // versionTemplate is the version template defined by user. versionTemplate string + + // inReader is a reader defined by the user that replaces stdin + inReader io.Reader + // outWriter is a writer defined by the user that replaces stdout + outWriter io.Writer + // errWriter is a writer defined by the user that replaces stderr + errWriter io.Writer } // SetArgs sets arguments for the command. It is set to os.Args[1:] by default, if desired, can be overridden @@ -205,8 +210,28 @@ func (c *Command) SetArgs(a []string) { // SetOutput sets the destination for usage and error messages. // If output is nil, os.Stderr is used. +// Deprecated: Use SetOut and/or SetErr instead func (c *Command) SetOutput(output io.Writer) { - c.output = output + c.outWriter = output + c.errWriter = output +} + +// SetOut sets the destination for usage messages. +// If newOut is nil, os.Stdout is used. +func (c *Command) SetOut(newOut io.Writer) { + c.outWriter = newOut +} + +// SetErr sets the destination for error messages. +// If newErr is nil, os.Stderr is used. +func (c *Command) SetErr(newErr io.Writer) { + c.errWriter = newErr +} + +// SetOut sets the source for input data +// If newIn is nil, os.Stdin is used. +func (c *Command) SetIn(newIn io.Reader) { + c.inReader = newIn } // SetUsageFunc sets usage function. Usage can be defined by application. @@ -267,9 +292,19 @@ func (c *Command) OutOrStderr() io.Writer { return c.getOut(os.Stderr) } +// ErrOrStderr returns output to stderr +func (c *Command) ErrOrStderr() io.Writer { + return c.getErr(os.Stderr) +} + +// ErrOrStderr returns output to stderr +func (c *Command) InOrStdin() io.Reader { + return c.getIn(os.Stdin) +} + func (c *Command) getOut(def io.Writer) io.Writer { - if c.output != nil { - return c.output + if c.outWriter != nil { + return c.outWriter } if c.HasParent() { return c.parent.getOut(def) @@ -277,6 +312,26 @@ func (c *Command) getOut(def io.Writer) io.Writer { return def } +func (c *Command) getErr(def io.Writer) io.Writer { + if c.errWriter != nil { + return c.errWriter + } + if c.HasParent() { + return c.parent.getErr(def) + } + return def +} + +func (c *Command) getIn(def io.Reader) io.Reader { + if c.inReader != nil { + return c.inReader + } + if c.HasParent() { + return c.parent.getIn(def) + } + return def +} + // UsageFunc returns either the function set by SetUsageFunc for this command // or a parent, or it returns a default usage function. func (c *Command) UsageFunc() (f func(*Command) error) { @@ -329,13 +384,22 @@ func (c *Command) Help() error { return nil } -// UsageString return usage string. +// UsageString returns usage string. func (c *Command) UsageString() string { - tmpOutput := c.output + // Storing normal writers + tmpOutput := c.outWriter + tmpErr := c.errWriter + bb := new(bytes.Buffer) - c.SetOutput(bb) + c.outWriter = bb + c.errWriter = bb + c.Usage() - c.output = tmpOutput + + // Setting things back to normal + c.outWriter = tmpOutput + c.errWriter = tmpErr + return bb.String() } @@ -817,13 +881,11 @@ func (c *Command) ExecuteC() (cmd *Command, err error) { // overriding c.InitDefaultHelpCmd() - var args []string + args := c.args // Workaround FAIL with "go test -v" or "cobra.test -test.v", see #155 if c.args == nil && filepath.Base(os.Args[0]) != "cobra.test" { args = os.Args[1:] - } else { - args = c.args } var flags []string @@ -1070,6 +1132,21 @@ func (c *Command) Printf(format string, i ...interface{}) { c.Print(fmt.Sprintf(format, i...)) } +// PrintErr is a convenience method to Print to the defined Err output, fallback to Stderr if not set. +func (c *Command) PrintErr(i ...interface{}) { + fmt.Fprint(c.ErrOrStderr(), i...) +} + +// PrintErrln is a convenience method to Println to the defined Err output, fallback to Stderr if not set. +func (c *Command) PrintErrln(i ...interface{}) { + c.Print(fmt.Sprintln(i...)) +} + +// PrintErrf is a convenience method to Printf to the defined Err output, fallback to Stderr if not set. +func (c *Command) PrintErrf(format string, i ...interface{}) { + c.Print(fmt.Sprintf(format, i...)) +} + // CommandPath returns the full path to this command. func (c *Command) CommandPath() string { if c.HasParent() { @@ -1335,7 +1412,7 @@ func (c *Command) LocalFlags() *flag.FlagSet { return c.lflags } -// InheritedFlags returns all flags which were inherited from parents commands. +// InheritedFlags returns all flags which were inherited from parent commands. func (c *Command) InheritedFlags() *flag.FlagSet { c.mergePersistentFlags() diff --git a/vendor/github.com/spf13/cobra/command_win.go b/vendor/github.com/spf13/cobra/command_win.go index edec728e4f..8768b1736d 100644 --- a/vendor/github.com/spf13/cobra/command_win.go +++ b/vendor/github.com/spf13/cobra/command_win.go @@ -3,6 +3,7 @@ package cobra import ( + "fmt" "os" "time" @@ -14,7 +15,12 @@ var preExecHookFn = preExecHook func preExecHook(c *Command) { if MousetrapHelpText != "" && mousetrap.StartedByExplorer() { c.Print(MousetrapHelpText) - time.Sleep(5 * time.Second) + if MousetrapDisplayDuration > 0 { + time.Sleep(MousetrapDisplayDuration) + } else { + c.Println("Press return to continue...") + fmt.Scanln() + } os.Exit(1) } } diff --git a/vendor/github.com/spf13/cobra/go.mod b/vendor/github.com/spf13/cobra/go.mod new file mode 100644 index 0000000000..9a9eb65a37 --- /dev/null +++ b/vendor/github.com/spf13/cobra/go.mod @@ -0,0 +1,13 @@ +module github.com/spf13/cobra + +go 1.12 + +require ( + github.com/BurntSushi/toml v0.3.1 // indirect + github.com/cpuguy83/go-md2man v1.0.10 + github.com/inconshreveable/mousetrap v1.0.0 + github.com/mitchellh/go-homedir v1.1.0 + github.com/spf13/pflag v1.0.3 + github.com/spf13/viper v1.3.2 + gopkg.in/yaml.v2 v2.2.2 +) diff --git a/vendor/github.com/spf13/cobra/go.sum b/vendor/github.com/spf13/cobra/go.sum new file mode 100644 index 0000000000..9761f4d03f --- /dev/null +++ b/vendor/github.com/spf13/cobra/go.sum @@ -0,0 +1,51 @@ +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a h1:1n5lsVfiQW3yfsRGu98756EH1YthsFqr/5mxHduZW2A= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/github.com/spf13/cobra/powershell_completions.go b/vendor/github.com/spf13/cobra/powershell_completions.go new file mode 100644 index 0000000000..756c61b9dc --- /dev/null +++ b/vendor/github.com/spf13/cobra/powershell_completions.go @@ -0,0 +1,100 @@ +// PowerShell completions are based on the amazing work from clap: +// https://github.com/clap-rs/clap/blob/3294d18efe5f264d12c9035f404c7d189d4824e1/src/completions/powershell.rs +// +// The generated scripts require PowerShell v5.0+ (which comes Windows 10, but +// can be downloaded separately for windows 7 or 8.1). + +package cobra + +import ( + "bytes" + "fmt" + "io" + "os" + "strings" + + "github.com/spf13/pflag" +) + +var powerShellCompletionTemplate = `using namespace System.Management.Automation +using namespace System.Management.Automation.Language +Register-ArgumentCompleter -Native -CommandName '%s' -ScriptBlock { + param($wordToComplete, $commandAst, $cursorPosition) + $commandElements = $commandAst.CommandElements + $command = @( + '%s' + for ($i = 1; $i -lt $commandElements.Count; $i++) { + $element = $commandElements[$i] + if ($element -isnot [StringConstantExpressionAst] -or + $element.StringConstantType -ne [StringConstantType]::BareWord -or + $element.Value.StartsWith('-')) { + break + } + $element.Value + } + ) -join ';' + $completions = @(switch ($command) {%s + }) + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | + Sort-Object -Property ListItemText +}` + +func generatePowerShellSubcommandCases(out io.Writer, cmd *Command, previousCommandName string) { + var cmdName string + if previousCommandName == "" { + cmdName = cmd.Name() + } else { + cmdName = fmt.Sprintf("%s;%s", previousCommandName, cmd.Name()) + } + + fmt.Fprintf(out, "\n '%s' {", cmdName) + + cmd.Flags().VisitAll(func(flag *pflag.Flag) { + if nonCompletableFlag(flag) { + return + } + usage := escapeStringForPowerShell(flag.Usage) + if len(flag.Shorthand) > 0 { + fmt.Fprintf(out, "\n [CompletionResult]::new('-%s', '%s', [CompletionResultType]::ParameterName, '%s')", flag.Shorthand, flag.Shorthand, usage) + } + fmt.Fprintf(out, "\n [CompletionResult]::new('--%s', '%s', [CompletionResultType]::ParameterName, '%s')", flag.Name, flag.Name, usage) + }) + + for _, subCmd := range cmd.Commands() { + usage := escapeStringForPowerShell(subCmd.Short) + fmt.Fprintf(out, "\n [CompletionResult]::new('%s', '%s', [CompletionResultType]::ParameterValue, '%s')", subCmd.Name(), subCmd.Name(), usage) + } + + fmt.Fprint(out, "\n break\n }") + + for _, subCmd := range cmd.Commands() { + generatePowerShellSubcommandCases(out, subCmd, cmdName) + } +} + +func escapeStringForPowerShell(s string) string { + return strings.Replace(s, "'", "''", -1) +} + +// GenPowerShellCompletion generates PowerShell completion file and writes to the passed writer. +func (c *Command) GenPowerShellCompletion(w io.Writer) error { + buf := new(bytes.Buffer) + + var subCommandCases bytes.Buffer + generatePowerShellSubcommandCases(&subCommandCases, c, "") + fmt.Fprintf(buf, powerShellCompletionTemplate, c.Name(), c.Name(), subCommandCases.String()) + + _, err := buf.WriteTo(w) + return err +} + +// GenPowerShellCompletionFile generates PowerShell completion file. +func (c *Command) GenPowerShellCompletionFile(filename string) error { + outFile, err := os.Create(filename) + if err != nil { + return err + } + defer outFile.Close() + + return c.GenPowerShellCompletion(outFile) +} diff --git a/vendor/github.com/spf13/cobra/powershell_completions.md b/vendor/github.com/spf13/cobra/powershell_completions.md new file mode 100644 index 0000000000..afed802408 --- /dev/null +++ b/vendor/github.com/spf13/cobra/powershell_completions.md @@ -0,0 +1,14 @@ +# Generating PowerShell Completions For Your Own cobra.Command + +Cobra can generate PowerShell completion scripts. Users need PowerShell version 5.0 or above, which comes with Windows 10 and can be downloaded separately for Windows 7 or 8.1. They can then write the completions to a file and source this file from their PowerShell profile, which is referenced by the `$Profile` environment variable. See `Get-Help about_Profiles` for more info about PowerShell profiles. + +# What's supported + +- Completion for subcommands using their `.Short` description +- Completion for non-hidden flags using their `.Name` and `.Shorthand` + +# What's not yet supported + +- Command aliases +- Required, filename or custom flags (they will work like normal flags) +- Custom completion scripts diff --git a/vendor/github.com/spf13/cobra/shell_completions.go b/vendor/github.com/spf13/cobra/shell_completions.go new file mode 100644 index 0000000000..ba0af9cb55 --- /dev/null +++ b/vendor/github.com/spf13/cobra/shell_completions.go @@ -0,0 +1,85 @@ +package cobra + +import ( + "github.com/spf13/pflag" +) + +// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists, +// and causes your command to report an error if invoked without the flag. +func (c *Command) MarkFlagRequired(name string) error { + return MarkFlagRequired(c.Flags(), name) +} + +// MarkPersistentFlagRequired adds the BashCompOneRequiredFlag annotation to the named persistent flag if it exists, +// and causes your command to report an error if invoked without the flag. +func (c *Command) MarkPersistentFlagRequired(name string) error { + return MarkFlagRequired(c.PersistentFlags(), name) +} + +// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists, +// and causes your command to report an error if invoked without the flag. +func MarkFlagRequired(flags *pflag.FlagSet, name string) error { + return flags.SetAnnotation(name, BashCompOneRequiredFlag, []string{"true"}) +} + +// MarkFlagFilename adds the BashCompFilenameExt annotation to the named flag, if it exists. +// Generated bash autocompletion will select filenames for the flag, limiting to named extensions if provided. +func (c *Command) MarkFlagFilename(name string, extensions ...string) error { + return MarkFlagFilename(c.Flags(), name, extensions...) +} + +// MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists. +// Generated bash autocompletion will call the bash function f for the flag. +func (c *Command) MarkFlagCustom(name string, f string) error { + return MarkFlagCustom(c.Flags(), name, f) +} + +// MarkPersistentFlagFilename instructs the various shell completion +// implementations to limit completions for this persistent flag to the +// specified extensions (patterns). +// +// Shell Completion compatibility matrix: bash, zsh +func (c *Command) MarkPersistentFlagFilename(name string, extensions ...string) error { + return MarkFlagFilename(c.PersistentFlags(), name, extensions...) +} + +// MarkFlagFilename instructs the various shell completion implementations to +// limit completions for this flag to the specified extensions (patterns). +// +// Shell Completion compatibility matrix: bash, zsh +func MarkFlagFilename(flags *pflag.FlagSet, name string, extensions ...string) error { + return flags.SetAnnotation(name, BashCompFilenameExt, extensions) +} + +// MarkFlagCustom instructs the various shell completion implementations to +// limit completions for this flag to the specified extensions (patterns). +// +// Shell Completion compatibility matrix: bash, zsh +func MarkFlagCustom(flags *pflag.FlagSet, name string, f string) error { + return flags.SetAnnotation(name, BashCompCustom, []string{f}) +} + +// MarkFlagDirname instructs the various shell completion implementations to +// complete only directories with this named flag. +// +// Shell Completion compatibility matrix: zsh +func (c *Command) MarkFlagDirname(name string) error { + return MarkFlagDirname(c.Flags(), name) +} + +// MarkPersistentFlagDirname instructs the various shell completion +// implementations to complete only directories with this persistent named flag. +// +// Shell Completion compatibility matrix: zsh +func (c *Command) MarkPersistentFlagDirname(name string) error { + return MarkFlagDirname(c.PersistentFlags(), name) +} + +// MarkFlagDirname instructs the various shell completion implementations to +// complete only directories with this specified flag. +// +// Shell Completion compatibility matrix: zsh +func MarkFlagDirname(flags *pflag.FlagSet, name string) error { + zshPattern := "-(/)" + return flags.SetAnnotation(name, zshCompDirname, []string{zshPattern}) +} diff --git a/vendor/github.com/spf13/cobra/zsh_completions.go b/vendor/github.com/spf13/cobra/zsh_completions.go index 889c22e273..12755482f0 100644 --- a/vendor/github.com/spf13/cobra/zsh_completions.go +++ b/vendor/github.com/spf13/cobra/zsh_completions.go @@ -1,13 +1,102 @@ package cobra import ( - "bytes" + "encoding/json" "fmt" "io" "os" + "sort" "strings" + "text/template" + + "github.com/spf13/pflag" +) + +const ( + zshCompArgumentAnnotation = "cobra_annotations_zsh_completion_argument_annotation" + zshCompArgumentFilenameComp = "cobra_annotations_zsh_completion_argument_file_completion" + zshCompArgumentWordComp = "cobra_annotations_zsh_completion_argument_word_completion" + zshCompDirname = "cobra_annotations_zsh_dirname" +) + +var ( + zshCompFuncMap = template.FuncMap{ + "genZshFuncName": zshCompGenFuncName, + "extractFlags": zshCompExtractFlag, + "genFlagEntryForZshArguments": zshCompGenFlagEntryForArguments, + "extractArgsCompletions": zshCompExtractArgumentCompletionHintsForRendering, + } + zshCompletionText = ` +{{/* should accept Command (that contains subcommands) as parameter */}} +{{define "argumentsC" -}} +{{ $cmdPath := genZshFuncName .}} +function {{$cmdPath}} { + local -a commands + + _arguments -C \{{- range extractFlags .}} + {{genFlagEntryForZshArguments .}} \{{- end}} + "1: :->cmnds" \ + "*::arg:->args" + + case $state in + cmnds) + commands=({{range .Commands}}{{if not .Hidden}} + "{{.Name}}:{{.Short}}"{{end}}{{end}} + ) + _describe "command" commands + ;; + esac + + case "$words[1]" in {{- range .Commands}}{{if not .Hidden}} + {{.Name}}) + {{$cmdPath}}_{{.Name}} + ;;{{end}}{{end}} + esac +} +{{range .Commands}}{{if not .Hidden}} +{{template "selectCmdTemplate" .}} +{{- end}}{{end}} +{{- end}} + +{{/* should accept Command without subcommands as parameter */}} +{{define "arguments" -}} +function {{genZshFuncName .}} { +{{" _arguments"}}{{range extractFlags .}} \ + {{genFlagEntryForZshArguments . -}} +{{end}}{{range extractArgsCompletions .}} \ + {{.}}{{end}} +} +{{end}} + +{{/* dispatcher for commands with or without subcommands */}} +{{define "selectCmdTemplate" -}} +{{if .Hidden}}{{/* ignore hidden*/}}{{else -}} +{{if .Commands}}{{template "argumentsC" .}}{{else}}{{template "arguments" .}}{{end}} +{{- end}} +{{- end}} + +{{/* template entry point */}} +{{define "Main" -}} +#compdef _{{.Name}} {{.Name}} + +{{template "selectCmdTemplate" .}} +{{end}} +` ) +// zshCompArgsAnnotation is used to encode/decode zsh completion for +// arguments to/from Command.Annotations. +type zshCompArgsAnnotation map[int]zshCompArgHint + +type zshCompArgHint struct { + // Indicates the type of the completion to use. One of: + // zshCompArgumentFilenameComp or zshCompArgumentWordComp + Tipe string `json:"type"` + + // A value for the type above (globs for file completion or words) + Options []string `json:"options"` +} + // GenZshCompletionFile generates zsh completion file. func (c *Command) GenZshCompletionFile(filename string) error { outFile, err := os.Create(filename) @@ -19,108 +108,229 @@ func (c *Command) GenZshCompletionFile(filename string) error { return c.GenZshCompletion(outFile) } -// GenZshCompletion generates a zsh completion file and writes to the passed writer. +// GenZshCompletion generates a zsh completion file and writes to the passed +// writer. The completion always run on the root command regardless of the +// command it was called from. func (c *Command) GenZshCompletion(w io.Writer) error { - buf := new(bytes.Buffer) - - writeHeader(buf, c) - maxDepth := maxDepth(c) - writeLevelMapping(buf, maxDepth) - writeLevelCases(buf, maxDepth, c) + tmpl, err := template.New("Main").Funcs(zshCompFuncMap).Parse(zshCompletionText) + if err != nil { + return fmt.Errorf("error creating zsh completion template: %v", err) + } + return tmpl.Execute(w, c.Root()) +} - _, err := buf.WriteTo(w) - return err +// MarkZshCompPositionalArgumentFile marks the specified argument (first +// argument is 1) as completed by file selection. patterns (e.g. "*.txt") are +// optional - if not provided the completion will search for all files. +func (c *Command) MarkZshCompPositionalArgumentFile(argPosition int, patterns ...string) error { + if argPosition < 1 { + return fmt.Errorf("Invalid argument position (%d)", argPosition) + } + annotation, err := c.zshCompGetArgsAnnotations() + if err != nil { + return err + } + if c.zshcompArgsAnnotationnIsDuplicatePosition(annotation, argPosition) { + return fmt.Errorf("Duplicate annotation for positional argument at index %d", argPosition) + } + annotation[argPosition] = zshCompArgHint{ + Tipe: zshCompArgumentFilenameComp, + Options: patterns, + } + return c.zshCompSetArgsAnnotations(annotation) } -func writeHeader(w io.Writer, cmd *Command) { - fmt.Fprintf(w, "#compdef %s\n\n", cmd.Name()) +// MarkZshCompPositionalArgumentWords marks the specified positional argument +// (first argument is 1) as completed by the provided words. At east one word +// must be provided, spaces within words will be offered completion with +// "word\ word". +func (c *Command) MarkZshCompPositionalArgumentWords(argPosition int, words ...string) error { + if argPosition < 1 { + return fmt.Errorf("Invalid argument position (%d)", argPosition) + } + if len(words) == 0 { + return fmt.Errorf("Trying to set empty word list for positional argument %d", argPosition) + } + annotation, err := c.zshCompGetArgsAnnotations() + if err != nil { + return err + } + if c.zshcompArgsAnnotationnIsDuplicatePosition(annotation, argPosition) { + return fmt.Errorf("Duplicate annotation for positional argument at index %d", argPosition) + } + annotation[argPosition] = zshCompArgHint{ + Tipe: zshCompArgumentWordComp, + Options: words, + } + return c.zshCompSetArgsAnnotations(annotation) } -func maxDepth(c *Command) int { - if len(c.Commands()) == 0 { - return 0 +func zshCompExtractArgumentCompletionHintsForRendering(c *Command) ([]string, error) { + var result []string + annotation, err := c.zshCompGetArgsAnnotations() + if err != nil { + return nil, err } - maxDepthSub := 0 - for _, s := range c.Commands() { - subDepth := maxDepth(s) - if subDepth > maxDepthSub { - maxDepthSub = subDepth + for k, v := range annotation { + s, err := zshCompRenderZshCompArgHint(k, v) + if err != nil { + return nil, err } + result = append(result, s) } - return 1 + maxDepthSub + if len(c.ValidArgs) > 0 { + if _, positionOneExists := annotation[1]; !positionOneExists { + s, err := zshCompRenderZshCompArgHint(1, zshCompArgHint{ + Tipe: zshCompArgumentWordComp, + Options: c.ValidArgs, + }) + if err != nil { + return nil, err + } + result = append(result, s) + } + } + sort.Strings(result) + return result, nil } -func writeLevelMapping(w io.Writer, numLevels int) { - fmt.Fprintln(w, `_arguments \`) - for i := 1; i <= numLevels; i++ { - fmt.Fprintf(w, ` '%d: :->level%d' \`, i, i) - fmt.Fprintln(w) +func zshCompRenderZshCompArgHint(i int, z zshCompArgHint) (string, error) { + switch t := z.Tipe; t { + case zshCompArgumentFilenameComp: + var globs []string + for _, g := range z.Options { + globs = append(globs, fmt.Sprintf(`-g "%s"`, g)) + } + return fmt.Sprintf(`'%d: :_files %s'`, i, strings.Join(globs, " ")), nil + case zshCompArgumentWordComp: + var words []string + for _, w := range z.Options { + words = append(words, fmt.Sprintf("%q", w)) + } + return fmt.Sprintf(`'%d: :(%s)'`, i, strings.Join(words, " ")), nil + default: + return "", fmt.Errorf("Invalid zsh argument completion annotation: %s", t) } - fmt.Fprintf(w, ` '%d: :%s'`, numLevels+1, "_files") - fmt.Fprintln(w) } -func writeLevelCases(w io.Writer, maxDepth int, root *Command) { - fmt.Fprintln(w, "case $state in") - defer fmt.Fprintln(w, "esac") +func (c *Command) zshcompArgsAnnotationnIsDuplicatePosition(annotation zshCompArgsAnnotation, position int) bool { + _, dup := annotation[position] + return dup +} - for i := 1; i <= maxDepth; i++ { - fmt.Fprintf(w, " level%d)\n", i) - writeLevel(w, root, i) - fmt.Fprintln(w, " ;;") +func (c *Command) zshCompGetArgsAnnotations() (zshCompArgsAnnotation, error) { + annotation := make(zshCompArgsAnnotation) + annotationString, ok := c.Annotations[zshCompArgumentAnnotation] + if !ok { + return annotation, nil + } + err := json.Unmarshal([]byte(annotationString), &annotation) + if err != nil { + return annotation, fmt.Errorf("Error unmarshaling zsh argument annotation: %v", err) } - fmt.Fprintln(w, " *)") - fmt.Fprintln(w, " _arguments '*: :_files'") - fmt.Fprintln(w, " ;;") + return annotation, nil } -func writeLevel(w io.Writer, root *Command, i int) { - fmt.Fprintf(w, " case $words[%d] in\n", i) - defer fmt.Fprintln(w, " esac") - - commands := filterByLevel(root, i) - byParent := groupByParent(commands) +func (c *Command) zshCompSetArgsAnnotations(annotation zshCompArgsAnnotation) error { + jsn, err := json.Marshal(annotation) + if err != nil { + return fmt.Errorf("Error marshaling zsh argument annotation: %v", err) + } + if c.Annotations == nil { + c.Annotations = make(map[string]string) + } + c.Annotations[zshCompArgumentAnnotation] = string(jsn) + return nil +} - for p, c := range byParent { - names := names(c) - fmt.Fprintf(w, " %s)\n", p) - fmt.Fprintf(w, " _arguments '%d: :(%s)'\n", i, strings.Join(names, " ")) - fmt.Fprintln(w, " ;;") +func zshCompGenFuncName(c *Command) string { + if c.HasParent() { + return zshCompGenFuncName(c.Parent()) + "_" + c.Name() } - fmt.Fprintln(w, " *)") - fmt.Fprintln(w, " _arguments '*: :_files'") - fmt.Fprintln(w, " ;;") + return "_" + c.Name() +} +func zshCompExtractFlag(c *Command) []*pflag.Flag { + var flags []*pflag.Flag + c.LocalFlags().VisitAll(func(f *pflag.Flag) { + if !f.Hidden { + flags = append(flags, f) + } + }) + c.InheritedFlags().VisitAll(func(f *pflag.Flag) { + if !f.Hidden { + flags = append(flags, f) + } + }) + return flags } -func filterByLevel(c *Command, l int) []*Command { - cs := make([]*Command, 0) - if l == 0 { - cs = append(cs, c) - return cs +// zshCompGenFlagEntryForArguments returns an entry that matches _arguments +// zsh-completion parameters. It's too complicated to generate in a template. +func zshCompGenFlagEntryForArguments(f *pflag.Flag) string { + if f.Name == "" || f.Shorthand == "" { + return zshCompGenFlagEntryForSingleOptionFlag(f) } - for _, s := range c.Commands() { - cs = append(cs, filterByLevel(s, l-1)...) + return zshCompGenFlagEntryForMultiOptionFlag(f) +} + +func zshCompGenFlagEntryForSingleOptionFlag(f *pflag.Flag) string { + var option, multiMark, extras string + + if zshCompFlagCouldBeSpecifiedMoreThenOnce(f) { + multiMark = "*" } - return cs + + option = "--" + f.Name + if option == "--" { + option = "-" + f.Shorthand + } + extras = zshCompGenFlagEntryExtras(f) + + return fmt.Sprintf(`'%s%s[%s]%s'`, multiMark, option, zshCompQuoteFlagDescription(f.Usage), extras) } -func groupByParent(commands []*Command) map[string][]*Command { - m := make(map[string][]*Command) - for _, c := range commands { - parent := c.Parent() - if parent == nil { - continue - } - m[parent.Name()] = append(m[parent.Name()], c) +func zshCompGenFlagEntryForMultiOptionFlag(f *pflag.Flag) string { + var options, parenMultiMark, curlyMultiMark, extras string + + if zshCompFlagCouldBeSpecifiedMoreThenOnce(f) { + parenMultiMark = "*" + curlyMultiMark = "\\*" } - return m + + options = fmt.Sprintf(`'(%s-%s %s--%s)'{%s-%s,%s--%s}`, + parenMultiMark, f.Shorthand, parenMultiMark, f.Name, curlyMultiMark, f.Shorthand, curlyMultiMark, f.Name) + extras = zshCompGenFlagEntryExtras(f) + + return fmt.Sprintf(`%s'[%s]%s'`, options, zshCompQuoteFlagDescription(f.Usage), extras) } -func names(commands []*Command) []string { - ns := make([]string, len(commands)) - for i, c := range commands { - ns[i] = c.Name() +func zshCompGenFlagEntryExtras(f *pflag.Flag) string { + if f.NoOptDefVal != "" { + return "" } - return ns + + extras := ":" // allow options for flag (even without assistance) + for key, values := range f.Annotations { + switch key { + case zshCompDirname: + extras = fmt.Sprintf(":filename:_files -g %q", values[0]) + case BashCompFilenameExt: + extras = ":filename:_files" + for _, pattern := range values { + extras = extras + fmt.Sprintf(` -g "%s"`, pattern) + } + } + } + + return extras +} + +func zshCompFlagCouldBeSpecifiedMoreThenOnce(f *pflag.Flag) bool { + return strings.Contains(f.Value.Type(), "Slice") || + strings.Contains(f.Value.Type(), "Array") +} + +func zshCompQuoteFlagDescription(s string) string { + return strings.Replace(s, "'", `'\''`, -1) } diff --git a/vendor/github.com/spf13/cobra/zsh_completions.md b/vendor/github.com/spf13/cobra/zsh_completions.md new file mode 100644 index 0000000000..df9c2eac93 --- /dev/null +++ b/vendor/github.com/spf13/cobra/zsh_completions.md @@ -0,0 +1,39 @@ +## Generating Zsh Completion for your cobra.Command + +Cobra supports native Zsh completion generated from the root `cobra.Command`. +The generated completion script should be put somewhere in your `$fpath` named +`_`. + +### What's Supported + +* Completion for all non-hidden subcommands using their `.Short` description. +* Completion for all non-hidden flags using the following rules: + * Filename completion works by marking the flag with `cmd.MarkFlagFilename...` + family of commands. + * The requirement for argument to the flag is decided by the `.NoOptDefVal` + flag value - if it's empty then completion will expect an argument. + * Flags of one of the various `*Array` and `*Slice` types supports multiple + specifications (with or without argument depending on the specific type). +* Completion of positional arguments using the following rules: + * Argument position for all options below starts at `1`. If argument position + `0` is requested it will raise an error. + * Use `command.MarkZshCompPositionalArgumentFile` to complete filenames. Glob + patterns (e.g. `"*.log"`) are optional - if not specified it will offer to + complete all file types. + * Use `command.MarkZshCompPositionalArgumentWords` to offer specific words for + completion. At least one word is required. + * It's possible to specify completion for some arguments and leave some + unspecified (e.g. offer words for second argument but nothing for first + argument). This will cause no completion for first argument but words + completion for second argument. + * If no argument completion was specified for 1st argument (but optionally was + specified for 2nd) and the command has `ValidArgs` it will be used as + completion options for 1st argument. + * Argument completions only offered for commands with no subcommands. + +### What's not yet Supported + +* Custom completion scripts are not supported yet (We should probably create zsh + specific one, doesn't make sense to re-use the bash one as the functions will + be different). +* Whatever other feature you're looking for and doesn't exist :) diff --git a/vendor/github.com/spf13/pflag/.travis.yml b/vendor/github.com/spf13/pflag/.travis.yml index f8a63b308b..00d04cb9b0 100644 --- a/vendor/github.com/spf13/pflag/.travis.yml +++ b/vendor/github.com/spf13/pflag/.travis.yml @@ -3,8 +3,9 @@ sudo: false language: go go: - - 1.7.3 - - 1.8.1 + - 1.9.x + - 1.10.x + - 1.11.x - tip matrix: @@ -12,7 +13,7 @@ matrix: - go: tip install: - - go get github.com/golang/lint/golint + - go get golang.org/x/lint/golint - export PATH=$GOPATH/bin:$PATH - go install ./... diff --git a/vendor/github.com/spf13/pflag/README.md b/vendor/github.com/spf13/pflag/README.md index b052414d12..7eacc5bdbe 100644 --- a/vendor/github.com/spf13/pflag/README.md +++ b/vendor/github.com/spf13/pflag/README.md @@ -86,8 +86,8 @@ fmt.Println("ip has value ", *ip) fmt.Println("flagvar has value ", flagvar) ``` -There are helpers function to get values later if you have the FlagSet but -it was difficult to keep up with all of the flag pointers in your code. +There are helper functions available to get the value stored in a Flag if you have a FlagSet but find +it difficult to keep up with all of the pointers in your code. If you have a pflag.FlagSet with a flag called 'flagname' of type int you can use GetInt() to get the int value. But notice that 'flagname' must exist and it must be an int. GetString("flagname") will fail. diff --git a/vendor/github.com/spf13/pflag/bool_slice.go b/vendor/github.com/spf13/pflag/bool_slice.go index 5af02f1a75..3731370d6a 100644 --- a/vendor/github.com/spf13/pflag/bool_slice.go +++ b/vendor/github.com/spf13/pflag/bool_slice.go @@ -71,6 +71,44 @@ func (s *boolSliceValue) String() string { return "[" + out + "]" } +func (s *boolSliceValue) fromString(val string) (bool, error) { + return strconv.ParseBool(val) +} + +func (s *boolSliceValue) toString(val bool) string { + return strconv.FormatBool(val) +} + +func (s *boolSliceValue) Append(val string) error { + i, err := s.fromString(val) + if err != nil { + return err + } + *s.value = append(*s.value, i) + return nil +} + +func (s *boolSliceValue) Replace(val []string) error { + out := make([]bool, len(val)) + for i, d := range val { + var err error + out[i], err = s.fromString(d) + if err != nil { + return err + } + } + *s.value = out + return nil +} + +func (s *boolSliceValue) GetSlice() []string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = s.toString(d) + } + return out +} + func boolSliceConv(val string) (interface{}, error) { val = strings.Trim(val, "[]") // Empty string would cause a slice with one (empty) entry diff --git a/vendor/github.com/spf13/pflag/bytes.go b/vendor/github.com/spf13/pflag/bytes.go index 12c58db9fe..67d5304570 100644 --- a/vendor/github.com/spf13/pflag/bytes.go +++ b/vendor/github.com/spf13/pflag/bytes.go @@ -1,6 +1,7 @@ package pflag import ( + "encoding/base64" "encoding/hex" "fmt" "strings" @@ -9,10 +10,12 @@ import ( // BytesHex adapts []byte for use as a flag. Value of flag is HEX encoded type bytesHexValue []byte +// String implements pflag.Value.String. func (bytesHex bytesHexValue) String() string { return fmt.Sprintf("%X", []byte(bytesHex)) } +// Set implements pflag.Value.Set. func (bytesHex *bytesHexValue) Set(value string) error { bin, err := hex.DecodeString(strings.TrimSpace(value)) @@ -25,6 +28,7 @@ func (bytesHex *bytesHexValue) Set(value string) error { return nil } +// Type implements pflag.Value.Type. func (*bytesHexValue) Type() string { return "bytesHex" } @@ -103,3 +107,103 @@ func BytesHex(name string, value []byte, usage string) *[]byte { func BytesHexP(name, shorthand string, value []byte, usage string) *[]byte { return CommandLine.BytesHexP(name, shorthand, value, usage) } + +// BytesBase64 adapts []byte for use as a flag. Value of flag is Base64 encoded +type bytesBase64Value []byte + +// String implements pflag.Value.String. +func (bytesBase64 bytesBase64Value) String() string { + return base64.StdEncoding.EncodeToString([]byte(bytesBase64)) +} + +// Set implements pflag.Value.Set. +func (bytesBase64 *bytesBase64Value) Set(value string) error { + bin, err := base64.StdEncoding.DecodeString(strings.TrimSpace(value)) + + if err != nil { + return err + } + + *bytesBase64 = bin + + return nil +} + +// Type implements pflag.Value.Type. +func (*bytesBase64Value) Type() string { + return "bytesBase64" +} + +func newBytesBase64Value(val []byte, p *[]byte) *bytesBase64Value { + *p = val + return (*bytesBase64Value)(p) +} + +func bytesBase64ValueConv(sval string) (interface{}, error) { + + bin, err := base64.StdEncoding.DecodeString(sval) + if err == nil { + return bin, nil + } + + return nil, fmt.Errorf("invalid string being converted to Bytes: %s %s", sval, err) +} + +// GetBytesBase64 return the []byte value of a flag with the given name +func (f *FlagSet) GetBytesBase64(name string) ([]byte, error) { + val, err := f.getFlagType(name, "bytesBase64", bytesBase64ValueConv) + + if err != nil { + return []byte{}, err + } + + return val.([]byte), nil +} + +// BytesBase64Var defines an []byte flag with specified name, default value, and usage string. +// The argument p points to an []byte variable in which to store the value of the flag. +func (f *FlagSet) BytesBase64Var(p *[]byte, name string, value []byte, usage string) { + f.VarP(newBytesBase64Value(value, p), name, "", usage) +} + +// BytesBase64VarP is like BytesBase64Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) BytesBase64VarP(p *[]byte, name, shorthand string, value []byte, usage string) { + f.VarP(newBytesBase64Value(value, p), name, shorthand, usage) +} + +// BytesBase64Var defines an []byte flag with specified name, default value, and usage string. +// The argument p points to an []byte variable in which to store the value of the flag. +func BytesBase64Var(p *[]byte, name string, value []byte, usage string) { + CommandLine.VarP(newBytesBase64Value(value, p), name, "", usage) +} + +// BytesBase64VarP is like BytesBase64Var, but accepts a shorthand letter that can be used after a single dash. +func BytesBase64VarP(p *[]byte, name, shorthand string, value []byte, usage string) { + CommandLine.VarP(newBytesBase64Value(value, p), name, shorthand, usage) +} + +// BytesBase64 defines an []byte flag with specified name, default value, and usage string. +// The return value is the address of an []byte variable that stores the value of the flag. +func (f *FlagSet) BytesBase64(name string, value []byte, usage string) *[]byte { + p := new([]byte) + f.BytesBase64VarP(p, name, "", value, usage) + return p +} + +// BytesBase64P is like BytesBase64, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) BytesBase64P(name, shorthand string, value []byte, usage string) *[]byte { + p := new([]byte) + f.BytesBase64VarP(p, name, shorthand, value, usage) + return p +} + +// BytesBase64 defines an []byte flag with specified name, default value, and usage string. +// The return value is the address of an []byte variable that stores the value of the flag. +func BytesBase64(name string, value []byte, usage string) *[]byte { + return CommandLine.BytesBase64P(name, "", value, usage) +} + +// BytesBase64P is like BytesBase64, but accepts a shorthand letter that can be used after a single dash. +func BytesBase64P(name, shorthand string, value []byte, usage string) *[]byte { + return CommandLine.BytesBase64P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/count.go b/vendor/github.com/spf13/pflag/count.go index aa126e44d1..a0b2679f71 100644 --- a/vendor/github.com/spf13/pflag/count.go +++ b/vendor/github.com/spf13/pflag/count.go @@ -46,7 +46,7 @@ func (f *FlagSet) GetCount(name string) (int, error) { // CountVar defines a count flag with specified name, default value, and usage string. // The argument p points to an int variable in which to store the value of the flag. -// A count flag will add 1 to its value evey time it is found on the command line +// A count flag will add 1 to its value every time it is found on the command line func (f *FlagSet) CountVar(p *int, name string, usage string) { f.CountVarP(p, name, "", usage) } @@ -69,7 +69,7 @@ func CountVarP(p *int, name, shorthand string, usage string) { // Count defines a count flag with specified name, default value, and usage string. // The return value is the address of an int variable that stores the value of the flag. -// A count flag will add 1 to its value evey time it is found on the command line +// A count flag will add 1 to its value every time it is found on the command line func (f *FlagSet) Count(name string, usage string) *int { p := new(int) f.CountVarP(p, name, "", usage) diff --git a/vendor/github.com/spf13/pflag/duration_slice.go b/vendor/github.com/spf13/pflag/duration_slice.go index 52c6b6dc10..badadda53f 100644 --- a/vendor/github.com/spf13/pflag/duration_slice.go +++ b/vendor/github.com/spf13/pflag/duration_slice.go @@ -51,6 +51,44 @@ func (s *durationSliceValue) String() string { return "[" + strings.Join(out, ",") + "]" } +func (s *durationSliceValue) fromString(val string) (time.Duration, error) { + return time.ParseDuration(val) +} + +func (s *durationSliceValue) toString(val time.Duration) string { + return fmt.Sprintf("%s", val) +} + +func (s *durationSliceValue) Append(val string) error { + i, err := s.fromString(val) + if err != nil { + return err + } + *s.value = append(*s.value, i) + return nil +} + +func (s *durationSliceValue) Replace(val []string) error { + out := make([]time.Duration, len(val)) + for i, d := range val { + var err error + out[i], err = s.fromString(d) + if err != nil { + return err + } + } + *s.value = out + return nil +} + +func (s *durationSliceValue) GetSlice() []string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = s.toString(d) + } + return out +} + func durationSliceConv(val string) (interface{}, error) { val = strings.Trim(val, "[]") // Empty string would cause a slice with one (empty) entry diff --git a/vendor/github.com/spf13/pflag/flag.go b/vendor/github.com/spf13/pflag/flag.go index 5eadc84e3c..24a5036e95 100644 --- a/vendor/github.com/spf13/pflag/flag.go +++ b/vendor/github.com/spf13/pflag/flag.go @@ -57,9 +57,9 @@ that give one-letter shorthands for flags. You can use these by appending var ip = flag.IntP("flagname", "f", 1234, "help message") var flagvar bool func init() { - flag.BoolVarP("boolname", "b", true, "help message") + flag.BoolVarP(&flagvar, "boolname", "b", true, "help message") } - flag.VarP(&flagVar, "varname", "v", 1234, "help message") + flag.VarP(&flagval, "varname", "v", "help message") Shorthand letters can be used with single dashes on the command line. Boolean shorthand flags can be combined with other shorthand flags. @@ -190,6 +190,18 @@ type Value interface { Type() string } +// SliceValue is a secondary interface to all flags which hold a list +// of values. This allows full control over the value of list flags, +// and avoids complicated marshalling and unmarshalling to csv. +type SliceValue interface { + // Append adds the specified value to the end of the flag value list. + Append(string) error + // Replace will fully overwrite any data currently in the flag value list. + Replace([]string) error + // GetSlice returns the flag value list as an array of strings. + GetSlice() []string +} + // sortFlags returns the flags as a slice in lexicographical sorted order. func sortFlags(flags map[NormalizedName]*Flag) []*Flag { list := make(sort.StringSlice, len(flags)) @@ -925,13 +937,16 @@ func stripUnknownFlagValue(args []string) []string { } first := args[0] - if first[0] == '-' { + if len(first) > 0 && first[0] == '-' { //--unknown --next-flag ... return args } //--unknown arg ... (args will be arg ...) - return args[1:] + if len(args) > 1 { + return args[1:] + } + return nil } func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []string, err error) { @@ -990,11 +1005,12 @@ func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []strin } func (f *FlagSet) parseSingleShortArg(shorthands string, args []string, fn parseFunc) (outShorts string, outArgs []string, err error) { + outArgs = args + if strings.HasPrefix(shorthands, "test.") { return } - outArgs = args outShorts = shorthands[1:] c := shorthands[0] diff --git a/vendor/github.com/spf13/pflag/float32_slice.go b/vendor/github.com/spf13/pflag/float32_slice.go new file mode 100644 index 0000000000..caa352741a --- /dev/null +++ b/vendor/github.com/spf13/pflag/float32_slice.go @@ -0,0 +1,174 @@ +package pflag + +import ( + "fmt" + "strconv" + "strings" +) + +// -- float32Slice Value +type float32SliceValue struct { + value *[]float32 + changed bool +} + +func newFloat32SliceValue(val []float32, p *[]float32) *float32SliceValue { + isv := new(float32SliceValue) + isv.value = p + *isv.value = val + return isv +} + +func (s *float32SliceValue) Set(val string) error { + ss := strings.Split(val, ",") + out := make([]float32, len(ss)) + for i, d := range ss { + var err error + var temp64 float64 + temp64, err = strconv.ParseFloat(d, 32) + if err != nil { + return err + } + out[i] = float32(temp64) + + } + if !s.changed { + *s.value = out + } else { + *s.value = append(*s.value, out...) + } + s.changed = true + return nil +} + +func (s *float32SliceValue) Type() string { + return "float32Slice" +} + +func (s *float32SliceValue) String() string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = fmt.Sprintf("%f", d) + } + return "[" + strings.Join(out, ",") + "]" +} + +func (s *float32SliceValue) fromString(val string) (float32, error) { + t64, err := strconv.ParseFloat(val, 32) + if err != nil { + return 0, err + } + return float32(t64), nil +} + +func (s *float32SliceValue) toString(val float32) string { + return fmt.Sprintf("%f", val) +} + +func (s *float32SliceValue) Append(val string) error { + i, err := s.fromString(val) + if err != nil { + return err + } + *s.value = append(*s.value, i) + return nil +} + +func (s *float32SliceValue) Replace(val []string) error { + out := make([]float32, len(val)) + for i, d := range val { + var err error + out[i], err = s.fromString(d) + if err != nil { + return err + } + } + *s.value = out + return nil +} + +func (s *float32SliceValue) GetSlice() []string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = s.toString(d) + } + return out +} + +func float32SliceConv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // Empty string would cause a slice with one (empty) entry + if len(val) == 0 { + return []float32{}, nil + } + ss := strings.Split(val, ",") + out := make([]float32, len(ss)) + for i, d := range ss { + var err error + var temp64 float64 + temp64, err = strconv.ParseFloat(d, 32) + if err != nil { + return nil, err + } + out[i] = float32(temp64) + + } + return out, nil +} + +// GetFloat32Slice return the []float32 value of a flag with the given name +func (f *FlagSet) GetFloat32Slice(name string) ([]float32, error) { + val, err := f.getFlagType(name, "float32Slice", float32SliceConv) + if err != nil { + return []float32{}, err + } + return val.([]float32), nil +} + +// Float32SliceVar defines a float32Slice flag with specified name, default value, and usage string. +// The argument p points to a []float32 variable in which to store the value of the flag. +func (f *FlagSet) Float32SliceVar(p *[]float32, name string, value []float32, usage string) { + f.VarP(newFloat32SliceValue(value, p), name, "", usage) +} + +// Float32SliceVarP is like Float32SliceVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float32SliceVarP(p *[]float32, name, shorthand string, value []float32, usage string) { + f.VarP(newFloat32SliceValue(value, p), name, shorthand, usage) +} + +// Float32SliceVar defines a float32[] flag with specified name, default value, and usage string. +// The argument p points to a float32[] variable in which to store the value of the flag. +func Float32SliceVar(p *[]float32, name string, value []float32, usage string) { + CommandLine.VarP(newFloat32SliceValue(value, p), name, "", usage) +} + +// Float32SliceVarP is like Float32SliceVar, but accepts a shorthand letter that can be used after a single dash. +func Float32SliceVarP(p *[]float32, name, shorthand string, value []float32, usage string) { + CommandLine.VarP(newFloat32SliceValue(value, p), name, shorthand, usage) +} + +// Float32Slice defines a []float32 flag with specified name, default value, and usage string. +// The return value is the address of a []float32 variable that stores the value of the flag. +func (f *FlagSet) Float32Slice(name string, value []float32, usage string) *[]float32 { + p := []float32{} + f.Float32SliceVarP(&p, name, "", value, usage) + return &p +} + +// Float32SliceP is like Float32Slice, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float32SliceP(name, shorthand string, value []float32, usage string) *[]float32 { + p := []float32{} + f.Float32SliceVarP(&p, name, shorthand, value, usage) + return &p +} + +// Float32Slice defines a []float32 flag with specified name, default value, and usage string. +// The return value is the address of a []float32 variable that stores the value of the flag. +func Float32Slice(name string, value []float32, usage string) *[]float32 { + return CommandLine.Float32SliceP(name, "", value, usage) +} + +// Float32SliceP is like Float32Slice, but accepts a shorthand letter that can be used after a single dash. +func Float32SliceP(name, shorthand string, value []float32, usage string) *[]float32 { + return CommandLine.Float32SliceP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/float64_slice.go b/vendor/github.com/spf13/pflag/float64_slice.go new file mode 100644 index 0000000000..85bf3073d5 --- /dev/null +++ b/vendor/github.com/spf13/pflag/float64_slice.go @@ -0,0 +1,166 @@ +package pflag + +import ( + "fmt" + "strconv" + "strings" +) + +// -- float64Slice Value +type float64SliceValue struct { + value *[]float64 + changed bool +} + +func newFloat64SliceValue(val []float64, p *[]float64) *float64SliceValue { + isv := new(float64SliceValue) + isv.value = p + *isv.value = val + return isv +} + +func (s *float64SliceValue) Set(val string) error { + ss := strings.Split(val, ",") + out := make([]float64, len(ss)) + for i, d := range ss { + var err error + out[i], err = strconv.ParseFloat(d, 64) + if err != nil { + return err + } + + } + if !s.changed { + *s.value = out + } else { + *s.value = append(*s.value, out...) + } + s.changed = true + return nil +} + +func (s *float64SliceValue) Type() string { + return "float64Slice" +} + +func (s *float64SliceValue) String() string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = fmt.Sprintf("%f", d) + } + return "[" + strings.Join(out, ",") + "]" +} + +func (s *float64SliceValue) fromString(val string) (float64, error) { + return strconv.ParseFloat(val, 64) +} + +func (s *float64SliceValue) toString(val float64) string { + return fmt.Sprintf("%f", val) +} + +func (s *float64SliceValue) Append(val string) error { + i, err := s.fromString(val) + if err != nil { + return err + } + *s.value = append(*s.value, i) + return nil +} + +func (s *float64SliceValue) Replace(val []string) error { + out := make([]float64, len(val)) + for i, d := range val { + var err error + out[i], err = s.fromString(d) + if err != nil { + return err + } + } + *s.value = out + return nil +} + +func (s *float64SliceValue) GetSlice() []string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = s.toString(d) + } + return out +} + +func float64SliceConv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // Empty string would cause a slice with one (empty) entry + if len(val) == 0 { + return []float64{}, nil + } + ss := strings.Split(val, ",") + out := make([]float64, len(ss)) + for i, d := range ss { + var err error + out[i], err = strconv.ParseFloat(d, 64) + if err != nil { + return nil, err + } + + } + return out, nil +} + +// GetFloat64Slice return the []float64 value of a flag with the given name +func (f *FlagSet) GetFloat64Slice(name string) ([]float64, error) { + val, err := f.getFlagType(name, "float64Slice", float64SliceConv) + if err != nil { + return []float64{}, err + } + return val.([]float64), nil +} + +// Float64SliceVar defines a float64Slice flag with specified name, default value, and usage string. +// The argument p points to a []float64 variable in which to store the value of the flag. +func (f *FlagSet) Float64SliceVar(p *[]float64, name string, value []float64, usage string) { + f.VarP(newFloat64SliceValue(value, p), name, "", usage) +} + +// Float64SliceVarP is like Float64SliceVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float64SliceVarP(p *[]float64, name, shorthand string, value []float64, usage string) { + f.VarP(newFloat64SliceValue(value, p), name, shorthand, usage) +} + +// Float64SliceVar defines a float64[] flag with specified name, default value, and usage string. +// The argument p points to a float64[] variable in which to store the value of the flag. +func Float64SliceVar(p *[]float64, name string, value []float64, usage string) { + CommandLine.VarP(newFloat64SliceValue(value, p), name, "", usage) +} + +// Float64SliceVarP is like Float64SliceVar, but accepts a shorthand letter that can be used after a single dash. +func Float64SliceVarP(p *[]float64, name, shorthand string, value []float64, usage string) { + CommandLine.VarP(newFloat64SliceValue(value, p), name, shorthand, usage) +} + +// Float64Slice defines a []float64 flag with specified name, default value, and usage string. +// The return value is the address of a []float64 variable that stores the value of the flag. +func (f *FlagSet) Float64Slice(name string, value []float64, usage string) *[]float64 { + p := []float64{} + f.Float64SliceVarP(&p, name, "", value, usage) + return &p +} + +// Float64SliceP is like Float64Slice, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Float64SliceP(name, shorthand string, value []float64, usage string) *[]float64 { + p := []float64{} + f.Float64SliceVarP(&p, name, shorthand, value, usage) + return &p +} + +// Float64Slice defines a []float64 flag with specified name, default value, and usage string. +// The return value is the address of a []float64 variable that stores the value of the flag. +func Float64Slice(name string, value []float64, usage string) *[]float64 { + return CommandLine.Float64SliceP(name, "", value, usage) +} + +// Float64SliceP is like Float64Slice, but accepts a shorthand letter that can be used after a single dash. +func Float64SliceP(name, shorthand string, value []float64, usage string) *[]float64 { + return CommandLine.Float64SliceP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/go.mod b/vendor/github.com/spf13/pflag/go.mod new file mode 100644 index 0000000000..b2287eec13 --- /dev/null +++ b/vendor/github.com/spf13/pflag/go.mod @@ -0,0 +1,3 @@ +module github.com/spf13/pflag + +go 1.12 diff --git a/vendor/github.com/spf13/pflag/go.sum b/vendor/github.com/spf13/pflag/go.sum new file mode 100644 index 0000000000..e69de29bb2 diff --git a/vendor/github.com/spf13/pflag/int32_slice.go b/vendor/github.com/spf13/pflag/int32_slice.go new file mode 100644 index 0000000000..ff128ff06d --- /dev/null +++ b/vendor/github.com/spf13/pflag/int32_slice.go @@ -0,0 +1,174 @@ +package pflag + +import ( + "fmt" + "strconv" + "strings" +) + +// -- int32Slice Value +type int32SliceValue struct { + value *[]int32 + changed bool +} + +func newInt32SliceValue(val []int32, p *[]int32) *int32SliceValue { + isv := new(int32SliceValue) + isv.value = p + *isv.value = val + return isv +} + +func (s *int32SliceValue) Set(val string) error { + ss := strings.Split(val, ",") + out := make([]int32, len(ss)) + for i, d := range ss { + var err error + var temp64 int64 + temp64, err = strconv.ParseInt(d, 0, 32) + if err != nil { + return err + } + out[i] = int32(temp64) + + } + if !s.changed { + *s.value = out + } else { + *s.value = append(*s.value, out...) + } + s.changed = true + return nil +} + +func (s *int32SliceValue) Type() string { + return "int32Slice" +} + +func (s *int32SliceValue) String() string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = fmt.Sprintf("%d", d) + } + return "[" + strings.Join(out, ",") + "]" +} + +func (s *int32SliceValue) fromString(val string) (int32, error) { + t64, err := strconv.ParseInt(val, 0, 32) + if err != nil { + return 0, err + } + return int32(t64), nil +} + +func (s *int32SliceValue) toString(val int32) string { + return fmt.Sprintf("%d", val) +} + +func (s *int32SliceValue) Append(val string) error { + i, err := s.fromString(val) + if err != nil { + return err + } + *s.value = append(*s.value, i) + return nil +} + +func (s *int32SliceValue) Replace(val []string) error { + out := make([]int32, len(val)) + for i, d := range val { + var err error + out[i], err = s.fromString(d) + if err != nil { + return err + } + } + *s.value = out + return nil +} + +func (s *int32SliceValue) GetSlice() []string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = s.toString(d) + } + return out +} + +func int32SliceConv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // Empty string would cause a slice with one (empty) entry + if len(val) == 0 { + return []int32{}, nil + } + ss := strings.Split(val, ",") + out := make([]int32, len(ss)) + for i, d := range ss { + var err error + var temp64 int64 + temp64, err = strconv.ParseInt(d, 0, 32) + if err != nil { + return nil, err + } + out[i] = int32(temp64) + + } + return out, nil +} + +// GetInt32Slice return the []int32 value of a flag with the given name +func (f *FlagSet) GetInt32Slice(name string) ([]int32, error) { + val, err := f.getFlagType(name, "int32Slice", int32SliceConv) + if err != nil { + return []int32{}, err + } + return val.([]int32), nil +} + +// Int32SliceVar defines a int32Slice flag with specified name, default value, and usage string. +// The argument p points to a []int32 variable in which to store the value of the flag. +func (f *FlagSet) Int32SliceVar(p *[]int32, name string, value []int32, usage string) { + f.VarP(newInt32SliceValue(value, p), name, "", usage) +} + +// Int32SliceVarP is like Int32SliceVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int32SliceVarP(p *[]int32, name, shorthand string, value []int32, usage string) { + f.VarP(newInt32SliceValue(value, p), name, shorthand, usage) +} + +// Int32SliceVar defines a int32[] flag with specified name, default value, and usage string. +// The argument p points to a int32[] variable in which to store the value of the flag. +func Int32SliceVar(p *[]int32, name string, value []int32, usage string) { + CommandLine.VarP(newInt32SliceValue(value, p), name, "", usage) +} + +// Int32SliceVarP is like Int32SliceVar, but accepts a shorthand letter that can be used after a single dash. +func Int32SliceVarP(p *[]int32, name, shorthand string, value []int32, usage string) { + CommandLine.VarP(newInt32SliceValue(value, p), name, shorthand, usage) +} + +// Int32Slice defines a []int32 flag with specified name, default value, and usage string. +// The return value is the address of a []int32 variable that stores the value of the flag. +func (f *FlagSet) Int32Slice(name string, value []int32, usage string) *[]int32 { + p := []int32{} + f.Int32SliceVarP(&p, name, "", value, usage) + return &p +} + +// Int32SliceP is like Int32Slice, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int32SliceP(name, shorthand string, value []int32, usage string) *[]int32 { + p := []int32{} + f.Int32SliceVarP(&p, name, shorthand, value, usage) + return &p +} + +// Int32Slice defines a []int32 flag with specified name, default value, and usage string. +// The return value is the address of a []int32 variable that stores the value of the flag. +func Int32Slice(name string, value []int32, usage string) *[]int32 { + return CommandLine.Int32SliceP(name, "", value, usage) +} + +// Int32SliceP is like Int32Slice, but accepts a shorthand letter that can be used after a single dash. +func Int32SliceP(name, shorthand string, value []int32, usage string) *[]int32 { + return CommandLine.Int32SliceP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/int64_slice.go b/vendor/github.com/spf13/pflag/int64_slice.go new file mode 100644 index 0000000000..25464638f3 --- /dev/null +++ b/vendor/github.com/spf13/pflag/int64_slice.go @@ -0,0 +1,166 @@ +package pflag + +import ( + "fmt" + "strconv" + "strings" +) + +// -- int64Slice Value +type int64SliceValue struct { + value *[]int64 + changed bool +} + +func newInt64SliceValue(val []int64, p *[]int64) *int64SliceValue { + isv := new(int64SliceValue) + isv.value = p + *isv.value = val + return isv +} + +func (s *int64SliceValue) Set(val string) error { + ss := strings.Split(val, ",") + out := make([]int64, len(ss)) + for i, d := range ss { + var err error + out[i], err = strconv.ParseInt(d, 0, 64) + if err != nil { + return err + } + + } + if !s.changed { + *s.value = out + } else { + *s.value = append(*s.value, out...) + } + s.changed = true + return nil +} + +func (s *int64SliceValue) Type() string { + return "int64Slice" +} + +func (s *int64SliceValue) String() string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = fmt.Sprintf("%d", d) + } + return "[" + strings.Join(out, ",") + "]" +} + +func (s *int64SliceValue) fromString(val string) (int64, error) { + return strconv.ParseInt(val, 0, 64) +} + +func (s *int64SliceValue) toString(val int64) string { + return fmt.Sprintf("%d", val) +} + +func (s *int64SliceValue) Append(val string) error { + i, err := s.fromString(val) + if err != nil { + return err + } + *s.value = append(*s.value, i) + return nil +} + +func (s *int64SliceValue) Replace(val []string) error { + out := make([]int64, len(val)) + for i, d := range val { + var err error + out[i], err = s.fromString(d) + if err != nil { + return err + } + } + *s.value = out + return nil +} + +func (s *int64SliceValue) GetSlice() []string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = s.toString(d) + } + return out +} + +func int64SliceConv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // Empty string would cause a slice with one (empty) entry + if len(val) == 0 { + return []int64{}, nil + } + ss := strings.Split(val, ",") + out := make([]int64, len(ss)) + for i, d := range ss { + var err error + out[i], err = strconv.ParseInt(d, 0, 64) + if err != nil { + return nil, err + } + + } + return out, nil +} + +// GetInt64Slice return the []int64 value of a flag with the given name +func (f *FlagSet) GetInt64Slice(name string) ([]int64, error) { + val, err := f.getFlagType(name, "int64Slice", int64SliceConv) + if err != nil { + return []int64{}, err + } + return val.([]int64), nil +} + +// Int64SliceVar defines a int64Slice flag with specified name, default value, and usage string. +// The argument p points to a []int64 variable in which to store the value of the flag. +func (f *FlagSet) Int64SliceVar(p *[]int64, name string, value []int64, usage string) { + f.VarP(newInt64SliceValue(value, p), name, "", usage) +} + +// Int64SliceVarP is like Int64SliceVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int64SliceVarP(p *[]int64, name, shorthand string, value []int64, usage string) { + f.VarP(newInt64SliceValue(value, p), name, shorthand, usage) +} + +// Int64SliceVar defines a int64[] flag with specified name, default value, and usage string. +// The argument p points to a int64[] variable in which to store the value of the flag. +func Int64SliceVar(p *[]int64, name string, value []int64, usage string) { + CommandLine.VarP(newInt64SliceValue(value, p), name, "", usage) +} + +// Int64SliceVarP is like Int64SliceVar, but accepts a shorthand letter that can be used after a single dash. +func Int64SliceVarP(p *[]int64, name, shorthand string, value []int64, usage string) { + CommandLine.VarP(newInt64SliceValue(value, p), name, shorthand, usage) +} + +// Int64Slice defines a []int64 flag with specified name, default value, and usage string. +// The return value is the address of a []int64 variable that stores the value of the flag. +func (f *FlagSet) Int64Slice(name string, value []int64, usage string) *[]int64 { + p := []int64{} + f.Int64SliceVarP(&p, name, "", value, usage) + return &p +} + +// Int64SliceP is like Int64Slice, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) Int64SliceP(name, shorthand string, value []int64, usage string) *[]int64 { + p := []int64{} + f.Int64SliceVarP(&p, name, shorthand, value, usage) + return &p +} + +// Int64Slice defines a []int64 flag with specified name, default value, and usage string. +// The return value is the address of a []int64 variable that stores the value of the flag. +func Int64Slice(name string, value []int64, usage string) *[]int64 { + return CommandLine.Int64SliceP(name, "", value, usage) +} + +// Int64SliceP is like Int64Slice, but accepts a shorthand letter that can be used after a single dash. +func Int64SliceP(name, shorthand string, value []int64, usage string) *[]int64 { + return CommandLine.Int64SliceP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/int_slice.go b/vendor/github.com/spf13/pflag/int_slice.go index 1e7c9edde9..e71c39d91a 100644 --- a/vendor/github.com/spf13/pflag/int_slice.go +++ b/vendor/github.com/spf13/pflag/int_slice.go @@ -51,6 +51,36 @@ func (s *intSliceValue) String() string { return "[" + strings.Join(out, ",") + "]" } +func (s *intSliceValue) Append(val string) error { + i, err := strconv.Atoi(val) + if err != nil { + return err + } + *s.value = append(*s.value, i) + return nil +} + +func (s *intSliceValue) Replace(val []string) error { + out := make([]int, len(val)) + for i, d := range val { + var err error + out[i], err = strconv.Atoi(d) + if err != nil { + return err + } + } + *s.value = out + return nil +} + +func (s *intSliceValue) GetSlice() []string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = strconv.Itoa(d) + } + return out +} + func intSliceConv(val string) (interface{}, error) { val = strings.Trim(val, "[]") // Empty string would cause a slice with one (empty) entry diff --git a/vendor/github.com/spf13/pflag/ip_slice.go b/vendor/github.com/spf13/pflag/ip_slice.go index 7dd196fe3f..775faae4fd 100644 --- a/vendor/github.com/spf13/pflag/ip_slice.go +++ b/vendor/github.com/spf13/pflag/ip_slice.go @@ -72,9 +72,47 @@ func (s *ipSliceValue) String() string { return "[" + out + "]" } +func (s *ipSliceValue) fromString(val string) (net.IP, error) { + return net.ParseIP(strings.TrimSpace(val)), nil +} + +func (s *ipSliceValue) toString(val net.IP) string { + return val.String() +} + +func (s *ipSliceValue) Append(val string) error { + i, err := s.fromString(val) + if err != nil { + return err + } + *s.value = append(*s.value, i) + return nil +} + +func (s *ipSliceValue) Replace(val []string) error { + out := make([]net.IP, len(val)) + for i, d := range val { + var err error + out[i], err = s.fromString(d) + if err != nil { + return err + } + } + *s.value = out + return nil +} + +func (s *ipSliceValue) GetSlice() []string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = s.toString(d) + } + return out +} + func ipSliceConv(val string) (interface{}, error) { val = strings.Trim(val, "[]") - // Emtpy string would cause a slice with one (empty) entry + // Empty string would cause a slice with one (empty) entry if len(val) == 0 { return []net.IP{}, nil } diff --git a/vendor/github.com/spf13/pflag/string_array.go b/vendor/github.com/spf13/pflag/string_array.go index fa7bc60187..4894af8180 100644 --- a/vendor/github.com/spf13/pflag/string_array.go +++ b/vendor/github.com/spf13/pflag/string_array.go @@ -23,6 +23,32 @@ func (s *stringArrayValue) Set(val string) error { return nil } +func (s *stringArrayValue) Append(val string) error { + *s.value = append(*s.value, val) + return nil +} + +func (s *stringArrayValue) Replace(val []string) error { + out := make([]string, len(val)) + for i, d := range val { + var err error + out[i] = d + if err != nil { + return err + } + } + *s.value = out + return nil +} + +func (s *stringArrayValue) GetSlice() []string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = d + } + return out +} + func (s *stringArrayValue) Type() string { return "stringArray" } diff --git a/vendor/github.com/spf13/pflag/string_slice.go b/vendor/github.com/spf13/pflag/string_slice.go index 0cd3ccc083..3cb2e69dba 100644 --- a/vendor/github.com/spf13/pflag/string_slice.go +++ b/vendor/github.com/spf13/pflag/string_slice.go @@ -62,6 +62,20 @@ func (s *stringSliceValue) String() string { return "[" + str + "]" } +func (s *stringSliceValue) Append(val string) error { + *s.value = append(*s.value, val) + return nil +} + +func (s *stringSliceValue) Replace(val []string) error { + *s.value = val + return nil +} + +func (s *stringSliceValue) GetSlice() []string { + return *s.value +} + func stringSliceConv(sval string) (interface{}, error) { sval = sval[1 : len(sval)-1] // An empty string would cause a slice with one (empty) string @@ -84,7 +98,7 @@ func (f *FlagSet) GetStringSlice(name string) ([]string, error) { // The argument p points to a []string variable in which to store the value of the flag. // Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. // For example: -// --ss="v1,v2" -ss="v3" +// --ss="v1,v2" --ss="v3" // will result in // []string{"v1", "v2", "v3"} func (f *FlagSet) StringSliceVar(p *[]string, name string, value []string, usage string) { @@ -100,7 +114,7 @@ func (f *FlagSet) StringSliceVarP(p *[]string, name, shorthand string, value []s // The argument p points to a []string variable in which to store the value of the flag. // Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. // For example: -// --ss="v1,v2" -ss="v3" +// --ss="v1,v2" --ss="v3" // will result in // []string{"v1", "v2", "v3"} func StringSliceVar(p *[]string, name string, value []string, usage string) { @@ -116,7 +130,7 @@ func StringSliceVarP(p *[]string, name, shorthand string, value []string, usage // The return value is the address of a []string variable that stores the value of the flag. // Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. // For example: -// --ss="v1,v2" -ss="v3" +// --ss="v1,v2" --ss="v3" // will result in // []string{"v1", "v2", "v3"} func (f *FlagSet) StringSlice(name string, value []string, usage string) *[]string { @@ -136,7 +150,7 @@ func (f *FlagSet) StringSliceP(name, shorthand string, value []string, usage str // The return value is the address of a []string variable that stores the value of the flag. // Compared to StringArray flags, StringSlice flags take comma-separated value as arguments and split them accordingly. // For example: -// --ss="v1,v2" -ss="v3" +// --ss="v1,v2" --ss="v3" // will result in // []string{"v1", "v2", "v3"} func StringSlice(name string, value []string, usage string) *[]string { diff --git a/vendor/github.com/spf13/pflag/string_to_int.go b/vendor/github.com/spf13/pflag/string_to_int.go new file mode 100644 index 0000000000..5ceda3965d --- /dev/null +++ b/vendor/github.com/spf13/pflag/string_to_int.go @@ -0,0 +1,149 @@ +package pflag + +import ( + "bytes" + "fmt" + "strconv" + "strings" +) + +// -- stringToInt Value +type stringToIntValue struct { + value *map[string]int + changed bool +} + +func newStringToIntValue(val map[string]int, p *map[string]int) *stringToIntValue { + ssv := new(stringToIntValue) + ssv.value = p + *ssv.value = val + return ssv +} + +// Format: a=1,b=2 +func (s *stringToIntValue) Set(val string) error { + ss := strings.Split(val, ",") + out := make(map[string]int, len(ss)) + for _, pair := range ss { + kv := strings.SplitN(pair, "=", 2) + if len(kv) != 2 { + return fmt.Errorf("%s must be formatted as key=value", pair) + } + var err error + out[kv[0]], err = strconv.Atoi(kv[1]) + if err != nil { + return err + } + } + if !s.changed { + *s.value = out + } else { + for k, v := range out { + (*s.value)[k] = v + } + } + s.changed = true + return nil +} + +func (s *stringToIntValue) Type() string { + return "stringToInt" +} + +func (s *stringToIntValue) String() string { + var buf bytes.Buffer + i := 0 + for k, v := range *s.value { + if i > 0 { + buf.WriteRune(',') + } + buf.WriteString(k) + buf.WriteRune('=') + buf.WriteString(strconv.Itoa(v)) + i++ + } + return "[" + buf.String() + "]" +} + +func stringToIntConv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // An empty string would cause an empty map + if len(val) == 0 { + return map[string]int{}, nil + } + ss := strings.Split(val, ",") + out := make(map[string]int, len(ss)) + for _, pair := range ss { + kv := strings.SplitN(pair, "=", 2) + if len(kv) != 2 { + return nil, fmt.Errorf("%s must be formatted as key=value", pair) + } + var err error + out[kv[0]], err = strconv.Atoi(kv[1]) + if err != nil { + return nil, err + } + } + return out, nil +} + +// GetStringToInt return the map[string]int value of a flag with the given name +func (f *FlagSet) GetStringToInt(name string) (map[string]int, error) { + val, err := f.getFlagType(name, "stringToInt", stringToIntConv) + if err != nil { + return map[string]int{}, err + } + return val.(map[string]int), nil +} + +// StringToIntVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a map[string]int variable in which to store the values of the multiple flags. +// The value of each argument will not try to be separated by comma +func (f *FlagSet) StringToIntVar(p *map[string]int, name string, value map[string]int, usage string) { + f.VarP(newStringToIntValue(value, p), name, "", usage) +} + +// StringToIntVarP is like StringToIntVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringToIntVarP(p *map[string]int, name, shorthand string, value map[string]int, usage string) { + f.VarP(newStringToIntValue(value, p), name, shorthand, usage) +} + +// StringToIntVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a map[string]int variable in which to store the value of the flag. +// The value of each argument will not try to be separated by comma +func StringToIntVar(p *map[string]int, name string, value map[string]int, usage string) { + CommandLine.VarP(newStringToIntValue(value, p), name, "", usage) +} + +// StringToIntVarP is like StringToIntVar, but accepts a shorthand letter that can be used after a single dash. +func StringToIntVarP(p *map[string]int, name, shorthand string, value map[string]int, usage string) { + CommandLine.VarP(newStringToIntValue(value, p), name, shorthand, usage) +} + +// StringToInt defines a string flag with specified name, default value, and usage string. +// The return value is the address of a map[string]int variable that stores the value of the flag. +// The value of each argument will not try to be separated by comma +func (f *FlagSet) StringToInt(name string, value map[string]int, usage string) *map[string]int { + p := map[string]int{} + f.StringToIntVarP(&p, name, "", value, usage) + return &p +} + +// StringToIntP is like StringToInt, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringToIntP(name, shorthand string, value map[string]int, usage string) *map[string]int { + p := map[string]int{} + f.StringToIntVarP(&p, name, shorthand, value, usage) + return &p +} + +// StringToInt defines a string flag with specified name, default value, and usage string. +// The return value is the address of a map[string]int variable that stores the value of the flag. +// The value of each argument will not try to be separated by comma +func StringToInt(name string, value map[string]int, usage string) *map[string]int { + return CommandLine.StringToIntP(name, "", value, usage) +} + +// StringToIntP is like StringToInt, but accepts a shorthand letter that can be used after a single dash. +func StringToIntP(name, shorthand string, value map[string]int, usage string) *map[string]int { + return CommandLine.StringToIntP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/string_to_int64.go b/vendor/github.com/spf13/pflag/string_to_int64.go new file mode 100644 index 0000000000..a807a04a0b --- /dev/null +++ b/vendor/github.com/spf13/pflag/string_to_int64.go @@ -0,0 +1,149 @@ +package pflag + +import ( + "bytes" + "fmt" + "strconv" + "strings" +) + +// -- stringToInt64 Value +type stringToInt64Value struct { + value *map[string]int64 + changed bool +} + +func newStringToInt64Value(val map[string]int64, p *map[string]int64) *stringToInt64Value { + ssv := new(stringToInt64Value) + ssv.value = p + *ssv.value = val + return ssv +} + +// Format: a=1,b=2 +func (s *stringToInt64Value) Set(val string) error { + ss := strings.Split(val, ",") + out := make(map[string]int64, len(ss)) + for _, pair := range ss { + kv := strings.SplitN(pair, "=", 2) + if len(kv) != 2 { + return fmt.Errorf("%s must be formatted as key=value", pair) + } + var err error + out[kv[0]], err = strconv.ParseInt(kv[1], 10, 64) + if err != nil { + return err + } + } + if !s.changed { + *s.value = out + } else { + for k, v := range out { + (*s.value)[k] = v + } + } + s.changed = true + return nil +} + +func (s *stringToInt64Value) Type() string { + return "stringToInt64" +} + +func (s *stringToInt64Value) String() string { + var buf bytes.Buffer + i := 0 + for k, v := range *s.value { + if i > 0 { + buf.WriteRune(',') + } + buf.WriteString(k) + buf.WriteRune('=') + buf.WriteString(strconv.FormatInt(v, 10)) + i++ + } + return "[" + buf.String() + "]" +} + +func stringToInt64Conv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // An empty string would cause an empty map + if len(val) == 0 { + return map[string]int64{}, nil + } + ss := strings.Split(val, ",") + out := make(map[string]int64, len(ss)) + for _, pair := range ss { + kv := strings.SplitN(pair, "=", 2) + if len(kv) != 2 { + return nil, fmt.Errorf("%s must be formatted as key=value", pair) + } + var err error + out[kv[0]], err = strconv.ParseInt(kv[1], 10, 64) + if err != nil { + return nil, err + } + } + return out, nil +} + +// GetStringToInt64 return the map[string]int64 value of a flag with the given name +func (f *FlagSet) GetStringToInt64(name string) (map[string]int64, error) { + val, err := f.getFlagType(name, "stringToInt64", stringToInt64Conv) + if err != nil { + return map[string]int64{}, err + } + return val.(map[string]int64), nil +} + +// StringToInt64Var defines a string flag with specified name, default value, and usage string. +// The argument p point64s to a map[string]int64 variable in which to store the values of the multiple flags. +// The value of each argument will not try to be separated by comma +func (f *FlagSet) StringToInt64Var(p *map[string]int64, name string, value map[string]int64, usage string) { + f.VarP(newStringToInt64Value(value, p), name, "", usage) +} + +// StringToInt64VarP is like StringToInt64Var, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringToInt64VarP(p *map[string]int64, name, shorthand string, value map[string]int64, usage string) { + f.VarP(newStringToInt64Value(value, p), name, shorthand, usage) +} + +// StringToInt64Var defines a string flag with specified name, default value, and usage string. +// The argument p point64s to a map[string]int64 variable in which to store the value of the flag. +// The value of each argument will not try to be separated by comma +func StringToInt64Var(p *map[string]int64, name string, value map[string]int64, usage string) { + CommandLine.VarP(newStringToInt64Value(value, p), name, "", usage) +} + +// StringToInt64VarP is like StringToInt64Var, but accepts a shorthand letter that can be used after a single dash. +func StringToInt64VarP(p *map[string]int64, name, shorthand string, value map[string]int64, usage string) { + CommandLine.VarP(newStringToInt64Value(value, p), name, shorthand, usage) +} + +// StringToInt64 defines a string flag with specified name, default value, and usage string. +// The return value is the address of a map[string]int64 variable that stores the value of the flag. +// The value of each argument will not try to be separated by comma +func (f *FlagSet) StringToInt64(name string, value map[string]int64, usage string) *map[string]int64 { + p := map[string]int64{} + f.StringToInt64VarP(&p, name, "", value, usage) + return &p +} + +// StringToInt64P is like StringToInt64, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringToInt64P(name, shorthand string, value map[string]int64, usage string) *map[string]int64 { + p := map[string]int64{} + f.StringToInt64VarP(&p, name, shorthand, value, usage) + return &p +} + +// StringToInt64 defines a string flag with specified name, default value, and usage string. +// The return value is the address of a map[string]int64 variable that stores the value of the flag. +// The value of each argument will not try to be separated by comma +func StringToInt64(name string, value map[string]int64, usage string) *map[string]int64 { + return CommandLine.StringToInt64P(name, "", value, usage) +} + +// StringToInt64P is like StringToInt64, but accepts a shorthand letter that can be used after a single dash. +func StringToInt64P(name, shorthand string, value map[string]int64, usage string) *map[string]int64 { + return CommandLine.StringToInt64P(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/string_to_string.go b/vendor/github.com/spf13/pflag/string_to_string.go new file mode 100644 index 0000000000..890a01afc0 --- /dev/null +++ b/vendor/github.com/spf13/pflag/string_to_string.go @@ -0,0 +1,160 @@ +package pflag + +import ( + "bytes" + "encoding/csv" + "fmt" + "strings" +) + +// -- stringToString Value +type stringToStringValue struct { + value *map[string]string + changed bool +} + +func newStringToStringValue(val map[string]string, p *map[string]string) *stringToStringValue { + ssv := new(stringToStringValue) + ssv.value = p + *ssv.value = val + return ssv +} + +// Format: a=1,b=2 +func (s *stringToStringValue) Set(val string) error { + var ss []string + n := strings.Count(val, "=") + switch n { + case 0: + return fmt.Errorf("%s must be formatted as key=value", val) + case 1: + ss = append(ss, strings.Trim(val, `"`)) + default: + r := csv.NewReader(strings.NewReader(val)) + var err error + ss, err = r.Read() + if err != nil { + return err + } + } + + out := make(map[string]string, len(ss)) + for _, pair := range ss { + kv := strings.SplitN(pair, "=", 2) + if len(kv) != 2 { + return fmt.Errorf("%s must be formatted as key=value", pair) + } + out[kv[0]] = kv[1] + } + if !s.changed { + *s.value = out + } else { + for k, v := range out { + (*s.value)[k] = v + } + } + s.changed = true + return nil +} + +func (s *stringToStringValue) Type() string { + return "stringToString" +} + +func (s *stringToStringValue) String() string { + records := make([]string, 0, len(*s.value)>>1) + for k, v := range *s.value { + records = append(records, k+"="+v) + } + + var buf bytes.Buffer + w := csv.NewWriter(&buf) + if err := w.Write(records); err != nil { + panic(err) + } + w.Flush() + return "[" + strings.TrimSpace(buf.String()) + "]" +} + +func stringToStringConv(val string) (interface{}, error) { + val = strings.Trim(val, "[]") + // An empty string would cause an empty map + if len(val) == 0 { + return map[string]string{}, nil + } + r := csv.NewReader(strings.NewReader(val)) + ss, err := r.Read() + if err != nil { + return nil, err + } + out := make(map[string]string, len(ss)) + for _, pair := range ss { + kv := strings.SplitN(pair, "=", 2) + if len(kv) != 2 { + return nil, fmt.Errorf("%s must be formatted as key=value", pair) + } + out[kv[0]] = kv[1] + } + return out, nil +} + +// GetStringToString return the map[string]string value of a flag with the given name +func (f *FlagSet) GetStringToString(name string) (map[string]string, error) { + val, err := f.getFlagType(name, "stringToString", stringToStringConv) + if err != nil { + return map[string]string{}, err + } + return val.(map[string]string), nil +} + +// StringToStringVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a map[string]string variable in which to store the values of the multiple flags. +// The value of each argument will not try to be separated by comma +func (f *FlagSet) StringToStringVar(p *map[string]string, name string, value map[string]string, usage string) { + f.VarP(newStringToStringValue(value, p), name, "", usage) +} + +// StringToStringVarP is like StringToStringVar, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringToStringVarP(p *map[string]string, name, shorthand string, value map[string]string, usage string) { + f.VarP(newStringToStringValue(value, p), name, shorthand, usage) +} + +// StringToStringVar defines a string flag with specified name, default value, and usage string. +// The argument p points to a map[string]string variable in which to store the value of the flag. +// The value of each argument will not try to be separated by comma +func StringToStringVar(p *map[string]string, name string, value map[string]string, usage string) { + CommandLine.VarP(newStringToStringValue(value, p), name, "", usage) +} + +// StringToStringVarP is like StringToStringVar, but accepts a shorthand letter that can be used after a single dash. +func StringToStringVarP(p *map[string]string, name, shorthand string, value map[string]string, usage string) { + CommandLine.VarP(newStringToStringValue(value, p), name, shorthand, usage) +} + +// StringToString defines a string flag with specified name, default value, and usage string. +// The return value is the address of a map[string]string variable that stores the value of the flag. +// The value of each argument will not try to be separated by comma +func (f *FlagSet) StringToString(name string, value map[string]string, usage string) *map[string]string { + p := map[string]string{} + f.StringToStringVarP(&p, name, "", value, usage) + return &p +} + +// StringToStringP is like StringToString, but accepts a shorthand letter that can be used after a single dash. +func (f *FlagSet) StringToStringP(name, shorthand string, value map[string]string, usage string) *map[string]string { + p := map[string]string{} + f.StringToStringVarP(&p, name, shorthand, value, usage) + return &p +} + +// StringToString defines a string flag with specified name, default value, and usage string. +// The return value is the address of a map[string]string variable that stores the value of the flag. +// The value of each argument will not try to be separated by comma +func StringToString(name string, value map[string]string, usage string) *map[string]string { + return CommandLine.StringToStringP(name, "", value, usage) +} + +// StringToStringP is like StringToString, but accepts a shorthand letter that can be used after a single dash. +func StringToStringP(name, shorthand string, value map[string]string, usage string) *map[string]string { + return CommandLine.StringToStringP(name, shorthand, value, usage) +} diff --git a/vendor/github.com/spf13/pflag/uint_slice.go b/vendor/github.com/spf13/pflag/uint_slice.go index edd94c600a..5fa924835e 100644 --- a/vendor/github.com/spf13/pflag/uint_slice.go +++ b/vendor/github.com/spf13/pflag/uint_slice.go @@ -50,6 +50,48 @@ func (s *uintSliceValue) String() string { return "[" + strings.Join(out, ",") + "]" } +func (s *uintSliceValue) fromString(val string) (uint, error) { + t, err := strconv.ParseUint(val, 10, 0) + if err != nil { + return 0, err + } + return uint(t), nil +} + +func (s *uintSliceValue) toString(val uint) string { + return fmt.Sprintf("%d", val) +} + +func (s *uintSliceValue) Append(val string) error { + i, err := s.fromString(val) + if err != nil { + return err + } + *s.value = append(*s.value, i) + return nil +} + +func (s *uintSliceValue) Replace(val []string) error { + out := make([]uint, len(val)) + for i, d := range val { + var err error + out[i], err = s.fromString(d) + if err != nil { + return err + } + } + *s.value = out + return nil +} + +func (s *uintSliceValue) GetSlice() []string { + out := make([]string, len(*s.value)) + for i, d := range *s.value { + out[i] = s.toString(d) + } + return out +} + func uintSliceConv(val string) (interface{}, error) { val = strings.Trim(val, "[]") // Empty string would cause a slice with one (empty) entry diff --git a/vendor/github.com/syndtr/gocapability/capability/capability_linux.go b/vendor/github.com/syndtr/gocapability/capability/capability_linux.go index 68e79f7e60..1567dc8104 100644 --- a/vendor/github.com/syndtr/gocapability/capability/capability_linux.go +++ b/vendor/github.com/syndtr/gocapability/capability/capability_linux.go @@ -103,12 +103,12 @@ func newPid(pid int) (c Capabilities, err error) { case linuxCapVer1: p := new(capsV1) p.hdr.version = capVers - p.hdr.pid = pid + p.hdr.pid = int32(pid) c = p case linuxCapVer2, linuxCapVer3: p := new(capsV3) p.hdr.version = capVers - p.hdr.pid = pid + p.hdr.pid = int32(pid) c = p default: err = errUnknownVers diff --git a/vendor/github.com/syndtr/gocapability/capability/syscall_linux.go b/vendor/github.com/syndtr/gocapability/capability/syscall_linux.go index eb7170083a..3d2bf6927f 100644 --- a/vendor/github.com/syndtr/gocapability/capability/syscall_linux.go +++ b/vendor/github.com/syndtr/gocapability/capability/syscall_linux.go @@ -13,7 +13,7 @@ import ( type capHeader struct { version uint32 - pid int + pid int32 } type capData struct { diff --git a/vendor/github.com/tonistiigi/fsutil/.travis.yml b/vendor/github.com/tonistiigi/fsutil/.travis.yml index c9d9e87a24..8f121382b4 100644 --- a/vendor/github.com/tonistiigi/fsutil/.travis.yml +++ b/vendor/github.com/tonistiigi/fsutil/.travis.yml @@ -7,8 +7,15 @@ services: language: go go: - - "1.10" + - "1.11.x" + + +install: + - export GO111MODULE=on script: + - go build ./... - go test -c -o test ./ - - sudo ./test -test.v \ No newline at end of file + - sudo ./test -test.v + - go test -c -o test ./copy + - sudo ./test -test.v diff --git a/vendor/github.com/tonistiigi/fsutil/diff.go b/vendor/github.com/tonistiigi/fsutil/diff.go index 340a0e48a4..1cbc32b306 100644 --- a/vendor/github.com/tonistiigi/fsutil/diff.go +++ b/vendor/github.com/tonistiigi/fsutil/diff.go @@ -4,6 +4,9 @@ import ( "context" "hash" "os" + + "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" ) type walkerFn func(ctx context.Context, pathC chan<- *currentPath) error @@ -14,7 +17,7 @@ func Changes(ctx context.Context, a, b walkerFn, changeFn ChangeFunc) error { type HandleChangeFn func(ChangeKind, string, os.FileInfo, error) error -type ContentHasher func(*Stat) (hash.Hash, error) +type ContentHasher func(*types.Stat) (hash.Hash, error) func GetWalkerFn(root string) walkerFn { return func(ctx context.Context, pathC chan<- *currentPath) error { @@ -23,9 +26,14 @@ func GetWalkerFn(root string) walkerFn { return err } + stat, ok := f.Sys().(*types.Stat) + if !ok { + return errors.Errorf("%T invalid file without stat information", f.Sys()) + } + p := ¤tPath{ path: path, - f: f, + stat: stat, } select { diff --git a/vendor/github.com/tonistiigi/fsutil/diff_containerd.go b/vendor/github.com/tonistiigi/fsutil/diff_containerd.go index 73c0005040..370271523b 100644 --- a/vendor/github.com/tonistiigi/fsutil/diff_containerd.go +++ b/vendor/github.com/tonistiigi/fsutil/diff_containerd.go @@ -5,6 +5,7 @@ import ( "os" "strings" + "github.com/tonistiigi/fsutil/types" "golang.org/x/sync/errgroup" ) @@ -36,12 +37,12 @@ type ChangeFunc func(ChangeKind, string, os.FileInfo, error) error type currentPath struct { path string - f os.FileInfo + stat *types.Stat // fullPath string } // doubleWalkDiff walks both directories to create a diff -func doubleWalkDiff(ctx context.Context, changeFn ChangeFunc, a, b walkerFn) (err error) { +func doubleWalkDiff(ctx context.Context, changeFn ChangeFunc, a, b walkerFn, filter FilterFunc) (err error) { g, ctx := errgroup.WithContext(ctx) var ( @@ -85,14 +86,22 @@ func doubleWalkDiff(ctx context.Context, changeFn ChangeFunc, a, b walkerFn) (er continue } - var f os.FileInfo - k, p := pathChange(f1, f2) + var f *types.Stat + var f2copy *currentPath + if f2 != nil { + statCopy := *f2.stat + if filter != nil { + filter(f2.path, &statCopy) + } + f2copy = ¤tPath{path: f2.path, stat: &statCopy} + } + k, p := pathChange(f1, f2copy) switch k { case ChangeKindAdd: if rmdir != "" { rmdir = "" } - f = f2.f + f = f2.stat f2 = nil case ChangeKindDelete: // Check if this file is already removed by being @@ -100,30 +109,30 @@ func doubleWalkDiff(ctx context.Context, changeFn ChangeFunc, a, b walkerFn) (er if rmdir != "" && strings.HasPrefix(f1.path, rmdir) { f1 = nil continue - } else if rmdir == "" && f1.f.IsDir() { + } else if rmdir == "" && f1.stat.IsDir() { rmdir = f1.path + string(os.PathSeparator) } else if rmdir != "" { rmdir = "" } f1 = nil case ChangeKindModify: - same, err := sameFile(f1, f2) + same, err := sameFile(f1, f2copy) if err != nil { return err } - if f1.f.IsDir() && !f2.f.IsDir() { + if f1.stat.IsDir() && !f2copy.stat.IsDir() { rmdir = f1.path + string(os.PathSeparator) } else if rmdir != "" { rmdir = "" } - f = f2.f + f = f2.stat f1 = nil f2 = nil if same { continue loop0 } } - if err := changeFn(k, p, f, nil); err != nil { + if err := changeFn(k, p, &StatInfo{f}, nil); err != nil { return err } } @@ -158,34 +167,23 @@ func pathChange(lower, upper *currentPath) (ChangeKind, string) { func sameFile(f1, f2 *currentPath) (same bool, retErr error) { // If not a directory also check size, modtime, and content - if !f1.f.IsDir() { - if f1.f.Size() != f2.f.Size() { + if !f1.stat.IsDir() { + if f1.stat.Size_ != f2.stat.Size_ { return false, nil } - t1 := f1.f.ModTime() - t2 := f2.f.ModTime() - if t1.UnixNano() != t2.UnixNano() { + if f1.stat.ModTime != f2.stat.ModTime { return false, nil } } - ls1, ok := f1.f.Sys().(*Stat) - if !ok { - return false, nil - } - ls2, ok := f2.f.Sys().(*Stat) - if !ok { - return false, nil - } - - return compareStat(ls1, ls2) + return compareStat(f1.stat, f2.stat) } // compareStat returns whether the stats are equivalent, // whether the files are considered the same file, and // an error -func compareStat(ls1, ls2 *Stat) (bool, error) { +func compareStat(ls1, ls2 *types.Stat) (bool, error) { return ls1.Mode == ls2.Mode && ls1.Uid == ls2.Uid && ls1.Gid == ls2.Gid && ls1.Devmajor == ls2.Devmajor && ls1.Devminor == ls2.Devminor && ls1.Linkname == ls2.Linkname, nil } diff --git a/vendor/github.com/tonistiigi/fsutil/diskwriter.go b/vendor/github.com/tonistiigi/fsutil/diskwriter.go index 4b727ed446..70323c88c9 100644 --- a/vendor/github.com/tonistiigi/fsutil/diskwriter.go +++ b/vendor/github.com/tonistiigi/fsutil/diskwriter.go @@ -12,6 +12,7 @@ import ( "github.com/opencontainers/go-digest" "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" "golang.org/x/sync/errgroup" ) @@ -25,7 +26,7 @@ type DiskWriterOpt struct { Filter FilterFunc } -type FilterFunc func(*Stat) bool +type FilterFunc func(string, *types.Stat) bool type DiskWriter struct { opt DiskWriterOpt @@ -83,6 +84,12 @@ func (dw *DiskWriter) HandleChange(kind ChangeKind, p string, fi os.FileInfo, er destPath := filepath.Join(dw.dest, filepath.FromSlash(p)) if kind == ChangeKindDelete { + if dw.filter != nil { + var empty types.Stat + if ok := dw.filter(p, &empty); !ok { + return nil + } + } // todo: no need to validate if diff is trusted but is it always? if err := os.RemoveAll(destPath); err != nil { return errors.Wrapf(err, "failed to remove: %s", destPath) @@ -95,7 +102,7 @@ func (dw *DiskWriter) HandleChange(kind ChangeKind, p string, fi os.FileInfo, er return nil } - stat, ok := fi.Sys().(*Stat) + stat, ok := fi.Sys().(*types.Stat) if !ok { return errors.Errorf("%s invalid change without stat information", p) } @@ -103,7 +110,7 @@ func (dw *DiskWriter) HandleChange(kind ChangeKind, p string, fi os.FileInfo, er statCopy := *stat if dw.filter != nil { - if ok := dw.filter(&statCopy); !ok { + if ok := dw.filter(p, &statCopy); !ok { return nil } } @@ -187,7 +194,7 @@ func (dw *DiskWriter) HandleChange(kind ChangeKind, p string, fi os.FileInfo, er if isRegularFile { if dw.opt.AsyncDataCb != nil { - dw.requestAsyncFileData(p, destPath, fi) + dw.requestAsyncFileData(p, destPath, fi, &statCopy) } } else { return dw.processChange(kind, p, fi, nil) @@ -196,7 +203,7 @@ func (dw *DiskWriter) HandleChange(kind ChangeKind, p string, fi os.FileInfo, er return nil } -func (dw *DiskWriter) requestAsyncFileData(p, dest string, fi os.FileInfo) { +func (dw *DiskWriter) requestAsyncFileData(p, dest string, fi os.FileInfo, st *types.Stat) { // todo: limit worker threads dw.eg.Go(func() error { if err := dw.processChange(ChangeKindAdd, p, fi, &lazyFileWriter{ @@ -204,7 +211,7 @@ func (dw *DiskWriter) requestAsyncFileData(p, dest string, fi os.FileInfo) { }); err != nil { return err } - return chtimes(dest, fi.ModTime().UnixNano()) // TODO: parent dirs + return chtimes(dest, st.ModTime) // TODO: parent dirs }) } @@ -246,7 +253,7 @@ type hashedWriter struct { } func newHashWriter(ch ContentHasher, fi os.FileInfo, w io.WriteCloser) (*hashedWriter, error) { - stat, ok := fi.Sys().(*Stat) + stat, ok := fi.Sys().(*types.Stat) if !ok { return nil, errors.Errorf("invalid change without stat information") } diff --git a/vendor/github.com/tonistiigi/fsutil/diskwriter_unix.go b/vendor/github.com/tonistiigi/fsutil/diskwriter_unix.go index 19dffabf74..ff0a22e3ca 100644 --- a/vendor/github.com/tonistiigi/fsutil/diskwriter_unix.go +++ b/vendor/github.com/tonistiigi/fsutil/diskwriter_unix.go @@ -8,9 +8,10 @@ import ( "github.com/containerd/continuity/sysx" "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" ) -func rewriteMetadata(p string, stat *Stat) error { +func rewriteMetadata(p string, stat *types.Stat) error { for key, value := range stat.Xattrs { sysx.Setxattr(p, key, value, 0) } @@ -34,7 +35,7 @@ func rewriteMetadata(p string, stat *Stat) error { // handleTarTypeBlockCharFifo is an OS-specific helper function used by // createTarFile to handle the following types of header: Block; Char; Fifo -func handleTarTypeBlockCharFifo(path string, stat *Stat) error { +func handleTarTypeBlockCharFifo(path string, stat *types.Stat) error { mode := uint32(stat.Mode & 07777) if os.FileMode(stat.Mode)&os.ModeCharDevice != 0 { mode |= syscall.S_IFCHR diff --git a/vendor/github.com/tonistiigi/fsutil/diskwriter_windows.go b/vendor/github.com/tonistiigi/fsutil/diskwriter_windows.go index c6d0d7bec7..036544f0b6 100644 --- a/vendor/github.com/tonistiigi/fsutil/diskwriter_windows.go +++ b/vendor/github.com/tonistiigi/fsutil/diskwriter_windows.go @@ -4,14 +4,15 @@ package fsutil import ( "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" ) -func rewriteMetadata(p string, stat *Stat) error { +func rewriteMetadata(p string, stat *types.Stat) error { return chtimes(p, stat.ModTime) } // handleTarTypeBlockCharFifo is an OS-specific helper function used by // createTarFile to handle the following types of header: Block; Char; Fifo -func handleTarTypeBlockCharFifo(path string, stat *Stat) error { +func handleTarTypeBlockCharFifo(path string, stat *types.Stat) error { return errors.New("Not implemented on windows") } diff --git a/vendor/github.com/tonistiigi/fsutil/fs.go b/vendor/github.com/tonistiigi/fsutil/fs.go index 996f4e4a18..a9467e9402 100644 --- a/vendor/github.com/tonistiigi/fsutil/fs.go +++ b/vendor/github.com/tonistiigi/fsutil/fs.go @@ -3,12 +3,15 @@ package fsutil import ( "context" "io" + "io/ioutil" "os" "path" "path/filepath" + "sort" "strings" "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" ) type FS interface { @@ -36,36 +39,80 @@ func (fs *fs) Open(p string) (io.ReadCloser, error) { return os.Open(filepath.Join(fs.root, p)) } -func SubDirFS(fs FS, stat Stat) FS { - return &subDirFS{fs: fs, stat: stat} +type Dir struct { + Stat types.Stat + FS FS +} + +func SubDirFS(dirs []Dir) (FS, error) { + sort.Slice(dirs, func(i, j int) bool { + return dirs[i].Stat.Path < dirs[j].Stat.Path + }) + m := map[string]Dir{} + for _, d := range dirs { + if path.Base(d.Stat.Path) != d.Stat.Path { + return nil, errors.Errorf("subdir %s must be single file", d.Stat.Path) + } + if _, ok := m[d.Stat.Path]; ok { + return nil, errors.Errorf("invalid path %s", d.Stat.Path) + } + m[d.Stat.Path] = d + } + return &subDirFS{m: m, dirs: dirs}, nil } type subDirFS struct { - fs FS - stat Stat + m map[string]Dir + dirs []Dir } func (fs *subDirFS) Walk(ctx context.Context, fn filepath.WalkFunc) error { - main := &StatInfo{Stat: &fs.stat} - if !main.IsDir() { - return errors.Errorf("fs subdir not mode directory") + for _, d := range fs.dirs { + fi := &StatInfo{Stat: &d.Stat} + if !fi.IsDir() { + return errors.Errorf("fs subdir %s not mode directory", d.Stat.Path) + } + if err := fn(d.Stat.Path, fi, nil); err != nil { + return err + } + if err := d.FS.Walk(ctx, func(p string, fi os.FileInfo, err error) error { + stat, ok := fi.Sys().(*types.Stat) + if !ok { + return errors.Wrapf(err, "invalid fileinfo without stat info: %s", p) + } + stat.Path = path.Join(d.Stat.Path, stat.Path) + if stat.Linkname != "" { + if fi.Mode()&os.ModeSymlink != 0 { + if strings.HasPrefix(stat.Linkname, "/") { + stat.Linkname = path.Join("/"+d.Stat.Path, stat.Linkname) + } + } else { + stat.Linkname = path.Join(d.Stat.Path, stat.Linkname) + } + } + return fn(filepath.Join(d.Stat.Path, p), &StatInfo{stat}, nil) + }); err != nil { + return err + } } - if main.Name() != fs.stat.Path { - return errors.Errorf("subdir path must be single file") + return nil +} + +func (fs *subDirFS) Open(p string) (io.ReadCloser, error) { + parts := strings.SplitN(filepath.Clean(p), string(filepath.Separator), 2) + if len(parts) == 0 { + return ioutil.NopCloser(&emptyReader{}), nil } - if err := fn(fs.stat.Path, main, nil); err != nil { - return err + d, ok := fs.m[parts[0]] + if !ok { + return nil, os.ErrNotExist } - return fs.fs.Walk(ctx, func(p string, fi os.FileInfo, err error) error { - stat, ok := fi.Sys().(*Stat) - if !ok { - return errors.Wrapf(err, "invalid fileinfo without stat info: %s", p) - } - stat.Path = path.Join(fs.stat.Path, stat.Path) - return fn(filepath.Join(fs.stat.Path, p), &StatInfo{stat}, nil) - }) + return d.FS.Open(parts[1]) } -func (fs *subDirFS) Open(p string) (io.ReadCloser, error) { - return fs.fs.Open(strings.TrimPrefix(p, fs.stat.Path+"/")) +type emptyReader struct { +} + +func (*emptyReader) Read([]byte) (int, error) { + return 0, io.EOF } diff --git a/vendor/github.com/tonistiigi/fsutil/go.mod b/vendor/github.com/tonistiigi/fsutil/go.mod new file mode 100644 index 0000000000..c6485f6155 --- /dev/null +++ b/vendor/github.com/tonistiigi/fsutil/go.mod @@ -0,0 +1,28 @@ +module github.com/tonistiigi/fsutil + +require ( + github.com/Microsoft/go-winio v0.4.11 // indirect + github.com/Microsoft/hcsshim v0.8.5 // indirect + github.com/containerd/containerd v1.2.4 + github.com/containerd/continuity v0.0.0-20181001140422-bd77b46c8352 + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/docker/docker v0.0.0-20180531152204-71cd53e4a197 + github.com/docker/go-units v0.3.1 // indirect + github.com/gogo/protobuf v1.0.0 + github.com/google/go-cmp v0.2.0 // indirect + github.com/gotestyourself/gotestyourself v2.2.0+incompatible // indirect + github.com/onsi/ginkgo v1.7.0 // indirect + github.com/onsi/gomega v1.4.3 // indirect + github.com/opencontainers/go-digest v1.0.0-rc1 + github.com/opencontainers/image-spec v1.0.1 // indirect + github.com/opencontainers/runc v1.0.0-rc6 // indirect + github.com/pkg/errors v0.8.1 + github.com/sirupsen/logrus v1.0.3 // indirect + github.com/stretchr/testify v1.3.0 + golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 // indirect + golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f + golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e + gopkg.in/airbrake/gobrake.v2 v2.0.9 // indirect + gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2 // indirect + gotest.tools v2.1.0+incompatible // indirect +) diff --git a/vendor/github.com/tonistiigi/fsutil/go.sum b/vendor/github.com/tonistiigi/fsutil/go.sum new file mode 100644 index 0000000000..016bc637e9 --- /dev/null +++ b/vendor/github.com/tonistiigi/fsutil/go.sum @@ -0,0 +1,71 @@ +github.com/Microsoft/go-winio v0.4.11 h1:zoIOcVf0xPN1tnMVbTtEdI+P8OofVk3NObnwOQ6nK2Q= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/hcsshim v0.8.5 h1:kg/pore5Yyf4DXQ5nelSqfaYQG54YIdNeFRKJaPnFiM= +github.com/Microsoft/hcsshim v0.8.5/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/containerd/containerd v1.2.4 h1:qN8LCvw+KA5wVCOnHspD/n2K9cJ34+YOs05qBBWhHiw= +github.com/containerd/containerd v1.2.4/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/continuity v0.0.0-20181001140422-bd77b46c8352 h1:CdBoaTKPl60tksFVWYc5QnLWwXBcU+XcLiXx8+NcZ9o= +github.com/containerd/continuity v0.0.0-20181001140422-bd77b46c8352/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/docker/docker v0.0.0-20180531152204-71cd53e4a197 h1:raQhUHOMIAZAWHmo3hLEwoIy0aVkKb2uxZdWw/Up+HI= +github.com/docker/docker v0.0.0-20180531152204-71cd53e4a197/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-units v0.3.1 h1:QAFdsA6jLCnglbqE6mUsHuPcJlntY94DkxHf4deHKIU= +github.com/docker/go-units v0.3.1/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/gogo/protobuf v1.0.0 h1:2jyBKDKU/8v3v2xVR2PtiWQviFUyiaGk2rpfyFT8rTM= +github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/gotestyourself/gotestyourself v2.2.0+incompatible h1:AQwinXlbQR2HvPjQZOmDhRqsv5mZf+Jb1RnSLxcqZcI= +github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v1.0.0-rc6 h1:7AoN22rYxxkmsJS48wFaziH/n0OvrZVqL/TglgHKbKQ= +github.com/opencontainers/runc v1.0.0-rc6/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/sirupsen/logrus v1.0.3 h1:B5C/igNWoiULof20pKfY4VntcIPqKuwEmoLZrabbUrc= +github.com/sirupsen/logrus v1.0.3/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793 h1:u+LnwYTOOW7Ukr/fppxEb1Nwz0AtPflrblfvUudpo+I= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd h1:nTDtHvHSdCn1m6ITfMRqtOd/9+7a3s8RBNOZ3eYZzJA= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e h1:o3PsSEY8E4eXWkXrIP9YJALUkVZqzHJT5DOasTyn8Vs= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/airbrake/gobrake.v2 v2.0.9 h1:7z2uVWwn7oVeeugY1DtlPAy5H+KYgB1KeKTnqjNatLo= +gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2 h1:OAj3g0cR6Dx/R07QgQe8wkA9RNjB2u4i700xBkIT4e0= +gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gotest.tools v2.1.0+incompatible h1:5USw7CrJBYKqjg9R7QlA6jzqZKEAtvW82aNmsxxGPxw= +gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= diff --git a/vendor/github.com/tonistiigi/fsutil/hardlinks.go b/vendor/github.com/tonistiigi/fsutil/hardlinks.go index e598ead7e6..d977f0d6bb 100644 --- a/vendor/github.com/tonistiigi/fsutil/hardlinks.go +++ b/vendor/github.com/tonistiigi/fsutil/hardlinks.go @@ -4,6 +4,7 @@ import ( "os" "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" ) // Hardlinks validates that all targets for links were part of the changes @@ -25,7 +26,7 @@ func (v *Hardlinks) HandleChange(kind ChangeKind, p string, fi os.FileInfo, err return nil } - stat, ok := fi.Sys().(*Stat) + stat, ok := fi.Sys().(*types.Stat) if !ok { return errors.Errorf("invalid change without stat info: %s", p) } diff --git a/vendor/github.com/tonistiigi/fsutil/receive.go b/vendor/github.com/tonistiigi/fsutil/receive.go index 14ccb6c7bf..0210dcdb1a 100644 --- a/vendor/github.com/tonistiigi/fsutil/receive.go +++ b/vendor/github.com/tonistiigi/fsutil/receive.go @@ -7,6 +7,7 @@ import ( "sync" "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" "golang.org/x/sync/errgroup" ) @@ -91,7 +92,13 @@ func (w *dynamicWalker) fill(ctx context.Context, pathC chan<- *currentPath) err if !ok { return nil } - pathC <- p + select { + case pathC <- p: + case <-ctx.Done(): + w.err = ctx.Err() + close(w.closeCh) + return ctx.Err() + } case <-ctx.Done(): w.err = ctx.Err() close(w.closeCh) @@ -119,21 +126,21 @@ func (r *receiver) run(ctx context.Context) error { g.Go(func() (retErr error) { defer func() { if retErr != nil { - r.conn.SendMsg(&Packet{Type: PACKET_ERR, Data: []byte(retErr.Error())}) + r.conn.SendMsg(&types.Packet{Type: types.PACKET_ERR, Data: []byte(retErr.Error())}) } }() destWalker := emptyWalker if !r.merge { destWalker = GetWalkerFn(r.dest) } - err := doubleWalkDiff(ctx, dw.HandleChange, destWalker, w.fill) + err := doubleWalkDiff(ctx, dw.HandleChange, destWalker, w.fill, r.filter) if err != nil { return err } if err := dw.Wait(ctx); err != nil { return err } - r.conn.SendMsg(&Packet{Type: PACKET_FIN}) + r.conn.SendMsg(&types.Packet{Type: types.PACKET_FIN}) return nil }) @@ -146,9 +153,9 @@ func (r *receiver) run(ctx context.Context) error { r.progressCb(size, true) }() } - var p Packet + var p types.Packet for { - p = Packet{Data: p.Data[:0]} + p = types.Packet{Data: p.Data[:0]} if err := r.conn.RecvMsg(&p); err != nil { return err } @@ -158,9 +165,9 @@ func (r *receiver) run(ctx context.Context) error { } switch p.Type { - case PACKET_ERR: + case types.PACKET_ERR: return errors.Errorf("error from sender: %s", p.Data) - case PACKET_STAT: + case types.PACKET_STAT: if p.Stat == nil { if err := w.update(nil); err != nil { return err @@ -173,22 +180,22 @@ func (r *receiver) run(ctx context.Context) error { r.mu.Unlock() } i++ - cp := ¤tPath{path: p.Stat.Path, f: &StatInfo{p.Stat}} - if err := r.orderValidator.HandleChange(ChangeKindAdd, cp.path, cp.f, nil); err != nil { + cp := ¤tPath{path: p.Stat.Path, stat: p.Stat} + if err := r.orderValidator.HandleChange(ChangeKindAdd, cp.path, &StatInfo{cp.stat}, nil); err != nil { return err } - if err := r.hlValidator.HandleChange(ChangeKindAdd, cp.path, cp.f, nil); err != nil { + if err := r.hlValidator.HandleChange(ChangeKindAdd, cp.path, &StatInfo{cp.stat}, nil); err != nil { return err } if err := w.update(cp); err != nil { return err } - case PACKET_DATA: + case types.PACKET_DATA: r.muPipes.Lock() pw, ok := r.pipes[p.ID] r.muPipes.Unlock() if !ok { - return errors.Errorf("invalid file request %s", p.ID) + return errors.Errorf("invalid file request %d", p.ID) } if len(p.Data) == 0 { if err := pw.Close(); err != nil { @@ -199,9 +206,9 @@ func (r *receiver) run(ctx context.Context) error { return err } } - case PACKET_FIN: + case types.PACKET_FIN: for { - var p Packet + var p types.Packet if err := r.conn.RecvMsg(&p); err != nil { if err == io.EOF { return nil @@ -229,7 +236,7 @@ func (r *receiver) asyncDataFunc(ctx context.Context, p string, wc io.WriteClose r.muPipes.Lock() r.pipes[id] = wwc r.muPipes.Unlock() - if err := r.conn.SendMsg(&Packet{Type: PACKET_REQ, ID: id}); err != nil { + if err := r.conn.SendMsg(&types.Packet{Type: types.PACKET_REQ, ID: id}); err != nil { return err } err := wwc.Wait(ctx) diff --git a/vendor/github.com/tonistiigi/fsutil/send.go b/vendor/github.com/tonistiigi/fsutil/send.go index e32f6827fb..e7c5a37d1b 100644 --- a/vendor/github.com/tonistiigi/fsutil/send.go +++ b/vendor/github.com/tonistiigi/fsutil/send.go @@ -7,6 +7,7 @@ import ( "sync" "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" "golang.org/x/sync/errgroup" ) @@ -56,7 +57,7 @@ func (s *sender) run(ctx context.Context) error { g.Go(func() error { err := s.walk(ctx) if err != nil { - s.conn.SendMsg(&Packet{Type: PACKET_ERR, Data: []byte(err.Error())}) + s.conn.SendMsg(&types.Packet{Type: types.PACKET_ERR, Data: []byte(err.Error())}) } return err }) @@ -86,19 +87,19 @@ func (s *sender) run(ctx context.Context) error { return ctx.Err() default: } - var p Packet + var p types.Packet if err := s.conn.RecvMsg(&p); err != nil { return err } switch p.Type { - case PACKET_ERR: + case types.PACKET_ERR: return errors.Errorf("error from receiver: %s", p.Data) - case PACKET_REQ: + case types.PACKET_REQ: if err := s.queue(p.ID); err != nil { return err } - case PACKET_FIN: - return s.conn.SendMsg(&Packet{Type: PACKET_FIN}) + case types.PACKET_FIN: + return s.conn.SendMsg(&types.Packet{Type: types.PACKET_FIN}) } } }) @@ -136,7 +137,7 @@ func (s *sender) sendFile(h *sendHandle) error { return err } } - return s.conn.SendMsg(&Packet{ID: h.id, Type: PACKET_DATA}) + return s.conn.SendMsg(&types.Packet{ID: h.id, Type: types.PACKET_DATA}) } func (s *sender) walk(ctx context.Context) error { @@ -145,13 +146,13 @@ func (s *sender) walk(ctx context.Context) error { if err != nil { return err } - stat, ok := fi.Sys().(*Stat) + stat, ok := fi.Sys().(*types.Stat) if !ok { return errors.Wrapf(err, "invalid fileinfo without stat info: %s", path) } - p := &Packet{ - Type: PACKET_STAT, + p := &types.Packet{ + Type: types.PACKET_STAT, Stat: stat, } if fileCanRequestData(os.FileMode(stat.Mode)) { @@ -166,7 +167,7 @@ func (s *sender) walk(ctx context.Context) error { if err != nil { return err } - return errors.Wrapf(s.conn.SendMsg(&Packet{Type: PACKET_STAT}), "failed to send last stat") + return errors.Wrapf(s.conn.SendMsg(&types.Packet{Type: types.PACKET_STAT}), "failed to send last stat") } func fileCanRequestData(m os.FileMode) bool { @@ -184,7 +185,7 @@ func (fs *fileSender) Write(dt []byte) (int, error) { if len(dt) == 0 { return 0, nil } - p := &Packet{Type: PACKET_DATA, ID: fs.id, Data: dt} + p := &types.Packet{Type: types.PACKET_DATA, ID: fs.id, Data: dt} if err := fs.sender.conn.SendMsg(p); err != nil { return 0, err } diff --git a/vendor/github.com/tonistiigi/fsutil/stat.go b/vendor/github.com/tonistiigi/fsutil/stat.go new file mode 100644 index 0000000000..789dce3dbf --- /dev/null +++ b/vendor/github.com/tonistiigi/fsutil/stat.go @@ -0,0 +1,64 @@ +package fsutil + +import ( + "os" + "path/filepath" + "runtime" + + "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" +) + +// constructs a Stat object. path is where the path can be found right +// now, relpath is the desired path to be recorded in the stat (so +// relative to whatever base dir is relevant). fi is the os.Stat +// info. inodemap is used to calculate hardlinks over a series of +// mkstat calls and maps inode to the canonical (aka "first") path for +// a set of hardlinks to that inode. +func mkstat(path, relpath string, fi os.FileInfo, inodemap map[uint64]string) (*types.Stat, error) { + relpath = filepath.ToSlash(relpath) + + stat := &types.Stat{ + Path: relpath, + Mode: uint32(fi.Mode()), + ModTime: fi.ModTime().UnixNano(), + } + + setUnixOpt(fi, stat, relpath, inodemap) + + if !fi.IsDir() { + stat.Size_ = fi.Size() + if fi.Mode()&os.ModeSymlink != 0 { + link, err := os.Readlink(path) + if err != nil { + return nil, errors.Wrapf(err, "failed to readlink %s", path) + } + stat.Linkname = link + } + } + if err := loadXattr(path, stat); err != nil { + return nil, errors.Wrapf(err, "failed to xattr %s", relpath) + } + + if runtime.GOOS == "windows" { + permPart := stat.Mode & uint32(os.ModePerm) + noPermPart := stat.Mode &^ uint32(os.ModePerm) + // Add the x bit: make everything +x from windows + permPart |= 0111 + permPart &= 0755 + stat.Mode = noPermPart | permPart + } + + // Clear the socket bit since archive/tar.FileInfoHeader does not handle it + stat.Mode &^= uint32(os.ModeSocket) + + return stat, nil +} + +func Stat(path string) (*types.Stat, error) { + fi, err := os.Lstat(path) + if err != nil { + return nil, errors.Wrap(err, "os stat") + } + return mkstat(path, filepath.Base(path), fi, nil) +} diff --git a/vendor/github.com/tonistiigi/fsutil/walker_unix.go b/vendor/github.com/tonistiigi/fsutil/stat_unix.go similarity index 65% rename from vendor/github.com/tonistiigi/fsutil/walker_unix.go rename to vendor/github.com/tonistiigi/fsutil/stat_unix.go index 7e8ee80346..af08522c40 100644 --- a/vendor/github.com/tonistiigi/fsutil/walker_unix.go +++ b/vendor/github.com/tonistiigi/fsutil/stat_unix.go @@ -8,11 +8,15 @@ import ( "github.com/containerd/continuity/sysx" "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" ) -func loadXattr(origpath string, stat *Stat) error { +func loadXattr(origpath string, stat *types.Stat) error { xattrs, err := sysx.LListxattr(origpath) if err != nil { + if errors.Cause(err) == syscall.ENOTSUP { + return nil + } return errors.Wrapf(err, "failed to xattr %s", origpath) } if len(xattrs) > 0 { @@ -28,7 +32,7 @@ func loadXattr(origpath string, stat *Stat) error { return nil } -func setUnixOpt(fi os.FileInfo, stat *Stat, path string, seenFiles map[uint64]string) { +func setUnixOpt(fi os.FileInfo, stat *types.Stat, path string, seenFiles map[uint64]string) { s := fi.Sys().(*syscall.Stat_t) stat.Uid = s.Uid @@ -42,13 +46,19 @@ func setUnixOpt(fi os.FileInfo, stat *Stat, path string, seenFiles map[uint64]st } ino := s.Ino - if s.Nlink > 1 { - if oldpath, ok := seenFiles[ino]; ok { - stat.Linkname = oldpath - stat.Size_ = 0 + linked := false + if seenFiles != nil { + if s.Nlink > 1 { + if oldpath, ok := seenFiles[ino]; ok { + stat.Linkname = oldpath + stat.Size_ = 0 + linked = true + } + } + if !linked { + seenFiles[ino] = path } } - seenFiles[ino] = path } } diff --git a/vendor/github.com/tonistiigi/fsutil/stat_windows.go b/vendor/github.com/tonistiigi/fsutil/stat_windows.go new file mode 100644 index 0000000000..66379bd84c --- /dev/null +++ b/vendor/github.com/tonistiigi/fsutil/stat_windows.go @@ -0,0 +1,16 @@ +// +build windows + +package fsutil + +import ( + "os" + + "github.com/tonistiigi/fsutil/types" +) + +func loadXattr(_ string, _ *types.Stat) error { + return nil +} + +func setUnixOpt(_ os.FileInfo, _ *types.Stat, _ string, _ map[uint64]string) { +} diff --git a/vendor/github.com/tonistiigi/fsutil/tarwriter.go b/vendor/github.com/tonistiigi/fsutil/tarwriter.go new file mode 100644 index 0000000000..8dea63bab2 --- /dev/null +++ b/vendor/github.com/tonistiigi/fsutil/tarwriter.go @@ -0,0 +1,72 @@ +package fsutil + +import ( + "archive/tar" + "context" + "io" + "os" + "path/filepath" + "strings" + + "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" +) + +func WriteTar(ctx context.Context, fs FS, w io.Writer) error { + tw := tar.NewWriter(w) + err := fs.Walk(ctx, func(path string, fi os.FileInfo, err error) error { + stat, ok := fi.Sys().(*types.Stat) + if !ok { + return errors.Wrapf(err, "invalid fileinfo without stat info: %s", path) + } + hdr, err := tar.FileInfoHeader(fi, stat.Linkname) + if err != nil { + return err + } + + name := filepath.ToSlash(path) + if fi.IsDir() && !strings.HasSuffix(name, "/") { + name += "/" + } + hdr.Name = name + + hdr.Uid = int(stat.Uid) + hdr.Gid = int(stat.Gid) + hdr.Devmajor = stat.Devmajor + hdr.Devminor = stat.Devminor + hdr.Linkname = stat.Linkname + if hdr.Linkname != "" { + hdr.Size = 0 + hdr.Typeflag = tar.TypeLink + } + + if len(stat.Xattrs) > 0 { + hdr.PAXRecords = map[string]string{} + } + for k, v := range stat.Xattrs { + hdr.PAXRecords["SCHILY.xattr."+k] = string(v) + } + + if err := tw.WriteHeader(hdr); err != nil { + return errors.Wrap(err, "failed to write file header") + } + + if hdr.Typeflag == tar.TypeReg && hdr.Size > 0 && hdr.Linkname == "" { + rc, err := fs.Open(path) + if err != nil { + return err + } + if _, err := io.Copy(tw, rc); err != nil { + return err + } + if err := rc.Close(); err != nil { + return err + } + } + return nil + }) + if err != nil { + return err + } + return tw.Close() +} diff --git a/vendor/github.com/tonistiigi/fsutil/generate.go b/vendor/github.com/tonistiigi/fsutil/types/generate.go similarity index 80% rename from vendor/github.com/tonistiigi/fsutil/generate.go rename to vendor/github.com/tonistiigi/fsutil/types/generate.go index e433195669..5c03178f36 100644 --- a/vendor/github.com/tonistiigi/fsutil/generate.go +++ b/vendor/github.com/tonistiigi/fsutil/types/generate.go @@ -1,3 +1,3 @@ -package fsutil +package types //go:generate protoc --gogoslick_out=. stat.proto wire.proto diff --git a/vendor/github.com/tonistiigi/fsutil/types/stat.go b/vendor/github.com/tonistiigi/fsutil/types/stat.go new file mode 100644 index 0000000000..b79fd2bd76 --- /dev/null +++ b/vendor/github.com/tonistiigi/fsutil/types/stat.go @@ -0,0 +1,7 @@ +package types + +import "os" + +func (s Stat) IsDir() bool { + return os.FileMode(s.Mode).IsDir() +} diff --git a/vendor/github.com/tonistiigi/fsutil/stat.pb.go b/vendor/github.com/tonistiigi/fsutil/types/stat.pb.go similarity index 79% rename from vendor/github.com/tonistiigi/fsutil/stat.pb.go rename to vendor/github.com/tonistiigi/fsutil/types/stat.pb.go index 3f6925e4b0..d8b984e65f 100644 --- a/vendor/github.com/tonistiigi/fsutil/stat.pb.go +++ b/vendor/github.com/tonistiigi/fsutil/types/stat.pb.go @@ -1,9 +1,8 @@ -// Code generated by protoc-gen-gogo. +// Code generated by protoc-gen-gogo. DO NOT EDIT. // source: stat.proto -// DO NOT EDIT! /* - Package fsutil is a generated protocol buffer package. + Package types is a generated protocol buffer package. It is generated from these files: stat.proto @@ -13,7 +12,7 @@ Stat Packet */ -package fsutil +package types import proto "github.com/gogo/protobuf/proto" import fmt "fmt" @@ -23,7 +22,7 @@ import bytes "bytes" import strings "strings" import reflect "reflect" -import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" +import sortkeys "github.com/gogo/protobuf/sortkeys" import io "io" @@ -127,14 +126,11 @@ func (m *Stat) GetXattrs() map[string][]byte { } func init() { - proto.RegisterType((*Stat)(nil), "fsutil.Stat") + proto.RegisterType((*Stat)(nil), "fsutil.types.Stat") } func (this *Stat) Equal(that interface{}) bool { if that == nil { - if this == nil { - return true - } - return false + return this == nil } that1, ok := that.(*Stat) @@ -147,10 +143,7 @@ func (this *Stat) Equal(that interface{}) bool { } } if that1 == nil { - if this == nil { - return true - } - return false + return this == nil } else if this == nil { return false } @@ -196,7 +189,7 @@ func (this *Stat) GoString() string { return "nil" } s := make([]string, 0, 14) - s = append(s, "&fsutil.Stat{") + s = append(s, "&types.Stat{") s = append(s, "Path: "+fmt.Sprintf("%#v", this.Path)+",\n") s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") s = append(s, "Uid: "+fmt.Sprintf("%#v", this.Uid)+",\n") @@ -210,7 +203,7 @@ func (this *Stat) GoString() string { for k, _ := range this.Xattrs { keysForXattrs = append(keysForXattrs, k) } - github_com_gogo_protobuf_sortkeys.Strings(keysForXattrs) + sortkeys.Strings(keysForXattrs) mapStringForXattrs := "map[string][]byte{" for _, k := range keysForXattrs { mapStringForXattrs += fmt.Sprintf("%#v: %#v,", k, this.Xattrs[k]) @@ -318,24 +311,6 @@ func (m *Stat) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func encodeFixed64Stat(dAtA []byte, offset int, v uint64) int { - dAtA[offset] = uint8(v) - dAtA[offset+1] = uint8(v >> 8) - dAtA[offset+2] = uint8(v >> 16) - dAtA[offset+3] = uint8(v >> 24) - dAtA[offset+4] = uint8(v >> 32) - dAtA[offset+5] = uint8(v >> 40) - dAtA[offset+6] = uint8(v >> 48) - dAtA[offset+7] = uint8(v >> 56) - return offset + 8 -} -func encodeFixed32Stat(dAtA []byte, offset int, v uint32) int { - dAtA[offset] = uint8(v) - dAtA[offset+1] = uint8(v >> 8) - dAtA[offset+2] = uint8(v >> 16) - dAtA[offset+3] = uint8(v >> 24) - return offset + 4 -} func encodeVarintStat(dAtA []byte, offset int, v uint64) int { for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) @@ -413,7 +388,7 @@ func (this *Stat) String() string { for k, _ := range this.Xattrs { keysForXattrs = append(keysForXattrs, k) } - github_com_gogo_protobuf_sortkeys.Strings(keysForXattrs) + sortkeys.Strings(keysForXattrs) mapStringForXattrs := "map[string][]byte{" for _, k := range keysForXattrs { mapStringForXattrs += fmt.Sprintf("%v: %v,", k, this.Xattrs[k]) @@ -688,51 +663,14 @@ func (m *Stat) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - var keykey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStat - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - keykey |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStat - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthStat - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey if m.Xattrs == nil { m.Xattrs = make(map[string][]byte) } - if iNdEx < postIndex { - var valuekey uint64 + var mapkey string + mapvalue := []byte{} + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowStat @@ -742,42 +680,81 @@ func (m *Stat) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - valuekey |= (uint64(b) & 0x7F) << shift + wire |= (uint64(b) & 0x7F) << shift if b < 0x80 { break } } - var mapbyteLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowStat + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStat + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } } - if iNdEx >= l { + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthStat + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { return io.ErrUnexpectedEOF } - b := dAtA[iNdEx] - iNdEx++ - mapbyteLen |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var mapbyteLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowStat + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + mapbyteLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } } + intMapbyteLen := int(mapbyteLen) + if intMapbyteLen < 0 { + return ErrInvalidLengthStat + } + postbytesIndex := iNdEx + intMapbyteLen + if postbytesIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue = make([]byte, mapbyteLen) + copy(mapvalue, dAtA[iNdEx:postbytesIndex]) + iNdEx = postbytesIndex + } else { + iNdEx = entryPreIndex + skippy, err := skipStat(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthStat + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy } - intMapbyteLen := int(mapbyteLen) - if intMapbyteLen < 0 { - return ErrInvalidLengthStat - } - postbytesIndex := iNdEx + intMapbyteLen - if postbytesIndex > l { - return io.ErrUnexpectedEOF - } - mapvalue := make([]byte, mapbyteLen) - copy(mapvalue, dAtA[iNdEx:postbytesIndex]) - iNdEx = postbytesIndex - m.Xattrs[mapkey] = mapvalue - } else { - var mapvalue []byte - m.Xattrs[mapkey] = mapvalue } + m.Xattrs[mapkey] = mapvalue iNdEx = postIndex default: iNdEx = preIndex @@ -908,24 +885,25 @@ var ( func init() { proto.RegisterFile("stat.proto", fileDescriptorStat) } var fileDescriptorStat = []byte{ - // 303 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x4c, 0x91, 0xb1, 0x4e, 0xf3, 0x30, - 0x14, 0x85, 0x73, 0x9b, 0x36, 0x6d, 0xdd, 0xff, 0x97, 0x90, 0xc5, 0x70, 0xd5, 0xc1, 0x8a, 0x98, - 0x32, 0xa0, 0x08, 0xc1, 0x02, 0x8c, 0x48, 0xbc, 0x40, 0x60, 0x60, 0x35, 0xb2, 0x29, 0xa6, 0x4d, - 0x5c, 0x25, 0x4e, 0x45, 0x99, 0x78, 0x04, 0x1e, 0x83, 0xd7, 0x60, 0x63, 0xec, 0xc8, 0x48, 0xcc, - 0xc2, 0xd8, 0x47, 0x40, 0x76, 0xda, 0xc2, 0x76, 0xce, 0x77, 0x7c, 0x65, 0x9d, 0x7b, 0x09, 0xa9, - 0x0c, 0x37, 0xe9, 0xbc, 0xd4, 0x46, 0xd3, 0xe8, 0xae, 0xaa, 0x8d, 0x9a, 0x1d, 0xbc, 0x75, 0x48, - 0xf7, 0xca, 0x70, 0x43, 0x29, 0xe9, 0xce, 0xb9, 0xb9, 0x47, 0x88, 0x21, 0x19, 0x66, 0x5e, 0x3b, - 0x96, 0x6b, 0x21, 0xb1, 0x13, 0x43, 0xf2, 0x3f, 0xf3, 0x9a, 0xee, 0x91, 0xb0, 0x56, 0x02, 0x43, - 0x8f, 0x9c, 0x74, 0x64, 0xa2, 0x04, 0x76, 0x5b, 0x32, 0x51, 0xc2, 0xcd, 0x55, 0xea, 0x49, 0x62, - 0x2f, 0x86, 0x24, 0xcc, 0xbc, 0xa6, 0x48, 0xfa, 0xb9, 0x16, 0xd7, 0x2a, 0x97, 0x18, 0x79, 0xbc, - 0xb5, 0x74, 0x4c, 0x06, 0x33, 0x55, 0x4c, 0x0b, 0x9e, 0x4b, 0xec, 0xfb, 0xdf, 0x77, 0xde, 0x65, - 0x42, 0x2e, 0x72, 0xfe, 0xa0, 0x4b, 0x1c, 0xf8, 0xb1, 0x9d, 0xdf, 0x66, 0xaa, 0xd0, 0x25, 0x0e, - 0x7f, 0x33, 0xe7, 0xe9, 0x11, 0x89, 0x1e, 0xb9, 0x31, 0x65, 0x85, 0x24, 0x0e, 0x93, 0xd1, 0x31, - 0xa6, 0x6d, 0xdf, 0xd4, 0x75, 0x4d, 0x6f, 0x7c, 0x74, 0x59, 0x98, 0x72, 0x99, 0x6d, 0xde, 0x8d, - 0xcf, 0xc8, 0xe8, 0x0f, 0x76, 0xa5, 0xa6, 0x72, 0xb9, 0xd9, 0x86, 0x93, 0x74, 0x9f, 0xf4, 0x16, - 0x7c, 0x56, 0xb7, 0xdb, 0xf8, 0x97, 0xb5, 0xe6, 0xbc, 0x73, 0x0a, 0x17, 0x87, 0xab, 0x86, 0x05, - 0x1f, 0x0d, 0x0b, 0xd6, 0x0d, 0x83, 0x67, 0xcb, 0xe0, 0xd5, 0x32, 0x78, 0xb7, 0x0c, 0x56, 0x96, - 0xc1, 0xa7, 0x65, 0xf0, 0x6d, 0x59, 0xb0, 0xb6, 0x0c, 0x5e, 0xbe, 0x58, 0x70, 0x1b, 0xf9, 0x03, - 0x9c, 0xfc, 0x04, 0x00, 0x00, 0xff, 0xff, 0x19, 0x97, 0x14, 0xf4, 0x8e, 0x01, 0x00, 0x00, + // 310 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x91, 0xbd, 0x4e, 0xc3, 0x30, + 0x14, 0x85, 0x73, 0x9b, 0xfe, 0xba, 0x45, 0x42, 0x16, 0x83, 0xd5, 0xe1, 0x2a, 0x62, 0xca, 0x94, + 0x81, 0x4a, 0x08, 0x18, 0x91, 0x78, 0x81, 0xc0, 0x80, 0xd8, 0x8c, 0x6c, 0x8a, 0x69, 0x13, 0x57, + 0x89, 0x5b, 0x51, 0x26, 0x1e, 0x81, 0xc7, 0xe0, 0x4d, 0x60, 0xec, 0xc8, 0x48, 0xcc, 0xc2, 0xd8, + 0x47, 0x40, 0x76, 0xda, 0xd2, 0xed, 0x9c, 0xef, 0xdc, 0xab, 0xe4, 0x5c, 0x13, 0x52, 0x1a, 0x6e, + 0x92, 0x59, 0xa1, 0x8d, 0xa6, 0x83, 0x87, 0x72, 0x6e, 0xd4, 0x34, 0x31, 0xcb, 0x99, 0x2c, 0x8f, + 0x3f, 0x1a, 0xa4, 0x79, 0x6d, 0xb8, 0xa1, 0x94, 0x34, 0x67, 0xdc, 0x3c, 0x32, 0x88, 0x20, 0xee, + 0xa5, 0x5e, 0x3b, 0x96, 0x69, 0x21, 0x59, 0x23, 0x82, 0xf8, 0x20, 0xf5, 0x9a, 0x1e, 0x92, 0x70, + 0xae, 0x04, 0x0b, 0x3d, 0x72, 0xd2, 0x91, 0xb1, 0x12, 0xac, 0x59, 0x93, 0xb1, 0x12, 0x6e, 0xaf, + 0x54, 0x2f, 0x92, 0xb5, 0x22, 0x88, 0xc3, 0xd4, 0x6b, 0xca, 0x48, 0x27, 0xd3, 0xe2, 0x46, 0x65, + 0x92, 0xb5, 0x3d, 0xde, 0x5a, 0x3a, 0x24, 0xdd, 0xa9, 0xca, 0x27, 0x39, 0xcf, 0x24, 0xeb, 0xf8, + 0xaf, 0xef, 0xbc, 0xcb, 0x84, 0x5c, 0x64, 0xfc, 0x49, 0x17, 0xac, 0xeb, 0xd7, 0x76, 0x7e, 0x9b, + 0xa9, 0x5c, 0x17, 0xac, 0xf7, 0x9f, 0x39, 0x4f, 0x4f, 0x49, 0xfb, 0x99, 0x1b, 0x53, 0x94, 0x8c, + 0x44, 0x61, 0xdc, 0x3f, 0xc1, 0x64, 0xbf, 0x75, 0xe2, 0x1a, 0x27, 0xb7, 0x7e, 0xe0, 0x2a, 0x37, + 0xc5, 0x32, 0xdd, 0x4c, 0x0f, 0xcf, 0x49, 0x7f, 0x0f, 0xbb, 0x6a, 0x13, 0xb9, 0xdc, 0xdc, 0xc4, + 0x49, 0x7a, 0x44, 0x5a, 0x0b, 0x3e, 0x9d, 0xd7, 0x37, 0x19, 0xa4, 0xb5, 0xb9, 0x68, 0x9c, 0xc1, + 0xe5, 0x68, 0x55, 0x61, 0xf0, 0x55, 0x61, 0xb0, 0xae, 0x10, 0x5e, 0x2d, 0xc2, 0xbb, 0x45, 0xf8, + 0xb4, 0x08, 0x2b, 0x8b, 0xf0, 0x6d, 0x11, 0x7e, 0x2d, 0x06, 0x6b, 0x8b, 0xf0, 0xf6, 0x83, 0xc1, + 0x5d, 0xcb, 0xff, 0xc8, 0x7d, 0xdb, 0xbf, 0xc9, 0xe8, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x90, 0xc2, + 0xcf, 0x79, 0xa1, 0x01, 0x00, 0x00, } diff --git a/vendor/github.com/tonistiigi/fsutil/stat.proto b/vendor/github.com/tonistiigi/fsutil/types/stat.proto similarity index 84% rename from vendor/github.com/tonistiigi/fsutil/stat.proto rename to vendor/github.com/tonistiigi/fsutil/types/stat.proto index e279413074..4138be6945 100644 --- a/vendor/github.com/tonistiigi/fsutil/stat.proto +++ b/vendor/github.com/tonistiigi/fsutil/types/stat.proto @@ -1,6 +1,8 @@ syntax = "proto3"; -package fsutil; +package fsutil.types; + +option go_package = "types"; message Stat { string path = 1; diff --git a/vendor/github.com/tonistiigi/fsutil/wire.pb.go b/vendor/github.com/tonistiigi/fsutil/types/wire.pb.go similarity index 80% rename from vendor/github.com/tonistiigi/fsutil/wire.pb.go rename to vendor/github.com/tonistiigi/fsutil/types/wire.pb.go index 9d334bbdba..47db09479a 100644 --- a/vendor/github.com/tonistiigi/fsutil/wire.pb.go +++ b/vendor/github.com/tonistiigi/fsutil/types/wire.pb.go @@ -1,8 +1,7 @@ -// Code generated by protoc-gen-gogo. +// Code generated by protoc-gen-gogo. DO NOT EDIT. // source: wire.proto -// DO NOT EDIT! -package fsutil +package types import proto "github.com/gogo/protobuf/proto" import fmt "fmt" @@ -50,7 +49,7 @@ var Packet_PacketType_value = map[string]int32{ func (Packet_PacketType) EnumDescriptor() ([]byte, []int) { return fileDescriptorWire, []int{0, 0} } type Packet struct { - Type Packet_PacketType `protobuf:"varint,1,opt,name=type,proto3,enum=fsutil.Packet_PacketType" json:"type,omitempty"` + Type Packet_PacketType `protobuf:"varint,1,opt,name=type,proto3,enum=fsutil.types.Packet_PacketType" json:"type,omitempty"` Stat *Stat `protobuf:"bytes,2,opt,name=stat" json:"stat,omitempty"` ID uint32 `protobuf:"varint,3,opt,name=ID,proto3" json:"ID,omitempty"` Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` @@ -89,8 +88,8 @@ func (m *Packet) GetData() []byte { } func init() { - proto.RegisterType((*Packet)(nil), "fsutil.Packet") - proto.RegisterEnum("fsutil.Packet_PacketType", Packet_PacketType_name, Packet_PacketType_value) + proto.RegisterType((*Packet)(nil), "fsutil.types.Packet") + proto.RegisterEnum("fsutil.types.Packet_PacketType", Packet_PacketType_name, Packet_PacketType_value) } func (x Packet_PacketType) String() string { s, ok := Packet_PacketType_name[int32(x)] @@ -101,10 +100,7 @@ func (x Packet_PacketType) String() string { } func (this *Packet) Equal(that interface{}) bool { if that == nil { - if this == nil { - return true - } - return false + return this == nil } that1, ok := that.(*Packet) @@ -117,10 +113,7 @@ func (this *Packet) Equal(that interface{}) bool { } } if that1 == nil { - if this == nil { - return true - } - return false + return this == nil } else if this == nil { return false } @@ -143,7 +136,7 @@ func (this *Packet) GoString() string { return "nil" } s := make([]string, 0, 8) - s = append(s, "&fsutil.Packet{") + s = append(s, "&types.Packet{") s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n") if this.Stat != nil { s = append(s, "Stat: "+fmt.Sprintf("%#v", this.Stat)+",\n") @@ -205,24 +198,6 @@ func (m *Packet) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func encodeFixed64Wire(dAtA []byte, offset int, v uint64) int { - dAtA[offset] = uint8(v) - dAtA[offset+1] = uint8(v >> 8) - dAtA[offset+2] = uint8(v >> 16) - dAtA[offset+3] = uint8(v >> 24) - dAtA[offset+4] = uint8(v >> 32) - dAtA[offset+5] = uint8(v >> 40) - dAtA[offset+6] = uint8(v >> 48) - dAtA[offset+7] = uint8(v >> 56) - return offset + 8 -} -func encodeFixed32Wire(dAtA []byte, offset int, v uint32) int { - dAtA[offset] = uint8(v) - dAtA[offset+1] = uint8(v >> 8) - dAtA[offset+2] = uint8(v >> 16) - dAtA[offset+3] = uint8(v >> 24) - return offset + 4 -} func encodeVarintWire(dAtA []byte, offset int, v uint64) int { for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) @@ -546,22 +521,22 @@ var ( func init() { proto.RegisterFile("wire.proto", fileDescriptorWire) } var fileDescriptorWire = []byte{ - // 259 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x2a, 0xcf, 0x2c, 0x4a, - 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x4b, 0x2b, 0x2e, 0x2d, 0xc9, 0xcc, 0x91, 0xe2, - 0x2a, 0x2e, 0x49, 0x2c, 0x81, 0x88, 0x29, 0xdd, 0x65, 0xe4, 0x62, 0x0b, 0x48, 0x4c, 0xce, 0x4e, - 0x2d, 0x11, 0xd2, 0xe5, 0x62, 0x29, 0xa9, 0x2c, 0x48, 0x95, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x33, - 0x92, 0xd4, 0x83, 0xa8, 0xd6, 0x83, 0xc8, 0x42, 0xa9, 0x90, 0xca, 0x82, 0xd4, 0x20, 0xb0, 0x32, - 0x21, 0x05, 0x2e, 0x16, 0x90, 0x39, 0x12, 0x4c, 0x0a, 0x8c, 0x1a, 0xdc, 0x46, 0x3c, 0x30, 0xe5, - 0xc1, 0x25, 0x89, 0x25, 0x41, 0x60, 0x19, 0x21, 0x3e, 0x2e, 0x26, 0x4f, 0x17, 0x09, 0x66, 0x05, - 0x46, 0x0d, 0xde, 0x20, 0x26, 0x4f, 0x17, 0x21, 0x21, 0x2e, 0x96, 0x94, 0xc4, 0x92, 0x44, 0x09, - 0x16, 0x05, 0x46, 0x0d, 0x9e, 0x20, 0x30, 0x5b, 0x29, 0x8e, 0x8b, 0x0b, 0x61, 0xb2, 0x10, 0x3f, - 0x17, 0x77, 0x80, 0xa3, 0xb3, 0xb7, 0x6b, 0x48, 0x7c, 0x70, 0x88, 0x63, 0x88, 0x00, 0x83, 0x10, - 0x1f, 0x17, 0x17, 0x54, 0x20, 0xc8, 0x35, 0x50, 0x80, 0x11, 0x49, 0x81, 0x8b, 0x63, 0x88, 0xa3, - 0x00, 0x13, 0x92, 0x02, 0x37, 0x4f, 0x3f, 0x01, 0x66, 0x24, 0xbe, 0x6b, 0x50, 0x90, 0x00, 0x8b, - 0x93, 0xce, 0x85, 0x87, 0x72, 0x0c, 0x37, 0x1e, 0xca, 0x31, 0x7c, 0x78, 0x28, 0xc7, 0xd8, 0xf0, - 0x48, 0x8e, 0x71, 0xc5, 0x23, 0x39, 0xc6, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, - 0xf0, 0x48, 0x8e, 0xf1, 0xc5, 0x23, 0x39, 0x86, 0x0f, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, - 0x48, 0x62, 0x03, 0x07, 0x8a, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x8b, 0xce, 0x55, 0x3b, 0x36, - 0x01, 0x00, 0x00, + // 268 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2a, 0xcf, 0x2c, 0x4a, + 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x49, 0x2b, 0x2e, 0x2d, 0xc9, 0xcc, 0xd1, 0x2b, + 0xa9, 0x2c, 0x48, 0x2d, 0x96, 0xe2, 0x2a, 0x2e, 0x49, 0x2c, 0x81, 0xc8, 0x28, 0xbd, 0x64, 0xe4, + 0x62, 0x0b, 0x48, 0x4c, 0xce, 0x4e, 0x2d, 0x11, 0x32, 0xe6, 0x62, 0x01, 0xc9, 0x4b, 0x30, 0x2a, + 0x30, 0x6a, 0xf0, 0x19, 0xc9, 0xeb, 0x21, 0xeb, 0xd1, 0x83, 0xa8, 0x81, 0x52, 0x21, 0x95, 0x05, + 0xa9, 0x41, 0x60, 0xc5, 0x42, 0x6a, 0x5c, 0x2c, 0x20, 0xd3, 0x24, 0x98, 0x14, 0x18, 0x35, 0xb8, + 0x8d, 0x84, 0x50, 0x35, 0x05, 0x97, 0x24, 0x96, 0x04, 0x81, 0xe5, 0x85, 0xf8, 0xb8, 0x98, 0x3c, + 0x5d, 0x24, 0x98, 0x15, 0x18, 0x35, 0x78, 0x83, 0x98, 0x3c, 0x5d, 0x84, 0x84, 0xb8, 0x58, 0x52, + 0x12, 0x4b, 0x12, 0x25, 0x58, 0x14, 0x18, 0x35, 0x78, 0x82, 0xc0, 0x6c, 0xa5, 0x38, 0x2e, 0x2e, + 0x84, 0xf9, 0x42, 0xfc, 0x5c, 0xdc, 0x01, 0x8e, 0xce, 0xde, 0xae, 0x21, 0xf1, 0xc1, 0x21, 0x8e, + 0x21, 0x02, 0x0c, 0x42, 0x7c, 0x5c, 0x5c, 0x50, 0x81, 0x20, 0xd7, 0x40, 0x01, 0x46, 0x24, 0x05, + 0x2e, 0x8e, 0x21, 0x8e, 0x02, 0x4c, 0x48, 0x0a, 0xdc, 0x3c, 0xfd, 0x04, 0x98, 0x91, 0xf8, 0xae, + 0x41, 0x41, 0x02, 0x2c, 0x4e, 0xc6, 0x17, 0x1e, 0xca, 0x31, 0xdc, 0x78, 0x28, 0xc7, 0xf0, 0xe1, + 0xa1, 0x1c, 0x63, 0xc3, 0x23, 0x39, 0xc6, 0x15, 0x8f, 0xe4, 0x18, 0x4f, 0x3c, 0x92, 0x63, 0xbc, + 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x17, 0x8f, 0xe4, 0x18, 0x3e, 0x3c, 0x92, 0x63, + 0x9c, 0xf0, 0x58, 0x8e, 0x21, 0x8a, 0x15, 0xec, 0x87, 0x24, 0x36, 0x70, 0x38, 0x19, 0x03, 0x02, + 0x00, 0x00, 0xff, 0xff, 0xce, 0x0f, 0xe2, 0x94, 0x4f, 0x01, 0x00, 0x00, } diff --git a/vendor/github.com/tonistiigi/fsutil/wire.proto b/vendor/github.com/tonistiigi/fsutil/types/wire.proto similarity index 84% rename from vendor/github.com/tonistiigi/fsutil/wire.proto rename to vendor/github.com/tonistiigi/fsutil/types/wire.proto index f9b33f312c..3e85000c58 100644 --- a/vendor/github.com/tonistiigi/fsutil/wire.proto +++ b/vendor/github.com/tonistiigi/fsutil/types/wire.proto @@ -1,6 +1,8 @@ syntax = "proto3"; -package fsutil; +package fsutil.types; + +option go_package = "types"; import "stat.proto"; diff --git a/vendor/github.com/tonistiigi/fsutil/walker.go b/vendor/github.com/tonistiigi/fsutil/walker.go index aa50991455..e0518e2357 100644 --- a/vendor/github.com/tonistiigi/fsutil/walker.go +++ b/vendor/github.com/tonistiigi/fsutil/walker.go @@ -4,12 +4,13 @@ import ( "context" "os" "path/filepath" - "runtime" "strings" + "syscall" "time" "github.com/docker/docker/pkg/fileutils" "github.com/pkg/errors" + "github.com/tonistiigi/fsutil/types" ) type WalkOpt struct { @@ -18,7 +19,7 @@ type WalkOpt struct { // FollowPaths contains symlinks that are resolved into include patterns // before performing the fs walk FollowPaths []string - Map func(*Stat) bool + Map FilterFunc } func Walk(ctx context.Context, p string, opt *WalkOpt, fn filepath.WalkFunc) error { @@ -71,7 +72,7 @@ func Walk(ctx context.Context, p string, opt *WalkOpt, fn filepath.WalkFunc) err return err } defer func() { - if retErr != nil && os.IsNotExist(errors.Cause(retErr)) { + if retErr != nil && isNotExist(retErr) { retErr = filepath.SkipDir } }() @@ -146,37 +147,9 @@ func Walk(ctx context.Context, p string, opt *WalkOpt, fn filepath.WalkFunc) err } passedFilter: - path = filepath.ToSlash(path) - - stat := &Stat{ - Path: path, - Mode: uint32(fi.Mode()), - ModTime: fi.ModTime().UnixNano(), - } - - setUnixOpt(fi, stat, path, seenFiles) - - if !fi.IsDir() { - stat.Size_ = fi.Size() - if fi.Mode()&os.ModeSymlink != 0 { - link, err := os.Readlink(origpath) - if err != nil { - return errors.Wrapf(err, "failed to readlink %s", origpath) - } - stat.Linkname = link - } - } - if err := loadXattr(origpath, stat); err != nil { - return errors.Wrapf(err, "failed to xattr %s", path) - } - - if runtime.GOOS == "windows" { - permPart := stat.Mode & uint32(os.ModePerm) - noPermPart := stat.Mode &^ uint32(os.ModePerm) - // Add the x bit: make everything +x from windows - permPart |= 0111 - permPart &= 0755 - stat.Mode = noPermPart | permPart + stat, err := mkstat(origpath, path, fi, seenFiles) + if err != nil { + return err } select { @@ -184,7 +157,7 @@ func Walk(ctx context.Context, p string, opt *WalkOpt, fn filepath.WalkFunc) err return ctx.Err() default: if opt != nil && opt.Map != nil { - if allowed := opt.Map(stat); !allowed { + if allowed := opt.Map(stat.Path, stat); !allowed { return nil } } @@ -197,7 +170,7 @@ func Walk(ctx context.Context, p string, opt *WalkOpt, fn filepath.WalkFunc) err } type StatInfo struct { - *Stat + *types.Stat } func (s *StatInfo) Name() string { @@ -244,3 +217,14 @@ func trimUntilIndex(str, sep string, count int) string { } } } + +func isNotExist(err error) bool { + err = errors.Cause(err) + if os.IsNotExist(err) { + return true + } + if pe, ok := err.(*os.PathError); ok { + err = pe.Err + } + return err == syscall.ENOTDIR +} diff --git a/vendor/github.com/tonistiigi/fsutil/walker_windows.go b/vendor/github.com/tonistiigi/fsutil/walker_windows.go deleted file mode 100644 index a1a2b45569..0000000000 --- a/vendor/github.com/tonistiigi/fsutil/walker_windows.go +++ /dev/null @@ -1,14 +0,0 @@ -// +build windows - -package fsutil - -import ( - "os" -) - -func loadXattr(_ string, _ *Stat) error { - return nil -} - -func setUnixOpt(_ os.FileInfo, _ *Stat, _ string, _ map[uint64]string) { -} diff --git a/vendor/github.com/boltdb/bolt/.gitignore b/vendor/go.etcd.io/bbolt/.gitignore similarity index 72% rename from vendor/github.com/boltdb/bolt/.gitignore rename to vendor/go.etcd.io/bbolt/.gitignore index c7bd2b7a5b..3bcd8cbaf0 100644 --- a/vendor/github.com/boltdb/bolt/.gitignore +++ b/vendor/go.etcd.io/bbolt/.gitignore @@ -2,3 +2,4 @@ *.test *.swp /bin/ +cover.out diff --git a/vendor/go.etcd.io/bbolt/.travis.yml b/vendor/go.etcd.io/bbolt/.travis.yml new file mode 100644 index 0000000000..a60300c558 --- /dev/null +++ b/vendor/go.etcd.io/bbolt/.travis.yml @@ -0,0 +1,17 @@ +language: go +go_import_path: go.etcd.io/bbolt + +sudo: false + +go: +- 1.11 + +before_install: +- go get -v honnef.co/go/tools/... +- go get -v github.com/kisielk/errcheck + +script: +- make fmt +- make test +- make race +# - make errcheck diff --git a/vendor/github.com/boltdb/bolt/LICENSE b/vendor/go.etcd.io/bbolt/LICENSE similarity index 100% rename from vendor/github.com/boltdb/bolt/LICENSE rename to vendor/go.etcd.io/bbolt/LICENSE diff --git a/vendor/go.etcd.io/bbolt/Makefile b/vendor/go.etcd.io/bbolt/Makefile new file mode 100644 index 0000000000..2968aaa61d --- /dev/null +++ b/vendor/go.etcd.io/bbolt/Makefile @@ -0,0 +1,38 @@ +BRANCH=`git rev-parse --abbrev-ref HEAD` +COMMIT=`git rev-parse --short HEAD` +GOLDFLAGS="-X main.branch $(BRANCH) -X main.commit $(COMMIT)" + +default: build + +race: + @TEST_FREELIST_TYPE=hashmap go test -v -race -test.run="TestSimulate_(100op|1000op)" + @echo "array freelist test" + @TEST_FREELIST_TYPE=array go test -v -race -test.run="TestSimulate_(100op|1000op)" + +fmt: + !(gofmt -l -s -d $(shell find . -name \*.go) | grep '[a-z]') + +# go get honnef.co/go/tools/simple +gosimple: + gosimple ./... + +# go get honnef.co/go/tools/unused +unused: + unused ./... + +# go get github.com/kisielk/errcheck +errcheck: + @errcheck -ignorepkg=bytes -ignore=os:Remove go.etcd.io/bbolt + +test: + TEST_FREELIST_TYPE=hashmap go test -timeout 20m -v -coverprofile cover.out -covermode atomic + # Note: gets "program not an importable package" in out of path builds + TEST_FREELIST_TYPE=hashmap go test -v ./cmd/bbolt + + @echo "array freelist test" + + @TEST_FREELIST_TYPE=array go test -timeout 20m -v -coverprofile cover.out -covermode atomic + # Note: gets "program not an importable package" in out of path builds + @TEST_FREELIST_TYPE=array go test -v ./cmd/bbolt + +.PHONY: race fmt errcheck test gosimple unused diff --git a/vendor/github.com/boltdb/bolt/README.md b/vendor/go.etcd.io/bbolt/README.md similarity index 90% rename from vendor/github.com/boltdb/bolt/README.md rename to vendor/go.etcd.io/bbolt/README.md index 7d43a15b2c..e9989efc50 100644 --- a/vendor/github.com/boltdb/bolt/README.md +++ b/vendor/go.etcd.io/bbolt/README.md @@ -1,5 +1,18 @@ -Bolt [![Coverage Status](https://coveralls.io/repos/boltdb/bolt/badge.svg?branch=master)](https://coveralls.io/r/boltdb/bolt?branch=master) [![GoDoc](https://godoc.org/github.com/boltdb/bolt?status.svg)](https://godoc.org/github.com/boltdb/bolt) ![Version](https://img.shields.io/badge/version-1.2.1-green.svg) -==== +bbolt +===== + +[![Go Report Card](https://goreportcard.com/badge/github.com/etcd-io/bbolt?style=flat-square)](https://goreportcard.com/report/github.com/etcd-io/bbolt) +[![Coverage](https://codecov.io/gh/etcd-io/bbolt/branch/master/graph/badge.svg)](https://codecov.io/gh/etcd-io/bbolt) +[![Build Status Travis](https://img.shields.io/travis/etcd-io/bboltlabs.svg?style=flat-square&&branch=master)](https://travis-ci.com/etcd-io/bbolt) +[![Godoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://godoc.org/github.com/etcd-io/bbolt) +[![Releases](https://img.shields.io/github/release/etcd-io/bbolt/all.svg?style=flat-square)](https://github.com/etcd-io/bbolt/releases) +[![LICENSE](https://img.shields.io/github/license/etcd-io/bbolt.svg?style=flat-square)](https://github.com/etcd-io/bbolt/blob/master/LICENSE) + +bbolt is a fork of [Ben Johnson's][gh_ben] [Bolt][bolt] key/value +store. The purpose of this fork is to provide the Go community with an active +maintenance and development target for Bolt; the goal is improved reliability +and stability. bbolt includes bug fixes, performance enhancements, and features +not found in Bolt while preserving backwards compatibility with the Bolt API. Bolt is a pure Go key/value store inspired by [Howard Chu's][hyc_symas] [LMDB project][lmdb]. The goal of the project is to provide a simple, @@ -10,6 +23,8 @@ Since Bolt is meant to be used as such a low-level piece of functionality, simplicity is key. The API will be small and only focus on getting values and setting values. That's it. +[gh_ben]: https://github.com/benbjohnson +[bolt]: https://github.com/boltdb/bolt [hyc_symas]: https://twitter.com/hyc_symas [lmdb]: http://symas.com/mdb/ @@ -21,36 +36,42 @@ consistency and thread safety. Bolt is currently used in high-load production environments serving databases as large as 1TB. Many companies such as Shopify and Heroku use Bolt-backed services every day. +## Project versioning + +bbolt uses [semantic versioning](http://semver.org). +API should not change between patch and minor releases. +New minor versions may add additional features to the API. + ## Table of Contents -- [Getting Started](#getting-started) - - [Installing](#installing) - - [Opening a database](#opening-a-database) - - [Transactions](#transactions) - - [Read-write transactions](#read-write-transactions) - - [Read-only transactions](#read-only-transactions) - - [Batch read-write transactions](#batch-read-write-transactions) - - [Managing transactions manually](#managing-transactions-manually) - - [Using buckets](#using-buckets) - - [Using key/value pairs](#using-keyvalue-pairs) - - [Autoincrementing integer for the bucket](#autoincrementing-integer-for-the-bucket) - - [Iterating over keys](#iterating-over-keys) - - [Prefix scans](#prefix-scans) - - [Range scans](#range-scans) - - [ForEach()](#foreach) - - [Nested buckets](#nested-buckets) - - [Database backups](#database-backups) - - [Statistics](#statistics) - - [Read-Only Mode](#read-only-mode) - - [Mobile Use (iOS/Android)](#mobile-use-iosandroid) -- [Resources](#resources) -- [Comparison with other databases](#comparison-with-other-databases) - - [Postgres, MySQL, & other relational databases](#postgres-mysql--other-relational-databases) - - [LevelDB, RocksDB](#leveldb-rocksdb) - - [LMDB](#lmdb) -- [Caveats & Limitations](#caveats--limitations) -- [Reading the Source](#reading-the-source) -- [Other Projects Using Bolt](#other-projects-using-bolt) + - [Getting Started](#getting-started) + - [Installing](#installing) + - [Opening a database](#opening-a-database) + - [Transactions](#transactions) + - [Read-write transactions](#read-write-transactions) + - [Read-only transactions](#read-only-transactions) + - [Batch read-write transactions](#batch-read-write-transactions) + - [Managing transactions manually](#managing-transactions-manually) + - [Using buckets](#using-buckets) + - [Using key/value pairs](#using-keyvalue-pairs) + - [Autoincrementing integer for the bucket](#autoincrementing-integer-for-the-bucket) + - [Iterating over keys](#iterating-over-keys) + - [Prefix scans](#prefix-scans) + - [Range scans](#range-scans) + - [ForEach()](#foreach) + - [Nested buckets](#nested-buckets) + - [Database backups](#database-backups) + - [Statistics](#statistics) + - [Read-Only Mode](#read-only-mode) + - [Mobile Use (iOS/Android)](#mobile-use-iosandroid) + - [Resources](#resources) + - [Comparison with other databases](#comparison-with-other-databases) + - [Postgres, MySQL, & other relational databases](#postgres-mysql--other-relational-databases) + - [LevelDB, RocksDB](#leveldb-rocksdb) + - [LMDB](#lmdb) + - [Caveats & Limitations](#caveats--limitations) + - [Reading the Source](#reading-the-source) + - [Other Projects Using Bolt](#other-projects-using-bolt) ## Getting Started @@ -59,13 +80,28 @@ Shopify and Heroku use Bolt-backed services every day. To start using Bolt, install Go and run `go get`: ```sh -$ go get github.com/boltdb/bolt/... +$ go get go.etcd.io/bbolt/... ``` This will retrieve the library and install the `bolt` command line utility into your `$GOBIN` path. +### Importing bbolt + +To use bbolt as an embedded key-value store, import as: + +```go +import bolt "go.etcd.io/bbolt" + +db, err := bolt.Open(path, 0666, nil) +if err != nil { + return err +} +defer db.Close() +``` + + ### Opening a database The top-level object in Bolt is a `DB`. It is represented as a single file on @@ -79,7 +115,7 @@ package main import ( "log" - "github.com/boltdb/bolt" + bolt "go.etcd.io/bbolt" ) func main() { @@ -522,7 +558,7 @@ this from a read-only transaction, it will perform a hot backup and not block your other database reads and writes. By default, it will use a regular file handle which will utilize the operating -system's page cache. See the [`Tx`](https://godoc.org/github.com/boltdb/bolt#Tx) +system's page cache. See the [`Tx`](https://godoc.org/go.etcd.io/bbolt#Tx) documentation for information about optimizing for larger-than-RAM datasets. One common use case is to backup over HTTP so you can use tools like `cURL` to @@ -811,7 +847,7 @@ Here are a few things to note when evaluating and using Bolt: ## Reading the Source -Bolt is a relatively small code base (<3KLOC) for an embedded, serializable, +Bolt is a relatively small code base (<5KLOC) for an embedded, serializable, transactional key/value database so it can be a good starting point for people interested in how databases work. @@ -863,54 +899,56 @@ them via pull request. Below is a list of public, open source projects that use Bolt: -* [BoltDbWeb](https://github.com/evnix/boltdbweb) - A web based GUI for BoltDB files. -* [Operation Go: A Routine Mission](http://gocode.io) - An online programming game for Golang using Bolt for user accounts and a leaderboard. +* [Algernon](https://github.com/xyproto/algernon) - A HTTP/2 web server with built-in support for Lua. Uses BoltDB as the default database backend. * [Bazil](https://bazil.org/) - A file system that lets your data reside where it is most convenient for it to reside. -* [DVID](https://github.com/janelia-flyem/dvid) - Added Bolt as optional storage engine and testing it against Basho-tuned leveldb. -* [Skybox Analytics](https://github.com/skybox/skybox) - A standalone funnel analysis tool for web analytics. -* [Scuttlebutt](https://github.com/benbjohnson/scuttlebutt) - Uses Bolt to store and process all Twitter mentions of GitHub projects. -* [Wiki](https://github.com/peterhellberg/wiki) - A tiny wiki using Goji, BoltDB and Blackfriday. +* [bolter](https://github.com/hasit/bolter) - Command-line app for viewing BoltDB file in your terminal. +* [boltcli](https://github.com/spacewander/boltcli) - the redis-cli for boltdb with Lua script support. +* [BoltHold](https://github.com/timshannon/bolthold) - An embeddable NoSQL store for Go types built on BoltDB +* [BoltStore](https://github.com/yosssi/boltstore) - Session store using Bolt. +* [Boltdb Boilerplate](https://github.com/bobintornado/boltdb-boilerplate) - Boilerplate wrapper around bolt aiming to make simple calls one-liners. +* [BoltDbWeb](https://github.com/evnix/boltdbweb) - A web based GUI for BoltDB files. +* [bleve](http://www.blevesearch.com/) - A pure Go search engine similar to ElasticSearch that uses Bolt as the default storage backend. +* [btcwallet](https://github.com/btcsuite/btcwallet) - A bitcoin wallet. +* [buckets](https://github.com/joyrexus/buckets) - a bolt wrapper streamlining + simple tx and key scans. +* [cayley](https://github.com/google/cayley) - Cayley is an open-source graph database using Bolt as optional backend. * [ChainStore](https://github.com/pressly/chainstore) - Simple key-value interface to a variety of storage engines organized as a chain of operations. -* [MetricBase](https://github.com/msiebuhr/MetricBase) - Single-binary version of Graphite. -* [Gitchain](https://github.com/gitchain/gitchain) - Decentralized, peer-to-peer Git repositories aka "Git meets Bitcoin". +* [Consul](https://github.com/hashicorp/consul) - Consul is service discovery and configuration made easy. Distributed, highly available, and datacenter-aware. +* [DVID](https://github.com/janelia-flyem/dvid) - Added Bolt as optional storage engine and testing it against Basho-tuned leveldb. +* [dcrwallet](https://github.com/decred/dcrwallet) - A wallet for the Decred cryptocurrency. +* [drive](https://github.com/odeke-em/drive) - drive is an unofficial Google Drive command line client for \*NIX operating systems. * [event-shuttle](https://github.com/sclasen/event-shuttle) - A Unix system service to collect and reliably deliver messages to Kafka. +* [Freehold](http://tshannon.bitbucket.org/freehold/) - An open, secure, and lightweight platform for your files and data. +* [Go Report Card](https://goreportcard.com/) - Go code quality report cards as a (free and open source) service. +* [GoWebApp](https://github.com/josephspurrier/gowebapp) - A basic MVC web application in Go using BoltDB. +* [GoShort](https://github.com/pankajkhairnar/goShort) - GoShort is a URL shortener written in Golang and BoltDB for persistent key/value storage and for routing it's using high performent HTTPRouter. +* [gopherpit](https://github.com/gopherpit/gopherpit) - A web service to manage Go remote import paths with custom domains +* [Gitchain](https://github.com/gitchain/gitchain) - Decentralized, peer-to-peer Git repositories aka "Git meets Bitcoin". +* [InfluxDB](https://influxdata.com) - Scalable datastore for metrics, events, and real-time analytics. +* [ipLocator](https://github.com/AndreasBriese/ipLocator) - A fast ip-geo-location-server using bolt with bloom filters. * [ipxed](https://github.com/kelseyhightower/ipxed) - Web interface and api for ipxed. -* [BoltStore](https://github.com/yosssi/boltstore) - Session store using Bolt. -* [photosite/session](https://godoc.org/bitbucket.org/kardianos/photosite/session) - Sessions for a photo viewing site. +* [Ironsmith](https://github.com/timshannon/ironsmith) - A simple, script-driven continuous integration (build - > test -> release) tool, with no external dependencies +* [Kala](https://github.com/ajvb/kala) - Kala is a modern job scheduler optimized to run on a single node. It is persistent, JSON over HTTP API, ISO 8601 duration notation, and dependent jobs. +* [Key Value Access Langusge (KVAL)](https://github.com/kval-access-language) - A proposed grammar for key-value datastores offering a bbolt binding. * [LedisDB](https://github.com/siddontang/ledisdb) - A high performance NoSQL, using Bolt as optional storage. -* [ipLocator](https://github.com/AndreasBriese/ipLocator) - A fast ip-geo-location-server using bolt with bloom filters. -* [cayley](https://github.com/google/cayley) - Cayley is an open-source graph database using Bolt as optional backend. -* [bleve](http://www.blevesearch.com/) - A pure Go search engine similar to ElasticSearch that uses Bolt as the default storage backend. -* [tentacool](https://github.com/optiflows/tentacool) - REST api server to manage system stuff (IP, DNS, Gateway...) on a linux server. -* [Seaweed File System](https://github.com/chrislusf/seaweedfs) - Highly scalable distributed key~file system with O(1) disk read. -* [InfluxDB](https://influxdata.com) - Scalable datastore for metrics, events, and real-time analytics. -* [Freehold](http://tshannon.bitbucket.org/freehold/) - An open, secure, and lightweight platform for your files and data. +* [lru](https://github.com/crowdriff/lru) - Easy to use Bolt-backed Least-Recently-Used (LRU) read-through cache with chainable remote stores. +* [mbuckets](https://github.com/abhigupta912/mbuckets) - A Bolt wrapper that allows easy operations on multi level (nested) buckets. +* [MetricBase](https://github.com/msiebuhr/MetricBase) - Single-binary version of Graphite. +* [MuLiFS](https://github.com/dankomiocevic/mulifs) - Music Library Filesystem creates a filesystem to organise your music files. +* [Operation Go: A Routine Mission](http://gocode.io) - An online programming game for Golang using Bolt for user accounts and a leaderboard. +* [photosite/session](https://godoc.org/bitbucket.org/kardianos/photosite/session) - Sessions for a photo viewing site. * [Prometheus Annotation Server](https://github.com/oliver006/prom_annotation_server) - Annotation server for PromDash & Prometheus service monitoring system. -* [Consul](https://github.com/hashicorp/consul) - Consul is service discovery and configuration made easy. Distributed, highly available, and datacenter-aware. -* [Kala](https://github.com/ajvb/kala) - Kala is a modern job scheduler optimized to run on a single node. It is persistent, JSON over HTTP API, ISO 8601 duration notation, and dependent jobs. -* [drive](https://github.com/odeke-em/drive) - drive is an unofficial Google Drive command line client for \*NIX operating systems. +* [reef-pi](https://github.com/reef-pi/reef-pi) - reef-pi is an award winning, modular, DIY reef tank controller using easy to learn electronics based on a Raspberry Pi. +* [Request Baskets](https://github.com/darklynx/request-baskets) - A web service to collect arbitrary HTTP requests and inspect them via REST API or simple web UI, similar to [RequestBin](http://requestb.in/) service +* [Seaweed File System](https://github.com/chrislusf/seaweedfs) - Highly scalable distributed key~file system with O(1) disk read. * [stow](https://github.com/djherbis/stow) - a persistence manager for objects backed by boltdb. -* [buckets](https://github.com/joyrexus/buckets) - a bolt wrapper streamlining - simple tx and key scans. -* [mbuckets](https://github.com/abhigupta912/mbuckets) - A Bolt wrapper that allows easy operations on multi level (nested) buckets. -* [Request Baskets](https://github.com/darklynx/request-baskets) - A web service to collect arbitrary HTTP requests and inspect them via REST API or simple web UI, similar to [RequestBin](http://requestb.in/) service -* [Go Report Card](https://goreportcard.com/) - Go code quality report cards as a (free and open source) service. -* [Boltdb Boilerplate](https://github.com/bobintornado/boltdb-boilerplate) - Boilerplate wrapper around bolt aiming to make simple calls one-liners. -* [lru](https://github.com/crowdriff/lru) - Easy to use Bolt-backed Least-Recently-Used (LRU) read-through cache with chainable remote stores. * [Storm](https://github.com/asdine/storm) - Simple and powerful ORM for BoltDB. -* [GoWebApp](https://github.com/josephspurrier/gowebapp) - A basic MVC web application in Go using BoltDB. * [SimpleBolt](https://github.com/xyproto/simplebolt) - A simple way to use BoltDB. Deals mainly with strings. -* [Algernon](https://github.com/xyproto/algernon) - A HTTP/2 web server with built-in support for Lua. Uses BoltDB as the default database backend. -* [MuLiFS](https://github.com/dankomiocevic/mulifs) - Music Library Filesystem creates a filesystem to organise your music files. -* [GoShort](https://github.com/pankajkhairnar/goShort) - GoShort is a URL shortener written in Golang and BoltDB for persistent key/value storage and for routing it's using high performent HTTPRouter. +* [Skybox Analytics](https://github.com/skybox/skybox) - A standalone funnel analysis tool for web analytics. +* [Scuttlebutt](https://github.com/benbjohnson/scuttlebutt) - Uses Bolt to store and process all Twitter mentions of GitHub projects. +* [tentacool](https://github.com/optiflows/tentacool) - REST api server to manage system stuff (IP, DNS, Gateway...) on a linux server. * [torrent](https://github.com/anacrolix/torrent) - Full-featured BitTorrent client package and utilities in Go. BoltDB is a storage backend in development. -* [gopherpit](https://github.com/gopherpit/gopherpit) - A web service to manage Go remote import paths with custom domains -* [bolter](https://github.com/hasit/bolter) - Command-line app for viewing BoltDB file in your terminal. -* [btcwallet](https://github.com/btcsuite/btcwallet) - A bitcoin wallet. -* [dcrwallet](https://github.com/decred/dcrwallet) - A wallet for the Decred cryptocurrency. -* [Ironsmith](https://github.com/timshannon/ironsmith) - A simple, script-driven continuous integration (build - > test -> release) tool, with no external dependencies -* [BoltHold](https://github.com/timshannon/bolthold) - An embeddable NoSQL store for Go types built on BoltDB -* [Ponzu CMS](https://ponzu-cms.org) - Headless CMS + automatic JSON API with auto-HTTPS, HTTP/2 Server Push, and flexible server framework. +* [Wiki](https://github.com/peterhellberg/wiki) - A tiny wiki using Goji, BoltDB and Blackfriday. If you are using Bolt in a project please send a pull request to add it to the list. diff --git a/vendor/github.com/boltdb/bolt/bolt_386.go b/vendor/go.etcd.io/bbolt/bolt_386.go similarity index 95% rename from vendor/github.com/boltdb/bolt/bolt_386.go rename to vendor/go.etcd.io/bbolt/bolt_386.go index 820d533c15..4d35ee7cf3 100644 --- a/vendor/github.com/boltdb/bolt/bolt_386.go +++ b/vendor/go.etcd.io/bbolt/bolt_386.go @@ -1,4 +1,4 @@ -package bolt +package bbolt // maxMapSize represents the largest mmap size supported by Bolt. const maxMapSize = 0x7FFFFFFF // 2GB diff --git a/vendor/github.com/boltdb/bolt/bolt_amd64.go b/vendor/go.etcd.io/bbolt/bolt_amd64.go similarity index 95% rename from vendor/github.com/boltdb/bolt/bolt_amd64.go rename to vendor/go.etcd.io/bbolt/bolt_amd64.go index 98fafdb47d..60a52dad56 100644 --- a/vendor/github.com/boltdb/bolt/bolt_amd64.go +++ b/vendor/go.etcd.io/bbolt/bolt_amd64.go @@ -1,4 +1,4 @@ -package bolt +package bbolt // maxMapSize represents the largest mmap size supported by Bolt. const maxMapSize = 0xFFFFFFFFFFFF // 256TB diff --git a/vendor/github.com/boltdb/bolt/bolt_arm.go b/vendor/go.etcd.io/bbolt/bolt_arm.go similarity index 98% rename from vendor/github.com/boltdb/bolt/bolt_arm.go rename to vendor/go.etcd.io/bbolt/bolt_arm.go index 7e5cb4b941..105d27ddb7 100644 --- a/vendor/github.com/boltdb/bolt/bolt_arm.go +++ b/vendor/go.etcd.io/bbolt/bolt_arm.go @@ -1,4 +1,4 @@ -package bolt +package bbolt import "unsafe" diff --git a/vendor/github.com/boltdb/bolt/bolt_arm64.go b/vendor/go.etcd.io/bbolt/bolt_arm64.go similarity index 95% rename from vendor/github.com/boltdb/bolt/bolt_arm64.go rename to vendor/go.etcd.io/bbolt/bolt_arm64.go index b26d84f91b..f5aa2a5ee2 100644 --- a/vendor/github.com/boltdb/bolt/bolt_arm64.go +++ b/vendor/go.etcd.io/bbolt/bolt_arm64.go @@ -1,6 +1,6 @@ // +build arm64 -package bolt +package bbolt // maxMapSize represents the largest mmap size supported by Bolt. const maxMapSize = 0xFFFFFFFFFFFF // 256TB diff --git a/vendor/github.com/boltdb/bolt/bolt_linux.go b/vendor/go.etcd.io/bbolt/bolt_linux.go similarity index 91% rename from vendor/github.com/boltdb/bolt/bolt_linux.go rename to vendor/go.etcd.io/bbolt/bolt_linux.go index 2b67666140..7707bcacf0 100644 --- a/vendor/github.com/boltdb/bolt/bolt_linux.go +++ b/vendor/go.etcd.io/bbolt/bolt_linux.go @@ -1,4 +1,4 @@ -package bolt +package bbolt import ( "syscall" diff --git a/vendor/go.etcd.io/bbolt/bolt_mips64x.go b/vendor/go.etcd.io/bbolt/bolt_mips64x.go new file mode 100644 index 0000000000..baeb289fd9 --- /dev/null +++ b/vendor/go.etcd.io/bbolt/bolt_mips64x.go @@ -0,0 +1,12 @@ +// +build mips64 mips64le + +package bbolt + +// maxMapSize represents the largest mmap size supported by Bolt. +const maxMapSize = 0x8000000000 // 512GB + +// maxAllocSize is the size used when creating array pointers. +const maxAllocSize = 0x7FFFFFFF + +// Are unaligned load/stores broken on this arch? +var brokenUnaligned = false diff --git a/vendor/go.etcd.io/bbolt/bolt_mipsx.go b/vendor/go.etcd.io/bbolt/bolt_mipsx.go new file mode 100644 index 0000000000..2d9b1a91f3 --- /dev/null +++ b/vendor/go.etcd.io/bbolt/bolt_mipsx.go @@ -0,0 +1,12 @@ +// +build mips mipsle + +package bbolt + +// maxMapSize represents the largest mmap size supported by Bolt. +const maxMapSize = 0x40000000 // 1GB + +// maxAllocSize is the size used when creating array pointers. +const maxAllocSize = 0xFFFFFFF + +// Are unaligned load/stores broken on this arch? +var brokenUnaligned = false diff --git a/vendor/github.com/boltdb/bolt/bolt_openbsd.go b/vendor/go.etcd.io/bbolt/bolt_openbsd.go similarity index 97% rename from vendor/github.com/boltdb/bolt/bolt_openbsd.go rename to vendor/go.etcd.io/bbolt/bolt_openbsd.go index 7058c3d734..d7f50358ef 100644 --- a/vendor/github.com/boltdb/bolt/bolt_openbsd.go +++ b/vendor/go.etcd.io/bbolt/bolt_openbsd.go @@ -1,4 +1,4 @@ -package bolt +package bbolt import ( "syscall" diff --git a/vendor/github.com/boltdb/bolt/bolt_ppc.go b/vendor/go.etcd.io/bbolt/bolt_ppc.go similarity index 69% rename from vendor/github.com/boltdb/bolt/bolt_ppc.go rename to vendor/go.etcd.io/bbolt/bolt_ppc.go index 645ddc3edc..69804714aa 100644 --- a/vendor/github.com/boltdb/bolt/bolt_ppc.go +++ b/vendor/go.etcd.io/bbolt/bolt_ppc.go @@ -1,9 +1,12 @@ // +build ppc -package bolt +package bbolt // maxMapSize represents the largest mmap size supported by Bolt. const maxMapSize = 0x7FFFFFFF // 2GB // maxAllocSize is the size used when creating array pointers. const maxAllocSize = 0xFFFFFFF + +// Are unaligned load/stores broken on this arch? +var brokenUnaligned = false diff --git a/vendor/github.com/boltdb/bolt/bolt_ppc64.go b/vendor/go.etcd.io/bbolt/bolt_ppc64.go similarity index 95% rename from vendor/github.com/boltdb/bolt/bolt_ppc64.go rename to vendor/go.etcd.io/bbolt/bolt_ppc64.go index 9331d9771e..3565908576 100644 --- a/vendor/github.com/boltdb/bolt/bolt_ppc64.go +++ b/vendor/go.etcd.io/bbolt/bolt_ppc64.go @@ -1,6 +1,6 @@ // +build ppc64 -package bolt +package bbolt // maxMapSize represents the largest mmap size supported by Bolt. const maxMapSize = 0xFFFFFFFFFFFF // 256TB diff --git a/vendor/github.com/boltdb/bolt/bolt_ppc64le.go b/vendor/go.etcd.io/bbolt/bolt_ppc64le.go similarity index 95% rename from vendor/github.com/boltdb/bolt/bolt_ppc64le.go rename to vendor/go.etcd.io/bbolt/bolt_ppc64le.go index 8c143bc5d1..422c7c69d6 100644 --- a/vendor/github.com/boltdb/bolt/bolt_ppc64le.go +++ b/vendor/go.etcd.io/bbolt/bolt_ppc64le.go @@ -1,6 +1,6 @@ // +build ppc64le -package bolt +package bbolt // maxMapSize represents the largest mmap size supported by Bolt. const maxMapSize = 0xFFFFFFFFFFFF // 256TB diff --git a/vendor/go.etcd.io/bbolt/bolt_riscv64.go b/vendor/go.etcd.io/bbolt/bolt_riscv64.go new file mode 100644 index 0000000000..07b4b47cdb --- /dev/null +++ b/vendor/go.etcd.io/bbolt/bolt_riscv64.go @@ -0,0 +1,12 @@ +// +build riscv64 + +package bbolt + +// maxMapSize represents the largest mmap size supported by Bolt. +const maxMapSize = 0xFFFFFFFFFFFF // 256TB + +// maxAllocSize is the size used when creating array pointers. +const maxAllocSize = 0x7FFFFFFF + +// Are unaligned load/stores broken on this arch? +var brokenUnaligned = true diff --git a/vendor/github.com/boltdb/bolt/bolt_s390x.go b/vendor/go.etcd.io/bbolt/bolt_s390x.go similarity index 95% rename from vendor/github.com/boltdb/bolt/bolt_s390x.go rename to vendor/go.etcd.io/bbolt/bolt_s390x.go index d7c39af925..6d3fcb825d 100644 --- a/vendor/github.com/boltdb/bolt/bolt_s390x.go +++ b/vendor/go.etcd.io/bbolt/bolt_s390x.go @@ -1,6 +1,6 @@ // +build s390x -package bolt +package bbolt // maxMapSize represents the largest mmap size supported by Bolt. const maxMapSize = 0xFFFFFFFFFFFF // 256TB diff --git a/vendor/github.com/boltdb/bolt/bolt_unix.go b/vendor/go.etcd.io/bbolt/bolt_unix.go similarity index 71% rename from vendor/github.com/boltdb/bolt/bolt_unix.go rename to vendor/go.etcd.io/bbolt/bolt_unix.go index cad62dda1e..5f2bb51451 100644 --- a/vendor/github.com/boltdb/bolt/bolt_unix.go +++ b/vendor/go.etcd.io/bbolt/bolt_unix.go @@ -1,41 +1,43 @@ // +build !windows,!plan9,!solaris -package bolt +package bbolt import ( "fmt" - "os" "syscall" "time" "unsafe" ) // flock acquires an advisory lock on a file descriptor. -func flock(db *DB, mode os.FileMode, exclusive bool, timeout time.Duration) error { +func flock(db *DB, exclusive bool, timeout time.Duration) error { var t time.Time + if timeout != 0 { + t = time.Now() + } + fd := db.file.Fd() + flag := syscall.LOCK_NB + if exclusive { + flag |= syscall.LOCK_EX + } else { + flag |= syscall.LOCK_SH + } for { - // If we're beyond our timeout then return an error. - // This can only occur after we've attempted a flock once. - if t.IsZero() { - t = time.Now() - } else if timeout > 0 && time.Since(t) > timeout { - return ErrTimeout - } - flag := syscall.LOCK_SH - if exclusive { - flag = syscall.LOCK_EX - } - - // Otherwise attempt to obtain an exclusive lock. - err := syscall.Flock(int(db.file.Fd()), flag|syscall.LOCK_NB) + // Attempt to obtain an exclusive lock. + err := syscall.Flock(int(fd), flag) if err == nil { return nil } else if err != syscall.EWOULDBLOCK { return err } + // If we timed out then return an error. + if timeout != 0 && time.Since(t) > timeout-flockRetryTimeout { + return ErrTimeout + } + // Wait for a bit and try again. - time.Sleep(50 * time.Millisecond) + time.Sleep(flockRetryTimeout) } } @@ -53,7 +55,9 @@ func mmap(db *DB, sz int) error { } // Advise the kernel that the mmap is accessed randomly. - if err := madvise(b, syscall.MADV_RANDOM); err != nil { + err = madvise(b, syscall.MADV_RANDOM) + if err != nil && err != syscall.ENOSYS { + // Ignore not implemented error in kernel because it still works. return fmt.Errorf("madvise: %s", err) } diff --git a/vendor/github.com/boltdb/bolt/bolt_unix_solaris.go b/vendor/go.etcd.io/bbolt/bolt_unix_solaris.go similarity index 70% rename from vendor/github.com/boltdb/bolt/bolt_unix_solaris.go rename to vendor/go.etcd.io/bbolt/bolt_unix_solaris.go index 307bf2b3ee..babad65786 100644 --- a/vendor/github.com/boltdb/bolt/bolt_unix_solaris.go +++ b/vendor/go.etcd.io/bbolt/bolt_unix_solaris.go @@ -1,8 +1,7 @@ -package bolt +package bbolt import ( "fmt" - "os" "syscall" "time" "unsafe" @@ -11,36 +10,35 @@ import ( ) // flock acquires an advisory lock on a file descriptor. -func flock(db *DB, mode os.FileMode, exclusive bool, timeout time.Duration) error { +func flock(db *DB, exclusive bool, timeout time.Duration) error { var t time.Time + if timeout != 0 { + t = time.Now() + } + fd := db.file.Fd() + var lockType int16 + if exclusive { + lockType = syscall.F_WRLCK + } else { + lockType = syscall.F_RDLCK + } for { - // If we're beyond our timeout then return an error. - // This can only occur after we've attempted a flock once. - if t.IsZero() { - t = time.Now() - } else if timeout > 0 && time.Since(t) > timeout { - return ErrTimeout - } - var lock syscall.Flock_t - lock.Start = 0 - lock.Len = 0 - lock.Pid = 0 - lock.Whence = 0 - lock.Pid = 0 - if exclusive { - lock.Type = syscall.F_WRLCK - } else { - lock.Type = syscall.F_RDLCK - } - err := syscall.FcntlFlock(db.file.Fd(), syscall.F_SETLK, &lock) + // Attempt to obtain an exclusive lock. + lock := syscall.Flock_t{Type: lockType} + err := syscall.FcntlFlock(fd, syscall.F_SETLK, &lock) if err == nil { return nil } else if err != syscall.EAGAIN { return err } + // If we timed out then return an error. + if timeout != 0 && time.Since(t) > timeout-flockRetryTimeout { + return ErrTimeout + } + // Wait for a bit and try again. - time.Sleep(50 * time.Millisecond) + time.Sleep(flockRetryTimeout) } } diff --git a/vendor/github.com/boltdb/bolt/bolt_windows.go b/vendor/go.etcd.io/bbolt/bolt_windows.go similarity index 76% rename from vendor/github.com/boltdb/bolt/bolt_windows.go rename to vendor/go.etcd.io/bbolt/bolt_windows.go index b00fb0720a..fca178bd29 100644 --- a/vendor/github.com/boltdb/bolt/bolt_windows.go +++ b/vendor/go.etcd.io/bbolt/bolt_windows.go @@ -1,4 +1,4 @@ -package bolt +package bbolt import ( "fmt" @@ -16,8 +16,6 @@ var ( ) const ( - lockExt = ".lock" - // see https://msdn.microsoft.com/en-us/library/windows/desktop/aa365203(v=vs.85).aspx flagLockExclusive = 2 flagLockFailImmediately = 1 @@ -48,48 +46,47 @@ func fdatasync(db *DB) error { } // flock acquires an advisory lock on a file descriptor. -func flock(db *DB, mode os.FileMode, exclusive bool, timeout time.Duration) error { - // Create a separate lock file on windows because a process - // cannot share an exclusive lock on the same file. This is - // needed during Tx.WriteTo(). - f, err := os.OpenFile(db.path+lockExt, os.O_CREATE, mode) - if err != nil { - return err - } - db.lockfile = f - +func flock(db *DB, exclusive bool, timeout time.Duration) error { var t time.Time + if timeout != 0 { + t = time.Now() + } + var flag uint32 = flagLockFailImmediately + if exclusive { + flag |= flagLockExclusive + } for { - // If we're beyond our timeout then return an error. - // This can only occur after we've attempted a flock once. - if t.IsZero() { - t = time.Now() - } else if timeout > 0 && time.Since(t) > timeout { - return ErrTimeout - } - - var flag uint32 = flagLockFailImmediately - if exclusive { - flag |= flagLockExclusive - } + // Fix for https://github.com/etcd-io/bbolt/issues/121. Use byte-range + // -1..0 as the lock on the database file. + var m1 uint32 = (1 << 32) - 1 // -1 in a uint32 + err := lockFileEx(syscall.Handle(db.file.Fd()), flag, 0, 1, 0, &syscall.Overlapped{ + Offset: m1, + OffsetHigh: m1, + }) - err := lockFileEx(syscall.Handle(db.lockfile.Fd()), flag, 0, 1, 0, &syscall.Overlapped{}) if err == nil { return nil } else if err != errLockViolation { return err } + // If we timed oumercit then return an error. + if timeout != 0 && time.Since(t) > timeout-flockRetryTimeout { + return ErrTimeout + } + // Wait for a bit and try again. - time.Sleep(50 * time.Millisecond) + time.Sleep(flockRetryTimeout) } } // funlock releases an advisory lock on a file descriptor. func funlock(db *DB) error { - err := unlockFileEx(syscall.Handle(db.lockfile.Fd()), 0, 1, 0, &syscall.Overlapped{}) - db.lockfile.Close() - os.Remove(db.path + lockExt) + var m1 uint32 = (1 << 32) - 1 // -1 in a uint32 + err := unlockFileEx(syscall.Handle(db.file.Fd()), 0, 1, 0, &syscall.Overlapped{ + Offset: m1, + OffsetHigh: m1, + }) return err } diff --git a/vendor/github.com/boltdb/bolt/boltsync_unix.go b/vendor/go.etcd.io/bbolt/boltsync_unix.go similarity index 91% rename from vendor/github.com/boltdb/bolt/boltsync_unix.go rename to vendor/go.etcd.io/bbolt/boltsync_unix.go index f50442523c..9587afefee 100644 --- a/vendor/github.com/boltdb/bolt/boltsync_unix.go +++ b/vendor/go.etcd.io/bbolt/boltsync_unix.go @@ -1,6 +1,6 @@ // +build !windows,!plan9,!linux,!openbsd -package bolt +package bbolt // fdatasync flushes written data to a file descriptor. func fdatasync(db *DB) error { diff --git a/vendor/github.com/boltdb/bolt/bucket.go b/vendor/go.etcd.io/bbolt/bucket.go similarity index 99% rename from vendor/github.com/boltdb/bolt/bucket.go rename to vendor/go.etcd.io/bbolt/bucket.go index 0c5bf27463..84bfd4d6a2 100644 --- a/vendor/github.com/boltdb/bolt/bucket.go +++ b/vendor/go.etcd.io/bbolt/bucket.go @@ -1,4 +1,4 @@ -package bolt +package bbolt import ( "bytes" @@ -14,13 +14,6 @@ const ( MaxValueSize = (1 << 31) - 2 ) -const ( - maxUint = ^uint(0) - minUint = 0 - maxInt = int(^uint(0) >> 1) - minInt = -maxInt - 1 -) - const bucketHeaderSize = int(unsafe.Sizeof(bucket{})) const ( @@ -323,7 +316,12 @@ func (b *Bucket) Delete(key []byte) error { // Move cursor to correct position. c := b.Cursor() - _, _, flags := c.seek(key) + k, _, flags := c.seek(key) + + // Return nil if the key doesn't exist. + if !bytes.Equal(key, k) { + return nil + } // Return an error if there is already existing bucket value. if (flags & bucketLeafFlag) != 0 { diff --git a/vendor/github.com/boltdb/bolt/cursor.go b/vendor/go.etcd.io/bbolt/cursor.go similarity index 99% rename from vendor/github.com/boltdb/bolt/cursor.go rename to vendor/go.etcd.io/bbolt/cursor.go index 1be9f35e3e..3000aced6c 100644 --- a/vendor/github.com/boltdb/bolt/cursor.go +++ b/vendor/go.etcd.io/bbolt/cursor.go @@ -1,4 +1,4 @@ -package bolt +package bbolt import ( "bytes" @@ -157,12 +157,6 @@ func (c *Cursor) seek(seek []byte) (key []byte, value []byte, flags uint32) { // Start from root page/node and traverse to correct page. c.stack = c.stack[:0] c.search(seek, c.bucket.root) - ref := &c.stack[len(c.stack)-1] - - // If the cursor is pointing to the end of page/node then return nil. - if ref.index >= ref.count() { - return nil, nil, 0 - } // If this is a bucket then return a nil value. return c.keyValue() @@ -339,6 +333,8 @@ func (c *Cursor) nsearch(key []byte) { // keyValue returns the key and value of the current leaf element. func (c *Cursor) keyValue() ([]byte, []byte, uint32) { ref := &c.stack[len(c.stack)-1] + + // If the cursor is pointing to the end of page/node then return nil. if ref.count() == 0 || ref.index >= ref.count() { return nil, nil, 0 } diff --git a/vendor/github.com/boltdb/bolt/db.go b/vendor/go.etcd.io/bbolt/db.go similarity index 80% rename from vendor/github.com/boltdb/bolt/db.go rename to vendor/go.etcd.io/bbolt/db.go index f352ff14fe..870c8b1cc9 100644 --- a/vendor/github.com/boltdb/bolt/db.go +++ b/vendor/go.etcd.io/bbolt/db.go @@ -1,4 +1,4 @@ -package bolt +package bbolt import ( "errors" @@ -7,8 +7,7 @@ import ( "log" "os" "runtime" - "runtime/debug" - "strings" + "sort" "sync" "time" "unsafe" @@ -23,6 +22,8 @@ const version = 2 // Represents a marker value to indicate that a file is a Bolt DB. const magic uint32 = 0xED0CDAED +const pgidNoFreelist pgid = 0xffffffffffffffff + // IgnoreNoSync specifies whether the NoSync field of a DB is ignored when // syncing changes to a file. This is required as some operating systems, // such as OpenBSD, do not have a unified buffer cache (UBC) and writes @@ -39,6 +40,19 @@ const ( // default page size for db is set to the OS page size. var defaultPageSize = os.Getpagesize() +// The time elapsed between consecutive file locking attempts. +const flockRetryTimeout = 50 * time.Millisecond + +// FreelistType is the type of the freelist backend +type FreelistType string + +const ( + // FreelistArrayType indicates backend freelist type is array + FreelistArrayType = FreelistType("array") + // FreelistMapType indicates backend freelist type is hashmap + FreelistMapType = FreelistType("hashmap") +) + // DB represents a collection of buckets persisted to a file on disk. // All data access is performed through transactions which can be obtained through the DB. // All the functions on DB will return a ErrDatabaseNotOpen if accessed before Open() is called. @@ -61,6 +75,18 @@ type DB struct { // THIS IS UNSAFE. PLEASE USE WITH CAUTION. NoSync bool + // When true, skips syncing freelist to disk. This improves the database + // write performance under normal operation, but requires a full database + // re-sync during recovery. + NoFreelistSync bool + + // FreelistType sets the backend freelist type. There are two options. Array which is simple but endures + // dramatic performance degradation if database is large and framentation in freelist is common. + // The alternative one is using hashmap, it is faster in almost all circumstances + // but it doesn't guarantee that it offers the smallest page id available. In normal case it is safe. + // The default type is array + FreelistType FreelistType + // When true, skips the truncate call when growing the database. // Setting this to true is only safe on non-ext3/ext4 systems. // Skipping truncation avoids preallocation of hard drive space and @@ -95,9 +121,9 @@ type DB struct { AllocSize int path string + openFile func(string, int, os.FileMode) (*os.File, error) file *os.File - lockfile *os.File // windows only - dataref []byte // mmap'ed readonly, write throws SEGV + dataref []byte // mmap'ed readonly, write throws SEGV data *[maxMapSize]byte datasz int filesz int // current on disk file size @@ -107,9 +133,11 @@ type DB struct { opened bool rwtx *Tx txs []*Tx - freelist *freelist stats Stats + freelist *freelist + freelistLoad sync.Once + pagePool sync.Pool batchMu sync.Mutex @@ -148,14 +176,18 @@ func (db *DB) String() string { // If the file does not exist then it will be created automatically. // Passing in nil options will cause Bolt to open the database with the default options. func Open(path string, mode os.FileMode, options *Options) (*DB, error) { - var db = &DB{opened: true} - + db := &DB{ + opened: true, + } // Set default options if no options are provided. if options == nil { options = DefaultOptions } + db.NoSync = options.NoSync db.NoGrowSync = options.NoGrowSync db.MmapFlags = options.MmapFlags + db.NoFreelistSync = options.NoFreelistSync + db.FreelistType = options.FreelistType // Set default values for later DB operations. db.MaxBatchSize = DefaultMaxBatchSize @@ -168,10 +200,15 @@ func Open(path string, mode os.FileMode, options *Options) (*DB, error) { db.readOnly = true } + db.openFile = options.OpenFile + if db.openFile == nil { + db.openFile = os.OpenFile + } + // Open data file and separate sync handler for metadata writes. db.path = path var err error - if db.file, err = os.OpenFile(db.path, flag|os.O_CREATE, mode); err != nil { + if db.file, err = db.openFile(db.path, flag|os.O_CREATE, mode); err != nil { _ = db.close() return nil, err } @@ -183,7 +220,7 @@ func Open(path string, mode os.FileMode, options *Options) (*DB, error) { // if !options.ReadOnly. // The database file is locked using the shared lock (more than one process may // hold a lock at the same time) otherwise (options.ReadOnly is set). - if err := flock(db, mode, !db.readOnly, options.Timeout); err != nil { + if err := flock(db, !db.readOnly, options.Timeout); err != nil { _ = db.close() return nil, err } @@ -191,31 +228,41 @@ func Open(path string, mode os.FileMode, options *Options) (*DB, error) { // Default values for test hooks db.ops.writeAt = db.file.WriteAt + if db.pageSize = options.PageSize; db.pageSize == 0 { + // Set the default page size to the OS page size. + db.pageSize = defaultPageSize + } + // Initialize the database if it doesn't exist. if info, err := db.file.Stat(); err != nil { + _ = db.close() return nil, err } else if info.Size() == 0 { // Initialize new files with meta pages. if err := db.init(); err != nil { + // clean up file descriptor on initialization fail + _ = db.close() return nil, err } } else { // Read the first meta page to determine the page size. var buf [0x1000]byte - if _, err := db.file.ReadAt(buf[:], 0); err == nil { - m := db.pageInBuffer(buf[:], 0).meta() - if err := m.validate(); err != nil { - // If we can't read the page size, we can assume it's the same - // as the OS -- since that's how the page size was chosen in the - // first place. - // - // If the first page is invalid and this OS uses a different - // page size than what the database was created with then we - // are out of luck and cannot access the database. - db.pageSize = os.Getpagesize() - } else { + // If we can't read the page size, but can read a page, assume + // it's the same as the OS or one given -- since that's how the + // page size was chosen in the first place. + // + // If the first page is invalid and this OS uses a different + // page size than what the database was created with then we + // are out of luck and cannot access the database. + // + // TODO: scan for next page + if bw, err := db.file.ReadAt(buf[:], 0); err == nil && bw == len(buf) { + if m := db.pageInBuffer(buf[:], 0).meta(); m.validate() == nil { db.pageSize = int(m.pageSize) } + } else { + _ = db.close() + return nil, ErrInvalid } } @@ -232,14 +279,50 @@ func Open(path string, mode os.FileMode, options *Options) (*DB, error) { return nil, err } - // Read in the freelist. - db.freelist = newFreelist() - db.freelist.read(db.page(db.meta().freelist)) + if db.readOnly { + return db, nil + } + + db.loadFreelist() + + // Flush freelist when transitioning from no sync to sync so + // NoFreelistSync unaware boltdb can open the db later. + if !db.NoFreelistSync && !db.hasSyncedFreelist() { + tx, err := db.Begin(true) + if tx != nil { + err = tx.Commit() + } + if err != nil { + _ = db.close() + return nil, err + } + } // Mark the database as opened and return. return db, nil } +// loadFreelist reads the freelist if it is synced, or reconstructs it +// by scanning the DB if it is not synced. It assumes there are no +// concurrent accesses being made to the freelist. +func (db *DB) loadFreelist() { + db.freelistLoad.Do(func() { + db.freelist = newFreelist(db.FreelistType) + if !db.hasSyncedFreelist() { + // Reconstruct free list by scanning the DB. + db.freelist.readIDs(db.freepages()) + } else { + // Read free list from freelist page. + db.freelist.read(db.page(db.meta().freelist)) + } + db.stats.FreePageN = db.freelist.free_count() + }) +} + +func (db *DB) hasSyncedFreelist() bool { + return db.meta().freelist != pgidNoFreelist +} + // mmap opens the underlying memory-mapped file and initializes the meta references. // minsz is the minimum size that the new mmap can be. func (db *DB) mmap(minsz int) error { @@ -341,9 +424,6 @@ func (db *DB) mmapSize(size int) (int, error) { // init creates a new database file and initializes its meta pages. func (db *DB) init() error { - // Set the page size to the OS page size. - db.pageSize = os.Getpagesize() - // Create two meta pages on a buffer. buf := make([]byte, db.pageSize*4) for i := 0; i < 2; i++ { @@ -387,7 +467,8 @@ func (db *DB) init() error { } // Close releases all database resources. -// All transactions must be closed before closing the database. +// It will block waiting for any open transactions to finish +// before closing the database and returning. func (db *DB) Close() error { db.rwlock.Lock() defer db.rwlock.Unlock() @@ -395,8 +476,8 @@ func (db *DB) Close() error { db.metalock.Lock() defer db.metalock.Unlock() - db.mmaplock.RLock() - defer db.mmaplock.RUnlock() + db.mmaplock.Lock() + defer db.mmaplock.Unlock() return db.close() } @@ -526,21 +607,36 @@ func (db *DB) beginRWTx() (*Tx, error) { t := &Tx{writable: true} t.init(db) db.rwtx = t + db.freePages() + return t, nil +} - // Free any pages associated with closed read-only transactions. - var minid txid = 0xFFFFFFFFFFFFFFFF - for _, t := range db.txs { - if t.meta.txid < minid { - minid = t.meta.txid - } +// freePages releases any pages associated with closed read-only transactions. +func (db *DB) freePages() { + // Free all pending pages prior to earliest open transaction. + sort.Sort(txsById(db.txs)) + minid := txid(0xFFFFFFFFFFFFFFFF) + if len(db.txs) > 0 { + minid = db.txs[0].meta.txid } if minid > 0 { db.freelist.release(minid - 1) } - - return t, nil + // Release unused txid extents. + for _, t := range db.txs { + db.freelist.releaseRange(minid, t.meta.txid-1) + minid = t.meta.txid + 1 + } + db.freelist.releaseRange(minid, txid(0xFFFFFFFFFFFFFFFF)) + // Any page both allocated and freed in an extent is safe to release. } +type txsById []*Tx + +func (t txsById) Len() int { return len(t) } +func (t txsById) Swap(i, j int) { t[i], t[j] = t[j], t[i] } +func (t txsById) Less(i, j int) bool { return t[i].meta.txid < t[j].meta.txid } + // removeTx removes a transaction from the database. func (db *DB) removeTx(tx *Tx) { // Release the read lock on the mmap. @@ -633,11 +729,7 @@ func (db *DB) View(fn func(*Tx) error) error { return err } - if err := t.Rollback(); err != nil { - return err - } - - return nil + return t.Rollback() } // Batch calls fn as part of a batch. It behaves similar to Update, @@ -737,9 +829,7 @@ retry: // pass success, or bolt internal errors, to all callers for _, c := range b.calls { - if c.err != nil { - c.err <- err - } + c.err <- err } break retry } @@ -826,7 +916,7 @@ func (db *DB) meta() *meta { } // allocate returns a contiguous block of memory starting at a given page. -func (db *DB) allocate(count int) (*page, error) { +func (db *DB) allocate(txid txid, count int) (*page, error) { // Allocate a temporary buffer for the page. var buf []byte if count == 1 { @@ -838,7 +928,7 @@ func (db *DB) allocate(count int) (*page, error) { p.overflow = uint32(count - 1) // Use pages from the freelist if they are available. - if p.id = db.freelist.allocate(count); p.id != 0 { + if p.id = db.freelist.allocate(txid, count); p.id != 0 { return p, nil } @@ -893,6 +983,38 @@ func (db *DB) IsReadOnly() bool { return db.readOnly } +func (db *DB) freepages() []pgid { + tx, err := db.beginTx() + defer func() { + err = tx.Rollback() + if err != nil { + panic("freepages: failed to rollback tx") + } + }() + if err != nil { + panic("freepages: failed to open read only tx") + } + + reachable := make(map[pgid]*page) + nofreed := make(map[pgid]bool) + ech := make(chan error) + go func() { + for e := range ech { + panic(fmt.Sprintf("freepages: failed to get all reachable pages (%v)", e)) + } + }() + tx.checkBucket(&tx.root, reachable, nofreed, ech) + close(ech) + + var fids []pgid + for i := pgid(2); i < db.meta().pgid; i++ { + if _, ok := reachable[i]; !ok { + fids = append(fids, i) + } + } + return fids +} + // Options represents the options that can be set when opening a database. type Options struct { // Timeout is the amount of time to wait to obtain a file lock. @@ -903,6 +1025,17 @@ type Options struct { // Sets the DB.NoGrowSync flag before memory mapping the file. NoGrowSync bool + // Do not sync freelist to disk. This improves the database write performance + // under normal operation, but requires a full database re-sync during recovery. + NoFreelistSync bool + + // FreelistType sets the backend freelist type. There are two options. Array which is simple but endures + // dramatic performance degradation if database is large and framentation in freelist is common. + // The alternative one is using hashmap, it is faster in almost all circumstances + // but it doesn't guarantee that it offers the smallest page id available. In normal case it is safe. + // The default type is array + FreelistType FreelistType + // Open database in read-only mode. Uses flock(..., LOCK_SH |LOCK_NB) to // grab a shared lock (UNIX). ReadOnly bool @@ -919,13 +1052,26 @@ type Options struct { // If initialMmapSize is smaller than the previous database size, // it takes no effect. InitialMmapSize int + + // PageSize overrides the default OS page size. + PageSize int + + // NoSync sets the initial value of DB.NoSync. Normally this can just be + // set directly on the DB itself when returned from Open(), but this option + // is useful in APIs which expose Options but not the underlying DB. + NoSync bool + + // OpenFile is used to open files. It defaults to os.OpenFile. This option + // is useful for writing hermetic tests. + OpenFile func(string, int, os.FileMode) (*os.File, error) } // DefaultOptions represent the options used if nil options are passed into Open(). // No timeout is used which will cause Bolt to wait indefinitely for a lock. var DefaultOptions = &Options{ - Timeout: 0, - NoGrowSync: false, + Timeout: 0, + NoGrowSync: false, + FreelistType: FreelistArrayType, } // Stats represents statistics about the database. @@ -960,10 +1106,6 @@ func (s *Stats) Sub(other *Stats) Stats { return diff } -func (s *Stats) add(other *Stats) { - s.TxStats.add(&other.TxStats) -} - type Info struct { Data uintptr PageSize int @@ -1002,7 +1144,8 @@ func (m *meta) copy(dest *meta) { func (m *meta) write(p *page) { if m.root.root >= m.pgid { panic(fmt.Sprintf("root bucket pgid (%d) above high water mark (%d)", m.root.root, m.pgid)) - } else if m.freelist >= m.pgid { + } else if m.freelist >= m.pgid && m.freelist != pgidNoFreelist { + // TODO: reject pgidNoFreeList if !NoFreelistSync panic(fmt.Sprintf("freelist pgid (%d) above high water mark (%d)", m.freelist, m.pgid)) } @@ -1029,11 +1172,3 @@ func _assert(condition bool, msg string, v ...interface{}) { panic(fmt.Sprintf("assertion failed: "+msg, v...)) } } - -func warn(v ...interface{}) { fmt.Fprintln(os.Stderr, v...) } -func warnf(msg string, v ...interface{}) { fmt.Fprintf(os.Stderr, msg+"\n", v...) } - -func printstack() { - stack := strings.Join(strings.Split(string(debug.Stack()), "\n")[2:], "\n") - fmt.Fprintln(os.Stderr, stack) -} diff --git a/vendor/github.com/boltdb/bolt/doc.go b/vendor/go.etcd.io/bbolt/doc.go similarity index 94% rename from vendor/github.com/boltdb/bolt/doc.go rename to vendor/go.etcd.io/bbolt/doc.go index cc937845db..95f25f01c6 100644 --- a/vendor/github.com/boltdb/bolt/doc.go +++ b/vendor/go.etcd.io/bbolt/doc.go @@ -1,5 +1,5 @@ /* -Package bolt implements a low-level key/value store in pure Go. It supports +package bbolt implements a low-level key/value store in pure Go. It supports fully serializable transactions, ACID semantics, and lock-free MVCC with multiple readers and a single writer. Bolt can be used for projects that want a simple data store without the need to add large dependencies such as @@ -41,4 +41,4 @@ point to different data or can point to invalid memory which will cause a panic. */ -package bolt +package bbolt diff --git a/vendor/github.com/boltdb/bolt/errors.go b/vendor/go.etcd.io/bbolt/errors.go similarity index 99% rename from vendor/github.com/boltdb/bolt/errors.go rename to vendor/go.etcd.io/bbolt/errors.go index a3620a3ebb..48758ca577 100644 --- a/vendor/github.com/boltdb/bolt/errors.go +++ b/vendor/go.etcd.io/bbolt/errors.go @@ -1,4 +1,4 @@ -package bolt +package bbolt import "errors" diff --git a/vendor/go.etcd.io/bbolt/freelist.go b/vendor/go.etcd.io/bbolt/freelist.go new file mode 100644 index 0000000000..587b8cc02d --- /dev/null +++ b/vendor/go.etcd.io/bbolt/freelist.go @@ -0,0 +1,392 @@ +package bbolt + +import ( + "fmt" + "sort" + "unsafe" +) + +// txPending holds a list of pgids and corresponding allocation txns +// that are pending to be freed. +type txPending struct { + ids []pgid + alloctx []txid // txids allocating the ids + lastReleaseBegin txid // beginning txid of last matching releaseRange +} + +// pidSet holds the set of starting pgids which have the same span size +type pidSet map[pgid]struct{} + +// freelist represents a list of all pages that are available for allocation. +// It also tracks pages that have been freed but are still in use by open transactions. +type freelist struct { + freelistType FreelistType // freelist type + ids []pgid // all free and available free page ids. + allocs map[pgid]txid // mapping of txid that allocated a pgid. + pending map[txid]*txPending // mapping of soon-to-be free page ids by tx. + cache map[pgid]bool // fast lookup of all free and pending page ids. + freemaps map[uint64]pidSet // key is the size of continuous pages(span), value is a set which contains the starting pgids of same size + forwardMap map[pgid]uint64 // key is start pgid, value is its span size + backwardMap map[pgid]uint64 // key is end pgid, value is its span size + allocate func(txid txid, n int) pgid // the freelist allocate func + free_count func() int // the function which gives you free page number + mergeSpans func(ids pgids) // the mergeSpan func + getFreePageIDs func() []pgid // get free pgids func + readIDs func(pgids []pgid) // readIDs func reads list of pages and init the freelist +} + +// newFreelist returns an empty, initialized freelist. +func newFreelist(freelistType FreelistType) *freelist { + f := &freelist{ + freelistType: freelistType, + allocs: make(map[pgid]txid), + pending: make(map[txid]*txPending), + cache: make(map[pgid]bool), + freemaps: make(map[uint64]pidSet), + forwardMap: make(map[pgid]uint64), + backwardMap: make(map[pgid]uint64), + } + + if freelistType == FreelistMapType { + f.allocate = f.hashmapAllocate + f.free_count = f.hashmapFreeCount + f.mergeSpans = f.hashmapMergeSpans + f.getFreePageIDs = f.hashmapGetFreePageIDs + f.readIDs = f.hashmapReadIDs + } else { + f.allocate = f.arrayAllocate + f.free_count = f.arrayFreeCount + f.mergeSpans = f.arrayMergeSpans + f.getFreePageIDs = f.arrayGetFreePageIDs + f.readIDs = f.arrayReadIDs + } + + return f +} + +// size returns the size of the page after serialization. +func (f *freelist) size() int { + n := f.count() + if n >= 0xFFFF { + // The first element will be used to store the count. See freelist.write. + n++ + } + return pageHeaderSize + (int(unsafe.Sizeof(pgid(0))) * n) +} + +// count returns count of pages on the freelist +func (f *freelist) count() int { + return f.free_count() + f.pending_count() +} + +// arrayFreeCount returns count of free pages(array version) +func (f *freelist) arrayFreeCount() int { + return len(f.ids) +} + +// pending_count returns count of pending pages +func (f *freelist) pending_count() int { + var count int + for _, txp := range f.pending { + count += len(txp.ids) + } + return count +} + +// copyall copies into dst a list of all free ids and all pending ids in one sorted list. +// f.count returns the minimum length required for dst. +func (f *freelist) copyall(dst []pgid) { + m := make(pgids, 0, f.pending_count()) + for _, txp := range f.pending { + m = append(m, txp.ids...) + } + sort.Sort(m) + mergepgids(dst, f.getFreePageIDs(), m) +} + +// arrayAllocate returns the starting page id of a contiguous list of pages of a given size. +// If a contiguous block cannot be found then 0 is returned. +func (f *freelist) arrayAllocate(txid txid, n int) pgid { + if len(f.ids) == 0 { + return 0 + } + + var initial, previd pgid + for i, id := range f.ids { + if id <= 1 { + panic(fmt.Sprintf("invalid page allocation: %d", id)) + } + + // Reset initial page if this is not contiguous. + if previd == 0 || id-previd != 1 { + initial = id + } + + // If we found a contiguous block then remove it and return it. + if (id-initial)+1 == pgid(n) { + // If we're allocating off the beginning then take the fast path + // and just adjust the existing slice. This will use extra memory + // temporarily but the append() in free() will realloc the slice + // as is necessary. + if (i + 1) == n { + f.ids = f.ids[i+1:] + } else { + copy(f.ids[i-n+1:], f.ids[i+1:]) + f.ids = f.ids[:len(f.ids)-n] + } + + // Remove from the free cache. + for i := pgid(0); i < pgid(n); i++ { + delete(f.cache, initial+i) + } + f.allocs[initial] = txid + return initial + } + + previd = id + } + return 0 +} + +// free releases a page and its overflow for a given transaction id. +// If the page is already free then a panic will occur. +func (f *freelist) free(txid txid, p *page) { + if p.id <= 1 { + panic(fmt.Sprintf("cannot free page 0 or 1: %d", p.id)) + } + + // Free page and all its overflow pages. + txp := f.pending[txid] + if txp == nil { + txp = &txPending{} + f.pending[txid] = txp + } + allocTxid, ok := f.allocs[p.id] + if ok { + delete(f.allocs, p.id) + } else if (p.flags & freelistPageFlag) != 0 { + // Freelist is always allocated by prior tx. + allocTxid = txid - 1 + } + + for id := p.id; id <= p.id+pgid(p.overflow); id++ { + // Verify that page is not already free. + if f.cache[id] { + panic(fmt.Sprintf("page %d already freed", id)) + } + // Add to the freelist and cache. + txp.ids = append(txp.ids, id) + txp.alloctx = append(txp.alloctx, allocTxid) + f.cache[id] = true + } +} + +// release moves all page ids for a transaction id (or older) to the freelist. +func (f *freelist) release(txid txid) { + m := make(pgids, 0) + for tid, txp := range f.pending { + if tid <= txid { + // Move transaction's pending pages to the available freelist. + // Don't remove from the cache since the page is still free. + m = append(m, txp.ids...) + delete(f.pending, tid) + } + } + f.mergeSpans(m) +} + +// releaseRange moves pending pages allocated within an extent [begin,end] to the free list. +func (f *freelist) releaseRange(begin, end txid) { + if begin > end { + return + } + var m pgids + for tid, txp := range f.pending { + if tid < begin || tid > end { + continue + } + // Don't recompute freed pages if ranges haven't updated. + if txp.lastReleaseBegin == begin { + continue + } + for i := 0; i < len(txp.ids); i++ { + if atx := txp.alloctx[i]; atx < begin || atx > end { + continue + } + m = append(m, txp.ids[i]) + txp.ids[i] = txp.ids[len(txp.ids)-1] + txp.ids = txp.ids[:len(txp.ids)-1] + txp.alloctx[i] = txp.alloctx[len(txp.alloctx)-1] + txp.alloctx = txp.alloctx[:len(txp.alloctx)-1] + i-- + } + txp.lastReleaseBegin = begin + if len(txp.ids) == 0 { + delete(f.pending, tid) + } + } + f.mergeSpans(m) +} + +// rollback removes the pages from a given pending tx. +func (f *freelist) rollback(txid txid) { + // Remove page ids from cache. + txp := f.pending[txid] + if txp == nil { + return + } + var m pgids + for i, pgid := range txp.ids { + delete(f.cache, pgid) + tx := txp.alloctx[i] + if tx == 0 { + continue + } + if tx != txid { + // Pending free aborted; restore page back to alloc list. + f.allocs[pgid] = tx + } else { + // Freed page was allocated by this txn; OK to throw away. + m = append(m, pgid) + } + } + // Remove pages from pending list and mark as free if allocated by txid. + delete(f.pending, txid) + f.mergeSpans(m) +} + +// freed returns whether a given page is in the free list. +func (f *freelist) freed(pgid pgid) bool { + return f.cache[pgid] +} + +// read initializes the freelist from a freelist page. +func (f *freelist) read(p *page) { + if (p.flags & freelistPageFlag) == 0 { + panic(fmt.Sprintf("invalid freelist page: %d, page type is %s", p.id, p.typ())) + } + // If the page.count is at the max uint16 value (64k) then it's considered + // an overflow and the size of the freelist is stored as the first element. + idx, count := 0, int(p.count) + if count == 0xFFFF { + idx = 1 + count = int(((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[0]) + } + + // Copy the list of page ids from the freelist. + if count == 0 { + f.ids = nil + } else { + ids := ((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[idx : idx+count] + + // copy the ids, so we don't modify on the freelist page directly + idsCopy := make([]pgid, count) + copy(idsCopy, ids) + // Make sure they're sorted. + sort.Sort(pgids(idsCopy)) + + f.readIDs(idsCopy) + } +} + +// arrayReadIDs initializes the freelist from a given list of ids. +func (f *freelist) arrayReadIDs(ids []pgid) { + f.ids = ids + f.reindex() +} + +func (f *freelist) arrayGetFreePageIDs() []pgid { + return f.ids +} + +// write writes the page ids onto a freelist page. All free and pending ids are +// saved to disk since in the event of a program crash, all pending ids will +// become free. +func (f *freelist) write(p *page) error { + // Combine the old free pgids and pgids waiting on an open transaction. + + // Update the header flag. + p.flags |= freelistPageFlag + + // The page.count can only hold up to 64k elements so if we overflow that + // number then we handle it by putting the size in the first element. + lenids := f.count() + if lenids == 0 { + p.count = uint16(lenids) + } else if lenids < 0xFFFF { + p.count = uint16(lenids) + f.copyall(((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[:]) + } else { + p.count = 0xFFFF + ((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[0] = pgid(lenids) + f.copyall(((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[1:]) + } + + return nil +} + +// reload reads the freelist from a page and filters out pending items. +func (f *freelist) reload(p *page) { + f.read(p) + + // Build a cache of only pending pages. + pcache := make(map[pgid]bool) + for _, txp := range f.pending { + for _, pendingID := range txp.ids { + pcache[pendingID] = true + } + } + + // Check each page in the freelist and build a new available freelist + // with any pages not in the pending lists. + var a []pgid + for _, id := range f.getFreePageIDs() { + if !pcache[id] { + a = append(a, id) + } + } + + f.readIDs(a) +} + +// noSyncReload reads the freelist from pgids and filters out pending items. +func (f *freelist) noSyncReload(pgids []pgid) { + // Build a cache of only pending pages. + pcache := make(map[pgid]bool) + for _, txp := range f.pending { + for _, pendingID := range txp.ids { + pcache[pendingID] = true + } + } + + // Check each page in the freelist and build a new available freelist + // with any pages not in the pending lists. + var a []pgid + for _, id := range pgids { + if !pcache[id] { + a = append(a, id) + } + } + + f.readIDs(a) +} + +// reindex rebuilds the free cache based on available and pending free lists. +func (f *freelist) reindex() { + ids := f.getFreePageIDs() + f.cache = make(map[pgid]bool, len(ids)) + for _, id := range ids { + f.cache[id] = true + } + for _, txp := range f.pending { + for _, pendingID := range txp.ids { + f.cache[pendingID] = true + } + } +} + +// arrayMergeSpans try to merge list of pages(represented by pgids) with existing spans but using array +func (f *freelist) arrayMergeSpans(ids pgids) { + sort.Sort(ids) + f.ids = pgids(f.ids).merge(ids) +} diff --git a/vendor/go.etcd.io/bbolt/freelist_hmap.go b/vendor/go.etcd.io/bbolt/freelist_hmap.go new file mode 100644 index 0000000000..6a03a6c3c8 --- /dev/null +++ b/vendor/go.etcd.io/bbolt/freelist_hmap.go @@ -0,0 +1,178 @@ +package bbolt + +import "sort" + +// hashmapFreeCount returns count of free pages(hashmap version) +func (f *freelist) hashmapFreeCount() int { + // use the forwardmap to get the total count + count := 0 + for _, size := range f.forwardMap { + count += int(size) + } + return count +} + +// hashmapAllocate serves the same purpose as arrayAllocate, but use hashmap as backend +func (f *freelist) hashmapAllocate(txid txid, n int) pgid { + if n == 0 { + return 0 + } + + // if we have a exact size match just return short path + if bm, ok := f.freemaps[uint64(n)]; ok { + for pid := range bm { + // remove the span + f.delSpan(pid, uint64(n)) + + f.allocs[pid] = txid + + for i := pgid(0); i < pgid(n); i++ { + delete(f.cache, pid+pgid(i)) + } + return pid + } + } + + // lookup the map to find larger span + for size, bm := range f.freemaps { + if size < uint64(n) { + continue + } + + for pid := range bm { + // remove the initial + f.delSpan(pid, uint64(size)) + + f.allocs[pid] = txid + + remain := size - uint64(n) + + // add remain span + f.addSpan(pid+pgid(n), remain) + + for i := pgid(0); i < pgid(n); i++ { + delete(f.cache, pid+pgid(i)) + } + return pid + } + } + + return 0 +} + +// hashmapReadIDs reads pgids as input an initial the freelist(hashmap version) +func (f *freelist) hashmapReadIDs(pgids []pgid) { + f.init(pgids) + + // Rebuild the page cache. + f.reindex() +} + +// hashmapGetFreePageIDs returns the sorted free page ids +func (f *freelist) hashmapGetFreePageIDs() []pgid { + count := f.free_count() + if count == 0 { + return nil + } + + m := make([]pgid, 0, count) + for start, size := range f.forwardMap { + for i := 0; i < int(size); i++ { + m = append(m, start+pgid(i)) + } + } + sort.Sort(pgids(m)) + + return m +} + +// hashmapMergeSpans try to merge list of pages(represented by pgids) with existing spans +func (f *freelist) hashmapMergeSpans(ids pgids) { + for _, id := range ids { + // try to see if we can merge and update + f.mergeWithExistingSpan(id) + } +} + +// mergeWithExistingSpan merges pid to the existing free spans, try to merge it backward and forward +func (f *freelist) mergeWithExistingSpan(pid pgid) { + prev := pid - 1 + next := pid + 1 + + preSize, mergeWithPrev := f.backwardMap[prev] + nextSize, mergeWithNext := f.forwardMap[next] + newStart := pid + newSize := uint64(1) + + if mergeWithPrev { + //merge with previous span + start := prev + 1 - pgid(preSize) + f.delSpan(start, preSize) + + newStart -= pgid(preSize) + newSize += preSize + } + + if mergeWithNext { + // merge with next span + f.delSpan(next, nextSize) + newSize += nextSize + } + + f.addSpan(newStart, newSize) +} + +func (f *freelist) addSpan(start pgid, size uint64) { + f.backwardMap[start-1+pgid(size)] = size + f.forwardMap[start] = size + if _, ok := f.freemaps[size]; !ok { + f.freemaps[size] = make(map[pgid]struct{}) + } + + f.freemaps[size][start] = struct{}{} +} + +func (f *freelist) delSpan(start pgid, size uint64) { + delete(f.forwardMap, start) + delete(f.backwardMap, start+pgid(size-1)) + delete(f.freemaps[size], start) + if len(f.freemaps[size]) == 0 { + delete(f.freemaps, size) + } +} + +// initial from pgids using when use hashmap version +// pgids must be sorted +func (f *freelist) init(pgids []pgid) { + if len(pgids) == 0 { + return + } + + size := uint64(1) + start := pgids[0] + + if !sort.SliceIsSorted([]pgid(pgids), func(i, j int) bool { return pgids[i] < pgids[j] }) { + panic("pgids not sorted") + } + + f.freemaps = make(map[uint64]pidSet) + f.forwardMap = make(map[pgid]uint64) + f.backwardMap = make(map[pgid]uint64) + + for i := 1; i < len(pgids); i++ { + // continuous page + if pgids[i] == pgids[i-1]+1 { + size++ + } else { + f.addSpan(start, size) + + size = 1 + start = pgids[i] + } + } + + // init the tail + if size != 0 && start != 0 { + f.addSpan(start, size) + } +} diff --git a/vendor/github.com/boltdb/bolt/node.go b/vendor/go.etcd.io/bbolt/node.go similarity index 99% rename from vendor/github.com/boltdb/bolt/node.go rename to vendor/go.etcd.io/bbolt/node.go index 159318b229..6c3fa553ea 100644 --- a/vendor/github.com/boltdb/bolt/node.go +++ b/vendor/go.etcd.io/bbolt/node.go @@ -1,4 +1,4 @@ -package bolt +package bbolt import ( "bytes" @@ -365,7 +365,7 @@ func (n *node) spill() error { } // Allocate contiguous space for the node. - p, err := tx.allocate((node.size() / tx.db.pageSize) + 1) + p, err := tx.allocate((node.size() + tx.db.pageSize - 1) / tx.db.pageSize) if err != nil { return err } diff --git a/vendor/github.com/boltdb/bolt/page.go b/vendor/go.etcd.io/bbolt/page.go similarity index 99% rename from vendor/github.com/boltdb/bolt/page.go rename to vendor/go.etcd.io/bbolt/page.go index cde403ae86..bca9615f0f 100644 --- a/vendor/github.com/boltdb/bolt/page.go +++ b/vendor/go.etcd.io/bbolt/page.go @@ -1,4 +1,4 @@ -package bolt +package bbolt import ( "fmt" diff --git a/vendor/github.com/boltdb/bolt/tx.go b/vendor/go.etcd.io/bbolt/tx.go similarity index 89% rename from vendor/github.com/boltdb/bolt/tx.go rename to vendor/go.etcd.io/bbolt/tx.go index 6700308a29..2df7688c2f 100644 --- a/vendor/github.com/boltdb/bolt/tx.go +++ b/vendor/go.etcd.io/bbolt/tx.go @@ -1,4 +1,4 @@ -package bolt +package bbolt import ( "fmt" @@ -126,10 +126,7 @@ func (tx *Tx) DeleteBucket(name []byte) error { // the error is returned to the caller. func (tx *Tx) ForEach(fn func(name []byte, b *Bucket) error) error { return tx.root.ForEach(func(k, v []byte) error { - if err := fn(k, tx.root.Bucket(k)); err != nil { - return err - } - return nil + return fn(k, tx.root.Bucket(k)) }) } @@ -169,28 +166,18 @@ func (tx *Tx) Commit() error { // Free the old root bucket. tx.meta.root.root = tx.root.root - opgid := tx.meta.pgid - - // Free the freelist and allocate new pages for it. This will overestimate - // the size of the freelist but not underestimate the size (which would be bad). - tx.db.freelist.free(tx.meta.txid, tx.db.page(tx.meta.freelist)) - p, err := tx.allocate((tx.db.freelist.size() / tx.db.pageSize) + 1) - if err != nil { - tx.rollback() - return err + // Free the old freelist because commit writes out a fresh freelist. + if tx.meta.freelist != pgidNoFreelist { + tx.db.freelist.free(tx.meta.txid, tx.db.page(tx.meta.freelist)) } - if err := tx.db.freelist.write(p); err != nil { - tx.rollback() - return err - } - tx.meta.freelist = p.id - // If the high water mark has moved up then attempt to grow the database. - if tx.meta.pgid > opgid { - if err := tx.db.grow(int(tx.meta.pgid+1) * tx.db.pageSize); err != nil { - tx.rollback() + if !tx.db.NoFreelistSync { + err := tx.commitFreelist() + if err != nil { return err } + } else { + tx.meta.freelist = pgidNoFreelist } // Write dirty pages to disk. @@ -235,6 +222,31 @@ func (tx *Tx) Commit() error { return nil } +func (tx *Tx) commitFreelist() error { + // Allocate new pages for the new free list. This will overestimate + // the size of the freelist but not underestimate the size (which would be bad). + opgid := tx.meta.pgid + p, err := tx.allocate((tx.db.freelist.size() / tx.db.pageSize) + 1) + if err != nil { + tx.rollback() + return err + } + if err := tx.db.freelist.write(p); err != nil { + tx.rollback() + return err + } + tx.meta.freelist = p.id + // If the high water mark has moved up then attempt to grow the database. + if tx.meta.pgid > opgid { + if err := tx.db.grow(int(tx.meta.pgid+1) * tx.db.pageSize); err != nil { + tx.rollback() + return err + } + } + + return nil +} + // Rollback closes the transaction and ignores all previous updates. Read-only // transactions must be rolled back and not committed. func (tx *Tx) Rollback() error { @@ -242,17 +254,36 @@ func (tx *Tx) Rollback() error { if tx.db == nil { return ErrTxClosed } - tx.rollback() + tx.nonPhysicalRollback() return nil } +// nonPhysicalRollback is called when user calls Rollback directly, in this case we do not need to reload the free pages from disk. +func (tx *Tx) nonPhysicalRollback() { + if tx.db == nil { + return + } + if tx.writable { + tx.db.freelist.rollback(tx.meta.txid) + } + tx.close() +} + +// rollback needs to reload the free pages from disk in case some system error happens like fsync error. func (tx *Tx) rollback() { if tx.db == nil { return } if tx.writable { tx.db.freelist.rollback(tx.meta.txid) - tx.db.freelist.reload(tx.db.page(tx.db.meta().freelist)) + if !tx.db.hasSyncedFreelist() { + // Reconstruct free page list by scanning the DB to get the whole free page list. + // Note: scaning the whole db is heavy if your db size is large in NoSyncFreeList mode. + tx.db.freelist.noSyncReload(tx.db.freepages()) + } else { + // Read free page list from freelist page. + tx.db.freelist.reload(tx.db.page(tx.db.meta().freelist)) + } } tx.close() } @@ -291,7 +322,9 @@ func (tx *Tx) close() { } // Copy writes the entire database to a writer. -// This function exists for backwards compatibility. Use WriteTo() instead. +// This function exists for backwards compatibility. +// +// Deprecated; Use WriteTo() instead. func (tx *Tx) Copy(w io.Writer) error { _, err := tx.WriteTo(w) return err @@ -301,11 +334,15 @@ func (tx *Tx) Copy(w io.Writer) error { // If err == nil then exactly tx.Size() bytes will be written into the writer. func (tx *Tx) WriteTo(w io.Writer) (n int64, err error) { // Attempt to open reader with WriteFlag - f, err := os.OpenFile(tx.db.path, os.O_RDONLY|tx.WriteFlag, 0) + f, err := tx.db.openFile(tx.db.path, os.O_RDONLY|tx.WriteFlag, 0) if err != nil { return 0, err } - defer func() { _ = f.Close() }() + defer func() { + if cerr := f.Close(); err == nil { + err = cerr + } + }() // Generate a meta page. We use the same page data for both meta pages. buf := make([]byte, tx.db.pageSize) @@ -333,7 +370,7 @@ func (tx *Tx) WriteTo(w io.Writer) (n int64, err error) { } // Move past the meta pages in the file. - if _, err := f.Seek(int64(tx.db.pageSize*2), os.SEEK_SET); err != nil { + if _, err := f.Seek(int64(tx.db.pageSize*2), io.SeekStart); err != nil { return n, fmt.Errorf("seek: %s", err) } @@ -344,14 +381,14 @@ func (tx *Tx) WriteTo(w io.Writer) (n int64, err error) { return n, err } - return n, f.Close() + return n, nil } // CopyFile copies the entire database to file at the given path. // A reader transaction is maintained during the copy so it is safe to continue // using the database while a copy is in progress. func (tx *Tx) CopyFile(path string, mode os.FileMode) error { - f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, mode) + f, err := tx.db.openFile(path, os.O_RDWR|os.O_CREATE|os.O_TRUNC, mode) if err != nil { return err } @@ -379,6 +416,9 @@ func (tx *Tx) Check() <-chan error { } func (tx *Tx) check(ch chan error) { + // Force loading free list if opened in ReadOnly mode. + tx.db.loadFreelist() + // Check if any pages are double freed. freed := make(map[pgid]bool) all := make([]pgid, tx.db.freelist.count()) @@ -394,8 +434,10 @@ func (tx *Tx) check(ch chan error) { reachable := make(map[pgid]*page) reachable[0] = tx.page(0) // meta0 reachable[1] = tx.page(1) // meta1 - for i := uint32(0); i <= tx.page(tx.meta.freelist).overflow; i++ { - reachable[tx.meta.freelist+pgid(i)] = tx.page(tx.meta.freelist) + if tx.meta.freelist != pgidNoFreelist { + for i := uint32(0); i <= tx.page(tx.meta.freelist).overflow; i++ { + reachable[tx.meta.freelist+pgid(i)] = tx.page(tx.meta.freelist) + } } // Recursively check buckets. @@ -453,7 +495,7 @@ func (tx *Tx) checkBucket(b *Bucket, reachable map[pgid]*page, freed map[pgid]bo // allocate returns a contiguous block of memory starting at a given page. func (tx *Tx) allocate(count int) (*page, error) { - p, err := tx.db.allocate(count) + p, err := tx.db.allocate(tx.meta.txid, count) if err != nil { return nil, err } @@ -462,7 +504,7 @@ func (tx *Tx) allocate(count int) (*page, error) { tx.pages[p.id] = p // Update statistics. - tx.stats.PageCount++ + tx.stats.PageCount += count tx.stats.PageAlloc += count * tx.db.pageSize return p, nil diff --git a/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s b/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s index 9e9040b250..e0ac30c70f 100644 --- a/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s +++ b/vendor/golang.org/x/crypto/curve25519/ladderstep_amd64.s @@ -121,18 +121,18 @@ TEXT ·ladderstep(SB),0,$296-8 ADDQ AX,R12 ADCQ DX,R13 MOVQ $REDMASK51,DX - SHLQ $13,CX:SI + SHLQ $13,SI,CX ANDQ DX,SI - SHLQ $13,R9:R8 + SHLQ $13,R8,R9 ANDQ DX,R8 ADDQ CX,R8 - SHLQ $13,R11:R10 + SHLQ $13,R10,R11 ANDQ DX,R10 ADDQ R9,R10 - SHLQ $13,R13:R12 + SHLQ $13,R12,R13 ANDQ DX,R12 ADDQ R11,R12 - SHLQ $13,R15:R14 + SHLQ $13,R14,R15 ANDQ DX,R14 ADDQ R13,R14 IMUL3Q $19,R15,CX @@ -236,18 +236,18 @@ TEXT ·ladderstep(SB),0,$296-8 ADDQ AX,R12 ADCQ DX,R13 MOVQ $REDMASK51,DX - SHLQ $13,CX:SI + SHLQ $13,SI,CX ANDQ DX,SI - SHLQ $13,R9:R8 + SHLQ $13,R8,R9 ANDQ DX,R8 ADDQ CX,R8 - SHLQ $13,R11:R10 + SHLQ $13,R10,R11 ANDQ DX,R10 ADDQ R9,R10 - SHLQ $13,R13:R12 + SHLQ $13,R12,R13 ANDQ DX,R12 ADDQ R11,R12 - SHLQ $13,R15:R14 + SHLQ $13,R14,R15 ANDQ DX,R14 ADDQ R13,R14 IMUL3Q $19,R15,CX @@ -441,18 +441,18 @@ TEXT ·ladderstep(SB),0,$296-8 ADDQ AX,R12 ADCQ DX,R13 MOVQ $REDMASK51,DX - SHLQ $13,CX:SI + SHLQ $13,SI,CX ANDQ DX,SI - SHLQ $13,R9:R8 + SHLQ $13,R8,R9 ANDQ DX,R8 ADDQ CX,R8 - SHLQ $13,R11:R10 + SHLQ $13,R10,R11 ANDQ DX,R10 ADDQ R9,R10 - SHLQ $13,R13:R12 + SHLQ $13,R12,R13 ANDQ DX,R12 ADDQ R11,R12 - SHLQ $13,R15:R14 + SHLQ $13,R14,R15 ANDQ DX,R14 ADDQ R13,R14 IMUL3Q $19,R15,CX @@ -591,18 +591,18 @@ TEXT ·ladderstep(SB),0,$296-8 ADDQ AX,R12 ADCQ DX,R13 MOVQ $REDMASK51,DX - SHLQ $13,CX:SI + SHLQ $13,SI,CX ANDQ DX,SI - SHLQ $13,R9:R8 + SHLQ $13,R8,R9 ANDQ DX,R8 ADDQ CX,R8 - SHLQ $13,R11:R10 + SHLQ $13,R10,R11 ANDQ DX,R10 ADDQ R9,R10 - SHLQ $13,R13:R12 + SHLQ $13,R12,R13 ANDQ DX,R12 ADDQ R11,R12 - SHLQ $13,R15:R14 + SHLQ $13,R14,R15 ANDQ DX,R14 ADDQ R13,R14 IMUL3Q $19,R15,CX @@ -731,18 +731,18 @@ TEXT ·ladderstep(SB),0,$296-8 ADDQ AX,R12 ADCQ DX,R13 MOVQ $REDMASK51,DX - SHLQ $13,CX:SI + SHLQ $13,SI,CX ANDQ DX,SI - SHLQ $13,R9:R8 + SHLQ $13,R8,R9 ANDQ DX,R8 ADDQ CX,R8 - SHLQ $13,R11:R10 + SHLQ $13,R10,R11 ANDQ DX,R10 ADDQ R9,R10 - SHLQ $13,R13:R12 + SHLQ $13,R12,R13 ANDQ DX,R12 ADDQ R11,R12 - SHLQ $13,R15:R14 + SHLQ $13,R14,R15 ANDQ DX,R14 ADDQ R13,R14 IMUL3Q $19,R15,CX @@ -846,18 +846,18 @@ TEXT ·ladderstep(SB),0,$296-8 ADDQ AX,R12 ADCQ DX,R13 MOVQ $REDMASK51,DX - SHLQ $13,CX:SI + SHLQ $13,SI,CX ANDQ DX,SI - SHLQ $13,R9:R8 + SHLQ $13,R8,R9 ANDQ DX,R8 ADDQ CX,R8 - SHLQ $13,R11:R10 + SHLQ $13,R10,R11 ANDQ DX,R10 ADDQ R9,R10 - SHLQ $13,R13:R12 + SHLQ $13,R12,R13 ANDQ DX,R12 ADDQ R11,R12 - SHLQ $13,R15:R14 + SHLQ $13,R14,R15 ANDQ DX,R14 ADDQ R13,R14 IMUL3Q $19,R15,CX @@ -996,18 +996,18 @@ TEXT ·ladderstep(SB),0,$296-8 ADDQ AX,R12 ADCQ DX,R13 MOVQ $REDMASK51,DX - SHLQ $13,CX:SI + SHLQ $13,SI,CX ANDQ DX,SI - SHLQ $13,R9:R8 + SHLQ $13,R8,R9 ANDQ DX,R8 ADDQ CX,R8 - SHLQ $13,R11:R10 + SHLQ $13,R10,R11 ANDQ DX,R10 ADDQ R9,R10 - SHLQ $13,R13:R12 + SHLQ $13,R12,R13 ANDQ DX,R12 ADDQ R11,R12 - SHLQ $13,R15:R14 + SHLQ $13,R14,R15 ANDQ DX,R14 ADDQ R13,R14 IMUL3Q $19,R15,CX @@ -1146,18 +1146,18 @@ TEXT ·ladderstep(SB),0,$296-8 ADDQ AX,R12 ADCQ DX,R13 MOVQ $REDMASK51,DX - SHLQ $13,CX:SI + SHLQ $13,SI,CX ANDQ DX,SI - SHLQ $13,R9:R8 + SHLQ $13,R8,R9 ANDQ DX,R8 ADDQ CX,R8 - SHLQ $13,R11:R10 + SHLQ $13,R10,R11 ANDQ DX,R10 ADDQ R9,R10 - SHLQ $13,R13:R12 + SHLQ $13,R12,R13 ANDQ DX,R12 ADDQ R11,R12 - SHLQ $13,R15:R14 + SHLQ $13,R14,R15 ANDQ DX,R14 ADDQ R13,R14 IMUL3Q $19,R15,CX @@ -1332,18 +1332,18 @@ TEXT ·ladderstep(SB),0,$296-8 ADDQ AX,R12 ADCQ DX,R13 MOVQ $REDMASK51,DX - SHLQ $13,CX:SI + SHLQ $13,SI,CX ANDQ DX,SI - SHLQ $13,R9:R8 + SHLQ $13,R8,R9 ANDQ DX,R8 ADDQ CX,R8 - SHLQ $13,R11:R10 + SHLQ $13,R10,R11 ANDQ DX,R10 ADDQ R9,R10 - SHLQ $13,R13:R12 + SHLQ $13,R12,R13 ANDQ DX,R12 ADDQ R11,R12 - SHLQ $13,R15:R14 + SHLQ $13,R14,R15 ANDQ DX,R14 ADDQ R13,R14 IMUL3Q $19,R15,CX diff --git a/vendor/golang.org/x/crypto/curve25519/mul_amd64.s b/vendor/golang.org/x/crypto/curve25519/mul_amd64.s index 5ce80a2e56..1f76d1a3f5 100644 --- a/vendor/golang.org/x/crypto/curve25519/mul_amd64.s +++ b/vendor/golang.org/x/crypto/curve25519/mul_amd64.s @@ -124,18 +124,18 @@ TEXT ·mul(SB),0,$16-24 ADDQ AX,R14 ADCQ DX,R15 MOVQ $REDMASK51,SI - SHLQ $13,R9:R8 + SHLQ $13,R8,R9 ANDQ SI,R8 - SHLQ $13,R11:R10 + SHLQ $13,R10,R11 ANDQ SI,R10 ADDQ R9,R10 - SHLQ $13,R13:R12 + SHLQ $13,R12,R13 ANDQ SI,R12 ADDQ R11,R12 - SHLQ $13,R15:R14 + SHLQ $13,R14,R15 ANDQ SI,R14 ADDQ R13,R14 - SHLQ $13,BP:BX + SHLQ $13,BX,BP ANDQ SI,BX ADDQ R15,BX IMUL3Q $19,BP,DX diff --git a/vendor/golang.org/x/crypto/curve25519/square_amd64.s b/vendor/golang.org/x/crypto/curve25519/square_amd64.s index 12f73734ff..07511a45af 100644 --- a/vendor/golang.org/x/crypto/curve25519/square_amd64.s +++ b/vendor/golang.org/x/crypto/curve25519/square_amd64.s @@ -87,18 +87,18 @@ TEXT ·square(SB),7,$0-16 ADDQ AX,R13 ADCQ DX,R14 MOVQ $REDMASK51,SI - SHLQ $13,R8:CX + SHLQ $13,CX,R8 ANDQ SI,CX - SHLQ $13,R10:R9 + SHLQ $13,R9,R10 ANDQ SI,R9 ADDQ R8,R9 - SHLQ $13,R12:R11 + SHLQ $13,R11,R12 ANDQ SI,R11 ADDQ R10,R11 - SHLQ $13,R14:R13 + SHLQ $13,R13,R14 ANDQ SI,R13 ADDQ R12,R13 - SHLQ $13,BX:R15 + SHLQ $13,R15,BX ANDQ SI,R15 ADDQ R14,R15 IMUL3Q $19,BX,DX diff --git a/vendor/golang.org/x/crypto/internal/chacha20/asm_ppc64le.s b/vendor/golang.org/x/crypto/internal/chacha20/asm_ppc64le.s new file mode 100644 index 0000000000..cde3fc989b --- /dev/null +++ b/vendor/golang.org/x/crypto/internal/chacha20/asm_ppc64le.s @@ -0,0 +1,668 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Based on CRYPTOGAMS code with the following comment: +// # ==================================================================== +// # Written by Andy Polyakov for the OpenSSL +// # project. The module is, however, dual licensed under OpenSSL and +// # CRYPTOGAMS licenses depending on where you obtain it. For further +// # details see http://www.openssl.org/~appro/cryptogams/. +// # ==================================================================== + +// Original code can be found at the link below: +// https://github.com/dot-asm/cryptogams/commit/a60f5b50ed908e91e5c39ca79126a4a876d5d8ff + +// There are some differences between CRYPTOGAMS code and this one. The round +// loop for "_int" isn't the same as the original. Some adjustments were +// necessary because there are less vector registers available. For example, some +// X variables (r12, r13, r14, and r15) share the same register used by the +// counter. The original code uses ctr to name the counter. Here we use CNT +// because golang uses CTR as the counter register name. + +// +build ppc64le,!gccgo,!appengine + +#include "textflag.h" + +#define OUT R3 +#define INP R4 +#define LEN R5 +#define KEY R6 +#define CNT R7 + +#define TEMP R8 + +#define X0 R11 +#define X1 R12 +#define X2 R14 +#define X3 R15 +#define X4 R16 +#define X5 R17 +#define X6 R18 +#define X7 R19 +#define X8 R20 +#define X9 R21 +#define X10 R22 +#define X11 R23 +#define X12 R24 +#define X13 R25 +#define X14 R26 +#define X15 R27 + +#define CON0 X0 +#define CON1 X1 +#define CON2 X2 +#define CON3 X3 + +#define KEY0 X4 +#define KEY1 X5 +#define KEY2 X6 +#define KEY3 X7 +#define KEY4 X8 +#define KEY5 X9 +#define KEY6 X10 +#define KEY7 X11 + +#define CNT0 X12 +#define CNT1 X13 +#define CNT2 X14 +#define CNT3 X15 + +#define TMP0 R9 +#define TMP1 R10 +#define TMP2 R28 +#define TMP3 R29 + +#define CONSTS R8 + +#define A0 V0 +#define B0 V1 +#define C0 V2 +#define D0 V3 +#define A1 V4 +#define B1 V5 +#define C1 V6 +#define D1 V7 +#define A2 V8 +#define B2 V9 +#define C2 V10 +#define D2 V11 +#define T0 V12 +#define T1 V13 +#define T2 V14 + +#define K0 V15 +#define K1 V16 +#define K2 V17 +#define K3 V18 +#define K4 V19 +#define K5 V20 + +#define FOUR V21 +#define SIXTEEN V22 +#define TWENTY4 V23 +#define TWENTY V24 +#define TWELVE V25 +#define TWENTY5 V26 +#define SEVEN V27 + +#define INPPERM V28 +#define OUTPERM V29 +#define OUTMASK V30 + +#define DD0 V31 +#define DD1 SEVEN +#define DD2 T0 +#define DD3 T1 +#define DD4 T2 + +DATA ·consts+0x00(SB)/8, $0x3320646e61707865 +DATA ·consts+0x08(SB)/8, $0x6b20657479622d32 +DATA ·consts+0x10(SB)/8, $0x0000000000000001 +DATA ·consts+0x18(SB)/8, $0x0000000000000000 +DATA ·consts+0x20(SB)/8, $0x0000000000000004 +DATA ·consts+0x28(SB)/8, $0x0000000000000000 +DATA ·consts+0x30(SB)/8, $0x0a0b08090e0f0c0d +DATA ·consts+0x38(SB)/8, $0x0203000106070405 +DATA ·consts+0x40(SB)/8, $0x090a0b080d0e0f0c +DATA ·consts+0x48(SB)/8, $0x0102030005060704 +GLOBL ·consts(SB), RODATA, $80 + +//func chaCha20_ctr32_vmx(out, inp *byte, len int, key *[32]byte, counter *[16]byte) +TEXT ·chaCha20_ctr32_vmx(SB),NOSPLIT|NOFRAME,$0 + // Load the arguments inside the registers + MOVD out+0(FP), OUT + MOVD inp+8(FP), INP + MOVD len+16(FP), LEN + MOVD key+24(FP), KEY + MOVD counter+32(FP), CNT + + MOVD $·consts(SB), CONSTS // point to consts addr + + MOVD $16, X0 + MOVD $32, X1 + MOVD $48, X2 + MOVD $64, X3 + MOVD $31, X4 + MOVD $15, X5 + + // Load key + LVX (KEY)(R0), K1 + LVSR (KEY)(R0), T0 + LVX (KEY)(X0), K2 + LVX (KEY)(X4), DD0 + + // Load counter + LVX (CNT)(R0), K3 + LVSR (CNT)(R0), T1 + LVX (CNT)(X5), DD1 + + // Load constants + LVX (CONSTS)(R0), K0 + LVX (CONSTS)(X0), K5 + LVX (CONSTS)(X1), FOUR + LVX (CONSTS)(X2), SIXTEEN + LVX (CONSTS)(X3), TWENTY4 + + // Align key and counter + VPERM K2, K1, T0, K1 + VPERM DD0, K2, T0, K2 + VPERM DD1, K3, T1, K3 + + // Load counter to GPR + MOVWZ 0(CNT), CNT0 + MOVWZ 4(CNT), CNT1 + MOVWZ 8(CNT), CNT2 + MOVWZ 12(CNT), CNT3 + + // Adjust vectors for the initial state + VADDUWM K3, K5, K3 + VADDUWM K3, K5, K4 + VADDUWM K4, K5, K5 + + // Synthesized constants + VSPLTISW $-12, TWENTY + VSPLTISW $12, TWELVE + VSPLTISW $-7, TWENTY5 + + VXOR T0, T0, T0 + VSPLTISW $-1, OUTMASK + LVSR (INP)(R0), INPPERM + LVSL (OUT)(R0), OUTPERM + VPERM OUTMASK, T0, OUTPERM, OUTMASK + +loop_outer_vmx: + // Load constant + MOVD $0x61707865, CON0 + MOVD $0x3320646e, CON1 + MOVD $0x79622d32, CON2 + MOVD $0x6b206574, CON3 + + VOR K0, K0, A0 + VOR K0, K0, A1 + VOR K0, K0, A2 + VOR K1, K1, B0 + + MOVD $10, TEMP + + // Load key to GPR + MOVWZ 0(KEY), X4 + MOVWZ 4(KEY), X5 + MOVWZ 8(KEY), X6 + MOVWZ 12(KEY), X7 + VOR K1, K1, B1 + VOR K1, K1, B2 + MOVWZ 16(KEY), X8 + MOVWZ 0(CNT), X12 + MOVWZ 20(KEY), X9 + MOVWZ 4(CNT), X13 + VOR K2, K2, C0 + VOR K2, K2, C1 + MOVWZ 24(KEY), X10 + MOVWZ 8(CNT), X14 + VOR K2, K2, C2 + VOR K3, K3, D0 + MOVWZ 28(KEY), X11 + MOVWZ 12(CNT), X15 + VOR K4, K4, D1 + VOR K5, K5, D2 + + MOVD X4, TMP0 + MOVD X5, TMP1 + MOVD X6, TMP2 + MOVD X7, TMP3 + VSPLTISW $7, SEVEN + + MOVD TEMP, CTR + +loop_vmx: + // CRYPTOGAMS uses a macro to create a loop using perl. This isn't possible + // using assembly macros. Therefore, the macro expansion result was used + // in order to maintain the algorithm efficiency. + // This loop generates three keystream blocks using VMX instructions and, + // in parallel, one keystream block using scalar instructions. + ADD X4, X0, X0 + ADD X5, X1, X1 + VADDUWM A0, B0, A0 + VADDUWM A1, B1, A1 + ADD X6, X2, X2 + ADD X7, X3, X3 + VADDUWM A2, B2, A2 + VXOR D0, A0, D0 + XOR X0, X12, X12 + XOR X1, X13, X13 + VXOR D1, A1, D1 + VXOR D2, A2, D2 + XOR X2, X14, X14 + XOR X3, X15, X15 + VPERM D0, D0, SIXTEEN, D0 + VPERM D1, D1, SIXTEEN, D1 + ROTLW $16, X12, X12 + ROTLW $16, X13, X13 + VPERM D2, D2, SIXTEEN, D2 + VADDUWM C0, D0, C0 + ROTLW $16, X14, X14 + ROTLW $16, X15, X15 + VADDUWM C1, D1, C1 + VADDUWM C2, D2, C2 + ADD X12, X8, X8 + ADD X13, X9, X9 + VXOR B0, C0, T0 + VXOR B1, C1, T1 + ADD X14, X10, X10 + ADD X15, X11, X11 + VXOR B2, C2, T2 + VRLW T0, TWELVE, B0 + XOR X8, X4, X4 + XOR X9, X5, X5 + VRLW T1, TWELVE, B1 + VRLW T2, TWELVE, B2 + XOR X10, X6, X6 + XOR X11, X7, X7 + VADDUWM A0, B0, A0 + VADDUWM A1, B1, A1 + ROTLW $12, X4, X4 + ROTLW $12, X5, X5 + VADDUWM A2, B2, A2 + VXOR D0, A0, D0 + ROTLW $12, X6, X6 + ROTLW $12, X7, X7 + VXOR D1, A1, D1 + VXOR D2, A2, D2 + ADD X4, X0, X0 + ADD X5, X1, X1 + VPERM D0, D0, TWENTY4, D0 + VPERM D1, D1, TWENTY4, D1 + ADD X6, X2, X2 + ADD X7, X3, X3 + VPERM D2, D2, TWENTY4, D2 + VADDUWM C0, D0, C0 + XOR X0, X12, X12 + XOR X1, X13, X13 + VADDUWM C1, D1, C1 + VADDUWM C2, D2, C2 + XOR X2, X14, X14 + XOR X3, X15, X15 + VXOR B0, C0, T0 + VXOR B1, C1, T1 + ROTLW $8, X12, X12 + ROTLW $8, X13, X13 + VXOR B2, C2, T2 + VRLW T0, SEVEN, B0 + ROTLW $8, X14, X14 + ROTLW $8, X15, X15 + VRLW T1, SEVEN, B1 + VRLW T2, SEVEN, B2 + ADD X12, X8, X8 + ADD X13, X9, X9 + VSLDOI $8, C0, C0, C0 + VSLDOI $8, C1, C1, C1 + ADD X14, X10, X10 + ADD X15, X11, X11 + VSLDOI $8, C2, C2, C2 + VSLDOI $12, B0, B0, B0 + XOR X8, X4, X4 + XOR X9, X5, X5 + VSLDOI $12, B1, B1, B1 + VSLDOI $12, B2, B2, B2 + XOR X10, X6, X6 + XOR X11, X7, X7 + VSLDOI $4, D0, D0, D0 + VSLDOI $4, D1, D1, D1 + ROTLW $7, X4, X4 + ROTLW $7, X5, X5 + VSLDOI $4, D2, D2, D2 + VADDUWM A0, B0, A0 + ROTLW $7, X6, X6 + ROTLW $7, X7, X7 + VADDUWM A1, B1, A1 + VADDUWM A2, B2, A2 + ADD X5, X0, X0 + ADD X6, X1, X1 + VXOR D0, A0, D0 + VXOR D1, A1, D1 + ADD X7, X2, X2 + ADD X4, X3, X3 + VXOR D2, A2, D2 + VPERM D0, D0, SIXTEEN, D0 + XOR X0, X15, X15 + XOR X1, X12, X12 + VPERM D1, D1, SIXTEEN, D1 + VPERM D2, D2, SIXTEEN, D2 + XOR X2, X13, X13 + XOR X3, X14, X14 + VADDUWM C0, D0, C0 + VADDUWM C1, D1, C1 + ROTLW $16, X15, X15 + ROTLW $16, X12, X12 + VADDUWM C2, D2, C2 + VXOR B0, C0, T0 + ROTLW $16, X13, X13 + ROTLW $16, X14, X14 + VXOR B1, C1, T1 + VXOR B2, C2, T2 + ADD X15, X10, X10 + ADD X12, X11, X11 + VRLW T0, TWELVE, B0 + VRLW T1, TWELVE, B1 + ADD X13, X8, X8 + ADD X14, X9, X9 + VRLW T2, TWELVE, B2 + VADDUWM A0, B0, A0 + XOR X10, X5, X5 + XOR X11, X6, X6 + VADDUWM A1, B1, A1 + VADDUWM A2, B2, A2 + XOR X8, X7, X7 + XOR X9, X4, X4 + VXOR D0, A0, D0 + VXOR D1, A1, D1 + ROTLW $12, X5, X5 + ROTLW $12, X6, X6 + VXOR D2, A2, D2 + VPERM D0, D0, TWENTY4, D0 + ROTLW $12, X7, X7 + ROTLW $12, X4, X4 + VPERM D1, D1, TWENTY4, D1 + VPERM D2, D2, TWENTY4, D2 + ADD X5, X0, X0 + ADD X6, X1, X1 + VADDUWM C0, D0, C0 + VADDUWM C1, D1, C1 + ADD X7, X2, X2 + ADD X4, X3, X3 + VADDUWM C2, D2, C2 + VXOR B0, C0, T0 + XOR X0, X15, X15 + XOR X1, X12, X12 + VXOR B1, C1, T1 + VXOR B2, C2, T2 + XOR X2, X13, X13 + XOR X3, X14, X14 + VRLW T0, SEVEN, B0 + VRLW T1, SEVEN, B1 + ROTLW $8, X15, X15 + ROTLW $8, X12, X12 + VRLW T2, SEVEN, B2 + VSLDOI $8, C0, C0, C0 + ROTLW $8, X13, X13 + ROTLW $8, X14, X14 + VSLDOI $8, C1, C1, C1 + VSLDOI $8, C2, C2, C2 + ADD X15, X10, X10 + ADD X12, X11, X11 + VSLDOI $4, B0, B0, B0 + VSLDOI $4, B1, B1, B1 + ADD X13, X8, X8 + ADD X14, X9, X9 + VSLDOI $4, B2, B2, B2 + VSLDOI $12, D0, D0, D0 + XOR X10, X5, X5 + XOR X11, X6, X6 + VSLDOI $12, D1, D1, D1 + VSLDOI $12, D2, D2, D2 + XOR X8, X7, X7 + XOR X9, X4, X4 + ROTLW $7, X5, X5 + ROTLW $7, X6, X6 + ROTLW $7, X7, X7 + ROTLW $7, X4, X4 + BC 0x10, 0, loop_vmx + + SUB $256, LEN, LEN + + // Accumulate key block + ADD $0x61707865, X0, X0 + ADD $0x3320646e, X1, X1 + ADD $0x79622d32, X2, X2 + ADD $0x6b206574, X3, X3 + ADD TMP0, X4, X4 + ADD TMP1, X5, X5 + ADD TMP2, X6, X6 + ADD TMP3, X7, X7 + MOVWZ 16(KEY), TMP0 + MOVWZ 20(KEY), TMP1 + MOVWZ 24(KEY), TMP2 + MOVWZ 28(KEY), TMP3 + ADD TMP0, X8, X8 + ADD TMP1, X9, X9 + ADD TMP2, X10, X10 + ADD TMP3, X11, X11 + + MOVWZ 12(CNT), TMP0 + MOVWZ 8(CNT), TMP1 + MOVWZ 4(CNT), TMP2 + MOVWZ 0(CNT), TEMP + ADD TMP0, X15, X15 + ADD TMP1, X14, X14 + ADD TMP2, X13, X13 + ADD TEMP, X12, X12 + + // Accumulate key block + VADDUWM A0, K0, A0 + VADDUWM A1, K0, A1 + VADDUWM A2, K0, A2 + VADDUWM B0, K1, B0 + VADDUWM B1, K1, B1 + VADDUWM B2, K1, B2 + VADDUWM C0, K2, C0 + VADDUWM C1, K2, C1 + VADDUWM C2, K2, C2 + VADDUWM D0, K3, D0 + VADDUWM D1, K4, D1 + VADDUWM D2, K5, D2 + + // Increment counter + ADD $4, TEMP, TEMP + MOVW TEMP, 0(CNT) + + VADDUWM K3, FOUR, K3 + VADDUWM K4, FOUR, K4 + VADDUWM K5, FOUR, K5 + + // XOR the input slice (INP) with the keystream, which is stored in GPRs (X0-X3). + + // Load input (aligned or not) + MOVWZ 0(INP), TMP0 + MOVWZ 4(INP), TMP1 + MOVWZ 8(INP), TMP2 + MOVWZ 12(INP), TMP3 + + // XOR with input + XOR TMP0, X0, X0 + XOR TMP1, X1, X1 + XOR TMP2, X2, X2 + XOR TMP3, X3, X3 + MOVWZ 16(INP), TMP0 + MOVWZ 20(INP), TMP1 + MOVWZ 24(INP), TMP2 + MOVWZ 28(INP), TMP3 + XOR TMP0, X4, X4 + XOR TMP1, X5, X5 + XOR TMP2, X6, X6 + XOR TMP3, X7, X7 + MOVWZ 32(INP), TMP0 + MOVWZ 36(INP), TMP1 + MOVWZ 40(INP), TMP2 + MOVWZ 44(INP), TMP3 + XOR TMP0, X8, X8 + XOR TMP1, X9, X9 + XOR TMP2, X10, X10 + XOR TMP3, X11, X11 + MOVWZ 48(INP), TMP0 + MOVWZ 52(INP), TMP1 + MOVWZ 56(INP), TMP2 + MOVWZ 60(INP), TMP3 + XOR TMP0, X12, X12 + XOR TMP1, X13, X13 + XOR TMP2, X14, X14 + XOR TMP3, X15, X15 + + // Store output (aligned or not) + MOVW X0, 0(OUT) + MOVW X1, 4(OUT) + MOVW X2, 8(OUT) + MOVW X3, 12(OUT) + + ADD $64, INP, INP // INP points to the end of the slice for the alignment code below + + MOVW X4, 16(OUT) + MOVD $16, TMP0 + MOVW X5, 20(OUT) + MOVD $32, TMP1 + MOVW X6, 24(OUT) + MOVD $48, TMP2 + MOVW X7, 28(OUT) + MOVD $64, TMP3 + MOVW X8, 32(OUT) + MOVW X9, 36(OUT) + MOVW X10, 40(OUT) + MOVW X11, 44(OUT) + MOVW X12, 48(OUT) + MOVW X13, 52(OUT) + MOVW X14, 56(OUT) + MOVW X15, 60(OUT) + ADD $64, OUT, OUT + + // Load input + LVX (INP)(R0), DD0 + LVX (INP)(TMP0), DD1 + LVX (INP)(TMP1), DD2 + LVX (INP)(TMP2), DD3 + LVX (INP)(TMP3), DD4 + ADD $64, INP, INP + + VPERM DD1, DD0, INPPERM, DD0 // Align input + VPERM DD2, DD1, INPPERM, DD1 + VPERM DD3, DD2, INPPERM, DD2 + VPERM DD4, DD3, INPPERM, DD3 + VXOR A0, DD0, A0 // XOR with input + VXOR B0, DD1, B0 + LVX (INP)(TMP0), DD1 // Keep loading input + VXOR C0, DD2, C0 + LVX (INP)(TMP1), DD2 + VXOR D0, DD3, D0 + LVX (INP)(TMP2), DD3 + LVX (INP)(TMP3), DD0 + ADD $64, INP, INP + MOVD $63, TMP3 // 63 is not a typo + VPERM A0, A0, OUTPERM, A0 + VPERM B0, B0, OUTPERM, B0 + VPERM C0, C0, OUTPERM, C0 + VPERM D0, D0, OUTPERM, D0 + + VPERM DD1, DD4, INPPERM, DD4 // Align input + VPERM DD2, DD1, INPPERM, DD1 + VPERM DD3, DD2, INPPERM, DD2 + VPERM DD0, DD3, INPPERM, DD3 + VXOR A1, DD4, A1 + VXOR B1, DD1, B1 + LVX (INP)(TMP0), DD1 // Keep loading + VXOR C1, DD2, C1 + LVX (INP)(TMP1), DD2 + VXOR D1, DD3, D1 + LVX (INP)(TMP2), DD3 + + // Note that the LVX address is always rounded down to the nearest 16-byte + // boundary, and that it always points to at most 15 bytes beyond the end of + // the slice, so we cannot cross a page boundary. + LVX (INP)(TMP3), DD4 // Redundant in aligned case. + ADD $64, INP, INP + VPERM A1, A1, OUTPERM, A1 // Pre-misalign output + VPERM B1, B1, OUTPERM, B1 + VPERM C1, C1, OUTPERM, C1 + VPERM D1, D1, OUTPERM, D1 + + VPERM DD1, DD0, INPPERM, DD0 // Align Input + VPERM DD2, DD1, INPPERM, DD1 + VPERM DD3, DD2, INPPERM, DD2 + VPERM DD4, DD3, INPPERM, DD3 + VXOR A2, DD0, A2 + VXOR B2, DD1, B2 + VXOR C2, DD2, C2 + VXOR D2, DD3, D2 + VPERM A2, A2, OUTPERM, A2 + VPERM B2, B2, OUTPERM, B2 + VPERM C2, C2, OUTPERM, C2 + VPERM D2, D2, OUTPERM, D2 + + ANDCC $15, OUT, X1 // Is out aligned? + MOVD OUT, X0 + + VSEL A0, B0, OUTMASK, DD0 // Collect pre-misaligned output + VSEL B0, C0, OUTMASK, DD1 + VSEL C0, D0, OUTMASK, DD2 + VSEL D0, A1, OUTMASK, DD3 + VSEL A1, B1, OUTMASK, B0 + VSEL B1, C1, OUTMASK, C0 + VSEL C1, D1, OUTMASK, D0 + VSEL D1, A2, OUTMASK, A1 + VSEL A2, B2, OUTMASK, B1 + VSEL B2, C2, OUTMASK, C1 + VSEL C2, D2, OUTMASK, D1 + + STVX DD0, (OUT+TMP0) + STVX DD1, (OUT+TMP1) + STVX DD2, (OUT+TMP2) + ADD $64, OUT, OUT + STVX DD3, (OUT+R0) + STVX B0, (OUT+TMP0) + STVX C0, (OUT+TMP1) + STVX D0, (OUT+TMP2) + ADD $64, OUT, OUT + STVX A1, (OUT+R0) + STVX B1, (OUT+TMP0) + STVX C1, (OUT+TMP1) + STVX D1, (OUT+TMP2) + ADD $64, OUT, OUT + + BEQ aligned_vmx + + SUB X1, OUT, X2 // in misaligned case edges + MOVD $0, X3 // are written byte-by-byte + +unaligned_tail_vmx: + STVEBX D2, (X2+X3) + ADD $1, X3, X3 + CMPW X3, X1 + BNE unaligned_tail_vmx + SUB X1, X0, X2 + +unaligned_head_vmx: + STVEBX A0, (X2+X1) + CMPW X1, $15 + ADD $1, X1, X1 + BNE unaligned_head_vmx + + CMPU LEN, $255 // done with 256-byte block yet? + BGT loop_outer_vmx + + JMP done_vmx + +aligned_vmx: + STVX A0, (X0+R0) + CMPU LEN, $255 // done with 256-byte block yet? + BGT loop_outer_vmx + +done_vmx: + RET diff --git a/vendor/golang.org/x/crypto/internal/chacha20/chacha_noasm.go b/vendor/golang.org/x/crypto/internal/chacha20/chacha_noasm.go index 47eac0314c..bf8beba670 100644 --- a/vendor/golang.org/x/crypto/internal/chacha20/chacha_noasm.go +++ b/vendor/golang.org/x/crypto/internal/chacha20/chacha_noasm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !arm64,!s390x arm64,!go1.11 gccgo appengine +// +build !ppc64le,!arm64,!s390x arm64,!go1.11 gccgo appengine package chacha20 diff --git a/vendor/golang.org/x/crypto/internal/chacha20/chacha_ppc64le.go b/vendor/golang.org/x/crypto/internal/chacha20/chacha_ppc64le.go new file mode 100644 index 0000000000..638cb5e5de --- /dev/null +++ b/vendor/golang.org/x/crypto/internal/chacha20/chacha_ppc64le.go @@ -0,0 +1,52 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ppc64le,!gccgo,!appengine + +package chacha20 + +import "encoding/binary" + +const ( + bufSize = 256 + haveAsm = true +) + +//go:noescape +func chaCha20_ctr32_vmx(out, inp *byte, len int, key *[8]uint32, counter *uint32) + +func (c *Cipher) xorKeyStreamAsm(dst, src []byte) { + if len(src) >= bufSize { + chaCha20_ctr32_vmx(&dst[0], &src[0], len(src)-len(src)%bufSize, &c.key, &c.counter) + } + if len(src)%bufSize != 0 { + chaCha20_ctr32_vmx(&c.buf[0], &c.buf[0], bufSize, &c.key, &c.counter) + start := len(src) - len(src)%bufSize + ts, td, tb := src[start:], dst[start:], c.buf[:] + // Unroll loop to XOR 32 bytes per iteration. + for i := 0; i < len(ts)-32; i += 32 { + td, tb = td[:len(ts)], tb[:len(ts)] // bounds check elimination + s0 := binary.LittleEndian.Uint64(ts[0:8]) + s1 := binary.LittleEndian.Uint64(ts[8:16]) + s2 := binary.LittleEndian.Uint64(ts[16:24]) + s3 := binary.LittleEndian.Uint64(ts[24:32]) + b0 := binary.LittleEndian.Uint64(tb[0:8]) + b1 := binary.LittleEndian.Uint64(tb[8:16]) + b2 := binary.LittleEndian.Uint64(tb[16:24]) + b3 := binary.LittleEndian.Uint64(tb[24:32]) + binary.LittleEndian.PutUint64(td[0:8], s0^b0) + binary.LittleEndian.PutUint64(td[8:16], s1^b1) + binary.LittleEndian.PutUint64(td[16:24], s2^b2) + binary.LittleEndian.PutUint64(td[24:32], s3^b3) + ts, td, tb = ts[32:], td[32:], tb[32:] + } + td, tb = td[:len(ts)], tb[:len(ts)] // bounds check elimination + for i, v := range ts { + td[i] = tb[i] ^ v + } + c.len = bufSize - (len(src) % bufSize) + + } + +} diff --git a/vendor/golang.org/x/crypto/openpgp/keys.go b/vendor/golang.org/x/crypto/openpgp/keys.go index 3e2518600e..faa2fb3693 100644 --- a/vendor/golang.org/x/crypto/openpgp/keys.go +++ b/vendor/golang.org/x/crypto/openpgp/keys.go @@ -504,7 +504,7 @@ const defaultRSAKeyBits = 2048 // which may be empty but must not contain any of "()<>\x00". // If config is nil, sensible defaults will be used. func NewEntity(name, comment, email string, config *packet.Config) (*Entity, error) { - currentTime := config.Now() + creationTime := config.Now() bits := defaultRSAKeyBits if config != nil && config.RSABits != 0 { @@ -525,8 +525,8 @@ func NewEntity(name, comment, email string, config *packet.Config) (*Entity, err } e := &Entity{ - PrimaryKey: packet.NewRSAPublicKey(currentTime, &signingPriv.PublicKey), - PrivateKey: packet.NewRSAPrivateKey(currentTime, signingPriv), + PrimaryKey: packet.NewRSAPublicKey(creationTime, &signingPriv.PublicKey), + PrivateKey: packet.NewRSAPrivateKey(creationTime, signingPriv), Identities: make(map[string]*Identity), } isPrimaryId := true @@ -534,7 +534,7 @@ func NewEntity(name, comment, email string, config *packet.Config) (*Entity, err Name: uid.Id, UserId: uid, SelfSignature: &packet.Signature{ - CreationTime: currentTime, + CreationTime: creationTime, SigType: packet.SigTypePositiveCert, PubKeyAlgo: packet.PubKeyAlgoRSA, Hash: config.Hash(), @@ -563,10 +563,10 @@ func NewEntity(name, comment, email string, config *packet.Config) (*Entity, err e.Subkeys = make([]Subkey, 1) e.Subkeys[0] = Subkey{ - PublicKey: packet.NewRSAPublicKey(currentTime, &encryptingPriv.PublicKey), - PrivateKey: packet.NewRSAPrivateKey(currentTime, encryptingPriv), + PublicKey: packet.NewRSAPublicKey(creationTime, &encryptingPriv.PublicKey), + PrivateKey: packet.NewRSAPrivateKey(creationTime, encryptingPriv), Sig: &packet.Signature{ - CreationTime: currentTime, + CreationTime: creationTime, SigType: packet.SigTypeSubkeyBinding, PubKeyAlgo: packet.PubKeyAlgoRSA, Hash: config.Hash(), diff --git a/vendor/golang.org/x/crypto/openpgp/packet/private_key.go b/vendor/golang.org/x/crypto/openpgp/packet/private_key.go index bd31cceac6..6f8ec09384 100644 --- a/vendor/golang.org/x/crypto/openpgp/packet/private_key.go +++ b/vendor/golang.org/x/crypto/openpgp/packet/private_key.go @@ -36,49 +36,49 @@ type PrivateKey struct { iv []byte } -func NewRSAPrivateKey(currentTime time.Time, priv *rsa.PrivateKey) *PrivateKey { +func NewRSAPrivateKey(creationTime time.Time, priv *rsa.PrivateKey) *PrivateKey { pk := new(PrivateKey) - pk.PublicKey = *NewRSAPublicKey(currentTime, &priv.PublicKey) + pk.PublicKey = *NewRSAPublicKey(creationTime, &priv.PublicKey) pk.PrivateKey = priv return pk } -func NewDSAPrivateKey(currentTime time.Time, priv *dsa.PrivateKey) *PrivateKey { +func NewDSAPrivateKey(creationTime time.Time, priv *dsa.PrivateKey) *PrivateKey { pk := new(PrivateKey) - pk.PublicKey = *NewDSAPublicKey(currentTime, &priv.PublicKey) + pk.PublicKey = *NewDSAPublicKey(creationTime, &priv.PublicKey) pk.PrivateKey = priv return pk } -func NewElGamalPrivateKey(currentTime time.Time, priv *elgamal.PrivateKey) *PrivateKey { +func NewElGamalPrivateKey(creationTime time.Time, priv *elgamal.PrivateKey) *PrivateKey { pk := new(PrivateKey) - pk.PublicKey = *NewElGamalPublicKey(currentTime, &priv.PublicKey) + pk.PublicKey = *NewElGamalPublicKey(creationTime, &priv.PublicKey) pk.PrivateKey = priv return pk } -func NewECDSAPrivateKey(currentTime time.Time, priv *ecdsa.PrivateKey) *PrivateKey { +func NewECDSAPrivateKey(creationTime time.Time, priv *ecdsa.PrivateKey) *PrivateKey { pk := new(PrivateKey) - pk.PublicKey = *NewECDSAPublicKey(currentTime, &priv.PublicKey) + pk.PublicKey = *NewECDSAPublicKey(creationTime, &priv.PublicKey) pk.PrivateKey = priv return pk } // NewSignerPrivateKey creates a PrivateKey from a crypto.Signer that // implements RSA or ECDSA. -func NewSignerPrivateKey(currentTime time.Time, signer crypto.Signer) *PrivateKey { +func NewSignerPrivateKey(creationTime time.Time, signer crypto.Signer) *PrivateKey { pk := new(PrivateKey) // In general, the public Keys should be used as pointers. We still // type-switch on the values, for backwards-compatibility. switch pubkey := signer.Public().(type) { case *rsa.PublicKey: - pk.PublicKey = *NewRSAPublicKey(currentTime, pubkey) + pk.PublicKey = *NewRSAPublicKey(creationTime, pubkey) case rsa.PublicKey: - pk.PublicKey = *NewRSAPublicKey(currentTime, &pubkey) + pk.PublicKey = *NewRSAPublicKey(creationTime, &pubkey) case *ecdsa.PublicKey: - pk.PublicKey = *NewECDSAPublicKey(currentTime, pubkey) + pk.PublicKey = *NewECDSAPublicKey(creationTime, pubkey) case ecdsa.PublicKey: - pk.PublicKey = *NewECDSAPublicKey(currentTime, &pubkey) + pk.PublicKey = *NewECDSAPublicKey(creationTime, &pubkey) default: panic("openpgp: unknown crypto.Signer type in NewSignerPrivateKey") } diff --git a/vendor/golang.org/x/crypto/poly1305/mac_noasm.go b/vendor/golang.org/x/crypto/poly1305/mac_noasm.go index 8387d29998..a8dd589ae3 100644 --- a/vendor/golang.org/x/crypto/poly1305/mac_noasm.go +++ b/vendor/golang.org/x/crypto/poly1305/mac_noasm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !amd64 gccgo appengine +// +build !amd64,!ppc64le gccgo appengine package poly1305 diff --git a/vendor/golang.org/x/crypto/poly1305/sum_noasm.go b/vendor/golang.org/x/crypto/poly1305/sum_noasm.go index fcdef46ab6..8a9c2070b9 100644 --- a/vendor/golang.org/x/crypto/poly1305/sum_noasm.go +++ b/vendor/golang.org/x/crypto/poly1305/sum_noasm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build s390x,!go1.11 !arm,!amd64,!s390x gccgo appengine nacl +// +build s390x,!go1.11 !arm,!amd64,!s390x,!ppc64le gccgo appengine nacl package poly1305 diff --git a/vendor/golang.org/x/crypto/poly1305/sum_ppc64le.go b/vendor/golang.org/x/crypto/poly1305/sum_ppc64le.go new file mode 100644 index 0000000000..2402b6371b --- /dev/null +++ b/vendor/golang.org/x/crypto/poly1305/sum_ppc64le.go @@ -0,0 +1,68 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ppc64le,!gccgo,!appengine + +package poly1305 + +//go:noescape +func initialize(state *[7]uint64, key *[32]byte) + +//go:noescape +func update(state *[7]uint64, msg []byte) + +//go:noescape +func finalize(tag *[TagSize]byte, state *[7]uint64) + +// Sum generates an authenticator for m using a one-time key and puts the +// 16-byte result into out. Authenticating two different messages with the same +// key allows an attacker to forge messages at will. +func Sum(out *[16]byte, m []byte, key *[32]byte) { + h := newMAC(key) + h.Write(m) + h.Sum(out) +} + +func newMAC(key *[32]byte) (h mac) { + initialize(&h.state, key) + return +} + +type mac struct { + state [7]uint64 // := uint64{ h0, h1, h2, r0, r1, pad0, pad1 } + + buffer [TagSize]byte + offset int +} + +func (h *mac) Write(p []byte) (n int, err error) { + n = len(p) + if h.offset > 0 { + remaining := TagSize - h.offset + if n < remaining { + h.offset += copy(h.buffer[h.offset:], p) + return n, nil + } + copy(h.buffer[h.offset:], p[:remaining]) + p = p[remaining:] + h.offset = 0 + update(&h.state, h.buffer[:]) + } + if nn := len(p) - (len(p) % TagSize); nn > 0 { + update(&h.state, p[:nn]) + p = p[nn:] + } + if len(p) > 0 { + h.offset += copy(h.buffer[h.offset:], p) + } + return n, nil +} + +func (h *mac) Sum(out *[16]byte) { + state := h.state + if h.offset > 0 { + update(&state, h.buffer[:h.offset]) + } + finalize(out, &state) +} diff --git a/vendor/golang.org/x/crypto/poly1305/sum_ppc64le.s b/vendor/golang.org/x/crypto/poly1305/sum_ppc64le.s new file mode 100644 index 0000000000..55c7167ec9 --- /dev/null +++ b/vendor/golang.org/x/crypto/poly1305/sum_ppc64le.s @@ -0,0 +1,247 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ppc64le,!gccgo,!appengine + +#include "textflag.h" + +// This was ported from the amd64 implementation. + +#define POLY1305_ADD(msg, h0, h1, h2, t0, t1, t2) \ + MOVD (msg), t0; \ + MOVD 8(msg), t1; \ + MOVD $1, t2; \ + ADDC t0, h0, h0; \ + ADDE t1, h1, h1; \ + ADDE t2, h2; \ + ADD $16, msg + +#define POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3, t4, t5) \ + MULLD r0, h0, t0; \ + MULLD r0, h1, t4; \ + MULHDU r0, h0, t1; \ + MULHDU r0, h1, t5; \ + ADDC t4, t1, t1; \ + MULLD r0, h2, t2; \ + ADDZE t5; \ + MULHDU r1, h0, t4; \ + MULLD r1, h0, h0; \ + ADD t5, t2, t2; \ + ADDC h0, t1, t1; \ + MULLD h2, r1, t3; \ + ADDZE t4, h0; \ + MULHDU r1, h1, t5; \ + MULLD r1, h1, t4; \ + ADDC t4, t2, t2; \ + ADDE t5, t3, t3; \ + ADDC h0, t2, t2; \ + MOVD $-4, t4; \ + MOVD t0, h0; \ + MOVD t1, h1; \ + ADDZE t3; \ + ANDCC $3, t2, h2; \ + AND t2, t4, t0; \ + ADDC t0, h0, h0; \ + ADDE t3, h1, h1; \ + SLD $62, t3, t4; \ + SRD $2, t2; \ + ADDZE h2; \ + OR t4, t2, t2; \ + SRD $2, t3; \ + ADDC t2, h0, h0; \ + ADDE t3, h1, h1; \ + ADDZE h2 + +DATA ·poly1305Mask<>+0x00(SB)/8, $0x0FFFFFFC0FFFFFFF +DATA ·poly1305Mask<>+0x08(SB)/8, $0x0FFFFFFC0FFFFFFC +GLOBL ·poly1305Mask<>(SB), RODATA, $16 + +// func update(state *[7]uint64, msg []byte) + +TEXT ·update(SB), $0-32 + MOVD state+0(FP), R3 + MOVD msg_base+8(FP), R4 + MOVD msg_len+16(FP), R5 + + MOVD 0(R3), R8 // h0 + MOVD 8(R3), R9 // h1 + MOVD 16(R3), R10 // h2 + MOVD 24(R3), R11 // r0 + MOVD 32(R3), R12 // r1 + + CMP R5, $16 + BLT bytes_between_0_and_15 + +loop: + POLY1305_ADD(R4, R8, R9, R10, R20, R21, R22) + +multiply: + POLY1305_MUL(R8, R9, R10, R11, R12, R16, R17, R18, R14, R20, R21) + ADD $-16, R5 + CMP R5, $16 + BGE loop + +bytes_between_0_and_15: + CMP $0, R5 + BEQ done + MOVD $0, R16 // h0 + MOVD $0, R17 // h1 + +flush_buffer: + CMP R5, $8 + BLE just1 + + MOVD $8, R21 + SUB R21, R5, R21 + + // Greater than 8 -- load the rightmost remaining bytes in msg + // and put into R17 (h1) + MOVD (R4)(R21), R17 + MOVD $16, R22 + + // Find the offset to those bytes + SUB R5, R22, R22 + SLD $3, R22 + + // Shift to get only the bytes in msg + SRD R22, R17, R17 + + // Put 1 at high end + MOVD $1, R23 + SLD $3, R21 + SLD R21, R23, R23 + OR R23, R17, R17 + + // Remainder is 8 + MOVD $8, R5 + +just1: + CMP R5, $8 + BLT less8 + + // Exactly 8 + MOVD (R4), R16 + + CMP $0, R17 + + // Check if we've already set R17; if not + // set 1 to indicate end of msg. + BNE carry + MOVD $1, R17 + BR carry + +less8: + MOVD $0, R16 // h0 + MOVD $0, R22 // shift count + CMP R5, $4 + BLT less4 + MOVWZ (R4), R16 + ADD $4, R4 + ADD $-4, R5 + MOVD $32, R22 + +less4: + CMP R5, $2 + BLT less2 + MOVHZ (R4), R21 + SLD R22, R21, R21 + OR R16, R21, R16 + ADD $16, R22 + ADD $-2, R5 + ADD $2, R4 + +less2: + CMP $0, R5 + BEQ insert1 + MOVBZ (R4), R21 + SLD R22, R21, R21 + OR R16, R21, R16 + ADD $8, R22 + +insert1: + // Insert 1 at end of msg + MOVD $1, R21 + SLD R22, R21, R21 + OR R16, R21, R16 + +carry: + // Add new values to h0, h1, h2 + ADDC R16, R8 + ADDE R17, R9 + ADDE $0, R10 + MOVD $16, R5 + ADD R5, R4 + BR multiply + +done: + // Save h0, h1, h2 in state + MOVD R8, 0(R3) + MOVD R9, 8(R3) + MOVD R10, 16(R3) + RET + +// func initialize(state *[7]uint64, key *[32]byte) +TEXT ·initialize(SB), $0-16 + MOVD state+0(FP), R3 + MOVD key+8(FP), R4 + + // state[0...7] is initialized with zero + // Load key + MOVD 0(R4), R5 + MOVD 8(R4), R6 + MOVD 16(R4), R7 + MOVD 24(R4), R8 + + // Address of key mask + MOVD $·poly1305Mask<>(SB), R9 + + // Save original key in state + MOVD R7, 40(R3) + MOVD R8, 48(R3) + + // Get mask + MOVD (R9), R7 + MOVD 8(R9), R8 + + // And with key + AND R5, R7, R5 + AND R6, R8, R6 + + // Save masked key in state + MOVD R5, 24(R3) + MOVD R6, 32(R3) + RET + +// func finalize(tag *[TagSize]byte, state *[7]uint64) +TEXT ·finalize(SB), $0-16 + MOVD tag+0(FP), R3 + MOVD state+8(FP), R4 + + // Get h0, h1, h2 from state + MOVD 0(R4), R5 + MOVD 8(R4), R6 + MOVD 16(R4), R7 + + // Save h0, h1 + MOVD R5, R8 + MOVD R6, R9 + MOVD $3, R20 + MOVD $-1, R21 + SUBC $-5, R5 + SUBE R21, R6 + SUBE R20, R7 + MOVD $0, R21 + SUBZE R21 + + // Check for carry + CMP $0, R21 + ISEL $2, R5, R8, R5 + ISEL $2, R6, R9, R6 + MOVD 40(R4), R8 + MOVD 48(R4), R9 + ADDC R8, R5 + ADDE R9, R6 + MOVD R5, 0(R3) + MOVD R6, 8(R3) + RET diff --git a/vendor/golang.org/x/crypto/ssh/cipher.go b/vendor/golang.org/x/crypto/ssh/cipher.go index 67b0126105..a65a923be3 100644 --- a/vendor/golang.org/x/crypto/ssh/cipher.go +++ b/vendor/golang.org/x/crypto/ssh/cipher.go @@ -149,8 +149,8 @@ type streamPacketCipher struct { macResult []byte } -// readPacket reads and decrypt a single packet from the reader argument. -func (s *streamPacketCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) { +// readCipherPacket reads and decrypt a single packet from the reader argument. +func (s *streamPacketCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { if _, err := io.ReadFull(r, s.prefix[:]); err != nil { return nil, err } @@ -221,8 +221,8 @@ func (s *streamPacketCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, err return s.packetData[:length-paddingLength-1], nil } -// writePacket encrypts and sends a packet of data to the writer argument -func (s *streamPacketCipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { +// writeCipherPacket encrypts and sends a packet of data to the writer argument +func (s *streamPacketCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { if len(packet) > maxPacket { return errors.New("ssh: packet too large") } @@ -327,7 +327,7 @@ func newGCMCipher(key, iv, unusedMacKey []byte, unusedAlgs directionAlgorithms) const gcmTagSize = 16 -func (c *gcmCipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { +func (c *gcmCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { // Pad out to multiple of 16 bytes. This is different from the // stream cipher because that encrypts the length too. padding := byte(packetSizeMultiple - (1+len(packet))%packetSizeMultiple) @@ -370,7 +370,7 @@ func (c *gcmCipher) incIV() { } } -func (c *gcmCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) { +func (c *gcmCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { if _, err := io.ReadFull(r, c.prefix[:]); err != nil { return nil, err } @@ -486,8 +486,8 @@ type cbcError string func (e cbcError) Error() string { return string(e) } -func (c *cbcCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) { - p, err := c.readPacketLeaky(seqNum, r) +func (c *cbcCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { + p, err := c.readCipherPacketLeaky(seqNum, r) if err != nil { if _, ok := err.(cbcError); ok { // Verification error: read a fixed amount of @@ -500,7 +500,7 @@ func (c *cbcCipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) { return p, err } -func (c *cbcCipher) readPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) { +func (c *cbcCipher) readCipherPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) { blockSize := c.decrypter.BlockSize() // Read the header, which will include some of the subsequent data in the @@ -576,7 +576,7 @@ func (c *cbcCipher) readPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) return c.packetData[prefixLen:paddingStart], nil } -func (c *cbcCipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { +func (c *cbcCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error { effectiveBlockSize := maxUInt32(cbcMinPacketSizeMultiple, c.encrypter.BlockSize()) // Length of encrypted portion of the packet (header, payload, padding). @@ -665,7 +665,7 @@ func newChaCha20Cipher(key, unusedIV, unusedMACKey []byte, unusedAlgs directionA return c, nil } -func (c *chacha20Poly1305Cipher) readPacket(seqNum uint32, r io.Reader) ([]byte, error) { +func (c *chacha20Poly1305Cipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) { nonce := [3]uint32{0, 0, bits.ReverseBytes32(seqNum)} s := chacha20.New(c.contentKey, nonce) var polyKey [32]byte @@ -723,7 +723,7 @@ func (c *chacha20Poly1305Cipher) readPacket(seqNum uint32, r io.Reader) ([]byte, return plain, nil } -func (c *chacha20Poly1305Cipher) writePacket(seqNum uint32, w io.Writer, rand io.Reader, payload []byte) error { +func (c *chacha20Poly1305Cipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, payload []byte) error { nonce := [3]uint32{0, 0, bits.ReverseBytes32(seqNum)} s := chacha20.New(c.contentKey, nonce) var polyKey [32]byte diff --git a/vendor/golang.org/x/crypto/ssh/client_auth.go b/vendor/golang.org/x/crypto/ssh/client_auth.go index 5f44b77403..0590070e22 100644 --- a/vendor/golang.org/x/crypto/ssh/client_auth.go +++ b/vendor/golang.org/x/crypto/ssh/client_auth.go @@ -523,3 +523,117 @@ func (r *retryableAuthMethod) method() string { func RetryableAuthMethod(auth AuthMethod, maxTries int) AuthMethod { return &retryableAuthMethod{authMethod: auth, maxTries: maxTries} } + +// GSSAPIWithMICAuthMethod is an AuthMethod with "gssapi-with-mic" authentication. +// See RFC 4462 section 3 +// gssAPIClient is implementation of the GSSAPIClient interface, see the definition of the interface for details. +// target is the server host you want to log in to. +func GSSAPIWithMICAuthMethod(gssAPIClient GSSAPIClient, target string) AuthMethod { + if gssAPIClient == nil { + panic("gss-api client must be not nil with enable gssapi-with-mic") + } + return &gssAPIWithMICCallback{gssAPIClient: gssAPIClient, target: target} +} + +type gssAPIWithMICCallback struct { + gssAPIClient GSSAPIClient + target string +} + +func (g *gssAPIWithMICCallback) auth(session []byte, user string, c packetConn, rand io.Reader) (authResult, []string, error) { + m := &userAuthRequestMsg{ + User: user, + Service: serviceSSH, + Method: g.method(), + } + // The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST. + // See RFC 4462 section 3.2. + m.Payload = appendU32(m.Payload, 1) + m.Payload = appendString(m.Payload, string(krb5OID)) + if err := c.writePacket(Marshal(m)); err != nil { + return authFailure, nil, err + } + // The server responds to the SSH_MSG_USERAUTH_REQUEST with either an + // SSH_MSG_USERAUTH_FAILURE if none of the mechanisms are supported or + // with an SSH_MSG_USERAUTH_GSSAPI_RESPONSE. + // See RFC 4462 section 3.3. + // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication,so I don't want to check + // selected mech if it is valid. + packet, err := c.readPacket() + if err != nil { + return authFailure, nil, err + } + userAuthGSSAPIResp := &userAuthGSSAPIResponse{} + if err := Unmarshal(packet, userAuthGSSAPIResp); err != nil { + return authFailure, nil, err + } + // Start the loop into the exchange token. + // See RFC 4462 section 3.4. + var token []byte + defer g.gssAPIClient.DeleteSecContext() + for { + // Initiates the establishment of a security context between the application and a remote peer. + nextToken, needContinue, err := g.gssAPIClient.InitSecContext("host@"+g.target, token, false) + if err != nil { + return authFailure, nil, err + } + if len(nextToken) > 0 { + if err := c.writePacket(Marshal(&userAuthGSSAPIToken{ + Token: nextToken, + })); err != nil { + return authFailure, nil, err + } + } + if !needContinue { + break + } + packet, err = c.readPacket() + if err != nil { + return authFailure, nil, err + } + switch packet[0] { + case msgUserAuthFailure: + var msg userAuthFailureMsg + if err := Unmarshal(packet, &msg); err != nil { + return authFailure, nil, err + } + if msg.PartialSuccess { + return authPartialSuccess, msg.Methods, nil + } + return authFailure, msg.Methods, nil + case msgUserAuthGSSAPIError: + userAuthGSSAPIErrorResp := &userAuthGSSAPIError{} + if err := Unmarshal(packet, userAuthGSSAPIErrorResp); err != nil { + return authFailure, nil, err + } + return authFailure, nil, fmt.Errorf("GSS-API Error:\n"+ + "Major Status: %d\n"+ + "Minor Status: %d\n"+ + "Error Message: %s\n", userAuthGSSAPIErrorResp.MajorStatus, userAuthGSSAPIErrorResp.MinorStatus, + userAuthGSSAPIErrorResp.Message) + case msgUserAuthGSSAPIToken: + userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} + if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { + return authFailure, nil, err + } + token = userAuthGSSAPITokenReq.Token + } + } + // Binding Encryption Keys. + // See RFC 4462 section 3.5. + micField := buildMIC(string(session), user, "ssh-connection", "gssapi-with-mic") + micToken, err := g.gssAPIClient.GetMIC(micField) + if err != nil { + return authFailure, nil, err + } + if err := c.writePacket(Marshal(&userAuthGSSAPIMIC{ + MIC: micToken, + })); err != nil { + return authFailure, nil, err + } + return handleAuthResponse(c) +} + +func (g *gssAPIWithMICCallback) method() string { + return "gssapi-with-mic" +} diff --git a/vendor/golang.org/x/crypto/ssh/common.go b/vendor/golang.org/x/crypto/ssh/common.go index 04f3620b3d..d97415d2d3 100644 --- a/vendor/golang.org/x/crypto/ssh/common.go +++ b/vendor/golang.org/x/crypto/ssh/common.go @@ -109,6 +109,7 @@ func findCommon(what string, client []string, server []string) (common string, e return "", fmt.Errorf("ssh: no common algorithm for %s; client offered: %v, server offered: %v", what, client, server) } +// directionAlgorithms records algorithm choices in one direction (either read or write) type directionAlgorithms struct { Cipher string MAC string @@ -137,7 +138,7 @@ type algorithms struct { r directionAlgorithms } -func findAgreedAlgorithms(clientKexInit, serverKexInit *kexInitMsg) (algs *algorithms, err error) { +func findAgreedAlgorithms(isClient bool, clientKexInit, serverKexInit *kexInitMsg) (algs *algorithms, err error) { result := &algorithms{} result.kex, err = findCommon("key exchange", clientKexInit.KexAlgos, serverKexInit.KexAlgos) @@ -150,32 +151,37 @@ func findAgreedAlgorithms(clientKexInit, serverKexInit *kexInitMsg) (algs *algor return } - result.w.Cipher, err = findCommon("client to server cipher", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer) + stoc, ctos := &result.w, &result.r + if isClient { + ctos, stoc = stoc, ctos + } + + ctos.Cipher, err = findCommon("client to server cipher", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer) if err != nil { return } - result.r.Cipher, err = findCommon("server to client cipher", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient) + stoc.Cipher, err = findCommon("server to client cipher", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient) if err != nil { return } - result.w.MAC, err = findCommon("client to server MAC", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer) + ctos.MAC, err = findCommon("client to server MAC", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer) if err != nil { return } - result.r.MAC, err = findCommon("server to client MAC", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient) + stoc.MAC, err = findCommon("server to client MAC", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient) if err != nil { return } - result.w.Compression, err = findCommon("client to server compression", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer) + ctos.Compression, err = findCommon("client to server compression", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer) if err != nil { return } - result.r.Compression, err = findCommon("server to client compression", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient) + stoc.Compression, err = findCommon("server to client compression", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient) if err != nil { return } diff --git a/vendor/golang.org/x/crypto/ssh/handshake.go b/vendor/golang.org/x/crypto/ssh/handshake.go index 4f7912ecd6..2b10b05a49 100644 --- a/vendor/golang.org/x/crypto/ssh/handshake.go +++ b/vendor/golang.org/x/crypto/ssh/handshake.go @@ -543,7 +543,8 @@ func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error { clientInit := otherInit serverInit := t.sentInitMsg - if len(t.hostKeys) == 0 { + isClient := len(t.hostKeys) == 0 + if isClient { clientInit, serverInit = serverInit, clientInit magics.clientKexInit = t.sentInitPacket @@ -551,7 +552,7 @@ func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error { } var err error - t.algorithms, err = findAgreedAlgorithms(clientInit, serverInit) + t.algorithms, err = findAgreedAlgorithms(isClient, clientInit, serverInit) if err != nil { return err } diff --git a/vendor/golang.org/x/crypto/ssh/messages.go b/vendor/golang.org/x/crypto/ssh/messages.go index 08d2811730..db914d8039 100644 --- a/vendor/golang.org/x/crypto/ssh/messages.go +++ b/vendor/golang.org/x/crypto/ssh/messages.go @@ -275,6 +275,42 @@ type userAuthPubKeyOkMsg struct { PubKey []byte } +// See RFC 4462, section 3 +const msgUserAuthGSSAPIResponse = 60 + +type userAuthGSSAPIResponse struct { + SupportMech []byte `sshtype:"60"` +} + +const msgUserAuthGSSAPIToken = 61 + +type userAuthGSSAPIToken struct { + Token []byte `sshtype:"61"` +} + +const msgUserAuthGSSAPIMIC = 66 + +type userAuthGSSAPIMIC struct { + MIC []byte `sshtype:"66"` +} + +// See RFC 4462, section 3.9 +const msgUserAuthGSSAPIErrTok = 64 + +type userAuthGSSAPIErrTok struct { + ErrorToken []byte `sshtype:"64"` +} + +// See RFC 4462, section 3.8 +const msgUserAuthGSSAPIError = 65 + +type userAuthGSSAPIError struct { + MajorStatus uint32 `sshtype:"65"` + MinorStatus uint32 + Message string + LanguageTag string +} + // typeTags returns the possible type bytes for the given reflect.Type, which // should be a struct. The possible values are separated by a '|' character. func typeTags(structType reflect.Type) (tags []byte) { @@ -756,6 +792,14 @@ func decode(packet []byte) (interface{}, error) { msg = new(channelRequestSuccessMsg) case msgChannelFailure: msg = new(channelRequestFailureMsg) + case msgUserAuthGSSAPIToken: + msg = new(userAuthGSSAPIToken) + case msgUserAuthGSSAPIMIC: + msg = new(userAuthGSSAPIMIC) + case msgUserAuthGSSAPIErrTok: + msg = new(userAuthGSSAPIErrTok) + case msgUserAuthGSSAPIError: + msg = new(userAuthGSSAPIError) default: return nil, unexpectedMessageError(0, packet[0]) } @@ -764,3 +808,29 @@ func decode(packet []byte) (interface{}, error) { } return msg, nil } + +var packetTypeNames = map[byte]string{ + msgDisconnect: "disconnectMsg", + msgServiceRequest: "serviceRequestMsg", + msgServiceAccept: "serviceAcceptMsg", + msgKexInit: "kexInitMsg", + msgKexDHInit: "kexDHInitMsg", + msgKexDHReply: "kexDHReplyMsg", + msgUserAuthRequest: "userAuthRequestMsg", + msgUserAuthSuccess: "userAuthSuccessMsg", + msgUserAuthFailure: "userAuthFailureMsg", + msgUserAuthPubKeyOk: "userAuthPubKeyOkMsg", + msgGlobalRequest: "globalRequestMsg", + msgRequestSuccess: "globalRequestSuccessMsg", + msgRequestFailure: "globalRequestFailureMsg", + msgChannelOpen: "channelOpenMsg", + msgChannelData: "channelDataMsg", + msgChannelOpenConfirm: "channelOpenConfirmMsg", + msgChannelOpenFailure: "channelOpenFailureMsg", + msgChannelWindowAdjust: "windowAdjustMsg", + msgChannelEOF: "channelEOFMsg", + msgChannelClose: "channelCloseMsg", + msgChannelRequest: "channelRequestMsg", + msgChannelSuccess: "channelRequestSuccessMsg", + msgChannelFailure: "channelRequestFailureMsg", +} diff --git a/vendor/golang.org/x/crypto/ssh/server.go b/vendor/golang.org/x/crypto/ssh/server.go index e86e89661a..ac7f8073ca 100644 --- a/vendor/golang.org/x/crypto/ssh/server.go +++ b/vendor/golang.org/x/crypto/ssh/server.go @@ -45,6 +45,20 @@ type Permissions struct { Extensions map[string]string } +type GSSAPIWithMICConfig struct { + // AllowLogin, must be set, is called when gssapi-with-mic + // authentication is selected (RFC 4462 section 3). The srcName is from the + // results of the GSS-API authentication. The format is username@DOMAIN. + // GSSAPI just guarantees to the server who the user is, but not if they can log in, and with what permissions. + // This callback is called after the user identity is established with GSSAPI to decide if the user can login with + // which permissions. If the user is allowed to login, it should return a nil error. + AllowLogin func(conn ConnMetadata, srcName string) (*Permissions, error) + + // Server must be set. It's the implementation + // of the GSSAPIServer interface. See GSSAPIServer interface for details. + Server GSSAPIServer +} + // ServerConfig holds server specific configuration data. type ServerConfig struct { // Config contains configuration shared between client and server. @@ -99,6 +113,10 @@ type ServerConfig struct { // BannerCallback, if present, is called and the return string is sent to // the client after key exchange completed but before authentication. BannerCallback func(conn ConnMetadata) string + + // GSSAPIWithMICConfig includes gssapi server and callback, which if both non-nil, is used + // when gssapi-with-mic authentication is selected (RFC 4462 section 3). + GSSAPIWithMICConfig *GSSAPIWithMICConfig } // AddHostKey adds a private key as a host key. If an existing host @@ -204,7 +222,9 @@ func (s *connection) serverHandshake(config *ServerConfig) (*Permissions, error) return nil, errors.New("ssh: server has no host keys") } - if !config.NoClientAuth && config.PasswordCallback == nil && config.PublicKeyCallback == nil && config.KeyboardInteractiveCallback == nil { + if !config.NoClientAuth && config.PasswordCallback == nil && config.PublicKeyCallback == nil && + config.KeyboardInteractiveCallback == nil && (config.GSSAPIWithMICConfig == nil || + config.GSSAPIWithMICConfig.AllowLogin == nil || config.GSSAPIWithMICConfig.Server == nil) { return nil, errors.New("ssh: no authentication methods configured but NoClientAuth is also false") } @@ -295,6 +315,55 @@ func checkSourceAddress(addr net.Addr, sourceAddrs string) error { return fmt.Errorf("ssh: remote address %v is not allowed because of source-address restriction", addr) } +func gssExchangeToken(gssapiConfig *GSSAPIWithMICConfig, firstToken []byte, s *connection, + sessionID []byte, userAuthReq userAuthRequestMsg) (authErr error, perms *Permissions, err error) { + gssAPIServer := gssapiConfig.Server + defer gssAPIServer.DeleteSecContext() + var srcName string + for { + var ( + outToken []byte + needContinue bool + ) + outToken, srcName, needContinue, err = gssAPIServer.AcceptSecContext(firstToken) + if err != nil { + return err, nil, nil + } + if len(outToken) != 0 { + if err := s.transport.writePacket(Marshal(&userAuthGSSAPIToken{ + Token: outToken, + })); err != nil { + return nil, nil, err + } + } + if !needContinue { + break + } + packet, err := s.transport.readPacket() + if err != nil { + return nil, nil, err + } + userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} + if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { + return nil, nil, err + } + } + packet, err := s.transport.readPacket() + if err != nil { + return nil, nil, err + } + userAuthGSSAPIMICReq := &userAuthGSSAPIMIC{} + if err := Unmarshal(packet, userAuthGSSAPIMICReq); err != nil { + return nil, nil, err + } + mic := buildMIC(string(sessionID), userAuthReq.User, userAuthReq.Service, userAuthReq.Method) + if err := gssAPIServer.VerifyMIC(mic, userAuthGSSAPIMICReq.MIC); err != nil { + return err, nil, nil + } + perms, authErr = gssapiConfig.AllowLogin(s, srcName) + return authErr, perms, nil +} + // ServerAuthError represents server authentication errors and is // sometimes returned by NewServerConn. It appends any authentication // errors that may occur, and is returned if all of the authentication @@ -496,6 +565,49 @@ userAuthLoop: authErr = candidate.result perms = candidate.perms } + case "gssapi-with-mic": + gssapiConfig := config.GSSAPIWithMICConfig + userAuthRequestGSSAPI, err := parseGSSAPIPayload(userAuthReq.Payload) + if err != nil { + return nil, parseError(msgUserAuthRequest) + } + // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication. + if userAuthRequestGSSAPI.N == 0 { + authErr = fmt.Errorf("ssh: Mechanism negotiation is not supported") + break + } + var i uint32 + present := false + for i = 0; i < userAuthRequestGSSAPI.N; i++ { + if userAuthRequestGSSAPI.OIDS[i].Equal(krb5Mesh) { + present = true + break + } + } + if !present { + authErr = fmt.Errorf("ssh: GSSAPI authentication must use the Kerberos V5 mechanism") + break + } + // Initial server response, see RFC 4462 section 3.3. + if err := s.transport.writePacket(Marshal(&userAuthGSSAPIResponse{ + SupportMech: krb5OID, + })); err != nil { + return nil, err + } + // Exchange token, see RFC 4462 section 3.4. + packet, err := s.transport.readPacket() + if err != nil { + return nil, err + } + userAuthGSSAPITokenReq := &userAuthGSSAPIToken{} + if err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil { + return nil, err + } + authErr, perms, err = gssExchangeToken(gssapiConfig, userAuthGSSAPITokenReq.Token, s, sessionID, + userAuthReq) + if err != nil { + return nil, err + } default: authErr = fmt.Errorf("ssh: unknown method %q", userAuthReq.Method) } @@ -522,6 +634,10 @@ userAuthLoop: if config.KeyboardInteractiveCallback != nil { failureMsg.Methods = append(failureMsg.Methods, "keyboard-interactive") } + if config.GSSAPIWithMICConfig != nil && config.GSSAPIWithMICConfig.Server != nil && + config.GSSAPIWithMICConfig.AllowLogin != nil { + failureMsg.Methods = append(failureMsg.Methods, "gssapi-with-mic") + } if len(failureMsg.Methods) == 0 { return nil, errors.New("ssh: no authentication methods configured but NoClientAuth is also false") diff --git a/vendor/golang.org/x/crypto/ssh/ssh_gss.go b/vendor/golang.org/x/crypto/ssh/ssh_gss.go new file mode 100644 index 0000000000..24bd7c8e83 --- /dev/null +++ b/vendor/golang.org/x/crypto/ssh/ssh_gss.go @@ -0,0 +1,139 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ssh + +import ( + "encoding/asn1" + "errors" +) + +var krb5OID []byte + +func init() { + krb5OID, _ = asn1.Marshal(krb5Mesh) +} + +// GSSAPIClient provides the API to plug-in GSSAPI authentication for client logins. +type GSSAPIClient interface { + // InitSecContext initiates the establishment of a security context for GSS-API between the + // ssh client and ssh server. Initially the token parameter should be specified as nil. + // The routine may return a outputToken which should be transferred to + // the ssh server, where the ssh server will present it to + // AcceptSecContext. If no token need be sent, InitSecContext will indicate this by setting + // needContinue to false. To complete the context + // establishment, one or more reply tokens may be required from the ssh + // server;if so, InitSecContext will return a needContinue which is true. + // In this case, InitSecContext should be called again when the + // reply token is received from the ssh server, passing the reply + // token to InitSecContext via the token parameters. + // See RFC 2743 section 2.2.1 and RFC 4462 section 3.4. + InitSecContext(target string, token []byte, isGSSDelegCreds bool) (outputToken []byte, needContinue bool, err error) + // GetMIC generates a cryptographic MIC for the SSH2 message, and places + // the MIC in a token for transfer to the ssh server. + // The contents of the MIC field are obtained by calling GSS_GetMIC() + // over the following, using the GSS-API context that was just + // established: + // string session identifier + // byte SSH_MSG_USERAUTH_REQUEST + // string user name + // string service + // string "gssapi-with-mic" + // See RFC 2743 section 2.3.1 and RFC 4462 3.5. + GetMIC(micFiled []byte) ([]byte, error) + // Whenever possible, it should be possible for + // DeleteSecContext() calls to be successfully processed even + // if other calls cannot succeed, thereby enabling context-related + // resources to be released. + // In addition to deleting established security contexts, + // gss_delete_sec_context must also be able to delete "half-built" + // security contexts resulting from an incomplete sequence of + // InitSecContext()/AcceptSecContext() calls. + // See RFC 2743 section 2.2.3. + DeleteSecContext() error +} + +// GSSAPIServer provides the API to plug in GSSAPI authentication for server logins. +type GSSAPIServer interface { + // AcceptSecContext allows a remotely initiated security context between the application + // and a remote peer to be established by the ssh client. The routine may return a + // outputToken which should be transferred to the ssh client, + // where the ssh client will present it to InitSecContext. + // If no token need be sent, AcceptSecContext will indicate this + // by setting the needContinue to false. To + // complete the context establishment, one or more reply tokens may be + // required from the ssh client. if so, AcceptSecContext + // will return a needContinue which is true, in which case it + // should be called again when the reply token is received from the ssh + // client, passing the token to AcceptSecContext via the + // token parameters. + // The srcName return value is the authenticated username. + // See RFC 2743 section 2.2.2 and RFC 4462 section 3.4. + AcceptSecContext(token []byte) (outputToken []byte, srcName string, needContinue bool, err error) + // VerifyMIC verifies that a cryptographic MIC, contained in the token parameter, + // fits the supplied message is received from the ssh client. + // See RFC 2743 section 2.3.2. + VerifyMIC(micField []byte, micToken []byte) error + // Whenever possible, it should be possible for + // DeleteSecContext() calls to be successfully processed even + // if other calls cannot succeed, thereby enabling context-related + // resources to be released. + // In addition to deleting established security contexts, + // gss_delete_sec_context must also be able to delete "half-built" + // security contexts resulting from an incomplete sequence of + // InitSecContext()/AcceptSecContext() calls. + // See RFC 2743 section 2.2.3. + DeleteSecContext() error +} + +var ( + // OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication, + // so we also support the krb5 mechanism only. + // See RFC 1964 section 1. + krb5Mesh = asn1.ObjectIdentifier{1, 2, 840, 113554, 1, 2, 2} +) + +// The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST +// See RFC 4462 section 3.2. +type userAuthRequestGSSAPI struct { + N uint32 + OIDS []asn1.ObjectIdentifier +} + +func parseGSSAPIPayload(payload []byte) (*userAuthRequestGSSAPI, error) { + n, rest, ok := parseUint32(payload) + if !ok { + return nil, errors.New("parse uint32 failed") + } + s := &userAuthRequestGSSAPI{ + N: n, + OIDS: make([]asn1.ObjectIdentifier, n), + } + for i := 0; i < int(n); i++ { + var ( + desiredMech []byte + err error + ) + desiredMech, rest, ok = parseString(rest) + if !ok { + return nil, errors.New("parse string failed") + } + if rest, err = asn1.Unmarshal(desiredMech, &s.OIDS[i]); err != nil { + return nil, err + } + + } + return s, nil +} + +// See RFC 4462 section 3.6. +func buildMIC(sessionID string, username string, service string, authMethod string) []byte { + out := make([]byte, 0, 0) + out = appendString(out, sessionID) + out = append(out, msgUserAuthRequest) + out = appendString(out, username) + out = appendString(out, service) + out = appendString(out, authMethod) + return out +} diff --git a/vendor/golang.org/x/crypto/ssh/terminal/terminal.go b/vendor/golang.org/x/crypto/ssh/terminal/terminal.go index 9d666ffcf0..2f04ee5b5c 100644 --- a/vendor/golang.org/x/crypto/ssh/terminal/terminal.go +++ b/vendor/golang.org/x/crypto/ssh/terminal/terminal.go @@ -7,6 +7,7 @@ package terminal import ( "bytes" "io" + "strconv" "sync" "unicode/utf8" ) @@ -271,34 +272,44 @@ func (t *Terminal) moveCursorToPos(pos int) { } func (t *Terminal) move(up, down, left, right int) { - movement := make([]rune, 3*(up+down+left+right)) - m := movement - for i := 0; i < up; i++ { - m[0] = keyEscape - m[1] = '[' - m[2] = 'A' - m = m[3:] - } - for i := 0; i < down; i++ { - m[0] = keyEscape - m[1] = '[' - m[2] = 'B' - m = m[3:] - } - for i := 0; i < left; i++ { - m[0] = keyEscape - m[1] = '[' - m[2] = 'D' - m = m[3:] - } - for i := 0; i < right; i++ { - m[0] = keyEscape - m[1] = '[' - m[2] = 'C' - m = m[3:] - } - - t.queue(movement) + m := []rune{} + + // 1 unit up can be expressed as ^[[A or ^[A + // 5 units up can be expressed as ^[[5A + + if up == 1 { + m = append(m, keyEscape, '[', 'A') + } else if up > 1 { + m = append(m, keyEscape, '[') + m = append(m, []rune(strconv.Itoa(up))...) + m = append(m, 'A') + } + + if down == 1 { + m = append(m, keyEscape, '[', 'B') + } else if down > 1 { + m = append(m, keyEscape, '[') + m = append(m, []rune(strconv.Itoa(down))...) + m = append(m, 'B') + } + + if right == 1 { + m = append(m, keyEscape, '[', 'C') + } else if right > 1 { + m = append(m, keyEscape, '[') + m = append(m, []rune(strconv.Itoa(right))...) + m = append(m, 'C') + } + + if left == 1 { + m = append(m, keyEscape, '[', 'D') + } else if left > 1 { + m = append(m, keyEscape, '[') + m = append(m, []rune(strconv.Itoa(left))...) + m = append(m, 'D') + } + + t.queue(m) } func (t *Terminal) clearLineToRight() { diff --git a/vendor/golang.org/x/crypto/ssh/transport.go b/vendor/golang.org/x/crypto/ssh/transport.go index f6fae1db46..49ddc2e7de 100644 --- a/vendor/golang.org/x/crypto/ssh/transport.go +++ b/vendor/golang.org/x/crypto/ssh/transport.go @@ -53,14 +53,14 @@ type transport struct { // packetCipher represents a combination of SSH encryption/MAC // protocol. A single instance should be used for one direction only. type packetCipher interface { - // writePacket encrypts the packet and writes it to w. The + // writeCipherPacket encrypts the packet and writes it to w. The // contents of the packet are generally scrambled. - writePacket(seqnum uint32, w io.Writer, rand io.Reader, packet []byte) error + writeCipherPacket(seqnum uint32, w io.Writer, rand io.Reader, packet []byte) error - // readPacket reads and decrypts a packet of data. The + // readCipherPacket reads and decrypts a packet of data. The // returned packet may be overwritten by future calls of // readPacket. - readPacket(seqnum uint32, r io.Reader) ([]byte, error) + readCipherPacket(seqnum uint32, r io.Reader) ([]byte, error) } // connectionState represents one side (read or write) of the @@ -127,7 +127,7 @@ func (t *transport) readPacket() (p []byte, err error) { } func (s *connectionState) readPacket(r *bufio.Reader) ([]byte, error) { - packet, err := s.packetCipher.readPacket(s.seqNum, r) + packet, err := s.packetCipher.readCipherPacket(s.seqNum, r) s.seqNum++ if err == nil && len(packet) == 0 { err = errors.New("ssh: zero length packet") @@ -175,7 +175,7 @@ func (t *transport) writePacket(packet []byte) error { func (s *connectionState) writePacket(w *bufio.Writer, rand io.Reader, packet []byte) error { changeKeys := len(packet) > 0 && packet[0] == msgNewKeys - err := s.packetCipher.writePacket(s.seqNum, w, rand, packet) + err := s.packetCipher.writeCipherPacket(s.seqNum, w, rand, packet) if err != nil { return err } diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index 8f1701914c..5e01ce9ab0 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -52,10 +52,11 @@ import ( ) const ( - prefaceTimeout = 10 * time.Second - firstSettingsTimeout = 2 * time.Second // should be in-flight with preface anyway - handlerChunkWriteSize = 4 << 10 - defaultMaxStreams = 250 // TODO: make this 100 as the GFE seems to? + prefaceTimeout = 10 * time.Second + firstSettingsTimeout = 2 * time.Second // should be in-flight with preface anyway + handlerChunkWriteSize = 4 << 10 + defaultMaxStreams = 250 // TODO: make this 100 as the GFE seems to? + maxQueuedControlFrames = 10000 ) var ( @@ -163,6 +164,15 @@ func (s *Server) maxConcurrentStreams() uint32 { return defaultMaxStreams } +// maxQueuedControlFrames is the maximum number of control frames like +// SETTINGS, PING and RST_STREAM that will be queued for writing before +// the connection is closed to prevent memory exhaustion attacks. +func (s *Server) maxQueuedControlFrames() int { + // TODO: if anybody asks, add a Server field, and remember to define the + // behavior of negative values. + return maxQueuedControlFrames +} + type serverInternalState struct { mu sync.Mutex activeConns map[*serverConn]struct{} @@ -273,7 +283,20 @@ func ConfigureServer(s *http.Server, conf *Server) error { if testHookOnConn != nil { testHookOnConn() } + // The TLSNextProto interface predates contexts, so + // the net/http package passes down its per-connection + // base context via an exported but unadvertised + // method on the Handler. This is for internal + // net/http<=>http2 use only. + var ctx context.Context + type baseContexter interface { + BaseContext() context.Context + } + if bc, ok := h.(baseContexter); ok { + ctx = bc.BaseContext() + } conf.ServeConn(c, &ServeConnOpts{ + Context: ctx, Handler: h, BaseConfig: hs, }) @@ -284,6 +307,10 @@ func ConfigureServer(s *http.Server, conf *Server) error { // ServeConnOpts are options for the Server.ServeConn method. type ServeConnOpts struct { + // Context is the base context to use. + // If nil, context.Background is used. + Context context.Context + // BaseConfig optionally sets the base configuration // for values. If nil, defaults are used. BaseConfig *http.Server @@ -294,6 +321,13 @@ type ServeConnOpts struct { Handler http.Handler } +func (o *ServeConnOpts) context() context.Context { + if o.Context != nil { + return o.Context + } + return context.Background() +} + func (o *ServeConnOpts) baseConfig() *http.Server { if o != nil && o.BaseConfig != nil { return o.BaseConfig @@ -439,7 +473,7 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { } func serverConnBaseContext(c net.Conn, opts *ServeConnOpts) (ctx context.Context, cancel func()) { - ctx, cancel = context.WithCancel(context.Background()) + ctx, cancel = context.WithCancel(opts.context()) ctx = context.WithValue(ctx, http.LocalAddrContextKey, c.LocalAddr()) if hs := opts.baseConfig(); hs != nil { ctx = context.WithValue(ctx, http.ServerContextKey, hs) @@ -482,6 +516,7 @@ type serverConn struct { sawFirstSettings bool // got the initial SETTINGS frame after the preface needToSendSettingsAck bool unackedSettings int // how many SETTINGS have we sent without ACKs? + queuedControlFrames int // control frames in the writeSched queue clientMaxStreams uint32 // SETTINGS_MAX_CONCURRENT_STREAMS from client (our PUSH_PROMISE limit) advMaxStreams uint32 // our SETTINGS_MAX_CONCURRENT_STREAMS advertised the client curClientStreams uint32 // number of open streams initiated by the client @@ -870,6 +905,14 @@ func (sc *serverConn) serve() { } } + // If the peer is causing us to generate a lot of control frames, + // but not reading them from us, assume they are trying to make us + // run out of memory. + if sc.queuedControlFrames > sc.srv.maxQueuedControlFrames() { + sc.vlogf("http2: too many control frames in send queue, closing connection") + return + } + // Start the shutdown timer after sending a GOAWAY. When sending GOAWAY // with no error code (graceful shutdown), don't start the timer until // all open streams have been completed. @@ -1069,6 +1112,14 @@ func (sc *serverConn) writeFrame(wr FrameWriteRequest) { } if !ignoreWrite { + if wr.isControl() { + sc.queuedControlFrames++ + // For extra safety, detect wraparounds, which should not happen, + // and pull the plug. + if sc.queuedControlFrames < 0 { + sc.conn.Close() + } + } sc.writeSched.Push(wr) } sc.scheduleFrameWrite() @@ -1186,10 +1237,8 @@ func (sc *serverConn) wroteFrame(res frameWriteResult) { // If a frame is already being written, nothing happens. This will be called again // when the frame is done being written. // -// If a frame isn't being written we need to send one, the best frame -// to send is selected, preferring first things that aren't -// stream-specific (e.g. ACKing settings), and then finding the -// highest priority stream. +// If a frame isn't being written and we need to send one, the best frame +// to send is selected by writeSched. // // If a frame isn't being written and there's nothing else to send, we // flush the write buffer. @@ -1217,6 +1266,9 @@ func (sc *serverConn) scheduleFrameWrite() { } if !sc.inGoAway || sc.goAwayCode == ErrCodeNo { if wr, ok := sc.writeSched.Pop(); ok { + if wr.isControl() { + sc.queuedControlFrames-- + } sc.startFrameWrite(wr) continue } @@ -1509,6 +1561,8 @@ func (sc *serverConn) processSettings(f *SettingsFrame) error { if err := f.ForeachSetting(sc.processSetting); err != nil { return err } + // TODO: judging by RFC 7540, Section 6.5.3 each SETTINGS frame should be + // acknowledged individually, even if multiple are received before the ACK. sc.needToSendSettingsAck = true sc.scheduleFrameWrite() return nil @@ -2307,7 +2361,16 @@ type chunkWriter struct{ rws *responseWriterState } func (cw chunkWriter) Write(p []byte) (n int, err error) { return cw.rws.writeChunk(p) } -func (rws *responseWriterState) hasTrailers() bool { return len(rws.trailers) != 0 } +func (rws *responseWriterState) hasTrailers() bool { return len(rws.trailers) > 0 } + +func (rws *responseWriterState) hasNonemptyTrailers() bool { + for _, trailer := range rws.trailers { + if _, ok := rws.handlerHeader[trailer]; ok { + return true + } + } + return false +} // declareTrailer is called for each Trailer header when the // response header is written. It notes that a header will need to be @@ -2407,7 +2470,10 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { rws.promoteUndeclaredTrailers() } - endStream := rws.handlerDone && !rws.hasTrailers() + // only send trailers if they have actually been defined by the + // server handler. + hasNonemptyTrailers := rws.hasNonemptyTrailers() + endStream := rws.handlerDone && !hasNonemptyTrailers if len(p) > 0 || endStream { // only send a 0 byte DATA frame if we're ending the stream. if err := rws.conn.writeDataFromHandler(rws.stream, p, endStream); err != nil { @@ -2416,7 +2482,7 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { } } - if rws.handlerDone && rws.hasTrailers() { + if rws.handlerDone && hasNonemptyTrailers { err = rws.conn.writeHeaders(rws.stream, &writeResHeaders{ streamID: rws.stream.id, h: rws.handlerHeader, diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index f272e8f9fa..aeac7d8a51 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -28,6 +28,7 @@ import ( "strconv" "strings" "sync" + "sync/atomic" "time" "golang.org/x/net/http/httpguts" @@ -199,6 +200,7 @@ type ClientConn struct { t *Transport tconn net.Conn // usually *tls.Conn, except specialized impls tlsState *tls.ConnectionState // nil only for specialized impls + reused uint32 // whether conn is being reused; atomic singleUse bool // whether being used for a single http.Request // readLoop goroutine fields: @@ -440,7 +442,8 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res t.vlogf("http2: Transport failed to get client conn for %s: %v", addr, err) return nil, err } - traceGotConn(req, cc) + reused := !atomic.CompareAndSwapUint32(&cc.reused, 0, 1) + traceGotConn(req, cc, reused) res, gotErrAfterReqBodyWrite, err := cc.roundTrip(req) if err != nil && retry <= 6 { if req, err = shouldRetryRequest(req, err, gotErrAfterReqBodyWrite); err == nil { @@ -989,7 +992,7 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf req.Method != "HEAD" { // Request gzip only, not deflate. Deflate is ambiguous and // not as universally supported anyway. - // See: http://www.gzip.org/zlib/zlib_faq.html#faq38 + // See: https://zlib.net/zlib_faq.html#faq39 // // Note that we don't request this for HEAD requests, // due to a bug in nginx: @@ -1411,7 +1414,11 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail // followed by the query production (see Sections 3.3 and 3.4 of // [RFC3986]). f(":authority", host) - f(":method", req.Method) + m := req.Method + if m == "" { + m = http.MethodGet + } + f(":method", m) if req.Method != "CONNECT" { f(":path", path) f(":scheme", req.URL.Scheme) @@ -2555,15 +2562,15 @@ func traceGetConn(req *http.Request, hostPort string) { trace.GetConn(hostPort) } -func traceGotConn(req *http.Request, cc *ClientConn) { +func traceGotConn(req *http.Request, cc *ClientConn, reused bool) { trace := httptrace.ContextClientTrace(req.Context()) if trace == nil || trace.GotConn == nil { return } ci := httptrace.GotConnInfo{Conn: cc.tconn} + ci.Reused = reused cc.mu.Lock() - ci.Reused = cc.nextStreamID > 1 - ci.WasIdle = len(cc.streams) == 0 && ci.Reused + ci.WasIdle = len(cc.streams) == 0 && reused if ci.WasIdle && !cc.lastActive.IsZero() { ci.IdleTime = time.Now().Sub(cc.lastActive) } diff --git a/vendor/golang.org/x/net/http2/writesched.go b/vendor/golang.org/x/net/http2/writesched.go index 4fe3073073..f24d2b1e7d 100644 --- a/vendor/golang.org/x/net/http2/writesched.go +++ b/vendor/golang.org/x/net/http2/writesched.go @@ -32,7 +32,7 @@ type WriteScheduler interface { // Pop dequeues the next frame to write. Returns false if no frames can // be written. Frames with a given wr.StreamID() are Pop'd in the same - // order they are Push'd. + // order they are Push'd. No frames should be discarded except by CloseStream. Pop() (wr FrameWriteRequest, ok bool) } @@ -76,6 +76,12 @@ func (wr FrameWriteRequest) StreamID() uint32 { return wr.stream.id } +// isControl reports whether wr is a control frame for MaxQueuedControlFrames +// purposes. That includes non-stream frames and RST_STREAM frames. +func (wr FrameWriteRequest) isControl() bool { + return wr.stream == nil +} + // DataSize returns the number of flow control bytes that must be consumed // to write this entire frame. This is 0 for non-DATA frames. func (wr FrameWriteRequest) DataSize() int { diff --git a/vendor/golang.org/x/net/http2/writesched_random.go b/vendor/golang.org/x/net/http2/writesched_random.go index 36d7919f16..9a7b9e581c 100644 --- a/vendor/golang.org/x/net/http2/writesched_random.go +++ b/vendor/golang.org/x/net/http2/writesched_random.go @@ -19,7 +19,8 @@ type randomWriteScheduler struct { zero writeQueue // sq contains the stream-specific queues, keyed by stream ID. - // When a stream is idle or closed, it's deleted from the map. + // When a stream is idle, closed, or emptied, it's deleted + // from the map. sq map[uint32]*writeQueue // pool of empty queues for reuse. @@ -63,8 +64,12 @@ func (ws *randomWriteScheduler) Pop() (FrameWriteRequest, bool) { return ws.zero.shift(), true } // Iterate over all non-idle streams until finding one that can be consumed. - for _, q := range ws.sq { + for streamID, q := range ws.sq { if wr, ok := q.consume(math.MaxInt32); ok { + if q.empty() { + delete(ws.sq, streamID) + ws.queuePool.put(q) + } return wr, true } } diff --git a/vendor/golang.org/x/net/idna/idna.go b/vendor/golang.org/x/net/idna/idna10.0.0.go similarity index 99% rename from vendor/golang.org/x/net/idna/idna.go rename to vendor/golang.org/x/net/idna/idna10.0.0.go index 346fe4423e..a98a31f403 100644 --- a/vendor/golang.org/x/net/idna/idna.go +++ b/vendor/golang.org/x/net/idna/idna10.0.0.go @@ -4,14 +4,16 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build go1.10 + // Package idna implements IDNA2008 using the compatibility processing // defined by UTS (Unicode Technical Standard) #46, which defines a standard to // deal with the transition from IDNA2003. // // IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC // 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894. -// UTS #46 is defined in http://www.unicode.org/reports/tr46. -// See http://unicode.org/cldr/utility/idna.jsp for a visualization of the +// UTS #46 is defined in https://www.unicode.org/reports/tr46. +// See https://unicode.org/cldr/utility/idna.jsp for a visualization of the // differences between these two standards. package idna // import "golang.org/x/net/idna" @@ -297,7 +299,7 @@ func (e runeError) Error() string { } // process implements the algorithm described in section 4 of UTS #46, -// see http://www.unicode.org/reports/tr46. +// see https://www.unicode.org/reports/tr46. func (p *Profile) process(s string, toASCII bool) (string, error) { var err error var isBidi bool diff --git a/vendor/golang.org/x/net/idna/idna9.0.0.go b/vendor/golang.org/x/net/idna/idna9.0.0.go new file mode 100644 index 0000000000..8842146b5d --- /dev/null +++ b/vendor/golang.org/x/net/idna/idna9.0.0.go @@ -0,0 +1,682 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.10 + +// Package idna implements IDNA2008 using the compatibility processing +// defined by UTS (Unicode Technical Standard) #46, which defines a standard to +// deal with the transition from IDNA2003. +// +// IDNA2008 (Internationalized Domain Names for Applications), is defined in RFC +// 5890, RFC 5891, RFC 5892, RFC 5893 and RFC 5894. +// UTS #46 is defined in https://www.unicode.org/reports/tr46. +// See https://unicode.org/cldr/utility/idna.jsp for a visualization of the +// differences between these two standards. +package idna // import "golang.org/x/net/idna" + +import ( + "fmt" + "strings" + "unicode/utf8" + + "golang.org/x/text/secure/bidirule" + "golang.org/x/text/unicode/norm" +) + +// NOTE: Unlike common practice in Go APIs, the functions will return a +// sanitized domain name in case of errors. Browsers sometimes use a partially +// evaluated string as lookup. +// TODO: the current error handling is, in my opinion, the least opinionated. +// Other strategies are also viable, though: +// Option 1) Return an empty string in case of error, but allow the user to +// specify explicitly which errors to ignore. +// Option 2) Return the partially evaluated string if it is itself a valid +// string, otherwise return the empty string in case of error. +// Option 3) Option 1 and 2. +// Option 4) Always return an empty string for now and implement Option 1 as +// needed, and document that the return string may not be empty in case of +// error in the future. +// I think Option 1 is best, but it is quite opinionated. + +// ToASCII is a wrapper for Punycode.ToASCII. +func ToASCII(s string) (string, error) { + return Punycode.process(s, true) +} + +// ToUnicode is a wrapper for Punycode.ToUnicode. +func ToUnicode(s string) (string, error) { + return Punycode.process(s, false) +} + +// An Option configures a Profile at creation time. +type Option func(*options) + +// Transitional sets a Profile to use the Transitional mapping as defined in UTS +// #46. This will cause, for example, "ß" to be mapped to "ss". Using the +// transitional mapping provides a compromise between IDNA2003 and IDNA2008 +// compatibility. It is used by most browsers when resolving domain names. This +// option is only meaningful if combined with MapForLookup. +func Transitional(transitional bool) Option { + return func(o *options) { o.transitional = true } +} + +// VerifyDNSLength sets whether a Profile should fail if any of the IDN parts +// are longer than allowed by the RFC. +func VerifyDNSLength(verify bool) Option { + return func(o *options) { o.verifyDNSLength = verify } +} + +// RemoveLeadingDots removes leading label separators. Leading runes that map to +// dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well. +// +// This is the behavior suggested by the UTS #46 and is adopted by some +// browsers. +func RemoveLeadingDots(remove bool) Option { + return func(o *options) { o.removeLeadingDots = remove } +} + +// ValidateLabels sets whether to check the mandatory label validation criteria +// as defined in Section 5.4 of RFC 5891. This includes testing for correct use +// of hyphens ('-'), normalization, validity of runes, and the context rules. +func ValidateLabels(enable bool) Option { + return func(o *options) { + // Don't override existing mappings, but set one that at least checks + // normalization if it is not set. + if o.mapping == nil && enable { + o.mapping = normalize + } + o.trie = trie + o.validateLabels = enable + o.fromPuny = validateFromPunycode + } +} + +// StrictDomainName limits the set of permissable ASCII characters to those +// allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the +// hyphen). This is set by default for MapForLookup and ValidateForRegistration. +// +// This option is useful, for instance, for browsers that allow characters +// outside this range, for example a '_' (U+005F LOW LINE). See +// http://www.rfc-editor.org/std/std3.txt for more details This option +// corresponds to the UseSTD3ASCIIRules option in UTS #46. +func StrictDomainName(use bool) Option { + return func(o *options) { + o.trie = trie + o.useSTD3Rules = use + o.fromPuny = validateFromPunycode + } +} + +// NOTE: the following options pull in tables. The tables should not be linked +// in as long as the options are not used. + +// BidiRule enables the Bidi rule as defined in RFC 5893. Any application +// that relies on proper validation of labels should include this rule. +func BidiRule() Option { + return func(o *options) { o.bidirule = bidirule.ValidString } +} + +// ValidateForRegistration sets validation options to verify that a given IDN is +// properly formatted for registration as defined by Section 4 of RFC 5891. +func ValidateForRegistration() Option { + return func(o *options) { + o.mapping = validateRegistration + StrictDomainName(true)(o) + ValidateLabels(true)(o) + VerifyDNSLength(true)(o) + BidiRule()(o) + } +} + +// MapForLookup sets validation and mapping options such that a given IDN is +// transformed for domain name lookup according to the requirements set out in +// Section 5 of RFC 5891. The mappings follow the recommendations of RFC 5894, +// RFC 5895 and UTS 46. It does not add the Bidi Rule. Use the BidiRule option +// to add this check. +// +// The mappings include normalization and mapping case, width and other +// compatibility mappings. +func MapForLookup() Option { + return func(o *options) { + o.mapping = validateAndMap + StrictDomainName(true)(o) + ValidateLabels(true)(o) + RemoveLeadingDots(true)(o) + } +} + +type options struct { + transitional bool + useSTD3Rules bool + validateLabels bool + verifyDNSLength bool + removeLeadingDots bool + + trie *idnaTrie + + // fromPuny calls validation rules when converting A-labels to U-labels. + fromPuny func(p *Profile, s string) error + + // mapping implements a validation and mapping step as defined in RFC 5895 + // or UTS 46, tailored to, for example, domain registration or lookup. + mapping func(p *Profile, s string) (string, error) + + // bidirule, if specified, checks whether s conforms to the Bidi Rule + // defined in RFC 5893. + bidirule func(s string) bool +} + +// A Profile defines the configuration of a IDNA mapper. +type Profile struct { + options +} + +func apply(o *options, opts []Option) { + for _, f := range opts { + f(o) + } +} + +// New creates a new Profile. +// +// With no options, the returned Profile is the most permissive and equals the +// Punycode Profile. Options can be passed to further restrict the Profile. The +// MapForLookup and ValidateForRegistration options set a collection of options, +// for lookup and registration purposes respectively, which can be tailored by +// adding more fine-grained options, where later options override earlier +// options. +func New(o ...Option) *Profile { + p := &Profile{} + apply(&p.options, o) + return p +} + +// ToASCII converts a domain or domain label to its ASCII form. For example, +// ToASCII("bücher.example.com") is "xn--bcher-kva.example.com", and +// ToASCII("golang") is "golang". If an error is encountered it will return +// an error and a (partially) processed result. +func (p *Profile) ToASCII(s string) (string, error) { + return p.process(s, true) +} + +// ToUnicode converts a domain or domain label to its Unicode form. For example, +// ToUnicode("xn--bcher-kva.example.com") is "bücher.example.com", and +// ToUnicode("golang") is "golang". If an error is encountered it will return +// an error and a (partially) processed result. +func (p *Profile) ToUnicode(s string) (string, error) { + pp := *p + pp.transitional = false + return pp.process(s, false) +} + +// String reports a string with a description of the profile for debugging +// purposes. The string format may change with different versions. +func (p *Profile) String() string { + s := "" + if p.transitional { + s = "Transitional" + } else { + s = "NonTransitional" + } + if p.useSTD3Rules { + s += ":UseSTD3Rules" + } + if p.validateLabels { + s += ":ValidateLabels" + } + if p.verifyDNSLength { + s += ":VerifyDNSLength" + } + return s +} + +var ( + // Punycode is a Profile that does raw punycode processing with a minimum + // of validation. + Punycode *Profile = punycode + + // Lookup is the recommended profile for looking up domain names, according + // to Section 5 of RFC 5891. The exact configuration of this profile may + // change over time. + Lookup *Profile = lookup + + // Display is the recommended profile for displaying domain names. + // The configuration of this profile may change over time. + Display *Profile = display + + // Registration is the recommended profile for checking whether a given + // IDN is valid for registration, according to Section 4 of RFC 5891. + Registration *Profile = registration + + punycode = &Profile{} + lookup = &Profile{options{ + transitional: true, + useSTD3Rules: true, + validateLabels: true, + removeLeadingDots: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, + }} + display = &Profile{options{ + useSTD3Rules: true, + validateLabels: true, + removeLeadingDots: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, + }} + registration = &Profile{options{ + useSTD3Rules: true, + validateLabels: true, + verifyDNSLength: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateRegistration, + bidirule: bidirule.ValidString, + }} + + // TODO: profiles + // Register: recommended for approving domain names: don't do any mappings + // but rather reject on invalid input. Bundle or block deviation characters. +) + +type labelError struct{ label, code_ string } + +func (e labelError) code() string { return e.code_ } +func (e labelError) Error() string { + return fmt.Sprintf("idna: invalid label %q", e.label) +} + +type runeError rune + +func (e runeError) code() string { return "P1" } +func (e runeError) Error() string { + return fmt.Sprintf("idna: disallowed rune %U", e) +} + +// process implements the algorithm described in section 4 of UTS #46, +// see https://www.unicode.org/reports/tr46. +func (p *Profile) process(s string, toASCII bool) (string, error) { + var err error + if p.mapping != nil { + s, err = p.mapping(p, s) + } + // Remove leading empty labels. + if p.removeLeadingDots { + for ; len(s) > 0 && s[0] == '.'; s = s[1:] { + } + } + // It seems like we should only create this error on ToASCII, but the + // UTS 46 conformance tests suggests we should always check this. + if err == nil && p.verifyDNSLength && s == "" { + err = &labelError{s, "A4"} + } + labels := labelIter{orig: s} + for ; !labels.done(); labels.next() { + label := labels.label() + if label == "" { + // Empty labels are not okay. The label iterator skips the last + // label if it is empty. + if err == nil && p.verifyDNSLength { + err = &labelError{s, "A4"} + } + continue + } + if strings.HasPrefix(label, acePrefix) { + u, err2 := decode(label[len(acePrefix):]) + if err2 != nil { + if err == nil { + err = err2 + } + // Spec says keep the old label. + continue + } + labels.set(u) + if err == nil && p.validateLabels { + err = p.fromPuny(p, u) + } + if err == nil { + // This should be called on NonTransitional, according to the + // spec, but that currently does not have any effect. Use the + // original profile to preserve options. + err = p.validateLabel(u) + } + } else if err == nil { + err = p.validateLabel(label) + } + } + if toASCII { + for labels.reset(); !labels.done(); labels.next() { + label := labels.label() + if !ascii(label) { + a, err2 := encode(acePrefix, label) + if err == nil { + err = err2 + } + label = a + labels.set(a) + } + n := len(label) + if p.verifyDNSLength && err == nil && (n == 0 || n > 63) { + err = &labelError{label, "A4"} + } + } + } + s = labels.result() + if toASCII && p.verifyDNSLength && err == nil { + // Compute the length of the domain name minus the root label and its dot. + n := len(s) + if n > 0 && s[n-1] == '.' { + n-- + } + if len(s) < 1 || n > 253 { + err = &labelError{s, "A4"} + } + } + return s, err +} + +func normalize(p *Profile, s string) (string, error) { + return norm.NFC.String(s), nil +} + +func validateRegistration(p *Profile, s string) (string, error) { + if !norm.NFC.IsNormalString(s) { + return s, &labelError{s, "V1"} + } + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + // Copy bytes not copied so far. + switch p.simplify(info(v).category()) { + // TODO: handle the NV8 defined in the Unicode idna data set to allow + // for strict conformance to IDNA2008. + case valid, deviation: + case disallowed, mapped, unknown, ignored: + r, _ := utf8.DecodeRuneInString(s[i:]) + return s, runeError(r) + } + i += sz + } + return s, nil +} + +func validateAndMap(p *Profile, s string) (string, error) { + var ( + err error + b []byte + k int + ) + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + start := i + i += sz + // Copy bytes not copied so far. + switch p.simplify(info(v).category()) { + case valid: + continue + case disallowed: + if err == nil { + r, _ := utf8.DecodeRuneInString(s[start:]) + err = runeError(r) + } + continue + case mapped, deviation: + b = append(b, s[k:start]...) + b = info(v).appendMapping(b, s[start:i]) + case ignored: + b = append(b, s[k:start]...) + // drop the rune + case unknown: + b = append(b, s[k:start]...) + b = append(b, "\ufffd"...) + } + k = i + } + if k == 0 { + // No changes so far. + s = norm.NFC.String(s) + } else { + b = append(b, s[k:]...) + if norm.NFC.QuickSpan(b) != len(b) { + b = norm.NFC.Bytes(b) + } + // TODO: the punycode converters require strings as input. + s = string(b) + } + return s, err +} + +// A labelIter allows iterating over domain name labels. +type labelIter struct { + orig string + slice []string + curStart int + curEnd int + i int +} + +func (l *labelIter) reset() { + l.curStart = 0 + l.curEnd = 0 + l.i = 0 +} + +func (l *labelIter) done() bool { + return l.curStart >= len(l.orig) +} + +func (l *labelIter) result() string { + if l.slice != nil { + return strings.Join(l.slice, ".") + } + return l.orig +} + +func (l *labelIter) label() string { + if l.slice != nil { + return l.slice[l.i] + } + p := strings.IndexByte(l.orig[l.curStart:], '.') + l.curEnd = l.curStart + p + if p == -1 { + l.curEnd = len(l.orig) + } + return l.orig[l.curStart:l.curEnd] +} + +// next sets the value to the next label. It skips the last label if it is empty. +func (l *labelIter) next() { + l.i++ + if l.slice != nil { + if l.i >= len(l.slice) || l.i == len(l.slice)-1 && l.slice[l.i] == "" { + l.curStart = len(l.orig) + } + } else { + l.curStart = l.curEnd + 1 + if l.curStart == len(l.orig)-1 && l.orig[l.curStart] == '.' { + l.curStart = len(l.orig) + } + } +} + +func (l *labelIter) set(s string) { + if l.slice == nil { + l.slice = strings.Split(l.orig, ".") + } + l.slice[l.i] = s +} + +// acePrefix is the ASCII Compatible Encoding prefix. +const acePrefix = "xn--" + +func (p *Profile) simplify(cat category) category { + switch cat { + case disallowedSTD3Mapped: + if p.useSTD3Rules { + cat = disallowed + } else { + cat = mapped + } + case disallowedSTD3Valid: + if p.useSTD3Rules { + cat = disallowed + } else { + cat = valid + } + case deviation: + if !p.transitional { + cat = valid + } + case validNV8, validXV8: + // TODO: handle V2008 + cat = valid + } + return cat +} + +func validateFromPunycode(p *Profile, s string) error { + if !norm.NFC.IsNormalString(s) { + return &labelError{s, "V1"} + } + for i := 0; i < len(s); { + v, sz := trie.lookupString(s[i:]) + if c := p.simplify(info(v).category()); c != valid && c != deviation { + return &labelError{s, "V6"} + } + i += sz + } + return nil +} + +const ( + zwnj = "\u200c" + zwj = "\u200d" +) + +type joinState int8 + +const ( + stateStart joinState = iota + stateVirama + stateBefore + stateBeforeVirama + stateAfter + stateFAIL +) + +var joinStates = [][numJoinTypes]joinState{ + stateStart: { + joiningL: stateBefore, + joiningD: stateBefore, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateVirama, + }, + stateVirama: { + joiningL: stateBefore, + joiningD: stateBefore, + }, + stateBefore: { + joiningL: stateBefore, + joiningD: stateBefore, + joiningT: stateBefore, + joinZWNJ: stateAfter, + joinZWJ: stateFAIL, + joinVirama: stateBeforeVirama, + }, + stateBeforeVirama: { + joiningL: stateBefore, + joiningD: stateBefore, + joiningT: stateBefore, + }, + stateAfter: { + joiningL: stateFAIL, + joiningD: stateBefore, + joiningT: stateAfter, + joiningR: stateStart, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateAfter, // no-op as we can't accept joiners here + }, + stateFAIL: { + 0: stateFAIL, + joiningL: stateFAIL, + joiningD: stateFAIL, + joiningT: stateFAIL, + joiningR: stateFAIL, + joinZWNJ: stateFAIL, + joinZWJ: stateFAIL, + joinVirama: stateFAIL, + }, +} + +// validateLabel validates the criteria from Section 4.1. Item 1, 4, and 6 are +// already implicitly satisfied by the overall implementation. +func (p *Profile) validateLabel(s string) error { + if s == "" { + if p.verifyDNSLength { + return &labelError{s, "A4"} + } + return nil + } + if p.bidirule != nil && !p.bidirule(s) { + return &labelError{s, "B"} + } + if !p.validateLabels { + return nil + } + trie := p.trie // p.validateLabels is only set if trie is set. + if len(s) > 4 && s[2] == '-' && s[3] == '-' { + return &labelError{s, "V2"} + } + if s[0] == '-' || s[len(s)-1] == '-' { + return &labelError{s, "V3"} + } + // TODO: merge the use of this in the trie. + v, sz := trie.lookupString(s) + x := info(v) + if x.isModifier() { + return &labelError{s, "V5"} + } + // Quickly return in the absence of zero-width (non) joiners. + if strings.Index(s, zwj) == -1 && strings.Index(s, zwnj) == -1 { + return nil + } + st := stateStart + for i := 0; ; { + jt := x.joinType() + if s[i:i+sz] == zwj { + jt = joinZWJ + } else if s[i:i+sz] == zwnj { + jt = joinZWNJ + } + st = joinStates[st][jt] + if x.isViramaModifier() { + st = joinStates[st][joinVirama] + } + if i += sz; i == len(s) { + break + } + v, sz = trie.lookupString(s[i:]) + x = info(v) + } + if st == stateFAIL || st == stateAfter { + return &labelError{s, "C"} + } + return nil +} + +func ascii(s string) bool { + for i := 0; i < len(s); i++ { + if s[i] >= utf8.RuneSelf { + return false + } + } + return true +} diff --git a/vendor/golang.org/x/net/idna/tables.go b/vendor/golang.org/x/net/idna/tables10.0.0.go similarity index 99% rename from vendor/golang.org/x/net/idna/tables.go rename to vendor/golang.org/x/net/idna/tables10.0.0.go index f910b26914..54fddb4b16 100644 --- a/vendor/golang.org/x/net/idna/tables.go +++ b/vendor/golang.org/x/net/idna/tables10.0.0.go @@ -1,11 +1,13 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +// +build go1.10,!go1.13 + package idna // UnicodeVersion is the Unicode version from which the tables in this package are derived. const UnicodeVersion = "10.0.0" -var mappings string = "" + // Size: 8176 bytes +var mappings string = "" + // Size: 8175 bytes "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + "\x053⁄4\x03i̇\x03l·\x03ʼn\x01s\x03dž\x03ⱥ\x03ⱦ\x01h\x01j\x01r\x01w\x01y" + "\x03 ̆\x03 ̇\x03 ̊\x03 ̨\x03 ̃\x03 ̋\x01l\x01x\x04̈́\x03 ι\x01;\x05 ̈́" + @@ -4554,4 +4556,4 @@ var idnaSparseValues = [1915]valueRange{ {value: 0x0040, lo: 0xb0, hi: 0xbf}, } -// Total table size 42115 bytes (41KiB); checksum: F4A1FA4E +// Total table size 42114 bytes (41KiB); checksum: 355A58A4 diff --git a/vendor/golang.org/x/net/idna/tables11.0.0.go b/vendor/golang.org/x/net/idna/tables11.0.0.go new file mode 100644 index 0000000000..c515d7ad2a --- /dev/null +++ b/vendor/golang.org/x/net/idna/tables11.0.0.go @@ -0,0 +1,4653 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// +build go1.13 + +package idna + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "11.0.0" + +var mappings string = "" + // Size: 8175 bytes + "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + + "\x053⁄4\x03i̇\x03l·\x03ʼn\x01s\x03dž\x03ⱥ\x03ⱦ\x01h\x01j\x01r\x01w\x01y" + + "\x03 ̆\x03 ̇\x03 ̊\x03 ̨\x03 ̃\x03 ̋\x01l\x01x\x04̈́\x03 ι\x01;\x05 ̈́" + + "\x04եւ\x04اٴ\x04وٴ\x04ۇٴ\x04يٴ\x06क़\x06ख़\x06ग़\x06ज़\x06ड़\x06ढ़\x06फ़" + + "\x06य़\x06ড়\x06ঢ়\x06য়\x06ਲ਼\x06ਸ਼\x06ਖ਼\x06ਗ਼\x06ਜ਼\x06ਫ਼\x06ଡ଼\x06ଢ଼" + + "\x06ํา\x06ໍາ\x06ຫນ\x06ຫມ\x06གྷ\x06ཌྷ\x06དྷ\x06བྷ\x06ཛྷ\x06ཀྵ\x06ཱི\x06ཱུ" + + "\x06ྲྀ\x09ྲཱྀ\x06ླྀ\x09ླཱྀ\x06ཱྀ\x06ྒྷ\x06ྜྷ\x06ྡྷ\x06ྦྷ\x06ྫྷ\x06ྐྵ\x02" + + "в\x02д\x02о\x02с\x02т\x02ъ\x02ѣ\x02æ\x01b\x01d\x01e\x02ǝ\x01g\x01i\x01k" + + "\x01m\x01n\x02ȣ\x01p\x01t\x01u\x02ɐ\x02ɑ\x02ə\x02ɛ\x02ɜ\x02ŋ\x02ɔ\x02ɯ" + + "\x01v\x02β\x02γ\x02δ\x02φ\x02χ\x02ρ\x02н\x02ɒ\x01c\x02ɕ\x02ð\x01f\x02ɟ" + + "\x02ɡ\x02ɥ\x02ɨ\x02ɩ\x02ɪ\x02ʝ\x02ɭ\x02ʟ\x02ɱ\x02ɰ\x02ɲ\x02ɳ\x02ɴ\x02ɵ" + + "\x02ɸ\x02ʂ\x02ʃ\x02ƫ\x02ʉ\x02ʊ\x02ʋ\x02ʌ\x01z\x02ʐ\x02ʑ\x02ʒ\x02θ\x02ss" + + "\x02ά\x02έ\x02ή\x02ί\x02ό\x02ύ\x02ώ\x05ἀι\x05ἁι\x05ἂι\x05ἃι\x05ἄι\x05ἅι" + + "\x05ἆι\x05ἇι\x05ἠι\x05ἡι\x05ἢι\x05ἣι\x05ἤι\x05ἥι\x05ἦι\x05ἧι\x05ὠι\x05ὡι" + + "\x05ὢι\x05ὣι\x05ὤι\x05ὥι\x05ὦι\x05ὧι\x05ὰι\x04αι\x04άι\x05ᾶι\x02ι\x05 ̈͂" + + "\x05ὴι\x04ηι\x04ήι\x05ῆι\x05 ̓̀\x05 ̓́\x05 ̓͂\x02ΐ\x05 ̔̀\x05 ̔́\x05 ̔͂" + + "\x02ΰ\x05 ̈̀\x01`\x05ὼι\x04ωι\x04ώι\x05ῶι\x06′′\x09′′′\x06‵‵\x09‵‵‵\x02!" + + "!\x02??\x02?!\x02!?\x0c′′′′\x010\x014\x015\x016\x017\x018\x019\x01+\x01=" + + "\x01(\x01)\x02rs\x02ħ\x02no\x01q\x02sm\x02tm\x02ω\x02å\x02א\x02ב\x02ג" + + "\x02ד\x02π\x051⁄7\x051⁄9\x061⁄10\x051⁄3\x052⁄3\x051⁄5\x052⁄5\x053⁄5\x054" + + "⁄5\x051⁄6\x055⁄6\x051⁄8\x053⁄8\x055⁄8\x057⁄8\x041⁄\x02ii\x02iv\x02vi" + + "\x04viii\x02ix\x02xi\x050⁄3\x06∫∫\x09∫∫∫\x06∮∮\x09∮∮∮\x0210\x0211\x0212" + + "\x0213\x0214\x0215\x0216\x0217\x0218\x0219\x0220\x04(10)\x04(11)\x04(12)" + + "\x04(13)\x04(14)\x04(15)\x04(16)\x04(17)\x04(18)\x04(19)\x04(20)\x0c∫∫∫∫" + + "\x02==\x05⫝̸\x02ɫ\x02ɽ\x02ȿ\x02ɀ\x01.\x04 ゙\x04 ゚\x06より\x06コト\x05(ᄀ)\x05" + + "(ᄂ)\x05(ᄃ)\x05(ᄅ)\x05(ᄆ)\x05(ᄇ)\x05(ᄉ)\x05(ᄋ)\x05(ᄌ)\x05(ᄎ)\x05(ᄏ)\x05(ᄐ" + + ")\x05(ᄑ)\x05(ᄒ)\x05(가)\x05(나)\x05(다)\x05(라)\x05(마)\x05(바)\x05(사)\x05(아)" + + "\x05(자)\x05(차)\x05(카)\x05(타)\x05(파)\x05(하)\x05(주)\x08(오전)\x08(오후)\x05(一)" + + "\x05(二)\x05(三)\x05(四)\x05(五)\x05(六)\x05(七)\x05(八)\x05(九)\x05(十)\x05(月)" + + "\x05(火)\x05(水)\x05(木)\x05(金)\x05(土)\x05(日)\x05(株)\x05(有)\x05(社)\x05(名)" + + "\x05(特)\x05(財)\x05(祝)\x05(労)\x05(代)\x05(呼)\x05(学)\x05(監)\x05(企)\x05(資)" + + "\x05(協)\x05(祭)\x05(休)\x05(自)\x05(至)\x0221\x0222\x0223\x0224\x0225\x0226" + + "\x0227\x0228\x0229\x0230\x0231\x0232\x0233\x0234\x0235\x06참고\x06주의\x0236" + + "\x0237\x0238\x0239\x0240\x0241\x0242\x0243\x0244\x0245\x0246\x0247\x0248" + + "\x0249\x0250\x041月\x042月\x043月\x044月\x045月\x046月\x047月\x048月\x049月\x0510" + + "月\x0511月\x0512月\x02hg\x02ev\x0cアパート\x0cアルファ\x0cアンペア\x09アール\x0cイニング\x09" + + "インチ\x09ウォン\x0fエスクード\x0cエーカー\x09オンス\x09オーム\x09カイリ\x0cカラット\x0cカロリー\x09ガロ" + + "ン\x09ガンマ\x06ギガ\x09ギニー\x0cキュリー\x0cギルダー\x06キロ\x0fキログラム\x12キロメートル\x0fキロワッ" + + "ト\x09グラム\x0fグラムトン\x0fクルゼイロ\x0cクローネ\x09ケース\x09コルナ\x09コーポ\x0cサイクル\x0fサンチ" + + "ーム\x0cシリング\x09センチ\x09セント\x09ダース\x06デシ\x06ドル\x06トン\x06ナノ\x09ノット\x09ハイツ" + + "\x0fパーセント\x09パーツ\x0cバーレル\x0fピアストル\x09ピクル\x06ピコ\x06ビル\x0fファラッド\x0cフィート" + + "\x0fブッシェル\x09フラン\x0fヘクタール\x06ペソ\x09ペニヒ\x09ヘルツ\x09ペンス\x09ページ\x09ベータ\x0cポイ" + + "ント\x09ボルト\x06ホン\x09ポンド\x09ホール\x09ホーン\x0cマイクロ\x09マイル\x09マッハ\x09マルク\x0fマ" + + "ンション\x0cミクロン\x06ミリ\x0fミリバール\x06メガ\x0cメガトン\x0cメートル\x09ヤード\x09ヤール\x09ユアン" + + "\x0cリットル\x06リラ\x09ルピー\x0cルーブル\x06レム\x0fレントゲン\x09ワット\x040点\x041点\x042点" + + "\x043点\x044点\x045点\x046点\x047点\x048点\x049点\x0510点\x0511点\x0512点\x0513点" + + "\x0514点\x0515点\x0516点\x0517点\x0518点\x0519点\x0520点\x0521点\x0522点\x0523点" + + "\x0524点\x02da\x02au\x02ov\x02pc\x02dm\x02iu\x06平成\x06昭和\x06大正\x06明治\x0c株" + + "式会社\x02pa\x02na\x02ma\x02ka\x02kb\x02mb\x02gb\x04kcal\x02pf\x02nf\x02m" + + "g\x02kg\x02hz\x02ml\x02dl\x02kl\x02fm\x02nm\x02mm\x02cm\x02km\x02m2\x02m" + + "3\x05m∕s\x06m∕s2\x07rad∕s\x08rad∕s2\x02ps\x02ns\x02ms\x02pv\x02nv\x02mv" + + "\x02kv\x02pw\x02nw\x02mw\x02kw\x02bq\x02cc\x02cd\x06c∕kg\x02db\x02gy\x02" + + "ha\x02hp\x02in\x02kk\x02kt\x02lm\x02ln\x02lx\x02ph\x02pr\x02sr\x02sv\x02" + + "wb\x05v∕m\x05a∕m\x041日\x042日\x043日\x044日\x045日\x046日\x047日\x048日\x049日" + + "\x0510日\x0511日\x0512日\x0513日\x0514日\x0515日\x0516日\x0517日\x0518日\x0519日" + + "\x0520日\x0521日\x0522日\x0523日\x0524日\x0525日\x0526日\x0527日\x0528日\x0529日" + + "\x0530日\x0531日\x02ь\x02ɦ\x02ɬ\x02ʞ\x02ʇ\x02œ\x04𤋮\x04𢡊\x04𢡄\x04𣏕\x04𥉉" + + "\x04𥳐\x04𧻓\x02ff\x02fi\x02fl\x02st\x04մն\x04մե\x04մի\x04վն\x04մխ\x04יִ" + + "\x04ײַ\x02ע\x02ה\x02כ\x02ל\x02ם\x02ר\x02ת\x04שׁ\x04שׂ\x06שּׁ\x06שּׂ\x04א" + + "ַ\x04אָ\x04אּ\x04בּ\x04גּ\x04דּ\x04הּ\x04וּ\x04זּ\x04טּ\x04יּ\x04ךּ\x04" + + "כּ\x04לּ\x04מּ\x04נּ\x04סּ\x04ףּ\x04פּ\x04צּ\x04קּ\x04רּ\x04שּ\x04תּ" + + "\x04וֹ\x04בֿ\x04כֿ\x04פֿ\x04אל\x02ٱ\x02ٻ\x02پ\x02ڀ\x02ٺ\x02ٿ\x02ٹ\x02ڤ" + + "\x02ڦ\x02ڄ\x02ڃ\x02چ\x02ڇ\x02ڍ\x02ڌ\x02ڎ\x02ڈ\x02ژ\x02ڑ\x02ک\x02گ\x02ڳ" + + "\x02ڱ\x02ں\x02ڻ\x02ۀ\x02ہ\x02ھ\x02ے\x02ۓ\x02ڭ\x02ۇ\x02ۆ\x02ۈ\x02ۋ\x02ۅ" + + "\x02ۉ\x02ې\x02ى\x04ئا\x04ئە\x04ئو\x04ئۇ\x04ئۆ\x04ئۈ\x04ئې\x04ئى\x02ی\x04" + + "ئج\x04ئح\x04ئم\x04ئي\x04بج\x04بح\x04بخ\x04بم\x04بى\x04بي\x04تج\x04تح" + + "\x04تخ\x04تم\x04تى\x04تي\x04ثج\x04ثم\x04ثى\x04ثي\x04جح\x04جم\x04حج\x04حم" + + "\x04خج\x04خح\x04خم\x04سج\x04سح\x04سخ\x04سم\x04صح\x04صم\x04ضج\x04ضح\x04ضخ" + + "\x04ضم\x04طح\x04طم\x04ظم\x04عج\x04عم\x04غج\x04غم\x04فج\x04فح\x04فخ\x04فم" + + "\x04فى\x04في\x04قح\x04قم\x04قى\x04قي\x04كا\x04كج\x04كح\x04كخ\x04كل\x04كم" + + "\x04كى\x04كي\x04لج\x04لح\x04لخ\x04لم\x04لى\x04لي\x04مج\x04مح\x04مخ\x04مم" + + "\x04مى\x04مي\x04نج\x04نح\x04نخ\x04نم\x04نى\x04ني\x04هج\x04هم\x04هى\x04هي" + + "\x04يج\x04يح\x04يخ\x04يم\x04يى\x04يي\x04ذٰ\x04رٰ\x04ىٰ\x05 ٌّ\x05 ٍّ\x05" + + " َّ\x05 ُّ\x05 ِّ\x05 ّٰ\x04ئر\x04ئز\x04ئن\x04بر\x04بز\x04بن\x04تر\x04تز" + + "\x04تن\x04ثر\x04ثز\x04ثن\x04ما\x04نر\x04نز\x04نن\x04ير\x04يز\x04ين\x04ئخ" + + "\x04ئه\x04به\x04ته\x04صخ\x04له\x04نه\x04هٰ\x04يه\x04ثه\x04سه\x04شم\x04شه" + + "\x06ـَّ\x06ـُّ\x06ـِّ\x04طى\x04طي\x04عى\x04عي\x04غى\x04غي\x04سى\x04سي" + + "\x04شى\x04شي\x04حى\x04حي\x04جى\x04جي\x04خى\x04خي\x04صى\x04صي\x04ضى\x04ضي" + + "\x04شج\x04شح\x04شخ\x04شر\x04سر\x04صر\x04ضر\x04اً\x06تجم\x06تحج\x06تحم" + + "\x06تخم\x06تمج\x06تمح\x06تمخ\x06جمح\x06حمي\x06حمى\x06سحج\x06سجح\x06سجى" + + "\x06سمح\x06سمج\x06سمم\x06صحح\x06صمم\x06شحم\x06شجي\x06شمخ\x06شمم\x06ضحى" + + "\x06ضخم\x06طمح\x06طمم\x06طمي\x06عجم\x06عمم\x06عمى\x06غمم\x06غمي\x06غمى" + + "\x06فخم\x06قمح\x06قمم\x06لحم\x06لحي\x06لحى\x06لجج\x06لخم\x06لمح\x06محج" + + "\x06محم\x06محي\x06مجح\x06مجم\x06مخج\x06مخم\x06مجخ\x06همج\x06همم\x06نحم" + + "\x06نحى\x06نجم\x06نجى\x06نمي\x06نمى\x06يمم\x06بخي\x06تجي\x06تجى\x06تخي" + + "\x06تخى\x06تمي\x06تمى\x06جمي\x06جحى\x06جمى\x06سخى\x06صحي\x06شحي\x06ضحي" + + "\x06لجي\x06لمي\x06يحي\x06يجي\x06يمي\x06ممي\x06قمي\x06نحي\x06عمي\x06كمي" + + "\x06نجح\x06مخي\x06لجم\x06كمم\x06جحي\x06حجي\x06مجي\x06فمي\x06بحي\x06سخي" + + "\x06نجي\x06صلے\x06قلے\x08الله\x08اكبر\x08محمد\x08صلعم\x08رسول\x08عليه" + + "\x08وسلم\x06صلى!صلى الله عليه وسلم\x0fجل جلاله\x08ریال\x01,\x01:\x01!" + + "\x01?\x01_\x01{\x01}\x01[\x01]\x01#\x01&\x01*\x01-\x01<\x01>\x01\\\x01$" + + "\x01%\x01@\x04ـً\x04ـَ\x04ـُ\x04ـِ\x04ـّ\x04ـْ\x02ء\x02آ\x02أ\x02ؤ\x02إ" + + "\x02ئ\x02ا\x02ب\x02ة\x02ت\x02ث\x02ج\x02ح\x02خ\x02د\x02ذ\x02ر\x02ز\x02س" + + "\x02ش\x02ص\x02ض\x02ط\x02ظ\x02ع\x02غ\x02ف\x02ق\x02ك\x02ل\x02م\x02ن\x02ه" + + "\x02و\x02ي\x04لآ\x04لأ\x04لإ\x04لا\x01\x22\x01'\x01/\x01^\x01|\x01~\x02¢" + + "\x02£\x02¬\x02¦\x02¥\x08𝅗𝅥\x08𝅘𝅥\x0c𝅘𝅥𝅮\x0c𝅘𝅥𝅯\x0c𝅘𝅥𝅰\x0c𝅘𝅥𝅱\x0c𝅘𝅥𝅲\x08𝆹" + + "𝅥\x08𝆺𝅥\x0c𝆹𝅥𝅮\x0c𝆺𝅥𝅮\x0c𝆹𝅥𝅯\x0c𝆺𝅥𝅯\x02ı\x02ȷ\x02α\x02ε\x02ζ\x02η\x02" + + "κ\x02λ\x02μ\x02ν\x02ξ\x02ο\x02σ\x02τ\x02υ\x02ψ\x03∇\x03∂\x02ϝ\x02ٮ\x02ڡ" + + "\x02ٯ\x020,\x021,\x022,\x023,\x024,\x025,\x026,\x027,\x028,\x029,\x03(a)" + + "\x03(b)\x03(c)\x03(d)\x03(e)\x03(f)\x03(g)\x03(h)\x03(i)\x03(j)\x03(k)" + + "\x03(l)\x03(m)\x03(n)\x03(o)\x03(p)\x03(q)\x03(r)\x03(s)\x03(t)\x03(u)" + + "\x03(v)\x03(w)\x03(x)\x03(y)\x03(z)\x07〔s〕\x02wz\x02hv\x02sd\x03ppv\x02w" + + "c\x02mc\x02md\x02dj\x06ほか\x06ココ\x03サ\x03手\x03字\x03双\x03デ\x03二\x03多\x03解" + + "\x03天\x03交\x03映\x03無\x03料\x03前\x03後\x03再\x03新\x03初\x03終\x03生\x03販\x03声" + + "\x03吹\x03演\x03投\x03捕\x03一\x03三\x03遊\x03左\x03中\x03右\x03指\x03走\x03打\x03禁" + + "\x03空\x03合\x03満\x03有\x03月\x03申\x03割\x03営\x03配\x09〔本〕\x09〔三〕\x09〔二〕\x09〔安" + + "〕\x09〔点〕\x09〔打〕\x09〔盗〕\x09〔勝〕\x09〔敗〕\x03得\x03可\x03丽\x03丸\x03乁\x03你\x03" + + "侮\x03侻\x03倂\x03偺\x03備\x03僧\x03像\x03㒞\x03免\x03兔\x03兤\x03具\x03㒹\x03內\x03" + + "冗\x03冤\x03仌\x03冬\x03况\x03凵\x03刃\x03㓟\x03刻\x03剆\x03剷\x03㔕\x03勇\x03勉\x03" + + "勤\x03勺\x03包\x03匆\x03北\x03卉\x03卑\x03博\x03即\x03卽\x03卿\x03灰\x03及\x03叟\x03" + + "叫\x03叱\x03吆\x03咞\x03吸\x03呈\x03周\x03咢\x03哶\x03唐\x03啓\x03啣\x03善\x03喙\x03" + + "喫\x03喳\x03嗂\x03圖\x03嘆\x03圗\x03噑\x03噴\x03切\x03壮\x03城\x03埴\x03堍\x03型\x03" + + "堲\x03報\x03墬\x03売\x03壷\x03夆\x03夢\x03奢\x03姬\x03娛\x03娧\x03姘\x03婦\x03㛮\x03" + + "嬈\x03嬾\x03寃\x03寘\x03寧\x03寳\x03寿\x03将\x03尢\x03㞁\x03屠\x03屮\x03峀\x03岍\x03" + + "嵃\x03嵮\x03嵫\x03嵼\x03巡\x03巢\x03㠯\x03巽\x03帨\x03帽\x03幩\x03㡢\x03㡼\x03庰\x03" + + "庳\x03庶\x03廊\x03廾\x03舁\x03弢\x03㣇\x03形\x03彫\x03㣣\x03徚\x03忍\x03志\x03忹\x03" + + "悁\x03㤺\x03㤜\x03悔\x03惇\x03慈\x03慌\x03慎\x03慺\x03憎\x03憲\x03憤\x03憯\x03懞\x03" + + "懲\x03懶\x03成\x03戛\x03扝\x03抱\x03拔\x03捐\x03挽\x03拼\x03捨\x03掃\x03揤\x03搢\x03" + + "揅\x03掩\x03㨮\x03摩\x03摾\x03撝\x03摷\x03㩬\x03敏\x03敬\x03旣\x03書\x03晉\x03㬙\x03" + + "暑\x03㬈\x03㫤\x03冒\x03冕\x03最\x03暜\x03肭\x03䏙\x03朗\x03望\x03朡\x03杞\x03杓\x03" + + "㭉\x03柺\x03枅\x03桒\x03梅\x03梎\x03栟\x03椔\x03㮝\x03楂\x03榣\x03槪\x03檨\x03櫛\x03" + + "㰘\x03次\x03歔\x03㱎\x03歲\x03殟\x03殺\x03殻\x03汎\x03沿\x03泍\x03汧\x03洖\x03派\x03" + + "海\x03流\x03浩\x03浸\x03涅\x03洴\x03港\x03湮\x03㴳\x03滋\x03滇\x03淹\x03潮\x03濆\x03" + + "瀹\x03瀞\x03瀛\x03㶖\x03灊\x03災\x03灷\x03炭\x03煅\x03熜\x03爨\x03爵\x03牐\x03犀\x03" + + "犕\x03獺\x03王\x03㺬\x03玥\x03㺸\x03瑇\x03瑜\x03瑱\x03璅\x03瓊\x03㼛\x03甤\x03甾\x03" + + "異\x03瘐\x03㿼\x03䀈\x03直\x03眞\x03真\x03睊\x03䀹\x03瞋\x03䁆\x03䂖\x03硎\x03碌\x03" + + "磌\x03䃣\x03祖\x03福\x03秫\x03䄯\x03穀\x03穊\x03穏\x03䈂\x03篆\x03築\x03䈧\x03糒\x03" + + "䊠\x03糨\x03糣\x03紀\x03絣\x03䌁\x03緇\x03縂\x03繅\x03䌴\x03䍙\x03罺\x03羕\x03翺\x03" + + "者\x03聠\x03聰\x03䏕\x03育\x03脃\x03䐋\x03脾\x03媵\x03舄\x03辞\x03䑫\x03芑\x03芋\x03" + + "芝\x03劳\x03花\x03芳\x03芽\x03苦\x03若\x03茝\x03荣\x03莭\x03茣\x03莽\x03菧\x03著\x03" + + "荓\x03菊\x03菌\x03菜\x03䔫\x03蓱\x03蓳\x03蔖\x03蕤\x03䕝\x03䕡\x03䕫\x03虐\x03虜\x03" + + "虧\x03虩\x03蚩\x03蚈\x03蜎\x03蛢\x03蝹\x03蜨\x03蝫\x03螆\x03蟡\x03蠁\x03䗹\x03衠\x03" + + "衣\x03裗\x03裞\x03䘵\x03裺\x03㒻\x03䚾\x03䛇\x03誠\x03諭\x03變\x03豕\x03貫\x03賁\x03" + + "贛\x03起\x03跋\x03趼\x03跰\x03軔\x03輸\x03邔\x03郱\x03鄑\x03鄛\x03鈸\x03鋗\x03鋘\x03" + + "鉼\x03鏹\x03鐕\x03開\x03䦕\x03閷\x03䧦\x03雃\x03嶲\x03霣\x03䩮\x03䩶\x03韠\x03䪲\x03" + + "頋\x03頩\x03飢\x03䬳\x03餩\x03馧\x03駂\x03駾\x03䯎\x03鬒\x03鱀\x03鳽\x03䳎\x03䳭\x03" + + "鵧\x03䳸\x03麻\x03䵖\x03黹\x03黾\x03鼅\x03鼏\x03鼖\x03鼻" + +var xorData string = "" + // Size: 4855 bytes + "\x02\x0c\x09\x02\xb0\xec\x02\xad\xd8\x02\xad\xd9\x02\x06\x07\x02\x0f\x12" + + "\x02\x0f\x1f\x02\x0f\x1d\x02\x01\x13\x02\x0f\x16\x02\x0f\x0b\x02\x0f3" + + "\x02\x0f7\x02\x0f?\x02\x0f/\x02\x0f*\x02\x0c&\x02\x0c*\x02\x0c;\x02\x0c9" + + "\x02\x0c%\x02\xab\xed\x02\xab\xe2\x02\xab\xe3\x02\xa9\xe0\x02\xa9\xe1" + + "\x02\xa9\xe6\x02\xa3\xcb\x02\xa3\xc8\x02\xa3\xc9\x02\x01#\x02\x01\x08" + + "\x02\x0e>\x02\x0e'\x02\x0f\x03\x02\x03\x0d\x02\x03\x09\x02\x03\x17\x02" + + "\x03\x0e\x02\x02\x03\x02\x011\x02\x01\x00\x02\x01\x10\x02\x03<\x02\x07" + + "\x0d\x02\x02\x0c\x02\x0c0\x02\x01\x03\x02\x01\x01\x02\x01 \x02\x01\x22" + + "\x02\x01)\x02\x01\x0a\x02\x01\x0c\x02\x02\x06\x02\x02\x02\x02\x03\x10" + + "\x03\x037 \x03\x0b+\x03\x02\x01\x04\x02\x01\x02\x02\x019\x02\x03\x1c\x02" + + "\x02$\x03\x80p$\x02\x03:\x02\x03\x0a\x03\xc1r.\x03\xc1r,\x03\xc1r\x02" + + "\x02\x02:\x02\x02>\x02\x02,\x02\x02\x10\x02\x02\x00\x03\xc1s<\x03\xc1s*" + + "\x03\xc2L$\x03\xc2L;\x02\x09)\x02\x0a\x19\x03\x83\xab\xe3\x03\x83\xab" + + "\xf2\x03 4\xe0\x03\x81\xab\xea\x03\x81\xab\xf3\x03 4\xef\x03\x96\xe1\xcd" + + "\x03\x84\xe5\xc3\x02\x0d\x11\x03\x8b\xec\xcb\x03\x94\xec\xcf\x03\x9a\xec" + + "\xc2\x03\x8b\xec\xdb\x03\x94\xec\xdf\x03\x9a\xec\xd2\x03\x01\x0c!\x03" + + "\x01\x0c#\x03ʠ\x9d\x03ʣ\x9c\x03ʢ\x9f\x03ʥ\x9e\x03ʤ\x91\x03ʧ\x90\x03ʦ\x93" + + "\x03ʩ\x92\x03ʨ\x95\x03\xca\xf3\xb5\x03\xca\xf0\xb4\x03\xca\xf1\xb7\x03" + + "\xca\xf6\xb6\x03\xca\xf7\x89\x03\xca\xf4\x88\x03\xca\xf5\x8b\x03\xca\xfa" + + "\x8a\x03\xca\xfb\x8d\x03\xca\xf8\x8c\x03\xca\xf9\x8f\x03\xca\xfe\x8e\x03" + + "\xca\xff\x81\x03\xca\xfc\x80\x03\xca\xfd\x83\x03\xca\xe2\x82\x03\xca\xe3" + + "\x85\x03\xca\xe0\x84\x03\xca\xe1\x87\x03\xca\xe6\x86\x03\xca\xe7\x99\x03" + + "\xca\xe4\x98\x03\xca\xe5\x9b\x03\xca\xea\x9a\x03\xca\xeb\x9d\x03\xca\xe8" + + "\x9c\x03ؓ\x89\x03ߔ\x8b\x02\x010\x03\x03\x04\x1e\x03\x04\x15\x12\x03\x0b" + + "\x05,\x03\x06\x04\x00\x03\x06\x04)\x03\x06\x044\x03\x06\x04<\x03\x06\x05" + + "\x1d\x03\x06\x06\x00\x03\x06\x06\x0a\x03\x06\x06'\x03\x06\x062\x03\x0786" + + "\x03\x079/\x03\x079 \x03\x07:\x0e\x03\x07:\x1b\x03\x07:%\x03\x07;/\x03" + + "\x07;%\x03\x074\x11\x03\x076\x09\x03\x077*\x03\x070\x01\x03\x070\x0f\x03" + + "\x070.\x03\x071\x16\x03\x071\x04\x03\x0710\x03\x072\x18\x03\x072-\x03" + + "\x073\x14\x03\x073>\x03\x07'\x09\x03\x07 \x00\x03\x07\x1f\x0b\x03\x07" + + "\x18#\x03\x07\x18(\x03\x07\x186\x03\x07\x18\x03\x03\x07\x19\x16\x03\x07" + + "\x116\x03\x07\x12'\x03\x07\x13\x10\x03\x07\x0c&\x03\x07\x0c\x08\x03\x07" + + "\x0c\x13\x03\x07\x0d\x02\x03\x07\x0d\x1c\x03\x07\x0b5\x03\x07\x0b\x0a" + + "\x03\x07\x0b\x01\x03\x07\x0b\x0f\x03\x07\x05\x00\x03\x07\x05\x09\x03\x07" + + "\x05\x0b\x03\x07\x07\x01\x03\x07\x07\x08\x03\x07\x00<\x03\x07\x00+\x03" + + "\x07\x01)\x03\x07\x01\x1b\x03\x07\x01\x08\x03\x07\x03?\x03\x0445\x03\x04" + + "4\x08\x03\x0454\x03\x04)/\x03\x04)5\x03\x04+\x05\x03\x04+\x14\x03\x04+ " + + "\x03\x04+<\x03\x04*&\x03\x04*\x22\x03\x04&8\x03\x04!\x01\x03\x04!\x22" + + "\x03\x04\x11+\x03\x04\x10.\x03\x04\x104\x03\x04\x13=\x03\x04\x12\x04\x03" + + "\x04\x12\x0a\x03\x04\x0d\x1d\x03\x04\x0d\x07\x03\x04\x0d \x03\x05<>\x03" + + "\x055<\x03\x055!\x03\x055#\x03\x055&\x03\x054\x1d\x03\x054\x02\x03\x054" + + "\x07\x03\x0571\x03\x053\x1a\x03\x053\x16\x03\x05.<\x03\x05.\x07\x03\x05)" + + ":\x03\x05)<\x03\x05)\x0c\x03\x05)\x15\x03\x05+-\x03\x05+5\x03\x05$\x1e" + + "\x03\x05$\x14\x03\x05'\x04\x03\x05'\x14\x03\x05&\x02\x03\x05\x226\x03" + + "\x05\x22\x0c\x03\x05\x22\x1c\x03\x05\x19\x0a\x03\x05\x1b\x09\x03\x05\x1b" + + "\x0c\x03\x05\x14\x07\x03\x05\x16?\x03\x05\x16\x0c\x03\x05\x0c\x05\x03" + + "\x05\x0e\x0f\x03\x05\x01\x0e\x03\x05\x00(\x03\x05\x030\x03\x05\x03\x06" + + "\x03\x0a==\x03\x0a=1\x03\x0a=,\x03\x0a=\x0c\x03\x0a??\x03\x0a<\x08\x03" + + "\x0a9!\x03\x0a9)\x03\x0a97\x03\x0a99\x03\x0a6\x0a\x03\x0a6\x1c\x03\x0a6" + + "\x17\x03\x0a7'\x03\x0a78\x03\x0a73\x03\x0a'\x01\x03\x0a'&\x03\x0a\x1f" + + "\x0e\x03\x0a\x1f\x03\x03\x0a\x1f3\x03\x0a\x1b/\x03\x0a\x18\x19\x03\x0a" + + "\x19\x01\x03\x0a\x16\x14\x03\x0a\x0e\x22\x03\x0a\x0f\x10\x03\x0a\x0f\x02" + + "\x03\x0a\x0f \x03\x0a\x0c\x04\x03\x0a\x0b>\x03\x0a\x0b+\x03\x0a\x08/\x03" + + "\x0a\x046\x03\x0a\x05\x14\x03\x0a\x00\x04\x03\x0a\x00\x10\x03\x0a\x00" + + "\x14\x03\x0b<3\x03\x0b;*\x03\x0b9\x22\x03\x0b9)\x03\x0b97\x03\x0b+\x10" + + "\x03\x0b((\x03\x0b&5\x03\x0b$\x1c\x03\x0b$\x12\x03\x0b%\x04\x03\x0b#<" + + "\x03\x0b#0\x03\x0b#\x0d\x03\x0b#\x19\x03\x0b!:\x03\x0b!\x1f\x03\x0b!\x00" + + "\x03\x0b\x1e5\x03\x0b\x1c\x1d\x03\x0b\x1d-\x03\x0b\x1d(\x03\x0b\x18.\x03" + + "\x0b\x18 \x03\x0b\x18\x16\x03\x0b\x14\x13\x03\x0b\x15$\x03\x0b\x15\x22" + + "\x03\x0b\x12\x1b\x03\x0b\x12\x10\x03\x0b\x132\x03\x0b\x13=\x03\x0b\x12" + + "\x18\x03\x0b\x0c&\x03\x0b\x061\x03\x0b\x06:\x03\x0b\x05#\x03\x0b\x05<" + + "\x03\x0b\x04\x0b\x03\x0b\x04\x04\x03\x0b\x04\x1b\x03\x0b\x042\x03\x0b" + + "\x041\x03\x0b\x03\x03\x03\x0b\x03\x1d\x03\x0b\x03/\x03\x0b\x03+\x03\x0b" + + "\x02\x1b\x03\x0b\x02\x00\x03\x0b\x01\x1e\x03\x0b\x01\x08\x03\x0b\x015" + + "\x03\x06\x0d9\x03\x06\x0d=\x03\x06\x0d?\x03\x02\x001\x03\x02\x003\x03" + + "\x02\x02\x19\x03\x02\x006\x03\x02\x02\x1b\x03\x02\x004\x03\x02\x00<\x03" + + "\x02\x02\x0a\x03\x02\x02\x0e\x03\x02\x01\x1a\x03\x02\x01\x07\x03\x02\x01" + + "\x05\x03\x02\x01\x0b\x03\x02\x01%\x03\x02\x01\x0c\x03\x02\x01\x04\x03" + + "\x02\x01\x1c\x03\x02\x00.\x03\x02\x002\x03\x02\x00>\x03\x02\x00\x12\x03" + + "\x02\x00\x16\x03\x02\x011\x03\x02\x013\x03\x02\x02 \x03\x02\x02%\x03\x02" + + "\x02$\x03\x02\x028\x03\x02\x02;\x03\x02\x024\x03\x02\x012\x03\x02\x022" + + "\x03\x02\x02/\x03\x02\x01,\x03\x02\x01\x13\x03\x02\x01\x16\x03\x02\x01" + + "\x11\x03\x02\x01\x1e\x03\x02\x01\x15\x03\x02\x01\x17\x03\x02\x01\x0f\x03" + + "\x02\x01\x08\x03\x02\x00?\x03\x02\x03\x07\x03\x02\x03\x0d\x03\x02\x03" + + "\x13\x03\x02\x03\x1d\x03\x02\x03\x1f\x03\x02\x00\x03\x03\x02\x00\x0d\x03" + + "\x02\x00\x01\x03\x02\x00\x1b\x03\x02\x00\x19\x03\x02\x00\x18\x03\x02\x00" + + "\x13\x03\x02\x00/\x03\x07>\x12\x03\x07<\x1f\x03\x07>\x1d\x03\x06\x1d\x0e" + + "\x03\x07>\x1c\x03\x07>:\x03\x07>\x13\x03\x04\x12+\x03\x07?\x03\x03\x07>" + + "\x02\x03\x06\x224\x03\x06\x1a.\x03\x07<%\x03\x06\x1c\x0b\x03\x0609\x03" + + "\x05\x1f\x01\x03\x04'\x08\x03\x93\xfd\xf5\x03\x02\x0d \x03\x02\x0d#\x03" + + "\x02\x0d!\x03\x02\x0d&\x03\x02\x0d\x22\x03\x02\x0d/\x03\x02\x0d,\x03\x02" + + "\x0d$\x03\x02\x0d'\x03\x02\x0d%\x03\x02\x0d;\x03\x02\x0d=\x03\x02\x0d?" + + "\x03\x099.\x03\x08\x0b7\x03\x08\x02\x14\x03\x08\x14\x0d\x03\x08.:\x03" + + "\x089'\x03\x0f\x0b\x18\x03\x0f\x1c1\x03\x0f\x17&\x03\x0f9\x1f\x03\x0f0" + + "\x0c\x03\x0e\x0a9\x03\x0e\x056\x03\x0e\x1c#\x03\x0f\x13\x0e\x03\x072\x00" + + "\x03\x070\x0d\x03\x072\x0b\x03\x06\x11\x18\x03\x070\x10\x03\x06\x0f(\x03" + + "\x072\x05\x03\x06\x0f,\x03\x073\x15\x03\x06\x07\x08\x03\x05\x16\x02\x03" + + "\x04\x0b \x03\x05:8\x03\x05\x16%\x03\x0a\x0d\x1f\x03\x06\x16\x10\x03\x05" + + "\x1d5\x03\x05*;\x03\x05\x16\x1b\x03\x04.-\x03\x06\x1a\x19\x03\x04\x03," + + "\x03\x0b87\x03\x04/\x0a\x03\x06\x00,\x03\x04-\x01\x03\x04\x1e-\x03\x06/(" + + "\x03\x0a\x0b5\x03\x06\x0e7\x03\x06\x07.\x03\x0597\x03\x0a*%\x03\x0760" + + "\x03\x06\x0c;\x03\x05'\x00\x03\x072.\x03\x072\x08\x03\x06=\x01\x03\x06" + + "\x05\x1b\x03\x06\x06\x12\x03\x06$=\x03\x06'\x0d\x03\x04\x11\x0f\x03\x076" + + ",\x03\x06\x07;\x03\x06.,\x03\x86\xf9\xea\x03\x8f\xff\xeb\x02\x092\x02" + + "\x095\x02\x094\x02\x09;\x02\x09>\x02\x098\x02\x09*\x02\x09/\x02\x09,\x02" + + "\x09%\x02\x09&\x02\x09#\x02\x09 \x02\x08!\x02\x08%\x02\x08$\x02\x08+\x02" + + "\x08.\x02\x08*\x02\x08&\x02\x088\x02\x08>\x02\x084\x02\x086\x02\x080\x02" + + "\x08\x10\x02\x08\x17\x02\x08\x12\x02\x08\x1d\x02\x08\x1f\x02\x08\x13\x02" + + "\x08\x15\x02\x08\x14\x02\x08\x0c\x03\x8b\xfd\xd0\x03\x81\xec\xc6\x03\x87" + + "\xe0\x8a\x03-2\xe3\x03\x80\xef\xe4\x03-2\xea\x03\x88\xe6\xeb\x03\x8e\xe6" + + "\xe8\x03\x84\xe6\xe9\x03\x97\xe6\xee\x03-2\xf9\x03-2\xf6\x03\x8e\xe3\xad" + + "\x03\x80\xe3\x92\x03\x88\xe3\x90\x03\x8e\xe3\x90\x03\x80\xe3\x97\x03\x88" + + "\xe3\x95\x03\x88\xfe\xcb\x03\x8e\xfe\xca\x03\x84\xfe\xcd\x03\x91\xef\xc9" + + "\x03-2\xc1\x03-2\xc0\x03-2\xcb\x03\x88@\x09\x03\x8e@\x08\x03\x8f\xe0\xf5" + + "\x03\x8e\xe6\xf9\x03\x8e\xe0\xfa\x03\x93\xff\xf4\x03\x84\xee\xd3\x03\x0b" + + "(\x04\x023 \x021;\x02\x01*\x03\x0b#\x10\x03\x0b 0\x03\x0b!\x10\x03\x0b!0" + + "\x03\x07\x15\x08\x03\x09?5\x03\x07\x1f\x08\x03\x07\x17\x0b\x03\x09\x1f" + + "\x15\x03\x0b\x1c7\x03\x0a+#\x03\x06\x1a\x1b\x03\x06\x1a\x14\x03\x0a\x01" + + "\x18\x03\x06#\x1b\x03\x0a2\x0c\x03\x0a\x01\x04\x03\x09#;\x03\x08='\x03" + + "\x08\x1a\x0a\x03\x07\x03\x0a\x111\x03\x09\x1b\x09\x03\x073.\x03\x07\x01\x00" + + "\x03\x09/,\x03\x07#>\x03\x07\x048\x03\x0a\x1f\x22\x03\x098>\x03\x09\x11" + + "\x00\x03\x08/\x17\x03\x06'\x22\x03\x0b\x1a+\x03\x0a\x22\x19\x03\x0a/1" + + "\x03\x0974\x03\x09\x0f\x22\x03\x08,\x22\x03\x08?\x14\x03\x07$5\x03\x07<3" + + "\x03\x07=*\x03\x07\x13\x18\x03\x068\x0a\x03\x06\x09\x16\x03\x06\x13\x00" + + "\x03\x08\x067\x03\x08\x01\x03\x03\x08\x12\x1d\x03\x07+7\x03\x06(;\x03" + + "\x06\x1c?\x03\x07\x0e\x17\x03\x0a\x06\x1d\x03\x0a\x19\x07\x03\x08\x14$" + + "\x03\x07$;\x03\x08,$\x03\x08\x06\x0d\x03\x07\x16\x0a\x03\x06>>\x03\x0a" + + "\x06\x12\x03\x0a\x14)\x03\x09\x0d\x1f\x03\x09\x12\x17\x03\x09\x19\x01" + + "\x03\x08\x11 \x03\x08\x1d'\x03\x06<\x1a\x03\x0a.\x00\x03\x07'\x18\x03" + + "\x0a\x22\x08\x03\x08\x0d\x0a\x03\x08\x13)\x03\x07*)\x03\x06<,\x03\x07" + + "\x0b\x1a\x03\x09.\x14\x03\x09\x0d\x1e\x03\x07\x0e#\x03\x0b\x1d'\x03\x0a" + + "\x0a8\x03\x09%2\x03\x08+&\x03\x080\x12\x03\x0a)4\x03\x08\x06\x1f\x03\x0b" + + "\x1b\x1a\x03\x0a\x1b\x0f\x03\x0b\x1d*\x03\x09\x16$\x03\x090\x11\x03\x08" + + "\x11\x08\x03\x0a*(\x03\x0a\x042\x03\x089,\x03\x074'\x03\x07\x0f\x05\x03" + + "\x09\x0b\x0a\x03\x07\x1b\x01\x03\x09\x17:\x03\x09.\x0d\x03\x07.\x11\x03" + + "\x09+\x15\x03\x080\x13\x03\x0b\x1f\x19\x03\x0a \x11\x03\x0a\x220\x03\x09" + + "\x07;\x03\x08\x16\x1c\x03\x07,\x13\x03\x07\x0e/\x03\x06\x221\x03\x0a." + + "\x0a\x03\x0a7\x02\x03\x0a\x032\x03\x0a\x1d.\x03\x091\x06\x03\x09\x19:" + + "\x03\x08\x02/\x03\x060+\x03\x06\x0f-\x03\x06\x1c\x1f\x03\x06\x1d\x07\x03" + + "\x0a,\x11\x03\x09=\x0d\x03\x09\x0b;\x03\x07\x1b/\x03\x0a\x1f:\x03\x09 " + + "\x1f\x03\x09.\x10\x03\x094\x0b\x03\x09\x1a1\x03\x08#\x1a\x03\x084\x1d" + + "\x03\x08\x01\x1f\x03\x08\x11\x22\x03\x07'8\x03\x07\x1a>\x03\x0757\x03" + + "\x06&9\x03\x06+\x11\x03\x0a.\x0b\x03\x0a,>\x03\x0a4#\x03\x08%\x17\x03" + + "\x07\x05\x22\x03\x07\x0c\x0b\x03\x0a\x1d+\x03\x0a\x19\x16\x03\x09+\x1f" + + "\x03\x09\x08\x0b\x03\x08\x16\x18\x03\x08+\x12\x03\x0b\x1d\x0c\x03\x0a=" + + "\x10\x03\x0a\x09\x0d\x03\x0a\x10\x11\x03\x09&0\x03\x08(\x1f\x03\x087\x07" + + "\x03\x08\x185\x03\x07'6\x03\x06.\x05\x03\x06=\x04\x03\x06;;\x03\x06\x06," + + "\x03\x0b\x18>\x03\x08\x00\x18\x03\x06 \x03\x03\x06<\x00\x03\x09%\x18\x03" + + "\x0b\x1c<\x03\x0a%!\x03\x0a\x09\x12\x03\x0a\x16\x02\x03\x090'\x03\x09" + + "\x0e=\x03\x08 \x0e\x03\x08>\x03\x03\x074>\x03\x06&?\x03\x06\x19\x09\x03" + + "\x06?(\x03\x0a-\x0e\x03\x09:3\x03\x098:\x03\x09\x12\x0b\x03\x09\x1d\x17" + + "\x03\x087\x05\x03\x082\x14\x03\x08\x06%\x03\x08\x13\x1f\x03\x06\x06\x0e" + + "\x03\x0a\x22<\x03\x09/<\x03\x06>+\x03\x0a'?\x03\x0a\x13\x0c\x03\x09\x10<" + + "\x03\x07\x1b=\x03\x0a\x19\x13\x03\x09\x22\x1d\x03\x09\x07\x0d\x03\x08)" + + "\x1c\x03\x06=\x1a\x03\x0a/4\x03\x0a7\x11\x03\x0a\x16:\x03\x09?3\x03\x09:" + + "/\x03\x09\x05\x0a\x03\x09\x14\x06\x03\x087\x22\x03\x080\x07\x03\x08\x1a" + + "\x1f\x03\x07\x04(\x03\x07\x04\x09\x03\x06 %\x03\x06<\x08\x03\x0a+\x14" + + "\x03\x09\x1d\x16\x03\x0a70\x03\x08 >\x03\x0857\x03\x070\x0a\x03\x06=\x12" + + "\x03\x06\x16%\x03\x06\x1d,\x03\x099#\x03\x09\x10>\x03\x07 \x1e\x03\x08" + + "\x0c<\x03\x08\x0b\x18\x03\x08\x15+\x03\x08,:\x03\x08%\x22\x03\x07\x0a$" + + "\x03\x0b\x1c=\x03\x07+\x08\x03\x0a/\x05\x03\x0a \x07\x03\x0a\x12'\x03" + + "\x09#\x11\x03\x08\x1b\x15\x03\x0a\x06\x01\x03\x09\x1c\x1b\x03\x0922\x03" + + "\x07\x14<\x03\x07\x09\x04\x03\x061\x04\x03\x07\x0e\x01\x03\x0a\x13\x18" + + "\x03\x0a-\x0c\x03\x0a?\x0d\x03\x0a\x09\x0a\x03\x091&\x03\x0a/\x0b\x03" + + "\x08$<\x03\x083\x1d\x03\x08\x0c$\x03\x08\x0d\x07\x03\x08\x0d?\x03\x08" + + "\x0e\x14\x03\x065\x0a\x03\x08\x1a#\x03\x08\x16#\x03\x0702\x03\x07\x03" + + "\x1a\x03\x06(\x1d\x03\x06+\x1b\x03\x06\x0b\x05\x03\x06\x0b\x17\x03\x06" + + "\x0c\x04\x03\x06\x1e\x19\x03\x06+0\x03\x062\x18\x03\x0b\x16\x1e\x03\x0a+" + + "\x16\x03\x0a-?\x03\x0a#:\x03\x0a#\x10\x03\x0a%$\x03\x0a>+\x03\x0a01\x03" + + "\x0a1\x10\x03\x0a\x099\x03\x0a\x0a\x12\x03\x0a\x19\x1f\x03\x0a\x19\x12" + + "\x03\x09*)\x03\x09-\x16\x03\x09.1\x03\x09.2\x03\x09<\x0e\x03\x09> \x03" + + "\x093\x12\x03\x09\x0b\x01\x03\x09\x1c2\x03\x09\x11\x1c\x03\x09\x15%\x03" + + "\x08,&\x03\x08!\x22\x03\x089(\x03\x08\x0b\x1a\x03\x08\x0d2\x03\x08\x0c" + + "\x04\x03\x08\x0c\x06\x03\x08\x0c\x1f\x03\x08\x0c\x0c\x03\x08\x0f\x1f\x03" + + "\x08\x0f\x1d\x03\x08\x00\x14\x03\x08\x03\x14\x03\x08\x06\x16\x03\x08\x1e" + + "#\x03\x08\x11\x11\x03\x08\x10\x18\x03\x08\x14(\x03\x07)\x1e\x03\x07.1" + + "\x03\x07 $\x03\x07 '\x03\x078\x08\x03\x07\x0d0\x03\x07\x0f7\x03\x07\x05#" + + "\x03\x07\x05\x1a\x03\x07\x1a7\x03\x07\x1d-\x03\x07\x17\x10\x03\x06)\x1f" + + "\x03\x062\x0b\x03\x066\x16\x03\x06\x09\x11\x03\x09(\x1e\x03\x07!5\x03" + + "\x0b\x11\x16\x03\x0a/\x04\x03\x0a,\x1a\x03\x0b\x173\x03\x0a,1\x03\x0a/5" + + "\x03\x0a\x221\x03\x0a\x22\x0d\x03\x0a?%\x03\x0a<,\x03\x0a?#\x03\x0a>\x19" + + "\x03\x0a\x08&\x03\x0a\x0b\x0e\x03\x0a\x0c:\x03\x0a\x0c+\x03\x0a\x03\x22" + + "\x03\x0a\x06)\x03\x0a\x11\x10\x03\x0a\x11\x1a\x03\x0a\x17-\x03\x0a\x14(" + + "\x03\x09)\x1e\x03\x09/\x09\x03\x09.\x00\x03\x09,\x07\x03\x09/*\x03\x09-9" + + "\x03\x09\x228\x03\x09%\x09\x03\x09:\x12\x03\x09;\x1d\x03\x09?\x06\x03" + + "\x093%\x03\x096\x05\x03\x096\x08\x03\x097\x02\x03\x09\x07,\x03\x09\x04," + + "\x03\x09\x1f\x16\x03\x09\x11\x03\x03\x09\x11\x12\x03\x09\x168\x03\x08*" + + "\x05\x03\x08/2\x03\x084:\x03\x08\x22+\x03\x08 0\x03\x08&\x0a\x03\x08;" + + "\x10\x03\x08>$\x03\x08>\x18\x03\x0829\x03\x082:\x03\x081,\x03\x081<\x03" + + "\x081\x1c\x03\x087#\x03\x087*\x03\x08\x09'\x03\x08\x00\x1d\x03\x08\x05-" + + "\x03\x08\x1f4\x03\x08\x1d\x04\x03\x08\x16\x0f\x03\x07*7\x03\x07'!\x03" + + "\x07%\x1b\x03\x077\x0c\x03\x07\x0c1\x03\x07\x0c.\x03\x07\x00\x06\x03\x07" + + "\x01\x02\x03\x07\x010\x03\x07\x06=\x03\x07\x01\x03\x03\x07\x01\x13\x03" + + "\x07\x06\x06\x03\x07\x05\x0a\x03\x07\x1f\x09\x03\x07\x17:\x03\x06*1\x03" + + "\x06-\x1d\x03\x06\x223\x03\x062:\x03\x060$\x03\x066\x1e\x03\x064\x12\x03" + + "\x0645\x03\x06\x0b\x00\x03\x06\x0b7\x03\x06\x07\x1f\x03\x06\x15\x12\x03" + + "\x0c\x05\x0f\x03\x0b+\x0b\x03\x0b+-\x03\x06\x16\x1b\x03\x06\x15\x17\x03" + + "\x89\xca\xea\x03\x89\xca\xe8\x03\x0c8\x10\x03\x0c8\x01\x03\x0c8\x0f\x03" + + "\x0d8%\x03\x0d8!\x03\x0c8-\x03\x0c8/\x03\x0c8+\x03\x0c87\x03\x0c85\x03" + + "\x0c9\x09\x03\x0c9\x0d\x03\x0c9\x0f\x03\x0c9\x0b\x03\xcfu\x0c\x03\xcfu" + + "\x0f\x03\xcfu\x0e\x03\xcfu\x09\x03\x0c9\x10\x03\x0d9\x0c\x03\xcf`;\x03" + + "\xcf`>\x03\xcf`9\x03\xcf`8\x03\xcf`7\x03\xcf`*\x03\xcf`-\x03\xcf`,\x03" + + "\x0d\x1b\x1a\x03\x0d\x1b&\x03\x0c=.\x03\x0c=%\x03\x0c>\x1e\x03\x0c>\x14" + + "\x03\x0c?\x06\x03\x0c?\x0b\x03\x0c?\x0c\x03\x0c?\x0d\x03\x0c?\x02\x03" + + "\x0c>\x0f\x03\x0c>\x08\x03\x0c>\x09\x03\x0c>,\x03\x0c>\x0c\x03\x0c?\x13" + + "\x03\x0c?\x16\x03\x0c?\x15\x03\x0c?\x1c\x03\x0c?\x1f\x03\x0c?\x1d\x03" + + "\x0c?\x1a\x03\x0c?\x17\x03\x0c?\x08\x03\x0c?\x09\x03\x0c?\x0e\x03\x0c?" + + "\x04\x03\x0c?\x05\x03\x0c" + + "\x03\x0c=2\x03\x0c=6\x03\x0c<\x07\x03\x0c<\x05\x03\x0e:!\x03\x0e:#\x03" + + "\x0e8\x09\x03\x0e:&\x03\x0e8\x0b\x03\x0e:$\x03\x0e:,\x03\x0e8\x1a\x03" + + "\x0e8\x1e\x03\x0e:*\x03\x0e:7\x03\x0e:5\x03\x0e:;\x03\x0e:\x15\x03\x0e:<" + + "\x03\x0e:4\x03\x0e:'\x03\x0e:-\x03\x0e:%\x03\x0e:?\x03\x0e:=\x03\x0e:)" + + "\x03\x0e:/\x03\xcfs'\x03\x0d=\x0f\x03\x0d+*\x03\x0d99\x03\x0d9;\x03\x0d9" + + "?\x03\x0d)\x0d\x03\x0d(%\x02\x01\x18\x02\x01(\x02\x01\x1e\x03\x0f$!\x03" + + "\x0f87\x03\x0f4\x0e\x03\x0f5\x1d\x03\x06'\x03\x03\x0f\x08\x18\x03\x0f" + + "\x0d\x1b\x03\x0e2=\x03\x0e;\x08\x03\x0e:\x0b\x03\x0e\x06$\x03\x0e\x0d)" + + "\x03\x0e\x16\x1f\x03\x0e\x16\x1b\x03\x0d$\x0a\x03\x05,\x1d\x03\x0d. \x03" + + "\x0d.#\x03\x0c(/\x03\x09%\x02\x03\x0d90\x03\x0d\x0e4\x03\x0d\x0d\x0f\x03" + + "\x0c#\x00\x03\x0c,\x1e\x03\x0c2\x0e\x03\x0c\x01\x17\x03\x0c\x09:\x03\x0e" + + "\x173\x03\x0c\x08\x03\x03\x0c\x11\x07\x03\x0c\x10\x18\x03\x0c\x1f\x1c" + + "\x03\x0c\x19\x0e\x03\x0c\x1a\x1f\x03\x0f0>\x03\x0b->\x03\x0b<+\x03\x0b8" + + "\x13\x03\x0b\x043\x03\x0b\x14\x03\x03\x0b\x16%\x03\x0d\x22&\x03\x0b\x1a" + + "\x1a\x03\x0b\x1a\x04\x03\x0a%9\x03\x0a&2\x03\x0a&0\x03\x0a!\x1a\x03\x0a!" + + "7\x03\x0a5\x10\x03\x0a=4\x03\x0a?\x0e\x03\x0a>\x10\x03\x0a\x00 \x03\x0a" + + "\x0f:\x03\x0a\x0f9\x03\x0a\x0b\x0a\x03\x0a\x17%\x03\x0a\x1b-\x03\x09-" + + "\x1a\x03\x09,4\x03\x09.,\x03\x09)\x09\x03\x096!\x03\x091\x1f\x03\x093" + + "\x16\x03\x0c+\x1f\x03\x098 \x03\x098=\x03\x0c(\x1a\x03\x0c(\x16\x03\x09" + + "\x0a+\x03\x09\x16\x12\x03\x09\x13\x0e\x03\x09\x153\x03\x08)!\x03\x09\x1a" + + "\x01\x03\x09\x18\x01\x03\x08%#\x03\x08>\x22\x03\x08\x05%\x03\x08\x02*" + + "\x03\x08\x15;\x03\x08\x1b7\x03\x0f\x07\x1d\x03\x0f\x04\x03\x03\x070\x0c" + + "\x03\x07;\x0b\x03\x07\x08\x17\x03\x07\x12\x06\x03\x06/-\x03\x0671\x03" + + "\x065+\x03\x06>7\x03\x06\x049\x03\x05+\x1e\x03\x05,\x17\x03\x05 \x1d\x03" + + "\x05\x22\x05\x03\x050\x1d" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *idnaTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = idnaIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *idnaTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *idnaTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = idnaIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *idnaTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// idnaTrie. Total size: 29404 bytes (28.71 KiB). Checksum: 848c45acb5f7991c. +type idnaTrie struct{} + +func newIdnaTrie(i int) *idnaTrie { + return &idnaTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *idnaTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 125: + return uint16(idnaValues[n<<6+uint32(b)]) + default: + n -= 125 + return uint16(idnaSparse.lookup(n, b)) + } +} + +// idnaValues: 127 blocks, 8128 entries, 16256 bytes +// The third block is the zero block. +var idnaValues = [8128]uint16{ + // Block 0x0, offset 0x0 + 0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080, + 0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080, + 0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080, + 0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080, + 0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080, + 0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080, + 0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080, + 0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080, + 0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008, + 0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080, + 0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080, + // Block 0x1, offset 0x40 + 0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105, + 0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105, + 0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105, + 0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105, + 0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080, + 0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008, + 0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008, + 0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008, + 0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008, + 0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080, + 0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040, + 0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040, + 0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040, + 0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040, + 0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040, + 0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018, + 0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018, + 0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a, + 0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005, + 0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018, + 0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018, + // Block 0x4, offset 0x100 + 0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008, + 0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008, + 0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008, + 0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008, + 0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008, + 0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008, + 0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008, + 0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008, + 0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008, + 0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d, + 0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199, + // Block 0x5, offset 0x140 + 0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d, + 0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008, + 0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008, + 0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008, + 0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008, + 0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008, + 0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008, + 0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008, + 0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008, + 0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d, + 0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9, + // Block 0x6, offset 0x180 + 0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008, + 0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d, + 0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d, + 0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d, + 0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155, + 0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008, + 0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d, + 0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd, + 0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d, + 0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008, + 0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9, + 0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d, + 0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d, + 0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d, + 0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008, + 0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008, + 0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008, + 0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008, + 0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008, + 0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008, + 0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008, + // Block 0x8, offset 0x200 + 0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008, + 0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008, + 0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008, + 0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008, + 0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008, + 0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008, + 0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008, + 0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008, + 0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008, + 0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d, + 0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008, + // Block 0x9, offset 0x240 + 0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018, + 0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008, + 0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008, + 0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018, + 0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a, + 0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369, + 0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018, + 0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018, + 0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018, + 0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018, + 0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018, + // Block 0xa, offset 0x280 + 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, + 0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308, + 0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308, + 0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308, + 0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308, + 0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308, + 0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308, + 0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308, + 0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008, + 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008, + 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2, + 0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040, + 0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105, + 0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105, + 0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105, + 0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d, + 0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d, + 0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008, + 0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008, + 0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008, + 0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008, + // Block 0xc, offset 0x300 + 0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008, + 0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008, + 0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd, + 0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008, + 0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008, + 0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008, + 0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008, + 0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008, + 0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd, + 0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008, + 0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d, + // Block 0xd, offset 0x340 + 0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008, + 0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008, + 0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008, + 0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008, + 0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008, + 0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008, + 0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008, + 0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008, + 0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008, + 0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008, + 0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008, + // Block 0xe, offset 0x380 + 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308, + 0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008, + 0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008, + 0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008, + 0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008, + 0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008, + 0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008, + 0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008, + 0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008, + 0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008, + 0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d, + 0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d, + 0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008, + 0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008, + 0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008, + 0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008, + 0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008, + 0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008, + 0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008, + 0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008, + 0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008, + // Block 0x10, offset 0x400 + 0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008, + 0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008, + 0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008, + 0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008, + 0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008, + 0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008, + 0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008, + 0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008, + 0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5, + 0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5, + 0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5, + // Block 0x11, offset 0x440 + 0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840, + 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818, + 0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308, + 0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308, + 0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040, + 0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08, + 0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08, + 0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08, + 0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08, + 0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08, + 0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08, + // Block 0x12, offset 0x480 + 0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08, + 0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308, + 0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308, + 0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308, + 0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308, + 0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808, + 0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808, + 0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08, + 0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429, + 0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08, + 0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08, + 0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08, + 0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08, + 0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308, + 0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840, + 0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308, + 0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018, + 0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08, + 0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008, + 0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08, + 0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08, + // Block 0x14, offset 0x500 + 0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818, + 0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818, + 0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308, + 0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08, + 0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08, + 0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08, + 0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08, + 0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08, + 0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308, + 0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308, + 0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308, + // Block 0x15, offset 0x540 + 0x540: 0x0c08, 0x541: 0x0a08, 0x542: 0x0a08, 0x543: 0x0a08, 0x544: 0x0a08, 0x545: 0x0a08, + 0x546: 0x0c08, 0x547: 0x0c08, 0x548: 0x0a08, 0x549: 0x0c08, 0x54a: 0x0a08, 0x54b: 0x0a08, + 0x54c: 0x0a08, 0x54d: 0x0a08, 0x54e: 0x0a08, 0x54f: 0x0a08, 0x550: 0x0a08, 0x551: 0x0a08, + 0x552: 0x0a08, 0x553: 0x0a08, 0x554: 0x0c08, 0x555: 0x0a08, 0x556: 0x0808, 0x557: 0x0808, + 0x558: 0x0808, 0x559: 0x3308, 0x55a: 0x3308, 0x55b: 0x3308, 0x55c: 0x0040, 0x55d: 0x0040, + 0x55e: 0x0818, 0x55f: 0x0040, 0x560: 0x0a08, 0x561: 0x0808, 0x562: 0x0a08, 0x563: 0x0a08, + 0x564: 0x0a08, 0x565: 0x0a08, 0x566: 0x0808, 0x567: 0x0c08, 0x568: 0x0a08, 0x569: 0x0c08, + 0x56a: 0x0c08, 0x56b: 0x0040, 0x56c: 0x0040, 0x56d: 0x0040, 0x56e: 0x0040, 0x56f: 0x0040, + 0x570: 0x0040, 0x571: 0x0040, 0x572: 0x0040, 0x573: 0x0040, 0x574: 0x0040, 0x575: 0x0040, + 0x576: 0x0040, 0x577: 0x0040, 0x578: 0x0040, 0x579: 0x0040, 0x57a: 0x0040, 0x57b: 0x0040, + 0x57c: 0x0040, 0x57d: 0x0040, 0x57e: 0x0040, 0x57f: 0x0040, + // Block 0x16, offset 0x580 + 0x580: 0x3008, 0x581: 0x3308, 0x582: 0x3308, 0x583: 0x3308, 0x584: 0x3308, 0x585: 0x3308, + 0x586: 0x3308, 0x587: 0x3308, 0x588: 0x3308, 0x589: 0x3008, 0x58a: 0x3008, 0x58b: 0x3008, + 0x58c: 0x3008, 0x58d: 0x3b08, 0x58e: 0x3008, 0x58f: 0x3008, 0x590: 0x0008, 0x591: 0x3308, + 0x592: 0x3308, 0x593: 0x3308, 0x594: 0x3308, 0x595: 0x3308, 0x596: 0x3308, 0x597: 0x3308, + 0x598: 0x04c9, 0x599: 0x0501, 0x59a: 0x0539, 0x59b: 0x0571, 0x59c: 0x05a9, 0x59d: 0x05e1, + 0x59e: 0x0619, 0x59f: 0x0651, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x3308, 0x5a3: 0x3308, + 0x5a4: 0x0018, 0x5a5: 0x0018, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0008, + 0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008, + 0x5b0: 0x0018, 0x5b1: 0x0008, 0x5b2: 0x0008, 0x5b3: 0x0008, 0x5b4: 0x0008, 0x5b5: 0x0008, + 0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0008, 0x5bb: 0x0008, + 0x5bc: 0x0008, 0x5bd: 0x0008, 0x5be: 0x0008, 0x5bf: 0x0008, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x0008, 0x5c1: 0x3308, 0x5c2: 0x3008, 0x5c3: 0x3008, 0x5c4: 0x0040, 0x5c5: 0x0008, + 0x5c6: 0x0008, 0x5c7: 0x0008, 0x5c8: 0x0008, 0x5c9: 0x0008, 0x5ca: 0x0008, 0x5cb: 0x0008, + 0x5cc: 0x0008, 0x5cd: 0x0040, 0x5ce: 0x0040, 0x5cf: 0x0008, 0x5d0: 0x0008, 0x5d1: 0x0040, + 0x5d2: 0x0040, 0x5d3: 0x0008, 0x5d4: 0x0008, 0x5d5: 0x0008, 0x5d6: 0x0008, 0x5d7: 0x0008, + 0x5d8: 0x0008, 0x5d9: 0x0008, 0x5da: 0x0008, 0x5db: 0x0008, 0x5dc: 0x0008, 0x5dd: 0x0008, + 0x5de: 0x0008, 0x5df: 0x0008, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x0008, 0x5e3: 0x0008, + 0x5e4: 0x0008, 0x5e5: 0x0008, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0040, + 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008, + 0x5f0: 0x0008, 0x5f1: 0x0040, 0x5f2: 0x0008, 0x5f3: 0x0040, 0x5f4: 0x0040, 0x5f5: 0x0040, + 0x5f6: 0x0008, 0x5f7: 0x0008, 0x5f8: 0x0008, 0x5f9: 0x0008, 0x5fa: 0x0040, 0x5fb: 0x0040, + 0x5fc: 0x3308, 0x5fd: 0x0008, 0x5fe: 0x3008, 0x5ff: 0x3008, + // Block 0x18, offset 0x600 + 0x600: 0x3008, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3308, 0x604: 0x3308, 0x605: 0x0040, + 0x606: 0x0040, 0x607: 0x3008, 0x608: 0x3008, 0x609: 0x0040, 0x60a: 0x0040, 0x60b: 0x3008, + 0x60c: 0x3008, 0x60d: 0x3b08, 0x60e: 0x0008, 0x60f: 0x0040, 0x610: 0x0040, 0x611: 0x0040, + 0x612: 0x0040, 0x613: 0x0040, 0x614: 0x0040, 0x615: 0x0040, 0x616: 0x0040, 0x617: 0x3008, + 0x618: 0x0040, 0x619: 0x0040, 0x61a: 0x0040, 0x61b: 0x0040, 0x61c: 0x0689, 0x61d: 0x06c1, + 0x61e: 0x0040, 0x61f: 0x06f9, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x3308, 0x623: 0x3308, + 0x624: 0x0040, 0x625: 0x0040, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0008, + 0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008, + 0x630: 0x0008, 0x631: 0x0008, 0x632: 0x0018, 0x633: 0x0018, 0x634: 0x0018, 0x635: 0x0018, + 0x636: 0x0018, 0x637: 0x0018, 0x638: 0x0018, 0x639: 0x0018, 0x63a: 0x0018, 0x63b: 0x0018, + 0x63c: 0x0008, 0x63d: 0x0018, 0x63e: 0x3308, 0x63f: 0x0040, + // Block 0x19, offset 0x640 + 0x640: 0x0040, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x3008, 0x644: 0x0040, 0x645: 0x0008, + 0x646: 0x0008, 0x647: 0x0008, 0x648: 0x0008, 0x649: 0x0008, 0x64a: 0x0008, 0x64b: 0x0040, + 0x64c: 0x0040, 0x64d: 0x0040, 0x64e: 0x0040, 0x64f: 0x0008, 0x650: 0x0008, 0x651: 0x0040, + 0x652: 0x0040, 0x653: 0x0008, 0x654: 0x0008, 0x655: 0x0008, 0x656: 0x0008, 0x657: 0x0008, + 0x658: 0x0008, 0x659: 0x0008, 0x65a: 0x0008, 0x65b: 0x0008, 0x65c: 0x0008, 0x65d: 0x0008, + 0x65e: 0x0008, 0x65f: 0x0008, 0x660: 0x0008, 0x661: 0x0008, 0x662: 0x0008, 0x663: 0x0008, + 0x664: 0x0008, 0x665: 0x0008, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0040, + 0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008, + 0x670: 0x0008, 0x671: 0x0040, 0x672: 0x0008, 0x673: 0x0731, 0x674: 0x0040, 0x675: 0x0008, + 0x676: 0x0769, 0x677: 0x0040, 0x678: 0x0008, 0x679: 0x0008, 0x67a: 0x0040, 0x67b: 0x0040, + 0x67c: 0x3308, 0x67d: 0x0040, 0x67e: 0x3008, 0x67f: 0x3008, + // Block 0x1a, offset 0x680 + 0x680: 0x3008, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x0040, 0x684: 0x0040, 0x685: 0x0040, + 0x686: 0x0040, 0x687: 0x3308, 0x688: 0x3308, 0x689: 0x0040, 0x68a: 0x0040, 0x68b: 0x3308, + 0x68c: 0x3308, 0x68d: 0x3b08, 0x68e: 0x0040, 0x68f: 0x0040, 0x690: 0x0040, 0x691: 0x3308, + 0x692: 0x0040, 0x693: 0x0040, 0x694: 0x0040, 0x695: 0x0040, 0x696: 0x0040, 0x697: 0x0040, + 0x698: 0x0040, 0x699: 0x07a1, 0x69a: 0x07d9, 0x69b: 0x0811, 0x69c: 0x0008, 0x69d: 0x0040, + 0x69e: 0x0849, 0x69f: 0x0040, 0x6a0: 0x0040, 0x6a1: 0x0040, 0x6a2: 0x0040, 0x6a3: 0x0040, + 0x6a4: 0x0040, 0x6a5: 0x0040, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0008, + 0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008, + 0x6b0: 0x3308, 0x6b1: 0x3308, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0008, 0x6b5: 0x3308, + 0x6b6: 0x0018, 0x6b7: 0x0040, 0x6b8: 0x0040, 0x6b9: 0x0040, 0x6ba: 0x0040, 0x6bb: 0x0040, + 0x6bc: 0x0040, 0x6bd: 0x0040, 0x6be: 0x0040, 0x6bf: 0x0040, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x0040, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3008, 0x6c4: 0x0040, 0x6c5: 0x0008, + 0x6c6: 0x0008, 0x6c7: 0x0008, 0x6c8: 0x0008, 0x6c9: 0x0008, 0x6ca: 0x0008, 0x6cb: 0x0008, + 0x6cc: 0x0008, 0x6cd: 0x0008, 0x6ce: 0x0040, 0x6cf: 0x0008, 0x6d0: 0x0008, 0x6d1: 0x0008, + 0x6d2: 0x0040, 0x6d3: 0x0008, 0x6d4: 0x0008, 0x6d5: 0x0008, 0x6d6: 0x0008, 0x6d7: 0x0008, + 0x6d8: 0x0008, 0x6d9: 0x0008, 0x6da: 0x0008, 0x6db: 0x0008, 0x6dc: 0x0008, 0x6dd: 0x0008, + 0x6de: 0x0008, 0x6df: 0x0008, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x0008, 0x6e3: 0x0008, + 0x6e4: 0x0008, 0x6e5: 0x0008, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0040, + 0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008, + 0x6f0: 0x0008, 0x6f1: 0x0040, 0x6f2: 0x0008, 0x6f3: 0x0008, 0x6f4: 0x0040, 0x6f5: 0x0008, + 0x6f6: 0x0008, 0x6f7: 0x0008, 0x6f8: 0x0008, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040, + 0x6fc: 0x3308, 0x6fd: 0x0008, 0x6fe: 0x3008, 0x6ff: 0x3008, + // Block 0x1c, offset 0x700 + 0x700: 0x3008, 0x701: 0x3308, 0x702: 0x3308, 0x703: 0x3308, 0x704: 0x3308, 0x705: 0x3308, + 0x706: 0x0040, 0x707: 0x3308, 0x708: 0x3308, 0x709: 0x3008, 0x70a: 0x0040, 0x70b: 0x3008, + 0x70c: 0x3008, 0x70d: 0x3b08, 0x70e: 0x0040, 0x70f: 0x0040, 0x710: 0x0008, 0x711: 0x0040, + 0x712: 0x0040, 0x713: 0x0040, 0x714: 0x0040, 0x715: 0x0040, 0x716: 0x0040, 0x717: 0x0040, + 0x718: 0x0040, 0x719: 0x0040, 0x71a: 0x0040, 0x71b: 0x0040, 0x71c: 0x0040, 0x71d: 0x0040, + 0x71e: 0x0040, 0x71f: 0x0040, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x3308, 0x723: 0x3308, + 0x724: 0x0040, 0x725: 0x0040, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0008, + 0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008, + 0x730: 0x0018, 0x731: 0x0018, 0x732: 0x0040, 0x733: 0x0040, 0x734: 0x0040, 0x735: 0x0040, + 0x736: 0x0040, 0x737: 0x0040, 0x738: 0x0040, 0x739: 0x0008, 0x73a: 0x3308, 0x73b: 0x3308, + 0x73c: 0x3308, 0x73d: 0x3308, 0x73e: 0x3308, 0x73f: 0x3308, + // Block 0x1d, offset 0x740 + 0x740: 0x0040, 0x741: 0x3308, 0x742: 0x3008, 0x743: 0x3008, 0x744: 0x0040, 0x745: 0x0008, + 0x746: 0x0008, 0x747: 0x0008, 0x748: 0x0008, 0x749: 0x0008, 0x74a: 0x0008, 0x74b: 0x0008, + 0x74c: 0x0008, 0x74d: 0x0040, 0x74e: 0x0040, 0x74f: 0x0008, 0x750: 0x0008, 0x751: 0x0040, + 0x752: 0x0040, 0x753: 0x0008, 0x754: 0x0008, 0x755: 0x0008, 0x756: 0x0008, 0x757: 0x0008, + 0x758: 0x0008, 0x759: 0x0008, 0x75a: 0x0008, 0x75b: 0x0008, 0x75c: 0x0008, 0x75d: 0x0008, + 0x75e: 0x0008, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x0008, 0x763: 0x0008, + 0x764: 0x0008, 0x765: 0x0008, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0040, + 0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008, + 0x770: 0x0008, 0x771: 0x0040, 0x772: 0x0008, 0x773: 0x0008, 0x774: 0x0040, 0x775: 0x0008, + 0x776: 0x0008, 0x777: 0x0008, 0x778: 0x0008, 0x779: 0x0008, 0x77a: 0x0040, 0x77b: 0x0040, + 0x77c: 0x3308, 0x77d: 0x0008, 0x77e: 0x3008, 0x77f: 0x3308, + // Block 0x1e, offset 0x780 + 0x780: 0x3008, 0x781: 0x3308, 0x782: 0x3308, 0x783: 0x3308, 0x784: 0x3308, 0x785: 0x0040, + 0x786: 0x0040, 0x787: 0x3008, 0x788: 0x3008, 0x789: 0x0040, 0x78a: 0x0040, 0x78b: 0x3008, + 0x78c: 0x3008, 0x78d: 0x3b08, 0x78e: 0x0040, 0x78f: 0x0040, 0x790: 0x0040, 0x791: 0x0040, + 0x792: 0x0040, 0x793: 0x0040, 0x794: 0x0040, 0x795: 0x0040, 0x796: 0x3308, 0x797: 0x3008, + 0x798: 0x0040, 0x799: 0x0040, 0x79a: 0x0040, 0x79b: 0x0040, 0x79c: 0x0881, 0x79d: 0x08b9, + 0x79e: 0x0040, 0x79f: 0x0008, 0x7a0: 0x0008, 0x7a1: 0x0008, 0x7a2: 0x3308, 0x7a3: 0x3308, + 0x7a4: 0x0040, 0x7a5: 0x0040, 0x7a6: 0x0008, 0x7a7: 0x0008, 0x7a8: 0x0008, 0x7a9: 0x0008, + 0x7aa: 0x0008, 0x7ab: 0x0008, 0x7ac: 0x0008, 0x7ad: 0x0008, 0x7ae: 0x0008, 0x7af: 0x0008, + 0x7b0: 0x0018, 0x7b1: 0x0008, 0x7b2: 0x0018, 0x7b3: 0x0018, 0x7b4: 0x0018, 0x7b5: 0x0018, + 0x7b6: 0x0018, 0x7b7: 0x0018, 0x7b8: 0x0040, 0x7b9: 0x0040, 0x7ba: 0x0040, 0x7bb: 0x0040, + 0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x0040, 0x7bf: 0x0040, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x0040, 0x7c1: 0x0040, 0x7c2: 0x3308, 0x7c3: 0x0008, 0x7c4: 0x0040, 0x7c5: 0x0008, + 0x7c6: 0x0008, 0x7c7: 0x0008, 0x7c8: 0x0008, 0x7c9: 0x0008, 0x7ca: 0x0008, 0x7cb: 0x0040, + 0x7cc: 0x0040, 0x7cd: 0x0040, 0x7ce: 0x0008, 0x7cf: 0x0008, 0x7d0: 0x0008, 0x7d1: 0x0040, + 0x7d2: 0x0008, 0x7d3: 0x0008, 0x7d4: 0x0008, 0x7d5: 0x0008, 0x7d6: 0x0040, 0x7d7: 0x0040, + 0x7d8: 0x0040, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0008, 0x7dd: 0x0040, + 0x7de: 0x0008, 0x7df: 0x0008, 0x7e0: 0x0040, 0x7e1: 0x0040, 0x7e2: 0x0040, 0x7e3: 0x0008, + 0x7e4: 0x0008, 0x7e5: 0x0040, 0x7e6: 0x0040, 0x7e7: 0x0040, 0x7e8: 0x0008, 0x7e9: 0x0008, + 0x7ea: 0x0008, 0x7eb: 0x0040, 0x7ec: 0x0040, 0x7ed: 0x0040, 0x7ee: 0x0008, 0x7ef: 0x0008, + 0x7f0: 0x0008, 0x7f1: 0x0008, 0x7f2: 0x0008, 0x7f3: 0x0008, 0x7f4: 0x0008, 0x7f5: 0x0008, + 0x7f6: 0x0008, 0x7f7: 0x0008, 0x7f8: 0x0008, 0x7f9: 0x0008, 0x7fa: 0x0040, 0x7fb: 0x0040, + 0x7fc: 0x0040, 0x7fd: 0x0040, 0x7fe: 0x3008, 0x7ff: 0x3008, + // Block 0x20, offset 0x800 + 0x800: 0x3308, 0x801: 0x3008, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x3008, 0x805: 0x0040, + 0x806: 0x3308, 0x807: 0x3308, 0x808: 0x3308, 0x809: 0x0040, 0x80a: 0x3308, 0x80b: 0x3308, + 0x80c: 0x3308, 0x80d: 0x3b08, 0x80e: 0x0040, 0x80f: 0x0040, 0x810: 0x0040, 0x811: 0x0040, + 0x812: 0x0040, 0x813: 0x0040, 0x814: 0x0040, 0x815: 0x3308, 0x816: 0x3308, 0x817: 0x0040, + 0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0040, 0x81c: 0x0040, 0x81d: 0x0040, + 0x81e: 0x0040, 0x81f: 0x0040, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x3308, 0x823: 0x3308, + 0x824: 0x0040, 0x825: 0x0040, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0008, + 0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008, + 0x830: 0x0040, 0x831: 0x0040, 0x832: 0x0040, 0x833: 0x0040, 0x834: 0x0040, 0x835: 0x0040, + 0x836: 0x0040, 0x837: 0x0040, 0x838: 0x0018, 0x839: 0x0018, 0x83a: 0x0018, 0x83b: 0x0018, + 0x83c: 0x0018, 0x83d: 0x0018, 0x83e: 0x0018, 0x83f: 0x0018, + // Block 0x21, offset 0x840 + 0x840: 0x0008, 0x841: 0x3308, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x0018, 0x845: 0x0008, + 0x846: 0x0008, 0x847: 0x0008, 0x848: 0x0008, 0x849: 0x0008, 0x84a: 0x0008, 0x84b: 0x0008, + 0x84c: 0x0008, 0x84d: 0x0040, 0x84e: 0x0008, 0x84f: 0x0008, 0x850: 0x0008, 0x851: 0x0040, + 0x852: 0x0008, 0x853: 0x0008, 0x854: 0x0008, 0x855: 0x0008, 0x856: 0x0008, 0x857: 0x0008, + 0x858: 0x0008, 0x859: 0x0008, 0x85a: 0x0008, 0x85b: 0x0008, 0x85c: 0x0008, 0x85d: 0x0008, + 0x85e: 0x0008, 0x85f: 0x0008, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x0008, 0x863: 0x0008, + 0x864: 0x0008, 0x865: 0x0008, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0040, + 0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008, + 0x870: 0x0008, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0008, 0x874: 0x0040, 0x875: 0x0008, + 0x876: 0x0008, 0x877: 0x0008, 0x878: 0x0008, 0x879: 0x0008, 0x87a: 0x0040, 0x87b: 0x0040, + 0x87c: 0x3308, 0x87d: 0x0008, 0x87e: 0x3008, 0x87f: 0x3308, + // Block 0x22, offset 0x880 + 0x880: 0x3008, 0x881: 0x3008, 0x882: 0x3008, 0x883: 0x3008, 0x884: 0x3008, 0x885: 0x0040, + 0x886: 0x3308, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008, + 0x88c: 0x3308, 0x88d: 0x3b08, 0x88e: 0x0040, 0x88f: 0x0040, 0x890: 0x0040, 0x891: 0x0040, + 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0040, 0x895: 0x3008, 0x896: 0x3008, 0x897: 0x0040, + 0x898: 0x0040, 0x899: 0x0040, 0x89a: 0x0040, 0x89b: 0x0040, 0x89c: 0x0040, 0x89d: 0x0040, + 0x89e: 0x0008, 0x89f: 0x0040, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308, + 0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008, + 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, + 0x8b0: 0x0040, 0x8b1: 0x0008, 0x8b2: 0x0008, 0x8b3: 0x0040, 0x8b4: 0x0040, 0x8b5: 0x0040, + 0x8b6: 0x0040, 0x8b7: 0x0040, 0x8b8: 0x0040, 0x8b9: 0x0040, 0x8ba: 0x0040, 0x8bb: 0x0040, + 0x8bc: 0x0040, 0x8bd: 0x0040, 0x8be: 0x0040, 0x8bf: 0x0040, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x3008, 0x8c1: 0x3308, 0x8c2: 0x3308, 0x8c3: 0x3308, 0x8c4: 0x3308, 0x8c5: 0x0040, + 0x8c6: 0x3008, 0x8c7: 0x3008, 0x8c8: 0x3008, 0x8c9: 0x0040, 0x8ca: 0x3008, 0x8cb: 0x3008, + 0x8cc: 0x3008, 0x8cd: 0x3b08, 0x8ce: 0x0008, 0x8cf: 0x0018, 0x8d0: 0x0040, 0x8d1: 0x0040, + 0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x3008, + 0x8d8: 0x0018, 0x8d9: 0x0018, 0x8da: 0x0018, 0x8db: 0x0018, 0x8dc: 0x0018, 0x8dd: 0x0018, + 0x8de: 0x0018, 0x8df: 0x0008, 0x8e0: 0x0008, 0x8e1: 0x0008, 0x8e2: 0x3308, 0x8e3: 0x3308, + 0x8e4: 0x0040, 0x8e5: 0x0040, 0x8e6: 0x0008, 0x8e7: 0x0008, 0x8e8: 0x0008, 0x8e9: 0x0008, + 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0008, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008, + 0x8f0: 0x0018, 0x8f1: 0x0018, 0x8f2: 0x0018, 0x8f3: 0x0018, 0x8f4: 0x0018, 0x8f5: 0x0018, + 0x8f6: 0x0018, 0x8f7: 0x0018, 0x8f8: 0x0018, 0x8f9: 0x0018, 0x8fa: 0x0008, 0x8fb: 0x0008, + 0x8fc: 0x0008, 0x8fd: 0x0008, 0x8fe: 0x0008, 0x8ff: 0x0008, + // Block 0x24, offset 0x900 + 0x900: 0x0040, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x0040, 0x904: 0x0008, 0x905: 0x0040, + 0x906: 0x0040, 0x907: 0x0008, 0x908: 0x0008, 0x909: 0x0040, 0x90a: 0x0008, 0x90b: 0x0040, + 0x90c: 0x0040, 0x90d: 0x0008, 0x90e: 0x0040, 0x90f: 0x0040, 0x910: 0x0040, 0x911: 0x0040, + 0x912: 0x0040, 0x913: 0x0040, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0008, + 0x918: 0x0040, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0008, 0x91d: 0x0008, + 0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0040, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008, + 0x924: 0x0040, 0x925: 0x0008, 0x926: 0x0040, 0x927: 0x0008, 0x928: 0x0040, 0x929: 0x0040, + 0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0040, 0x92d: 0x0008, 0x92e: 0x0008, 0x92f: 0x0008, + 0x930: 0x0008, 0x931: 0x3308, 0x932: 0x0008, 0x933: 0x0929, 0x934: 0x3308, 0x935: 0x3308, + 0x936: 0x3308, 0x937: 0x3308, 0x938: 0x3308, 0x939: 0x3308, 0x93a: 0x0040, 0x93b: 0x3308, + 0x93c: 0x3308, 0x93d: 0x0008, 0x93e: 0x0040, 0x93f: 0x0040, + // Block 0x25, offset 0x940 + 0x940: 0x0008, 0x941: 0x0008, 0x942: 0x0008, 0x943: 0x09d1, 0x944: 0x0008, 0x945: 0x0008, + 0x946: 0x0008, 0x947: 0x0008, 0x948: 0x0040, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, + 0x94c: 0x0008, 0x94d: 0x0a09, 0x94e: 0x0008, 0x94f: 0x0008, 0x950: 0x0008, 0x951: 0x0008, + 0x952: 0x0a41, 0x953: 0x0008, 0x954: 0x0008, 0x955: 0x0008, 0x956: 0x0008, 0x957: 0x0a79, + 0x958: 0x0008, 0x959: 0x0008, 0x95a: 0x0008, 0x95b: 0x0008, 0x95c: 0x0ab1, 0x95d: 0x0008, + 0x95e: 0x0008, 0x95f: 0x0008, 0x960: 0x0008, 0x961: 0x0008, 0x962: 0x0008, 0x963: 0x0008, + 0x964: 0x0008, 0x965: 0x0008, 0x966: 0x0008, 0x967: 0x0008, 0x968: 0x0008, 0x969: 0x0ae9, + 0x96a: 0x0008, 0x96b: 0x0008, 0x96c: 0x0008, 0x96d: 0x0040, 0x96e: 0x0040, 0x96f: 0x0040, + 0x970: 0x0040, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x0b21, 0x974: 0x3308, 0x975: 0x0b59, + 0x976: 0x0b91, 0x977: 0x0bc9, 0x978: 0x0c19, 0x979: 0x0c51, 0x97a: 0x3308, 0x97b: 0x3308, + 0x97c: 0x3308, 0x97d: 0x3308, 0x97e: 0x3308, 0x97f: 0x3008, + // Block 0x26, offset 0x980 + 0x980: 0x3308, 0x981: 0x0ca1, 0x982: 0x3308, 0x983: 0x3308, 0x984: 0x3b08, 0x985: 0x0018, + 0x986: 0x3308, 0x987: 0x3308, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008, + 0x98c: 0x0008, 0x98d: 0x3308, 0x98e: 0x3308, 0x98f: 0x3308, 0x990: 0x3308, 0x991: 0x3308, + 0x992: 0x3308, 0x993: 0x0cd9, 0x994: 0x3308, 0x995: 0x3308, 0x996: 0x3308, 0x997: 0x3308, + 0x998: 0x0040, 0x999: 0x3308, 0x99a: 0x3308, 0x99b: 0x3308, 0x99c: 0x3308, 0x99d: 0x0d11, + 0x99e: 0x3308, 0x99f: 0x3308, 0x9a0: 0x3308, 0x9a1: 0x3308, 0x9a2: 0x0d49, 0x9a3: 0x3308, + 0x9a4: 0x3308, 0x9a5: 0x3308, 0x9a6: 0x3308, 0x9a7: 0x0d81, 0x9a8: 0x3308, 0x9a9: 0x3308, + 0x9aa: 0x3308, 0x9ab: 0x3308, 0x9ac: 0x0db9, 0x9ad: 0x3308, 0x9ae: 0x3308, 0x9af: 0x3308, + 0x9b0: 0x3308, 0x9b1: 0x3308, 0x9b2: 0x3308, 0x9b3: 0x3308, 0x9b4: 0x3308, 0x9b5: 0x3308, + 0x9b6: 0x3308, 0x9b7: 0x3308, 0x9b8: 0x3308, 0x9b9: 0x0df1, 0x9ba: 0x3308, 0x9bb: 0x3308, + 0x9bc: 0x3308, 0x9bd: 0x0040, 0x9be: 0x0018, 0x9bf: 0x0018, + // Block 0x27, offset 0x9c0 + 0x9c0: 0x0008, 0x9c1: 0x0008, 0x9c2: 0x0008, 0x9c3: 0x0008, 0x9c4: 0x0008, 0x9c5: 0x0008, + 0x9c6: 0x0008, 0x9c7: 0x0008, 0x9c8: 0x0008, 0x9c9: 0x0008, 0x9ca: 0x0008, 0x9cb: 0x0008, + 0x9cc: 0x0008, 0x9cd: 0x0008, 0x9ce: 0x0008, 0x9cf: 0x0008, 0x9d0: 0x0008, 0x9d1: 0x0008, + 0x9d2: 0x0008, 0x9d3: 0x0008, 0x9d4: 0x0008, 0x9d5: 0x0008, 0x9d6: 0x0008, 0x9d7: 0x0008, + 0x9d8: 0x0008, 0x9d9: 0x0008, 0x9da: 0x0008, 0x9db: 0x0008, 0x9dc: 0x0008, 0x9dd: 0x0008, + 0x9de: 0x0008, 0x9df: 0x0008, 0x9e0: 0x0008, 0x9e1: 0x0008, 0x9e2: 0x0008, 0x9e3: 0x0008, + 0x9e4: 0x0008, 0x9e5: 0x0008, 0x9e6: 0x0008, 0x9e7: 0x0008, 0x9e8: 0x0008, 0x9e9: 0x0008, + 0x9ea: 0x0008, 0x9eb: 0x0008, 0x9ec: 0x0039, 0x9ed: 0x0ed1, 0x9ee: 0x0ee9, 0x9ef: 0x0008, + 0x9f0: 0x0ef9, 0x9f1: 0x0f09, 0x9f2: 0x0f19, 0x9f3: 0x0f31, 0x9f4: 0x0249, 0x9f5: 0x0f41, + 0x9f6: 0x0259, 0x9f7: 0x0f51, 0x9f8: 0x0359, 0x9f9: 0x0f61, 0x9fa: 0x0f71, 0x9fb: 0x0008, + 0x9fc: 0x00d9, 0x9fd: 0x0f81, 0x9fe: 0x0f99, 0x9ff: 0x0269, + // Block 0x28, offset 0xa00 + 0xa00: 0x0fa9, 0xa01: 0x0fb9, 0xa02: 0x0279, 0xa03: 0x0039, 0xa04: 0x0fc9, 0xa05: 0x0fe1, + 0xa06: 0x059d, 0xa07: 0x0ee9, 0xa08: 0x0ef9, 0xa09: 0x0f09, 0xa0a: 0x0ff9, 0xa0b: 0x1011, + 0xa0c: 0x1029, 0xa0d: 0x0f31, 0xa0e: 0x0008, 0xa0f: 0x0f51, 0xa10: 0x0f61, 0xa11: 0x1041, + 0xa12: 0x00d9, 0xa13: 0x1059, 0xa14: 0x05b5, 0xa15: 0x05b5, 0xa16: 0x0f99, 0xa17: 0x0fa9, + 0xa18: 0x0fb9, 0xa19: 0x059d, 0xa1a: 0x1071, 0xa1b: 0x1089, 0xa1c: 0x05cd, 0xa1d: 0x1099, + 0xa1e: 0x10b1, 0xa1f: 0x10c9, 0xa20: 0x10e1, 0xa21: 0x10f9, 0xa22: 0x0f41, 0xa23: 0x0269, + 0xa24: 0x0fb9, 0xa25: 0x1089, 0xa26: 0x1099, 0xa27: 0x10b1, 0xa28: 0x1111, 0xa29: 0x10e1, + 0xa2a: 0x10f9, 0xa2b: 0x0008, 0xa2c: 0x0008, 0xa2d: 0x0008, 0xa2e: 0x0008, 0xa2f: 0x0008, + 0xa30: 0x0008, 0xa31: 0x0008, 0xa32: 0x0008, 0xa33: 0x0008, 0xa34: 0x0008, 0xa35: 0x0008, + 0xa36: 0x0008, 0xa37: 0x0008, 0xa38: 0x1129, 0xa39: 0x0008, 0xa3a: 0x0008, 0xa3b: 0x0008, + 0xa3c: 0x0008, 0xa3d: 0x0008, 0xa3e: 0x0008, 0xa3f: 0x0008, + // Block 0x29, offset 0xa40 + 0xa40: 0x0008, 0xa41: 0x0008, 0xa42: 0x0008, 0xa43: 0x0008, 0xa44: 0x0008, 0xa45: 0x0008, + 0xa46: 0x0008, 0xa47: 0x0008, 0xa48: 0x0008, 0xa49: 0x0008, 0xa4a: 0x0008, 0xa4b: 0x0008, + 0xa4c: 0x0008, 0xa4d: 0x0008, 0xa4e: 0x0008, 0xa4f: 0x0008, 0xa50: 0x0008, 0xa51: 0x0008, + 0xa52: 0x0008, 0xa53: 0x0008, 0xa54: 0x0008, 0xa55: 0x0008, 0xa56: 0x0008, 0xa57: 0x0008, + 0xa58: 0x0008, 0xa59: 0x0008, 0xa5a: 0x0008, 0xa5b: 0x1141, 0xa5c: 0x1159, 0xa5d: 0x1169, + 0xa5e: 0x1181, 0xa5f: 0x1029, 0xa60: 0x1199, 0xa61: 0x11a9, 0xa62: 0x11c1, 0xa63: 0x11d9, + 0xa64: 0x11f1, 0xa65: 0x1209, 0xa66: 0x1221, 0xa67: 0x05e5, 0xa68: 0x1239, 0xa69: 0x1251, + 0xa6a: 0xe17d, 0xa6b: 0x1269, 0xa6c: 0x1281, 0xa6d: 0x1299, 0xa6e: 0x12b1, 0xa6f: 0x12c9, + 0xa70: 0x12e1, 0xa71: 0x12f9, 0xa72: 0x1311, 0xa73: 0x1329, 0xa74: 0x1341, 0xa75: 0x1359, + 0xa76: 0x1371, 0xa77: 0x1389, 0xa78: 0x05fd, 0xa79: 0x13a1, 0xa7a: 0x13b9, 0xa7b: 0x13d1, + 0xa7c: 0x13e1, 0xa7d: 0x13f9, 0xa7e: 0x1411, 0xa7f: 0x1429, + // Block 0x2a, offset 0xa80 + 0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008, + 0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008, + 0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008, + 0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0xe00d, 0xa97: 0x0008, + 0xa98: 0xe00d, 0xa99: 0x0008, 0xa9a: 0xe00d, 0xa9b: 0x0008, 0xa9c: 0xe00d, 0xa9d: 0x0008, + 0xa9e: 0xe00d, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008, + 0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008, + 0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008, + 0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008, + 0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008, + 0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008, + // Block 0x2b, offset 0xac0 + 0xac0: 0xe00d, 0xac1: 0x0008, 0xac2: 0xe00d, 0xac3: 0x0008, 0xac4: 0xe00d, 0xac5: 0x0008, + 0xac6: 0xe00d, 0xac7: 0x0008, 0xac8: 0xe00d, 0xac9: 0x0008, 0xaca: 0xe00d, 0xacb: 0x0008, + 0xacc: 0xe00d, 0xacd: 0x0008, 0xace: 0xe00d, 0xacf: 0x0008, 0xad0: 0xe00d, 0xad1: 0x0008, + 0xad2: 0xe00d, 0xad3: 0x0008, 0xad4: 0xe00d, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008, + 0xad8: 0x0008, 0xad9: 0x0008, 0xada: 0x0615, 0xadb: 0x0635, 0xadc: 0x0008, 0xadd: 0x0008, + 0xade: 0x1441, 0xadf: 0x0008, 0xae0: 0xe00d, 0xae1: 0x0008, 0xae2: 0xe00d, 0xae3: 0x0008, + 0xae4: 0xe00d, 0xae5: 0x0008, 0xae6: 0xe00d, 0xae7: 0x0008, 0xae8: 0xe00d, 0xae9: 0x0008, + 0xaea: 0xe00d, 0xaeb: 0x0008, 0xaec: 0xe00d, 0xaed: 0x0008, 0xaee: 0xe00d, 0xaef: 0x0008, + 0xaf0: 0xe00d, 0xaf1: 0x0008, 0xaf2: 0xe00d, 0xaf3: 0x0008, 0xaf4: 0xe00d, 0xaf5: 0x0008, + 0xaf6: 0xe00d, 0xaf7: 0x0008, 0xaf8: 0xe00d, 0xaf9: 0x0008, 0xafa: 0xe00d, 0xafb: 0x0008, + 0xafc: 0xe00d, 0xafd: 0x0008, 0xafe: 0xe00d, 0xaff: 0x0008, + // Block 0x2c, offset 0xb00 + 0xb00: 0x0008, 0xb01: 0x0008, 0xb02: 0x0008, 0xb03: 0x0008, 0xb04: 0x0008, 0xb05: 0x0008, + 0xb06: 0x0040, 0xb07: 0x0040, 0xb08: 0xe045, 0xb09: 0xe045, 0xb0a: 0xe045, 0xb0b: 0xe045, + 0xb0c: 0xe045, 0xb0d: 0xe045, 0xb0e: 0x0040, 0xb0f: 0x0040, 0xb10: 0x0008, 0xb11: 0x0008, + 0xb12: 0x0008, 0xb13: 0x0008, 0xb14: 0x0008, 0xb15: 0x0008, 0xb16: 0x0008, 0xb17: 0x0008, + 0xb18: 0x0040, 0xb19: 0xe045, 0xb1a: 0x0040, 0xb1b: 0xe045, 0xb1c: 0x0040, 0xb1d: 0xe045, + 0xb1e: 0x0040, 0xb1f: 0xe045, 0xb20: 0x0008, 0xb21: 0x0008, 0xb22: 0x0008, 0xb23: 0x0008, + 0xb24: 0x0008, 0xb25: 0x0008, 0xb26: 0x0008, 0xb27: 0x0008, 0xb28: 0xe045, 0xb29: 0xe045, + 0xb2a: 0xe045, 0xb2b: 0xe045, 0xb2c: 0xe045, 0xb2d: 0xe045, 0xb2e: 0xe045, 0xb2f: 0xe045, + 0xb30: 0x0008, 0xb31: 0x1459, 0xb32: 0x0008, 0xb33: 0x1471, 0xb34: 0x0008, 0xb35: 0x1489, + 0xb36: 0x0008, 0xb37: 0x14a1, 0xb38: 0x0008, 0xb39: 0x14b9, 0xb3a: 0x0008, 0xb3b: 0x14d1, + 0xb3c: 0x0008, 0xb3d: 0x14e9, 0xb3e: 0x0040, 0xb3f: 0x0040, + // Block 0x2d, offset 0xb40 + 0xb40: 0x1501, 0xb41: 0x1531, 0xb42: 0x1561, 0xb43: 0x1591, 0xb44: 0x15c1, 0xb45: 0x15f1, + 0xb46: 0x1621, 0xb47: 0x1651, 0xb48: 0x1501, 0xb49: 0x1531, 0xb4a: 0x1561, 0xb4b: 0x1591, + 0xb4c: 0x15c1, 0xb4d: 0x15f1, 0xb4e: 0x1621, 0xb4f: 0x1651, 0xb50: 0x1681, 0xb51: 0x16b1, + 0xb52: 0x16e1, 0xb53: 0x1711, 0xb54: 0x1741, 0xb55: 0x1771, 0xb56: 0x17a1, 0xb57: 0x17d1, + 0xb58: 0x1681, 0xb59: 0x16b1, 0xb5a: 0x16e1, 0xb5b: 0x1711, 0xb5c: 0x1741, 0xb5d: 0x1771, + 0xb5e: 0x17a1, 0xb5f: 0x17d1, 0xb60: 0x1801, 0xb61: 0x1831, 0xb62: 0x1861, 0xb63: 0x1891, + 0xb64: 0x18c1, 0xb65: 0x18f1, 0xb66: 0x1921, 0xb67: 0x1951, 0xb68: 0x1801, 0xb69: 0x1831, + 0xb6a: 0x1861, 0xb6b: 0x1891, 0xb6c: 0x18c1, 0xb6d: 0x18f1, 0xb6e: 0x1921, 0xb6f: 0x1951, + 0xb70: 0x0008, 0xb71: 0x0008, 0xb72: 0x1981, 0xb73: 0x19b1, 0xb74: 0x19d9, 0xb75: 0x0040, + 0xb76: 0x0008, 0xb77: 0x1a01, 0xb78: 0xe045, 0xb79: 0xe045, 0xb7a: 0x064d, 0xb7b: 0x1459, + 0xb7c: 0x19b1, 0xb7d: 0x0666, 0xb7e: 0x1a31, 0xb7f: 0x0686, + // Block 0x2e, offset 0xb80 + 0xb80: 0x06a6, 0xb81: 0x1a4a, 0xb82: 0x1a79, 0xb83: 0x1aa9, 0xb84: 0x1ad1, 0xb85: 0x0040, + 0xb86: 0x0008, 0xb87: 0x1af9, 0xb88: 0x06c5, 0xb89: 0x1471, 0xb8a: 0x06dd, 0xb8b: 0x1489, + 0xb8c: 0x1aa9, 0xb8d: 0x1b2a, 0xb8e: 0x1b5a, 0xb8f: 0x1b8a, 0xb90: 0x0008, 0xb91: 0x0008, + 0xb92: 0x0008, 0xb93: 0x1bb9, 0xb94: 0x0040, 0xb95: 0x0040, 0xb96: 0x0008, 0xb97: 0x0008, + 0xb98: 0xe045, 0xb99: 0xe045, 0xb9a: 0x06f5, 0xb9b: 0x14a1, 0xb9c: 0x0040, 0xb9d: 0x1bd2, + 0xb9e: 0x1c02, 0xb9f: 0x1c32, 0xba0: 0x0008, 0xba1: 0x0008, 0xba2: 0x0008, 0xba3: 0x1c61, + 0xba4: 0x0008, 0xba5: 0x0008, 0xba6: 0x0008, 0xba7: 0x0008, 0xba8: 0xe045, 0xba9: 0xe045, + 0xbaa: 0x070d, 0xbab: 0x14d1, 0xbac: 0xe04d, 0xbad: 0x1c7a, 0xbae: 0x03d2, 0xbaf: 0x1caa, + 0xbb0: 0x0040, 0xbb1: 0x0040, 0xbb2: 0x1cb9, 0xbb3: 0x1ce9, 0xbb4: 0x1d11, 0xbb5: 0x0040, + 0xbb6: 0x0008, 0xbb7: 0x1d39, 0xbb8: 0x0725, 0xbb9: 0x14b9, 0xbba: 0x0515, 0xbbb: 0x14e9, + 0xbbc: 0x1ce9, 0xbbd: 0x073e, 0xbbe: 0x075e, 0xbbf: 0x0040, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x000a, 0xbc1: 0x000a, 0xbc2: 0x000a, 0xbc3: 0x000a, 0xbc4: 0x000a, 0xbc5: 0x000a, + 0xbc6: 0x000a, 0xbc7: 0x000a, 0xbc8: 0x000a, 0xbc9: 0x000a, 0xbca: 0x000a, 0xbcb: 0x03c0, + 0xbcc: 0x0003, 0xbcd: 0x0003, 0xbce: 0x0340, 0xbcf: 0x0b40, 0xbd0: 0x0018, 0xbd1: 0xe00d, + 0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x077e, + 0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018, + 0xbde: 0x0018, 0xbdf: 0x0018, 0xbe0: 0x0018, 0xbe1: 0x0018, 0xbe2: 0x0018, 0xbe3: 0x0018, + 0xbe4: 0x0040, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0018, 0xbe8: 0x0040, 0xbe9: 0x0040, + 0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x000a, + 0xbf0: 0x0018, 0xbf1: 0x0018, 0xbf2: 0x0018, 0xbf3: 0x1d69, 0xbf4: 0x1da1, 0xbf5: 0x0018, + 0xbf6: 0x1df1, 0xbf7: 0x1e29, 0xbf8: 0x0018, 0xbf9: 0x0018, 0xbfa: 0x0018, 0xbfb: 0x0018, + 0xbfc: 0x1e7a, 0xbfd: 0x0018, 0xbfe: 0x079e, 0xbff: 0x0018, + // Block 0x30, offset 0xc00 + 0xc00: 0x0018, 0xc01: 0x0018, 0xc02: 0x0018, 0xc03: 0x0018, 0xc04: 0x0018, 0xc05: 0x0018, + 0xc06: 0x0018, 0xc07: 0x1e92, 0xc08: 0x1eaa, 0xc09: 0x1ec2, 0xc0a: 0x0018, 0xc0b: 0x0018, + 0xc0c: 0x0018, 0xc0d: 0x0018, 0xc0e: 0x0018, 0xc0f: 0x0018, 0xc10: 0x0018, 0xc11: 0x0018, + 0xc12: 0x0018, 0xc13: 0x0018, 0xc14: 0x0018, 0xc15: 0x0018, 0xc16: 0x0018, 0xc17: 0x1ed9, + 0xc18: 0x0018, 0xc19: 0x0018, 0xc1a: 0x0018, 0xc1b: 0x0018, 0xc1c: 0x0018, 0xc1d: 0x0018, + 0xc1e: 0x0018, 0xc1f: 0x000a, 0xc20: 0x03c0, 0xc21: 0x0340, 0xc22: 0x0340, 0xc23: 0x0340, + 0xc24: 0x03c0, 0xc25: 0x0040, 0xc26: 0x0040, 0xc27: 0x0040, 0xc28: 0x0040, 0xc29: 0x0040, + 0xc2a: 0x0340, 0xc2b: 0x0340, 0xc2c: 0x0340, 0xc2d: 0x0340, 0xc2e: 0x0340, 0xc2f: 0x0340, + 0xc30: 0x1f41, 0xc31: 0x0f41, 0xc32: 0x0040, 0xc33: 0x0040, 0xc34: 0x1f51, 0xc35: 0x1f61, + 0xc36: 0x1f71, 0xc37: 0x1f81, 0xc38: 0x1f91, 0xc39: 0x1fa1, 0xc3a: 0x1fb2, 0xc3b: 0x07bd, + 0xc3c: 0x1fc2, 0xc3d: 0x1fd2, 0xc3e: 0x1fe2, 0xc3f: 0x0f71, + // Block 0x31, offset 0xc40 + 0xc40: 0x1f41, 0xc41: 0x00c9, 0xc42: 0x0069, 0xc43: 0x0079, 0xc44: 0x1f51, 0xc45: 0x1f61, + 0xc46: 0x1f71, 0xc47: 0x1f81, 0xc48: 0x1f91, 0xc49: 0x1fa1, 0xc4a: 0x1fb2, 0xc4b: 0x07d5, + 0xc4c: 0x1fc2, 0xc4d: 0x1fd2, 0xc4e: 0x1fe2, 0xc4f: 0x0040, 0xc50: 0x0039, 0xc51: 0x0f09, + 0xc52: 0x00d9, 0xc53: 0x0369, 0xc54: 0x0ff9, 0xc55: 0x0249, 0xc56: 0x0f51, 0xc57: 0x0359, + 0xc58: 0x0f61, 0xc59: 0x0f71, 0xc5a: 0x0f99, 0xc5b: 0x01d9, 0xc5c: 0x0fa9, 0xc5d: 0x0040, + 0xc5e: 0x0040, 0xc5f: 0x0040, 0xc60: 0x0018, 0xc61: 0x0018, 0xc62: 0x0018, 0xc63: 0x0018, + 0xc64: 0x0018, 0xc65: 0x0018, 0xc66: 0x0018, 0xc67: 0x0018, 0xc68: 0x1ff1, 0xc69: 0x0018, + 0xc6a: 0x0018, 0xc6b: 0x0018, 0xc6c: 0x0018, 0xc6d: 0x0018, 0xc6e: 0x0018, 0xc6f: 0x0018, + 0xc70: 0x0018, 0xc71: 0x0018, 0xc72: 0x0018, 0xc73: 0x0018, 0xc74: 0x0018, 0xc75: 0x0018, + 0xc76: 0x0018, 0xc77: 0x0018, 0xc78: 0x0018, 0xc79: 0x0018, 0xc7a: 0x0018, 0xc7b: 0x0018, + 0xc7c: 0x0018, 0xc7d: 0x0018, 0xc7e: 0x0018, 0xc7f: 0x0018, + // Block 0x32, offset 0xc80 + 0xc80: 0x07ee, 0xc81: 0x080e, 0xc82: 0x1159, 0xc83: 0x082d, 0xc84: 0x0018, 0xc85: 0x084e, + 0xc86: 0x086e, 0xc87: 0x1011, 0xc88: 0x0018, 0xc89: 0x088d, 0xc8a: 0x0f31, 0xc8b: 0x0249, + 0xc8c: 0x0249, 0xc8d: 0x0249, 0xc8e: 0x0249, 0xc8f: 0x2009, 0xc90: 0x0f41, 0xc91: 0x0f41, + 0xc92: 0x0359, 0xc93: 0x0359, 0xc94: 0x0018, 0xc95: 0x0f71, 0xc96: 0x2021, 0xc97: 0x0018, + 0xc98: 0x0018, 0xc99: 0x0f99, 0xc9a: 0x2039, 0xc9b: 0x0269, 0xc9c: 0x0269, 0xc9d: 0x0269, + 0xc9e: 0x0018, 0xc9f: 0x0018, 0xca0: 0x2049, 0xca1: 0x08ad, 0xca2: 0x2061, 0xca3: 0x0018, + 0xca4: 0x13d1, 0xca5: 0x0018, 0xca6: 0x2079, 0xca7: 0x0018, 0xca8: 0x13d1, 0xca9: 0x0018, + 0xcaa: 0x0f51, 0xcab: 0x2091, 0xcac: 0x0ee9, 0xcad: 0x1159, 0xcae: 0x0018, 0xcaf: 0x0f09, + 0xcb0: 0x0f09, 0xcb1: 0x1199, 0xcb2: 0x0040, 0xcb3: 0x0f61, 0xcb4: 0x00d9, 0xcb5: 0x20a9, + 0xcb6: 0x20c1, 0xcb7: 0x20d9, 0xcb8: 0x20f1, 0xcb9: 0x0f41, 0xcba: 0x0018, 0xcbb: 0x08cd, + 0xcbc: 0x2109, 0xcbd: 0x10b1, 0xcbe: 0x10b1, 0xcbf: 0x2109, + // Block 0x33, offset 0xcc0 + 0xcc0: 0x08ed, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0ef9, + 0xcc6: 0x0ef9, 0xcc7: 0x0f09, 0xcc8: 0x0f41, 0xcc9: 0x0259, 0xcca: 0x0018, 0xccb: 0x0018, + 0xccc: 0x0018, 0xccd: 0x0018, 0xcce: 0x0008, 0xccf: 0x0018, 0xcd0: 0x2121, 0xcd1: 0x2151, + 0xcd2: 0x2181, 0xcd3: 0x21b9, 0xcd4: 0x21e9, 0xcd5: 0x2219, 0xcd6: 0x2249, 0xcd7: 0x2279, + 0xcd8: 0x22a9, 0xcd9: 0x22d9, 0xcda: 0x2309, 0xcdb: 0x2339, 0xcdc: 0x2369, 0xcdd: 0x2399, + 0xcde: 0x23c9, 0xcdf: 0x23f9, 0xce0: 0x0f41, 0xce1: 0x2421, 0xce2: 0x0905, 0xce3: 0x2439, + 0xce4: 0x1089, 0xce5: 0x2451, 0xce6: 0x0925, 0xce7: 0x2469, 0xce8: 0x2491, 0xce9: 0x0369, + 0xcea: 0x24a9, 0xceb: 0x0945, 0xcec: 0x0359, 0xced: 0x1159, 0xcee: 0x0ef9, 0xcef: 0x0f61, + 0xcf0: 0x0f41, 0xcf1: 0x2421, 0xcf2: 0x0965, 0xcf3: 0x2439, 0xcf4: 0x1089, 0xcf5: 0x2451, + 0xcf6: 0x0985, 0xcf7: 0x2469, 0xcf8: 0x2491, 0xcf9: 0x0369, 0xcfa: 0x24a9, 0xcfb: 0x09a5, + 0xcfc: 0x0359, 0xcfd: 0x1159, 0xcfe: 0x0ef9, 0xcff: 0x0f61, + // Block 0x34, offset 0xd00 + 0xd00: 0x0018, 0xd01: 0x0018, 0xd02: 0x0018, 0xd03: 0x0018, 0xd04: 0x0018, 0xd05: 0x0018, + 0xd06: 0x0018, 0xd07: 0x0018, 0xd08: 0x0018, 0xd09: 0x0018, 0xd0a: 0x0018, 0xd0b: 0x0040, + 0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040, + 0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040, + 0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0040, 0xd1d: 0x0040, + 0xd1e: 0x0040, 0xd1f: 0x0040, 0xd20: 0x00c9, 0xd21: 0x0069, 0xd22: 0x0079, 0xd23: 0x1f51, + 0xd24: 0x1f61, 0xd25: 0x1f71, 0xd26: 0x1f81, 0xd27: 0x1f91, 0xd28: 0x1fa1, 0xd29: 0x2601, + 0xd2a: 0x2619, 0xd2b: 0x2631, 0xd2c: 0x2649, 0xd2d: 0x2661, 0xd2e: 0x2679, 0xd2f: 0x2691, + 0xd30: 0x26a9, 0xd31: 0x26c1, 0xd32: 0x26d9, 0xd33: 0x26f1, 0xd34: 0x0a06, 0xd35: 0x0a26, + 0xd36: 0x0a46, 0xd37: 0x0a66, 0xd38: 0x0a86, 0xd39: 0x0aa6, 0xd3a: 0x0ac6, 0xd3b: 0x0ae6, + 0xd3c: 0x0b06, 0xd3d: 0x270a, 0xd3e: 0x2732, 0xd3f: 0x275a, + // Block 0x35, offset 0xd40 + 0xd40: 0x2782, 0xd41: 0x27aa, 0xd42: 0x27d2, 0xd43: 0x27fa, 0xd44: 0x2822, 0xd45: 0x284a, + 0xd46: 0x2872, 0xd47: 0x289a, 0xd48: 0x0040, 0xd49: 0x0040, 0xd4a: 0x0040, 0xd4b: 0x0040, + 0xd4c: 0x0040, 0xd4d: 0x0040, 0xd4e: 0x0040, 0xd4f: 0x0040, 0xd50: 0x0040, 0xd51: 0x0040, + 0xd52: 0x0040, 0xd53: 0x0040, 0xd54: 0x0040, 0xd55: 0x0040, 0xd56: 0x0040, 0xd57: 0x0040, + 0xd58: 0x0040, 0xd59: 0x0040, 0xd5a: 0x0040, 0xd5b: 0x0040, 0xd5c: 0x0b26, 0xd5d: 0x0b46, + 0xd5e: 0x0b66, 0xd5f: 0x0b86, 0xd60: 0x0ba6, 0xd61: 0x0bc6, 0xd62: 0x0be6, 0xd63: 0x0c06, + 0xd64: 0x0c26, 0xd65: 0x0c46, 0xd66: 0x0c66, 0xd67: 0x0c86, 0xd68: 0x0ca6, 0xd69: 0x0cc6, + 0xd6a: 0x0ce6, 0xd6b: 0x0d06, 0xd6c: 0x0d26, 0xd6d: 0x0d46, 0xd6e: 0x0d66, 0xd6f: 0x0d86, + 0xd70: 0x0da6, 0xd71: 0x0dc6, 0xd72: 0x0de6, 0xd73: 0x0e06, 0xd74: 0x0e26, 0xd75: 0x0e46, + 0xd76: 0x0039, 0xd77: 0x0ee9, 0xd78: 0x1159, 0xd79: 0x0ef9, 0xd7a: 0x0f09, 0xd7b: 0x1199, + 0xd7c: 0x0f31, 0xd7d: 0x0249, 0xd7e: 0x0f41, 0xd7f: 0x0259, + // Block 0x36, offset 0xd80 + 0xd80: 0x0f51, 0xd81: 0x0359, 0xd82: 0x0f61, 0xd83: 0x0f71, 0xd84: 0x00d9, 0xd85: 0x0f99, + 0xd86: 0x2039, 0xd87: 0x0269, 0xd88: 0x01d9, 0xd89: 0x0fa9, 0xd8a: 0x0fb9, 0xd8b: 0x1089, + 0xd8c: 0x0279, 0xd8d: 0x0369, 0xd8e: 0x0289, 0xd8f: 0x13d1, 0xd90: 0x0039, 0xd91: 0x0ee9, + 0xd92: 0x1159, 0xd93: 0x0ef9, 0xd94: 0x0f09, 0xd95: 0x1199, 0xd96: 0x0f31, 0xd97: 0x0249, + 0xd98: 0x0f41, 0xd99: 0x0259, 0xd9a: 0x0f51, 0xd9b: 0x0359, 0xd9c: 0x0f61, 0xd9d: 0x0f71, + 0xd9e: 0x00d9, 0xd9f: 0x0f99, 0xda0: 0x2039, 0xda1: 0x0269, 0xda2: 0x01d9, 0xda3: 0x0fa9, + 0xda4: 0x0fb9, 0xda5: 0x1089, 0xda6: 0x0279, 0xda7: 0x0369, 0xda8: 0x0289, 0xda9: 0x13d1, + 0xdaa: 0x1f41, 0xdab: 0x0018, 0xdac: 0x0018, 0xdad: 0x0018, 0xdae: 0x0018, 0xdaf: 0x0018, + 0xdb0: 0x0018, 0xdb1: 0x0018, 0xdb2: 0x0018, 0xdb3: 0x0018, 0xdb4: 0x0018, 0xdb5: 0x0018, + 0xdb6: 0x0018, 0xdb7: 0x0018, 0xdb8: 0x0018, 0xdb9: 0x0018, 0xdba: 0x0018, 0xdbb: 0x0018, + 0xdbc: 0x0018, 0xdbd: 0x0018, 0xdbe: 0x0018, 0xdbf: 0x0018, + // Block 0x37, offset 0xdc0 + 0xdc0: 0x0008, 0xdc1: 0x0008, 0xdc2: 0x0008, 0xdc3: 0x0008, 0xdc4: 0x0008, 0xdc5: 0x0008, + 0xdc6: 0x0008, 0xdc7: 0x0008, 0xdc8: 0x0008, 0xdc9: 0x0008, 0xdca: 0x0008, 0xdcb: 0x0008, + 0xdcc: 0x0008, 0xdcd: 0x0008, 0xdce: 0x0008, 0xdcf: 0x0008, 0xdd0: 0x0008, 0xdd1: 0x0008, + 0xdd2: 0x0008, 0xdd3: 0x0008, 0xdd4: 0x0008, 0xdd5: 0x0008, 0xdd6: 0x0008, 0xdd7: 0x0008, + 0xdd8: 0x0008, 0xdd9: 0x0008, 0xdda: 0x0008, 0xddb: 0x0008, 0xddc: 0x0008, 0xddd: 0x0008, + 0xdde: 0x0008, 0xddf: 0x0040, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0x2971, 0xde3: 0x0ebd, + 0xde4: 0x2989, 0xde5: 0x0008, 0xde6: 0x0008, 0xde7: 0xe07d, 0xde8: 0x0008, 0xde9: 0xe01d, + 0xdea: 0x0008, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0x0fe1, 0xdee: 0x1281, 0xdef: 0x0fc9, + 0xdf0: 0x1141, 0xdf1: 0x0008, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0008, 0xdf5: 0xe01d, + 0xdf6: 0x0008, 0xdf7: 0x0008, 0xdf8: 0x0008, 0xdf9: 0x0008, 0xdfa: 0x0008, 0xdfb: 0x0008, + 0xdfc: 0x0259, 0xdfd: 0x1089, 0xdfe: 0x29a1, 0xdff: 0x29b9, + // Block 0x38, offset 0xe00 + 0xe00: 0xe00d, 0xe01: 0x0008, 0xe02: 0xe00d, 0xe03: 0x0008, 0xe04: 0xe00d, 0xe05: 0x0008, + 0xe06: 0xe00d, 0xe07: 0x0008, 0xe08: 0xe00d, 0xe09: 0x0008, 0xe0a: 0xe00d, 0xe0b: 0x0008, + 0xe0c: 0xe00d, 0xe0d: 0x0008, 0xe0e: 0xe00d, 0xe0f: 0x0008, 0xe10: 0xe00d, 0xe11: 0x0008, + 0xe12: 0xe00d, 0xe13: 0x0008, 0xe14: 0xe00d, 0xe15: 0x0008, 0xe16: 0xe00d, 0xe17: 0x0008, + 0xe18: 0xe00d, 0xe19: 0x0008, 0xe1a: 0xe00d, 0xe1b: 0x0008, 0xe1c: 0xe00d, 0xe1d: 0x0008, + 0xe1e: 0xe00d, 0xe1f: 0x0008, 0xe20: 0xe00d, 0xe21: 0x0008, 0xe22: 0xe00d, 0xe23: 0x0008, + 0xe24: 0x0008, 0xe25: 0x0018, 0xe26: 0x0018, 0xe27: 0x0018, 0xe28: 0x0018, 0xe29: 0x0018, + 0xe2a: 0x0018, 0xe2b: 0xe03d, 0xe2c: 0x0008, 0xe2d: 0xe01d, 0xe2e: 0x0008, 0xe2f: 0x3308, + 0xe30: 0x3308, 0xe31: 0x3308, 0xe32: 0xe00d, 0xe33: 0x0008, 0xe34: 0x0040, 0xe35: 0x0040, + 0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0018, 0xe3a: 0x0018, 0xe3b: 0x0018, + 0xe3c: 0x0018, 0xe3d: 0x0018, 0xe3e: 0x0018, 0xe3f: 0x0018, + // Block 0x39, offset 0xe40 + 0xe40: 0x26fd, 0xe41: 0x271d, 0xe42: 0x273d, 0xe43: 0x275d, 0xe44: 0x277d, 0xe45: 0x279d, + 0xe46: 0x27bd, 0xe47: 0x27dd, 0xe48: 0x27fd, 0xe49: 0x281d, 0xe4a: 0x283d, 0xe4b: 0x285d, + 0xe4c: 0x287d, 0xe4d: 0x289d, 0xe4e: 0x28bd, 0xe4f: 0x28dd, 0xe50: 0x28fd, 0xe51: 0x291d, + 0xe52: 0x293d, 0xe53: 0x295d, 0xe54: 0x297d, 0xe55: 0x299d, 0xe56: 0x0040, 0xe57: 0x0040, + 0xe58: 0x0040, 0xe59: 0x0040, 0xe5a: 0x0040, 0xe5b: 0x0040, 0xe5c: 0x0040, 0xe5d: 0x0040, + 0xe5e: 0x0040, 0xe5f: 0x0040, 0xe60: 0x0040, 0xe61: 0x0040, 0xe62: 0x0040, 0xe63: 0x0040, + 0xe64: 0x0040, 0xe65: 0x0040, 0xe66: 0x0040, 0xe67: 0x0040, 0xe68: 0x0040, 0xe69: 0x0040, + 0xe6a: 0x0040, 0xe6b: 0x0040, 0xe6c: 0x0040, 0xe6d: 0x0040, 0xe6e: 0x0040, 0xe6f: 0x0040, + 0xe70: 0x0040, 0xe71: 0x0040, 0xe72: 0x0040, 0xe73: 0x0040, 0xe74: 0x0040, 0xe75: 0x0040, + 0xe76: 0x0040, 0xe77: 0x0040, 0xe78: 0x0040, 0xe79: 0x0040, 0xe7a: 0x0040, 0xe7b: 0x0040, + 0xe7c: 0x0040, 0xe7d: 0x0040, 0xe7e: 0x0040, 0xe7f: 0x0040, + // Block 0x3a, offset 0xe80 + 0xe80: 0x000a, 0xe81: 0x0018, 0xe82: 0x29d1, 0xe83: 0x0018, 0xe84: 0x0018, 0xe85: 0x0008, + 0xe86: 0x0008, 0xe87: 0x0008, 0xe88: 0x0018, 0xe89: 0x0018, 0xe8a: 0x0018, 0xe8b: 0x0018, + 0xe8c: 0x0018, 0xe8d: 0x0018, 0xe8e: 0x0018, 0xe8f: 0x0018, 0xe90: 0x0018, 0xe91: 0x0018, + 0xe92: 0x0018, 0xe93: 0x0018, 0xe94: 0x0018, 0xe95: 0x0018, 0xe96: 0x0018, 0xe97: 0x0018, + 0xe98: 0x0018, 0xe99: 0x0018, 0xe9a: 0x0018, 0xe9b: 0x0018, 0xe9c: 0x0018, 0xe9d: 0x0018, + 0xe9e: 0x0018, 0xe9f: 0x0018, 0xea0: 0x0018, 0xea1: 0x0018, 0xea2: 0x0018, 0xea3: 0x0018, + 0xea4: 0x0018, 0xea5: 0x0018, 0xea6: 0x0018, 0xea7: 0x0018, 0xea8: 0x0018, 0xea9: 0x0018, + 0xeaa: 0x3308, 0xeab: 0x3308, 0xeac: 0x3308, 0xead: 0x3308, 0xeae: 0x3018, 0xeaf: 0x3018, + 0xeb0: 0x0018, 0xeb1: 0x0018, 0xeb2: 0x0018, 0xeb3: 0x0018, 0xeb4: 0x0018, 0xeb5: 0x0018, + 0xeb6: 0xe125, 0xeb7: 0x0018, 0xeb8: 0x29bd, 0xeb9: 0x29dd, 0xeba: 0x29fd, 0xebb: 0x0018, + 0xebc: 0x0008, 0xebd: 0x0018, 0xebe: 0x0018, 0xebf: 0x0018, + // Block 0x3b, offset 0xec0 + 0xec0: 0x2b3d, 0xec1: 0x2b5d, 0xec2: 0x2b7d, 0xec3: 0x2b9d, 0xec4: 0x2bbd, 0xec5: 0x2bdd, + 0xec6: 0x2bdd, 0xec7: 0x2bdd, 0xec8: 0x2bfd, 0xec9: 0x2bfd, 0xeca: 0x2bfd, 0xecb: 0x2bfd, + 0xecc: 0x2c1d, 0xecd: 0x2c1d, 0xece: 0x2c1d, 0xecf: 0x2c3d, 0xed0: 0x2c5d, 0xed1: 0x2c5d, + 0xed2: 0x2a7d, 0xed3: 0x2a7d, 0xed4: 0x2c5d, 0xed5: 0x2c5d, 0xed6: 0x2c7d, 0xed7: 0x2c7d, + 0xed8: 0x2c5d, 0xed9: 0x2c5d, 0xeda: 0x2a7d, 0xedb: 0x2a7d, 0xedc: 0x2c5d, 0xedd: 0x2c5d, + 0xede: 0x2c3d, 0xedf: 0x2c3d, 0xee0: 0x2c9d, 0xee1: 0x2c9d, 0xee2: 0x2cbd, 0xee3: 0x2cbd, + 0xee4: 0x0040, 0xee5: 0x2cdd, 0xee6: 0x2cfd, 0xee7: 0x2d1d, 0xee8: 0x2d1d, 0xee9: 0x2d3d, + 0xeea: 0x2d5d, 0xeeb: 0x2d7d, 0xeec: 0x2d9d, 0xeed: 0x2dbd, 0xeee: 0x2ddd, 0xeef: 0x2dfd, + 0xef0: 0x2e1d, 0xef1: 0x2e3d, 0xef2: 0x2e3d, 0xef3: 0x2e5d, 0xef4: 0x2e7d, 0xef5: 0x2e7d, + 0xef6: 0x2e9d, 0xef7: 0x2ebd, 0xef8: 0x2e5d, 0xef9: 0x2edd, 0xefa: 0x2efd, 0xefb: 0x2edd, + 0xefc: 0x2e5d, 0xefd: 0x2f1d, 0xefe: 0x2f3d, 0xeff: 0x2f5d, + // Block 0x3c, offset 0xf00 + 0xf00: 0x2f7d, 0xf01: 0x2f9d, 0xf02: 0x2cfd, 0xf03: 0x2cdd, 0xf04: 0x2fbd, 0xf05: 0x2fdd, + 0xf06: 0x2ffd, 0xf07: 0x301d, 0xf08: 0x303d, 0xf09: 0x305d, 0xf0a: 0x307d, 0xf0b: 0x309d, + 0xf0c: 0x30bd, 0xf0d: 0x30dd, 0xf0e: 0x30fd, 0xf0f: 0x0040, 0xf10: 0x0018, 0xf11: 0x0018, + 0xf12: 0x311d, 0xf13: 0x313d, 0xf14: 0x315d, 0xf15: 0x317d, 0xf16: 0x319d, 0xf17: 0x31bd, + 0xf18: 0x31dd, 0xf19: 0x31fd, 0xf1a: 0x321d, 0xf1b: 0x323d, 0xf1c: 0x315d, 0xf1d: 0x325d, + 0xf1e: 0x327d, 0xf1f: 0x329d, 0xf20: 0x0008, 0xf21: 0x0008, 0xf22: 0x0008, 0xf23: 0x0008, + 0xf24: 0x0008, 0xf25: 0x0008, 0xf26: 0x0008, 0xf27: 0x0008, 0xf28: 0x0008, 0xf29: 0x0008, + 0xf2a: 0x0008, 0xf2b: 0x0008, 0xf2c: 0x0008, 0xf2d: 0x0008, 0xf2e: 0x0008, 0xf2f: 0x0008, + 0xf30: 0x0008, 0xf31: 0x0008, 0xf32: 0x0008, 0xf33: 0x0008, 0xf34: 0x0008, 0xf35: 0x0008, + 0xf36: 0x0008, 0xf37: 0x0008, 0xf38: 0x0008, 0xf39: 0x0008, 0xf3a: 0x0008, 0xf3b: 0x0040, + 0xf3c: 0x0040, 0xf3d: 0x0040, 0xf3e: 0x0040, 0xf3f: 0x0040, + // Block 0x3d, offset 0xf40 + 0xf40: 0x36a2, 0xf41: 0x36d2, 0xf42: 0x3702, 0xf43: 0x3732, 0xf44: 0x32bd, 0xf45: 0x32dd, + 0xf46: 0x32fd, 0xf47: 0x331d, 0xf48: 0x0018, 0xf49: 0x0018, 0xf4a: 0x0018, 0xf4b: 0x0018, + 0xf4c: 0x0018, 0xf4d: 0x0018, 0xf4e: 0x0018, 0xf4f: 0x0018, 0xf50: 0x333d, 0xf51: 0x3761, + 0xf52: 0x3779, 0xf53: 0x3791, 0xf54: 0x37a9, 0xf55: 0x37c1, 0xf56: 0x37d9, 0xf57: 0x37f1, + 0xf58: 0x3809, 0xf59: 0x3821, 0xf5a: 0x3839, 0xf5b: 0x3851, 0xf5c: 0x3869, 0xf5d: 0x3881, + 0xf5e: 0x3899, 0xf5f: 0x38b1, 0xf60: 0x335d, 0xf61: 0x337d, 0xf62: 0x339d, 0xf63: 0x33bd, + 0xf64: 0x33dd, 0xf65: 0x33dd, 0xf66: 0x33fd, 0xf67: 0x341d, 0xf68: 0x343d, 0xf69: 0x345d, + 0xf6a: 0x347d, 0xf6b: 0x349d, 0xf6c: 0x34bd, 0xf6d: 0x34dd, 0xf6e: 0x34fd, 0xf6f: 0x351d, + 0xf70: 0x353d, 0xf71: 0x355d, 0xf72: 0x357d, 0xf73: 0x359d, 0xf74: 0x35bd, 0xf75: 0x35dd, + 0xf76: 0x35fd, 0xf77: 0x361d, 0xf78: 0x363d, 0xf79: 0x365d, 0xf7a: 0x367d, 0xf7b: 0x369d, + 0xf7c: 0x38c9, 0xf7d: 0x3901, 0xf7e: 0x36bd, 0xf7f: 0x0018, + // Block 0x3e, offset 0xf80 + 0xf80: 0x36dd, 0xf81: 0x36fd, 0xf82: 0x371d, 0xf83: 0x373d, 0xf84: 0x375d, 0xf85: 0x377d, + 0xf86: 0x379d, 0xf87: 0x37bd, 0xf88: 0x37dd, 0xf89: 0x37fd, 0xf8a: 0x381d, 0xf8b: 0x383d, + 0xf8c: 0x385d, 0xf8d: 0x387d, 0xf8e: 0x389d, 0xf8f: 0x38bd, 0xf90: 0x38dd, 0xf91: 0x38fd, + 0xf92: 0x391d, 0xf93: 0x393d, 0xf94: 0x395d, 0xf95: 0x397d, 0xf96: 0x399d, 0xf97: 0x39bd, + 0xf98: 0x39dd, 0xf99: 0x39fd, 0xf9a: 0x3a1d, 0xf9b: 0x3a3d, 0xf9c: 0x3a5d, 0xf9d: 0x3a7d, + 0xf9e: 0x3a9d, 0xf9f: 0x3abd, 0xfa0: 0x3add, 0xfa1: 0x3afd, 0xfa2: 0x3b1d, 0xfa3: 0x3b3d, + 0xfa4: 0x3b5d, 0xfa5: 0x3b7d, 0xfa6: 0x127d, 0xfa7: 0x3b9d, 0xfa8: 0x3bbd, 0xfa9: 0x3bdd, + 0xfaa: 0x3bfd, 0xfab: 0x3c1d, 0xfac: 0x3c3d, 0xfad: 0x3c5d, 0xfae: 0x239d, 0xfaf: 0x3c7d, + 0xfb0: 0x3c9d, 0xfb1: 0x3939, 0xfb2: 0x3951, 0xfb3: 0x3969, 0xfb4: 0x3981, 0xfb5: 0x3999, + 0xfb6: 0x39b1, 0xfb7: 0x39c9, 0xfb8: 0x39e1, 0xfb9: 0x39f9, 0xfba: 0x3a11, 0xfbb: 0x3a29, + 0xfbc: 0x3a41, 0xfbd: 0x3a59, 0xfbe: 0x3a71, 0xfbf: 0x3a89, + // Block 0x3f, offset 0xfc0 + 0xfc0: 0x3aa1, 0xfc1: 0x3ac9, 0xfc2: 0x3af1, 0xfc3: 0x3b19, 0xfc4: 0x3b41, 0xfc5: 0x3b69, + 0xfc6: 0x3b91, 0xfc7: 0x3bb9, 0xfc8: 0x3be1, 0xfc9: 0x3c09, 0xfca: 0x3c39, 0xfcb: 0x3c69, + 0xfcc: 0x3c99, 0xfcd: 0x3cbd, 0xfce: 0x3cb1, 0xfcf: 0x3cdd, 0xfd0: 0x3cfd, 0xfd1: 0x3d15, + 0xfd2: 0x3d2d, 0xfd3: 0x3d45, 0xfd4: 0x3d5d, 0xfd5: 0x3d5d, 0xfd6: 0x3d45, 0xfd7: 0x3d75, + 0xfd8: 0x07bd, 0xfd9: 0x3d8d, 0xfda: 0x3da5, 0xfdb: 0x3dbd, 0xfdc: 0x3dd5, 0xfdd: 0x3ded, + 0xfde: 0x3e05, 0xfdf: 0x3e1d, 0xfe0: 0x3e35, 0xfe1: 0x3e4d, 0xfe2: 0x3e65, 0xfe3: 0x3e7d, + 0xfe4: 0x3e95, 0xfe5: 0x3e95, 0xfe6: 0x3ead, 0xfe7: 0x3ead, 0xfe8: 0x3ec5, 0xfe9: 0x3ec5, + 0xfea: 0x3edd, 0xfeb: 0x3ef5, 0xfec: 0x3f0d, 0xfed: 0x3f25, 0xfee: 0x3f3d, 0xfef: 0x3f3d, + 0xff0: 0x3f55, 0xff1: 0x3f55, 0xff2: 0x3f55, 0xff3: 0x3f6d, 0xff4: 0x3f85, 0xff5: 0x3f9d, + 0xff6: 0x3fb5, 0xff7: 0x3f9d, 0xff8: 0x3fcd, 0xff9: 0x3fe5, 0xffa: 0x3f6d, 0xffb: 0x3ffd, + 0xffc: 0x4015, 0xffd: 0x4015, 0xffe: 0x4015, 0xfff: 0x0040, + // Block 0x40, offset 0x1000 + 0x1000: 0x3cc9, 0x1001: 0x3d31, 0x1002: 0x3d99, 0x1003: 0x3e01, 0x1004: 0x3e51, 0x1005: 0x3eb9, + 0x1006: 0x3f09, 0x1007: 0x3f59, 0x1008: 0x3fd9, 0x1009: 0x4041, 0x100a: 0x4091, 0x100b: 0x40e1, + 0x100c: 0x4131, 0x100d: 0x4199, 0x100e: 0x4201, 0x100f: 0x4251, 0x1010: 0x42a1, 0x1011: 0x42d9, + 0x1012: 0x4329, 0x1013: 0x4391, 0x1014: 0x43f9, 0x1015: 0x4431, 0x1016: 0x44b1, 0x1017: 0x4549, + 0x1018: 0x45c9, 0x1019: 0x4619, 0x101a: 0x4699, 0x101b: 0x4719, 0x101c: 0x4781, 0x101d: 0x47d1, + 0x101e: 0x4821, 0x101f: 0x4871, 0x1020: 0x48d9, 0x1021: 0x4959, 0x1022: 0x49c1, 0x1023: 0x4a11, + 0x1024: 0x4a61, 0x1025: 0x4ab1, 0x1026: 0x4ae9, 0x1027: 0x4b21, 0x1028: 0x4b59, 0x1029: 0x4b91, + 0x102a: 0x4be1, 0x102b: 0x4c31, 0x102c: 0x4cb1, 0x102d: 0x4d01, 0x102e: 0x4d69, 0x102f: 0x4de9, + 0x1030: 0x4e39, 0x1031: 0x4e71, 0x1032: 0x4ea9, 0x1033: 0x4f29, 0x1034: 0x4f91, 0x1035: 0x5011, + 0x1036: 0x5061, 0x1037: 0x50e1, 0x1038: 0x5119, 0x1039: 0x5169, 0x103a: 0x51b9, 0x103b: 0x5209, + 0x103c: 0x5259, 0x103d: 0x52a9, 0x103e: 0x5311, 0x103f: 0x5361, + // Block 0x41, offset 0x1040 + 0x1040: 0x5399, 0x1041: 0x53e9, 0x1042: 0x5439, 0x1043: 0x5489, 0x1044: 0x54f1, 0x1045: 0x5541, + 0x1046: 0x5591, 0x1047: 0x55e1, 0x1048: 0x5661, 0x1049: 0x56c9, 0x104a: 0x5701, 0x104b: 0x5781, + 0x104c: 0x57b9, 0x104d: 0x5821, 0x104e: 0x5889, 0x104f: 0x58d9, 0x1050: 0x5929, 0x1051: 0x5979, + 0x1052: 0x59e1, 0x1053: 0x5a19, 0x1054: 0x5a69, 0x1055: 0x5ad1, 0x1056: 0x5b09, 0x1057: 0x5b89, + 0x1058: 0x5bd9, 0x1059: 0x5c01, 0x105a: 0x5c29, 0x105b: 0x5c51, 0x105c: 0x5c79, 0x105d: 0x5ca1, + 0x105e: 0x5cc9, 0x105f: 0x5cf1, 0x1060: 0x5d19, 0x1061: 0x5d41, 0x1062: 0x5d69, 0x1063: 0x5d99, + 0x1064: 0x5dc9, 0x1065: 0x5df9, 0x1066: 0x5e29, 0x1067: 0x5e59, 0x1068: 0x5e89, 0x1069: 0x5eb9, + 0x106a: 0x5ee9, 0x106b: 0x5f19, 0x106c: 0x5f49, 0x106d: 0x5f79, 0x106e: 0x5fa9, 0x106f: 0x5fd9, + 0x1070: 0x6009, 0x1071: 0x402d, 0x1072: 0x6039, 0x1073: 0x6051, 0x1074: 0x404d, 0x1075: 0x6069, + 0x1076: 0x6081, 0x1077: 0x6099, 0x1078: 0x406d, 0x1079: 0x406d, 0x107a: 0x60b1, 0x107b: 0x60c9, + 0x107c: 0x6101, 0x107d: 0x6139, 0x107e: 0x6171, 0x107f: 0x61a9, + // Block 0x42, offset 0x1080 + 0x1080: 0x6211, 0x1081: 0x6229, 0x1082: 0x408d, 0x1083: 0x6241, 0x1084: 0x6259, 0x1085: 0x6271, + 0x1086: 0x6289, 0x1087: 0x62a1, 0x1088: 0x40ad, 0x1089: 0x62b9, 0x108a: 0x62e1, 0x108b: 0x62f9, + 0x108c: 0x40cd, 0x108d: 0x40cd, 0x108e: 0x6311, 0x108f: 0x6329, 0x1090: 0x6341, 0x1091: 0x40ed, + 0x1092: 0x410d, 0x1093: 0x412d, 0x1094: 0x414d, 0x1095: 0x416d, 0x1096: 0x6359, 0x1097: 0x6371, + 0x1098: 0x6389, 0x1099: 0x63a1, 0x109a: 0x63b9, 0x109b: 0x418d, 0x109c: 0x63d1, 0x109d: 0x63e9, + 0x109e: 0x6401, 0x109f: 0x41ad, 0x10a0: 0x41cd, 0x10a1: 0x6419, 0x10a2: 0x41ed, 0x10a3: 0x420d, + 0x10a4: 0x422d, 0x10a5: 0x6431, 0x10a6: 0x424d, 0x10a7: 0x6449, 0x10a8: 0x6479, 0x10a9: 0x6211, + 0x10aa: 0x426d, 0x10ab: 0x428d, 0x10ac: 0x42ad, 0x10ad: 0x42cd, 0x10ae: 0x64b1, 0x10af: 0x64f1, + 0x10b0: 0x6539, 0x10b1: 0x6551, 0x10b2: 0x42ed, 0x10b3: 0x6569, 0x10b4: 0x6581, 0x10b5: 0x6599, + 0x10b6: 0x430d, 0x10b7: 0x65b1, 0x10b8: 0x65c9, 0x10b9: 0x65b1, 0x10ba: 0x65e1, 0x10bb: 0x65f9, + 0x10bc: 0x432d, 0x10bd: 0x6611, 0x10be: 0x6629, 0x10bf: 0x6611, + // Block 0x43, offset 0x10c0 + 0x10c0: 0x434d, 0x10c1: 0x436d, 0x10c2: 0x0040, 0x10c3: 0x6641, 0x10c4: 0x6659, 0x10c5: 0x6671, + 0x10c6: 0x6689, 0x10c7: 0x0040, 0x10c8: 0x66c1, 0x10c9: 0x66d9, 0x10ca: 0x66f1, 0x10cb: 0x6709, + 0x10cc: 0x6721, 0x10cd: 0x6739, 0x10ce: 0x6401, 0x10cf: 0x6751, 0x10d0: 0x6769, 0x10d1: 0x6781, + 0x10d2: 0x438d, 0x10d3: 0x6799, 0x10d4: 0x6289, 0x10d5: 0x43ad, 0x10d6: 0x43cd, 0x10d7: 0x67b1, + 0x10d8: 0x0040, 0x10d9: 0x43ed, 0x10da: 0x67c9, 0x10db: 0x67e1, 0x10dc: 0x67f9, 0x10dd: 0x6811, + 0x10de: 0x6829, 0x10df: 0x6859, 0x10e0: 0x6889, 0x10e1: 0x68b1, 0x10e2: 0x68d9, 0x10e3: 0x6901, + 0x10e4: 0x6929, 0x10e5: 0x6951, 0x10e6: 0x6979, 0x10e7: 0x69a1, 0x10e8: 0x69c9, 0x10e9: 0x69f1, + 0x10ea: 0x6a21, 0x10eb: 0x6a51, 0x10ec: 0x6a81, 0x10ed: 0x6ab1, 0x10ee: 0x6ae1, 0x10ef: 0x6b11, + 0x10f0: 0x6b41, 0x10f1: 0x6b71, 0x10f2: 0x6ba1, 0x10f3: 0x6bd1, 0x10f4: 0x6c01, 0x10f5: 0x6c31, + 0x10f6: 0x6c61, 0x10f7: 0x6c91, 0x10f8: 0x6cc1, 0x10f9: 0x6cf1, 0x10fa: 0x6d21, 0x10fb: 0x6d51, + 0x10fc: 0x6d81, 0x10fd: 0x6db1, 0x10fe: 0x6de1, 0x10ff: 0x440d, + // Block 0x44, offset 0x1100 + 0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008, + 0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008, + 0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008, + 0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008, + 0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0xe00d, 0x111d: 0x0008, + 0x111e: 0xe00d, 0x111f: 0x0008, 0x1120: 0xe00d, 0x1121: 0x0008, 0x1122: 0xe00d, 0x1123: 0x0008, + 0x1124: 0xe00d, 0x1125: 0x0008, 0x1126: 0xe00d, 0x1127: 0x0008, 0x1128: 0xe00d, 0x1129: 0x0008, + 0x112a: 0xe00d, 0x112b: 0x0008, 0x112c: 0xe00d, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x3308, + 0x1130: 0x3318, 0x1131: 0x3318, 0x1132: 0x3318, 0x1133: 0x0018, 0x1134: 0x3308, 0x1135: 0x3308, + 0x1136: 0x3308, 0x1137: 0x3308, 0x1138: 0x3308, 0x1139: 0x3308, 0x113a: 0x3308, 0x113b: 0x3308, + 0x113c: 0x3308, 0x113d: 0x3308, 0x113e: 0x0018, 0x113f: 0x0008, + // Block 0x45, offset 0x1140 + 0x1140: 0xe00d, 0x1141: 0x0008, 0x1142: 0xe00d, 0x1143: 0x0008, 0x1144: 0xe00d, 0x1145: 0x0008, + 0x1146: 0xe00d, 0x1147: 0x0008, 0x1148: 0xe00d, 0x1149: 0x0008, 0x114a: 0xe00d, 0x114b: 0x0008, + 0x114c: 0xe00d, 0x114d: 0x0008, 0x114e: 0xe00d, 0x114f: 0x0008, 0x1150: 0xe00d, 0x1151: 0x0008, + 0x1152: 0xe00d, 0x1153: 0x0008, 0x1154: 0xe00d, 0x1155: 0x0008, 0x1156: 0xe00d, 0x1157: 0x0008, + 0x1158: 0xe00d, 0x1159: 0x0008, 0x115a: 0xe00d, 0x115b: 0x0008, 0x115c: 0x0ea1, 0x115d: 0x6e11, + 0x115e: 0x3308, 0x115f: 0x3308, 0x1160: 0x0008, 0x1161: 0x0008, 0x1162: 0x0008, 0x1163: 0x0008, + 0x1164: 0x0008, 0x1165: 0x0008, 0x1166: 0x0008, 0x1167: 0x0008, 0x1168: 0x0008, 0x1169: 0x0008, + 0x116a: 0x0008, 0x116b: 0x0008, 0x116c: 0x0008, 0x116d: 0x0008, 0x116e: 0x0008, 0x116f: 0x0008, + 0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0x0008, 0x1173: 0x0008, 0x1174: 0x0008, 0x1175: 0x0008, + 0x1176: 0x0008, 0x1177: 0x0008, 0x1178: 0x0008, 0x1179: 0x0008, 0x117a: 0x0008, 0x117b: 0x0008, + 0x117c: 0x0008, 0x117d: 0x0008, 0x117e: 0x0008, 0x117f: 0x0008, + // Block 0x46, offset 0x1180 + 0x1180: 0x0018, 0x1181: 0x0018, 0x1182: 0x0018, 0x1183: 0x0018, 0x1184: 0x0018, 0x1185: 0x0018, + 0x1186: 0x0018, 0x1187: 0x0018, 0x1188: 0x0018, 0x1189: 0x0018, 0x118a: 0x0018, 0x118b: 0x0018, + 0x118c: 0x0018, 0x118d: 0x0018, 0x118e: 0x0018, 0x118f: 0x0018, 0x1190: 0x0018, 0x1191: 0x0018, + 0x1192: 0x0018, 0x1193: 0x0018, 0x1194: 0x0018, 0x1195: 0x0018, 0x1196: 0x0018, 0x1197: 0x0008, + 0x1198: 0x0008, 0x1199: 0x0008, 0x119a: 0x0008, 0x119b: 0x0008, 0x119c: 0x0008, 0x119d: 0x0008, + 0x119e: 0x0008, 0x119f: 0x0008, 0x11a0: 0x0018, 0x11a1: 0x0018, 0x11a2: 0xe00d, 0x11a3: 0x0008, + 0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008, + 0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008, + 0x11b0: 0x0008, 0x11b1: 0x0008, 0x11b2: 0xe00d, 0x11b3: 0x0008, 0x11b4: 0xe00d, 0x11b5: 0x0008, + 0x11b6: 0xe00d, 0x11b7: 0x0008, 0x11b8: 0xe00d, 0x11b9: 0x0008, 0x11ba: 0xe00d, 0x11bb: 0x0008, + 0x11bc: 0xe00d, 0x11bd: 0x0008, 0x11be: 0xe00d, 0x11bf: 0x0008, + // Block 0x47, offset 0x11c0 + 0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008, + 0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0xe00d, 0x11c9: 0x0008, 0x11ca: 0xe00d, 0x11cb: 0x0008, + 0x11cc: 0xe00d, 0x11cd: 0x0008, 0x11ce: 0xe00d, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008, + 0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0xe00d, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008, + 0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008, + 0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008, + 0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008, + 0x11ea: 0xe00d, 0x11eb: 0x0008, 0x11ec: 0xe00d, 0x11ed: 0x0008, 0x11ee: 0xe00d, 0x11ef: 0x0008, + 0x11f0: 0xe0fd, 0x11f1: 0x0008, 0x11f2: 0x0008, 0x11f3: 0x0008, 0x11f4: 0x0008, 0x11f5: 0x0008, + 0x11f6: 0x0008, 0x11f7: 0x0008, 0x11f8: 0x0008, 0x11f9: 0xe01d, 0x11fa: 0x0008, 0x11fb: 0xe03d, + 0x11fc: 0x0008, 0x11fd: 0x442d, 0x11fe: 0xe00d, 0x11ff: 0x0008, + // Block 0x48, offset 0x1200 + 0x1200: 0xe00d, 0x1201: 0x0008, 0x1202: 0xe00d, 0x1203: 0x0008, 0x1204: 0xe00d, 0x1205: 0x0008, + 0x1206: 0xe00d, 0x1207: 0x0008, 0x1208: 0x0008, 0x1209: 0x0018, 0x120a: 0x0018, 0x120b: 0xe03d, + 0x120c: 0x0008, 0x120d: 0x11d9, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0xe00d, 0x1211: 0x0008, + 0x1212: 0xe00d, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x0008, 0x1216: 0xe00d, 0x1217: 0x0008, + 0x1218: 0xe00d, 0x1219: 0x0008, 0x121a: 0xe00d, 0x121b: 0x0008, 0x121c: 0xe00d, 0x121d: 0x0008, + 0x121e: 0xe00d, 0x121f: 0x0008, 0x1220: 0xe00d, 0x1221: 0x0008, 0x1222: 0xe00d, 0x1223: 0x0008, + 0x1224: 0xe00d, 0x1225: 0x0008, 0x1226: 0xe00d, 0x1227: 0x0008, 0x1228: 0xe00d, 0x1229: 0x0008, + 0x122a: 0x6e29, 0x122b: 0x1029, 0x122c: 0x11c1, 0x122d: 0x6e41, 0x122e: 0x1221, 0x122f: 0x0008, + 0x1230: 0x6e59, 0x1231: 0x6e71, 0x1232: 0x1239, 0x1233: 0x444d, 0x1234: 0xe00d, 0x1235: 0x0008, + 0x1236: 0xe00d, 0x1237: 0x0008, 0x1238: 0x0040, 0x1239: 0x0008, 0x123a: 0x0040, 0x123b: 0x0040, + 0x123c: 0x0040, 0x123d: 0x0040, 0x123e: 0x0040, 0x123f: 0x0040, + // Block 0x49, offset 0x1240 + 0x1240: 0x64d5, 0x1241: 0x64f5, 0x1242: 0x6515, 0x1243: 0x6535, 0x1244: 0x6555, 0x1245: 0x6575, + 0x1246: 0x6595, 0x1247: 0x65b5, 0x1248: 0x65d5, 0x1249: 0x65f5, 0x124a: 0x6615, 0x124b: 0x6635, + 0x124c: 0x6655, 0x124d: 0x6675, 0x124e: 0x0008, 0x124f: 0x0008, 0x1250: 0x6695, 0x1251: 0x0008, + 0x1252: 0x66b5, 0x1253: 0x0008, 0x1254: 0x0008, 0x1255: 0x66d5, 0x1256: 0x66f5, 0x1257: 0x6715, + 0x1258: 0x6735, 0x1259: 0x6755, 0x125a: 0x6775, 0x125b: 0x6795, 0x125c: 0x67b5, 0x125d: 0x67d5, + 0x125e: 0x67f5, 0x125f: 0x0008, 0x1260: 0x6815, 0x1261: 0x0008, 0x1262: 0x6835, 0x1263: 0x0008, + 0x1264: 0x0008, 0x1265: 0x6855, 0x1266: 0x6875, 0x1267: 0x0008, 0x1268: 0x0008, 0x1269: 0x0008, + 0x126a: 0x6895, 0x126b: 0x68b5, 0x126c: 0x68d5, 0x126d: 0x68f5, 0x126e: 0x6915, 0x126f: 0x6935, + 0x1270: 0x6955, 0x1271: 0x6975, 0x1272: 0x6995, 0x1273: 0x69b5, 0x1274: 0x69d5, 0x1275: 0x69f5, + 0x1276: 0x6a15, 0x1277: 0x6a35, 0x1278: 0x6a55, 0x1279: 0x6a75, 0x127a: 0x6a95, 0x127b: 0x6ab5, + 0x127c: 0x6ad5, 0x127d: 0x6af5, 0x127e: 0x6b15, 0x127f: 0x6b35, + // Block 0x4a, offset 0x1280 + 0x1280: 0x7a95, 0x1281: 0x7ab5, 0x1282: 0x7ad5, 0x1283: 0x7af5, 0x1284: 0x7b15, 0x1285: 0x7b35, + 0x1286: 0x7b55, 0x1287: 0x7b75, 0x1288: 0x7b95, 0x1289: 0x7bb5, 0x128a: 0x7bd5, 0x128b: 0x7bf5, + 0x128c: 0x7c15, 0x128d: 0x7c35, 0x128e: 0x7c55, 0x128f: 0x6ec9, 0x1290: 0x6ef1, 0x1291: 0x6f19, + 0x1292: 0x7c75, 0x1293: 0x7c95, 0x1294: 0x7cb5, 0x1295: 0x6f41, 0x1296: 0x6f69, 0x1297: 0x6f91, + 0x1298: 0x7cd5, 0x1299: 0x7cf5, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x0040, + 0x129e: 0x0040, 0x129f: 0x0040, 0x12a0: 0x0040, 0x12a1: 0x0040, 0x12a2: 0x0040, 0x12a3: 0x0040, + 0x12a4: 0x0040, 0x12a5: 0x0040, 0x12a6: 0x0040, 0x12a7: 0x0040, 0x12a8: 0x0040, 0x12a9: 0x0040, + 0x12aa: 0x0040, 0x12ab: 0x0040, 0x12ac: 0x0040, 0x12ad: 0x0040, 0x12ae: 0x0040, 0x12af: 0x0040, + 0x12b0: 0x0040, 0x12b1: 0x0040, 0x12b2: 0x0040, 0x12b3: 0x0040, 0x12b4: 0x0040, 0x12b5: 0x0040, + 0x12b6: 0x0040, 0x12b7: 0x0040, 0x12b8: 0x0040, 0x12b9: 0x0040, 0x12ba: 0x0040, 0x12bb: 0x0040, + 0x12bc: 0x0040, 0x12bd: 0x0040, 0x12be: 0x0040, 0x12bf: 0x0040, + // Block 0x4b, offset 0x12c0 + 0x12c0: 0x6fb9, 0x12c1: 0x6fd1, 0x12c2: 0x6fe9, 0x12c3: 0x7d15, 0x12c4: 0x7d35, 0x12c5: 0x7001, + 0x12c6: 0x7001, 0x12c7: 0x0040, 0x12c8: 0x0040, 0x12c9: 0x0040, 0x12ca: 0x0040, 0x12cb: 0x0040, + 0x12cc: 0x0040, 0x12cd: 0x0040, 0x12ce: 0x0040, 0x12cf: 0x0040, 0x12d0: 0x0040, 0x12d1: 0x0040, + 0x12d2: 0x0040, 0x12d3: 0x7019, 0x12d4: 0x7041, 0x12d5: 0x7069, 0x12d6: 0x7091, 0x12d7: 0x70b9, + 0x12d8: 0x0040, 0x12d9: 0x0040, 0x12da: 0x0040, 0x12db: 0x0040, 0x12dc: 0x0040, 0x12dd: 0x70e1, + 0x12de: 0x3308, 0x12df: 0x7109, 0x12e0: 0x7131, 0x12e1: 0x20a9, 0x12e2: 0x20f1, 0x12e3: 0x7149, + 0x12e4: 0x7161, 0x12e5: 0x7179, 0x12e6: 0x7191, 0x12e7: 0x71a9, 0x12e8: 0x71c1, 0x12e9: 0x1fb2, + 0x12ea: 0x71d9, 0x12eb: 0x7201, 0x12ec: 0x7229, 0x12ed: 0x7261, 0x12ee: 0x7299, 0x12ef: 0x72c1, + 0x12f0: 0x72e9, 0x12f1: 0x7311, 0x12f2: 0x7339, 0x12f3: 0x7361, 0x12f4: 0x7389, 0x12f5: 0x73b1, + 0x12f6: 0x73d9, 0x12f7: 0x0040, 0x12f8: 0x7401, 0x12f9: 0x7429, 0x12fa: 0x7451, 0x12fb: 0x7479, + 0x12fc: 0x74a1, 0x12fd: 0x0040, 0x12fe: 0x74c9, 0x12ff: 0x0040, + // Block 0x4c, offset 0x1300 + 0x1300: 0x74f1, 0x1301: 0x7519, 0x1302: 0x0040, 0x1303: 0x7541, 0x1304: 0x7569, 0x1305: 0x0040, + 0x1306: 0x7591, 0x1307: 0x75b9, 0x1308: 0x75e1, 0x1309: 0x7609, 0x130a: 0x7631, 0x130b: 0x7659, + 0x130c: 0x7681, 0x130d: 0x76a9, 0x130e: 0x76d1, 0x130f: 0x76f9, 0x1310: 0x7721, 0x1311: 0x7721, + 0x1312: 0x7739, 0x1313: 0x7739, 0x1314: 0x7739, 0x1315: 0x7739, 0x1316: 0x7751, 0x1317: 0x7751, + 0x1318: 0x7751, 0x1319: 0x7751, 0x131a: 0x7769, 0x131b: 0x7769, 0x131c: 0x7769, 0x131d: 0x7769, + 0x131e: 0x7781, 0x131f: 0x7781, 0x1320: 0x7781, 0x1321: 0x7781, 0x1322: 0x7799, 0x1323: 0x7799, + 0x1324: 0x7799, 0x1325: 0x7799, 0x1326: 0x77b1, 0x1327: 0x77b1, 0x1328: 0x77b1, 0x1329: 0x77b1, + 0x132a: 0x77c9, 0x132b: 0x77c9, 0x132c: 0x77c9, 0x132d: 0x77c9, 0x132e: 0x77e1, 0x132f: 0x77e1, + 0x1330: 0x77e1, 0x1331: 0x77e1, 0x1332: 0x77f9, 0x1333: 0x77f9, 0x1334: 0x77f9, 0x1335: 0x77f9, + 0x1336: 0x7811, 0x1337: 0x7811, 0x1338: 0x7811, 0x1339: 0x7811, 0x133a: 0x7829, 0x133b: 0x7829, + 0x133c: 0x7829, 0x133d: 0x7829, 0x133e: 0x7841, 0x133f: 0x7841, + // Block 0x4d, offset 0x1340 + 0x1340: 0x7841, 0x1341: 0x7841, 0x1342: 0x7859, 0x1343: 0x7859, 0x1344: 0x7871, 0x1345: 0x7871, + 0x1346: 0x7889, 0x1347: 0x7889, 0x1348: 0x78a1, 0x1349: 0x78a1, 0x134a: 0x78b9, 0x134b: 0x78b9, + 0x134c: 0x78d1, 0x134d: 0x78d1, 0x134e: 0x78e9, 0x134f: 0x78e9, 0x1350: 0x78e9, 0x1351: 0x78e9, + 0x1352: 0x7901, 0x1353: 0x7901, 0x1354: 0x7901, 0x1355: 0x7901, 0x1356: 0x7919, 0x1357: 0x7919, + 0x1358: 0x7919, 0x1359: 0x7919, 0x135a: 0x7931, 0x135b: 0x7931, 0x135c: 0x7931, 0x135d: 0x7931, + 0x135e: 0x7949, 0x135f: 0x7949, 0x1360: 0x7961, 0x1361: 0x7961, 0x1362: 0x7961, 0x1363: 0x7961, + 0x1364: 0x7979, 0x1365: 0x7979, 0x1366: 0x7991, 0x1367: 0x7991, 0x1368: 0x7991, 0x1369: 0x7991, + 0x136a: 0x79a9, 0x136b: 0x79a9, 0x136c: 0x79a9, 0x136d: 0x79a9, 0x136e: 0x79c1, 0x136f: 0x79c1, + 0x1370: 0x79d9, 0x1371: 0x79d9, 0x1372: 0x0818, 0x1373: 0x0818, 0x1374: 0x0818, 0x1375: 0x0818, + 0x1376: 0x0818, 0x1377: 0x0818, 0x1378: 0x0818, 0x1379: 0x0818, 0x137a: 0x0818, 0x137b: 0x0818, + 0x137c: 0x0818, 0x137d: 0x0818, 0x137e: 0x0818, 0x137f: 0x0818, + // Block 0x4e, offset 0x1380 + 0x1380: 0x0818, 0x1381: 0x0818, 0x1382: 0x0040, 0x1383: 0x0040, 0x1384: 0x0040, 0x1385: 0x0040, + 0x1386: 0x0040, 0x1387: 0x0040, 0x1388: 0x0040, 0x1389: 0x0040, 0x138a: 0x0040, 0x138b: 0x0040, + 0x138c: 0x0040, 0x138d: 0x0040, 0x138e: 0x0040, 0x138f: 0x0040, 0x1390: 0x0040, 0x1391: 0x0040, + 0x1392: 0x0040, 0x1393: 0x79f1, 0x1394: 0x79f1, 0x1395: 0x79f1, 0x1396: 0x79f1, 0x1397: 0x7a09, + 0x1398: 0x7a09, 0x1399: 0x7a21, 0x139a: 0x7a21, 0x139b: 0x7a39, 0x139c: 0x7a39, 0x139d: 0x0479, + 0x139e: 0x7a51, 0x139f: 0x7a51, 0x13a0: 0x7a69, 0x13a1: 0x7a69, 0x13a2: 0x7a81, 0x13a3: 0x7a81, + 0x13a4: 0x7a99, 0x13a5: 0x7a99, 0x13a6: 0x7a99, 0x13a7: 0x7a99, 0x13a8: 0x7ab1, 0x13a9: 0x7ab1, + 0x13aa: 0x7ac9, 0x13ab: 0x7ac9, 0x13ac: 0x7af1, 0x13ad: 0x7af1, 0x13ae: 0x7b19, 0x13af: 0x7b19, + 0x13b0: 0x7b41, 0x13b1: 0x7b41, 0x13b2: 0x7b69, 0x13b3: 0x7b69, 0x13b4: 0x7b91, 0x13b5: 0x7b91, + 0x13b6: 0x7bb9, 0x13b7: 0x7bb9, 0x13b8: 0x7bb9, 0x13b9: 0x7be1, 0x13ba: 0x7be1, 0x13bb: 0x7be1, + 0x13bc: 0x7c09, 0x13bd: 0x7c09, 0x13be: 0x7c09, 0x13bf: 0x7c09, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x85f9, 0x13c1: 0x8621, 0x13c2: 0x8649, 0x13c3: 0x8671, 0x13c4: 0x8699, 0x13c5: 0x86c1, + 0x13c6: 0x86e9, 0x13c7: 0x8711, 0x13c8: 0x8739, 0x13c9: 0x8761, 0x13ca: 0x8789, 0x13cb: 0x87b1, + 0x13cc: 0x87d9, 0x13cd: 0x8801, 0x13ce: 0x8829, 0x13cf: 0x8851, 0x13d0: 0x8879, 0x13d1: 0x88a1, + 0x13d2: 0x88c9, 0x13d3: 0x88f1, 0x13d4: 0x8919, 0x13d5: 0x8941, 0x13d6: 0x8969, 0x13d7: 0x8991, + 0x13d8: 0x89b9, 0x13d9: 0x89e1, 0x13da: 0x8a09, 0x13db: 0x8a31, 0x13dc: 0x8a59, 0x13dd: 0x8a81, + 0x13de: 0x8aaa, 0x13df: 0x8ada, 0x13e0: 0x8b0a, 0x13e1: 0x8b3a, 0x13e2: 0x8b6a, 0x13e3: 0x8b9a, + 0x13e4: 0x8bc9, 0x13e5: 0x8bf1, 0x13e6: 0x7c71, 0x13e7: 0x8c19, 0x13e8: 0x7be1, 0x13e9: 0x7c99, + 0x13ea: 0x8c41, 0x13eb: 0x8c69, 0x13ec: 0x7d39, 0x13ed: 0x8c91, 0x13ee: 0x7d61, 0x13ef: 0x7d89, + 0x13f0: 0x8cb9, 0x13f1: 0x8ce1, 0x13f2: 0x7e29, 0x13f3: 0x8d09, 0x13f4: 0x7e51, 0x13f5: 0x7e79, + 0x13f6: 0x8d31, 0x13f7: 0x8d59, 0x13f8: 0x7ec9, 0x13f9: 0x8d81, 0x13fa: 0x7ef1, 0x13fb: 0x7f19, + 0x13fc: 0x83a1, 0x13fd: 0x83c9, 0x13fe: 0x8441, 0x13ff: 0x8469, + // Block 0x50, offset 0x1400 + 0x1400: 0x8491, 0x1401: 0x8531, 0x1402: 0x8559, 0x1403: 0x8581, 0x1404: 0x85a9, 0x1405: 0x8649, + 0x1406: 0x8671, 0x1407: 0x8699, 0x1408: 0x8da9, 0x1409: 0x8739, 0x140a: 0x8dd1, 0x140b: 0x8df9, + 0x140c: 0x8829, 0x140d: 0x8e21, 0x140e: 0x8851, 0x140f: 0x8879, 0x1410: 0x8a81, 0x1411: 0x8e49, + 0x1412: 0x8e71, 0x1413: 0x89b9, 0x1414: 0x8e99, 0x1415: 0x89e1, 0x1416: 0x8a09, 0x1417: 0x7c21, + 0x1418: 0x7c49, 0x1419: 0x8ec1, 0x141a: 0x7c71, 0x141b: 0x8ee9, 0x141c: 0x7cc1, 0x141d: 0x7ce9, + 0x141e: 0x7d11, 0x141f: 0x7d39, 0x1420: 0x8f11, 0x1421: 0x7db1, 0x1422: 0x7dd9, 0x1423: 0x7e01, + 0x1424: 0x7e29, 0x1425: 0x8f39, 0x1426: 0x7ec9, 0x1427: 0x7f41, 0x1428: 0x7f69, 0x1429: 0x7f91, + 0x142a: 0x7fb9, 0x142b: 0x7fe1, 0x142c: 0x8031, 0x142d: 0x8059, 0x142e: 0x8081, 0x142f: 0x80a9, + 0x1430: 0x80d1, 0x1431: 0x80f9, 0x1432: 0x8f61, 0x1433: 0x8121, 0x1434: 0x8149, 0x1435: 0x8171, + 0x1436: 0x8199, 0x1437: 0x81c1, 0x1438: 0x81e9, 0x1439: 0x8239, 0x143a: 0x8261, 0x143b: 0x8289, + 0x143c: 0x82b1, 0x143d: 0x82d9, 0x143e: 0x8301, 0x143f: 0x8329, + // Block 0x51, offset 0x1440 + 0x1440: 0x8351, 0x1441: 0x8379, 0x1442: 0x83f1, 0x1443: 0x8419, 0x1444: 0x84b9, 0x1445: 0x84e1, + 0x1446: 0x8509, 0x1447: 0x8531, 0x1448: 0x8559, 0x1449: 0x85d1, 0x144a: 0x85f9, 0x144b: 0x8621, + 0x144c: 0x8649, 0x144d: 0x8f89, 0x144e: 0x86c1, 0x144f: 0x86e9, 0x1450: 0x8711, 0x1451: 0x8739, + 0x1452: 0x87b1, 0x1453: 0x87d9, 0x1454: 0x8801, 0x1455: 0x8829, 0x1456: 0x8fb1, 0x1457: 0x88a1, + 0x1458: 0x88c9, 0x1459: 0x8fd9, 0x145a: 0x8941, 0x145b: 0x8969, 0x145c: 0x8991, 0x145d: 0x89b9, + 0x145e: 0x9001, 0x145f: 0x7c71, 0x1460: 0x8ee9, 0x1461: 0x7d39, 0x1462: 0x8f11, 0x1463: 0x7e29, + 0x1464: 0x8f39, 0x1465: 0x7ec9, 0x1466: 0x9029, 0x1467: 0x80d1, 0x1468: 0x9051, 0x1469: 0x9079, + 0x146a: 0x90a1, 0x146b: 0x8531, 0x146c: 0x8559, 0x146d: 0x8649, 0x146e: 0x8829, 0x146f: 0x8fb1, + 0x1470: 0x89b9, 0x1471: 0x9001, 0x1472: 0x90c9, 0x1473: 0x9101, 0x1474: 0x9139, 0x1475: 0x9171, + 0x1476: 0x9199, 0x1477: 0x91c1, 0x1478: 0x91e9, 0x1479: 0x9211, 0x147a: 0x9239, 0x147b: 0x9261, + 0x147c: 0x9289, 0x147d: 0x92b1, 0x147e: 0x92d9, 0x147f: 0x9301, + // Block 0x52, offset 0x1480 + 0x1480: 0x9329, 0x1481: 0x9351, 0x1482: 0x9379, 0x1483: 0x93a1, 0x1484: 0x93c9, 0x1485: 0x93f1, + 0x1486: 0x9419, 0x1487: 0x9441, 0x1488: 0x9469, 0x1489: 0x9491, 0x148a: 0x94b9, 0x148b: 0x94e1, + 0x148c: 0x9079, 0x148d: 0x9509, 0x148e: 0x9531, 0x148f: 0x9559, 0x1490: 0x9581, 0x1491: 0x9171, + 0x1492: 0x9199, 0x1493: 0x91c1, 0x1494: 0x91e9, 0x1495: 0x9211, 0x1496: 0x9239, 0x1497: 0x9261, + 0x1498: 0x9289, 0x1499: 0x92b1, 0x149a: 0x92d9, 0x149b: 0x9301, 0x149c: 0x9329, 0x149d: 0x9351, + 0x149e: 0x9379, 0x149f: 0x93a1, 0x14a0: 0x93c9, 0x14a1: 0x93f1, 0x14a2: 0x9419, 0x14a3: 0x9441, + 0x14a4: 0x9469, 0x14a5: 0x9491, 0x14a6: 0x94b9, 0x14a7: 0x94e1, 0x14a8: 0x9079, 0x14a9: 0x9509, + 0x14aa: 0x9531, 0x14ab: 0x9559, 0x14ac: 0x9581, 0x14ad: 0x9491, 0x14ae: 0x94b9, 0x14af: 0x94e1, + 0x14b0: 0x9079, 0x14b1: 0x9051, 0x14b2: 0x90a1, 0x14b3: 0x8211, 0x14b4: 0x8059, 0x14b5: 0x8081, + 0x14b6: 0x80a9, 0x14b7: 0x9491, 0x14b8: 0x94b9, 0x14b9: 0x94e1, 0x14ba: 0x8211, 0x14bb: 0x8239, + 0x14bc: 0x95a9, 0x14bd: 0x95a9, 0x14be: 0x0018, 0x14bf: 0x0018, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x0040, 0x14c1: 0x0040, 0x14c2: 0x0040, 0x14c3: 0x0040, 0x14c4: 0x0040, 0x14c5: 0x0040, + 0x14c6: 0x0040, 0x14c7: 0x0040, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040, + 0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x95d1, 0x14d1: 0x9609, + 0x14d2: 0x9609, 0x14d3: 0x9641, 0x14d4: 0x9679, 0x14d5: 0x96b1, 0x14d6: 0x96e9, 0x14d7: 0x9721, + 0x14d8: 0x9759, 0x14d9: 0x9759, 0x14da: 0x9791, 0x14db: 0x97c9, 0x14dc: 0x9801, 0x14dd: 0x9839, + 0x14de: 0x9871, 0x14df: 0x98a9, 0x14e0: 0x98a9, 0x14e1: 0x98e1, 0x14e2: 0x9919, 0x14e3: 0x9919, + 0x14e4: 0x9951, 0x14e5: 0x9951, 0x14e6: 0x9989, 0x14e7: 0x99c1, 0x14e8: 0x99c1, 0x14e9: 0x99f9, + 0x14ea: 0x9a31, 0x14eb: 0x9a31, 0x14ec: 0x9a69, 0x14ed: 0x9a69, 0x14ee: 0x9aa1, 0x14ef: 0x9ad9, + 0x14f0: 0x9ad9, 0x14f1: 0x9b11, 0x14f2: 0x9b11, 0x14f3: 0x9b49, 0x14f4: 0x9b81, 0x14f5: 0x9bb9, + 0x14f6: 0x9bf1, 0x14f7: 0x9bf1, 0x14f8: 0x9c29, 0x14f9: 0x9c61, 0x14fa: 0x9c99, 0x14fb: 0x9cd1, + 0x14fc: 0x9d09, 0x14fd: 0x9d09, 0x14fe: 0x9d41, 0x14ff: 0x9d79, + // Block 0x54, offset 0x1500 + 0x1500: 0xa949, 0x1501: 0xa981, 0x1502: 0xa9b9, 0x1503: 0xa8a1, 0x1504: 0x9bb9, 0x1505: 0x9989, + 0x1506: 0xa9f1, 0x1507: 0xaa29, 0x1508: 0x0040, 0x1509: 0x0040, 0x150a: 0x0040, 0x150b: 0x0040, + 0x150c: 0x0040, 0x150d: 0x0040, 0x150e: 0x0040, 0x150f: 0x0040, 0x1510: 0x0040, 0x1511: 0x0040, + 0x1512: 0x0040, 0x1513: 0x0040, 0x1514: 0x0040, 0x1515: 0x0040, 0x1516: 0x0040, 0x1517: 0x0040, + 0x1518: 0x0040, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040, + 0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x0040, 0x1521: 0x0040, 0x1522: 0x0040, 0x1523: 0x0040, + 0x1524: 0x0040, 0x1525: 0x0040, 0x1526: 0x0040, 0x1527: 0x0040, 0x1528: 0x0040, 0x1529: 0x0040, + 0x152a: 0x0040, 0x152b: 0x0040, 0x152c: 0x0040, 0x152d: 0x0040, 0x152e: 0x0040, 0x152f: 0x0040, + 0x1530: 0xaa61, 0x1531: 0xaa99, 0x1532: 0xaad1, 0x1533: 0xab19, 0x1534: 0xab61, 0x1535: 0xaba9, + 0x1536: 0xabf1, 0x1537: 0xac39, 0x1538: 0xac81, 0x1539: 0xacc9, 0x153a: 0xad02, 0x153b: 0xae12, + 0x153c: 0xae91, 0x153d: 0x0018, 0x153e: 0x0040, 0x153f: 0x0040, + // Block 0x55, offset 0x1540 + 0x1540: 0x33c0, 0x1541: 0x33c0, 0x1542: 0x33c0, 0x1543: 0x33c0, 0x1544: 0x33c0, 0x1545: 0x33c0, + 0x1546: 0x33c0, 0x1547: 0x33c0, 0x1548: 0x33c0, 0x1549: 0x33c0, 0x154a: 0x33c0, 0x154b: 0x33c0, + 0x154c: 0x33c0, 0x154d: 0x33c0, 0x154e: 0x33c0, 0x154f: 0x33c0, 0x1550: 0xaeda, 0x1551: 0x7d55, + 0x1552: 0x0040, 0x1553: 0xaeea, 0x1554: 0x03c2, 0x1555: 0xaefa, 0x1556: 0xaf0a, 0x1557: 0x7d75, + 0x1558: 0x7d95, 0x1559: 0x0040, 0x155a: 0x0040, 0x155b: 0x0040, 0x155c: 0x0040, 0x155d: 0x0040, + 0x155e: 0x0040, 0x155f: 0x0040, 0x1560: 0x3308, 0x1561: 0x3308, 0x1562: 0x3308, 0x1563: 0x3308, + 0x1564: 0x3308, 0x1565: 0x3308, 0x1566: 0x3308, 0x1567: 0x3308, 0x1568: 0x3308, 0x1569: 0x3308, + 0x156a: 0x3308, 0x156b: 0x3308, 0x156c: 0x3308, 0x156d: 0x3308, 0x156e: 0x3308, 0x156f: 0x3308, + 0x1570: 0x0040, 0x1571: 0x7db5, 0x1572: 0x7dd5, 0x1573: 0xaf1a, 0x1574: 0xaf1a, 0x1575: 0x1fd2, + 0x1576: 0x1fe2, 0x1577: 0xaf2a, 0x1578: 0xaf3a, 0x1579: 0x7df5, 0x157a: 0x7e15, 0x157b: 0x7e35, + 0x157c: 0x7df5, 0x157d: 0x7e55, 0x157e: 0x7e75, 0x157f: 0x7e55, + // Block 0x56, offset 0x1580 + 0x1580: 0x7e95, 0x1581: 0x7eb5, 0x1582: 0x7ed5, 0x1583: 0x7eb5, 0x1584: 0x7ef5, 0x1585: 0x0018, + 0x1586: 0x0018, 0x1587: 0xaf4a, 0x1588: 0xaf5a, 0x1589: 0x7f16, 0x158a: 0x7f36, 0x158b: 0x7f56, + 0x158c: 0x7f76, 0x158d: 0xaf1a, 0x158e: 0xaf1a, 0x158f: 0xaf1a, 0x1590: 0xaeda, 0x1591: 0x7f95, + 0x1592: 0x0040, 0x1593: 0x0040, 0x1594: 0x03c2, 0x1595: 0xaeea, 0x1596: 0xaf0a, 0x1597: 0xaefa, + 0x1598: 0x7fb5, 0x1599: 0x1fd2, 0x159a: 0x1fe2, 0x159b: 0xaf2a, 0x159c: 0xaf3a, 0x159d: 0x7e95, + 0x159e: 0x7ef5, 0x159f: 0xaf6a, 0x15a0: 0xaf7a, 0x15a1: 0xaf8a, 0x15a2: 0x1fb2, 0x15a3: 0xaf99, + 0x15a4: 0xafaa, 0x15a5: 0xafba, 0x15a6: 0x1fc2, 0x15a7: 0x0040, 0x15a8: 0xafca, 0x15a9: 0xafda, + 0x15aa: 0xafea, 0x15ab: 0xaffa, 0x15ac: 0x0040, 0x15ad: 0x0040, 0x15ae: 0x0040, 0x15af: 0x0040, + 0x15b0: 0x7fd6, 0x15b1: 0xb009, 0x15b2: 0x7ff6, 0x15b3: 0x0808, 0x15b4: 0x8016, 0x15b5: 0x0040, + 0x15b6: 0x8036, 0x15b7: 0xb031, 0x15b8: 0x8056, 0x15b9: 0xb059, 0x15ba: 0x8076, 0x15bb: 0xb081, + 0x15bc: 0x8096, 0x15bd: 0xb0a9, 0x15be: 0x80b6, 0x15bf: 0xb0d1, + // Block 0x57, offset 0x15c0 + 0x15c0: 0xb0f9, 0x15c1: 0xb111, 0x15c2: 0xb111, 0x15c3: 0xb129, 0x15c4: 0xb129, 0x15c5: 0xb141, + 0x15c6: 0xb141, 0x15c7: 0xb159, 0x15c8: 0xb159, 0x15c9: 0xb171, 0x15ca: 0xb171, 0x15cb: 0xb171, + 0x15cc: 0xb171, 0x15cd: 0xb189, 0x15ce: 0xb189, 0x15cf: 0xb1a1, 0x15d0: 0xb1a1, 0x15d1: 0xb1a1, + 0x15d2: 0xb1a1, 0x15d3: 0xb1b9, 0x15d4: 0xb1b9, 0x15d5: 0xb1d1, 0x15d6: 0xb1d1, 0x15d7: 0xb1d1, + 0x15d8: 0xb1d1, 0x15d9: 0xb1e9, 0x15da: 0xb1e9, 0x15db: 0xb1e9, 0x15dc: 0xb1e9, 0x15dd: 0xb201, + 0x15de: 0xb201, 0x15df: 0xb201, 0x15e0: 0xb201, 0x15e1: 0xb219, 0x15e2: 0xb219, 0x15e3: 0xb219, + 0x15e4: 0xb219, 0x15e5: 0xb231, 0x15e6: 0xb231, 0x15e7: 0xb231, 0x15e8: 0xb231, 0x15e9: 0xb249, + 0x15ea: 0xb249, 0x15eb: 0xb261, 0x15ec: 0xb261, 0x15ed: 0xb279, 0x15ee: 0xb279, 0x15ef: 0xb291, + 0x15f0: 0xb291, 0x15f1: 0xb2a9, 0x15f2: 0xb2a9, 0x15f3: 0xb2a9, 0x15f4: 0xb2a9, 0x15f5: 0xb2c1, + 0x15f6: 0xb2c1, 0x15f7: 0xb2c1, 0x15f8: 0xb2c1, 0x15f9: 0xb2d9, 0x15fa: 0xb2d9, 0x15fb: 0xb2d9, + 0x15fc: 0xb2d9, 0x15fd: 0xb2f1, 0x15fe: 0xb2f1, 0x15ff: 0xb2f1, + // Block 0x58, offset 0x1600 + 0x1600: 0xb2f1, 0x1601: 0xb309, 0x1602: 0xb309, 0x1603: 0xb309, 0x1604: 0xb309, 0x1605: 0xb321, + 0x1606: 0xb321, 0x1607: 0xb321, 0x1608: 0xb321, 0x1609: 0xb339, 0x160a: 0xb339, 0x160b: 0xb339, + 0x160c: 0xb339, 0x160d: 0xb351, 0x160e: 0xb351, 0x160f: 0xb351, 0x1610: 0xb351, 0x1611: 0xb369, + 0x1612: 0xb369, 0x1613: 0xb369, 0x1614: 0xb369, 0x1615: 0xb381, 0x1616: 0xb381, 0x1617: 0xb381, + 0x1618: 0xb381, 0x1619: 0xb399, 0x161a: 0xb399, 0x161b: 0xb399, 0x161c: 0xb399, 0x161d: 0xb3b1, + 0x161e: 0xb3b1, 0x161f: 0xb3b1, 0x1620: 0xb3b1, 0x1621: 0xb3c9, 0x1622: 0xb3c9, 0x1623: 0xb3c9, + 0x1624: 0xb3c9, 0x1625: 0xb3e1, 0x1626: 0xb3e1, 0x1627: 0xb3e1, 0x1628: 0xb3e1, 0x1629: 0xb3f9, + 0x162a: 0xb3f9, 0x162b: 0xb3f9, 0x162c: 0xb3f9, 0x162d: 0xb411, 0x162e: 0xb411, 0x162f: 0x7ab1, + 0x1630: 0x7ab1, 0x1631: 0xb429, 0x1632: 0xb429, 0x1633: 0xb429, 0x1634: 0xb429, 0x1635: 0xb441, + 0x1636: 0xb441, 0x1637: 0xb469, 0x1638: 0xb469, 0x1639: 0xb491, 0x163a: 0xb491, 0x163b: 0xb4b9, + 0x163c: 0xb4b9, 0x163d: 0x0040, 0x163e: 0x0040, 0x163f: 0x03c0, + // Block 0x59, offset 0x1640 + 0x1640: 0x0040, 0x1641: 0xaefa, 0x1642: 0xb4e2, 0x1643: 0xaf6a, 0x1644: 0xafda, 0x1645: 0xafea, + 0x1646: 0xaf7a, 0x1647: 0xb4f2, 0x1648: 0x1fd2, 0x1649: 0x1fe2, 0x164a: 0xaf8a, 0x164b: 0x1fb2, + 0x164c: 0xaeda, 0x164d: 0xaf99, 0x164e: 0x29d1, 0x164f: 0xb502, 0x1650: 0x1f41, 0x1651: 0x00c9, + 0x1652: 0x0069, 0x1653: 0x0079, 0x1654: 0x1f51, 0x1655: 0x1f61, 0x1656: 0x1f71, 0x1657: 0x1f81, + 0x1658: 0x1f91, 0x1659: 0x1fa1, 0x165a: 0xaeea, 0x165b: 0x03c2, 0x165c: 0xafaa, 0x165d: 0x1fc2, + 0x165e: 0xafba, 0x165f: 0xaf0a, 0x1660: 0xaffa, 0x1661: 0x0039, 0x1662: 0x0ee9, 0x1663: 0x1159, + 0x1664: 0x0ef9, 0x1665: 0x0f09, 0x1666: 0x1199, 0x1667: 0x0f31, 0x1668: 0x0249, 0x1669: 0x0f41, + 0x166a: 0x0259, 0x166b: 0x0f51, 0x166c: 0x0359, 0x166d: 0x0f61, 0x166e: 0x0f71, 0x166f: 0x00d9, + 0x1670: 0x0f99, 0x1671: 0x2039, 0x1672: 0x0269, 0x1673: 0x01d9, 0x1674: 0x0fa9, 0x1675: 0x0fb9, + 0x1676: 0x1089, 0x1677: 0x0279, 0x1678: 0x0369, 0x1679: 0x0289, 0x167a: 0x13d1, 0x167b: 0xaf4a, + 0x167c: 0xafca, 0x167d: 0xaf5a, 0x167e: 0xb512, 0x167f: 0xaf1a, + // Block 0x5a, offset 0x1680 + 0x1680: 0x1caa, 0x1681: 0x0039, 0x1682: 0x0ee9, 0x1683: 0x1159, 0x1684: 0x0ef9, 0x1685: 0x0f09, + 0x1686: 0x1199, 0x1687: 0x0f31, 0x1688: 0x0249, 0x1689: 0x0f41, 0x168a: 0x0259, 0x168b: 0x0f51, + 0x168c: 0x0359, 0x168d: 0x0f61, 0x168e: 0x0f71, 0x168f: 0x00d9, 0x1690: 0x0f99, 0x1691: 0x2039, + 0x1692: 0x0269, 0x1693: 0x01d9, 0x1694: 0x0fa9, 0x1695: 0x0fb9, 0x1696: 0x1089, 0x1697: 0x0279, + 0x1698: 0x0369, 0x1699: 0x0289, 0x169a: 0x13d1, 0x169b: 0xaf2a, 0x169c: 0xb522, 0x169d: 0xaf3a, + 0x169e: 0xb532, 0x169f: 0x80d5, 0x16a0: 0x80f5, 0x16a1: 0x29d1, 0x16a2: 0x8115, 0x16a3: 0x8115, + 0x16a4: 0x8135, 0x16a5: 0x8155, 0x16a6: 0x8175, 0x16a7: 0x8195, 0x16a8: 0x81b5, 0x16a9: 0x81d5, + 0x16aa: 0x81f5, 0x16ab: 0x8215, 0x16ac: 0x8235, 0x16ad: 0x8255, 0x16ae: 0x8275, 0x16af: 0x8295, + 0x16b0: 0x82b5, 0x16b1: 0x82d5, 0x16b2: 0x82f5, 0x16b3: 0x8315, 0x16b4: 0x8335, 0x16b5: 0x8355, + 0x16b6: 0x8375, 0x16b7: 0x8395, 0x16b8: 0x83b5, 0x16b9: 0x83d5, 0x16ba: 0x83f5, 0x16bb: 0x8415, + 0x16bc: 0x81b5, 0x16bd: 0x8435, 0x16be: 0x8455, 0x16bf: 0x8215, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x8475, 0x16c1: 0x8495, 0x16c2: 0x84b5, 0x16c3: 0x84d5, 0x16c4: 0x84f5, 0x16c5: 0x8515, + 0x16c6: 0x8535, 0x16c7: 0x8555, 0x16c8: 0x84d5, 0x16c9: 0x8575, 0x16ca: 0x84d5, 0x16cb: 0x8595, + 0x16cc: 0x8595, 0x16cd: 0x85b5, 0x16ce: 0x85b5, 0x16cf: 0x85d5, 0x16d0: 0x8515, 0x16d1: 0x85f5, + 0x16d2: 0x8615, 0x16d3: 0x85f5, 0x16d4: 0x8635, 0x16d5: 0x8615, 0x16d6: 0x8655, 0x16d7: 0x8655, + 0x16d8: 0x8675, 0x16d9: 0x8675, 0x16da: 0x8695, 0x16db: 0x8695, 0x16dc: 0x8615, 0x16dd: 0x8115, + 0x16de: 0x86b5, 0x16df: 0x86d5, 0x16e0: 0x0040, 0x16e1: 0x86f5, 0x16e2: 0x8715, 0x16e3: 0x8735, + 0x16e4: 0x8755, 0x16e5: 0x8735, 0x16e6: 0x8775, 0x16e7: 0x8795, 0x16e8: 0x87b5, 0x16e9: 0x87b5, + 0x16ea: 0x87d5, 0x16eb: 0x87d5, 0x16ec: 0x87f5, 0x16ed: 0x87f5, 0x16ee: 0x87d5, 0x16ef: 0x87d5, + 0x16f0: 0x8815, 0x16f1: 0x8835, 0x16f2: 0x8855, 0x16f3: 0x8875, 0x16f4: 0x8895, 0x16f5: 0x88b5, + 0x16f6: 0x88b5, 0x16f7: 0x88b5, 0x16f8: 0x88d5, 0x16f9: 0x88d5, 0x16fa: 0x88d5, 0x16fb: 0x88d5, + 0x16fc: 0x87b5, 0x16fd: 0x87b5, 0x16fe: 0x87b5, 0x16ff: 0x0040, + // Block 0x5c, offset 0x1700 + 0x1700: 0x0040, 0x1701: 0x0040, 0x1702: 0x8715, 0x1703: 0x86f5, 0x1704: 0x88f5, 0x1705: 0x86f5, + 0x1706: 0x8715, 0x1707: 0x86f5, 0x1708: 0x0040, 0x1709: 0x0040, 0x170a: 0x8915, 0x170b: 0x8715, + 0x170c: 0x8935, 0x170d: 0x88f5, 0x170e: 0x8935, 0x170f: 0x8715, 0x1710: 0x0040, 0x1711: 0x0040, + 0x1712: 0x8955, 0x1713: 0x8975, 0x1714: 0x8875, 0x1715: 0x8935, 0x1716: 0x88f5, 0x1717: 0x8935, + 0x1718: 0x0040, 0x1719: 0x0040, 0x171a: 0x8995, 0x171b: 0x89b5, 0x171c: 0x8995, 0x171d: 0x0040, + 0x171e: 0x0040, 0x171f: 0x0040, 0x1720: 0xb541, 0x1721: 0xb559, 0x1722: 0xb571, 0x1723: 0x89d6, + 0x1724: 0xb589, 0x1725: 0xb5a1, 0x1726: 0x89f5, 0x1727: 0x0040, 0x1728: 0x8a15, 0x1729: 0x8a35, + 0x172a: 0x8a55, 0x172b: 0x8a35, 0x172c: 0x8a75, 0x172d: 0x8a95, 0x172e: 0x8ab5, 0x172f: 0x0040, + 0x1730: 0x0040, 0x1731: 0x0040, 0x1732: 0x0040, 0x1733: 0x0040, 0x1734: 0x0040, 0x1735: 0x0040, + 0x1736: 0x0040, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0340, 0x173a: 0x0340, 0x173b: 0x0340, + 0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040, + // Block 0x5d, offset 0x1740 + 0x1740: 0x0a08, 0x1741: 0x0a08, 0x1742: 0x0a08, 0x1743: 0x0a08, 0x1744: 0x0a08, 0x1745: 0x0c08, + 0x1746: 0x0808, 0x1747: 0x0c08, 0x1748: 0x0818, 0x1749: 0x0c08, 0x174a: 0x0c08, 0x174b: 0x0808, + 0x174c: 0x0808, 0x174d: 0x0908, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0c08, 0x1751: 0x0c08, + 0x1752: 0x0c08, 0x1753: 0x0a08, 0x1754: 0x0a08, 0x1755: 0x0a08, 0x1756: 0x0a08, 0x1757: 0x0908, + 0x1758: 0x0a08, 0x1759: 0x0a08, 0x175a: 0x0a08, 0x175b: 0x0a08, 0x175c: 0x0a08, 0x175d: 0x0c08, + 0x175e: 0x0a08, 0x175f: 0x0a08, 0x1760: 0x0a08, 0x1761: 0x0c08, 0x1762: 0x0808, 0x1763: 0x0808, + 0x1764: 0x0c08, 0x1765: 0x3308, 0x1766: 0x3308, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0040, + 0x176a: 0x0040, 0x176b: 0x0a18, 0x176c: 0x0a18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0c18, + 0x1770: 0x0818, 0x1771: 0x0818, 0x1772: 0x0818, 0x1773: 0x0818, 0x1774: 0x0818, 0x1775: 0x0818, + 0x1776: 0x0818, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040, + 0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040, + // Block 0x5e, offset 0x1780 + 0x1780: 0x0a08, 0x1781: 0x0c08, 0x1782: 0x0a08, 0x1783: 0x0c08, 0x1784: 0x0c08, 0x1785: 0x0c08, + 0x1786: 0x0a08, 0x1787: 0x0a08, 0x1788: 0x0a08, 0x1789: 0x0c08, 0x178a: 0x0a08, 0x178b: 0x0a08, + 0x178c: 0x0c08, 0x178d: 0x0a08, 0x178e: 0x0c08, 0x178f: 0x0c08, 0x1790: 0x0a08, 0x1791: 0x0c08, + 0x1792: 0x0040, 0x1793: 0x0040, 0x1794: 0x0040, 0x1795: 0x0040, 0x1796: 0x0040, 0x1797: 0x0040, + 0x1798: 0x0040, 0x1799: 0x0818, 0x179a: 0x0818, 0x179b: 0x0818, 0x179c: 0x0818, 0x179d: 0x0040, + 0x179e: 0x0040, 0x179f: 0x0040, 0x17a0: 0x0040, 0x17a1: 0x0040, 0x17a2: 0x0040, 0x17a3: 0x0040, + 0x17a4: 0x0040, 0x17a5: 0x0040, 0x17a6: 0x0040, 0x17a7: 0x0040, 0x17a8: 0x0040, 0x17a9: 0x0c18, + 0x17aa: 0x0c18, 0x17ab: 0x0c18, 0x17ac: 0x0c18, 0x17ad: 0x0a18, 0x17ae: 0x0a18, 0x17af: 0x0818, + 0x17b0: 0x0040, 0x17b1: 0x0040, 0x17b2: 0x0040, 0x17b3: 0x0040, 0x17b4: 0x0040, 0x17b5: 0x0040, + 0x17b6: 0x0040, 0x17b7: 0x0040, 0x17b8: 0x0040, 0x17b9: 0x0040, 0x17ba: 0x0040, 0x17bb: 0x0040, + 0x17bc: 0x0040, 0x17bd: 0x0040, 0x17be: 0x0040, 0x17bf: 0x0040, + // Block 0x5f, offset 0x17c0 + 0x17c0: 0x3308, 0x17c1: 0x3308, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x0040, 0x17c5: 0x0008, + 0x17c6: 0x0008, 0x17c7: 0x0008, 0x17c8: 0x0008, 0x17c9: 0x0008, 0x17ca: 0x0008, 0x17cb: 0x0008, + 0x17cc: 0x0008, 0x17cd: 0x0040, 0x17ce: 0x0040, 0x17cf: 0x0008, 0x17d0: 0x0008, 0x17d1: 0x0040, + 0x17d2: 0x0040, 0x17d3: 0x0008, 0x17d4: 0x0008, 0x17d5: 0x0008, 0x17d6: 0x0008, 0x17d7: 0x0008, + 0x17d8: 0x0008, 0x17d9: 0x0008, 0x17da: 0x0008, 0x17db: 0x0008, 0x17dc: 0x0008, 0x17dd: 0x0008, + 0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x0008, 0x17e3: 0x0008, + 0x17e4: 0x0008, 0x17e5: 0x0008, 0x17e6: 0x0008, 0x17e7: 0x0008, 0x17e8: 0x0008, 0x17e9: 0x0040, + 0x17ea: 0x0008, 0x17eb: 0x0008, 0x17ec: 0x0008, 0x17ed: 0x0008, 0x17ee: 0x0008, 0x17ef: 0x0008, + 0x17f0: 0x0008, 0x17f1: 0x0040, 0x17f2: 0x0008, 0x17f3: 0x0008, 0x17f4: 0x0040, 0x17f5: 0x0008, + 0x17f6: 0x0008, 0x17f7: 0x0008, 0x17f8: 0x0008, 0x17f9: 0x0008, 0x17fa: 0x0040, 0x17fb: 0x3308, + 0x17fc: 0x3308, 0x17fd: 0x0008, 0x17fe: 0x3008, 0x17ff: 0x3008, + // Block 0x60, offset 0x1800 + 0x1800: 0x3308, 0x1801: 0x3008, 0x1802: 0x3008, 0x1803: 0x3008, 0x1804: 0x3008, 0x1805: 0x0040, + 0x1806: 0x0040, 0x1807: 0x3008, 0x1808: 0x3008, 0x1809: 0x0040, 0x180a: 0x0040, 0x180b: 0x3008, + 0x180c: 0x3008, 0x180d: 0x3808, 0x180e: 0x0040, 0x180f: 0x0040, 0x1810: 0x0008, 0x1811: 0x0040, + 0x1812: 0x0040, 0x1813: 0x0040, 0x1814: 0x0040, 0x1815: 0x0040, 0x1816: 0x0040, 0x1817: 0x3008, + 0x1818: 0x0040, 0x1819: 0x0040, 0x181a: 0x0040, 0x181b: 0x0040, 0x181c: 0x0040, 0x181d: 0x0008, + 0x181e: 0x0008, 0x181f: 0x0008, 0x1820: 0x0008, 0x1821: 0x0008, 0x1822: 0x3008, 0x1823: 0x3008, + 0x1824: 0x0040, 0x1825: 0x0040, 0x1826: 0x3308, 0x1827: 0x3308, 0x1828: 0x3308, 0x1829: 0x3308, + 0x182a: 0x3308, 0x182b: 0x3308, 0x182c: 0x3308, 0x182d: 0x0040, 0x182e: 0x0040, 0x182f: 0x0040, + 0x1830: 0x3308, 0x1831: 0x3308, 0x1832: 0x3308, 0x1833: 0x3308, 0x1834: 0x3308, 0x1835: 0x0040, + 0x1836: 0x0040, 0x1837: 0x0040, 0x1838: 0x0040, 0x1839: 0x0040, 0x183a: 0x0040, 0x183b: 0x0040, + 0x183c: 0x0040, 0x183d: 0x0040, 0x183e: 0x0040, 0x183f: 0x0040, + // Block 0x61, offset 0x1840 + 0x1840: 0x0039, 0x1841: 0x0ee9, 0x1842: 0x1159, 0x1843: 0x0ef9, 0x1844: 0x0f09, 0x1845: 0x1199, + 0x1846: 0x0f31, 0x1847: 0x0249, 0x1848: 0x0f41, 0x1849: 0x0259, 0x184a: 0x0f51, 0x184b: 0x0359, + 0x184c: 0x0f61, 0x184d: 0x0f71, 0x184e: 0x00d9, 0x184f: 0x0f99, 0x1850: 0x2039, 0x1851: 0x0269, + 0x1852: 0x01d9, 0x1853: 0x0fa9, 0x1854: 0x0fb9, 0x1855: 0x1089, 0x1856: 0x0279, 0x1857: 0x0369, + 0x1858: 0x0289, 0x1859: 0x13d1, 0x185a: 0x0039, 0x185b: 0x0ee9, 0x185c: 0x1159, 0x185d: 0x0ef9, + 0x185e: 0x0f09, 0x185f: 0x1199, 0x1860: 0x0f31, 0x1861: 0x0249, 0x1862: 0x0f41, 0x1863: 0x0259, + 0x1864: 0x0f51, 0x1865: 0x0359, 0x1866: 0x0f61, 0x1867: 0x0f71, 0x1868: 0x00d9, 0x1869: 0x0f99, + 0x186a: 0x2039, 0x186b: 0x0269, 0x186c: 0x01d9, 0x186d: 0x0fa9, 0x186e: 0x0fb9, 0x186f: 0x1089, + 0x1870: 0x0279, 0x1871: 0x0369, 0x1872: 0x0289, 0x1873: 0x13d1, 0x1874: 0x0039, 0x1875: 0x0ee9, + 0x1876: 0x1159, 0x1877: 0x0ef9, 0x1878: 0x0f09, 0x1879: 0x1199, 0x187a: 0x0f31, 0x187b: 0x0249, + 0x187c: 0x0f41, 0x187d: 0x0259, 0x187e: 0x0f51, 0x187f: 0x0359, + // Block 0x62, offset 0x1880 + 0x1880: 0x0f61, 0x1881: 0x0f71, 0x1882: 0x00d9, 0x1883: 0x0f99, 0x1884: 0x2039, 0x1885: 0x0269, + 0x1886: 0x01d9, 0x1887: 0x0fa9, 0x1888: 0x0fb9, 0x1889: 0x1089, 0x188a: 0x0279, 0x188b: 0x0369, + 0x188c: 0x0289, 0x188d: 0x13d1, 0x188e: 0x0039, 0x188f: 0x0ee9, 0x1890: 0x1159, 0x1891: 0x0ef9, + 0x1892: 0x0f09, 0x1893: 0x1199, 0x1894: 0x0f31, 0x1895: 0x0040, 0x1896: 0x0f41, 0x1897: 0x0259, + 0x1898: 0x0f51, 0x1899: 0x0359, 0x189a: 0x0f61, 0x189b: 0x0f71, 0x189c: 0x00d9, 0x189d: 0x0f99, + 0x189e: 0x2039, 0x189f: 0x0269, 0x18a0: 0x01d9, 0x18a1: 0x0fa9, 0x18a2: 0x0fb9, 0x18a3: 0x1089, + 0x18a4: 0x0279, 0x18a5: 0x0369, 0x18a6: 0x0289, 0x18a7: 0x13d1, 0x18a8: 0x0039, 0x18a9: 0x0ee9, + 0x18aa: 0x1159, 0x18ab: 0x0ef9, 0x18ac: 0x0f09, 0x18ad: 0x1199, 0x18ae: 0x0f31, 0x18af: 0x0249, + 0x18b0: 0x0f41, 0x18b1: 0x0259, 0x18b2: 0x0f51, 0x18b3: 0x0359, 0x18b4: 0x0f61, 0x18b5: 0x0f71, + 0x18b6: 0x00d9, 0x18b7: 0x0f99, 0x18b8: 0x2039, 0x18b9: 0x0269, 0x18ba: 0x01d9, 0x18bb: 0x0fa9, + 0x18bc: 0x0fb9, 0x18bd: 0x1089, 0x18be: 0x0279, 0x18bf: 0x0369, + // Block 0x63, offset 0x18c0 + 0x18c0: 0x0289, 0x18c1: 0x13d1, 0x18c2: 0x0039, 0x18c3: 0x0ee9, 0x18c4: 0x1159, 0x18c5: 0x0ef9, + 0x18c6: 0x0f09, 0x18c7: 0x1199, 0x18c8: 0x0f31, 0x18c9: 0x0249, 0x18ca: 0x0f41, 0x18cb: 0x0259, + 0x18cc: 0x0f51, 0x18cd: 0x0359, 0x18ce: 0x0f61, 0x18cf: 0x0f71, 0x18d0: 0x00d9, 0x18d1: 0x0f99, + 0x18d2: 0x2039, 0x18d3: 0x0269, 0x18d4: 0x01d9, 0x18d5: 0x0fa9, 0x18d6: 0x0fb9, 0x18d7: 0x1089, + 0x18d8: 0x0279, 0x18d9: 0x0369, 0x18da: 0x0289, 0x18db: 0x13d1, 0x18dc: 0x0039, 0x18dd: 0x0040, + 0x18de: 0x1159, 0x18df: 0x0ef9, 0x18e0: 0x0040, 0x18e1: 0x0040, 0x18e2: 0x0f31, 0x18e3: 0x0040, + 0x18e4: 0x0040, 0x18e5: 0x0259, 0x18e6: 0x0f51, 0x18e7: 0x0040, 0x18e8: 0x0040, 0x18e9: 0x0f71, + 0x18ea: 0x00d9, 0x18eb: 0x0f99, 0x18ec: 0x2039, 0x18ed: 0x0040, 0x18ee: 0x01d9, 0x18ef: 0x0fa9, + 0x18f0: 0x0fb9, 0x18f1: 0x1089, 0x18f2: 0x0279, 0x18f3: 0x0369, 0x18f4: 0x0289, 0x18f5: 0x13d1, + 0x18f6: 0x0039, 0x18f7: 0x0ee9, 0x18f8: 0x1159, 0x18f9: 0x0ef9, 0x18fa: 0x0040, 0x18fb: 0x1199, + 0x18fc: 0x0040, 0x18fd: 0x0249, 0x18fe: 0x0f41, 0x18ff: 0x0259, + // Block 0x64, offset 0x1900 + 0x1900: 0x0f51, 0x1901: 0x0359, 0x1902: 0x0f61, 0x1903: 0x0f71, 0x1904: 0x0040, 0x1905: 0x0f99, + 0x1906: 0x2039, 0x1907: 0x0269, 0x1908: 0x01d9, 0x1909: 0x0fa9, 0x190a: 0x0fb9, 0x190b: 0x1089, + 0x190c: 0x0279, 0x190d: 0x0369, 0x190e: 0x0289, 0x190f: 0x13d1, 0x1910: 0x0039, 0x1911: 0x0ee9, + 0x1912: 0x1159, 0x1913: 0x0ef9, 0x1914: 0x0f09, 0x1915: 0x1199, 0x1916: 0x0f31, 0x1917: 0x0249, + 0x1918: 0x0f41, 0x1919: 0x0259, 0x191a: 0x0f51, 0x191b: 0x0359, 0x191c: 0x0f61, 0x191d: 0x0f71, + 0x191e: 0x00d9, 0x191f: 0x0f99, 0x1920: 0x2039, 0x1921: 0x0269, 0x1922: 0x01d9, 0x1923: 0x0fa9, + 0x1924: 0x0fb9, 0x1925: 0x1089, 0x1926: 0x0279, 0x1927: 0x0369, 0x1928: 0x0289, 0x1929: 0x13d1, + 0x192a: 0x0039, 0x192b: 0x0ee9, 0x192c: 0x1159, 0x192d: 0x0ef9, 0x192e: 0x0f09, 0x192f: 0x1199, + 0x1930: 0x0f31, 0x1931: 0x0249, 0x1932: 0x0f41, 0x1933: 0x0259, 0x1934: 0x0f51, 0x1935: 0x0359, + 0x1936: 0x0f61, 0x1937: 0x0f71, 0x1938: 0x00d9, 0x1939: 0x0f99, 0x193a: 0x2039, 0x193b: 0x0269, + 0x193c: 0x01d9, 0x193d: 0x0fa9, 0x193e: 0x0fb9, 0x193f: 0x1089, + // Block 0x65, offset 0x1940 + 0x1940: 0x0279, 0x1941: 0x0369, 0x1942: 0x0289, 0x1943: 0x13d1, 0x1944: 0x0039, 0x1945: 0x0ee9, + 0x1946: 0x0040, 0x1947: 0x0ef9, 0x1948: 0x0f09, 0x1949: 0x1199, 0x194a: 0x0f31, 0x194b: 0x0040, + 0x194c: 0x0040, 0x194d: 0x0259, 0x194e: 0x0f51, 0x194f: 0x0359, 0x1950: 0x0f61, 0x1951: 0x0f71, + 0x1952: 0x00d9, 0x1953: 0x0f99, 0x1954: 0x2039, 0x1955: 0x0040, 0x1956: 0x01d9, 0x1957: 0x0fa9, + 0x1958: 0x0fb9, 0x1959: 0x1089, 0x195a: 0x0279, 0x195b: 0x0369, 0x195c: 0x0289, 0x195d: 0x0040, + 0x195e: 0x0039, 0x195f: 0x0ee9, 0x1960: 0x1159, 0x1961: 0x0ef9, 0x1962: 0x0f09, 0x1963: 0x1199, + 0x1964: 0x0f31, 0x1965: 0x0249, 0x1966: 0x0f41, 0x1967: 0x0259, 0x1968: 0x0f51, 0x1969: 0x0359, + 0x196a: 0x0f61, 0x196b: 0x0f71, 0x196c: 0x00d9, 0x196d: 0x0f99, 0x196e: 0x2039, 0x196f: 0x0269, + 0x1970: 0x01d9, 0x1971: 0x0fa9, 0x1972: 0x0fb9, 0x1973: 0x1089, 0x1974: 0x0279, 0x1975: 0x0369, + 0x1976: 0x0289, 0x1977: 0x13d1, 0x1978: 0x0039, 0x1979: 0x0ee9, 0x197a: 0x0040, 0x197b: 0x0ef9, + 0x197c: 0x0f09, 0x197d: 0x1199, 0x197e: 0x0f31, 0x197f: 0x0040, + // Block 0x66, offset 0x1980 + 0x1980: 0x0f41, 0x1981: 0x0259, 0x1982: 0x0f51, 0x1983: 0x0359, 0x1984: 0x0f61, 0x1985: 0x0040, + 0x1986: 0x00d9, 0x1987: 0x0040, 0x1988: 0x0040, 0x1989: 0x0040, 0x198a: 0x01d9, 0x198b: 0x0fa9, + 0x198c: 0x0fb9, 0x198d: 0x1089, 0x198e: 0x0279, 0x198f: 0x0369, 0x1990: 0x0289, 0x1991: 0x0040, + 0x1992: 0x0039, 0x1993: 0x0ee9, 0x1994: 0x1159, 0x1995: 0x0ef9, 0x1996: 0x0f09, 0x1997: 0x1199, + 0x1998: 0x0f31, 0x1999: 0x0249, 0x199a: 0x0f41, 0x199b: 0x0259, 0x199c: 0x0f51, 0x199d: 0x0359, + 0x199e: 0x0f61, 0x199f: 0x0f71, 0x19a0: 0x00d9, 0x19a1: 0x0f99, 0x19a2: 0x2039, 0x19a3: 0x0269, + 0x19a4: 0x01d9, 0x19a5: 0x0fa9, 0x19a6: 0x0fb9, 0x19a7: 0x1089, 0x19a8: 0x0279, 0x19a9: 0x0369, + 0x19aa: 0x0289, 0x19ab: 0x13d1, 0x19ac: 0x0039, 0x19ad: 0x0ee9, 0x19ae: 0x1159, 0x19af: 0x0ef9, + 0x19b0: 0x0f09, 0x19b1: 0x1199, 0x19b2: 0x0f31, 0x19b3: 0x0249, 0x19b4: 0x0f41, 0x19b5: 0x0259, + 0x19b6: 0x0f51, 0x19b7: 0x0359, 0x19b8: 0x0f61, 0x19b9: 0x0f71, 0x19ba: 0x00d9, 0x19bb: 0x0f99, + 0x19bc: 0x2039, 0x19bd: 0x0269, 0x19be: 0x01d9, 0x19bf: 0x0fa9, + // Block 0x67, offset 0x19c0 + 0x19c0: 0x0fb9, 0x19c1: 0x1089, 0x19c2: 0x0279, 0x19c3: 0x0369, 0x19c4: 0x0289, 0x19c5: 0x13d1, + 0x19c6: 0x0039, 0x19c7: 0x0ee9, 0x19c8: 0x1159, 0x19c9: 0x0ef9, 0x19ca: 0x0f09, 0x19cb: 0x1199, + 0x19cc: 0x0f31, 0x19cd: 0x0249, 0x19ce: 0x0f41, 0x19cf: 0x0259, 0x19d0: 0x0f51, 0x19d1: 0x0359, + 0x19d2: 0x0f61, 0x19d3: 0x0f71, 0x19d4: 0x00d9, 0x19d5: 0x0f99, 0x19d6: 0x2039, 0x19d7: 0x0269, + 0x19d8: 0x01d9, 0x19d9: 0x0fa9, 0x19da: 0x0fb9, 0x19db: 0x1089, 0x19dc: 0x0279, 0x19dd: 0x0369, + 0x19de: 0x0289, 0x19df: 0x13d1, 0x19e0: 0x0039, 0x19e1: 0x0ee9, 0x19e2: 0x1159, 0x19e3: 0x0ef9, + 0x19e4: 0x0f09, 0x19e5: 0x1199, 0x19e6: 0x0f31, 0x19e7: 0x0249, 0x19e8: 0x0f41, 0x19e9: 0x0259, + 0x19ea: 0x0f51, 0x19eb: 0x0359, 0x19ec: 0x0f61, 0x19ed: 0x0f71, 0x19ee: 0x00d9, 0x19ef: 0x0f99, + 0x19f0: 0x2039, 0x19f1: 0x0269, 0x19f2: 0x01d9, 0x19f3: 0x0fa9, 0x19f4: 0x0fb9, 0x19f5: 0x1089, + 0x19f6: 0x0279, 0x19f7: 0x0369, 0x19f8: 0x0289, 0x19f9: 0x13d1, 0x19fa: 0x0039, 0x19fb: 0x0ee9, + 0x19fc: 0x1159, 0x19fd: 0x0ef9, 0x19fe: 0x0f09, 0x19ff: 0x1199, + // Block 0x68, offset 0x1a00 + 0x1a00: 0x0f31, 0x1a01: 0x0249, 0x1a02: 0x0f41, 0x1a03: 0x0259, 0x1a04: 0x0f51, 0x1a05: 0x0359, + 0x1a06: 0x0f61, 0x1a07: 0x0f71, 0x1a08: 0x00d9, 0x1a09: 0x0f99, 0x1a0a: 0x2039, 0x1a0b: 0x0269, + 0x1a0c: 0x01d9, 0x1a0d: 0x0fa9, 0x1a0e: 0x0fb9, 0x1a0f: 0x1089, 0x1a10: 0x0279, 0x1a11: 0x0369, + 0x1a12: 0x0289, 0x1a13: 0x13d1, 0x1a14: 0x0039, 0x1a15: 0x0ee9, 0x1a16: 0x1159, 0x1a17: 0x0ef9, + 0x1a18: 0x0f09, 0x1a19: 0x1199, 0x1a1a: 0x0f31, 0x1a1b: 0x0249, 0x1a1c: 0x0f41, 0x1a1d: 0x0259, + 0x1a1e: 0x0f51, 0x1a1f: 0x0359, 0x1a20: 0x0f61, 0x1a21: 0x0f71, 0x1a22: 0x00d9, 0x1a23: 0x0f99, + 0x1a24: 0x2039, 0x1a25: 0x0269, 0x1a26: 0x01d9, 0x1a27: 0x0fa9, 0x1a28: 0x0fb9, 0x1a29: 0x1089, + 0x1a2a: 0x0279, 0x1a2b: 0x0369, 0x1a2c: 0x0289, 0x1a2d: 0x13d1, 0x1a2e: 0x0039, 0x1a2f: 0x0ee9, + 0x1a30: 0x1159, 0x1a31: 0x0ef9, 0x1a32: 0x0f09, 0x1a33: 0x1199, 0x1a34: 0x0f31, 0x1a35: 0x0249, + 0x1a36: 0x0f41, 0x1a37: 0x0259, 0x1a38: 0x0f51, 0x1a39: 0x0359, 0x1a3a: 0x0f61, 0x1a3b: 0x0f71, + 0x1a3c: 0x00d9, 0x1a3d: 0x0f99, 0x1a3e: 0x2039, 0x1a3f: 0x0269, + // Block 0x69, offset 0x1a40 + 0x1a40: 0x01d9, 0x1a41: 0x0fa9, 0x1a42: 0x0fb9, 0x1a43: 0x1089, 0x1a44: 0x0279, 0x1a45: 0x0369, + 0x1a46: 0x0289, 0x1a47: 0x13d1, 0x1a48: 0x0039, 0x1a49: 0x0ee9, 0x1a4a: 0x1159, 0x1a4b: 0x0ef9, + 0x1a4c: 0x0f09, 0x1a4d: 0x1199, 0x1a4e: 0x0f31, 0x1a4f: 0x0249, 0x1a50: 0x0f41, 0x1a51: 0x0259, + 0x1a52: 0x0f51, 0x1a53: 0x0359, 0x1a54: 0x0f61, 0x1a55: 0x0f71, 0x1a56: 0x00d9, 0x1a57: 0x0f99, + 0x1a58: 0x2039, 0x1a59: 0x0269, 0x1a5a: 0x01d9, 0x1a5b: 0x0fa9, 0x1a5c: 0x0fb9, 0x1a5d: 0x1089, + 0x1a5e: 0x0279, 0x1a5f: 0x0369, 0x1a60: 0x0289, 0x1a61: 0x13d1, 0x1a62: 0x0039, 0x1a63: 0x0ee9, + 0x1a64: 0x1159, 0x1a65: 0x0ef9, 0x1a66: 0x0f09, 0x1a67: 0x1199, 0x1a68: 0x0f31, 0x1a69: 0x0249, + 0x1a6a: 0x0f41, 0x1a6b: 0x0259, 0x1a6c: 0x0f51, 0x1a6d: 0x0359, 0x1a6e: 0x0f61, 0x1a6f: 0x0f71, + 0x1a70: 0x00d9, 0x1a71: 0x0f99, 0x1a72: 0x2039, 0x1a73: 0x0269, 0x1a74: 0x01d9, 0x1a75: 0x0fa9, + 0x1a76: 0x0fb9, 0x1a77: 0x1089, 0x1a78: 0x0279, 0x1a79: 0x0369, 0x1a7a: 0x0289, 0x1a7b: 0x13d1, + 0x1a7c: 0x0039, 0x1a7d: 0x0ee9, 0x1a7e: 0x1159, 0x1a7f: 0x0ef9, + // Block 0x6a, offset 0x1a80 + 0x1a80: 0x0f09, 0x1a81: 0x1199, 0x1a82: 0x0f31, 0x1a83: 0x0249, 0x1a84: 0x0f41, 0x1a85: 0x0259, + 0x1a86: 0x0f51, 0x1a87: 0x0359, 0x1a88: 0x0f61, 0x1a89: 0x0f71, 0x1a8a: 0x00d9, 0x1a8b: 0x0f99, + 0x1a8c: 0x2039, 0x1a8d: 0x0269, 0x1a8e: 0x01d9, 0x1a8f: 0x0fa9, 0x1a90: 0x0fb9, 0x1a91: 0x1089, + 0x1a92: 0x0279, 0x1a93: 0x0369, 0x1a94: 0x0289, 0x1a95: 0x13d1, 0x1a96: 0x0039, 0x1a97: 0x0ee9, + 0x1a98: 0x1159, 0x1a99: 0x0ef9, 0x1a9a: 0x0f09, 0x1a9b: 0x1199, 0x1a9c: 0x0f31, 0x1a9d: 0x0249, + 0x1a9e: 0x0f41, 0x1a9f: 0x0259, 0x1aa0: 0x0f51, 0x1aa1: 0x0359, 0x1aa2: 0x0f61, 0x1aa3: 0x0f71, + 0x1aa4: 0x00d9, 0x1aa5: 0x0f99, 0x1aa6: 0x2039, 0x1aa7: 0x0269, 0x1aa8: 0x01d9, 0x1aa9: 0x0fa9, + 0x1aaa: 0x0fb9, 0x1aab: 0x1089, 0x1aac: 0x0279, 0x1aad: 0x0369, 0x1aae: 0x0289, 0x1aaf: 0x13d1, + 0x1ab0: 0x0039, 0x1ab1: 0x0ee9, 0x1ab2: 0x1159, 0x1ab3: 0x0ef9, 0x1ab4: 0x0f09, 0x1ab5: 0x1199, + 0x1ab6: 0x0f31, 0x1ab7: 0x0249, 0x1ab8: 0x0f41, 0x1ab9: 0x0259, 0x1aba: 0x0f51, 0x1abb: 0x0359, + 0x1abc: 0x0f61, 0x1abd: 0x0f71, 0x1abe: 0x00d9, 0x1abf: 0x0f99, + // Block 0x6b, offset 0x1ac0 + 0x1ac0: 0x2039, 0x1ac1: 0x0269, 0x1ac2: 0x01d9, 0x1ac3: 0x0fa9, 0x1ac4: 0x0fb9, 0x1ac5: 0x1089, + 0x1ac6: 0x0279, 0x1ac7: 0x0369, 0x1ac8: 0x0289, 0x1ac9: 0x13d1, 0x1aca: 0x0039, 0x1acb: 0x0ee9, + 0x1acc: 0x1159, 0x1acd: 0x0ef9, 0x1ace: 0x0f09, 0x1acf: 0x1199, 0x1ad0: 0x0f31, 0x1ad1: 0x0249, + 0x1ad2: 0x0f41, 0x1ad3: 0x0259, 0x1ad4: 0x0f51, 0x1ad5: 0x0359, 0x1ad6: 0x0f61, 0x1ad7: 0x0f71, + 0x1ad8: 0x00d9, 0x1ad9: 0x0f99, 0x1ada: 0x2039, 0x1adb: 0x0269, 0x1adc: 0x01d9, 0x1add: 0x0fa9, + 0x1ade: 0x0fb9, 0x1adf: 0x1089, 0x1ae0: 0x0279, 0x1ae1: 0x0369, 0x1ae2: 0x0289, 0x1ae3: 0x13d1, + 0x1ae4: 0xba81, 0x1ae5: 0xba99, 0x1ae6: 0x0040, 0x1ae7: 0x0040, 0x1ae8: 0xbab1, 0x1ae9: 0x1099, + 0x1aea: 0x10b1, 0x1aeb: 0x10c9, 0x1aec: 0xbac9, 0x1aed: 0xbae1, 0x1aee: 0xbaf9, 0x1aef: 0x1429, + 0x1af0: 0x1a31, 0x1af1: 0xbb11, 0x1af2: 0xbb29, 0x1af3: 0xbb41, 0x1af4: 0xbb59, 0x1af5: 0xbb71, + 0x1af6: 0xbb89, 0x1af7: 0x2109, 0x1af8: 0x1111, 0x1af9: 0x1429, 0x1afa: 0xbba1, 0x1afb: 0xbbb9, + 0x1afc: 0xbbd1, 0x1afd: 0x10e1, 0x1afe: 0x10f9, 0x1aff: 0xbbe9, + // Block 0x6c, offset 0x1b00 + 0x1b00: 0x2079, 0x1b01: 0xbc01, 0x1b02: 0xbab1, 0x1b03: 0x1099, 0x1b04: 0x10b1, 0x1b05: 0x10c9, + 0x1b06: 0xbac9, 0x1b07: 0xbae1, 0x1b08: 0xbaf9, 0x1b09: 0x1429, 0x1b0a: 0x1a31, 0x1b0b: 0xbb11, + 0x1b0c: 0xbb29, 0x1b0d: 0xbb41, 0x1b0e: 0xbb59, 0x1b0f: 0xbb71, 0x1b10: 0xbb89, 0x1b11: 0x2109, + 0x1b12: 0x1111, 0x1b13: 0xbba1, 0x1b14: 0xbba1, 0x1b15: 0xbbb9, 0x1b16: 0xbbd1, 0x1b17: 0x10e1, + 0x1b18: 0x10f9, 0x1b19: 0xbbe9, 0x1b1a: 0x2079, 0x1b1b: 0xbc21, 0x1b1c: 0xbac9, 0x1b1d: 0x1429, + 0x1b1e: 0xbb11, 0x1b1f: 0x10e1, 0x1b20: 0x1111, 0x1b21: 0x2109, 0x1b22: 0xbab1, 0x1b23: 0x1099, + 0x1b24: 0x10b1, 0x1b25: 0x10c9, 0x1b26: 0xbac9, 0x1b27: 0xbae1, 0x1b28: 0xbaf9, 0x1b29: 0x1429, + 0x1b2a: 0x1a31, 0x1b2b: 0xbb11, 0x1b2c: 0xbb29, 0x1b2d: 0xbb41, 0x1b2e: 0xbb59, 0x1b2f: 0xbb71, + 0x1b30: 0xbb89, 0x1b31: 0x2109, 0x1b32: 0x1111, 0x1b33: 0x1429, 0x1b34: 0xbba1, 0x1b35: 0xbbb9, + 0x1b36: 0xbbd1, 0x1b37: 0x10e1, 0x1b38: 0x10f9, 0x1b39: 0xbbe9, 0x1b3a: 0x2079, 0x1b3b: 0xbc01, + 0x1b3c: 0xbab1, 0x1b3d: 0x1099, 0x1b3e: 0x10b1, 0x1b3f: 0x10c9, + // Block 0x6d, offset 0x1b40 + 0x1b40: 0xbac9, 0x1b41: 0xbae1, 0x1b42: 0xbaf9, 0x1b43: 0x1429, 0x1b44: 0x1a31, 0x1b45: 0xbb11, + 0x1b46: 0xbb29, 0x1b47: 0xbb41, 0x1b48: 0xbb59, 0x1b49: 0xbb71, 0x1b4a: 0xbb89, 0x1b4b: 0x2109, + 0x1b4c: 0x1111, 0x1b4d: 0xbba1, 0x1b4e: 0xbba1, 0x1b4f: 0xbbb9, 0x1b50: 0xbbd1, 0x1b51: 0x10e1, + 0x1b52: 0x10f9, 0x1b53: 0xbbe9, 0x1b54: 0x2079, 0x1b55: 0xbc21, 0x1b56: 0xbac9, 0x1b57: 0x1429, + 0x1b58: 0xbb11, 0x1b59: 0x10e1, 0x1b5a: 0x1111, 0x1b5b: 0x2109, 0x1b5c: 0xbab1, 0x1b5d: 0x1099, + 0x1b5e: 0x10b1, 0x1b5f: 0x10c9, 0x1b60: 0xbac9, 0x1b61: 0xbae1, 0x1b62: 0xbaf9, 0x1b63: 0x1429, + 0x1b64: 0x1a31, 0x1b65: 0xbb11, 0x1b66: 0xbb29, 0x1b67: 0xbb41, 0x1b68: 0xbb59, 0x1b69: 0xbb71, + 0x1b6a: 0xbb89, 0x1b6b: 0x2109, 0x1b6c: 0x1111, 0x1b6d: 0x1429, 0x1b6e: 0xbba1, 0x1b6f: 0xbbb9, + 0x1b70: 0xbbd1, 0x1b71: 0x10e1, 0x1b72: 0x10f9, 0x1b73: 0xbbe9, 0x1b74: 0x2079, 0x1b75: 0xbc01, + 0x1b76: 0xbab1, 0x1b77: 0x1099, 0x1b78: 0x10b1, 0x1b79: 0x10c9, 0x1b7a: 0xbac9, 0x1b7b: 0xbae1, + 0x1b7c: 0xbaf9, 0x1b7d: 0x1429, 0x1b7e: 0x1a31, 0x1b7f: 0xbb11, + // Block 0x6e, offset 0x1b80 + 0x1b80: 0xbb29, 0x1b81: 0xbb41, 0x1b82: 0xbb59, 0x1b83: 0xbb71, 0x1b84: 0xbb89, 0x1b85: 0x2109, + 0x1b86: 0x1111, 0x1b87: 0xbba1, 0x1b88: 0xbba1, 0x1b89: 0xbbb9, 0x1b8a: 0xbbd1, 0x1b8b: 0x10e1, + 0x1b8c: 0x10f9, 0x1b8d: 0xbbe9, 0x1b8e: 0x2079, 0x1b8f: 0xbc21, 0x1b90: 0xbac9, 0x1b91: 0x1429, + 0x1b92: 0xbb11, 0x1b93: 0x10e1, 0x1b94: 0x1111, 0x1b95: 0x2109, 0x1b96: 0xbab1, 0x1b97: 0x1099, + 0x1b98: 0x10b1, 0x1b99: 0x10c9, 0x1b9a: 0xbac9, 0x1b9b: 0xbae1, 0x1b9c: 0xbaf9, 0x1b9d: 0x1429, + 0x1b9e: 0x1a31, 0x1b9f: 0xbb11, 0x1ba0: 0xbb29, 0x1ba1: 0xbb41, 0x1ba2: 0xbb59, 0x1ba3: 0xbb71, + 0x1ba4: 0xbb89, 0x1ba5: 0x2109, 0x1ba6: 0x1111, 0x1ba7: 0x1429, 0x1ba8: 0xbba1, 0x1ba9: 0xbbb9, + 0x1baa: 0xbbd1, 0x1bab: 0x10e1, 0x1bac: 0x10f9, 0x1bad: 0xbbe9, 0x1bae: 0x2079, 0x1baf: 0xbc01, + 0x1bb0: 0xbab1, 0x1bb1: 0x1099, 0x1bb2: 0x10b1, 0x1bb3: 0x10c9, 0x1bb4: 0xbac9, 0x1bb5: 0xbae1, + 0x1bb6: 0xbaf9, 0x1bb7: 0x1429, 0x1bb8: 0x1a31, 0x1bb9: 0xbb11, 0x1bba: 0xbb29, 0x1bbb: 0xbb41, + 0x1bbc: 0xbb59, 0x1bbd: 0xbb71, 0x1bbe: 0xbb89, 0x1bbf: 0x2109, + // Block 0x6f, offset 0x1bc0 + 0x1bc0: 0x1111, 0x1bc1: 0xbba1, 0x1bc2: 0xbba1, 0x1bc3: 0xbbb9, 0x1bc4: 0xbbd1, 0x1bc5: 0x10e1, + 0x1bc6: 0x10f9, 0x1bc7: 0xbbe9, 0x1bc8: 0x2079, 0x1bc9: 0xbc21, 0x1bca: 0xbac9, 0x1bcb: 0x1429, + 0x1bcc: 0xbb11, 0x1bcd: 0x10e1, 0x1bce: 0x1111, 0x1bcf: 0x2109, 0x1bd0: 0xbab1, 0x1bd1: 0x1099, + 0x1bd2: 0x10b1, 0x1bd3: 0x10c9, 0x1bd4: 0xbac9, 0x1bd5: 0xbae1, 0x1bd6: 0xbaf9, 0x1bd7: 0x1429, + 0x1bd8: 0x1a31, 0x1bd9: 0xbb11, 0x1bda: 0xbb29, 0x1bdb: 0xbb41, 0x1bdc: 0xbb59, 0x1bdd: 0xbb71, + 0x1bde: 0xbb89, 0x1bdf: 0x2109, 0x1be0: 0x1111, 0x1be1: 0x1429, 0x1be2: 0xbba1, 0x1be3: 0xbbb9, + 0x1be4: 0xbbd1, 0x1be5: 0x10e1, 0x1be6: 0x10f9, 0x1be7: 0xbbe9, 0x1be8: 0x2079, 0x1be9: 0xbc01, + 0x1bea: 0xbab1, 0x1beb: 0x1099, 0x1bec: 0x10b1, 0x1bed: 0x10c9, 0x1bee: 0xbac9, 0x1bef: 0xbae1, + 0x1bf0: 0xbaf9, 0x1bf1: 0x1429, 0x1bf2: 0x1a31, 0x1bf3: 0xbb11, 0x1bf4: 0xbb29, 0x1bf5: 0xbb41, + 0x1bf6: 0xbb59, 0x1bf7: 0xbb71, 0x1bf8: 0xbb89, 0x1bf9: 0x2109, 0x1bfa: 0x1111, 0x1bfb: 0xbba1, + 0x1bfc: 0xbba1, 0x1bfd: 0xbbb9, 0x1bfe: 0xbbd1, 0x1bff: 0x10e1, + // Block 0x70, offset 0x1c00 + 0x1c00: 0x10f9, 0x1c01: 0xbbe9, 0x1c02: 0x2079, 0x1c03: 0xbc21, 0x1c04: 0xbac9, 0x1c05: 0x1429, + 0x1c06: 0xbb11, 0x1c07: 0x10e1, 0x1c08: 0x1111, 0x1c09: 0x2109, 0x1c0a: 0xbc41, 0x1c0b: 0xbc41, + 0x1c0c: 0x0040, 0x1c0d: 0x0040, 0x1c0e: 0x1f41, 0x1c0f: 0x00c9, 0x1c10: 0x0069, 0x1c11: 0x0079, + 0x1c12: 0x1f51, 0x1c13: 0x1f61, 0x1c14: 0x1f71, 0x1c15: 0x1f81, 0x1c16: 0x1f91, 0x1c17: 0x1fa1, + 0x1c18: 0x1f41, 0x1c19: 0x00c9, 0x1c1a: 0x0069, 0x1c1b: 0x0079, 0x1c1c: 0x1f51, 0x1c1d: 0x1f61, + 0x1c1e: 0x1f71, 0x1c1f: 0x1f81, 0x1c20: 0x1f91, 0x1c21: 0x1fa1, 0x1c22: 0x1f41, 0x1c23: 0x00c9, + 0x1c24: 0x0069, 0x1c25: 0x0079, 0x1c26: 0x1f51, 0x1c27: 0x1f61, 0x1c28: 0x1f71, 0x1c29: 0x1f81, + 0x1c2a: 0x1f91, 0x1c2b: 0x1fa1, 0x1c2c: 0x1f41, 0x1c2d: 0x00c9, 0x1c2e: 0x0069, 0x1c2f: 0x0079, + 0x1c30: 0x1f51, 0x1c31: 0x1f61, 0x1c32: 0x1f71, 0x1c33: 0x1f81, 0x1c34: 0x1f91, 0x1c35: 0x1fa1, + 0x1c36: 0x1f41, 0x1c37: 0x00c9, 0x1c38: 0x0069, 0x1c39: 0x0079, 0x1c3a: 0x1f51, 0x1c3b: 0x1f61, + 0x1c3c: 0x1f71, 0x1c3d: 0x1f81, 0x1c3e: 0x1f91, 0x1c3f: 0x1fa1, + // Block 0x71, offset 0x1c40 + 0x1c40: 0xe115, 0x1c41: 0xe115, 0x1c42: 0xe135, 0x1c43: 0xe135, 0x1c44: 0xe115, 0x1c45: 0xe115, + 0x1c46: 0xe175, 0x1c47: 0xe175, 0x1c48: 0xe115, 0x1c49: 0xe115, 0x1c4a: 0xe135, 0x1c4b: 0xe135, + 0x1c4c: 0xe115, 0x1c4d: 0xe115, 0x1c4e: 0xe1f5, 0x1c4f: 0xe1f5, 0x1c50: 0xe115, 0x1c51: 0xe115, + 0x1c52: 0xe135, 0x1c53: 0xe135, 0x1c54: 0xe115, 0x1c55: 0xe115, 0x1c56: 0xe175, 0x1c57: 0xe175, + 0x1c58: 0xe115, 0x1c59: 0xe115, 0x1c5a: 0xe135, 0x1c5b: 0xe135, 0x1c5c: 0xe115, 0x1c5d: 0xe115, + 0x1c5e: 0x8b05, 0x1c5f: 0x8b05, 0x1c60: 0x04b5, 0x1c61: 0x04b5, 0x1c62: 0x0a08, 0x1c63: 0x0a08, + 0x1c64: 0x0a08, 0x1c65: 0x0a08, 0x1c66: 0x0a08, 0x1c67: 0x0a08, 0x1c68: 0x0a08, 0x1c69: 0x0a08, + 0x1c6a: 0x0a08, 0x1c6b: 0x0a08, 0x1c6c: 0x0a08, 0x1c6d: 0x0a08, 0x1c6e: 0x0a08, 0x1c6f: 0x0a08, + 0x1c70: 0x0a08, 0x1c71: 0x0a08, 0x1c72: 0x0a08, 0x1c73: 0x0a08, 0x1c74: 0x0a08, 0x1c75: 0x0a08, + 0x1c76: 0x0a08, 0x1c77: 0x0a08, 0x1c78: 0x0a08, 0x1c79: 0x0a08, 0x1c7a: 0x0a08, 0x1c7b: 0x0a08, + 0x1c7c: 0x0a08, 0x1c7d: 0x0a08, 0x1c7e: 0x0a08, 0x1c7f: 0x0a08, + // Block 0x72, offset 0x1c80 + 0x1c80: 0xb189, 0x1c81: 0xb1a1, 0x1c82: 0xb201, 0x1c83: 0xb249, 0x1c84: 0x0040, 0x1c85: 0xb411, + 0x1c86: 0xb291, 0x1c87: 0xb219, 0x1c88: 0xb309, 0x1c89: 0xb429, 0x1c8a: 0xb399, 0x1c8b: 0xb3b1, + 0x1c8c: 0xb3c9, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0xb369, 0x1c91: 0xb2d9, + 0x1c92: 0xb381, 0x1c93: 0xb279, 0x1c94: 0xb2c1, 0x1c95: 0xb1d1, 0x1c96: 0xb1e9, 0x1c97: 0xb231, + 0x1c98: 0xb261, 0x1c99: 0xb2f1, 0x1c9a: 0xb321, 0x1c9b: 0xb351, 0x1c9c: 0xbc59, 0x1c9d: 0x7949, + 0x1c9e: 0xbc71, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040, + 0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0x0040, 0x1ca9: 0xb429, + 0x1caa: 0xb399, 0x1cab: 0xb3b1, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, + 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, + 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0x0040, 0x1cbb: 0xb351, + 0x1cbc: 0x0040, 0x1cbd: 0x0040, 0x1cbe: 0x0040, 0x1cbf: 0x0040, + // Block 0x73, offset 0x1cc0 + 0x1cc0: 0x0040, 0x1cc1: 0x0040, 0x1cc2: 0xb201, 0x1cc3: 0x0040, 0x1cc4: 0x0040, 0x1cc5: 0x0040, + 0x1cc6: 0x0040, 0x1cc7: 0xb219, 0x1cc8: 0x0040, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1, + 0x1ccc: 0x0040, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0x0040, 0x1cd1: 0xb2d9, + 0x1cd2: 0xb381, 0x1cd3: 0x0040, 0x1cd4: 0xb2c1, 0x1cd5: 0x0040, 0x1cd6: 0x0040, 0x1cd7: 0xb231, + 0x1cd8: 0x0040, 0x1cd9: 0xb2f1, 0x1cda: 0x0040, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x7949, + 0x1cde: 0x0040, 0x1cdf: 0xbc89, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0x0040, + 0x1ce4: 0xb3f9, 0x1ce5: 0x0040, 0x1ce6: 0x0040, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429, + 0x1cea: 0xb399, 0x1ceb: 0x0040, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339, + 0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0x0040, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1, + 0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0x0040, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351, + 0x1cfc: 0xbc59, 0x1cfd: 0x0040, 0x1cfe: 0xbc71, 0x1cff: 0x0040, + // Block 0x74, offset 0x1d00 + 0x1d00: 0xb189, 0x1d01: 0xb1a1, 0x1d02: 0xb201, 0x1d03: 0xb249, 0x1d04: 0xb3f9, 0x1d05: 0xb411, + 0x1d06: 0xb291, 0x1d07: 0xb219, 0x1d08: 0xb309, 0x1d09: 0xb429, 0x1d0a: 0x0040, 0x1d0b: 0xb3b1, + 0x1d0c: 0xb3c9, 0x1d0d: 0xb3e1, 0x1d0e: 0xb2a9, 0x1d0f: 0xb339, 0x1d10: 0xb369, 0x1d11: 0xb2d9, + 0x1d12: 0xb381, 0x1d13: 0xb279, 0x1d14: 0xb2c1, 0x1d15: 0xb1d1, 0x1d16: 0xb1e9, 0x1d17: 0xb231, + 0x1d18: 0xb261, 0x1d19: 0xb2f1, 0x1d1a: 0xb321, 0x1d1b: 0xb351, 0x1d1c: 0x0040, 0x1d1d: 0x0040, + 0x1d1e: 0x0040, 0x1d1f: 0x0040, 0x1d20: 0x0040, 0x1d21: 0xb1a1, 0x1d22: 0xb201, 0x1d23: 0xb249, + 0x1d24: 0x0040, 0x1d25: 0xb411, 0x1d26: 0xb291, 0x1d27: 0xb219, 0x1d28: 0xb309, 0x1d29: 0xb429, + 0x1d2a: 0x0040, 0x1d2b: 0xb3b1, 0x1d2c: 0xb3c9, 0x1d2d: 0xb3e1, 0x1d2e: 0xb2a9, 0x1d2f: 0xb339, + 0x1d30: 0xb369, 0x1d31: 0xb2d9, 0x1d32: 0xb381, 0x1d33: 0xb279, 0x1d34: 0xb2c1, 0x1d35: 0xb1d1, + 0x1d36: 0xb1e9, 0x1d37: 0xb231, 0x1d38: 0xb261, 0x1d39: 0xb2f1, 0x1d3a: 0xb321, 0x1d3b: 0xb351, + 0x1d3c: 0x0040, 0x1d3d: 0x0040, 0x1d3e: 0x0040, 0x1d3f: 0x0040, + // Block 0x75, offset 0x1d40 + 0x1d40: 0x0040, 0x1d41: 0xbca2, 0x1d42: 0xbcba, 0x1d43: 0xbcd2, 0x1d44: 0xbcea, 0x1d45: 0xbd02, + 0x1d46: 0xbd1a, 0x1d47: 0xbd32, 0x1d48: 0xbd4a, 0x1d49: 0xbd62, 0x1d4a: 0xbd7a, 0x1d4b: 0x0018, + 0x1d4c: 0x0018, 0x1d4d: 0x0040, 0x1d4e: 0x0040, 0x1d4f: 0x0040, 0x1d50: 0xbd92, 0x1d51: 0xbdb2, + 0x1d52: 0xbdd2, 0x1d53: 0xbdf2, 0x1d54: 0xbe12, 0x1d55: 0xbe32, 0x1d56: 0xbe52, 0x1d57: 0xbe72, + 0x1d58: 0xbe92, 0x1d59: 0xbeb2, 0x1d5a: 0xbed2, 0x1d5b: 0xbef2, 0x1d5c: 0xbf12, 0x1d5d: 0xbf32, + 0x1d5e: 0xbf52, 0x1d5f: 0xbf72, 0x1d60: 0xbf92, 0x1d61: 0xbfb2, 0x1d62: 0xbfd2, 0x1d63: 0xbff2, + 0x1d64: 0xc012, 0x1d65: 0xc032, 0x1d66: 0xc052, 0x1d67: 0xc072, 0x1d68: 0xc092, 0x1d69: 0xc0b2, + 0x1d6a: 0xc0d1, 0x1d6b: 0x1159, 0x1d6c: 0x0269, 0x1d6d: 0x6671, 0x1d6e: 0xc111, 0x1d6f: 0x0018, + 0x1d70: 0x0039, 0x1d71: 0x0ee9, 0x1d72: 0x1159, 0x1d73: 0x0ef9, 0x1d74: 0x0f09, 0x1d75: 0x1199, + 0x1d76: 0x0f31, 0x1d77: 0x0249, 0x1d78: 0x0f41, 0x1d79: 0x0259, 0x1d7a: 0x0f51, 0x1d7b: 0x0359, + 0x1d7c: 0x0f61, 0x1d7d: 0x0f71, 0x1d7e: 0x00d9, 0x1d7f: 0x0f99, + // Block 0x76, offset 0x1d80 + 0x1d80: 0x2039, 0x1d81: 0x0269, 0x1d82: 0x01d9, 0x1d83: 0x0fa9, 0x1d84: 0x0fb9, 0x1d85: 0x1089, + 0x1d86: 0x0279, 0x1d87: 0x0369, 0x1d88: 0x0289, 0x1d89: 0x13d1, 0x1d8a: 0xc129, 0x1d8b: 0x65b1, + 0x1d8c: 0xc141, 0x1d8d: 0x1441, 0x1d8e: 0xc159, 0x1d8f: 0xc179, 0x1d90: 0x0018, 0x1d91: 0x0018, + 0x1d92: 0x0018, 0x1d93: 0x0018, 0x1d94: 0x0018, 0x1d95: 0x0018, 0x1d96: 0x0018, 0x1d97: 0x0018, + 0x1d98: 0x0018, 0x1d99: 0x0018, 0x1d9a: 0x0018, 0x1d9b: 0x0018, 0x1d9c: 0x0018, 0x1d9d: 0x0018, + 0x1d9e: 0x0018, 0x1d9f: 0x0018, 0x1da0: 0x0018, 0x1da1: 0x0018, 0x1da2: 0x0018, 0x1da3: 0x0018, + 0x1da4: 0x0018, 0x1da5: 0x0018, 0x1da6: 0x0018, 0x1da7: 0x0018, 0x1da8: 0x0018, 0x1da9: 0x0018, + 0x1daa: 0xc191, 0x1dab: 0xc1a9, 0x1dac: 0x0040, 0x1dad: 0x0040, 0x1dae: 0x0040, 0x1daf: 0x0040, + 0x1db0: 0x0018, 0x1db1: 0x0018, 0x1db2: 0x0018, 0x1db3: 0x0018, 0x1db4: 0x0018, 0x1db5: 0x0018, + 0x1db6: 0x0018, 0x1db7: 0x0018, 0x1db8: 0x0018, 0x1db9: 0x0018, 0x1dba: 0x0018, 0x1dbb: 0x0018, + 0x1dbc: 0x0018, 0x1dbd: 0x0018, 0x1dbe: 0x0018, 0x1dbf: 0x0018, + // Block 0x77, offset 0x1dc0 + 0x1dc0: 0xc1d9, 0x1dc1: 0xc211, 0x1dc2: 0xc249, 0x1dc3: 0x0040, 0x1dc4: 0x0040, 0x1dc5: 0x0040, + 0x1dc6: 0x0040, 0x1dc7: 0x0040, 0x1dc8: 0x0040, 0x1dc9: 0x0040, 0x1dca: 0x0040, 0x1dcb: 0x0040, + 0x1dcc: 0x0040, 0x1dcd: 0x0040, 0x1dce: 0x0040, 0x1dcf: 0x0040, 0x1dd0: 0xc269, 0x1dd1: 0xc289, + 0x1dd2: 0xc2a9, 0x1dd3: 0xc2c9, 0x1dd4: 0xc2e9, 0x1dd5: 0xc309, 0x1dd6: 0xc329, 0x1dd7: 0xc349, + 0x1dd8: 0xc369, 0x1dd9: 0xc389, 0x1dda: 0xc3a9, 0x1ddb: 0xc3c9, 0x1ddc: 0xc3e9, 0x1ddd: 0xc409, + 0x1dde: 0xc429, 0x1ddf: 0xc449, 0x1de0: 0xc469, 0x1de1: 0xc489, 0x1de2: 0xc4a9, 0x1de3: 0xc4c9, + 0x1de4: 0xc4e9, 0x1de5: 0xc509, 0x1de6: 0xc529, 0x1de7: 0xc549, 0x1de8: 0xc569, 0x1de9: 0xc589, + 0x1dea: 0xc5a9, 0x1deb: 0xc5c9, 0x1dec: 0xc5e9, 0x1ded: 0xc609, 0x1dee: 0xc629, 0x1def: 0xc649, + 0x1df0: 0xc669, 0x1df1: 0xc689, 0x1df2: 0xc6a9, 0x1df3: 0xc6c9, 0x1df4: 0xc6e9, 0x1df5: 0xc709, + 0x1df6: 0xc729, 0x1df7: 0xc749, 0x1df8: 0xc769, 0x1df9: 0xc789, 0x1dfa: 0xc7a9, 0x1dfb: 0xc7c9, + 0x1dfc: 0x0040, 0x1dfd: 0x0040, 0x1dfe: 0x0040, 0x1dff: 0x0040, + // Block 0x78, offset 0x1e00 + 0x1e00: 0xcaf9, 0x1e01: 0xcb19, 0x1e02: 0xcb39, 0x1e03: 0x8b1d, 0x1e04: 0xcb59, 0x1e05: 0xcb79, + 0x1e06: 0xcb99, 0x1e07: 0xcbb9, 0x1e08: 0xcbd9, 0x1e09: 0xcbf9, 0x1e0a: 0xcc19, 0x1e0b: 0xcc39, + 0x1e0c: 0xcc59, 0x1e0d: 0x8b3d, 0x1e0e: 0xcc79, 0x1e0f: 0xcc99, 0x1e10: 0xccb9, 0x1e11: 0xccd9, + 0x1e12: 0x8b5d, 0x1e13: 0xccf9, 0x1e14: 0xcd19, 0x1e15: 0xc429, 0x1e16: 0x8b7d, 0x1e17: 0xcd39, + 0x1e18: 0xcd59, 0x1e19: 0xcd79, 0x1e1a: 0xcd99, 0x1e1b: 0xcdb9, 0x1e1c: 0x8b9d, 0x1e1d: 0xcdd9, + 0x1e1e: 0xcdf9, 0x1e1f: 0xce19, 0x1e20: 0xce39, 0x1e21: 0xce59, 0x1e22: 0xc789, 0x1e23: 0xce79, + 0x1e24: 0xce99, 0x1e25: 0xceb9, 0x1e26: 0xced9, 0x1e27: 0xcef9, 0x1e28: 0xcf19, 0x1e29: 0xcf39, + 0x1e2a: 0xcf59, 0x1e2b: 0xcf79, 0x1e2c: 0xcf99, 0x1e2d: 0xcfb9, 0x1e2e: 0xcfd9, 0x1e2f: 0xcff9, + 0x1e30: 0xd019, 0x1e31: 0xd039, 0x1e32: 0xd039, 0x1e33: 0xd039, 0x1e34: 0x8bbd, 0x1e35: 0xd059, + 0x1e36: 0xd079, 0x1e37: 0xd099, 0x1e38: 0x8bdd, 0x1e39: 0xd0b9, 0x1e3a: 0xd0d9, 0x1e3b: 0xd0f9, + 0x1e3c: 0xd119, 0x1e3d: 0xd139, 0x1e3e: 0xd159, 0x1e3f: 0xd179, + // Block 0x79, offset 0x1e40 + 0x1e40: 0xd199, 0x1e41: 0xd1b9, 0x1e42: 0xd1d9, 0x1e43: 0xd1f9, 0x1e44: 0xd219, 0x1e45: 0xd239, + 0x1e46: 0xd239, 0x1e47: 0xd259, 0x1e48: 0xd279, 0x1e49: 0xd299, 0x1e4a: 0xd2b9, 0x1e4b: 0xd2d9, + 0x1e4c: 0xd2f9, 0x1e4d: 0xd319, 0x1e4e: 0xd339, 0x1e4f: 0xd359, 0x1e50: 0xd379, 0x1e51: 0xd399, + 0x1e52: 0xd3b9, 0x1e53: 0xd3d9, 0x1e54: 0xd3f9, 0x1e55: 0xd419, 0x1e56: 0xd439, 0x1e57: 0xd459, + 0x1e58: 0xd479, 0x1e59: 0x8bfd, 0x1e5a: 0xd499, 0x1e5b: 0xd4b9, 0x1e5c: 0xd4d9, 0x1e5d: 0xc309, + 0x1e5e: 0xd4f9, 0x1e5f: 0xd519, 0x1e60: 0x8c1d, 0x1e61: 0x8c3d, 0x1e62: 0xd539, 0x1e63: 0xd559, + 0x1e64: 0xd579, 0x1e65: 0xd599, 0x1e66: 0xd5b9, 0x1e67: 0xd5d9, 0x1e68: 0x2040, 0x1e69: 0xd5f9, + 0x1e6a: 0xd619, 0x1e6b: 0xd619, 0x1e6c: 0x8c5d, 0x1e6d: 0xd639, 0x1e6e: 0xd659, 0x1e6f: 0xd679, + 0x1e70: 0xd699, 0x1e71: 0x8c7d, 0x1e72: 0xd6b9, 0x1e73: 0xd6d9, 0x1e74: 0x2040, 0x1e75: 0xd6f9, + 0x1e76: 0xd719, 0x1e77: 0xd739, 0x1e78: 0xd759, 0x1e79: 0xd779, 0x1e7a: 0xd799, 0x1e7b: 0x8c9d, + 0x1e7c: 0xd7b9, 0x1e7d: 0x8cbd, 0x1e7e: 0xd7d9, 0x1e7f: 0xd7f9, + // Block 0x7a, offset 0x1e80 + 0x1e80: 0xd819, 0x1e81: 0xd839, 0x1e82: 0xd859, 0x1e83: 0xd879, 0x1e84: 0xd899, 0x1e85: 0xd8b9, + 0x1e86: 0xd8d9, 0x1e87: 0xd8f9, 0x1e88: 0xd919, 0x1e89: 0x8cdd, 0x1e8a: 0xd939, 0x1e8b: 0xd959, + 0x1e8c: 0xd979, 0x1e8d: 0xd999, 0x1e8e: 0xd9b9, 0x1e8f: 0x8cfd, 0x1e90: 0xd9d9, 0x1e91: 0x8d1d, + 0x1e92: 0x8d3d, 0x1e93: 0xd9f9, 0x1e94: 0xda19, 0x1e95: 0xda19, 0x1e96: 0xda39, 0x1e97: 0x8d5d, + 0x1e98: 0x8d7d, 0x1e99: 0xda59, 0x1e9a: 0xda79, 0x1e9b: 0xda99, 0x1e9c: 0xdab9, 0x1e9d: 0xdad9, + 0x1e9e: 0xdaf9, 0x1e9f: 0xdb19, 0x1ea0: 0xdb39, 0x1ea1: 0xdb59, 0x1ea2: 0xdb79, 0x1ea3: 0xdb99, + 0x1ea4: 0x8d9d, 0x1ea5: 0xdbb9, 0x1ea6: 0xdbd9, 0x1ea7: 0xdbf9, 0x1ea8: 0xdc19, 0x1ea9: 0xdbf9, + 0x1eaa: 0xdc39, 0x1eab: 0xdc59, 0x1eac: 0xdc79, 0x1ead: 0xdc99, 0x1eae: 0xdcb9, 0x1eaf: 0xdcd9, + 0x1eb0: 0xdcf9, 0x1eb1: 0xdd19, 0x1eb2: 0xdd39, 0x1eb3: 0xdd59, 0x1eb4: 0xdd79, 0x1eb5: 0xdd99, + 0x1eb6: 0xddb9, 0x1eb7: 0xddd9, 0x1eb8: 0x8dbd, 0x1eb9: 0xddf9, 0x1eba: 0xde19, 0x1ebb: 0xde39, + 0x1ebc: 0xde59, 0x1ebd: 0xde79, 0x1ebe: 0x8ddd, 0x1ebf: 0xde99, + // Block 0x7b, offset 0x1ec0 + 0x1ec0: 0xe599, 0x1ec1: 0xe5b9, 0x1ec2: 0xe5d9, 0x1ec3: 0xe5f9, 0x1ec4: 0xe619, 0x1ec5: 0xe639, + 0x1ec6: 0x8efd, 0x1ec7: 0xe659, 0x1ec8: 0xe679, 0x1ec9: 0xe699, 0x1eca: 0xe6b9, 0x1ecb: 0xe6d9, + 0x1ecc: 0xe6f9, 0x1ecd: 0x8f1d, 0x1ece: 0xe719, 0x1ecf: 0xe739, 0x1ed0: 0x8f3d, 0x1ed1: 0x8f5d, + 0x1ed2: 0xe759, 0x1ed3: 0xe779, 0x1ed4: 0xe799, 0x1ed5: 0xe7b9, 0x1ed6: 0xe7d9, 0x1ed7: 0xe7f9, + 0x1ed8: 0xe819, 0x1ed9: 0xe839, 0x1eda: 0xe859, 0x1edb: 0x8f7d, 0x1edc: 0xe879, 0x1edd: 0x8f9d, + 0x1ede: 0xe899, 0x1edf: 0x2040, 0x1ee0: 0xe8b9, 0x1ee1: 0xe8d9, 0x1ee2: 0xe8f9, 0x1ee3: 0x8fbd, + 0x1ee4: 0xe919, 0x1ee5: 0xe939, 0x1ee6: 0x8fdd, 0x1ee7: 0x8ffd, 0x1ee8: 0xe959, 0x1ee9: 0xe979, + 0x1eea: 0xe999, 0x1eeb: 0xe9b9, 0x1eec: 0xe9d9, 0x1eed: 0xe9d9, 0x1eee: 0xe9f9, 0x1eef: 0xea19, + 0x1ef0: 0xea39, 0x1ef1: 0xea59, 0x1ef2: 0xea79, 0x1ef3: 0xea99, 0x1ef4: 0xeab9, 0x1ef5: 0x901d, + 0x1ef6: 0xead9, 0x1ef7: 0x903d, 0x1ef8: 0xeaf9, 0x1ef9: 0x905d, 0x1efa: 0xeb19, 0x1efb: 0x907d, + 0x1efc: 0x909d, 0x1efd: 0x90bd, 0x1efe: 0xeb39, 0x1eff: 0xeb59, + // Block 0x7c, offset 0x1f00 + 0x1f00: 0xeb79, 0x1f01: 0x90dd, 0x1f02: 0x90fd, 0x1f03: 0x911d, 0x1f04: 0x913d, 0x1f05: 0xeb99, + 0x1f06: 0xebb9, 0x1f07: 0xebb9, 0x1f08: 0xebd9, 0x1f09: 0xebf9, 0x1f0a: 0xec19, 0x1f0b: 0xec39, + 0x1f0c: 0xec59, 0x1f0d: 0x915d, 0x1f0e: 0xec79, 0x1f0f: 0xec99, 0x1f10: 0xecb9, 0x1f11: 0xecd9, + 0x1f12: 0x917d, 0x1f13: 0xecf9, 0x1f14: 0x919d, 0x1f15: 0x91bd, 0x1f16: 0xed19, 0x1f17: 0xed39, + 0x1f18: 0xed59, 0x1f19: 0xed79, 0x1f1a: 0xed99, 0x1f1b: 0xedb9, 0x1f1c: 0x91dd, 0x1f1d: 0x91fd, + 0x1f1e: 0x921d, 0x1f1f: 0x2040, 0x1f20: 0xedd9, 0x1f21: 0x923d, 0x1f22: 0xedf9, 0x1f23: 0xee19, + 0x1f24: 0xee39, 0x1f25: 0x925d, 0x1f26: 0xee59, 0x1f27: 0xee79, 0x1f28: 0xee99, 0x1f29: 0xeeb9, + 0x1f2a: 0xeed9, 0x1f2b: 0x927d, 0x1f2c: 0xeef9, 0x1f2d: 0xef19, 0x1f2e: 0xef39, 0x1f2f: 0xef59, + 0x1f30: 0xef79, 0x1f31: 0xef99, 0x1f32: 0x929d, 0x1f33: 0x92bd, 0x1f34: 0xefb9, 0x1f35: 0x92dd, + 0x1f36: 0xefd9, 0x1f37: 0x92fd, 0x1f38: 0xeff9, 0x1f39: 0xf019, 0x1f3a: 0xf039, 0x1f3b: 0x931d, + 0x1f3c: 0x933d, 0x1f3d: 0xf059, 0x1f3e: 0x935d, 0x1f3f: 0xf079, + // Block 0x7d, offset 0x1f40 + 0x1f40: 0xf6b9, 0x1f41: 0xf6d9, 0x1f42: 0xf6f9, 0x1f43: 0xf719, 0x1f44: 0xf739, 0x1f45: 0x951d, + 0x1f46: 0xf759, 0x1f47: 0xf779, 0x1f48: 0xf799, 0x1f49: 0xf7b9, 0x1f4a: 0xf7d9, 0x1f4b: 0x953d, + 0x1f4c: 0x955d, 0x1f4d: 0xf7f9, 0x1f4e: 0xf819, 0x1f4f: 0xf839, 0x1f50: 0xf859, 0x1f51: 0xf879, + 0x1f52: 0xf899, 0x1f53: 0x957d, 0x1f54: 0xf8b9, 0x1f55: 0xf8d9, 0x1f56: 0xf8f9, 0x1f57: 0xf919, + 0x1f58: 0x959d, 0x1f59: 0x95bd, 0x1f5a: 0xf939, 0x1f5b: 0xf959, 0x1f5c: 0xf979, 0x1f5d: 0x95dd, + 0x1f5e: 0xf999, 0x1f5f: 0xf9b9, 0x1f60: 0x6815, 0x1f61: 0x95fd, 0x1f62: 0xf9d9, 0x1f63: 0xf9f9, + 0x1f64: 0xfa19, 0x1f65: 0x961d, 0x1f66: 0xfa39, 0x1f67: 0xfa59, 0x1f68: 0xfa79, 0x1f69: 0xfa99, + 0x1f6a: 0xfab9, 0x1f6b: 0xfad9, 0x1f6c: 0xfaf9, 0x1f6d: 0x963d, 0x1f6e: 0xfb19, 0x1f6f: 0xfb39, + 0x1f70: 0xfb59, 0x1f71: 0x965d, 0x1f72: 0xfb79, 0x1f73: 0xfb99, 0x1f74: 0xfbb9, 0x1f75: 0xfbd9, + 0x1f76: 0x7b35, 0x1f77: 0x967d, 0x1f78: 0xfbf9, 0x1f79: 0xfc19, 0x1f7a: 0xfc39, 0x1f7b: 0x969d, + 0x1f7c: 0xfc59, 0x1f7d: 0x96bd, 0x1f7e: 0xfc79, 0x1f7f: 0xfc79, + // Block 0x7e, offset 0x1f80 + 0x1f80: 0xfc99, 0x1f81: 0x96dd, 0x1f82: 0xfcb9, 0x1f83: 0xfcd9, 0x1f84: 0xfcf9, 0x1f85: 0xfd19, + 0x1f86: 0xfd39, 0x1f87: 0xfd59, 0x1f88: 0xfd79, 0x1f89: 0x96fd, 0x1f8a: 0xfd99, 0x1f8b: 0xfdb9, + 0x1f8c: 0xfdd9, 0x1f8d: 0xfdf9, 0x1f8e: 0xfe19, 0x1f8f: 0xfe39, 0x1f90: 0x971d, 0x1f91: 0xfe59, + 0x1f92: 0x973d, 0x1f93: 0x975d, 0x1f94: 0x977d, 0x1f95: 0xfe79, 0x1f96: 0xfe99, 0x1f97: 0xfeb9, + 0x1f98: 0xfed9, 0x1f99: 0xfef9, 0x1f9a: 0xff19, 0x1f9b: 0xff39, 0x1f9c: 0xff59, 0x1f9d: 0x979d, + 0x1f9e: 0x0040, 0x1f9f: 0x0040, 0x1fa0: 0x0040, 0x1fa1: 0x0040, 0x1fa2: 0x0040, 0x1fa3: 0x0040, + 0x1fa4: 0x0040, 0x1fa5: 0x0040, 0x1fa6: 0x0040, 0x1fa7: 0x0040, 0x1fa8: 0x0040, 0x1fa9: 0x0040, + 0x1faa: 0x0040, 0x1fab: 0x0040, 0x1fac: 0x0040, 0x1fad: 0x0040, 0x1fae: 0x0040, 0x1faf: 0x0040, + 0x1fb0: 0x0040, 0x1fb1: 0x0040, 0x1fb2: 0x0040, 0x1fb3: 0x0040, 0x1fb4: 0x0040, 0x1fb5: 0x0040, + 0x1fb6: 0x0040, 0x1fb7: 0x0040, 0x1fb8: 0x0040, 0x1fb9: 0x0040, 0x1fba: 0x0040, 0x1fbb: 0x0040, + 0x1fbc: 0x0040, 0x1fbd: 0x0040, 0x1fbe: 0x0040, 0x1fbf: 0x0040, +} + +// idnaIndex: 36 blocks, 2304 entries, 4608 bytes +// Block 0 is the zero block. +var idnaIndex = [2304]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x01, 0xc3: 0x7d, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, + 0xc8: 0x06, 0xc9: 0x7e, 0xca: 0x7f, 0xcb: 0x07, 0xcc: 0x80, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, + 0xd0: 0x81, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x82, 0xd6: 0x83, 0xd7: 0x84, + 0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x85, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x86, 0xde: 0x87, 0xdf: 0x88, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, + 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c, + 0xf0: 0x1d, 0xf1: 0x1e, 0xf2: 0x1e, 0xf3: 0x20, 0xf4: 0x21, + // Block 0x4, offset 0x100 + 0x120: 0x89, 0x121: 0x13, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x14, 0x126: 0x15, 0x127: 0x16, + 0x128: 0x17, 0x129: 0x18, 0x12a: 0x19, 0x12b: 0x1a, 0x12c: 0x1b, 0x12d: 0x1c, 0x12e: 0x1d, 0x12f: 0x8d, + 0x130: 0x8e, 0x131: 0x1e, 0x132: 0x1f, 0x133: 0x20, 0x134: 0x8f, 0x135: 0x21, 0x136: 0x90, 0x137: 0x91, + 0x138: 0x92, 0x139: 0x93, 0x13a: 0x22, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x23, 0x13e: 0x24, 0x13f: 0x96, + // Block 0x5, offset 0x140 + 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e, + 0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6, + 0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f, + 0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae, + 0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6, + 0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe, + 0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x25, 0x175: 0x26, 0x176: 0x27, 0x177: 0xc3, + 0x178: 0x28, 0x179: 0x28, 0x17a: 0x29, 0x17b: 0x28, 0x17c: 0xc4, 0x17d: 0x2a, 0x17e: 0x2b, 0x17f: 0x2c, + // Block 0x6, offset 0x180 + 0x180: 0x2d, 0x181: 0x2e, 0x182: 0x2f, 0x183: 0xc5, 0x184: 0x30, 0x185: 0x31, 0x186: 0xc6, 0x187: 0x9b, + 0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0x9b, + 0x190: 0xca, 0x191: 0x32, 0x192: 0x33, 0x193: 0x34, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, + 0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b, + 0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b, + 0x1a8: 0xcb, 0x1a9: 0xcc, 0x1aa: 0x9b, 0x1ab: 0xcd, 0x1ac: 0x9b, 0x1ad: 0xce, 0x1ae: 0xcf, 0x1af: 0xd0, + 0x1b0: 0xd1, 0x1b1: 0x35, 0x1b2: 0x28, 0x1b3: 0x36, 0x1b4: 0xd2, 0x1b5: 0xd3, 0x1b6: 0xd4, 0x1b7: 0xd5, + 0x1b8: 0xd6, 0x1b9: 0xd7, 0x1ba: 0xd8, 0x1bb: 0xd9, 0x1bc: 0xda, 0x1bd: 0xdb, 0x1be: 0xdc, 0x1bf: 0x37, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x38, 0x1c1: 0xdd, 0x1c2: 0xde, 0x1c3: 0xdf, 0x1c4: 0xe0, 0x1c5: 0x39, 0x1c6: 0x3a, 0x1c7: 0xe1, + 0x1c8: 0xe2, 0x1c9: 0x3b, 0x1ca: 0x3c, 0x1cb: 0x3d, 0x1cc: 0x3e, 0x1cd: 0x3f, 0x1ce: 0x40, 0x1cf: 0x41, + 0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f, + 0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f, + 0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f, + 0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f, + 0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f, + 0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f, + // Block 0x8, offset 0x200 + 0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f, + 0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f, + 0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f, + 0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f, + 0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f, + 0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f, + 0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b, + 0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f, + // Block 0x9, offset 0x240 + 0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f, + 0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f, + 0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f, + 0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f, + 0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f, + 0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f, + 0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f, + 0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f, + // Block 0xa, offset 0x280 + 0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f, + 0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f, + 0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f, + 0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f, + 0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f, + 0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f, + 0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f, + 0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe3, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f, + 0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f, + 0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe4, 0x2d3: 0xe5, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f, + 0x2d8: 0xe6, 0x2d9: 0x42, 0x2da: 0x43, 0x2db: 0xe7, 0x2dc: 0x44, 0x2dd: 0x45, 0x2de: 0x46, 0x2df: 0xe8, + 0x2e0: 0xe9, 0x2e1: 0xea, 0x2e2: 0xeb, 0x2e3: 0xec, 0x2e4: 0xed, 0x2e5: 0xee, 0x2e6: 0xef, 0x2e7: 0xf0, + 0x2e8: 0xf1, 0x2e9: 0xf2, 0x2ea: 0xf3, 0x2eb: 0xf4, 0x2ec: 0xf5, 0x2ed: 0xf6, 0x2ee: 0xf7, 0x2ef: 0xf8, + 0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f, + 0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f, + // Block 0xc, offset 0x300 + 0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f, + 0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f, + 0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f, + 0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xf9, 0x31f: 0xfa, + // Block 0xd, offset 0x340 + 0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba, + 0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba, + 0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba, + 0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba, + 0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba, + 0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba, + 0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba, + 0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba, + // Block 0xe, offset 0x380 + 0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba, + 0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba, + 0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba, + 0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba, + 0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfb, 0x3a5: 0xfc, 0x3a6: 0xfd, 0x3a7: 0xfe, + 0x3a8: 0x47, 0x3a9: 0xff, 0x3aa: 0x100, 0x3ab: 0x48, 0x3ac: 0x49, 0x3ad: 0x4a, 0x3ae: 0x4b, 0x3af: 0x4c, + 0x3b0: 0x101, 0x3b1: 0x4d, 0x3b2: 0x4e, 0x3b3: 0x4f, 0x3b4: 0x50, 0x3b5: 0x51, 0x3b6: 0x102, 0x3b7: 0x52, + 0x3b8: 0x53, 0x3b9: 0x54, 0x3ba: 0x55, 0x3bb: 0x56, 0x3bc: 0x57, 0x3bd: 0x58, 0x3be: 0x59, 0x3bf: 0x5a, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x103, 0x3c1: 0x104, 0x3c2: 0x9f, 0x3c3: 0x105, 0x3c4: 0x106, 0x3c5: 0x9b, 0x3c6: 0x107, 0x3c7: 0x108, + 0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x109, 0x3cb: 0x10a, 0x3cc: 0x10b, 0x3cd: 0x10c, 0x3ce: 0x10d, 0x3cf: 0x10e, + 0x3d0: 0x10f, 0x3d1: 0x9f, 0x3d2: 0x110, 0x3d3: 0x111, 0x3d4: 0x112, 0x3d5: 0x113, 0x3d6: 0xba, 0x3d7: 0xba, + 0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x114, 0x3dd: 0x115, 0x3de: 0xba, 0x3df: 0xba, + 0x3e0: 0x116, 0x3e1: 0x117, 0x3e2: 0x118, 0x3e3: 0x119, 0x3e4: 0x11a, 0x3e5: 0xba, 0x3e6: 0x11b, 0x3e7: 0x11c, + 0x3e8: 0x11d, 0x3e9: 0x11e, 0x3ea: 0x11f, 0x3eb: 0x5b, 0x3ec: 0x120, 0x3ed: 0x121, 0x3ee: 0x5c, 0x3ef: 0xba, + 0x3f0: 0x122, 0x3f1: 0x123, 0x3f2: 0x124, 0x3f3: 0x125, 0x3f4: 0x126, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba, + 0x3f8: 0xba, 0x3f9: 0x127, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0x128, 0x3fd: 0x129, 0x3fe: 0xba, 0x3ff: 0xba, + // Block 0x10, offset 0x400 + 0x400: 0x12a, 0x401: 0x12b, 0x402: 0x12c, 0x403: 0x12d, 0x404: 0x12e, 0x405: 0x12f, 0x406: 0x130, 0x407: 0x131, + 0x408: 0x132, 0x409: 0xba, 0x40a: 0x133, 0x40b: 0x134, 0x40c: 0x5d, 0x40d: 0x5e, 0x40e: 0xba, 0x40f: 0xba, + 0x410: 0x135, 0x411: 0x136, 0x412: 0x137, 0x413: 0x138, 0x414: 0xba, 0x415: 0xba, 0x416: 0x139, 0x417: 0x13a, + 0x418: 0x13b, 0x419: 0x13c, 0x41a: 0x13d, 0x41b: 0x13e, 0x41c: 0x13f, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba, + 0x420: 0x140, 0x421: 0xba, 0x422: 0x141, 0x423: 0x142, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba, + 0x428: 0x143, 0x429: 0x144, 0x42a: 0x145, 0x42b: 0x146, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba, + 0x430: 0x147, 0x431: 0x148, 0x432: 0x149, 0x433: 0xba, 0x434: 0x14a, 0x435: 0x14b, 0x436: 0x14c, 0x437: 0xba, + 0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0x14d, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba, + // Block 0x11, offset 0x440 + 0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f, + 0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x14e, 0x44f: 0xba, + 0x450: 0x9b, 0x451: 0x14f, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x150, 0x456: 0xba, 0x457: 0xba, + 0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba, + 0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba, + 0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba, + 0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba, + 0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba, + // Block 0x12, offset 0x480 + 0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f, + 0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f, + 0x490: 0x151, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba, + 0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba, + 0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba, + 0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba, + 0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba, + 0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba, + // Block 0x13, offset 0x4c0 + 0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba, + 0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba, + 0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f, + 0x4d8: 0x9f, 0x4d9: 0x152, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba, + 0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba, + 0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba, + 0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba, + 0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba, + // Block 0x14, offset 0x500 + 0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba, + 0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba, + 0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba, + 0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba, + 0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f, + 0x528: 0x146, 0x529: 0x153, 0x52a: 0xba, 0x52b: 0x154, 0x52c: 0x155, 0x52d: 0x156, 0x52e: 0x157, 0x52f: 0xba, + 0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba, + 0x538: 0xba, 0x539: 0x158, 0x53a: 0x159, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x15a, 0x53e: 0x15b, 0x53f: 0x15c, + // Block 0x15, offset 0x540 + 0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f, + 0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f, + 0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f, + 0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x15d, + 0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f, + 0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x15e, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba, + 0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba, + 0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba, + // Block 0x16, offset 0x580 + 0x580: 0x9f, 0x581: 0x9f, 0x582: 0x9f, 0x583: 0x9f, 0x584: 0x15f, 0x585: 0x160, 0x586: 0x9f, 0x587: 0x9f, + 0x588: 0x9f, 0x589: 0x9f, 0x58a: 0x9f, 0x58b: 0x161, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba, + 0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba, + 0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba, + 0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba, + 0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba, + 0x5b0: 0x9f, 0x5b1: 0x162, 0x5b2: 0x163, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba, + 0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x164, 0x5c4: 0x165, 0x5c5: 0x166, 0x5c6: 0x167, 0x5c7: 0x168, + 0x5c8: 0x9b, 0x5c9: 0x169, 0x5ca: 0xba, 0x5cb: 0x16a, 0x5cc: 0x9b, 0x5cd: 0x16b, 0x5ce: 0xba, 0x5cf: 0xba, + 0x5d0: 0x5f, 0x5d1: 0x60, 0x5d2: 0x61, 0x5d3: 0x62, 0x5d4: 0x63, 0x5d5: 0x64, 0x5d6: 0x65, 0x5d7: 0x66, + 0x5d8: 0x67, 0x5d9: 0x68, 0x5da: 0x69, 0x5db: 0x6a, 0x5dc: 0x6b, 0x5dd: 0x6c, 0x5de: 0x6d, 0x5df: 0x6e, + 0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b, + 0x5e8: 0x16c, 0x5e9: 0x16d, 0x5ea: 0x16e, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba, + 0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba, + 0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba, + // Block 0x18, offset 0x600 + 0x600: 0x16f, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba, + 0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba, + 0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba, + 0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba, + 0x620: 0x122, 0x621: 0x122, 0x622: 0x122, 0x623: 0x170, 0x624: 0x6f, 0x625: 0x171, 0x626: 0xba, 0x627: 0xba, + 0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba, + 0x630: 0xba, 0x631: 0x172, 0x632: 0x173, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba, + 0x638: 0x70, 0x639: 0x71, 0x63a: 0x72, 0x63b: 0x174, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba, + // Block 0x19, offset 0x640 + 0x640: 0x175, 0x641: 0x9b, 0x642: 0x176, 0x643: 0x177, 0x644: 0x73, 0x645: 0x74, 0x646: 0x178, 0x647: 0x179, + 0x648: 0x75, 0x649: 0x17a, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, + 0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b, + 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x17b, 0x65c: 0x9b, 0x65d: 0x17c, 0x65e: 0x9b, 0x65f: 0x17d, + 0x660: 0x17e, 0x661: 0x17f, 0x662: 0x180, 0x663: 0xba, 0x664: 0x181, 0x665: 0x182, 0x666: 0x183, 0x667: 0x184, + 0x668: 0xba, 0x669: 0x185, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba, + 0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba, + 0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba, + // Block 0x1a, offset 0x680 + 0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f, + 0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f, + 0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f, + 0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x186, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f, + 0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f, + 0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f, + 0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f, + 0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f, + 0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f, + 0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f, + 0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x187, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f, + 0x6e0: 0x188, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f, + 0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f, + 0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f, + 0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f, + // Block 0x1c, offset 0x700 + 0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f, + 0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f, + 0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f, + 0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f, + 0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f, + 0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f, + 0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f, + 0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x189, 0x73b: 0x9f, 0x73c: 0x9f, 0x73d: 0x9f, 0x73e: 0x9f, 0x73f: 0x9f, + // Block 0x1d, offset 0x740 + 0x740: 0x9f, 0x741: 0x9f, 0x742: 0x9f, 0x743: 0x9f, 0x744: 0x9f, 0x745: 0x9f, 0x746: 0x9f, 0x747: 0x9f, + 0x748: 0x9f, 0x749: 0x9f, 0x74a: 0x9f, 0x74b: 0x9f, 0x74c: 0x9f, 0x74d: 0x9f, 0x74e: 0x9f, 0x74f: 0x9f, + 0x750: 0x9f, 0x751: 0x9f, 0x752: 0x9f, 0x753: 0x9f, 0x754: 0x9f, 0x755: 0x9f, 0x756: 0x9f, 0x757: 0x9f, + 0x758: 0x9f, 0x759: 0x9f, 0x75a: 0x9f, 0x75b: 0x9f, 0x75c: 0x9f, 0x75d: 0x9f, 0x75e: 0x9f, 0x75f: 0x9f, + 0x760: 0x9f, 0x761: 0x9f, 0x762: 0x9f, 0x763: 0x9f, 0x764: 0x9f, 0x765: 0x9f, 0x766: 0x9f, 0x767: 0x9f, + 0x768: 0x9f, 0x769: 0x9f, 0x76a: 0x9f, 0x76b: 0x9f, 0x76c: 0x9f, 0x76d: 0x9f, 0x76e: 0x9f, 0x76f: 0x18a, + 0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba, + 0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba, + // Block 0x1e, offset 0x780 + 0x780: 0xba, 0x781: 0xba, 0x782: 0xba, 0x783: 0xba, 0x784: 0xba, 0x785: 0xba, 0x786: 0xba, 0x787: 0xba, + 0x788: 0xba, 0x789: 0xba, 0x78a: 0xba, 0x78b: 0xba, 0x78c: 0xba, 0x78d: 0xba, 0x78e: 0xba, 0x78f: 0xba, + 0x790: 0xba, 0x791: 0xba, 0x792: 0xba, 0x793: 0xba, 0x794: 0xba, 0x795: 0xba, 0x796: 0xba, 0x797: 0xba, + 0x798: 0xba, 0x799: 0xba, 0x79a: 0xba, 0x79b: 0xba, 0x79c: 0xba, 0x79d: 0xba, 0x79e: 0xba, 0x79f: 0xba, + 0x7a0: 0x76, 0x7a1: 0x77, 0x7a2: 0x78, 0x7a3: 0x18b, 0x7a4: 0x79, 0x7a5: 0x7a, 0x7a6: 0x18c, 0x7a7: 0x7b, + 0x7a8: 0x7c, 0x7a9: 0xba, 0x7aa: 0xba, 0x7ab: 0xba, 0x7ac: 0xba, 0x7ad: 0xba, 0x7ae: 0xba, 0x7af: 0xba, + 0x7b0: 0xba, 0x7b1: 0xba, 0x7b2: 0xba, 0x7b3: 0xba, 0x7b4: 0xba, 0x7b5: 0xba, 0x7b6: 0xba, 0x7b7: 0xba, + 0x7b8: 0xba, 0x7b9: 0xba, 0x7ba: 0xba, 0x7bb: 0xba, 0x7bc: 0xba, 0x7bd: 0xba, 0x7be: 0xba, 0x7bf: 0xba, + // Block 0x1f, offset 0x7c0 + 0x7d0: 0x0d, 0x7d1: 0x0e, 0x7d2: 0x0f, 0x7d3: 0x10, 0x7d4: 0x11, 0x7d5: 0x0b, 0x7d6: 0x12, 0x7d7: 0x07, + 0x7d8: 0x13, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x14, 0x7dc: 0x0b, 0x7dd: 0x15, 0x7de: 0x16, 0x7df: 0x17, + 0x7e0: 0x07, 0x7e1: 0x07, 0x7e2: 0x07, 0x7e3: 0x07, 0x7e4: 0x07, 0x7e5: 0x07, 0x7e6: 0x07, 0x7e7: 0x07, + 0x7e8: 0x07, 0x7e9: 0x07, 0x7ea: 0x18, 0x7eb: 0x19, 0x7ec: 0x1a, 0x7ed: 0x07, 0x7ee: 0x1b, 0x7ef: 0x1c, + 0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b, + 0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b, + // Block 0x20, offset 0x800 + 0x800: 0x0b, 0x801: 0x0b, 0x802: 0x0b, 0x803: 0x0b, 0x804: 0x0b, 0x805: 0x0b, 0x806: 0x0b, 0x807: 0x0b, + 0x808: 0x0b, 0x809: 0x0b, 0x80a: 0x0b, 0x80b: 0x0b, 0x80c: 0x0b, 0x80d: 0x0b, 0x80e: 0x0b, 0x80f: 0x0b, + 0x810: 0x0b, 0x811: 0x0b, 0x812: 0x0b, 0x813: 0x0b, 0x814: 0x0b, 0x815: 0x0b, 0x816: 0x0b, 0x817: 0x0b, + 0x818: 0x0b, 0x819: 0x0b, 0x81a: 0x0b, 0x81b: 0x0b, 0x81c: 0x0b, 0x81d: 0x0b, 0x81e: 0x0b, 0x81f: 0x0b, + 0x820: 0x0b, 0x821: 0x0b, 0x822: 0x0b, 0x823: 0x0b, 0x824: 0x0b, 0x825: 0x0b, 0x826: 0x0b, 0x827: 0x0b, + 0x828: 0x0b, 0x829: 0x0b, 0x82a: 0x0b, 0x82b: 0x0b, 0x82c: 0x0b, 0x82d: 0x0b, 0x82e: 0x0b, 0x82f: 0x0b, + 0x830: 0x0b, 0x831: 0x0b, 0x832: 0x0b, 0x833: 0x0b, 0x834: 0x0b, 0x835: 0x0b, 0x836: 0x0b, 0x837: 0x0b, + 0x838: 0x0b, 0x839: 0x0b, 0x83a: 0x0b, 0x83b: 0x0b, 0x83c: 0x0b, 0x83d: 0x0b, 0x83e: 0x0b, 0x83f: 0x0b, + // Block 0x21, offset 0x840 + 0x840: 0x18d, 0x841: 0x18e, 0x842: 0xba, 0x843: 0xba, 0x844: 0x18f, 0x845: 0x18f, 0x846: 0x18f, 0x847: 0x190, + 0x848: 0xba, 0x849: 0xba, 0x84a: 0xba, 0x84b: 0xba, 0x84c: 0xba, 0x84d: 0xba, 0x84e: 0xba, 0x84f: 0xba, + 0x850: 0xba, 0x851: 0xba, 0x852: 0xba, 0x853: 0xba, 0x854: 0xba, 0x855: 0xba, 0x856: 0xba, 0x857: 0xba, + 0x858: 0xba, 0x859: 0xba, 0x85a: 0xba, 0x85b: 0xba, 0x85c: 0xba, 0x85d: 0xba, 0x85e: 0xba, 0x85f: 0xba, + 0x860: 0xba, 0x861: 0xba, 0x862: 0xba, 0x863: 0xba, 0x864: 0xba, 0x865: 0xba, 0x866: 0xba, 0x867: 0xba, + 0x868: 0xba, 0x869: 0xba, 0x86a: 0xba, 0x86b: 0xba, 0x86c: 0xba, 0x86d: 0xba, 0x86e: 0xba, 0x86f: 0xba, + 0x870: 0xba, 0x871: 0xba, 0x872: 0xba, 0x873: 0xba, 0x874: 0xba, 0x875: 0xba, 0x876: 0xba, 0x877: 0xba, + 0x878: 0xba, 0x879: 0xba, 0x87a: 0xba, 0x87b: 0xba, 0x87c: 0xba, 0x87d: 0xba, 0x87e: 0xba, 0x87f: 0xba, + // Block 0x22, offset 0x880 + 0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b, + 0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b, + 0x890: 0x0b, 0x891: 0x0b, 0x892: 0x0b, 0x893: 0x0b, 0x894: 0x0b, 0x895: 0x0b, 0x896: 0x0b, 0x897: 0x0b, + 0x898: 0x0b, 0x899: 0x0b, 0x89a: 0x0b, 0x89b: 0x0b, 0x89c: 0x0b, 0x89d: 0x0b, 0x89e: 0x0b, 0x89f: 0x0b, + 0x8a0: 0x1f, 0x8a1: 0x0b, 0x8a2: 0x0b, 0x8a3: 0x0b, 0x8a4: 0x0b, 0x8a5: 0x0b, 0x8a6: 0x0b, 0x8a7: 0x0b, + 0x8a8: 0x0b, 0x8a9: 0x0b, 0x8aa: 0x0b, 0x8ab: 0x0b, 0x8ac: 0x0b, 0x8ad: 0x0b, 0x8ae: 0x0b, 0x8af: 0x0b, + 0x8b0: 0x0b, 0x8b1: 0x0b, 0x8b2: 0x0b, 0x8b3: 0x0b, 0x8b4: 0x0b, 0x8b5: 0x0b, 0x8b6: 0x0b, 0x8b7: 0x0b, + 0x8b8: 0x0b, 0x8b9: 0x0b, 0x8ba: 0x0b, 0x8bb: 0x0b, 0x8bc: 0x0b, 0x8bd: 0x0b, 0x8be: 0x0b, 0x8bf: 0x0b, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x0b, 0x8c1: 0x0b, 0x8c2: 0x0b, 0x8c3: 0x0b, 0x8c4: 0x0b, 0x8c5: 0x0b, 0x8c6: 0x0b, 0x8c7: 0x0b, + 0x8c8: 0x0b, 0x8c9: 0x0b, 0x8ca: 0x0b, 0x8cb: 0x0b, 0x8cc: 0x0b, 0x8cd: 0x0b, 0x8ce: 0x0b, 0x8cf: 0x0b, +} + +// idnaSparseOffset: 276 entries, 552 bytes +var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x33, 0x3e, 0x4a, 0x4e, 0x5d, 0x62, 0x6c, 0x78, 0x86, 0x8b, 0x94, 0xa4, 0xb2, 0xbe, 0xca, 0xdb, 0xe5, 0xec, 0xf9, 0x10a, 0x111, 0x11c, 0x12b, 0x139, 0x143, 0x145, 0x14a, 0x14d, 0x150, 0x152, 0x15e, 0x169, 0x171, 0x177, 0x17d, 0x182, 0x187, 0x18a, 0x18e, 0x194, 0x199, 0x1a5, 0x1af, 0x1b5, 0x1c6, 0x1d0, 0x1d3, 0x1db, 0x1de, 0x1eb, 0x1f3, 0x1f7, 0x1fe, 0x206, 0x216, 0x222, 0x224, 0x22e, 0x23a, 0x246, 0x252, 0x25a, 0x25f, 0x269, 0x27a, 0x27e, 0x289, 0x28d, 0x296, 0x29e, 0x2a4, 0x2a9, 0x2ac, 0x2b0, 0x2b6, 0x2ba, 0x2be, 0x2c2, 0x2c7, 0x2cd, 0x2d5, 0x2dc, 0x2e7, 0x2f1, 0x2f5, 0x2f8, 0x2fe, 0x302, 0x304, 0x307, 0x309, 0x30c, 0x316, 0x319, 0x328, 0x32c, 0x331, 0x334, 0x338, 0x33d, 0x342, 0x348, 0x34e, 0x35d, 0x363, 0x367, 0x376, 0x37b, 0x383, 0x38d, 0x398, 0x3a0, 0x3b1, 0x3ba, 0x3ca, 0x3d7, 0x3e1, 0x3e6, 0x3f3, 0x3f7, 0x3fc, 0x3fe, 0x402, 0x404, 0x408, 0x411, 0x417, 0x41b, 0x42b, 0x435, 0x43a, 0x43d, 0x443, 0x44a, 0x44f, 0x453, 0x459, 0x45e, 0x467, 0x46c, 0x472, 0x479, 0x480, 0x487, 0x48b, 0x490, 0x493, 0x498, 0x4a4, 0x4aa, 0x4af, 0x4b6, 0x4be, 0x4c3, 0x4c7, 0x4d7, 0x4de, 0x4e2, 0x4e6, 0x4ed, 0x4ef, 0x4f2, 0x4f5, 0x4f9, 0x502, 0x506, 0x50e, 0x516, 0x51c, 0x525, 0x531, 0x538, 0x541, 0x54b, 0x552, 0x560, 0x56d, 0x57a, 0x583, 0x587, 0x596, 0x59e, 0x5a9, 0x5b2, 0x5b8, 0x5c0, 0x5c9, 0x5d3, 0x5d6, 0x5e2, 0x5eb, 0x5ee, 0x5f3, 0x5fe, 0x607, 0x613, 0x616, 0x620, 0x629, 0x635, 0x642, 0x64f, 0x65d, 0x664, 0x667, 0x66c, 0x66f, 0x672, 0x675, 0x67c, 0x683, 0x687, 0x692, 0x695, 0x698, 0x69b, 0x6a1, 0x6a6, 0x6aa, 0x6ad, 0x6b0, 0x6b3, 0x6b6, 0x6b9, 0x6be, 0x6c8, 0x6cb, 0x6cf, 0x6de, 0x6ea, 0x6ee, 0x6f3, 0x6f7, 0x6fc, 0x700, 0x705, 0x70e, 0x719, 0x71f, 0x727, 0x72a, 0x72d, 0x731, 0x735, 0x73b, 0x741, 0x746, 0x749, 0x759, 0x760, 0x763, 0x766, 0x76a, 0x770, 0x775, 0x77a, 0x782, 0x787, 0x78b, 0x78f, 0x792, 0x795, 0x799, 0x79d, 0x7a0, 0x7b0, 0x7c1, 0x7c6, 0x7c8, 0x7ca} + +// idnaSparseValues: 1997 entries, 7988 bytes +var idnaSparseValues = [1997]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0000, lo: 0x07}, + {value: 0xe105, lo: 0x80, hi: 0x96}, + {value: 0x0018, lo: 0x97, hi: 0x97}, + {value: 0xe105, lo: 0x98, hi: 0x9e}, + {value: 0x001f, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbf}, + // Block 0x1, offset 0x8 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0xe01d, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0335, lo: 0x83, hi: 0x83}, + {value: 0x034d, lo: 0x84, hi: 0x84}, + {value: 0x0365, lo: 0x85, hi: 0x85}, + {value: 0xe00d, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0xe00d, lo: 0x88, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x89}, + {value: 0xe00d, lo: 0x8a, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe00d, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0x8d}, + {value: 0xe00d, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0xbf}, + // Block 0x2, offset 0x19 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x0249, lo: 0xb0, hi: 0xb0}, + {value: 0x037d, lo: 0xb1, hi: 0xb1}, + {value: 0x0259, lo: 0xb2, hi: 0xb2}, + {value: 0x0269, lo: 0xb3, hi: 0xb3}, + {value: 0x034d, lo: 0xb4, hi: 0xb4}, + {value: 0x0395, lo: 0xb5, hi: 0xb5}, + {value: 0xe1bd, lo: 0xb6, hi: 0xb6}, + {value: 0x0279, lo: 0xb7, hi: 0xb7}, + {value: 0x0289, lo: 0xb8, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbf}, + // Block 0x3, offset 0x25 + {value: 0x0000, lo: 0x01}, + {value: 0x3308, lo: 0x80, hi: 0xbf}, + // Block 0x4, offset 0x27 + {value: 0x0000, lo: 0x04}, + {value: 0x03f5, lo: 0x80, hi: 0x8f}, + {value: 0xe105, lo: 0x90, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x5, offset 0x2c + {value: 0x0000, lo: 0x06}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x0545, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x0008, lo: 0x99, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x6, offset 0x33 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0401, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0018, lo: 0x89, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x3308, lo: 0x91, hi: 0xbd}, + {value: 0x0818, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x7, offset 0x3e + {value: 0x0000, lo: 0x0b}, + {value: 0x0818, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x82}, + {value: 0x0818, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x85}, + {value: 0x0818, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xae}, + {value: 0x0808, lo: 0xaf, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x8, offset 0x4a + {value: 0x0000, lo: 0x03}, + {value: 0x0a08, lo: 0x80, hi: 0x87}, + {value: 0x0c08, lo: 0x88, hi: 0x99}, + {value: 0x0a08, lo: 0x9a, hi: 0xbf}, + // Block 0x9, offset 0x4e + {value: 0x0000, lo: 0x0e}, + {value: 0x3308, lo: 0x80, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0c08, lo: 0x8d, hi: 0x8d}, + {value: 0x0a08, lo: 0x8e, hi: 0x98}, + {value: 0x0c08, lo: 0x99, hi: 0x9b}, + {value: 0x0a08, lo: 0x9c, hi: 0xaa}, + {value: 0x0c08, lo: 0xab, hi: 0xac}, + {value: 0x0a08, lo: 0xad, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb1}, + {value: 0x0a08, lo: 0xb2, hi: 0xb2}, + {value: 0x0c08, lo: 0xb3, hi: 0xb4}, + {value: 0x0a08, lo: 0xb5, hi: 0xb7}, + {value: 0x0c08, lo: 0xb8, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbf}, + // Block 0xa, offset 0x5d + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xb0}, + {value: 0x0808, lo: 0xb1, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xb, offset 0x62 + {value: 0x0000, lo: 0x09}, + {value: 0x0808, lo: 0x80, hi: 0x89}, + {value: 0x0a08, lo: 0x8a, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb9}, + {value: 0x0818, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x0818, lo: 0xbe, hi: 0xbf}, + // Block 0xc, offset 0x6c + {value: 0x0000, lo: 0x0b}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x99}, + {value: 0x0808, lo: 0x9a, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0xa3}, + {value: 0x0808, lo: 0xa4, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa7}, + {value: 0x0808, lo: 0xa8, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0818, lo: 0xb0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xd, offset 0x78 + {value: 0x0000, lo: 0x0d}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0a08, lo: 0xa0, hi: 0xa9}, + {value: 0x0c08, lo: 0xaa, hi: 0xac}, + {value: 0x0808, lo: 0xad, hi: 0xad}, + {value: 0x0c08, lo: 0xae, hi: 0xae}, + {value: 0x0a08, lo: 0xaf, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb2}, + {value: 0x0a08, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0a08, lo: 0xb6, hi: 0xb8}, + {value: 0x0c08, lo: 0xb9, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0xe, offset 0x86 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x92}, + {value: 0x3308, lo: 0x93, hi: 0xa1}, + {value: 0x0840, lo: 0xa2, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xbf}, + // Block 0xf, offset 0x8b + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x10, offset 0x94 + {value: 0x0000, lo: 0x0f}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x85}, + {value: 0x3008, lo: 0x86, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x3008, lo: 0x8a, hi: 0x8c}, + {value: 0x3b08, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x11, offset 0xa4 + {value: 0x0000, lo: 0x0d}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xa9}, + {value: 0x0008, lo: 0xaa, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x12, offset 0xb2 + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xba}, + {value: 0x3b08, lo: 0xbb, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x13, offset 0xbe + {value: 0x0000, lo: 0x0b}, + {value: 0x0040, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x14, offset 0xca + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x89}, + {value: 0x3b08, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8e}, + {value: 0x3008, lo: 0x8f, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x3008, lo: 0x98, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x15, offset 0xdb + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb2}, + {value: 0x08f1, lo: 0xb3, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb9}, + {value: 0x3b08, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0x16, offset 0xe5 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x8e}, + {value: 0x0018, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0xbf}, + // Block 0x17, offset 0xec + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x3308, lo: 0x88, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0961, lo: 0x9c, hi: 0x9c}, + {value: 0x0999, lo: 0x9d, hi: 0x9d}, + {value: 0x0008, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x18, offset 0xf9 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe03d, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xb8}, + {value: 0x3308, lo: 0xb9, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x19, offset 0x10a + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0xbf}, + // Block 0x1a, offset 0x111 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x3008, lo: 0xab, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x1b, offset 0x11c + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x3008, lo: 0x96, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x3308, lo: 0x9e, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xa1}, + {value: 0x3008, lo: 0xa2, hi: 0xa4}, + {value: 0x0008, lo: 0xa5, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xbf}, + // Block 0x1c, offset 0x12b + {value: 0x0000, lo: 0x0d}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x8c}, + {value: 0x3308, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x8e}, + {value: 0x3008, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x3008, lo: 0x9a, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x1d, offset 0x139 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x86}, + {value: 0x055d, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8c}, + {value: 0x055d, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbb}, + {value: 0xe105, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0x1e, offset 0x143 + {value: 0x0000, lo: 0x01}, + {value: 0x0018, lo: 0x80, hi: 0xbf}, + // Block 0x1f, offset 0x145 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa0}, + {value: 0x2018, lo: 0xa1, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x20, offset 0x14a + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa7}, + {value: 0x2018, lo: 0xa8, hi: 0xbf}, + // Block 0x21, offset 0x14d + {value: 0x0000, lo: 0x02}, + {value: 0x2018, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0xbf}, + // Block 0x22, offset 0x150 + {value: 0x0000, lo: 0x01}, + {value: 0x0008, lo: 0x80, hi: 0xbf}, + // Block 0x23, offset 0x152 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x24, offset 0x15e + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x25, offset 0x169 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x26, offset 0x171 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x27, offset 0x177 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x28, offset 0x17d + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x29, offset 0x182 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x2a, offset 0x187 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x2b, offset 0x18a + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xbf}, + // Block 0x2c, offset 0x18e + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x2d, offset 0x194 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0x2e, offset 0x199 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x93}, + {value: 0x3b08, lo: 0x94, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3b08, lo: 0xb4, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x2f, offset 0x1a5 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x30, offset 0x1af + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xb3}, + {value: 0x3340, lo: 0xb4, hi: 0xb5}, + {value: 0x3008, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x31, offset 0x1b5 + {value: 0x0000, lo: 0x10}, + {value: 0x3008, lo: 0x80, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x88}, + {value: 0x3308, lo: 0x89, hi: 0x91}, + {value: 0x3b08, lo: 0x92, hi: 0x92}, + {value: 0x3308, lo: 0x93, hi: 0x93}, + {value: 0x0018, lo: 0x94, hi: 0x96}, + {value: 0x0008, lo: 0x97, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x32, offset 0x1c6 + {value: 0x0000, lo: 0x09}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x86}, + {value: 0x0218, lo: 0x87, hi: 0x87}, + {value: 0x0018, lo: 0x88, hi: 0x8a}, + {value: 0x33c0, lo: 0x8b, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0208, lo: 0xa0, hi: 0xbf}, + // Block 0x33, offset 0x1d0 + {value: 0x0000, lo: 0x02}, + {value: 0x0208, lo: 0x80, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0x34, offset 0x1d3 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x0208, lo: 0x87, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xa9}, + {value: 0x0208, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x35, offset 0x1db + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0x36, offset 0x1de + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb8}, + {value: 0x3308, lo: 0xb9, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x37, offset 0x1eb + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x38, offset 0x1f3 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x39, offset 0x1f7 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0028, lo: 0x9a, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0xbf}, + // Block 0x3a, offset 0x1fe + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x3308, lo: 0x97, hi: 0x98}, + {value: 0x3008, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x3b, offset 0x206 + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x94}, + {value: 0x3008, lo: 0x95, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3b08, lo: 0xa0, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xac}, + {value: 0x3008, lo: 0xad, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x3c, offset 0x216 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xbd}, + {value: 0x3318, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x3d, offset 0x222 + {value: 0x0000, lo: 0x01}, + {value: 0x0040, lo: 0x80, hi: 0xbf}, + // Block 0x3e, offset 0x224 + {value: 0x0000, lo: 0x09}, + {value: 0x3308, lo: 0x80, hi: 0x83}, + {value: 0x3008, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x3f, offset 0x22e + {value: 0x0000, lo: 0x0b}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x3808, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x40, offset 0x23a + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3808, lo: 0xaa, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xbf}, + // Block 0x41, offset 0x246 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3008, lo: 0xaa, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3808, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbf}, + // Block 0x42, offset 0x252 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x3008, lo: 0xa4, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbf}, + // Block 0x43, offset 0x25a + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x44, offset 0x25f + {value: 0x0000, lo: 0x09}, + {value: 0x0e29, lo: 0x80, hi: 0x80}, + {value: 0x0e41, lo: 0x81, hi: 0x81}, + {value: 0x0e59, lo: 0x82, hi: 0x82}, + {value: 0x0e71, lo: 0x83, hi: 0x83}, + {value: 0x0e89, lo: 0x84, hi: 0x85}, + {value: 0x0ea1, lo: 0x86, hi: 0x86}, + {value: 0x0eb9, lo: 0x87, hi: 0x87}, + {value: 0x057d, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0x45, offset 0x269 + {value: 0x0000, lo: 0x10}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x92}, + {value: 0x0018, lo: 0x93, hi: 0x93}, + {value: 0x3308, lo: 0x94, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa8}, + {value: 0x0008, lo: 0xa9, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x3008, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x46, offset 0x27a + {value: 0x0000, lo: 0x03}, + {value: 0x3308, lo: 0x80, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0x47, offset 0x27e + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x87}, + {value: 0xe045, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0xe045, lo: 0x98, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0xe045, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbf}, + // Block 0x48, offset 0x289 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x3318, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbf}, + // Block 0x49, offset 0x28d + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x88}, + {value: 0x24c1, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x4a, offset 0x296 + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x24f1, lo: 0xac, hi: 0xac}, + {value: 0x2529, lo: 0xad, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xae}, + {value: 0x2579, lo: 0xaf, hi: 0xaf}, + {value: 0x25b1, lo: 0xb0, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0x4b, offset 0x29e + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x9f}, + {value: 0x0080, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xad}, + {value: 0x0080, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x4c, offset 0x2a4 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xa8}, + {value: 0x09c5, lo: 0xa9, hi: 0xa9}, + {value: 0x09e5, lo: 0xaa, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xbf}, + // Block 0x4d, offset 0x2a9 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xbf}, + // Block 0x4e, offset 0x2ac + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x28c1, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0xbf}, + // Block 0x4f, offset 0x2b0 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0e66, lo: 0xb4, hi: 0xb4}, + {value: 0x292a, lo: 0xb5, hi: 0xb5}, + {value: 0x0e86, lo: 0xb6, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x50, offset 0x2b6 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x9b}, + {value: 0x2941, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0xbf}, + // Block 0x51, offset 0x2ba + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x52, offset 0x2be + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0xbf}, + // Block 0x53, offset 0x2c2 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x54, offset 0x2c7 + {value: 0x0000, lo: 0x05}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x03f5, lo: 0x90, hi: 0x9f}, + {value: 0x0ea5, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x55, offset 0x2cd + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x56, offset 0x2d5 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xae}, + {value: 0xe075, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0x57, offset 0x2dc + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x58, offset 0x2e7 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xbf}, + // Block 0x59, offset 0x2f1 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x5a, offset 0x2f5 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0xbf}, + // Block 0x5b, offset 0x2f8 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9e}, + {value: 0x0edd, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0x5c, offset 0x2fe + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb2}, + {value: 0x0efd, lo: 0xb3, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x5d, offset 0x302 + {value: 0x0020, lo: 0x01}, + {value: 0x0f1d, lo: 0x80, hi: 0xbf}, + // Block 0x5e, offset 0x304 + {value: 0x0020, lo: 0x02}, + {value: 0x171d, lo: 0x80, hi: 0x8f}, + {value: 0x18fd, lo: 0x90, hi: 0xbf}, + // Block 0x5f, offset 0x307 + {value: 0x0020, lo: 0x01}, + {value: 0x1efd, lo: 0x80, hi: 0xbf}, + // Block 0x60, offset 0x309 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x61, offset 0x30c + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x3308, lo: 0x99, hi: 0x9a}, + {value: 0x29e2, lo: 0x9b, hi: 0x9b}, + {value: 0x2a0a, lo: 0x9c, hi: 0x9c}, + {value: 0x0008, lo: 0x9d, hi: 0x9e}, + {value: 0x2a31, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xbf}, + // Block 0x62, offset 0x316 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xbe}, + {value: 0x2a69, lo: 0xbf, hi: 0xbf}, + // Block 0x63, offset 0x319 + {value: 0x0000, lo: 0x0e}, + {value: 0x0040, lo: 0x80, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xb0}, + {value: 0x2a1d, lo: 0xb1, hi: 0xb1}, + {value: 0x2a3d, lo: 0xb2, hi: 0xb2}, + {value: 0x2a5d, lo: 0xb3, hi: 0xb3}, + {value: 0x2a7d, lo: 0xb4, hi: 0xb4}, + {value: 0x2a5d, lo: 0xb5, hi: 0xb5}, + {value: 0x2a9d, lo: 0xb6, hi: 0xb6}, + {value: 0x2abd, lo: 0xb7, hi: 0xb7}, + {value: 0x2add, lo: 0xb8, hi: 0xb9}, + {value: 0x2afd, lo: 0xba, hi: 0xbb}, + {value: 0x2b1d, lo: 0xbc, hi: 0xbd}, + {value: 0x2afd, lo: 0xbe, hi: 0xbf}, + // Block 0x64, offset 0x328 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x65, offset 0x32c + {value: 0x0030, lo: 0x04}, + {value: 0x2aa2, lo: 0x80, hi: 0x9d}, + {value: 0x305a, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x30a2, lo: 0xa0, hi: 0xbf}, + // Block 0x66, offset 0x331 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x67, offset 0x334 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x68, offset 0x338 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x69, offset 0x33d + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xbf}, + // Block 0x6a, offset 0x342 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb1}, + {value: 0x0018, lo: 0xb2, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x6b, offset 0x348 + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0xb6}, + {value: 0x0008, lo: 0xb7, hi: 0xb7}, + {value: 0x2009, lo: 0xb8, hi: 0xb8}, + {value: 0x6e89, lo: 0xb9, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xbf}, + // Block 0x6c, offset 0x34e + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0x85}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x3308, lo: 0x8b, hi: 0x8b}, + {value: 0x0008, lo: 0x8c, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x6d, offset 0x35d + {value: 0x0000, lo: 0x05}, + {value: 0x0208, lo: 0x80, hi: 0xb1}, + {value: 0x0108, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x6e, offset 0x363 + {value: 0x0000, lo: 0x03}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xbf}, + // Block 0x6f, offset 0x367 + {value: 0x0000, lo: 0x0e}, + {value: 0x3008, lo: 0x80, hi: 0x83}, + {value: 0x3b08, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xba}, + {value: 0x0008, lo: 0xbb, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x70, offset 0x376 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x71, offset 0x37b + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x91}, + {value: 0x3008, lo: 0x92, hi: 0x92}, + {value: 0x3808, lo: 0x93, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x72, offset 0x383 + {value: 0x0000, lo: 0x09}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb9}, + {value: 0x3008, lo: 0xba, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x73, offset 0x38d + {value: 0x0000, lo: 0x0a}, + {value: 0x3808, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x74, offset 0x398 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x75, offset 0x3a0 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x8b}, + {value: 0x3308, lo: 0x8c, hi: 0x8c}, + {value: 0x3008, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbd}, + {value: 0x0008, lo: 0xbe, hi: 0xbf}, + // Block 0x76, offset 0x3b1 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x77, offset 0x3ba + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x9a}, + {value: 0x0008, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xaa}, + {value: 0x3008, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3b08, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x78, offset 0x3ca + {value: 0x0000, lo: 0x0c}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x90}, + {value: 0x0008, lo: 0x91, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x79, offset 0x3d7 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x4465, lo: 0x9c, hi: 0x9c}, + {value: 0x447d, lo: 0x9d, hi: 0x9d}, + {value: 0x2971, lo: 0x9e, hi: 0x9e}, + {value: 0xe06d, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xaf}, + {value: 0x4495, lo: 0xb0, hi: 0xbf}, + // Block 0x7a, offset 0x3e1 + {value: 0x0000, lo: 0x04}, + {value: 0x44b5, lo: 0x80, hi: 0x8f}, + {value: 0x44d5, lo: 0x90, hi: 0x9f}, + {value: 0x44f5, lo: 0xa0, hi: 0xaf}, + {value: 0x44d5, lo: 0xb0, hi: 0xbf}, + // Block 0x7b, offset 0x3e6 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3b08, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x7c, offset 0x3f3 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x7d, offset 0x3f7 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x7e, offset 0x3fc + {value: 0x0020, lo: 0x01}, + {value: 0x4515, lo: 0x80, hi: 0xbf}, + // Block 0x7f, offset 0x3fe + {value: 0x0020, lo: 0x03}, + {value: 0x4d15, lo: 0x80, hi: 0x94}, + {value: 0x4ad5, lo: 0x95, hi: 0x95}, + {value: 0x4fb5, lo: 0x96, hi: 0xbf}, + // Block 0x80, offset 0x402 + {value: 0x0020, lo: 0x01}, + {value: 0x54f5, lo: 0x80, hi: 0xbf}, + // Block 0x81, offset 0x404 + {value: 0x0020, lo: 0x03}, + {value: 0x5cf5, lo: 0x80, hi: 0x84}, + {value: 0x5655, lo: 0x85, hi: 0x85}, + {value: 0x5d95, lo: 0x86, hi: 0xbf}, + // Block 0x82, offset 0x408 + {value: 0x0020, lo: 0x08}, + {value: 0x6b55, lo: 0x80, hi: 0x8f}, + {value: 0x6d15, lo: 0x90, hi: 0x90}, + {value: 0x6d55, lo: 0x91, hi: 0xab}, + {value: 0x6ea1, lo: 0xac, hi: 0xac}, + {value: 0x70b5, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x70d5, lo: 0xb0, hi: 0xbf}, + // Block 0x83, offset 0x411 + {value: 0x0020, lo: 0x05}, + {value: 0x72d5, lo: 0x80, hi: 0xad}, + {value: 0x6535, lo: 0xae, hi: 0xae}, + {value: 0x7895, lo: 0xaf, hi: 0xb5}, + {value: 0x6f55, lo: 0xb6, hi: 0xb6}, + {value: 0x7975, lo: 0xb7, hi: 0xbf}, + // Block 0x84, offset 0x417 + {value: 0x0028, lo: 0x03}, + {value: 0x7c21, lo: 0x80, hi: 0x82}, + {value: 0x7be1, lo: 0x83, hi: 0x83}, + {value: 0x7c99, lo: 0x84, hi: 0xbf}, + // Block 0x85, offset 0x41b + {value: 0x0038, lo: 0x0f}, + {value: 0x9db1, lo: 0x80, hi: 0x83}, + {value: 0x9e59, lo: 0x84, hi: 0x85}, + {value: 0x9e91, lo: 0x86, hi: 0x87}, + {value: 0x9ec9, lo: 0x88, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0xa089, lo: 0x92, hi: 0x97}, + {value: 0xa1a1, lo: 0x98, hi: 0x9c}, + {value: 0xa281, lo: 0x9d, hi: 0xb3}, + {value: 0x9d41, lo: 0xb4, hi: 0xb4}, + {value: 0x9db1, lo: 0xb5, hi: 0xb5}, + {value: 0xa789, lo: 0xb6, hi: 0xbb}, + {value: 0xa869, lo: 0xbc, hi: 0xbc}, + {value: 0xa7f9, lo: 0xbd, hi: 0xbd}, + {value: 0xa8d9, lo: 0xbe, hi: 0xbf}, + // Block 0x86, offset 0x42b + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x0008, lo: 0xbc, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x87, offset 0x435 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0x88, offset 0x43a + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x89, offset 0x43d + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x8a, offset 0x443 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0x8b, offset 0x44a + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x8c, offset 0x44f + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x8d, offset 0x453 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x8e, offset 0x459 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xbf}, + // Block 0x8f, offset 0x45e + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x90, offset 0x467 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x91, offset 0x46c + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0xbf}, + // Block 0x92, offset 0x472 + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x97}, + {value: 0x8ad5, lo: 0x98, hi: 0x9f}, + {value: 0x8aed, lo: 0xa0, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xbf}, + // Block 0x93, offset 0x479 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x8aed, lo: 0xb0, hi: 0xb7}, + {value: 0x8ad5, lo: 0xb8, hi: 0xbf}, + // Block 0x94, offset 0x480 + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x95, offset 0x487 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x96, offset 0x48b + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xae}, + {value: 0x0018, lo: 0xaf, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x97, offset 0x490 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x98, offset 0x493 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xbf}, + // Block 0x99, offset 0x498 + {value: 0x0000, lo: 0x0b}, + {value: 0x0808, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0808, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0808, lo: 0x8a, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb6}, + {value: 0x0808, lo: 0xb7, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbb}, + {value: 0x0808, lo: 0xbc, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x0808, lo: 0xbf, hi: 0xbf}, + // Block 0x9a, offset 0x4a4 + {value: 0x0000, lo: 0x05}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x96}, + {value: 0x0818, lo: 0x97, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb6}, + {value: 0x0818, lo: 0xb7, hi: 0xbf}, + // Block 0x9b, offset 0x4aa + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa6}, + {value: 0x0818, lo: 0xa7, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x9c, offset 0x4af + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb3}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xba}, + {value: 0x0818, lo: 0xbb, hi: 0xbf}, + // Block 0x9d, offset 0x4b6 + {value: 0x0000, lo: 0x07}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0818, lo: 0x96, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbe}, + {value: 0x0818, lo: 0xbf, hi: 0xbf}, + // Block 0x9e, offset 0x4be + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbb}, + {value: 0x0818, lo: 0xbc, hi: 0xbd}, + {value: 0x0808, lo: 0xbe, hi: 0xbf}, + // Block 0x9f, offset 0x4c3 + {value: 0x0000, lo: 0x03}, + {value: 0x0818, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x0818, lo: 0x92, hi: 0xbf}, + // Block 0xa0, offset 0x4c7 + {value: 0x0000, lo: 0x0f}, + {value: 0x0808, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8b}, + {value: 0x3308, lo: 0x8c, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x94}, + {value: 0x0808, lo: 0x95, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0x98}, + {value: 0x0808, lo: 0x99, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xa1, offset 0x4d7 + {value: 0x0000, lo: 0x06}, + {value: 0x0818, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0x0818, lo: 0x90, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xbc}, + {value: 0x0818, lo: 0xbd, hi: 0xbf}, + // Block 0xa2, offset 0x4de + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0x9c}, + {value: 0x0818, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xa3, offset 0x4e2 + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb8}, + {value: 0x0018, lo: 0xb9, hi: 0xbf}, + // Block 0xa4, offset 0x4e6 + {value: 0x0000, lo: 0x06}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0818, lo: 0x98, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb7}, + {value: 0x0818, lo: 0xb8, hi: 0xbf}, + // Block 0xa5, offset 0x4ed + {value: 0x0000, lo: 0x01}, + {value: 0x0808, lo: 0x80, hi: 0xbf}, + // Block 0xa6, offset 0x4ef + {value: 0x0000, lo: 0x02}, + {value: 0x0808, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0xa7, offset 0x4f2 + {value: 0x0000, lo: 0x02}, + {value: 0x03dd, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xa8, offset 0x4f5 + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb9}, + {value: 0x0818, lo: 0xba, hi: 0xbf}, + // Block 0xa9, offset 0x4f9 + {value: 0x0000, lo: 0x08}, + {value: 0x0908, lo: 0x80, hi: 0x80}, + {value: 0x0a08, lo: 0x81, hi: 0xa1}, + {value: 0x0c08, lo: 0xa2, hi: 0xa2}, + {value: 0x0a08, lo: 0xa3, hi: 0xa3}, + {value: 0x3308, lo: 0xa4, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0808, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xaa, offset 0x502 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0818, lo: 0xa0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xab, offset 0x506 + {value: 0x0000, lo: 0x07}, + {value: 0x0808, lo: 0x80, hi: 0x9c}, + {value: 0x0818, lo: 0x9d, hi: 0xa6}, + {value: 0x0808, lo: 0xa7, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0a08, lo: 0xb0, hi: 0xb2}, + {value: 0x0c08, lo: 0xb3, hi: 0xb3}, + {value: 0x0a08, lo: 0xb4, hi: 0xbf}, + // Block 0xac, offset 0x50e + {value: 0x0000, lo: 0x07}, + {value: 0x0a08, lo: 0x80, hi: 0x84}, + {value: 0x0808, lo: 0x85, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x90}, + {value: 0x0a18, lo: 0x91, hi: 0x93}, + {value: 0x0c18, lo: 0x94, hi: 0x94}, + {value: 0x0818, lo: 0x95, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xad, offset 0x516 + {value: 0x0000, lo: 0x05}, + {value: 0x3008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xae, offset 0x51c + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x85}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x91}, + {value: 0x0018, lo: 0x92, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xaf, offset 0x525 + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb6}, + {value: 0x3008, lo: 0xb7, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0xb0, offset 0x531 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xb1, offset 0x538 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb2}, + {value: 0x3b08, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xbf}, + // Block 0xb2, offset 0x541 + {value: 0x0000, lo: 0x09}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x3008, lo: 0x85, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xb3, offset 0x54b + {value: 0x0000, lo: 0x06}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xbe}, + {value: 0x3008, lo: 0xbf, hi: 0xbf}, + // Block 0xb4, offset 0x552 + {value: 0x0000, lo: 0x0d}, + {value: 0x3808, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x88}, + {value: 0x3308, lo: 0x89, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xb5, offset 0x560 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3808, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xb6, offset 0x56d + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0008, lo: 0x9f, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0xb7, offset 0x57a + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x3308, lo: 0x9f, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xa9}, + {value: 0x3b08, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xb8, offset 0x583 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xb9, offset 0x587 + {value: 0x0000, lo: 0x0e}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x84}, + {value: 0x3008, lo: 0x85, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9d}, + {value: 0x3308, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xba, offset 0x596 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb8}, + {value: 0x3008, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0xbb, offset 0x59e + {value: 0x0000, lo: 0x0a}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x85}, + {value: 0x0018, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xbc, offset 0x5a9 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbd, offset 0x5b2 + {value: 0x0000, lo: 0x05}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9b}, + {value: 0x3308, lo: 0x9c, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0xbe, offset 0x5b8 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbf, offset 0x5c0 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xc0, offset 0x5c9 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb5}, + {value: 0x3808, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0xc1, offset 0x5d3 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0xbf}, + // Block 0xc2, offset 0x5d6 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbf}, + // Block 0xc3, offset 0x5e2 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0xc4, offset 0x5eb + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xbf}, + // Block 0xc5, offset 0x5ee + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0xc6, offset 0x5f3 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x3b08, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb8}, + {value: 0x3008, lo: 0xb9, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0xc7, offset 0x5fe + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x3b08, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x3308, lo: 0x91, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x98}, + {value: 0x3308, lo: 0x99, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0xbf}, + // Block 0xc8, offset 0x607 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x89}, + {value: 0x3308, lo: 0x8a, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x98}, + {value: 0x3b08, lo: 0x99, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9c}, + {value: 0x0008, lo: 0x9d, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0xa2}, + {value: 0x0040, lo: 0xa3, hi: 0xbf}, + // Block 0xc9, offset 0x613 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xca, offset 0x616 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xcb, offset 0x620 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xbf}, + // Block 0xcc, offset 0x629 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xa9}, + {value: 0x3308, lo: 0xaa, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xcd, offset 0x635 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0xce, offset 0x642 + {value: 0x0000, lo: 0x0c}, + {value: 0x3308, lo: 0x80, hi: 0x83}, + {value: 0x3b08, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xa9}, + {value: 0x0008, lo: 0xaa, hi: 0xbf}, + // Block 0xcf, offset 0x64f + {value: 0x0000, lo: 0x0d}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x3008, lo: 0x8a, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0x92}, + {value: 0x3008, lo: 0x93, hi: 0x94}, + {value: 0x3308, lo: 0x95, hi: 0x95}, + {value: 0x3008, lo: 0x96, hi: 0x96}, + {value: 0x3b08, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xbf}, + // Block 0xd0, offset 0x65d + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xd1, offset 0x664 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xd2, offset 0x667 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xd3, offset 0x66c + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0xbf}, + // Block 0xd4, offset 0x66f + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xbf}, + // Block 0xd5, offset 0x672 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0xbf}, + // Block 0xd6, offset 0x675 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xd7, offset 0x67c + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xd8, offset 0x683 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0xd9, offset 0x687 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x0008, lo: 0xa3, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0xda, offset 0x692 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0xbf}, + // Block 0xdb, offset 0x695 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0xdc, offset 0x698 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0xbf}, + // Block 0xdd, offset 0x69b + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x3008, lo: 0x91, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xde, offset 0x6a1 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8e}, + {value: 0x3308, lo: 0x8f, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xdf, offset 0x6a6 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xbf}, + // Block 0xe0, offset 0x6aa + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xe1, offset 0x6ad + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xe2, offset 0x6b0 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xe3, offset 0x6b3 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0xe4, offset 0x6b6 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0xe5, offset 0x6b9 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0xe6, offset 0x6be + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x03c0, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xbf}, + // Block 0xe7, offset 0x6c8 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xe8, offset 0x6cb + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xbf}, + // Block 0xe9, offset 0x6cf + {value: 0x0000, lo: 0x0e}, + {value: 0x0018, lo: 0x80, hi: 0x9d}, + {value: 0xb5b9, lo: 0x9e, hi: 0x9e}, + {value: 0xb601, lo: 0x9f, hi: 0x9f}, + {value: 0xb649, lo: 0xa0, hi: 0xa0}, + {value: 0xb6b1, lo: 0xa1, hi: 0xa1}, + {value: 0xb719, lo: 0xa2, hi: 0xa2}, + {value: 0xb781, lo: 0xa3, hi: 0xa3}, + {value: 0xb7e9, lo: 0xa4, hi: 0xa4}, + {value: 0x3018, lo: 0xa5, hi: 0xa6}, + {value: 0x3318, lo: 0xa7, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xac}, + {value: 0x3018, lo: 0xad, hi: 0xb2}, + {value: 0x0340, lo: 0xb3, hi: 0xba}, + {value: 0x3318, lo: 0xbb, hi: 0xbf}, + // Block 0xea, offset 0x6de + {value: 0x0000, lo: 0x0b}, + {value: 0x3318, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0x84}, + {value: 0x3318, lo: 0x85, hi: 0x8b}, + {value: 0x0018, lo: 0x8c, hi: 0xa9}, + {value: 0x3318, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xba}, + {value: 0xb851, lo: 0xbb, hi: 0xbb}, + {value: 0xb899, lo: 0xbc, hi: 0xbc}, + {value: 0xb8e1, lo: 0xbd, hi: 0xbd}, + {value: 0xb949, lo: 0xbe, hi: 0xbe}, + {value: 0xb9b1, lo: 0xbf, hi: 0xbf}, + // Block 0xeb, offset 0x6ea + {value: 0x0000, lo: 0x03}, + {value: 0xba19, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xbf}, + // Block 0xec, offset 0x6ee + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x3318, lo: 0x82, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0xbf}, + // Block 0xed, offset 0x6f3 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0xee, offset 0x6f7 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xef, offset 0x6fc + {value: 0x0000, lo: 0x03}, + {value: 0x3308, lo: 0x80, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0xf0, offset 0x700 + {value: 0x0000, lo: 0x04}, + {value: 0x3308, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0xf1, offset 0x705 + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x3308, lo: 0xa1, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xf2, offset 0x70e + {value: 0x0000, lo: 0x0a}, + {value: 0x3308, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x3308, lo: 0x88, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xa4}, + {value: 0x0040, lo: 0xa5, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xbf}, + // Block 0xf3, offset 0x719 + {value: 0x0000, lo: 0x05}, + {value: 0x0808, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x86}, + {value: 0x0818, lo: 0x87, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0xf4, offset 0x71f + {value: 0x0000, lo: 0x07}, + {value: 0x0a08, lo: 0x80, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0818, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xf5, offset 0x727 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xb0}, + {value: 0x0818, lo: 0xb1, hi: 0xbf}, + // Block 0xf6, offset 0x72a + {value: 0x0000, lo: 0x02}, + {value: 0x0818, lo: 0x80, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xf7, offset 0x72d + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xf8, offset 0x731 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0xf9, offset 0x735 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0xfa, offset 0x73b + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xfb, offset 0x741 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8f}, + {value: 0xc1c1, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xfc, offset 0x746 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xbf}, + // Block 0xfd, offset 0x749 + {value: 0x0000, lo: 0x0f}, + {value: 0xc7e9, lo: 0x80, hi: 0x80}, + {value: 0xc839, lo: 0x81, hi: 0x81}, + {value: 0xc889, lo: 0x82, hi: 0x82}, + {value: 0xc8d9, lo: 0x83, hi: 0x83}, + {value: 0xc929, lo: 0x84, hi: 0x84}, + {value: 0xc979, lo: 0x85, hi: 0x85}, + {value: 0xc9c9, lo: 0x86, hi: 0x86}, + {value: 0xca19, lo: 0x87, hi: 0x87}, + {value: 0xca69, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0xcab9, lo: 0x90, hi: 0x90}, + {value: 0xcad9, lo: 0x91, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xbf}, + // Block 0xfe, offset 0x759 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xff, offset 0x760 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x100, offset 0x763 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0xbf}, + // Block 0x101, offset 0x766 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x102, offset 0x76a + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0x103, offset 0x770 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xbf}, + // Block 0x104, offset 0x775 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x105, offset 0x77a + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb2}, + {value: 0x0018, lo: 0xb3, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbf}, + // Block 0x106, offset 0x782 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xa2}, + {value: 0x0040, lo: 0xa3, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x107, offset 0x787 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x108, offset 0x78b + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xbf}, + // Block 0x109, offset 0x78f + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0x10a, offset 0x792 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x10b, offset 0x795 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x10c, offset 0x799 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x10d, offset 0x79d + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0x10e, offset 0x7a0 + {value: 0x0020, lo: 0x0f}, + {value: 0xdeb9, lo: 0x80, hi: 0x89}, + {value: 0x8dfd, lo: 0x8a, hi: 0x8a}, + {value: 0xdff9, lo: 0x8b, hi: 0x9c}, + {value: 0x8e1d, lo: 0x9d, hi: 0x9d}, + {value: 0xe239, lo: 0x9e, hi: 0xa2}, + {value: 0x8e3d, lo: 0xa3, hi: 0xa3}, + {value: 0xe2d9, lo: 0xa4, hi: 0xab}, + {value: 0x7ed5, lo: 0xac, hi: 0xac}, + {value: 0xe3d9, lo: 0xad, hi: 0xaf}, + {value: 0x8e5d, lo: 0xb0, hi: 0xb0}, + {value: 0xe439, lo: 0xb1, hi: 0xb6}, + {value: 0x8e7d, lo: 0xb7, hi: 0xb9}, + {value: 0xe4f9, lo: 0xba, hi: 0xba}, + {value: 0x8edd, lo: 0xbb, hi: 0xbb}, + {value: 0xe519, lo: 0xbc, hi: 0xbf}, + // Block 0x10f, offset 0x7b0 + {value: 0x0020, lo: 0x10}, + {value: 0x937d, lo: 0x80, hi: 0x80}, + {value: 0xf099, lo: 0x81, hi: 0x86}, + {value: 0x939d, lo: 0x87, hi: 0x8a}, + {value: 0xd9f9, lo: 0x8b, hi: 0x8b}, + {value: 0xf159, lo: 0x8c, hi: 0x96}, + {value: 0x941d, lo: 0x97, hi: 0x97}, + {value: 0xf2b9, lo: 0x98, hi: 0xa3}, + {value: 0x943d, lo: 0xa4, hi: 0xa6}, + {value: 0xf439, lo: 0xa7, hi: 0xaa}, + {value: 0x949d, lo: 0xab, hi: 0xab}, + {value: 0xf4b9, lo: 0xac, hi: 0xac}, + {value: 0x94bd, lo: 0xad, hi: 0xad}, + {value: 0xf4d9, lo: 0xae, hi: 0xaf}, + {value: 0x94dd, lo: 0xb0, hi: 0xb1}, + {value: 0xf519, lo: 0xb2, hi: 0xbe}, + {value: 0x2040, lo: 0xbf, hi: 0xbf}, + // Block 0x110, offset 0x7c1 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0340, lo: 0x81, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x9f}, + {value: 0x0340, lo: 0xa0, hi: 0xbf}, + // Block 0x111, offset 0x7c6 + {value: 0x0000, lo: 0x01}, + {value: 0x0340, lo: 0x80, hi: 0xbf}, + // Block 0x112, offset 0x7c8 + {value: 0x0000, lo: 0x01}, + {value: 0x33c0, lo: 0x80, hi: 0xbf}, + // Block 0x113, offset 0x7ca + {value: 0x0000, lo: 0x02}, + {value: 0x33c0, lo: 0x80, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, +} + +// Total table size 42466 bytes (41KiB); checksum: 355A58A4 diff --git a/vendor/golang.org/x/net/idna/tables9.0.0.go b/vendor/golang.org/x/net/idna/tables9.0.0.go new file mode 100644 index 0000000000..8b65fa1678 --- /dev/null +++ b/vendor/golang.org/x/net/idna/tables9.0.0.go @@ -0,0 +1,4486 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// +build !go1.10 + +package idna + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "9.0.0" + +var mappings string = "" + // Size: 8175 bytes + "\x00\x01 \x03 ̈\x01a\x03 ̄\x012\x013\x03 ́\x03 ̧\x011\x01o\x051⁄4\x051⁄2" + + "\x053⁄4\x03i̇\x03l·\x03ʼn\x01s\x03dž\x03ⱥ\x03ⱦ\x01h\x01j\x01r\x01w\x01y" + + "\x03 ̆\x03 ̇\x03 ̊\x03 ̨\x03 ̃\x03 ̋\x01l\x01x\x04̈́\x03 ι\x01;\x05 ̈́" + + "\x04եւ\x04اٴ\x04وٴ\x04ۇٴ\x04يٴ\x06क़\x06ख़\x06ग़\x06ज़\x06ड़\x06ढ़\x06फ़" + + "\x06य़\x06ড়\x06ঢ়\x06য়\x06ਲ਼\x06ਸ਼\x06ਖ਼\x06ਗ਼\x06ਜ਼\x06ਫ਼\x06ଡ଼\x06ଢ଼" + + "\x06ํา\x06ໍາ\x06ຫນ\x06ຫມ\x06གྷ\x06ཌྷ\x06དྷ\x06བྷ\x06ཛྷ\x06ཀྵ\x06ཱི\x06ཱུ" + + "\x06ྲྀ\x09ྲཱྀ\x06ླྀ\x09ླཱྀ\x06ཱྀ\x06ྒྷ\x06ྜྷ\x06ྡྷ\x06ྦྷ\x06ྫྷ\x06ྐྵ\x02" + + "в\x02д\x02о\x02с\x02т\x02ъ\x02ѣ\x02æ\x01b\x01d\x01e\x02ǝ\x01g\x01i\x01k" + + "\x01m\x01n\x02ȣ\x01p\x01t\x01u\x02ɐ\x02ɑ\x02ə\x02ɛ\x02ɜ\x02ŋ\x02ɔ\x02ɯ" + + "\x01v\x02β\x02γ\x02δ\x02φ\x02χ\x02ρ\x02н\x02ɒ\x01c\x02ɕ\x02ð\x01f\x02ɟ" + + "\x02ɡ\x02ɥ\x02ɨ\x02ɩ\x02ɪ\x02ʝ\x02ɭ\x02ʟ\x02ɱ\x02ɰ\x02ɲ\x02ɳ\x02ɴ\x02ɵ" + + "\x02ɸ\x02ʂ\x02ʃ\x02ƫ\x02ʉ\x02ʊ\x02ʋ\x02ʌ\x01z\x02ʐ\x02ʑ\x02ʒ\x02θ\x02ss" + + "\x02ά\x02έ\x02ή\x02ί\x02ό\x02ύ\x02ώ\x05ἀι\x05ἁι\x05ἂι\x05ἃι\x05ἄι\x05ἅι" + + "\x05ἆι\x05ἇι\x05ἠι\x05ἡι\x05ἢι\x05ἣι\x05ἤι\x05ἥι\x05ἦι\x05ἧι\x05ὠι\x05ὡι" + + "\x05ὢι\x05ὣι\x05ὤι\x05ὥι\x05ὦι\x05ὧι\x05ὰι\x04αι\x04άι\x05ᾶι\x02ι\x05 ̈͂" + + "\x05ὴι\x04ηι\x04ήι\x05ῆι\x05 ̓̀\x05 ̓́\x05 ̓͂\x02ΐ\x05 ̔̀\x05 ̔́\x05 ̔͂" + + "\x02ΰ\x05 ̈̀\x01`\x05ὼι\x04ωι\x04ώι\x05ῶι\x06′′\x09′′′\x06‵‵\x09‵‵‵\x02!" + + "!\x02??\x02?!\x02!?\x0c′′′′\x010\x014\x015\x016\x017\x018\x019\x01+\x01=" + + "\x01(\x01)\x02rs\x02ħ\x02no\x01q\x02sm\x02tm\x02ω\x02å\x02א\x02ב\x02ג" + + "\x02ד\x02π\x051⁄7\x051⁄9\x061⁄10\x051⁄3\x052⁄3\x051⁄5\x052⁄5\x053⁄5\x054" + + "⁄5\x051⁄6\x055⁄6\x051⁄8\x053⁄8\x055⁄8\x057⁄8\x041⁄\x02ii\x02iv\x02vi" + + "\x04viii\x02ix\x02xi\x050⁄3\x06∫∫\x09∫∫∫\x06∮∮\x09∮∮∮\x0210\x0211\x0212" + + "\x0213\x0214\x0215\x0216\x0217\x0218\x0219\x0220\x04(10)\x04(11)\x04(12)" + + "\x04(13)\x04(14)\x04(15)\x04(16)\x04(17)\x04(18)\x04(19)\x04(20)\x0c∫∫∫∫" + + "\x02==\x05⫝̸\x02ɫ\x02ɽ\x02ȿ\x02ɀ\x01.\x04 ゙\x04 ゚\x06より\x06コト\x05(ᄀ)\x05" + + "(ᄂ)\x05(ᄃ)\x05(ᄅ)\x05(ᄆ)\x05(ᄇ)\x05(ᄉ)\x05(ᄋ)\x05(ᄌ)\x05(ᄎ)\x05(ᄏ)\x05(ᄐ" + + ")\x05(ᄑ)\x05(ᄒ)\x05(가)\x05(나)\x05(다)\x05(라)\x05(마)\x05(바)\x05(사)\x05(아)" + + "\x05(자)\x05(차)\x05(카)\x05(타)\x05(파)\x05(하)\x05(주)\x08(오전)\x08(오후)\x05(一)" + + "\x05(二)\x05(三)\x05(四)\x05(五)\x05(六)\x05(七)\x05(八)\x05(九)\x05(十)\x05(月)" + + "\x05(火)\x05(水)\x05(木)\x05(金)\x05(土)\x05(日)\x05(株)\x05(有)\x05(社)\x05(名)" + + "\x05(特)\x05(財)\x05(祝)\x05(労)\x05(代)\x05(呼)\x05(学)\x05(監)\x05(企)\x05(資)" + + "\x05(協)\x05(祭)\x05(休)\x05(自)\x05(至)\x0221\x0222\x0223\x0224\x0225\x0226" + + "\x0227\x0228\x0229\x0230\x0231\x0232\x0233\x0234\x0235\x06참고\x06주의\x0236" + + "\x0237\x0238\x0239\x0240\x0241\x0242\x0243\x0244\x0245\x0246\x0247\x0248" + + "\x0249\x0250\x041月\x042月\x043月\x044月\x045月\x046月\x047月\x048月\x049月\x0510" + + "月\x0511月\x0512月\x02hg\x02ev\x0cアパート\x0cアルファ\x0cアンペア\x09アール\x0cイニング\x09" + + "インチ\x09ウォン\x0fエスクード\x0cエーカー\x09オンス\x09オーム\x09カイリ\x0cカラット\x0cカロリー\x09ガロ" + + "ン\x09ガンマ\x06ギガ\x09ギニー\x0cキュリー\x0cギルダー\x06キロ\x0fキログラム\x12キロメートル\x0fキロワッ" + + "ト\x09グラム\x0fグラムトン\x0fクルゼイロ\x0cクローネ\x09ケース\x09コルナ\x09コーポ\x0cサイクル\x0fサンチ" + + "ーム\x0cシリング\x09センチ\x09セント\x09ダース\x06デシ\x06ドル\x06トン\x06ナノ\x09ノット\x09ハイツ" + + "\x0fパーセント\x09パーツ\x0cバーレル\x0fピアストル\x09ピクル\x06ピコ\x06ビル\x0fファラッド\x0cフィート" + + "\x0fブッシェル\x09フラン\x0fヘクタール\x06ペソ\x09ペニヒ\x09ヘルツ\x09ペンス\x09ページ\x09ベータ\x0cポイ" + + "ント\x09ボルト\x06ホン\x09ポンド\x09ホール\x09ホーン\x0cマイクロ\x09マイル\x09マッハ\x09マルク\x0fマ" + + "ンション\x0cミクロン\x06ミリ\x0fミリバール\x06メガ\x0cメガトン\x0cメートル\x09ヤード\x09ヤール\x09ユアン" + + "\x0cリットル\x06リラ\x09ルピー\x0cルーブル\x06レム\x0fレントゲン\x09ワット\x040点\x041点\x042点" + + "\x043点\x044点\x045点\x046点\x047点\x048点\x049点\x0510点\x0511点\x0512点\x0513点" + + "\x0514点\x0515点\x0516点\x0517点\x0518点\x0519点\x0520点\x0521点\x0522点\x0523点" + + "\x0524点\x02da\x02au\x02ov\x02pc\x02dm\x02iu\x06平成\x06昭和\x06大正\x06明治\x0c株" + + "式会社\x02pa\x02na\x02ma\x02ka\x02kb\x02mb\x02gb\x04kcal\x02pf\x02nf\x02m" + + "g\x02kg\x02hz\x02ml\x02dl\x02kl\x02fm\x02nm\x02mm\x02cm\x02km\x02m2\x02m" + + "3\x05m∕s\x06m∕s2\x07rad∕s\x08rad∕s2\x02ps\x02ns\x02ms\x02pv\x02nv\x02mv" + + "\x02kv\x02pw\x02nw\x02mw\x02kw\x02bq\x02cc\x02cd\x06c∕kg\x02db\x02gy\x02" + + "ha\x02hp\x02in\x02kk\x02kt\x02lm\x02ln\x02lx\x02ph\x02pr\x02sr\x02sv\x02" + + "wb\x05v∕m\x05a∕m\x041日\x042日\x043日\x044日\x045日\x046日\x047日\x048日\x049日" + + "\x0510日\x0511日\x0512日\x0513日\x0514日\x0515日\x0516日\x0517日\x0518日\x0519日" + + "\x0520日\x0521日\x0522日\x0523日\x0524日\x0525日\x0526日\x0527日\x0528日\x0529日" + + "\x0530日\x0531日\x02ь\x02ɦ\x02ɬ\x02ʞ\x02ʇ\x02œ\x04𤋮\x04𢡊\x04𢡄\x04𣏕\x04𥉉" + + "\x04𥳐\x04𧻓\x02ff\x02fi\x02fl\x02st\x04մն\x04մե\x04մի\x04վն\x04մխ\x04יִ" + + "\x04ײַ\x02ע\x02ה\x02כ\x02ל\x02ם\x02ר\x02ת\x04שׁ\x04שׂ\x06שּׁ\x06שּׂ\x04א" + + "ַ\x04אָ\x04אּ\x04בּ\x04גּ\x04דּ\x04הּ\x04וּ\x04זּ\x04טּ\x04יּ\x04ךּ\x04" + + "כּ\x04לּ\x04מּ\x04נּ\x04סּ\x04ףּ\x04פּ\x04צּ\x04קּ\x04רּ\x04שּ\x04תּ" + + "\x04וֹ\x04בֿ\x04כֿ\x04פֿ\x04אל\x02ٱ\x02ٻ\x02پ\x02ڀ\x02ٺ\x02ٿ\x02ٹ\x02ڤ" + + "\x02ڦ\x02ڄ\x02ڃ\x02چ\x02ڇ\x02ڍ\x02ڌ\x02ڎ\x02ڈ\x02ژ\x02ڑ\x02ک\x02گ\x02ڳ" + + "\x02ڱ\x02ں\x02ڻ\x02ۀ\x02ہ\x02ھ\x02ے\x02ۓ\x02ڭ\x02ۇ\x02ۆ\x02ۈ\x02ۋ\x02ۅ" + + "\x02ۉ\x02ې\x02ى\x04ئا\x04ئە\x04ئو\x04ئۇ\x04ئۆ\x04ئۈ\x04ئې\x04ئى\x02ی\x04" + + "ئج\x04ئح\x04ئم\x04ئي\x04بج\x04بح\x04بخ\x04بم\x04بى\x04بي\x04تج\x04تح" + + "\x04تخ\x04تم\x04تى\x04تي\x04ثج\x04ثم\x04ثى\x04ثي\x04جح\x04جم\x04حج\x04حم" + + "\x04خج\x04خح\x04خم\x04سج\x04سح\x04سخ\x04سم\x04صح\x04صم\x04ضج\x04ضح\x04ضخ" + + "\x04ضم\x04طح\x04طم\x04ظم\x04عج\x04عم\x04غج\x04غم\x04فج\x04فح\x04فخ\x04فم" + + "\x04فى\x04في\x04قح\x04قم\x04قى\x04قي\x04كا\x04كج\x04كح\x04كخ\x04كل\x04كم" + + "\x04كى\x04كي\x04لج\x04لح\x04لخ\x04لم\x04لى\x04لي\x04مج\x04مح\x04مخ\x04مم" + + "\x04مى\x04مي\x04نج\x04نح\x04نخ\x04نم\x04نى\x04ني\x04هج\x04هم\x04هى\x04هي" + + "\x04يج\x04يح\x04يخ\x04يم\x04يى\x04يي\x04ذٰ\x04رٰ\x04ىٰ\x05 ٌّ\x05 ٍّ\x05" + + " َّ\x05 ُّ\x05 ِّ\x05 ّٰ\x04ئر\x04ئز\x04ئن\x04بر\x04بز\x04بن\x04تر\x04تز" + + "\x04تن\x04ثر\x04ثز\x04ثن\x04ما\x04نر\x04نز\x04نن\x04ير\x04يز\x04ين\x04ئخ" + + "\x04ئه\x04به\x04ته\x04صخ\x04له\x04نه\x04هٰ\x04يه\x04ثه\x04سه\x04شم\x04شه" + + "\x06ـَّ\x06ـُّ\x06ـِّ\x04طى\x04طي\x04عى\x04عي\x04غى\x04غي\x04سى\x04سي" + + "\x04شى\x04شي\x04حى\x04حي\x04جى\x04جي\x04خى\x04خي\x04صى\x04صي\x04ضى\x04ضي" + + "\x04شج\x04شح\x04شخ\x04شر\x04سر\x04صر\x04ضر\x04اً\x06تجم\x06تحج\x06تحم" + + "\x06تخم\x06تمج\x06تمح\x06تمخ\x06جمح\x06حمي\x06حمى\x06سحج\x06سجح\x06سجى" + + "\x06سمح\x06سمج\x06سمم\x06صحح\x06صمم\x06شحم\x06شجي\x06شمخ\x06شمم\x06ضحى" + + "\x06ضخم\x06طمح\x06طمم\x06طمي\x06عجم\x06عمم\x06عمى\x06غمم\x06غمي\x06غمى" + + "\x06فخم\x06قمح\x06قمم\x06لحم\x06لحي\x06لحى\x06لجج\x06لخم\x06لمح\x06محج" + + "\x06محم\x06محي\x06مجح\x06مجم\x06مخج\x06مخم\x06مجخ\x06همج\x06همم\x06نحم" + + "\x06نحى\x06نجم\x06نجى\x06نمي\x06نمى\x06يمم\x06بخي\x06تجي\x06تجى\x06تخي" + + "\x06تخى\x06تمي\x06تمى\x06جمي\x06جحى\x06جمى\x06سخى\x06صحي\x06شحي\x06ضحي" + + "\x06لجي\x06لمي\x06يحي\x06يجي\x06يمي\x06ممي\x06قمي\x06نحي\x06عمي\x06كمي" + + "\x06نجح\x06مخي\x06لجم\x06كمم\x06جحي\x06حجي\x06مجي\x06فمي\x06بحي\x06سخي" + + "\x06نجي\x06صلے\x06قلے\x08الله\x08اكبر\x08محمد\x08صلعم\x08رسول\x08عليه" + + "\x08وسلم\x06صلى!صلى الله عليه وسلم\x0fجل جلاله\x08ریال\x01,\x01:\x01!" + + "\x01?\x01_\x01{\x01}\x01[\x01]\x01#\x01&\x01*\x01-\x01<\x01>\x01\\\x01$" + + "\x01%\x01@\x04ـً\x04ـَ\x04ـُ\x04ـِ\x04ـّ\x04ـْ\x02ء\x02آ\x02أ\x02ؤ\x02إ" + + "\x02ئ\x02ا\x02ب\x02ة\x02ت\x02ث\x02ج\x02ح\x02خ\x02د\x02ذ\x02ر\x02ز\x02س" + + "\x02ش\x02ص\x02ض\x02ط\x02ظ\x02ع\x02غ\x02ف\x02ق\x02ك\x02ل\x02م\x02ن\x02ه" + + "\x02و\x02ي\x04لآ\x04لأ\x04لإ\x04لا\x01\x22\x01'\x01/\x01^\x01|\x01~\x02¢" + + "\x02£\x02¬\x02¦\x02¥\x08𝅗𝅥\x08𝅘𝅥\x0c𝅘𝅥𝅮\x0c𝅘𝅥𝅯\x0c𝅘𝅥𝅰\x0c𝅘𝅥𝅱\x0c𝅘𝅥𝅲\x08𝆹" + + "𝅥\x08𝆺𝅥\x0c𝆹𝅥𝅮\x0c𝆺𝅥𝅮\x0c𝆹𝅥𝅯\x0c𝆺𝅥𝅯\x02ı\x02ȷ\x02α\x02ε\x02ζ\x02η\x02" + + "κ\x02λ\x02μ\x02ν\x02ξ\x02ο\x02σ\x02τ\x02υ\x02ψ\x03∇\x03∂\x02ϝ\x02ٮ\x02ڡ" + + "\x02ٯ\x020,\x021,\x022,\x023,\x024,\x025,\x026,\x027,\x028,\x029,\x03(a)" + + "\x03(b)\x03(c)\x03(d)\x03(e)\x03(f)\x03(g)\x03(h)\x03(i)\x03(j)\x03(k)" + + "\x03(l)\x03(m)\x03(n)\x03(o)\x03(p)\x03(q)\x03(r)\x03(s)\x03(t)\x03(u)" + + "\x03(v)\x03(w)\x03(x)\x03(y)\x03(z)\x07〔s〕\x02wz\x02hv\x02sd\x03ppv\x02w" + + "c\x02mc\x02md\x02dj\x06ほか\x06ココ\x03サ\x03手\x03字\x03双\x03デ\x03二\x03多\x03解" + + "\x03天\x03交\x03映\x03無\x03料\x03前\x03後\x03再\x03新\x03初\x03終\x03生\x03販\x03声" + + "\x03吹\x03演\x03投\x03捕\x03一\x03三\x03遊\x03左\x03中\x03右\x03指\x03走\x03打\x03禁" + + "\x03空\x03合\x03満\x03有\x03月\x03申\x03割\x03営\x03配\x09〔本〕\x09〔三〕\x09〔二〕\x09〔安" + + "〕\x09〔点〕\x09〔打〕\x09〔盗〕\x09〔勝〕\x09〔敗〕\x03得\x03可\x03丽\x03丸\x03乁\x03你\x03" + + "侮\x03侻\x03倂\x03偺\x03備\x03僧\x03像\x03㒞\x03免\x03兔\x03兤\x03具\x03㒹\x03內\x03" + + "冗\x03冤\x03仌\x03冬\x03况\x03凵\x03刃\x03㓟\x03刻\x03剆\x03剷\x03㔕\x03勇\x03勉\x03" + + "勤\x03勺\x03包\x03匆\x03北\x03卉\x03卑\x03博\x03即\x03卽\x03卿\x03灰\x03及\x03叟\x03" + + "叫\x03叱\x03吆\x03咞\x03吸\x03呈\x03周\x03咢\x03哶\x03唐\x03啓\x03啣\x03善\x03喙\x03" + + "喫\x03喳\x03嗂\x03圖\x03嘆\x03圗\x03噑\x03噴\x03切\x03壮\x03城\x03埴\x03堍\x03型\x03" + + "堲\x03報\x03墬\x03売\x03壷\x03夆\x03夢\x03奢\x03姬\x03娛\x03娧\x03姘\x03婦\x03㛮\x03" + + "嬈\x03嬾\x03寃\x03寘\x03寧\x03寳\x03寿\x03将\x03尢\x03㞁\x03屠\x03屮\x03峀\x03岍\x03" + + "嵃\x03嵮\x03嵫\x03嵼\x03巡\x03巢\x03㠯\x03巽\x03帨\x03帽\x03幩\x03㡢\x03㡼\x03庰\x03" + + "庳\x03庶\x03廊\x03廾\x03舁\x03弢\x03㣇\x03形\x03彫\x03㣣\x03徚\x03忍\x03志\x03忹\x03" + + "悁\x03㤺\x03㤜\x03悔\x03惇\x03慈\x03慌\x03慎\x03慺\x03憎\x03憲\x03憤\x03憯\x03懞\x03" + + "懲\x03懶\x03成\x03戛\x03扝\x03抱\x03拔\x03捐\x03挽\x03拼\x03捨\x03掃\x03揤\x03搢\x03" + + "揅\x03掩\x03㨮\x03摩\x03摾\x03撝\x03摷\x03㩬\x03敏\x03敬\x03旣\x03書\x03晉\x03㬙\x03" + + "暑\x03㬈\x03㫤\x03冒\x03冕\x03最\x03暜\x03肭\x03䏙\x03朗\x03望\x03朡\x03杞\x03杓\x03" + + "㭉\x03柺\x03枅\x03桒\x03梅\x03梎\x03栟\x03椔\x03㮝\x03楂\x03榣\x03槪\x03檨\x03櫛\x03" + + "㰘\x03次\x03歔\x03㱎\x03歲\x03殟\x03殺\x03殻\x03汎\x03沿\x03泍\x03汧\x03洖\x03派\x03" + + "海\x03流\x03浩\x03浸\x03涅\x03洴\x03港\x03湮\x03㴳\x03滋\x03滇\x03淹\x03潮\x03濆\x03" + + "瀹\x03瀞\x03瀛\x03㶖\x03灊\x03災\x03灷\x03炭\x03煅\x03熜\x03爨\x03爵\x03牐\x03犀\x03" + + "犕\x03獺\x03王\x03㺬\x03玥\x03㺸\x03瑇\x03瑜\x03瑱\x03璅\x03瓊\x03㼛\x03甤\x03甾\x03" + + "異\x03瘐\x03㿼\x03䀈\x03直\x03眞\x03真\x03睊\x03䀹\x03瞋\x03䁆\x03䂖\x03硎\x03碌\x03" + + "磌\x03䃣\x03祖\x03福\x03秫\x03䄯\x03穀\x03穊\x03穏\x03䈂\x03篆\x03築\x03䈧\x03糒\x03" + + "䊠\x03糨\x03糣\x03紀\x03絣\x03䌁\x03緇\x03縂\x03繅\x03䌴\x03䍙\x03罺\x03羕\x03翺\x03" + + "者\x03聠\x03聰\x03䏕\x03育\x03脃\x03䐋\x03脾\x03媵\x03舄\x03辞\x03䑫\x03芑\x03芋\x03" + + "芝\x03劳\x03花\x03芳\x03芽\x03苦\x03若\x03茝\x03荣\x03莭\x03茣\x03莽\x03菧\x03著\x03" + + "荓\x03菊\x03菌\x03菜\x03䔫\x03蓱\x03蓳\x03蔖\x03蕤\x03䕝\x03䕡\x03䕫\x03虐\x03虜\x03" + + "虧\x03虩\x03蚩\x03蚈\x03蜎\x03蛢\x03蝹\x03蜨\x03蝫\x03螆\x03蟡\x03蠁\x03䗹\x03衠\x03" + + "衣\x03裗\x03裞\x03䘵\x03裺\x03㒻\x03䚾\x03䛇\x03誠\x03諭\x03變\x03豕\x03貫\x03賁\x03" + + "贛\x03起\x03跋\x03趼\x03跰\x03軔\x03輸\x03邔\x03郱\x03鄑\x03鄛\x03鈸\x03鋗\x03鋘\x03" + + "鉼\x03鏹\x03鐕\x03開\x03䦕\x03閷\x03䧦\x03雃\x03嶲\x03霣\x03䩮\x03䩶\x03韠\x03䪲\x03" + + "頋\x03頩\x03飢\x03䬳\x03餩\x03馧\x03駂\x03駾\x03䯎\x03鬒\x03鱀\x03鳽\x03䳎\x03䳭\x03" + + "鵧\x03䳸\x03麻\x03䵖\x03黹\x03黾\x03鼅\x03鼏\x03鼖\x03鼻" + +var xorData string = "" + // Size: 4855 bytes + "\x02\x0c\x09\x02\xb0\xec\x02\xad\xd8\x02\xad\xd9\x02\x06\x07\x02\x0f\x12" + + "\x02\x0f\x1f\x02\x0f\x1d\x02\x01\x13\x02\x0f\x16\x02\x0f\x0b\x02\x0f3" + + "\x02\x0f7\x02\x0f?\x02\x0f/\x02\x0f*\x02\x0c&\x02\x0c*\x02\x0c;\x02\x0c9" + + "\x02\x0c%\x02\xab\xed\x02\xab\xe2\x02\xab\xe3\x02\xa9\xe0\x02\xa9\xe1" + + "\x02\xa9\xe6\x02\xa3\xcb\x02\xa3\xc8\x02\xa3\xc9\x02\x01#\x02\x01\x08" + + "\x02\x0e>\x02\x0e'\x02\x0f\x03\x02\x03\x0d\x02\x03\x09\x02\x03\x17\x02" + + "\x03\x0e\x02\x02\x03\x02\x011\x02\x01\x00\x02\x01\x10\x02\x03<\x02\x07" + + "\x0d\x02\x02\x0c\x02\x0c0\x02\x01\x03\x02\x01\x01\x02\x01 \x02\x01\x22" + + "\x02\x01)\x02\x01\x0a\x02\x01\x0c\x02\x02\x06\x02\x02\x02\x02\x03\x10" + + "\x03\x037 \x03\x0b+\x03\x02\x01\x04\x02\x01\x02\x02\x019\x02\x03\x1c\x02" + + "\x02$\x03\x80p$\x02\x03:\x02\x03\x0a\x03\xc1r.\x03\xc1r,\x03\xc1r\x02" + + "\x02\x02:\x02\x02>\x02\x02,\x02\x02\x10\x02\x02\x00\x03\xc1s<\x03\xc1s*" + + "\x03\xc2L$\x03\xc2L;\x02\x09)\x02\x0a\x19\x03\x83\xab\xe3\x03\x83\xab" + + "\xf2\x03 4\xe0\x03\x81\xab\xea\x03\x81\xab\xf3\x03 4\xef\x03\x96\xe1\xcd" + + "\x03\x84\xe5\xc3\x02\x0d\x11\x03\x8b\xec\xcb\x03\x94\xec\xcf\x03\x9a\xec" + + "\xc2\x03\x8b\xec\xdb\x03\x94\xec\xdf\x03\x9a\xec\xd2\x03\x01\x0c!\x03" + + "\x01\x0c#\x03ʠ\x9d\x03ʣ\x9c\x03ʢ\x9f\x03ʥ\x9e\x03ʤ\x91\x03ʧ\x90\x03ʦ\x93" + + "\x03ʩ\x92\x03ʨ\x95\x03\xca\xf3\xb5\x03\xca\xf0\xb4\x03\xca\xf1\xb7\x03" + + "\xca\xf6\xb6\x03\xca\xf7\x89\x03\xca\xf4\x88\x03\xca\xf5\x8b\x03\xca\xfa" + + "\x8a\x03\xca\xfb\x8d\x03\xca\xf8\x8c\x03\xca\xf9\x8f\x03\xca\xfe\x8e\x03" + + "\xca\xff\x81\x03\xca\xfc\x80\x03\xca\xfd\x83\x03\xca\xe2\x82\x03\xca\xe3" + + "\x85\x03\xca\xe0\x84\x03\xca\xe1\x87\x03\xca\xe6\x86\x03\xca\xe7\x99\x03" + + "\xca\xe4\x98\x03\xca\xe5\x9b\x03\xca\xea\x9a\x03\xca\xeb\x9d\x03\xca\xe8" + + "\x9c\x03ؓ\x89\x03ߔ\x8b\x02\x010\x03\x03\x04\x1e\x03\x04\x15\x12\x03\x0b" + + "\x05,\x03\x06\x04\x00\x03\x06\x04)\x03\x06\x044\x03\x06\x04<\x03\x06\x05" + + "\x1d\x03\x06\x06\x00\x03\x06\x06\x0a\x03\x06\x06'\x03\x06\x062\x03\x0786" + + "\x03\x079/\x03\x079 \x03\x07:\x0e\x03\x07:\x1b\x03\x07:%\x03\x07;/\x03" + + "\x07;%\x03\x074\x11\x03\x076\x09\x03\x077*\x03\x070\x01\x03\x070\x0f\x03" + + "\x070.\x03\x071\x16\x03\x071\x04\x03\x0710\x03\x072\x18\x03\x072-\x03" + + "\x073\x14\x03\x073>\x03\x07'\x09\x03\x07 \x00\x03\x07\x1f\x0b\x03\x07" + + "\x18#\x03\x07\x18(\x03\x07\x186\x03\x07\x18\x03\x03\x07\x19\x16\x03\x07" + + "\x116\x03\x07\x12'\x03\x07\x13\x10\x03\x07\x0c&\x03\x07\x0c\x08\x03\x07" + + "\x0c\x13\x03\x07\x0d\x02\x03\x07\x0d\x1c\x03\x07\x0b5\x03\x07\x0b\x0a" + + "\x03\x07\x0b\x01\x03\x07\x0b\x0f\x03\x07\x05\x00\x03\x07\x05\x09\x03\x07" + + "\x05\x0b\x03\x07\x07\x01\x03\x07\x07\x08\x03\x07\x00<\x03\x07\x00+\x03" + + "\x07\x01)\x03\x07\x01\x1b\x03\x07\x01\x08\x03\x07\x03?\x03\x0445\x03\x04" + + "4\x08\x03\x0454\x03\x04)/\x03\x04)5\x03\x04+\x05\x03\x04+\x14\x03\x04+ " + + "\x03\x04+<\x03\x04*&\x03\x04*\x22\x03\x04&8\x03\x04!\x01\x03\x04!\x22" + + "\x03\x04\x11+\x03\x04\x10.\x03\x04\x104\x03\x04\x13=\x03\x04\x12\x04\x03" + + "\x04\x12\x0a\x03\x04\x0d\x1d\x03\x04\x0d\x07\x03\x04\x0d \x03\x05<>\x03" + + "\x055<\x03\x055!\x03\x055#\x03\x055&\x03\x054\x1d\x03\x054\x02\x03\x054" + + "\x07\x03\x0571\x03\x053\x1a\x03\x053\x16\x03\x05.<\x03\x05.\x07\x03\x05)" + + ":\x03\x05)<\x03\x05)\x0c\x03\x05)\x15\x03\x05+-\x03\x05+5\x03\x05$\x1e" + + "\x03\x05$\x14\x03\x05'\x04\x03\x05'\x14\x03\x05&\x02\x03\x05\x226\x03" + + "\x05\x22\x0c\x03\x05\x22\x1c\x03\x05\x19\x0a\x03\x05\x1b\x09\x03\x05\x1b" + + "\x0c\x03\x05\x14\x07\x03\x05\x16?\x03\x05\x16\x0c\x03\x05\x0c\x05\x03" + + "\x05\x0e\x0f\x03\x05\x01\x0e\x03\x05\x00(\x03\x05\x030\x03\x05\x03\x06" + + "\x03\x0a==\x03\x0a=1\x03\x0a=,\x03\x0a=\x0c\x03\x0a??\x03\x0a<\x08\x03" + + "\x0a9!\x03\x0a9)\x03\x0a97\x03\x0a99\x03\x0a6\x0a\x03\x0a6\x1c\x03\x0a6" + + "\x17\x03\x0a7'\x03\x0a78\x03\x0a73\x03\x0a'\x01\x03\x0a'&\x03\x0a\x1f" + + "\x0e\x03\x0a\x1f\x03\x03\x0a\x1f3\x03\x0a\x1b/\x03\x0a\x18\x19\x03\x0a" + + "\x19\x01\x03\x0a\x16\x14\x03\x0a\x0e\x22\x03\x0a\x0f\x10\x03\x0a\x0f\x02" + + "\x03\x0a\x0f \x03\x0a\x0c\x04\x03\x0a\x0b>\x03\x0a\x0b+\x03\x0a\x08/\x03" + + "\x0a\x046\x03\x0a\x05\x14\x03\x0a\x00\x04\x03\x0a\x00\x10\x03\x0a\x00" + + "\x14\x03\x0b<3\x03\x0b;*\x03\x0b9\x22\x03\x0b9)\x03\x0b97\x03\x0b+\x10" + + "\x03\x0b((\x03\x0b&5\x03\x0b$\x1c\x03\x0b$\x12\x03\x0b%\x04\x03\x0b#<" + + "\x03\x0b#0\x03\x0b#\x0d\x03\x0b#\x19\x03\x0b!:\x03\x0b!\x1f\x03\x0b!\x00" + + "\x03\x0b\x1e5\x03\x0b\x1c\x1d\x03\x0b\x1d-\x03\x0b\x1d(\x03\x0b\x18.\x03" + + "\x0b\x18 \x03\x0b\x18\x16\x03\x0b\x14\x13\x03\x0b\x15$\x03\x0b\x15\x22" + + "\x03\x0b\x12\x1b\x03\x0b\x12\x10\x03\x0b\x132\x03\x0b\x13=\x03\x0b\x12" + + "\x18\x03\x0b\x0c&\x03\x0b\x061\x03\x0b\x06:\x03\x0b\x05#\x03\x0b\x05<" + + "\x03\x0b\x04\x0b\x03\x0b\x04\x04\x03\x0b\x04\x1b\x03\x0b\x042\x03\x0b" + + "\x041\x03\x0b\x03\x03\x03\x0b\x03\x1d\x03\x0b\x03/\x03\x0b\x03+\x03\x0b" + + "\x02\x1b\x03\x0b\x02\x00\x03\x0b\x01\x1e\x03\x0b\x01\x08\x03\x0b\x015" + + "\x03\x06\x0d9\x03\x06\x0d=\x03\x06\x0d?\x03\x02\x001\x03\x02\x003\x03" + + "\x02\x02\x19\x03\x02\x006\x03\x02\x02\x1b\x03\x02\x004\x03\x02\x00<\x03" + + "\x02\x02\x0a\x03\x02\x02\x0e\x03\x02\x01\x1a\x03\x02\x01\x07\x03\x02\x01" + + "\x05\x03\x02\x01\x0b\x03\x02\x01%\x03\x02\x01\x0c\x03\x02\x01\x04\x03" + + "\x02\x01\x1c\x03\x02\x00.\x03\x02\x002\x03\x02\x00>\x03\x02\x00\x12\x03" + + "\x02\x00\x16\x03\x02\x011\x03\x02\x013\x03\x02\x02 \x03\x02\x02%\x03\x02" + + "\x02$\x03\x02\x028\x03\x02\x02;\x03\x02\x024\x03\x02\x012\x03\x02\x022" + + "\x03\x02\x02/\x03\x02\x01,\x03\x02\x01\x13\x03\x02\x01\x16\x03\x02\x01" + + "\x11\x03\x02\x01\x1e\x03\x02\x01\x15\x03\x02\x01\x17\x03\x02\x01\x0f\x03" + + "\x02\x01\x08\x03\x02\x00?\x03\x02\x03\x07\x03\x02\x03\x0d\x03\x02\x03" + + "\x13\x03\x02\x03\x1d\x03\x02\x03\x1f\x03\x02\x00\x03\x03\x02\x00\x0d\x03" + + "\x02\x00\x01\x03\x02\x00\x1b\x03\x02\x00\x19\x03\x02\x00\x18\x03\x02\x00" + + "\x13\x03\x02\x00/\x03\x07>\x12\x03\x07<\x1f\x03\x07>\x1d\x03\x06\x1d\x0e" + + "\x03\x07>\x1c\x03\x07>:\x03\x07>\x13\x03\x04\x12+\x03\x07?\x03\x03\x07>" + + "\x02\x03\x06\x224\x03\x06\x1a.\x03\x07<%\x03\x06\x1c\x0b\x03\x0609\x03" + + "\x05\x1f\x01\x03\x04'\x08\x03\x93\xfd\xf5\x03\x02\x0d \x03\x02\x0d#\x03" + + "\x02\x0d!\x03\x02\x0d&\x03\x02\x0d\x22\x03\x02\x0d/\x03\x02\x0d,\x03\x02" + + "\x0d$\x03\x02\x0d'\x03\x02\x0d%\x03\x02\x0d;\x03\x02\x0d=\x03\x02\x0d?" + + "\x03\x099.\x03\x08\x0b7\x03\x08\x02\x14\x03\x08\x14\x0d\x03\x08.:\x03" + + "\x089'\x03\x0f\x0b\x18\x03\x0f\x1c1\x03\x0f\x17&\x03\x0f9\x1f\x03\x0f0" + + "\x0c\x03\x0e\x0a9\x03\x0e\x056\x03\x0e\x1c#\x03\x0f\x13\x0e\x03\x072\x00" + + "\x03\x070\x0d\x03\x072\x0b\x03\x06\x11\x18\x03\x070\x10\x03\x06\x0f(\x03" + + "\x072\x05\x03\x06\x0f,\x03\x073\x15\x03\x06\x07\x08\x03\x05\x16\x02\x03" + + "\x04\x0b \x03\x05:8\x03\x05\x16%\x03\x0a\x0d\x1f\x03\x06\x16\x10\x03\x05" + + "\x1d5\x03\x05*;\x03\x05\x16\x1b\x03\x04.-\x03\x06\x1a\x19\x03\x04\x03," + + "\x03\x0b87\x03\x04/\x0a\x03\x06\x00,\x03\x04-\x01\x03\x04\x1e-\x03\x06/(" + + "\x03\x0a\x0b5\x03\x06\x0e7\x03\x06\x07.\x03\x0597\x03\x0a*%\x03\x0760" + + "\x03\x06\x0c;\x03\x05'\x00\x03\x072.\x03\x072\x08\x03\x06=\x01\x03\x06" + + "\x05\x1b\x03\x06\x06\x12\x03\x06$=\x03\x06'\x0d\x03\x04\x11\x0f\x03\x076" + + ",\x03\x06\x07;\x03\x06.,\x03\x86\xf9\xea\x03\x8f\xff\xeb\x02\x092\x02" + + "\x095\x02\x094\x02\x09;\x02\x09>\x02\x098\x02\x09*\x02\x09/\x02\x09,\x02" + + "\x09%\x02\x09&\x02\x09#\x02\x09 \x02\x08!\x02\x08%\x02\x08$\x02\x08+\x02" + + "\x08.\x02\x08*\x02\x08&\x02\x088\x02\x08>\x02\x084\x02\x086\x02\x080\x02" + + "\x08\x10\x02\x08\x17\x02\x08\x12\x02\x08\x1d\x02\x08\x1f\x02\x08\x13\x02" + + "\x08\x15\x02\x08\x14\x02\x08\x0c\x03\x8b\xfd\xd0\x03\x81\xec\xc6\x03\x87" + + "\xe0\x8a\x03-2\xe3\x03\x80\xef\xe4\x03-2\xea\x03\x88\xe6\xeb\x03\x8e\xe6" + + "\xe8\x03\x84\xe6\xe9\x03\x97\xe6\xee\x03-2\xf9\x03-2\xf6\x03\x8e\xe3\xad" + + "\x03\x80\xe3\x92\x03\x88\xe3\x90\x03\x8e\xe3\x90\x03\x80\xe3\x97\x03\x88" + + "\xe3\x95\x03\x88\xfe\xcb\x03\x8e\xfe\xca\x03\x84\xfe\xcd\x03\x91\xef\xc9" + + "\x03-2\xc1\x03-2\xc0\x03-2\xcb\x03\x88@\x09\x03\x8e@\x08\x03\x8f\xe0\xf5" + + "\x03\x8e\xe6\xf9\x03\x8e\xe0\xfa\x03\x93\xff\xf4\x03\x84\xee\xd3\x03\x0b" + + "(\x04\x023 \x021;\x02\x01*\x03\x0b#\x10\x03\x0b 0\x03\x0b!\x10\x03\x0b!0" + + "\x03\x07\x15\x08\x03\x09?5\x03\x07\x1f\x08\x03\x07\x17\x0b\x03\x09\x1f" + + "\x15\x03\x0b\x1c7\x03\x0a+#\x03\x06\x1a\x1b\x03\x06\x1a\x14\x03\x0a\x01" + + "\x18\x03\x06#\x1b\x03\x0a2\x0c\x03\x0a\x01\x04\x03\x09#;\x03\x08='\x03" + + "\x08\x1a\x0a\x03\x07\x03\x0a\x111\x03\x09\x1b\x09\x03\x073.\x03\x07\x01\x00" + + "\x03\x09/,\x03\x07#>\x03\x07\x048\x03\x0a\x1f\x22\x03\x098>\x03\x09\x11" + + "\x00\x03\x08/\x17\x03\x06'\x22\x03\x0b\x1a+\x03\x0a\x22\x19\x03\x0a/1" + + "\x03\x0974\x03\x09\x0f\x22\x03\x08,\x22\x03\x08?\x14\x03\x07$5\x03\x07<3" + + "\x03\x07=*\x03\x07\x13\x18\x03\x068\x0a\x03\x06\x09\x16\x03\x06\x13\x00" + + "\x03\x08\x067\x03\x08\x01\x03\x03\x08\x12\x1d\x03\x07+7\x03\x06(;\x03" + + "\x06\x1c?\x03\x07\x0e\x17\x03\x0a\x06\x1d\x03\x0a\x19\x07\x03\x08\x14$" + + "\x03\x07$;\x03\x08,$\x03\x08\x06\x0d\x03\x07\x16\x0a\x03\x06>>\x03\x0a" + + "\x06\x12\x03\x0a\x14)\x03\x09\x0d\x1f\x03\x09\x12\x17\x03\x09\x19\x01" + + "\x03\x08\x11 \x03\x08\x1d'\x03\x06<\x1a\x03\x0a.\x00\x03\x07'\x18\x03" + + "\x0a\x22\x08\x03\x08\x0d\x0a\x03\x08\x13)\x03\x07*)\x03\x06<,\x03\x07" + + "\x0b\x1a\x03\x09.\x14\x03\x09\x0d\x1e\x03\x07\x0e#\x03\x0b\x1d'\x03\x0a" + + "\x0a8\x03\x09%2\x03\x08+&\x03\x080\x12\x03\x0a)4\x03\x08\x06\x1f\x03\x0b" + + "\x1b\x1a\x03\x0a\x1b\x0f\x03\x0b\x1d*\x03\x09\x16$\x03\x090\x11\x03\x08" + + "\x11\x08\x03\x0a*(\x03\x0a\x042\x03\x089,\x03\x074'\x03\x07\x0f\x05\x03" + + "\x09\x0b\x0a\x03\x07\x1b\x01\x03\x09\x17:\x03\x09.\x0d\x03\x07.\x11\x03" + + "\x09+\x15\x03\x080\x13\x03\x0b\x1f\x19\x03\x0a \x11\x03\x0a\x220\x03\x09" + + "\x07;\x03\x08\x16\x1c\x03\x07,\x13\x03\x07\x0e/\x03\x06\x221\x03\x0a." + + "\x0a\x03\x0a7\x02\x03\x0a\x032\x03\x0a\x1d.\x03\x091\x06\x03\x09\x19:" + + "\x03\x08\x02/\x03\x060+\x03\x06\x0f-\x03\x06\x1c\x1f\x03\x06\x1d\x07\x03" + + "\x0a,\x11\x03\x09=\x0d\x03\x09\x0b;\x03\x07\x1b/\x03\x0a\x1f:\x03\x09 " + + "\x1f\x03\x09.\x10\x03\x094\x0b\x03\x09\x1a1\x03\x08#\x1a\x03\x084\x1d" + + "\x03\x08\x01\x1f\x03\x08\x11\x22\x03\x07'8\x03\x07\x1a>\x03\x0757\x03" + + "\x06&9\x03\x06+\x11\x03\x0a.\x0b\x03\x0a,>\x03\x0a4#\x03\x08%\x17\x03" + + "\x07\x05\x22\x03\x07\x0c\x0b\x03\x0a\x1d+\x03\x0a\x19\x16\x03\x09+\x1f" + + "\x03\x09\x08\x0b\x03\x08\x16\x18\x03\x08+\x12\x03\x0b\x1d\x0c\x03\x0a=" + + "\x10\x03\x0a\x09\x0d\x03\x0a\x10\x11\x03\x09&0\x03\x08(\x1f\x03\x087\x07" + + "\x03\x08\x185\x03\x07'6\x03\x06.\x05\x03\x06=\x04\x03\x06;;\x03\x06\x06," + + "\x03\x0b\x18>\x03\x08\x00\x18\x03\x06 \x03\x03\x06<\x00\x03\x09%\x18\x03" + + "\x0b\x1c<\x03\x0a%!\x03\x0a\x09\x12\x03\x0a\x16\x02\x03\x090'\x03\x09" + + "\x0e=\x03\x08 \x0e\x03\x08>\x03\x03\x074>\x03\x06&?\x03\x06\x19\x09\x03" + + "\x06?(\x03\x0a-\x0e\x03\x09:3\x03\x098:\x03\x09\x12\x0b\x03\x09\x1d\x17" + + "\x03\x087\x05\x03\x082\x14\x03\x08\x06%\x03\x08\x13\x1f\x03\x06\x06\x0e" + + "\x03\x0a\x22<\x03\x09/<\x03\x06>+\x03\x0a'?\x03\x0a\x13\x0c\x03\x09\x10<" + + "\x03\x07\x1b=\x03\x0a\x19\x13\x03\x09\x22\x1d\x03\x09\x07\x0d\x03\x08)" + + "\x1c\x03\x06=\x1a\x03\x0a/4\x03\x0a7\x11\x03\x0a\x16:\x03\x09?3\x03\x09:" + + "/\x03\x09\x05\x0a\x03\x09\x14\x06\x03\x087\x22\x03\x080\x07\x03\x08\x1a" + + "\x1f\x03\x07\x04(\x03\x07\x04\x09\x03\x06 %\x03\x06<\x08\x03\x0a+\x14" + + "\x03\x09\x1d\x16\x03\x0a70\x03\x08 >\x03\x0857\x03\x070\x0a\x03\x06=\x12" + + "\x03\x06\x16%\x03\x06\x1d,\x03\x099#\x03\x09\x10>\x03\x07 \x1e\x03\x08" + + "\x0c<\x03\x08\x0b\x18\x03\x08\x15+\x03\x08,:\x03\x08%\x22\x03\x07\x0a$" + + "\x03\x0b\x1c=\x03\x07+\x08\x03\x0a/\x05\x03\x0a \x07\x03\x0a\x12'\x03" + + "\x09#\x11\x03\x08\x1b\x15\x03\x0a\x06\x01\x03\x09\x1c\x1b\x03\x0922\x03" + + "\x07\x14<\x03\x07\x09\x04\x03\x061\x04\x03\x07\x0e\x01\x03\x0a\x13\x18" + + "\x03\x0a-\x0c\x03\x0a?\x0d\x03\x0a\x09\x0a\x03\x091&\x03\x0a/\x0b\x03" + + "\x08$<\x03\x083\x1d\x03\x08\x0c$\x03\x08\x0d\x07\x03\x08\x0d?\x03\x08" + + "\x0e\x14\x03\x065\x0a\x03\x08\x1a#\x03\x08\x16#\x03\x0702\x03\x07\x03" + + "\x1a\x03\x06(\x1d\x03\x06+\x1b\x03\x06\x0b\x05\x03\x06\x0b\x17\x03\x06" + + "\x0c\x04\x03\x06\x1e\x19\x03\x06+0\x03\x062\x18\x03\x0b\x16\x1e\x03\x0a+" + + "\x16\x03\x0a-?\x03\x0a#:\x03\x0a#\x10\x03\x0a%$\x03\x0a>+\x03\x0a01\x03" + + "\x0a1\x10\x03\x0a\x099\x03\x0a\x0a\x12\x03\x0a\x19\x1f\x03\x0a\x19\x12" + + "\x03\x09*)\x03\x09-\x16\x03\x09.1\x03\x09.2\x03\x09<\x0e\x03\x09> \x03" + + "\x093\x12\x03\x09\x0b\x01\x03\x09\x1c2\x03\x09\x11\x1c\x03\x09\x15%\x03" + + "\x08,&\x03\x08!\x22\x03\x089(\x03\x08\x0b\x1a\x03\x08\x0d2\x03\x08\x0c" + + "\x04\x03\x08\x0c\x06\x03\x08\x0c\x1f\x03\x08\x0c\x0c\x03\x08\x0f\x1f\x03" + + "\x08\x0f\x1d\x03\x08\x00\x14\x03\x08\x03\x14\x03\x08\x06\x16\x03\x08\x1e" + + "#\x03\x08\x11\x11\x03\x08\x10\x18\x03\x08\x14(\x03\x07)\x1e\x03\x07.1" + + "\x03\x07 $\x03\x07 '\x03\x078\x08\x03\x07\x0d0\x03\x07\x0f7\x03\x07\x05#" + + "\x03\x07\x05\x1a\x03\x07\x1a7\x03\x07\x1d-\x03\x07\x17\x10\x03\x06)\x1f" + + "\x03\x062\x0b\x03\x066\x16\x03\x06\x09\x11\x03\x09(\x1e\x03\x07!5\x03" + + "\x0b\x11\x16\x03\x0a/\x04\x03\x0a,\x1a\x03\x0b\x173\x03\x0a,1\x03\x0a/5" + + "\x03\x0a\x221\x03\x0a\x22\x0d\x03\x0a?%\x03\x0a<,\x03\x0a?#\x03\x0a>\x19" + + "\x03\x0a\x08&\x03\x0a\x0b\x0e\x03\x0a\x0c:\x03\x0a\x0c+\x03\x0a\x03\x22" + + "\x03\x0a\x06)\x03\x0a\x11\x10\x03\x0a\x11\x1a\x03\x0a\x17-\x03\x0a\x14(" + + "\x03\x09)\x1e\x03\x09/\x09\x03\x09.\x00\x03\x09,\x07\x03\x09/*\x03\x09-9" + + "\x03\x09\x228\x03\x09%\x09\x03\x09:\x12\x03\x09;\x1d\x03\x09?\x06\x03" + + "\x093%\x03\x096\x05\x03\x096\x08\x03\x097\x02\x03\x09\x07,\x03\x09\x04," + + "\x03\x09\x1f\x16\x03\x09\x11\x03\x03\x09\x11\x12\x03\x09\x168\x03\x08*" + + "\x05\x03\x08/2\x03\x084:\x03\x08\x22+\x03\x08 0\x03\x08&\x0a\x03\x08;" + + "\x10\x03\x08>$\x03\x08>\x18\x03\x0829\x03\x082:\x03\x081,\x03\x081<\x03" + + "\x081\x1c\x03\x087#\x03\x087*\x03\x08\x09'\x03\x08\x00\x1d\x03\x08\x05-" + + "\x03\x08\x1f4\x03\x08\x1d\x04\x03\x08\x16\x0f\x03\x07*7\x03\x07'!\x03" + + "\x07%\x1b\x03\x077\x0c\x03\x07\x0c1\x03\x07\x0c.\x03\x07\x00\x06\x03\x07" + + "\x01\x02\x03\x07\x010\x03\x07\x06=\x03\x07\x01\x03\x03\x07\x01\x13\x03" + + "\x07\x06\x06\x03\x07\x05\x0a\x03\x07\x1f\x09\x03\x07\x17:\x03\x06*1\x03" + + "\x06-\x1d\x03\x06\x223\x03\x062:\x03\x060$\x03\x066\x1e\x03\x064\x12\x03" + + "\x0645\x03\x06\x0b\x00\x03\x06\x0b7\x03\x06\x07\x1f\x03\x06\x15\x12\x03" + + "\x0c\x05\x0f\x03\x0b+\x0b\x03\x0b+-\x03\x06\x16\x1b\x03\x06\x15\x17\x03" + + "\x89\xca\xea\x03\x89\xca\xe8\x03\x0c8\x10\x03\x0c8\x01\x03\x0c8\x0f\x03" + + "\x0d8%\x03\x0d8!\x03\x0c8-\x03\x0c8/\x03\x0c8+\x03\x0c87\x03\x0c85\x03" + + "\x0c9\x09\x03\x0c9\x0d\x03\x0c9\x0f\x03\x0c9\x0b\x03\xcfu\x0c\x03\xcfu" + + "\x0f\x03\xcfu\x0e\x03\xcfu\x09\x03\x0c9\x10\x03\x0d9\x0c\x03\xcf`;\x03" + + "\xcf`>\x03\xcf`9\x03\xcf`8\x03\xcf`7\x03\xcf`*\x03\xcf`-\x03\xcf`,\x03" + + "\x0d\x1b\x1a\x03\x0d\x1b&\x03\x0c=.\x03\x0c=%\x03\x0c>\x1e\x03\x0c>\x14" + + "\x03\x0c?\x06\x03\x0c?\x0b\x03\x0c?\x0c\x03\x0c?\x0d\x03\x0c?\x02\x03" + + "\x0c>\x0f\x03\x0c>\x08\x03\x0c>\x09\x03\x0c>,\x03\x0c>\x0c\x03\x0c?\x13" + + "\x03\x0c?\x16\x03\x0c?\x15\x03\x0c?\x1c\x03\x0c?\x1f\x03\x0c?\x1d\x03" + + "\x0c?\x1a\x03\x0c?\x17\x03\x0c?\x08\x03\x0c?\x09\x03\x0c?\x0e\x03\x0c?" + + "\x04\x03\x0c?\x05\x03\x0c" + + "\x03\x0c=2\x03\x0c=6\x03\x0c<\x07\x03\x0c<\x05\x03\x0e:!\x03\x0e:#\x03" + + "\x0e8\x09\x03\x0e:&\x03\x0e8\x0b\x03\x0e:$\x03\x0e:,\x03\x0e8\x1a\x03" + + "\x0e8\x1e\x03\x0e:*\x03\x0e:7\x03\x0e:5\x03\x0e:;\x03\x0e:\x15\x03\x0e:<" + + "\x03\x0e:4\x03\x0e:'\x03\x0e:-\x03\x0e:%\x03\x0e:?\x03\x0e:=\x03\x0e:)" + + "\x03\x0e:/\x03\xcfs'\x03\x0d=\x0f\x03\x0d+*\x03\x0d99\x03\x0d9;\x03\x0d9" + + "?\x03\x0d)\x0d\x03\x0d(%\x02\x01\x18\x02\x01(\x02\x01\x1e\x03\x0f$!\x03" + + "\x0f87\x03\x0f4\x0e\x03\x0f5\x1d\x03\x06'\x03\x03\x0f\x08\x18\x03\x0f" + + "\x0d\x1b\x03\x0e2=\x03\x0e;\x08\x03\x0e:\x0b\x03\x0e\x06$\x03\x0e\x0d)" + + "\x03\x0e\x16\x1f\x03\x0e\x16\x1b\x03\x0d$\x0a\x03\x05,\x1d\x03\x0d. \x03" + + "\x0d.#\x03\x0c(/\x03\x09%\x02\x03\x0d90\x03\x0d\x0e4\x03\x0d\x0d\x0f\x03" + + "\x0c#\x00\x03\x0c,\x1e\x03\x0c2\x0e\x03\x0c\x01\x17\x03\x0c\x09:\x03\x0e" + + "\x173\x03\x0c\x08\x03\x03\x0c\x11\x07\x03\x0c\x10\x18\x03\x0c\x1f\x1c" + + "\x03\x0c\x19\x0e\x03\x0c\x1a\x1f\x03\x0f0>\x03\x0b->\x03\x0b<+\x03\x0b8" + + "\x13\x03\x0b\x043\x03\x0b\x14\x03\x03\x0b\x16%\x03\x0d\x22&\x03\x0b\x1a" + + "\x1a\x03\x0b\x1a\x04\x03\x0a%9\x03\x0a&2\x03\x0a&0\x03\x0a!\x1a\x03\x0a!" + + "7\x03\x0a5\x10\x03\x0a=4\x03\x0a?\x0e\x03\x0a>\x10\x03\x0a\x00 \x03\x0a" + + "\x0f:\x03\x0a\x0f9\x03\x0a\x0b\x0a\x03\x0a\x17%\x03\x0a\x1b-\x03\x09-" + + "\x1a\x03\x09,4\x03\x09.,\x03\x09)\x09\x03\x096!\x03\x091\x1f\x03\x093" + + "\x16\x03\x0c+\x1f\x03\x098 \x03\x098=\x03\x0c(\x1a\x03\x0c(\x16\x03\x09" + + "\x0a+\x03\x09\x16\x12\x03\x09\x13\x0e\x03\x09\x153\x03\x08)!\x03\x09\x1a" + + "\x01\x03\x09\x18\x01\x03\x08%#\x03\x08>\x22\x03\x08\x05%\x03\x08\x02*" + + "\x03\x08\x15;\x03\x08\x1b7\x03\x0f\x07\x1d\x03\x0f\x04\x03\x03\x070\x0c" + + "\x03\x07;\x0b\x03\x07\x08\x17\x03\x07\x12\x06\x03\x06/-\x03\x0671\x03" + + "\x065+\x03\x06>7\x03\x06\x049\x03\x05+\x1e\x03\x05,\x17\x03\x05 \x1d\x03" + + "\x05\x22\x05\x03\x050\x1d" + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *idnaTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = idnaIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *idnaTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *idnaTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return idnaValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := idnaIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = idnaIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = idnaIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *idnaTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return idnaValues[c0] + } + i := idnaIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = idnaIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// idnaTrie. Total size: 28600 bytes (27.93 KiB). Checksum: 95575047b5d8fff. +type idnaTrie struct{} + +func newIdnaTrie(i int) *idnaTrie { + return &idnaTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *idnaTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 124: + return uint16(idnaValues[n<<6+uint32(b)]) + default: + n -= 124 + return uint16(idnaSparse.lookup(n, b)) + } +} + +// idnaValues: 126 blocks, 8064 entries, 16128 bytes +// The third block is the zero block. +var idnaValues = [8064]uint16{ + // Block 0x0, offset 0x0 + 0x00: 0x0080, 0x01: 0x0080, 0x02: 0x0080, 0x03: 0x0080, 0x04: 0x0080, 0x05: 0x0080, + 0x06: 0x0080, 0x07: 0x0080, 0x08: 0x0080, 0x09: 0x0080, 0x0a: 0x0080, 0x0b: 0x0080, + 0x0c: 0x0080, 0x0d: 0x0080, 0x0e: 0x0080, 0x0f: 0x0080, 0x10: 0x0080, 0x11: 0x0080, + 0x12: 0x0080, 0x13: 0x0080, 0x14: 0x0080, 0x15: 0x0080, 0x16: 0x0080, 0x17: 0x0080, + 0x18: 0x0080, 0x19: 0x0080, 0x1a: 0x0080, 0x1b: 0x0080, 0x1c: 0x0080, 0x1d: 0x0080, + 0x1e: 0x0080, 0x1f: 0x0080, 0x20: 0x0080, 0x21: 0x0080, 0x22: 0x0080, 0x23: 0x0080, + 0x24: 0x0080, 0x25: 0x0080, 0x26: 0x0080, 0x27: 0x0080, 0x28: 0x0080, 0x29: 0x0080, + 0x2a: 0x0080, 0x2b: 0x0080, 0x2c: 0x0080, 0x2d: 0x0008, 0x2e: 0x0008, 0x2f: 0x0080, + 0x30: 0x0008, 0x31: 0x0008, 0x32: 0x0008, 0x33: 0x0008, 0x34: 0x0008, 0x35: 0x0008, + 0x36: 0x0008, 0x37: 0x0008, 0x38: 0x0008, 0x39: 0x0008, 0x3a: 0x0080, 0x3b: 0x0080, + 0x3c: 0x0080, 0x3d: 0x0080, 0x3e: 0x0080, 0x3f: 0x0080, + // Block 0x1, offset 0x40 + 0x40: 0x0080, 0x41: 0xe105, 0x42: 0xe105, 0x43: 0xe105, 0x44: 0xe105, 0x45: 0xe105, + 0x46: 0xe105, 0x47: 0xe105, 0x48: 0xe105, 0x49: 0xe105, 0x4a: 0xe105, 0x4b: 0xe105, + 0x4c: 0xe105, 0x4d: 0xe105, 0x4e: 0xe105, 0x4f: 0xe105, 0x50: 0xe105, 0x51: 0xe105, + 0x52: 0xe105, 0x53: 0xe105, 0x54: 0xe105, 0x55: 0xe105, 0x56: 0xe105, 0x57: 0xe105, + 0x58: 0xe105, 0x59: 0xe105, 0x5a: 0xe105, 0x5b: 0x0080, 0x5c: 0x0080, 0x5d: 0x0080, + 0x5e: 0x0080, 0x5f: 0x0080, 0x60: 0x0080, 0x61: 0x0008, 0x62: 0x0008, 0x63: 0x0008, + 0x64: 0x0008, 0x65: 0x0008, 0x66: 0x0008, 0x67: 0x0008, 0x68: 0x0008, 0x69: 0x0008, + 0x6a: 0x0008, 0x6b: 0x0008, 0x6c: 0x0008, 0x6d: 0x0008, 0x6e: 0x0008, 0x6f: 0x0008, + 0x70: 0x0008, 0x71: 0x0008, 0x72: 0x0008, 0x73: 0x0008, 0x74: 0x0008, 0x75: 0x0008, + 0x76: 0x0008, 0x77: 0x0008, 0x78: 0x0008, 0x79: 0x0008, 0x7a: 0x0008, 0x7b: 0x0080, + 0x7c: 0x0080, 0x7d: 0x0080, 0x7e: 0x0080, 0x7f: 0x0080, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x0040, 0xc1: 0x0040, 0xc2: 0x0040, 0xc3: 0x0040, 0xc4: 0x0040, 0xc5: 0x0040, + 0xc6: 0x0040, 0xc7: 0x0040, 0xc8: 0x0040, 0xc9: 0x0040, 0xca: 0x0040, 0xcb: 0x0040, + 0xcc: 0x0040, 0xcd: 0x0040, 0xce: 0x0040, 0xcf: 0x0040, 0xd0: 0x0040, 0xd1: 0x0040, + 0xd2: 0x0040, 0xd3: 0x0040, 0xd4: 0x0040, 0xd5: 0x0040, 0xd6: 0x0040, 0xd7: 0x0040, + 0xd8: 0x0040, 0xd9: 0x0040, 0xda: 0x0040, 0xdb: 0x0040, 0xdc: 0x0040, 0xdd: 0x0040, + 0xde: 0x0040, 0xdf: 0x0040, 0xe0: 0x000a, 0xe1: 0x0018, 0xe2: 0x0018, 0xe3: 0x0018, + 0xe4: 0x0018, 0xe5: 0x0018, 0xe6: 0x0018, 0xe7: 0x0018, 0xe8: 0x001a, 0xe9: 0x0018, + 0xea: 0x0039, 0xeb: 0x0018, 0xec: 0x0018, 0xed: 0x03c0, 0xee: 0x0018, 0xef: 0x004a, + 0xf0: 0x0018, 0xf1: 0x0018, 0xf2: 0x0069, 0xf3: 0x0079, 0xf4: 0x008a, 0xf5: 0x0005, + 0xf6: 0x0018, 0xf7: 0x0008, 0xf8: 0x00aa, 0xf9: 0x00c9, 0xfa: 0x00d9, 0xfb: 0x0018, + 0xfc: 0x00e9, 0xfd: 0x0119, 0xfe: 0x0149, 0xff: 0x0018, + // Block 0x4, offset 0x100 + 0x100: 0xe00d, 0x101: 0x0008, 0x102: 0xe00d, 0x103: 0x0008, 0x104: 0xe00d, 0x105: 0x0008, + 0x106: 0xe00d, 0x107: 0x0008, 0x108: 0xe00d, 0x109: 0x0008, 0x10a: 0xe00d, 0x10b: 0x0008, + 0x10c: 0xe00d, 0x10d: 0x0008, 0x10e: 0xe00d, 0x10f: 0x0008, 0x110: 0xe00d, 0x111: 0x0008, + 0x112: 0xe00d, 0x113: 0x0008, 0x114: 0xe00d, 0x115: 0x0008, 0x116: 0xe00d, 0x117: 0x0008, + 0x118: 0xe00d, 0x119: 0x0008, 0x11a: 0xe00d, 0x11b: 0x0008, 0x11c: 0xe00d, 0x11d: 0x0008, + 0x11e: 0xe00d, 0x11f: 0x0008, 0x120: 0xe00d, 0x121: 0x0008, 0x122: 0xe00d, 0x123: 0x0008, + 0x124: 0xe00d, 0x125: 0x0008, 0x126: 0xe00d, 0x127: 0x0008, 0x128: 0xe00d, 0x129: 0x0008, + 0x12a: 0xe00d, 0x12b: 0x0008, 0x12c: 0xe00d, 0x12d: 0x0008, 0x12e: 0xe00d, 0x12f: 0x0008, + 0x130: 0x0179, 0x131: 0x0008, 0x132: 0x0035, 0x133: 0x004d, 0x134: 0xe00d, 0x135: 0x0008, + 0x136: 0xe00d, 0x137: 0x0008, 0x138: 0x0008, 0x139: 0xe01d, 0x13a: 0x0008, 0x13b: 0xe03d, + 0x13c: 0x0008, 0x13d: 0xe01d, 0x13e: 0x0008, 0x13f: 0x0199, + // Block 0x5, offset 0x140 + 0x140: 0x0199, 0x141: 0xe01d, 0x142: 0x0008, 0x143: 0xe03d, 0x144: 0x0008, 0x145: 0xe01d, + 0x146: 0x0008, 0x147: 0xe07d, 0x148: 0x0008, 0x149: 0x01b9, 0x14a: 0xe00d, 0x14b: 0x0008, + 0x14c: 0xe00d, 0x14d: 0x0008, 0x14e: 0xe00d, 0x14f: 0x0008, 0x150: 0xe00d, 0x151: 0x0008, + 0x152: 0xe00d, 0x153: 0x0008, 0x154: 0xe00d, 0x155: 0x0008, 0x156: 0xe00d, 0x157: 0x0008, + 0x158: 0xe00d, 0x159: 0x0008, 0x15a: 0xe00d, 0x15b: 0x0008, 0x15c: 0xe00d, 0x15d: 0x0008, + 0x15e: 0xe00d, 0x15f: 0x0008, 0x160: 0xe00d, 0x161: 0x0008, 0x162: 0xe00d, 0x163: 0x0008, + 0x164: 0xe00d, 0x165: 0x0008, 0x166: 0xe00d, 0x167: 0x0008, 0x168: 0xe00d, 0x169: 0x0008, + 0x16a: 0xe00d, 0x16b: 0x0008, 0x16c: 0xe00d, 0x16d: 0x0008, 0x16e: 0xe00d, 0x16f: 0x0008, + 0x170: 0xe00d, 0x171: 0x0008, 0x172: 0xe00d, 0x173: 0x0008, 0x174: 0xe00d, 0x175: 0x0008, + 0x176: 0xe00d, 0x177: 0x0008, 0x178: 0x0065, 0x179: 0xe01d, 0x17a: 0x0008, 0x17b: 0xe03d, + 0x17c: 0x0008, 0x17d: 0xe01d, 0x17e: 0x0008, 0x17f: 0x01d9, + // Block 0x6, offset 0x180 + 0x180: 0x0008, 0x181: 0x007d, 0x182: 0xe00d, 0x183: 0x0008, 0x184: 0xe00d, 0x185: 0x0008, + 0x186: 0x007d, 0x187: 0xe07d, 0x188: 0x0008, 0x189: 0x0095, 0x18a: 0x00ad, 0x18b: 0xe03d, + 0x18c: 0x0008, 0x18d: 0x0008, 0x18e: 0x00c5, 0x18f: 0x00dd, 0x190: 0x00f5, 0x191: 0xe01d, + 0x192: 0x0008, 0x193: 0x010d, 0x194: 0x0125, 0x195: 0x0008, 0x196: 0x013d, 0x197: 0x013d, + 0x198: 0xe00d, 0x199: 0x0008, 0x19a: 0x0008, 0x19b: 0x0008, 0x19c: 0x010d, 0x19d: 0x0155, + 0x19e: 0x0008, 0x19f: 0x016d, 0x1a0: 0xe00d, 0x1a1: 0x0008, 0x1a2: 0xe00d, 0x1a3: 0x0008, + 0x1a4: 0xe00d, 0x1a5: 0x0008, 0x1a6: 0x0185, 0x1a7: 0xe07d, 0x1a8: 0x0008, 0x1a9: 0x019d, + 0x1aa: 0x0008, 0x1ab: 0x0008, 0x1ac: 0xe00d, 0x1ad: 0x0008, 0x1ae: 0x0185, 0x1af: 0xe0fd, + 0x1b0: 0x0008, 0x1b1: 0x01b5, 0x1b2: 0x01cd, 0x1b3: 0xe03d, 0x1b4: 0x0008, 0x1b5: 0xe01d, + 0x1b6: 0x0008, 0x1b7: 0x01e5, 0x1b8: 0xe00d, 0x1b9: 0x0008, 0x1ba: 0x0008, 0x1bb: 0x0008, + 0x1bc: 0xe00d, 0x1bd: 0x0008, 0x1be: 0x0008, 0x1bf: 0x0008, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x0008, 0x1c1: 0x0008, 0x1c2: 0x0008, 0x1c3: 0x0008, 0x1c4: 0x01e9, 0x1c5: 0x01e9, + 0x1c6: 0x01e9, 0x1c7: 0x01fd, 0x1c8: 0x0215, 0x1c9: 0x022d, 0x1ca: 0x0245, 0x1cb: 0x025d, + 0x1cc: 0x0275, 0x1cd: 0xe01d, 0x1ce: 0x0008, 0x1cf: 0xe0fd, 0x1d0: 0x0008, 0x1d1: 0xe01d, + 0x1d2: 0x0008, 0x1d3: 0xe03d, 0x1d4: 0x0008, 0x1d5: 0xe01d, 0x1d6: 0x0008, 0x1d7: 0xe07d, + 0x1d8: 0x0008, 0x1d9: 0xe01d, 0x1da: 0x0008, 0x1db: 0xe03d, 0x1dc: 0x0008, 0x1dd: 0x0008, + 0x1de: 0xe00d, 0x1df: 0x0008, 0x1e0: 0xe00d, 0x1e1: 0x0008, 0x1e2: 0xe00d, 0x1e3: 0x0008, + 0x1e4: 0xe00d, 0x1e5: 0x0008, 0x1e6: 0xe00d, 0x1e7: 0x0008, 0x1e8: 0xe00d, 0x1e9: 0x0008, + 0x1ea: 0xe00d, 0x1eb: 0x0008, 0x1ec: 0xe00d, 0x1ed: 0x0008, 0x1ee: 0xe00d, 0x1ef: 0x0008, + 0x1f0: 0x0008, 0x1f1: 0x028d, 0x1f2: 0x02a5, 0x1f3: 0x02bd, 0x1f4: 0xe00d, 0x1f5: 0x0008, + 0x1f6: 0x02d5, 0x1f7: 0x02ed, 0x1f8: 0xe00d, 0x1f9: 0x0008, 0x1fa: 0xe00d, 0x1fb: 0x0008, + 0x1fc: 0xe00d, 0x1fd: 0x0008, 0x1fe: 0xe00d, 0x1ff: 0x0008, + // Block 0x8, offset 0x200 + 0x200: 0xe00d, 0x201: 0x0008, 0x202: 0xe00d, 0x203: 0x0008, 0x204: 0xe00d, 0x205: 0x0008, + 0x206: 0xe00d, 0x207: 0x0008, 0x208: 0xe00d, 0x209: 0x0008, 0x20a: 0xe00d, 0x20b: 0x0008, + 0x20c: 0xe00d, 0x20d: 0x0008, 0x20e: 0xe00d, 0x20f: 0x0008, 0x210: 0xe00d, 0x211: 0x0008, + 0x212: 0xe00d, 0x213: 0x0008, 0x214: 0xe00d, 0x215: 0x0008, 0x216: 0xe00d, 0x217: 0x0008, + 0x218: 0xe00d, 0x219: 0x0008, 0x21a: 0xe00d, 0x21b: 0x0008, 0x21c: 0xe00d, 0x21d: 0x0008, + 0x21e: 0xe00d, 0x21f: 0x0008, 0x220: 0x0305, 0x221: 0x0008, 0x222: 0xe00d, 0x223: 0x0008, + 0x224: 0xe00d, 0x225: 0x0008, 0x226: 0xe00d, 0x227: 0x0008, 0x228: 0xe00d, 0x229: 0x0008, + 0x22a: 0xe00d, 0x22b: 0x0008, 0x22c: 0xe00d, 0x22d: 0x0008, 0x22e: 0xe00d, 0x22f: 0x0008, + 0x230: 0xe00d, 0x231: 0x0008, 0x232: 0xe00d, 0x233: 0x0008, 0x234: 0x0008, 0x235: 0x0008, + 0x236: 0x0008, 0x237: 0x0008, 0x238: 0x0008, 0x239: 0x0008, 0x23a: 0x0209, 0x23b: 0xe03d, + 0x23c: 0x0008, 0x23d: 0x031d, 0x23e: 0x0229, 0x23f: 0x0008, + // Block 0x9, offset 0x240 + 0x240: 0x0008, 0x241: 0x0008, 0x242: 0x0018, 0x243: 0x0018, 0x244: 0x0018, 0x245: 0x0018, + 0x246: 0x0008, 0x247: 0x0008, 0x248: 0x0008, 0x249: 0x0008, 0x24a: 0x0008, 0x24b: 0x0008, + 0x24c: 0x0008, 0x24d: 0x0008, 0x24e: 0x0008, 0x24f: 0x0008, 0x250: 0x0008, 0x251: 0x0008, + 0x252: 0x0018, 0x253: 0x0018, 0x254: 0x0018, 0x255: 0x0018, 0x256: 0x0018, 0x257: 0x0018, + 0x258: 0x029a, 0x259: 0x02ba, 0x25a: 0x02da, 0x25b: 0x02fa, 0x25c: 0x031a, 0x25d: 0x033a, + 0x25e: 0x0018, 0x25f: 0x0018, 0x260: 0x03ad, 0x261: 0x0359, 0x262: 0x01d9, 0x263: 0x0369, + 0x264: 0x03c5, 0x265: 0x0018, 0x266: 0x0018, 0x267: 0x0018, 0x268: 0x0018, 0x269: 0x0018, + 0x26a: 0x0018, 0x26b: 0x0018, 0x26c: 0x0008, 0x26d: 0x0018, 0x26e: 0x0008, 0x26f: 0x0018, + 0x270: 0x0018, 0x271: 0x0018, 0x272: 0x0018, 0x273: 0x0018, 0x274: 0x0018, 0x275: 0x0018, + 0x276: 0x0018, 0x277: 0x0018, 0x278: 0x0018, 0x279: 0x0018, 0x27a: 0x0018, 0x27b: 0x0018, + 0x27c: 0x0018, 0x27d: 0x0018, 0x27e: 0x0018, 0x27f: 0x0018, + // Block 0xa, offset 0x280 + 0x280: 0x03dd, 0x281: 0x03dd, 0x282: 0x3308, 0x283: 0x03f5, 0x284: 0x0379, 0x285: 0x040d, + 0x286: 0x3308, 0x287: 0x3308, 0x288: 0x3308, 0x289: 0x3308, 0x28a: 0x3308, 0x28b: 0x3308, + 0x28c: 0x3308, 0x28d: 0x3308, 0x28e: 0x3308, 0x28f: 0x33c0, 0x290: 0x3308, 0x291: 0x3308, + 0x292: 0x3308, 0x293: 0x3308, 0x294: 0x3308, 0x295: 0x3308, 0x296: 0x3308, 0x297: 0x3308, + 0x298: 0x3308, 0x299: 0x3308, 0x29a: 0x3308, 0x29b: 0x3308, 0x29c: 0x3308, 0x29d: 0x3308, + 0x29e: 0x3308, 0x29f: 0x3308, 0x2a0: 0x3308, 0x2a1: 0x3308, 0x2a2: 0x3308, 0x2a3: 0x3308, + 0x2a4: 0x3308, 0x2a5: 0x3308, 0x2a6: 0x3308, 0x2a7: 0x3308, 0x2a8: 0x3308, 0x2a9: 0x3308, + 0x2aa: 0x3308, 0x2ab: 0x3308, 0x2ac: 0x3308, 0x2ad: 0x3308, 0x2ae: 0x3308, 0x2af: 0x3308, + 0x2b0: 0xe00d, 0x2b1: 0x0008, 0x2b2: 0xe00d, 0x2b3: 0x0008, 0x2b4: 0x0425, 0x2b5: 0x0008, + 0x2b6: 0xe00d, 0x2b7: 0x0008, 0x2b8: 0x0040, 0x2b9: 0x0040, 0x2ba: 0x03a2, 0x2bb: 0x0008, + 0x2bc: 0x0008, 0x2bd: 0x0008, 0x2be: 0x03c2, 0x2bf: 0x043d, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x0040, 0x2c1: 0x0040, 0x2c2: 0x0040, 0x2c3: 0x0040, 0x2c4: 0x008a, 0x2c5: 0x03d2, + 0x2c6: 0xe155, 0x2c7: 0x0455, 0x2c8: 0xe12d, 0x2c9: 0xe13d, 0x2ca: 0xe12d, 0x2cb: 0x0040, + 0x2cc: 0x03dd, 0x2cd: 0x0040, 0x2ce: 0x046d, 0x2cf: 0x0485, 0x2d0: 0x0008, 0x2d1: 0xe105, + 0x2d2: 0xe105, 0x2d3: 0xe105, 0x2d4: 0xe105, 0x2d5: 0xe105, 0x2d6: 0xe105, 0x2d7: 0xe105, + 0x2d8: 0xe105, 0x2d9: 0xe105, 0x2da: 0xe105, 0x2db: 0xe105, 0x2dc: 0xe105, 0x2dd: 0xe105, + 0x2de: 0xe105, 0x2df: 0xe105, 0x2e0: 0x049d, 0x2e1: 0x049d, 0x2e2: 0x0040, 0x2e3: 0x049d, + 0x2e4: 0x049d, 0x2e5: 0x049d, 0x2e6: 0x049d, 0x2e7: 0x049d, 0x2e8: 0x049d, 0x2e9: 0x049d, + 0x2ea: 0x049d, 0x2eb: 0x049d, 0x2ec: 0x0008, 0x2ed: 0x0008, 0x2ee: 0x0008, 0x2ef: 0x0008, + 0x2f0: 0x0008, 0x2f1: 0x0008, 0x2f2: 0x0008, 0x2f3: 0x0008, 0x2f4: 0x0008, 0x2f5: 0x0008, + 0x2f6: 0x0008, 0x2f7: 0x0008, 0x2f8: 0x0008, 0x2f9: 0x0008, 0x2fa: 0x0008, 0x2fb: 0x0008, + 0x2fc: 0x0008, 0x2fd: 0x0008, 0x2fe: 0x0008, 0x2ff: 0x0008, + // Block 0xc, offset 0x300 + 0x300: 0x0008, 0x301: 0x0008, 0x302: 0xe00f, 0x303: 0x0008, 0x304: 0x0008, 0x305: 0x0008, + 0x306: 0x0008, 0x307: 0x0008, 0x308: 0x0008, 0x309: 0x0008, 0x30a: 0x0008, 0x30b: 0x0008, + 0x30c: 0x0008, 0x30d: 0x0008, 0x30e: 0x0008, 0x30f: 0xe0c5, 0x310: 0x04b5, 0x311: 0x04cd, + 0x312: 0xe0bd, 0x313: 0xe0f5, 0x314: 0xe0fd, 0x315: 0xe09d, 0x316: 0xe0b5, 0x317: 0x0008, + 0x318: 0xe00d, 0x319: 0x0008, 0x31a: 0xe00d, 0x31b: 0x0008, 0x31c: 0xe00d, 0x31d: 0x0008, + 0x31e: 0xe00d, 0x31f: 0x0008, 0x320: 0xe00d, 0x321: 0x0008, 0x322: 0xe00d, 0x323: 0x0008, + 0x324: 0xe00d, 0x325: 0x0008, 0x326: 0xe00d, 0x327: 0x0008, 0x328: 0xe00d, 0x329: 0x0008, + 0x32a: 0xe00d, 0x32b: 0x0008, 0x32c: 0xe00d, 0x32d: 0x0008, 0x32e: 0xe00d, 0x32f: 0x0008, + 0x330: 0x04e5, 0x331: 0xe185, 0x332: 0xe18d, 0x333: 0x0008, 0x334: 0x04fd, 0x335: 0x03dd, + 0x336: 0x0018, 0x337: 0xe07d, 0x338: 0x0008, 0x339: 0xe1d5, 0x33a: 0xe00d, 0x33b: 0x0008, + 0x33c: 0x0008, 0x33d: 0x0515, 0x33e: 0x052d, 0x33f: 0x052d, + // Block 0xd, offset 0x340 + 0x340: 0x0008, 0x341: 0x0008, 0x342: 0x0008, 0x343: 0x0008, 0x344: 0x0008, 0x345: 0x0008, + 0x346: 0x0008, 0x347: 0x0008, 0x348: 0x0008, 0x349: 0x0008, 0x34a: 0x0008, 0x34b: 0x0008, + 0x34c: 0x0008, 0x34d: 0x0008, 0x34e: 0x0008, 0x34f: 0x0008, 0x350: 0x0008, 0x351: 0x0008, + 0x352: 0x0008, 0x353: 0x0008, 0x354: 0x0008, 0x355: 0x0008, 0x356: 0x0008, 0x357: 0x0008, + 0x358: 0x0008, 0x359: 0x0008, 0x35a: 0x0008, 0x35b: 0x0008, 0x35c: 0x0008, 0x35d: 0x0008, + 0x35e: 0x0008, 0x35f: 0x0008, 0x360: 0xe00d, 0x361: 0x0008, 0x362: 0xe00d, 0x363: 0x0008, + 0x364: 0xe00d, 0x365: 0x0008, 0x366: 0xe00d, 0x367: 0x0008, 0x368: 0xe00d, 0x369: 0x0008, + 0x36a: 0xe00d, 0x36b: 0x0008, 0x36c: 0xe00d, 0x36d: 0x0008, 0x36e: 0xe00d, 0x36f: 0x0008, + 0x370: 0xe00d, 0x371: 0x0008, 0x372: 0xe00d, 0x373: 0x0008, 0x374: 0xe00d, 0x375: 0x0008, + 0x376: 0xe00d, 0x377: 0x0008, 0x378: 0xe00d, 0x379: 0x0008, 0x37a: 0xe00d, 0x37b: 0x0008, + 0x37c: 0xe00d, 0x37d: 0x0008, 0x37e: 0xe00d, 0x37f: 0x0008, + // Block 0xe, offset 0x380 + 0x380: 0xe00d, 0x381: 0x0008, 0x382: 0x0018, 0x383: 0x3308, 0x384: 0x3308, 0x385: 0x3308, + 0x386: 0x3308, 0x387: 0x3308, 0x388: 0x3318, 0x389: 0x3318, 0x38a: 0xe00d, 0x38b: 0x0008, + 0x38c: 0xe00d, 0x38d: 0x0008, 0x38e: 0xe00d, 0x38f: 0x0008, 0x390: 0xe00d, 0x391: 0x0008, + 0x392: 0xe00d, 0x393: 0x0008, 0x394: 0xe00d, 0x395: 0x0008, 0x396: 0xe00d, 0x397: 0x0008, + 0x398: 0xe00d, 0x399: 0x0008, 0x39a: 0xe00d, 0x39b: 0x0008, 0x39c: 0xe00d, 0x39d: 0x0008, + 0x39e: 0xe00d, 0x39f: 0x0008, 0x3a0: 0xe00d, 0x3a1: 0x0008, 0x3a2: 0xe00d, 0x3a3: 0x0008, + 0x3a4: 0xe00d, 0x3a5: 0x0008, 0x3a6: 0xe00d, 0x3a7: 0x0008, 0x3a8: 0xe00d, 0x3a9: 0x0008, + 0x3aa: 0xe00d, 0x3ab: 0x0008, 0x3ac: 0xe00d, 0x3ad: 0x0008, 0x3ae: 0xe00d, 0x3af: 0x0008, + 0x3b0: 0xe00d, 0x3b1: 0x0008, 0x3b2: 0xe00d, 0x3b3: 0x0008, 0x3b4: 0xe00d, 0x3b5: 0x0008, + 0x3b6: 0xe00d, 0x3b7: 0x0008, 0x3b8: 0xe00d, 0x3b9: 0x0008, 0x3ba: 0xe00d, 0x3bb: 0x0008, + 0x3bc: 0xe00d, 0x3bd: 0x0008, 0x3be: 0xe00d, 0x3bf: 0x0008, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x0040, 0x3c1: 0xe01d, 0x3c2: 0x0008, 0x3c3: 0xe03d, 0x3c4: 0x0008, 0x3c5: 0xe01d, + 0x3c6: 0x0008, 0x3c7: 0xe07d, 0x3c8: 0x0008, 0x3c9: 0xe01d, 0x3ca: 0x0008, 0x3cb: 0xe03d, + 0x3cc: 0x0008, 0x3cd: 0xe01d, 0x3ce: 0x0008, 0x3cf: 0x0008, 0x3d0: 0xe00d, 0x3d1: 0x0008, + 0x3d2: 0xe00d, 0x3d3: 0x0008, 0x3d4: 0xe00d, 0x3d5: 0x0008, 0x3d6: 0xe00d, 0x3d7: 0x0008, + 0x3d8: 0xe00d, 0x3d9: 0x0008, 0x3da: 0xe00d, 0x3db: 0x0008, 0x3dc: 0xe00d, 0x3dd: 0x0008, + 0x3de: 0xe00d, 0x3df: 0x0008, 0x3e0: 0xe00d, 0x3e1: 0x0008, 0x3e2: 0xe00d, 0x3e3: 0x0008, + 0x3e4: 0xe00d, 0x3e5: 0x0008, 0x3e6: 0xe00d, 0x3e7: 0x0008, 0x3e8: 0xe00d, 0x3e9: 0x0008, + 0x3ea: 0xe00d, 0x3eb: 0x0008, 0x3ec: 0xe00d, 0x3ed: 0x0008, 0x3ee: 0xe00d, 0x3ef: 0x0008, + 0x3f0: 0xe00d, 0x3f1: 0x0008, 0x3f2: 0xe00d, 0x3f3: 0x0008, 0x3f4: 0xe00d, 0x3f5: 0x0008, + 0x3f6: 0xe00d, 0x3f7: 0x0008, 0x3f8: 0xe00d, 0x3f9: 0x0008, 0x3fa: 0xe00d, 0x3fb: 0x0008, + 0x3fc: 0xe00d, 0x3fd: 0x0008, 0x3fe: 0xe00d, 0x3ff: 0x0008, + // Block 0x10, offset 0x400 + 0x400: 0xe00d, 0x401: 0x0008, 0x402: 0xe00d, 0x403: 0x0008, 0x404: 0xe00d, 0x405: 0x0008, + 0x406: 0xe00d, 0x407: 0x0008, 0x408: 0xe00d, 0x409: 0x0008, 0x40a: 0xe00d, 0x40b: 0x0008, + 0x40c: 0xe00d, 0x40d: 0x0008, 0x40e: 0xe00d, 0x40f: 0x0008, 0x410: 0xe00d, 0x411: 0x0008, + 0x412: 0xe00d, 0x413: 0x0008, 0x414: 0xe00d, 0x415: 0x0008, 0x416: 0xe00d, 0x417: 0x0008, + 0x418: 0xe00d, 0x419: 0x0008, 0x41a: 0xe00d, 0x41b: 0x0008, 0x41c: 0xe00d, 0x41d: 0x0008, + 0x41e: 0xe00d, 0x41f: 0x0008, 0x420: 0xe00d, 0x421: 0x0008, 0x422: 0xe00d, 0x423: 0x0008, + 0x424: 0xe00d, 0x425: 0x0008, 0x426: 0xe00d, 0x427: 0x0008, 0x428: 0xe00d, 0x429: 0x0008, + 0x42a: 0xe00d, 0x42b: 0x0008, 0x42c: 0xe00d, 0x42d: 0x0008, 0x42e: 0xe00d, 0x42f: 0x0008, + 0x430: 0x0040, 0x431: 0x03f5, 0x432: 0x03f5, 0x433: 0x03f5, 0x434: 0x03f5, 0x435: 0x03f5, + 0x436: 0x03f5, 0x437: 0x03f5, 0x438: 0x03f5, 0x439: 0x03f5, 0x43a: 0x03f5, 0x43b: 0x03f5, + 0x43c: 0x03f5, 0x43d: 0x03f5, 0x43e: 0x03f5, 0x43f: 0x03f5, + // Block 0x11, offset 0x440 + 0x440: 0x0840, 0x441: 0x0840, 0x442: 0x0840, 0x443: 0x0840, 0x444: 0x0840, 0x445: 0x0840, + 0x446: 0x0018, 0x447: 0x0018, 0x448: 0x0818, 0x449: 0x0018, 0x44a: 0x0018, 0x44b: 0x0818, + 0x44c: 0x0018, 0x44d: 0x0818, 0x44e: 0x0018, 0x44f: 0x0018, 0x450: 0x3308, 0x451: 0x3308, + 0x452: 0x3308, 0x453: 0x3308, 0x454: 0x3308, 0x455: 0x3308, 0x456: 0x3308, 0x457: 0x3308, + 0x458: 0x3308, 0x459: 0x3308, 0x45a: 0x3308, 0x45b: 0x0818, 0x45c: 0x0b40, 0x45d: 0x0040, + 0x45e: 0x0818, 0x45f: 0x0818, 0x460: 0x0a08, 0x461: 0x0808, 0x462: 0x0c08, 0x463: 0x0c08, + 0x464: 0x0c08, 0x465: 0x0c08, 0x466: 0x0a08, 0x467: 0x0c08, 0x468: 0x0a08, 0x469: 0x0c08, + 0x46a: 0x0a08, 0x46b: 0x0a08, 0x46c: 0x0a08, 0x46d: 0x0a08, 0x46e: 0x0a08, 0x46f: 0x0c08, + 0x470: 0x0c08, 0x471: 0x0c08, 0x472: 0x0c08, 0x473: 0x0a08, 0x474: 0x0a08, 0x475: 0x0a08, + 0x476: 0x0a08, 0x477: 0x0a08, 0x478: 0x0a08, 0x479: 0x0a08, 0x47a: 0x0a08, 0x47b: 0x0a08, + 0x47c: 0x0a08, 0x47d: 0x0a08, 0x47e: 0x0a08, 0x47f: 0x0a08, + // Block 0x12, offset 0x480 + 0x480: 0x0818, 0x481: 0x0a08, 0x482: 0x0a08, 0x483: 0x0a08, 0x484: 0x0a08, 0x485: 0x0a08, + 0x486: 0x0a08, 0x487: 0x0a08, 0x488: 0x0c08, 0x489: 0x0a08, 0x48a: 0x0a08, 0x48b: 0x3308, + 0x48c: 0x3308, 0x48d: 0x3308, 0x48e: 0x3308, 0x48f: 0x3308, 0x490: 0x3308, 0x491: 0x3308, + 0x492: 0x3308, 0x493: 0x3308, 0x494: 0x3308, 0x495: 0x3308, 0x496: 0x3308, 0x497: 0x3308, + 0x498: 0x3308, 0x499: 0x3308, 0x49a: 0x3308, 0x49b: 0x3308, 0x49c: 0x3308, 0x49d: 0x3308, + 0x49e: 0x3308, 0x49f: 0x3308, 0x4a0: 0x0808, 0x4a1: 0x0808, 0x4a2: 0x0808, 0x4a3: 0x0808, + 0x4a4: 0x0808, 0x4a5: 0x0808, 0x4a6: 0x0808, 0x4a7: 0x0808, 0x4a8: 0x0808, 0x4a9: 0x0808, + 0x4aa: 0x0018, 0x4ab: 0x0818, 0x4ac: 0x0818, 0x4ad: 0x0818, 0x4ae: 0x0a08, 0x4af: 0x0a08, + 0x4b0: 0x3308, 0x4b1: 0x0c08, 0x4b2: 0x0c08, 0x4b3: 0x0c08, 0x4b4: 0x0808, 0x4b5: 0x0429, + 0x4b6: 0x0451, 0x4b7: 0x0479, 0x4b8: 0x04a1, 0x4b9: 0x0a08, 0x4ba: 0x0a08, 0x4bb: 0x0a08, + 0x4bc: 0x0a08, 0x4bd: 0x0a08, 0x4be: 0x0a08, 0x4bf: 0x0a08, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x0c08, 0x4c1: 0x0a08, 0x4c2: 0x0a08, 0x4c3: 0x0c08, 0x4c4: 0x0c08, 0x4c5: 0x0c08, + 0x4c6: 0x0c08, 0x4c7: 0x0c08, 0x4c8: 0x0c08, 0x4c9: 0x0c08, 0x4ca: 0x0c08, 0x4cb: 0x0c08, + 0x4cc: 0x0a08, 0x4cd: 0x0c08, 0x4ce: 0x0a08, 0x4cf: 0x0c08, 0x4d0: 0x0a08, 0x4d1: 0x0a08, + 0x4d2: 0x0c08, 0x4d3: 0x0c08, 0x4d4: 0x0818, 0x4d5: 0x0c08, 0x4d6: 0x3308, 0x4d7: 0x3308, + 0x4d8: 0x3308, 0x4d9: 0x3308, 0x4da: 0x3308, 0x4db: 0x3308, 0x4dc: 0x3308, 0x4dd: 0x0840, + 0x4de: 0x0018, 0x4df: 0x3308, 0x4e0: 0x3308, 0x4e1: 0x3308, 0x4e2: 0x3308, 0x4e3: 0x3308, + 0x4e4: 0x3308, 0x4e5: 0x0808, 0x4e6: 0x0808, 0x4e7: 0x3308, 0x4e8: 0x3308, 0x4e9: 0x0018, + 0x4ea: 0x3308, 0x4eb: 0x3308, 0x4ec: 0x3308, 0x4ed: 0x3308, 0x4ee: 0x0c08, 0x4ef: 0x0c08, + 0x4f0: 0x0008, 0x4f1: 0x0008, 0x4f2: 0x0008, 0x4f3: 0x0008, 0x4f4: 0x0008, 0x4f5: 0x0008, + 0x4f6: 0x0008, 0x4f7: 0x0008, 0x4f8: 0x0008, 0x4f9: 0x0008, 0x4fa: 0x0a08, 0x4fb: 0x0a08, + 0x4fc: 0x0a08, 0x4fd: 0x0808, 0x4fe: 0x0808, 0x4ff: 0x0a08, + // Block 0x14, offset 0x500 + 0x500: 0x0818, 0x501: 0x0818, 0x502: 0x0818, 0x503: 0x0818, 0x504: 0x0818, 0x505: 0x0818, + 0x506: 0x0818, 0x507: 0x0818, 0x508: 0x0818, 0x509: 0x0818, 0x50a: 0x0818, 0x50b: 0x0818, + 0x50c: 0x0818, 0x50d: 0x0818, 0x50e: 0x0040, 0x50f: 0x0b40, 0x510: 0x0c08, 0x511: 0x3308, + 0x512: 0x0a08, 0x513: 0x0a08, 0x514: 0x0a08, 0x515: 0x0c08, 0x516: 0x0c08, 0x517: 0x0c08, + 0x518: 0x0c08, 0x519: 0x0c08, 0x51a: 0x0a08, 0x51b: 0x0a08, 0x51c: 0x0a08, 0x51d: 0x0a08, + 0x51e: 0x0c08, 0x51f: 0x0a08, 0x520: 0x0a08, 0x521: 0x0a08, 0x522: 0x0a08, 0x523: 0x0a08, + 0x524: 0x0a08, 0x525: 0x0a08, 0x526: 0x0a08, 0x527: 0x0a08, 0x528: 0x0c08, 0x529: 0x0a08, + 0x52a: 0x0c08, 0x52b: 0x0a08, 0x52c: 0x0c08, 0x52d: 0x0a08, 0x52e: 0x0a08, 0x52f: 0x0c08, + 0x530: 0x3308, 0x531: 0x3308, 0x532: 0x3308, 0x533: 0x3308, 0x534: 0x3308, 0x535: 0x3308, + 0x536: 0x3308, 0x537: 0x3308, 0x538: 0x3308, 0x539: 0x3308, 0x53a: 0x3308, 0x53b: 0x3308, + 0x53c: 0x3308, 0x53d: 0x3308, 0x53e: 0x3308, 0x53f: 0x3308, + // Block 0x15, offset 0x540 + 0x540: 0x3008, 0x541: 0x3308, 0x542: 0x3308, 0x543: 0x3308, 0x544: 0x3308, 0x545: 0x3308, + 0x546: 0x3308, 0x547: 0x3308, 0x548: 0x3308, 0x549: 0x3008, 0x54a: 0x3008, 0x54b: 0x3008, + 0x54c: 0x3008, 0x54d: 0x3b08, 0x54e: 0x3008, 0x54f: 0x3008, 0x550: 0x0008, 0x551: 0x3308, + 0x552: 0x3308, 0x553: 0x3308, 0x554: 0x3308, 0x555: 0x3308, 0x556: 0x3308, 0x557: 0x3308, + 0x558: 0x04c9, 0x559: 0x0501, 0x55a: 0x0539, 0x55b: 0x0571, 0x55c: 0x05a9, 0x55d: 0x05e1, + 0x55e: 0x0619, 0x55f: 0x0651, 0x560: 0x0008, 0x561: 0x0008, 0x562: 0x3308, 0x563: 0x3308, + 0x564: 0x0018, 0x565: 0x0018, 0x566: 0x0008, 0x567: 0x0008, 0x568: 0x0008, 0x569: 0x0008, + 0x56a: 0x0008, 0x56b: 0x0008, 0x56c: 0x0008, 0x56d: 0x0008, 0x56e: 0x0008, 0x56f: 0x0008, + 0x570: 0x0018, 0x571: 0x0008, 0x572: 0x0008, 0x573: 0x0008, 0x574: 0x0008, 0x575: 0x0008, + 0x576: 0x0008, 0x577: 0x0008, 0x578: 0x0008, 0x579: 0x0008, 0x57a: 0x0008, 0x57b: 0x0008, + 0x57c: 0x0008, 0x57d: 0x0008, 0x57e: 0x0008, 0x57f: 0x0008, + // Block 0x16, offset 0x580 + 0x580: 0x0008, 0x581: 0x3308, 0x582: 0x3008, 0x583: 0x3008, 0x584: 0x0040, 0x585: 0x0008, + 0x586: 0x0008, 0x587: 0x0008, 0x588: 0x0008, 0x589: 0x0008, 0x58a: 0x0008, 0x58b: 0x0008, + 0x58c: 0x0008, 0x58d: 0x0040, 0x58e: 0x0040, 0x58f: 0x0008, 0x590: 0x0008, 0x591: 0x0040, + 0x592: 0x0040, 0x593: 0x0008, 0x594: 0x0008, 0x595: 0x0008, 0x596: 0x0008, 0x597: 0x0008, + 0x598: 0x0008, 0x599: 0x0008, 0x59a: 0x0008, 0x59b: 0x0008, 0x59c: 0x0008, 0x59d: 0x0008, + 0x59e: 0x0008, 0x59f: 0x0008, 0x5a0: 0x0008, 0x5a1: 0x0008, 0x5a2: 0x0008, 0x5a3: 0x0008, + 0x5a4: 0x0008, 0x5a5: 0x0008, 0x5a6: 0x0008, 0x5a7: 0x0008, 0x5a8: 0x0008, 0x5a9: 0x0040, + 0x5aa: 0x0008, 0x5ab: 0x0008, 0x5ac: 0x0008, 0x5ad: 0x0008, 0x5ae: 0x0008, 0x5af: 0x0008, + 0x5b0: 0x0008, 0x5b1: 0x0040, 0x5b2: 0x0008, 0x5b3: 0x0040, 0x5b4: 0x0040, 0x5b5: 0x0040, + 0x5b6: 0x0008, 0x5b7: 0x0008, 0x5b8: 0x0008, 0x5b9: 0x0008, 0x5ba: 0x0040, 0x5bb: 0x0040, + 0x5bc: 0x3308, 0x5bd: 0x0008, 0x5be: 0x3008, 0x5bf: 0x3008, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x3008, 0x5c1: 0x3308, 0x5c2: 0x3308, 0x5c3: 0x3308, 0x5c4: 0x3308, 0x5c5: 0x0040, + 0x5c6: 0x0040, 0x5c7: 0x3008, 0x5c8: 0x3008, 0x5c9: 0x0040, 0x5ca: 0x0040, 0x5cb: 0x3008, + 0x5cc: 0x3008, 0x5cd: 0x3b08, 0x5ce: 0x0008, 0x5cf: 0x0040, 0x5d0: 0x0040, 0x5d1: 0x0040, + 0x5d2: 0x0040, 0x5d3: 0x0040, 0x5d4: 0x0040, 0x5d5: 0x0040, 0x5d6: 0x0040, 0x5d7: 0x3008, + 0x5d8: 0x0040, 0x5d9: 0x0040, 0x5da: 0x0040, 0x5db: 0x0040, 0x5dc: 0x0689, 0x5dd: 0x06c1, + 0x5de: 0x0040, 0x5df: 0x06f9, 0x5e0: 0x0008, 0x5e1: 0x0008, 0x5e2: 0x3308, 0x5e3: 0x3308, + 0x5e4: 0x0040, 0x5e5: 0x0040, 0x5e6: 0x0008, 0x5e7: 0x0008, 0x5e8: 0x0008, 0x5e9: 0x0008, + 0x5ea: 0x0008, 0x5eb: 0x0008, 0x5ec: 0x0008, 0x5ed: 0x0008, 0x5ee: 0x0008, 0x5ef: 0x0008, + 0x5f0: 0x0008, 0x5f1: 0x0008, 0x5f2: 0x0018, 0x5f3: 0x0018, 0x5f4: 0x0018, 0x5f5: 0x0018, + 0x5f6: 0x0018, 0x5f7: 0x0018, 0x5f8: 0x0018, 0x5f9: 0x0018, 0x5fa: 0x0018, 0x5fb: 0x0018, + 0x5fc: 0x0040, 0x5fd: 0x0040, 0x5fe: 0x0040, 0x5ff: 0x0040, + // Block 0x18, offset 0x600 + 0x600: 0x0040, 0x601: 0x3308, 0x602: 0x3308, 0x603: 0x3008, 0x604: 0x0040, 0x605: 0x0008, + 0x606: 0x0008, 0x607: 0x0008, 0x608: 0x0008, 0x609: 0x0008, 0x60a: 0x0008, 0x60b: 0x0040, + 0x60c: 0x0040, 0x60d: 0x0040, 0x60e: 0x0040, 0x60f: 0x0008, 0x610: 0x0008, 0x611: 0x0040, + 0x612: 0x0040, 0x613: 0x0008, 0x614: 0x0008, 0x615: 0x0008, 0x616: 0x0008, 0x617: 0x0008, + 0x618: 0x0008, 0x619: 0x0008, 0x61a: 0x0008, 0x61b: 0x0008, 0x61c: 0x0008, 0x61d: 0x0008, + 0x61e: 0x0008, 0x61f: 0x0008, 0x620: 0x0008, 0x621: 0x0008, 0x622: 0x0008, 0x623: 0x0008, + 0x624: 0x0008, 0x625: 0x0008, 0x626: 0x0008, 0x627: 0x0008, 0x628: 0x0008, 0x629: 0x0040, + 0x62a: 0x0008, 0x62b: 0x0008, 0x62c: 0x0008, 0x62d: 0x0008, 0x62e: 0x0008, 0x62f: 0x0008, + 0x630: 0x0008, 0x631: 0x0040, 0x632: 0x0008, 0x633: 0x0731, 0x634: 0x0040, 0x635: 0x0008, + 0x636: 0x0769, 0x637: 0x0040, 0x638: 0x0008, 0x639: 0x0008, 0x63a: 0x0040, 0x63b: 0x0040, + 0x63c: 0x3308, 0x63d: 0x0040, 0x63e: 0x3008, 0x63f: 0x3008, + // Block 0x19, offset 0x640 + 0x640: 0x3008, 0x641: 0x3308, 0x642: 0x3308, 0x643: 0x0040, 0x644: 0x0040, 0x645: 0x0040, + 0x646: 0x0040, 0x647: 0x3308, 0x648: 0x3308, 0x649: 0x0040, 0x64a: 0x0040, 0x64b: 0x3308, + 0x64c: 0x3308, 0x64d: 0x3b08, 0x64e: 0x0040, 0x64f: 0x0040, 0x650: 0x0040, 0x651: 0x3308, + 0x652: 0x0040, 0x653: 0x0040, 0x654: 0x0040, 0x655: 0x0040, 0x656: 0x0040, 0x657: 0x0040, + 0x658: 0x0040, 0x659: 0x07a1, 0x65a: 0x07d9, 0x65b: 0x0811, 0x65c: 0x0008, 0x65d: 0x0040, + 0x65e: 0x0849, 0x65f: 0x0040, 0x660: 0x0040, 0x661: 0x0040, 0x662: 0x0040, 0x663: 0x0040, + 0x664: 0x0040, 0x665: 0x0040, 0x666: 0x0008, 0x667: 0x0008, 0x668: 0x0008, 0x669: 0x0008, + 0x66a: 0x0008, 0x66b: 0x0008, 0x66c: 0x0008, 0x66d: 0x0008, 0x66e: 0x0008, 0x66f: 0x0008, + 0x670: 0x3308, 0x671: 0x3308, 0x672: 0x0008, 0x673: 0x0008, 0x674: 0x0008, 0x675: 0x3308, + 0x676: 0x0040, 0x677: 0x0040, 0x678: 0x0040, 0x679: 0x0040, 0x67a: 0x0040, 0x67b: 0x0040, + 0x67c: 0x0040, 0x67d: 0x0040, 0x67e: 0x0040, 0x67f: 0x0040, + // Block 0x1a, offset 0x680 + 0x680: 0x0040, 0x681: 0x3308, 0x682: 0x3308, 0x683: 0x3008, 0x684: 0x0040, 0x685: 0x0008, + 0x686: 0x0008, 0x687: 0x0008, 0x688: 0x0008, 0x689: 0x0008, 0x68a: 0x0008, 0x68b: 0x0008, + 0x68c: 0x0008, 0x68d: 0x0008, 0x68e: 0x0040, 0x68f: 0x0008, 0x690: 0x0008, 0x691: 0x0008, + 0x692: 0x0040, 0x693: 0x0008, 0x694: 0x0008, 0x695: 0x0008, 0x696: 0x0008, 0x697: 0x0008, + 0x698: 0x0008, 0x699: 0x0008, 0x69a: 0x0008, 0x69b: 0x0008, 0x69c: 0x0008, 0x69d: 0x0008, + 0x69e: 0x0008, 0x69f: 0x0008, 0x6a0: 0x0008, 0x6a1: 0x0008, 0x6a2: 0x0008, 0x6a3: 0x0008, + 0x6a4: 0x0008, 0x6a5: 0x0008, 0x6a6: 0x0008, 0x6a7: 0x0008, 0x6a8: 0x0008, 0x6a9: 0x0040, + 0x6aa: 0x0008, 0x6ab: 0x0008, 0x6ac: 0x0008, 0x6ad: 0x0008, 0x6ae: 0x0008, 0x6af: 0x0008, + 0x6b0: 0x0008, 0x6b1: 0x0040, 0x6b2: 0x0008, 0x6b3: 0x0008, 0x6b4: 0x0040, 0x6b5: 0x0008, + 0x6b6: 0x0008, 0x6b7: 0x0008, 0x6b8: 0x0008, 0x6b9: 0x0008, 0x6ba: 0x0040, 0x6bb: 0x0040, + 0x6bc: 0x3308, 0x6bd: 0x0008, 0x6be: 0x3008, 0x6bf: 0x3008, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x3008, 0x6c1: 0x3308, 0x6c2: 0x3308, 0x6c3: 0x3308, 0x6c4: 0x3308, 0x6c5: 0x3308, + 0x6c6: 0x0040, 0x6c7: 0x3308, 0x6c8: 0x3308, 0x6c9: 0x3008, 0x6ca: 0x0040, 0x6cb: 0x3008, + 0x6cc: 0x3008, 0x6cd: 0x3b08, 0x6ce: 0x0040, 0x6cf: 0x0040, 0x6d0: 0x0008, 0x6d1: 0x0040, + 0x6d2: 0x0040, 0x6d3: 0x0040, 0x6d4: 0x0040, 0x6d5: 0x0040, 0x6d6: 0x0040, 0x6d7: 0x0040, + 0x6d8: 0x0040, 0x6d9: 0x0040, 0x6da: 0x0040, 0x6db: 0x0040, 0x6dc: 0x0040, 0x6dd: 0x0040, + 0x6de: 0x0040, 0x6df: 0x0040, 0x6e0: 0x0008, 0x6e1: 0x0008, 0x6e2: 0x3308, 0x6e3: 0x3308, + 0x6e4: 0x0040, 0x6e5: 0x0040, 0x6e6: 0x0008, 0x6e7: 0x0008, 0x6e8: 0x0008, 0x6e9: 0x0008, + 0x6ea: 0x0008, 0x6eb: 0x0008, 0x6ec: 0x0008, 0x6ed: 0x0008, 0x6ee: 0x0008, 0x6ef: 0x0008, + 0x6f0: 0x0018, 0x6f1: 0x0018, 0x6f2: 0x0040, 0x6f3: 0x0040, 0x6f4: 0x0040, 0x6f5: 0x0040, + 0x6f6: 0x0040, 0x6f7: 0x0040, 0x6f8: 0x0040, 0x6f9: 0x0008, 0x6fa: 0x0040, 0x6fb: 0x0040, + 0x6fc: 0x0040, 0x6fd: 0x0040, 0x6fe: 0x0040, 0x6ff: 0x0040, + // Block 0x1c, offset 0x700 + 0x700: 0x0040, 0x701: 0x3308, 0x702: 0x3008, 0x703: 0x3008, 0x704: 0x0040, 0x705: 0x0008, + 0x706: 0x0008, 0x707: 0x0008, 0x708: 0x0008, 0x709: 0x0008, 0x70a: 0x0008, 0x70b: 0x0008, + 0x70c: 0x0008, 0x70d: 0x0040, 0x70e: 0x0040, 0x70f: 0x0008, 0x710: 0x0008, 0x711: 0x0040, + 0x712: 0x0040, 0x713: 0x0008, 0x714: 0x0008, 0x715: 0x0008, 0x716: 0x0008, 0x717: 0x0008, + 0x718: 0x0008, 0x719: 0x0008, 0x71a: 0x0008, 0x71b: 0x0008, 0x71c: 0x0008, 0x71d: 0x0008, + 0x71e: 0x0008, 0x71f: 0x0008, 0x720: 0x0008, 0x721: 0x0008, 0x722: 0x0008, 0x723: 0x0008, + 0x724: 0x0008, 0x725: 0x0008, 0x726: 0x0008, 0x727: 0x0008, 0x728: 0x0008, 0x729: 0x0040, + 0x72a: 0x0008, 0x72b: 0x0008, 0x72c: 0x0008, 0x72d: 0x0008, 0x72e: 0x0008, 0x72f: 0x0008, + 0x730: 0x0008, 0x731: 0x0040, 0x732: 0x0008, 0x733: 0x0008, 0x734: 0x0040, 0x735: 0x0008, + 0x736: 0x0008, 0x737: 0x0008, 0x738: 0x0008, 0x739: 0x0008, 0x73a: 0x0040, 0x73b: 0x0040, + 0x73c: 0x3308, 0x73d: 0x0008, 0x73e: 0x3008, 0x73f: 0x3308, + // Block 0x1d, offset 0x740 + 0x740: 0x3008, 0x741: 0x3308, 0x742: 0x3308, 0x743: 0x3308, 0x744: 0x3308, 0x745: 0x0040, + 0x746: 0x0040, 0x747: 0x3008, 0x748: 0x3008, 0x749: 0x0040, 0x74a: 0x0040, 0x74b: 0x3008, + 0x74c: 0x3008, 0x74d: 0x3b08, 0x74e: 0x0040, 0x74f: 0x0040, 0x750: 0x0040, 0x751: 0x0040, + 0x752: 0x0040, 0x753: 0x0040, 0x754: 0x0040, 0x755: 0x0040, 0x756: 0x3308, 0x757: 0x3008, + 0x758: 0x0040, 0x759: 0x0040, 0x75a: 0x0040, 0x75b: 0x0040, 0x75c: 0x0881, 0x75d: 0x08b9, + 0x75e: 0x0040, 0x75f: 0x0008, 0x760: 0x0008, 0x761: 0x0008, 0x762: 0x3308, 0x763: 0x3308, + 0x764: 0x0040, 0x765: 0x0040, 0x766: 0x0008, 0x767: 0x0008, 0x768: 0x0008, 0x769: 0x0008, + 0x76a: 0x0008, 0x76b: 0x0008, 0x76c: 0x0008, 0x76d: 0x0008, 0x76e: 0x0008, 0x76f: 0x0008, + 0x770: 0x0018, 0x771: 0x0008, 0x772: 0x0018, 0x773: 0x0018, 0x774: 0x0018, 0x775: 0x0018, + 0x776: 0x0018, 0x777: 0x0018, 0x778: 0x0040, 0x779: 0x0040, 0x77a: 0x0040, 0x77b: 0x0040, + 0x77c: 0x0040, 0x77d: 0x0040, 0x77e: 0x0040, 0x77f: 0x0040, + // Block 0x1e, offset 0x780 + 0x780: 0x0040, 0x781: 0x0040, 0x782: 0x3308, 0x783: 0x0008, 0x784: 0x0040, 0x785: 0x0008, + 0x786: 0x0008, 0x787: 0x0008, 0x788: 0x0008, 0x789: 0x0008, 0x78a: 0x0008, 0x78b: 0x0040, + 0x78c: 0x0040, 0x78d: 0x0040, 0x78e: 0x0008, 0x78f: 0x0008, 0x790: 0x0008, 0x791: 0x0040, + 0x792: 0x0008, 0x793: 0x0008, 0x794: 0x0008, 0x795: 0x0008, 0x796: 0x0040, 0x797: 0x0040, + 0x798: 0x0040, 0x799: 0x0008, 0x79a: 0x0008, 0x79b: 0x0040, 0x79c: 0x0008, 0x79d: 0x0040, + 0x79e: 0x0008, 0x79f: 0x0008, 0x7a0: 0x0040, 0x7a1: 0x0040, 0x7a2: 0x0040, 0x7a3: 0x0008, + 0x7a4: 0x0008, 0x7a5: 0x0040, 0x7a6: 0x0040, 0x7a7: 0x0040, 0x7a8: 0x0008, 0x7a9: 0x0008, + 0x7aa: 0x0008, 0x7ab: 0x0040, 0x7ac: 0x0040, 0x7ad: 0x0040, 0x7ae: 0x0008, 0x7af: 0x0008, + 0x7b0: 0x0008, 0x7b1: 0x0008, 0x7b2: 0x0008, 0x7b3: 0x0008, 0x7b4: 0x0008, 0x7b5: 0x0008, + 0x7b6: 0x0008, 0x7b7: 0x0008, 0x7b8: 0x0008, 0x7b9: 0x0008, 0x7ba: 0x0040, 0x7bb: 0x0040, + 0x7bc: 0x0040, 0x7bd: 0x0040, 0x7be: 0x3008, 0x7bf: 0x3008, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x3308, 0x7c1: 0x3008, 0x7c2: 0x3008, 0x7c3: 0x3008, 0x7c4: 0x3008, 0x7c5: 0x0040, + 0x7c6: 0x3308, 0x7c7: 0x3308, 0x7c8: 0x3308, 0x7c9: 0x0040, 0x7ca: 0x3308, 0x7cb: 0x3308, + 0x7cc: 0x3308, 0x7cd: 0x3b08, 0x7ce: 0x0040, 0x7cf: 0x0040, 0x7d0: 0x0040, 0x7d1: 0x0040, + 0x7d2: 0x0040, 0x7d3: 0x0040, 0x7d4: 0x0040, 0x7d5: 0x3308, 0x7d6: 0x3308, 0x7d7: 0x0040, + 0x7d8: 0x0008, 0x7d9: 0x0008, 0x7da: 0x0008, 0x7db: 0x0040, 0x7dc: 0x0040, 0x7dd: 0x0040, + 0x7de: 0x0040, 0x7df: 0x0040, 0x7e0: 0x0008, 0x7e1: 0x0008, 0x7e2: 0x3308, 0x7e3: 0x3308, + 0x7e4: 0x0040, 0x7e5: 0x0040, 0x7e6: 0x0008, 0x7e7: 0x0008, 0x7e8: 0x0008, 0x7e9: 0x0008, + 0x7ea: 0x0008, 0x7eb: 0x0008, 0x7ec: 0x0008, 0x7ed: 0x0008, 0x7ee: 0x0008, 0x7ef: 0x0008, + 0x7f0: 0x0040, 0x7f1: 0x0040, 0x7f2: 0x0040, 0x7f3: 0x0040, 0x7f4: 0x0040, 0x7f5: 0x0040, + 0x7f6: 0x0040, 0x7f7: 0x0040, 0x7f8: 0x0018, 0x7f9: 0x0018, 0x7fa: 0x0018, 0x7fb: 0x0018, + 0x7fc: 0x0018, 0x7fd: 0x0018, 0x7fe: 0x0018, 0x7ff: 0x0018, + // Block 0x20, offset 0x800 + 0x800: 0x0008, 0x801: 0x3308, 0x802: 0x3008, 0x803: 0x3008, 0x804: 0x0040, 0x805: 0x0008, + 0x806: 0x0008, 0x807: 0x0008, 0x808: 0x0008, 0x809: 0x0008, 0x80a: 0x0008, 0x80b: 0x0008, + 0x80c: 0x0008, 0x80d: 0x0040, 0x80e: 0x0008, 0x80f: 0x0008, 0x810: 0x0008, 0x811: 0x0040, + 0x812: 0x0008, 0x813: 0x0008, 0x814: 0x0008, 0x815: 0x0008, 0x816: 0x0008, 0x817: 0x0008, + 0x818: 0x0008, 0x819: 0x0008, 0x81a: 0x0008, 0x81b: 0x0008, 0x81c: 0x0008, 0x81d: 0x0008, + 0x81e: 0x0008, 0x81f: 0x0008, 0x820: 0x0008, 0x821: 0x0008, 0x822: 0x0008, 0x823: 0x0008, + 0x824: 0x0008, 0x825: 0x0008, 0x826: 0x0008, 0x827: 0x0008, 0x828: 0x0008, 0x829: 0x0040, + 0x82a: 0x0008, 0x82b: 0x0008, 0x82c: 0x0008, 0x82d: 0x0008, 0x82e: 0x0008, 0x82f: 0x0008, + 0x830: 0x0008, 0x831: 0x0008, 0x832: 0x0008, 0x833: 0x0008, 0x834: 0x0040, 0x835: 0x0008, + 0x836: 0x0008, 0x837: 0x0008, 0x838: 0x0008, 0x839: 0x0008, 0x83a: 0x0040, 0x83b: 0x0040, + 0x83c: 0x3308, 0x83d: 0x0008, 0x83e: 0x3008, 0x83f: 0x3308, + // Block 0x21, offset 0x840 + 0x840: 0x3008, 0x841: 0x3008, 0x842: 0x3008, 0x843: 0x3008, 0x844: 0x3008, 0x845: 0x0040, + 0x846: 0x3308, 0x847: 0x3008, 0x848: 0x3008, 0x849: 0x0040, 0x84a: 0x3008, 0x84b: 0x3008, + 0x84c: 0x3308, 0x84d: 0x3b08, 0x84e: 0x0040, 0x84f: 0x0040, 0x850: 0x0040, 0x851: 0x0040, + 0x852: 0x0040, 0x853: 0x0040, 0x854: 0x0040, 0x855: 0x3008, 0x856: 0x3008, 0x857: 0x0040, + 0x858: 0x0040, 0x859: 0x0040, 0x85a: 0x0040, 0x85b: 0x0040, 0x85c: 0x0040, 0x85d: 0x0040, + 0x85e: 0x0008, 0x85f: 0x0040, 0x860: 0x0008, 0x861: 0x0008, 0x862: 0x3308, 0x863: 0x3308, + 0x864: 0x0040, 0x865: 0x0040, 0x866: 0x0008, 0x867: 0x0008, 0x868: 0x0008, 0x869: 0x0008, + 0x86a: 0x0008, 0x86b: 0x0008, 0x86c: 0x0008, 0x86d: 0x0008, 0x86e: 0x0008, 0x86f: 0x0008, + 0x870: 0x0040, 0x871: 0x0008, 0x872: 0x0008, 0x873: 0x0040, 0x874: 0x0040, 0x875: 0x0040, + 0x876: 0x0040, 0x877: 0x0040, 0x878: 0x0040, 0x879: 0x0040, 0x87a: 0x0040, 0x87b: 0x0040, + 0x87c: 0x0040, 0x87d: 0x0040, 0x87e: 0x0040, 0x87f: 0x0040, + // Block 0x22, offset 0x880 + 0x880: 0x3008, 0x881: 0x3308, 0x882: 0x3308, 0x883: 0x3308, 0x884: 0x3308, 0x885: 0x0040, + 0x886: 0x3008, 0x887: 0x3008, 0x888: 0x3008, 0x889: 0x0040, 0x88a: 0x3008, 0x88b: 0x3008, + 0x88c: 0x3008, 0x88d: 0x3b08, 0x88e: 0x0008, 0x88f: 0x0018, 0x890: 0x0040, 0x891: 0x0040, + 0x892: 0x0040, 0x893: 0x0040, 0x894: 0x0008, 0x895: 0x0008, 0x896: 0x0008, 0x897: 0x3008, + 0x898: 0x0018, 0x899: 0x0018, 0x89a: 0x0018, 0x89b: 0x0018, 0x89c: 0x0018, 0x89d: 0x0018, + 0x89e: 0x0018, 0x89f: 0x0008, 0x8a0: 0x0008, 0x8a1: 0x0008, 0x8a2: 0x3308, 0x8a3: 0x3308, + 0x8a4: 0x0040, 0x8a5: 0x0040, 0x8a6: 0x0008, 0x8a7: 0x0008, 0x8a8: 0x0008, 0x8a9: 0x0008, + 0x8aa: 0x0008, 0x8ab: 0x0008, 0x8ac: 0x0008, 0x8ad: 0x0008, 0x8ae: 0x0008, 0x8af: 0x0008, + 0x8b0: 0x0018, 0x8b1: 0x0018, 0x8b2: 0x0018, 0x8b3: 0x0018, 0x8b4: 0x0018, 0x8b5: 0x0018, + 0x8b6: 0x0018, 0x8b7: 0x0018, 0x8b8: 0x0018, 0x8b9: 0x0018, 0x8ba: 0x0008, 0x8bb: 0x0008, + 0x8bc: 0x0008, 0x8bd: 0x0008, 0x8be: 0x0008, 0x8bf: 0x0008, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x0040, 0x8c1: 0x0008, 0x8c2: 0x0008, 0x8c3: 0x0040, 0x8c4: 0x0008, 0x8c5: 0x0040, + 0x8c6: 0x0040, 0x8c7: 0x0008, 0x8c8: 0x0008, 0x8c9: 0x0040, 0x8ca: 0x0008, 0x8cb: 0x0040, + 0x8cc: 0x0040, 0x8cd: 0x0008, 0x8ce: 0x0040, 0x8cf: 0x0040, 0x8d0: 0x0040, 0x8d1: 0x0040, + 0x8d2: 0x0040, 0x8d3: 0x0040, 0x8d4: 0x0008, 0x8d5: 0x0008, 0x8d6: 0x0008, 0x8d7: 0x0008, + 0x8d8: 0x0040, 0x8d9: 0x0008, 0x8da: 0x0008, 0x8db: 0x0008, 0x8dc: 0x0008, 0x8dd: 0x0008, + 0x8de: 0x0008, 0x8df: 0x0008, 0x8e0: 0x0040, 0x8e1: 0x0008, 0x8e2: 0x0008, 0x8e3: 0x0008, + 0x8e4: 0x0040, 0x8e5: 0x0008, 0x8e6: 0x0040, 0x8e7: 0x0008, 0x8e8: 0x0040, 0x8e9: 0x0040, + 0x8ea: 0x0008, 0x8eb: 0x0008, 0x8ec: 0x0040, 0x8ed: 0x0008, 0x8ee: 0x0008, 0x8ef: 0x0008, + 0x8f0: 0x0008, 0x8f1: 0x3308, 0x8f2: 0x0008, 0x8f3: 0x0929, 0x8f4: 0x3308, 0x8f5: 0x3308, + 0x8f6: 0x3308, 0x8f7: 0x3308, 0x8f8: 0x3308, 0x8f9: 0x3308, 0x8fa: 0x0040, 0x8fb: 0x3308, + 0x8fc: 0x3308, 0x8fd: 0x0008, 0x8fe: 0x0040, 0x8ff: 0x0040, + // Block 0x24, offset 0x900 + 0x900: 0x0008, 0x901: 0x0008, 0x902: 0x0008, 0x903: 0x09d1, 0x904: 0x0008, 0x905: 0x0008, + 0x906: 0x0008, 0x907: 0x0008, 0x908: 0x0040, 0x909: 0x0008, 0x90a: 0x0008, 0x90b: 0x0008, + 0x90c: 0x0008, 0x90d: 0x0a09, 0x90e: 0x0008, 0x90f: 0x0008, 0x910: 0x0008, 0x911: 0x0008, + 0x912: 0x0a41, 0x913: 0x0008, 0x914: 0x0008, 0x915: 0x0008, 0x916: 0x0008, 0x917: 0x0a79, + 0x918: 0x0008, 0x919: 0x0008, 0x91a: 0x0008, 0x91b: 0x0008, 0x91c: 0x0ab1, 0x91d: 0x0008, + 0x91e: 0x0008, 0x91f: 0x0008, 0x920: 0x0008, 0x921: 0x0008, 0x922: 0x0008, 0x923: 0x0008, + 0x924: 0x0008, 0x925: 0x0008, 0x926: 0x0008, 0x927: 0x0008, 0x928: 0x0008, 0x929: 0x0ae9, + 0x92a: 0x0008, 0x92b: 0x0008, 0x92c: 0x0008, 0x92d: 0x0040, 0x92e: 0x0040, 0x92f: 0x0040, + 0x930: 0x0040, 0x931: 0x3308, 0x932: 0x3308, 0x933: 0x0b21, 0x934: 0x3308, 0x935: 0x0b59, + 0x936: 0x0b91, 0x937: 0x0bc9, 0x938: 0x0c19, 0x939: 0x0c51, 0x93a: 0x3308, 0x93b: 0x3308, + 0x93c: 0x3308, 0x93d: 0x3308, 0x93e: 0x3308, 0x93f: 0x3008, + // Block 0x25, offset 0x940 + 0x940: 0x3308, 0x941: 0x0ca1, 0x942: 0x3308, 0x943: 0x3308, 0x944: 0x3b08, 0x945: 0x0018, + 0x946: 0x3308, 0x947: 0x3308, 0x948: 0x0008, 0x949: 0x0008, 0x94a: 0x0008, 0x94b: 0x0008, + 0x94c: 0x0008, 0x94d: 0x3308, 0x94e: 0x3308, 0x94f: 0x3308, 0x950: 0x3308, 0x951: 0x3308, + 0x952: 0x3308, 0x953: 0x0cd9, 0x954: 0x3308, 0x955: 0x3308, 0x956: 0x3308, 0x957: 0x3308, + 0x958: 0x0040, 0x959: 0x3308, 0x95a: 0x3308, 0x95b: 0x3308, 0x95c: 0x3308, 0x95d: 0x0d11, + 0x95e: 0x3308, 0x95f: 0x3308, 0x960: 0x3308, 0x961: 0x3308, 0x962: 0x0d49, 0x963: 0x3308, + 0x964: 0x3308, 0x965: 0x3308, 0x966: 0x3308, 0x967: 0x0d81, 0x968: 0x3308, 0x969: 0x3308, + 0x96a: 0x3308, 0x96b: 0x3308, 0x96c: 0x0db9, 0x96d: 0x3308, 0x96e: 0x3308, 0x96f: 0x3308, + 0x970: 0x3308, 0x971: 0x3308, 0x972: 0x3308, 0x973: 0x3308, 0x974: 0x3308, 0x975: 0x3308, + 0x976: 0x3308, 0x977: 0x3308, 0x978: 0x3308, 0x979: 0x0df1, 0x97a: 0x3308, 0x97b: 0x3308, + 0x97c: 0x3308, 0x97d: 0x0040, 0x97e: 0x0018, 0x97f: 0x0018, + // Block 0x26, offset 0x980 + 0x980: 0x0008, 0x981: 0x0008, 0x982: 0x0008, 0x983: 0x0008, 0x984: 0x0008, 0x985: 0x0008, + 0x986: 0x0008, 0x987: 0x0008, 0x988: 0x0008, 0x989: 0x0008, 0x98a: 0x0008, 0x98b: 0x0008, + 0x98c: 0x0008, 0x98d: 0x0008, 0x98e: 0x0008, 0x98f: 0x0008, 0x990: 0x0008, 0x991: 0x0008, + 0x992: 0x0008, 0x993: 0x0008, 0x994: 0x0008, 0x995: 0x0008, 0x996: 0x0008, 0x997: 0x0008, + 0x998: 0x0008, 0x999: 0x0008, 0x99a: 0x0008, 0x99b: 0x0008, 0x99c: 0x0008, 0x99d: 0x0008, + 0x99e: 0x0008, 0x99f: 0x0008, 0x9a0: 0x0008, 0x9a1: 0x0008, 0x9a2: 0x0008, 0x9a3: 0x0008, + 0x9a4: 0x0008, 0x9a5: 0x0008, 0x9a6: 0x0008, 0x9a7: 0x0008, 0x9a8: 0x0008, 0x9a9: 0x0008, + 0x9aa: 0x0008, 0x9ab: 0x0008, 0x9ac: 0x0039, 0x9ad: 0x0ed1, 0x9ae: 0x0ee9, 0x9af: 0x0008, + 0x9b0: 0x0ef9, 0x9b1: 0x0f09, 0x9b2: 0x0f19, 0x9b3: 0x0f31, 0x9b4: 0x0249, 0x9b5: 0x0f41, + 0x9b6: 0x0259, 0x9b7: 0x0f51, 0x9b8: 0x0359, 0x9b9: 0x0f61, 0x9ba: 0x0f71, 0x9bb: 0x0008, + 0x9bc: 0x00d9, 0x9bd: 0x0f81, 0x9be: 0x0f99, 0x9bf: 0x0269, + // Block 0x27, offset 0x9c0 + 0x9c0: 0x0fa9, 0x9c1: 0x0fb9, 0x9c2: 0x0279, 0x9c3: 0x0039, 0x9c4: 0x0fc9, 0x9c5: 0x0fe1, + 0x9c6: 0x059d, 0x9c7: 0x0ee9, 0x9c8: 0x0ef9, 0x9c9: 0x0f09, 0x9ca: 0x0ff9, 0x9cb: 0x1011, + 0x9cc: 0x1029, 0x9cd: 0x0f31, 0x9ce: 0x0008, 0x9cf: 0x0f51, 0x9d0: 0x0f61, 0x9d1: 0x1041, + 0x9d2: 0x00d9, 0x9d3: 0x1059, 0x9d4: 0x05b5, 0x9d5: 0x05b5, 0x9d6: 0x0f99, 0x9d7: 0x0fa9, + 0x9d8: 0x0fb9, 0x9d9: 0x059d, 0x9da: 0x1071, 0x9db: 0x1089, 0x9dc: 0x05cd, 0x9dd: 0x1099, + 0x9de: 0x10b1, 0x9df: 0x10c9, 0x9e0: 0x10e1, 0x9e1: 0x10f9, 0x9e2: 0x0f41, 0x9e3: 0x0269, + 0x9e4: 0x0fb9, 0x9e5: 0x1089, 0x9e6: 0x1099, 0x9e7: 0x10b1, 0x9e8: 0x1111, 0x9e9: 0x10e1, + 0x9ea: 0x10f9, 0x9eb: 0x0008, 0x9ec: 0x0008, 0x9ed: 0x0008, 0x9ee: 0x0008, 0x9ef: 0x0008, + 0x9f0: 0x0008, 0x9f1: 0x0008, 0x9f2: 0x0008, 0x9f3: 0x0008, 0x9f4: 0x0008, 0x9f5: 0x0008, + 0x9f6: 0x0008, 0x9f7: 0x0008, 0x9f8: 0x1129, 0x9f9: 0x0008, 0x9fa: 0x0008, 0x9fb: 0x0008, + 0x9fc: 0x0008, 0x9fd: 0x0008, 0x9fe: 0x0008, 0x9ff: 0x0008, + // Block 0x28, offset 0xa00 + 0xa00: 0x0008, 0xa01: 0x0008, 0xa02: 0x0008, 0xa03: 0x0008, 0xa04: 0x0008, 0xa05: 0x0008, + 0xa06: 0x0008, 0xa07: 0x0008, 0xa08: 0x0008, 0xa09: 0x0008, 0xa0a: 0x0008, 0xa0b: 0x0008, + 0xa0c: 0x0008, 0xa0d: 0x0008, 0xa0e: 0x0008, 0xa0f: 0x0008, 0xa10: 0x0008, 0xa11: 0x0008, + 0xa12: 0x0008, 0xa13: 0x0008, 0xa14: 0x0008, 0xa15: 0x0008, 0xa16: 0x0008, 0xa17: 0x0008, + 0xa18: 0x0008, 0xa19: 0x0008, 0xa1a: 0x0008, 0xa1b: 0x1141, 0xa1c: 0x1159, 0xa1d: 0x1169, + 0xa1e: 0x1181, 0xa1f: 0x1029, 0xa20: 0x1199, 0xa21: 0x11a9, 0xa22: 0x11c1, 0xa23: 0x11d9, + 0xa24: 0x11f1, 0xa25: 0x1209, 0xa26: 0x1221, 0xa27: 0x05e5, 0xa28: 0x1239, 0xa29: 0x1251, + 0xa2a: 0xe17d, 0xa2b: 0x1269, 0xa2c: 0x1281, 0xa2d: 0x1299, 0xa2e: 0x12b1, 0xa2f: 0x12c9, + 0xa30: 0x12e1, 0xa31: 0x12f9, 0xa32: 0x1311, 0xa33: 0x1329, 0xa34: 0x1341, 0xa35: 0x1359, + 0xa36: 0x1371, 0xa37: 0x1389, 0xa38: 0x05fd, 0xa39: 0x13a1, 0xa3a: 0x13b9, 0xa3b: 0x13d1, + 0xa3c: 0x13e1, 0xa3d: 0x13f9, 0xa3e: 0x1411, 0xa3f: 0x1429, + // Block 0x29, offset 0xa40 + 0xa40: 0xe00d, 0xa41: 0x0008, 0xa42: 0xe00d, 0xa43: 0x0008, 0xa44: 0xe00d, 0xa45: 0x0008, + 0xa46: 0xe00d, 0xa47: 0x0008, 0xa48: 0xe00d, 0xa49: 0x0008, 0xa4a: 0xe00d, 0xa4b: 0x0008, + 0xa4c: 0xe00d, 0xa4d: 0x0008, 0xa4e: 0xe00d, 0xa4f: 0x0008, 0xa50: 0xe00d, 0xa51: 0x0008, + 0xa52: 0xe00d, 0xa53: 0x0008, 0xa54: 0xe00d, 0xa55: 0x0008, 0xa56: 0xe00d, 0xa57: 0x0008, + 0xa58: 0xe00d, 0xa59: 0x0008, 0xa5a: 0xe00d, 0xa5b: 0x0008, 0xa5c: 0xe00d, 0xa5d: 0x0008, + 0xa5e: 0xe00d, 0xa5f: 0x0008, 0xa60: 0xe00d, 0xa61: 0x0008, 0xa62: 0xe00d, 0xa63: 0x0008, + 0xa64: 0xe00d, 0xa65: 0x0008, 0xa66: 0xe00d, 0xa67: 0x0008, 0xa68: 0xe00d, 0xa69: 0x0008, + 0xa6a: 0xe00d, 0xa6b: 0x0008, 0xa6c: 0xe00d, 0xa6d: 0x0008, 0xa6e: 0xe00d, 0xa6f: 0x0008, + 0xa70: 0xe00d, 0xa71: 0x0008, 0xa72: 0xe00d, 0xa73: 0x0008, 0xa74: 0xe00d, 0xa75: 0x0008, + 0xa76: 0xe00d, 0xa77: 0x0008, 0xa78: 0xe00d, 0xa79: 0x0008, 0xa7a: 0xe00d, 0xa7b: 0x0008, + 0xa7c: 0xe00d, 0xa7d: 0x0008, 0xa7e: 0xe00d, 0xa7f: 0x0008, + // Block 0x2a, offset 0xa80 + 0xa80: 0xe00d, 0xa81: 0x0008, 0xa82: 0xe00d, 0xa83: 0x0008, 0xa84: 0xe00d, 0xa85: 0x0008, + 0xa86: 0xe00d, 0xa87: 0x0008, 0xa88: 0xe00d, 0xa89: 0x0008, 0xa8a: 0xe00d, 0xa8b: 0x0008, + 0xa8c: 0xe00d, 0xa8d: 0x0008, 0xa8e: 0xe00d, 0xa8f: 0x0008, 0xa90: 0xe00d, 0xa91: 0x0008, + 0xa92: 0xe00d, 0xa93: 0x0008, 0xa94: 0xe00d, 0xa95: 0x0008, 0xa96: 0x0008, 0xa97: 0x0008, + 0xa98: 0x0008, 0xa99: 0x0008, 0xa9a: 0x0615, 0xa9b: 0x0635, 0xa9c: 0x0008, 0xa9d: 0x0008, + 0xa9e: 0x1441, 0xa9f: 0x0008, 0xaa0: 0xe00d, 0xaa1: 0x0008, 0xaa2: 0xe00d, 0xaa3: 0x0008, + 0xaa4: 0xe00d, 0xaa5: 0x0008, 0xaa6: 0xe00d, 0xaa7: 0x0008, 0xaa8: 0xe00d, 0xaa9: 0x0008, + 0xaaa: 0xe00d, 0xaab: 0x0008, 0xaac: 0xe00d, 0xaad: 0x0008, 0xaae: 0xe00d, 0xaaf: 0x0008, + 0xab0: 0xe00d, 0xab1: 0x0008, 0xab2: 0xe00d, 0xab3: 0x0008, 0xab4: 0xe00d, 0xab5: 0x0008, + 0xab6: 0xe00d, 0xab7: 0x0008, 0xab8: 0xe00d, 0xab9: 0x0008, 0xaba: 0xe00d, 0xabb: 0x0008, + 0xabc: 0xe00d, 0xabd: 0x0008, 0xabe: 0xe00d, 0xabf: 0x0008, + // Block 0x2b, offset 0xac0 + 0xac0: 0x0008, 0xac1: 0x0008, 0xac2: 0x0008, 0xac3: 0x0008, 0xac4: 0x0008, 0xac5: 0x0008, + 0xac6: 0x0040, 0xac7: 0x0040, 0xac8: 0xe045, 0xac9: 0xe045, 0xaca: 0xe045, 0xacb: 0xe045, + 0xacc: 0xe045, 0xacd: 0xe045, 0xace: 0x0040, 0xacf: 0x0040, 0xad0: 0x0008, 0xad1: 0x0008, + 0xad2: 0x0008, 0xad3: 0x0008, 0xad4: 0x0008, 0xad5: 0x0008, 0xad6: 0x0008, 0xad7: 0x0008, + 0xad8: 0x0040, 0xad9: 0xe045, 0xada: 0x0040, 0xadb: 0xe045, 0xadc: 0x0040, 0xadd: 0xe045, + 0xade: 0x0040, 0xadf: 0xe045, 0xae0: 0x0008, 0xae1: 0x0008, 0xae2: 0x0008, 0xae3: 0x0008, + 0xae4: 0x0008, 0xae5: 0x0008, 0xae6: 0x0008, 0xae7: 0x0008, 0xae8: 0xe045, 0xae9: 0xe045, + 0xaea: 0xe045, 0xaeb: 0xe045, 0xaec: 0xe045, 0xaed: 0xe045, 0xaee: 0xe045, 0xaef: 0xe045, + 0xaf0: 0x0008, 0xaf1: 0x1459, 0xaf2: 0x0008, 0xaf3: 0x1471, 0xaf4: 0x0008, 0xaf5: 0x1489, + 0xaf6: 0x0008, 0xaf7: 0x14a1, 0xaf8: 0x0008, 0xaf9: 0x14b9, 0xafa: 0x0008, 0xafb: 0x14d1, + 0xafc: 0x0008, 0xafd: 0x14e9, 0xafe: 0x0040, 0xaff: 0x0040, + // Block 0x2c, offset 0xb00 + 0xb00: 0x1501, 0xb01: 0x1531, 0xb02: 0x1561, 0xb03: 0x1591, 0xb04: 0x15c1, 0xb05: 0x15f1, + 0xb06: 0x1621, 0xb07: 0x1651, 0xb08: 0x1501, 0xb09: 0x1531, 0xb0a: 0x1561, 0xb0b: 0x1591, + 0xb0c: 0x15c1, 0xb0d: 0x15f1, 0xb0e: 0x1621, 0xb0f: 0x1651, 0xb10: 0x1681, 0xb11: 0x16b1, + 0xb12: 0x16e1, 0xb13: 0x1711, 0xb14: 0x1741, 0xb15: 0x1771, 0xb16: 0x17a1, 0xb17: 0x17d1, + 0xb18: 0x1681, 0xb19: 0x16b1, 0xb1a: 0x16e1, 0xb1b: 0x1711, 0xb1c: 0x1741, 0xb1d: 0x1771, + 0xb1e: 0x17a1, 0xb1f: 0x17d1, 0xb20: 0x1801, 0xb21: 0x1831, 0xb22: 0x1861, 0xb23: 0x1891, + 0xb24: 0x18c1, 0xb25: 0x18f1, 0xb26: 0x1921, 0xb27: 0x1951, 0xb28: 0x1801, 0xb29: 0x1831, + 0xb2a: 0x1861, 0xb2b: 0x1891, 0xb2c: 0x18c1, 0xb2d: 0x18f1, 0xb2e: 0x1921, 0xb2f: 0x1951, + 0xb30: 0x0008, 0xb31: 0x0008, 0xb32: 0x1981, 0xb33: 0x19b1, 0xb34: 0x19d9, 0xb35: 0x0040, + 0xb36: 0x0008, 0xb37: 0x1a01, 0xb38: 0xe045, 0xb39: 0xe045, 0xb3a: 0x064d, 0xb3b: 0x1459, + 0xb3c: 0x19b1, 0xb3d: 0x0666, 0xb3e: 0x1a31, 0xb3f: 0x0686, + // Block 0x2d, offset 0xb40 + 0xb40: 0x06a6, 0xb41: 0x1a4a, 0xb42: 0x1a79, 0xb43: 0x1aa9, 0xb44: 0x1ad1, 0xb45: 0x0040, + 0xb46: 0x0008, 0xb47: 0x1af9, 0xb48: 0x06c5, 0xb49: 0x1471, 0xb4a: 0x06dd, 0xb4b: 0x1489, + 0xb4c: 0x1aa9, 0xb4d: 0x1b2a, 0xb4e: 0x1b5a, 0xb4f: 0x1b8a, 0xb50: 0x0008, 0xb51: 0x0008, + 0xb52: 0x0008, 0xb53: 0x1bb9, 0xb54: 0x0040, 0xb55: 0x0040, 0xb56: 0x0008, 0xb57: 0x0008, + 0xb58: 0xe045, 0xb59: 0xe045, 0xb5a: 0x06f5, 0xb5b: 0x14a1, 0xb5c: 0x0040, 0xb5d: 0x1bd2, + 0xb5e: 0x1c02, 0xb5f: 0x1c32, 0xb60: 0x0008, 0xb61: 0x0008, 0xb62: 0x0008, 0xb63: 0x1c61, + 0xb64: 0x0008, 0xb65: 0x0008, 0xb66: 0x0008, 0xb67: 0x0008, 0xb68: 0xe045, 0xb69: 0xe045, + 0xb6a: 0x070d, 0xb6b: 0x14d1, 0xb6c: 0xe04d, 0xb6d: 0x1c7a, 0xb6e: 0x03d2, 0xb6f: 0x1caa, + 0xb70: 0x0040, 0xb71: 0x0040, 0xb72: 0x1cb9, 0xb73: 0x1ce9, 0xb74: 0x1d11, 0xb75: 0x0040, + 0xb76: 0x0008, 0xb77: 0x1d39, 0xb78: 0x0725, 0xb79: 0x14b9, 0xb7a: 0x0515, 0xb7b: 0x14e9, + 0xb7c: 0x1ce9, 0xb7d: 0x073e, 0xb7e: 0x075e, 0xb7f: 0x0040, + // Block 0x2e, offset 0xb80 + 0xb80: 0x000a, 0xb81: 0x000a, 0xb82: 0x000a, 0xb83: 0x000a, 0xb84: 0x000a, 0xb85: 0x000a, + 0xb86: 0x000a, 0xb87: 0x000a, 0xb88: 0x000a, 0xb89: 0x000a, 0xb8a: 0x000a, 0xb8b: 0x03c0, + 0xb8c: 0x0003, 0xb8d: 0x0003, 0xb8e: 0x0340, 0xb8f: 0x0b40, 0xb90: 0x0018, 0xb91: 0xe00d, + 0xb92: 0x0018, 0xb93: 0x0018, 0xb94: 0x0018, 0xb95: 0x0018, 0xb96: 0x0018, 0xb97: 0x077e, + 0xb98: 0x0018, 0xb99: 0x0018, 0xb9a: 0x0018, 0xb9b: 0x0018, 0xb9c: 0x0018, 0xb9d: 0x0018, + 0xb9e: 0x0018, 0xb9f: 0x0018, 0xba0: 0x0018, 0xba1: 0x0018, 0xba2: 0x0018, 0xba3: 0x0018, + 0xba4: 0x0040, 0xba5: 0x0040, 0xba6: 0x0040, 0xba7: 0x0018, 0xba8: 0x0040, 0xba9: 0x0040, + 0xbaa: 0x0340, 0xbab: 0x0340, 0xbac: 0x0340, 0xbad: 0x0340, 0xbae: 0x0340, 0xbaf: 0x000a, + 0xbb0: 0x0018, 0xbb1: 0x0018, 0xbb2: 0x0018, 0xbb3: 0x1d69, 0xbb4: 0x1da1, 0xbb5: 0x0018, + 0xbb6: 0x1df1, 0xbb7: 0x1e29, 0xbb8: 0x0018, 0xbb9: 0x0018, 0xbba: 0x0018, 0xbbb: 0x0018, + 0xbbc: 0x1e7a, 0xbbd: 0x0018, 0xbbe: 0x079e, 0xbbf: 0x0018, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x0018, 0xbc1: 0x0018, 0xbc2: 0x0018, 0xbc3: 0x0018, 0xbc4: 0x0018, 0xbc5: 0x0018, + 0xbc6: 0x0018, 0xbc7: 0x1e92, 0xbc8: 0x1eaa, 0xbc9: 0x1ec2, 0xbca: 0x0018, 0xbcb: 0x0018, + 0xbcc: 0x0018, 0xbcd: 0x0018, 0xbce: 0x0018, 0xbcf: 0x0018, 0xbd0: 0x0018, 0xbd1: 0x0018, + 0xbd2: 0x0018, 0xbd3: 0x0018, 0xbd4: 0x0018, 0xbd5: 0x0018, 0xbd6: 0x0018, 0xbd7: 0x1ed9, + 0xbd8: 0x0018, 0xbd9: 0x0018, 0xbda: 0x0018, 0xbdb: 0x0018, 0xbdc: 0x0018, 0xbdd: 0x0018, + 0xbde: 0x0018, 0xbdf: 0x000a, 0xbe0: 0x03c0, 0xbe1: 0x0340, 0xbe2: 0x0340, 0xbe3: 0x0340, + 0xbe4: 0x03c0, 0xbe5: 0x0040, 0xbe6: 0x0040, 0xbe7: 0x0040, 0xbe8: 0x0040, 0xbe9: 0x0040, + 0xbea: 0x0340, 0xbeb: 0x0340, 0xbec: 0x0340, 0xbed: 0x0340, 0xbee: 0x0340, 0xbef: 0x0340, + 0xbf0: 0x1f41, 0xbf1: 0x0f41, 0xbf2: 0x0040, 0xbf3: 0x0040, 0xbf4: 0x1f51, 0xbf5: 0x1f61, + 0xbf6: 0x1f71, 0xbf7: 0x1f81, 0xbf8: 0x1f91, 0xbf9: 0x1fa1, 0xbfa: 0x1fb2, 0xbfb: 0x07bd, + 0xbfc: 0x1fc2, 0xbfd: 0x1fd2, 0xbfe: 0x1fe2, 0xbff: 0x0f71, + // Block 0x30, offset 0xc00 + 0xc00: 0x1f41, 0xc01: 0x00c9, 0xc02: 0x0069, 0xc03: 0x0079, 0xc04: 0x1f51, 0xc05: 0x1f61, + 0xc06: 0x1f71, 0xc07: 0x1f81, 0xc08: 0x1f91, 0xc09: 0x1fa1, 0xc0a: 0x1fb2, 0xc0b: 0x07d5, + 0xc0c: 0x1fc2, 0xc0d: 0x1fd2, 0xc0e: 0x1fe2, 0xc0f: 0x0040, 0xc10: 0x0039, 0xc11: 0x0f09, + 0xc12: 0x00d9, 0xc13: 0x0369, 0xc14: 0x0ff9, 0xc15: 0x0249, 0xc16: 0x0f51, 0xc17: 0x0359, + 0xc18: 0x0f61, 0xc19: 0x0f71, 0xc1a: 0x0f99, 0xc1b: 0x01d9, 0xc1c: 0x0fa9, 0xc1d: 0x0040, + 0xc1e: 0x0040, 0xc1f: 0x0040, 0xc20: 0x0018, 0xc21: 0x0018, 0xc22: 0x0018, 0xc23: 0x0018, + 0xc24: 0x0018, 0xc25: 0x0018, 0xc26: 0x0018, 0xc27: 0x0018, 0xc28: 0x1ff1, 0xc29: 0x0018, + 0xc2a: 0x0018, 0xc2b: 0x0018, 0xc2c: 0x0018, 0xc2d: 0x0018, 0xc2e: 0x0018, 0xc2f: 0x0018, + 0xc30: 0x0018, 0xc31: 0x0018, 0xc32: 0x0018, 0xc33: 0x0018, 0xc34: 0x0018, 0xc35: 0x0018, + 0xc36: 0x0018, 0xc37: 0x0018, 0xc38: 0x0018, 0xc39: 0x0018, 0xc3a: 0x0018, 0xc3b: 0x0018, + 0xc3c: 0x0018, 0xc3d: 0x0018, 0xc3e: 0x0018, 0xc3f: 0x0040, + // Block 0x31, offset 0xc40 + 0xc40: 0x07ee, 0xc41: 0x080e, 0xc42: 0x1159, 0xc43: 0x082d, 0xc44: 0x0018, 0xc45: 0x084e, + 0xc46: 0x086e, 0xc47: 0x1011, 0xc48: 0x0018, 0xc49: 0x088d, 0xc4a: 0x0f31, 0xc4b: 0x0249, + 0xc4c: 0x0249, 0xc4d: 0x0249, 0xc4e: 0x0249, 0xc4f: 0x2009, 0xc50: 0x0f41, 0xc51: 0x0f41, + 0xc52: 0x0359, 0xc53: 0x0359, 0xc54: 0x0018, 0xc55: 0x0f71, 0xc56: 0x2021, 0xc57: 0x0018, + 0xc58: 0x0018, 0xc59: 0x0f99, 0xc5a: 0x2039, 0xc5b: 0x0269, 0xc5c: 0x0269, 0xc5d: 0x0269, + 0xc5e: 0x0018, 0xc5f: 0x0018, 0xc60: 0x2049, 0xc61: 0x08ad, 0xc62: 0x2061, 0xc63: 0x0018, + 0xc64: 0x13d1, 0xc65: 0x0018, 0xc66: 0x2079, 0xc67: 0x0018, 0xc68: 0x13d1, 0xc69: 0x0018, + 0xc6a: 0x0f51, 0xc6b: 0x2091, 0xc6c: 0x0ee9, 0xc6d: 0x1159, 0xc6e: 0x0018, 0xc6f: 0x0f09, + 0xc70: 0x0f09, 0xc71: 0x1199, 0xc72: 0x0040, 0xc73: 0x0f61, 0xc74: 0x00d9, 0xc75: 0x20a9, + 0xc76: 0x20c1, 0xc77: 0x20d9, 0xc78: 0x20f1, 0xc79: 0x0f41, 0xc7a: 0x0018, 0xc7b: 0x08cd, + 0xc7c: 0x2109, 0xc7d: 0x10b1, 0xc7e: 0x10b1, 0xc7f: 0x2109, + // Block 0x32, offset 0xc80 + 0xc80: 0x08ed, 0xc81: 0x0018, 0xc82: 0x0018, 0xc83: 0x0018, 0xc84: 0x0018, 0xc85: 0x0ef9, + 0xc86: 0x0ef9, 0xc87: 0x0f09, 0xc88: 0x0f41, 0xc89: 0x0259, 0xc8a: 0x0018, 0xc8b: 0x0018, + 0xc8c: 0x0018, 0xc8d: 0x0018, 0xc8e: 0x0008, 0xc8f: 0x0018, 0xc90: 0x2121, 0xc91: 0x2151, + 0xc92: 0x2181, 0xc93: 0x21b9, 0xc94: 0x21e9, 0xc95: 0x2219, 0xc96: 0x2249, 0xc97: 0x2279, + 0xc98: 0x22a9, 0xc99: 0x22d9, 0xc9a: 0x2309, 0xc9b: 0x2339, 0xc9c: 0x2369, 0xc9d: 0x2399, + 0xc9e: 0x23c9, 0xc9f: 0x23f9, 0xca0: 0x0f41, 0xca1: 0x2421, 0xca2: 0x0905, 0xca3: 0x2439, + 0xca4: 0x1089, 0xca5: 0x2451, 0xca6: 0x0925, 0xca7: 0x2469, 0xca8: 0x2491, 0xca9: 0x0369, + 0xcaa: 0x24a9, 0xcab: 0x0945, 0xcac: 0x0359, 0xcad: 0x1159, 0xcae: 0x0ef9, 0xcaf: 0x0f61, + 0xcb0: 0x0f41, 0xcb1: 0x2421, 0xcb2: 0x0965, 0xcb3: 0x2439, 0xcb4: 0x1089, 0xcb5: 0x2451, + 0xcb6: 0x0985, 0xcb7: 0x2469, 0xcb8: 0x2491, 0xcb9: 0x0369, 0xcba: 0x24a9, 0xcbb: 0x09a5, + 0xcbc: 0x0359, 0xcbd: 0x1159, 0xcbe: 0x0ef9, 0xcbf: 0x0f61, + // Block 0x33, offset 0xcc0 + 0xcc0: 0x0018, 0xcc1: 0x0018, 0xcc2: 0x0018, 0xcc3: 0x0018, 0xcc4: 0x0018, 0xcc5: 0x0018, + 0xcc6: 0x0018, 0xcc7: 0x0018, 0xcc8: 0x0018, 0xcc9: 0x0018, 0xcca: 0x0018, 0xccb: 0x0040, + 0xccc: 0x0040, 0xccd: 0x0040, 0xcce: 0x0040, 0xccf: 0x0040, 0xcd0: 0x0040, 0xcd1: 0x0040, + 0xcd2: 0x0040, 0xcd3: 0x0040, 0xcd4: 0x0040, 0xcd5: 0x0040, 0xcd6: 0x0040, 0xcd7: 0x0040, + 0xcd8: 0x0040, 0xcd9: 0x0040, 0xcda: 0x0040, 0xcdb: 0x0040, 0xcdc: 0x0040, 0xcdd: 0x0040, + 0xcde: 0x0040, 0xcdf: 0x0040, 0xce0: 0x00c9, 0xce1: 0x0069, 0xce2: 0x0079, 0xce3: 0x1f51, + 0xce4: 0x1f61, 0xce5: 0x1f71, 0xce6: 0x1f81, 0xce7: 0x1f91, 0xce8: 0x1fa1, 0xce9: 0x2601, + 0xcea: 0x2619, 0xceb: 0x2631, 0xcec: 0x2649, 0xced: 0x2661, 0xcee: 0x2679, 0xcef: 0x2691, + 0xcf0: 0x26a9, 0xcf1: 0x26c1, 0xcf2: 0x26d9, 0xcf3: 0x26f1, 0xcf4: 0x0a06, 0xcf5: 0x0a26, + 0xcf6: 0x0a46, 0xcf7: 0x0a66, 0xcf8: 0x0a86, 0xcf9: 0x0aa6, 0xcfa: 0x0ac6, 0xcfb: 0x0ae6, + 0xcfc: 0x0b06, 0xcfd: 0x270a, 0xcfe: 0x2732, 0xcff: 0x275a, + // Block 0x34, offset 0xd00 + 0xd00: 0x2782, 0xd01: 0x27aa, 0xd02: 0x27d2, 0xd03: 0x27fa, 0xd04: 0x2822, 0xd05: 0x284a, + 0xd06: 0x2872, 0xd07: 0x289a, 0xd08: 0x0040, 0xd09: 0x0040, 0xd0a: 0x0040, 0xd0b: 0x0040, + 0xd0c: 0x0040, 0xd0d: 0x0040, 0xd0e: 0x0040, 0xd0f: 0x0040, 0xd10: 0x0040, 0xd11: 0x0040, + 0xd12: 0x0040, 0xd13: 0x0040, 0xd14: 0x0040, 0xd15: 0x0040, 0xd16: 0x0040, 0xd17: 0x0040, + 0xd18: 0x0040, 0xd19: 0x0040, 0xd1a: 0x0040, 0xd1b: 0x0040, 0xd1c: 0x0b26, 0xd1d: 0x0b46, + 0xd1e: 0x0b66, 0xd1f: 0x0b86, 0xd20: 0x0ba6, 0xd21: 0x0bc6, 0xd22: 0x0be6, 0xd23: 0x0c06, + 0xd24: 0x0c26, 0xd25: 0x0c46, 0xd26: 0x0c66, 0xd27: 0x0c86, 0xd28: 0x0ca6, 0xd29: 0x0cc6, + 0xd2a: 0x0ce6, 0xd2b: 0x0d06, 0xd2c: 0x0d26, 0xd2d: 0x0d46, 0xd2e: 0x0d66, 0xd2f: 0x0d86, + 0xd30: 0x0da6, 0xd31: 0x0dc6, 0xd32: 0x0de6, 0xd33: 0x0e06, 0xd34: 0x0e26, 0xd35: 0x0e46, + 0xd36: 0x0039, 0xd37: 0x0ee9, 0xd38: 0x1159, 0xd39: 0x0ef9, 0xd3a: 0x0f09, 0xd3b: 0x1199, + 0xd3c: 0x0f31, 0xd3d: 0x0249, 0xd3e: 0x0f41, 0xd3f: 0x0259, + // Block 0x35, offset 0xd40 + 0xd40: 0x0f51, 0xd41: 0x0359, 0xd42: 0x0f61, 0xd43: 0x0f71, 0xd44: 0x00d9, 0xd45: 0x0f99, + 0xd46: 0x2039, 0xd47: 0x0269, 0xd48: 0x01d9, 0xd49: 0x0fa9, 0xd4a: 0x0fb9, 0xd4b: 0x1089, + 0xd4c: 0x0279, 0xd4d: 0x0369, 0xd4e: 0x0289, 0xd4f: 0x13d1, 0xd50: 0x0039, 0xd51: 0x0ee9, + 0xd52: 0x1159, 0xd53: 0x0ef9, 0xd54: 0x0f09, 0xd55: 0x1199, 0xd56: 0x0f31, 0xd57: 0x0249, + 0xd58: 0x0f41, 0xd59: 0x0259, 0xd5a: 0x0f51, 0xd5b: 0x0359, 0xd5c: 0x0f61, 0xd5d: 0x0f71, + 0xd5e: 0x00d9, 0xd5f: 0x0f99, 0xd60: 0x2039, 0xd61: 0x0269, 0xd62: 0x01d9, 0xd63: 0x0fa9, + 0xd64: 0x0fb9, 0xd65: 0x1089, 0xd66: 0x0279, 0xd67: 0x0369, 0xd68: 0x0289, 0xd69: 0x13d1, + 0xd6a: 0x1f41, 0xd6b: 0x0018, 0xd6c: 0x0018, 0xd6d: 0x0018, 0xd6e: 0x0018, 0xd6f: 0x0018, + 0xd70: 0x0018, 0xd71: 0x0018, 0xd72: 0x0018, 0xd73: 0x0018, 0xd74: 0x0018, 0xd75: 0x0018, + 0xd76: 0x0018, 0xd77: 0x0018, 0xd78: 0x0018, 0xd79: 0x0018, 0xd7a: 0x0018, 0xd7b: 0x0018, + 0xd7c: 0x0018, 0xd7d: 0x0018, 0xd7e: 0x0018, 0xd7f: 0x0018, + // Block 0x36, offset 0xd80 + 0xd80: 0x0008, 0xd81: 0x0008, 0xd82: 0x0008, 0xd83: 0x0008, 0xd84: 0x0008, 0xd85: 0x0008, + 0xd86: 0x0008, 0xd87: 0x0008, 0xd88: 0x0008, 0xd89: 0x0008, 0xd8a: 0x0008, 0xd8b: 0x0008, + 0xd8c: 0x0008, 0xd8d: 0x0008, 0xd8e: 0x0008, 0xd8f: 0x0008, 0xd90: 0x0008, 0xd91: 0x0008, + 0xd92: 0x0008, 0xd93: 0x0008, 0xd94: 0x0008, 0xd95: 0x0008, 0xd96: 0x0008, 0xd97: 0x0008, + 0xd98: 0x0008, 0xd99: 0x0008, 0xd9a: 0x0008, 0xd9b: 0x0008, 0xd9c: 0x0008, 0xd9d: 0x0008, + 0xd9e: 0x0008, 0xd9f: 0x0040, 0xda0: 0xe00d, 0xda1: 0x0008, 0xda2: 0x2971, 0xda3: 0x0ebd, + 0xda4: 0x2989, 0xda5: 0x0008, 0xda6: 0x0008, 0xda7: 0xe07d, 0xda8: 0x0008, 0xda9: 0xe01d, + 0xdaa: 0x0008, 0xdab: 0xe03d, 0xdac: 0x0008, 0xdad: 0x0fe1, 0xdae: 0x1281, 0xdaf: 0x0fc9, + 0xdb0: 0x1141, 0xdb1: 0x0008, 0xdb2: 0xe00d, 0xdb3: 0x0008, 0xdb4: 0x0008, 0xdb5: 0xe01d, + 0xdb6: 0x0008, 0xdb7: 0x0008, 0xdb8: 0x0008, 0xdb9: 0x0008, 0xdba: 0x0008, 0xdbb: 0x0008, + 0xdbc: 0x0259, 0xdbd: 0x1089, 0xdbe: 0x29a1, 0xdbf: 0x29b9, + // Block 0x37, offset 0xdc0 + 0xdc0: 0xe00d, 0xdc1: 0x0008, 0xdc2: 0xe00d, 0xdc3: 0x0008, 0xdc4: 0xe00d, 0xdc5: 0x0008, + 0xdc6: 0xe00d, 0xdc7: 0x0008, 0xdc8: 0xe00d, 0xdc9: 0x0008, 0xdca: 0xe00d, 0xdcb: 0x0008, + 0xdcc: 0xe00d, 0xdcd: 0x0008, 0xdce: 0xe00d, 0xdcf: 0x0008, 0xdd0: 0xe00d, 0xdd1: 0x0008, + 0xdd2: 0xe00d, 0xdd3: 0x0008, 0xdd4: 0xe00d, 0xdd5: 0x0008, 0xdd6: 0xe00d, 0xdd7: 0x0008, + 0xdd8: 0xe00d, 0xdd9: 0x0008, 0xdda: 0xe00d, 0xddb: 0x0008, 0xddc: 0xe00d, 0xddd: 0x0008, + 0xdde: 0xe00d, 0xddf: 0x0008, 0xde0: 0xe00d, 0xde1: 0x0008, 0xde2: 0xe00d, 0xde3: 0x0008, + 0xde4: 0x0008, 0xde5: 0x0018, 0xde6: 0x0018, 0xde7: 0x0018, 0xde8: 0x0018, 0xde9: 0x0018, + 0xdea: 0x0018, 0xdeb: 0xe03d, 0xdec: 0x0008, 0xded: 0xe01d, 0xdee: 0x0008, 0xdef: 0x3308, + 0xdf0: 0x3308, 0xdf1: 0x3308, 0xdf2: 0xe00d, 0xdf3: 0x0008, 0xdf4: 0x0040, 0xdf5: 0x0040, + 0xdf6: 0x0040, 0xdf7: 0x0040, 0xdf8: 0x0040, 0xdf9: 0x0018, 0xdfa: 0x0018, 0xdfb: 0x0018, + 0xdfc: 0x0018, 0xdfd: 0x0018, 0xdfe: 0x0018, 0xdff: 0x0018, + // Block 0x38, offset 0xe00 + 0xe00: 0x26fd, 0xe01: 0x271d, 0xe02: 0x273d, 0xe03: 0x275d, 0xe04: 0x277d, 0xe05: 0x279d, + 0xe06: 0x27bd, 0xe07: 0x27dd, 0xe08: 0x27fd, 0xe09: 0x281d, 0xe0a: 0x283d, 0xe0b: 0x285d, + 0xe0c: 0x287d, 0xe0d: 0x289d, 0xe0e: 0x28bd, 0xe0f: 0x28dd, 0xe10: 0x28fd, 0xe11: 0x291d, + 0xe12: 0x293d, 0xe13: 0x295d, 0xe14: 0x297d, 0xe15: 0x299d, 0xe16: 0x0040, 0xe17: 0x0040, + 0xe18: 0x0040, 0xe19: 0x0040, 0xe1a: 0x0040, 0xe1b: 0x0040, 0xe1c: 0x0040, 0xe1d: 0x0040, + 0xe1e: 0x0040, 0xe1f: 0x0040, 0xe20: 0x0040, 0xe21: 0x0040, 0xe22: 0x0040, 0xe23: 0x0040, + 0xe24: 0x0040, 0xe25: 0x0040, 0xe26: 0x0040, 0xe27: 0x0040, 0xe28: 0x0040, 0xe29: 0x0040, + 0xe2a: 0x0040, 0xe2b: 0x0040, 0xe2c: 0x0040, 0xe2d: 0x0040, 0xe2e: 0x0040, 0xe2f: 0x0040, + 0xe30: 0x0040, 0xe31: 0x0040, 0xe32: 0x0040, 0xe33: 0x0040, 0xe34: 0x0040, 0xe35: 0x0040, + 0xe36: 0x0040, 0xe37: 0x0040, 0xe38: 0x0040, 0xe39: 0x0040, 0xe3a: 0x0040, 0xe3b: 0x0040, + 0xe3c: 0x0040, 0xe3d: 0x0040, 0xe3e: 0x0040, 0xe3f: 0x0040, + // Block 0x39, offset 0xe40 + 0xe40: 0x000a, 0xe41: 0x0018, 0xe42: 0x29d1, 0xe43: 0x0018, 0xe44: 0x0018, 0xe45: 0x0008, + 0xe46: 0x0008, 0xe47: 0x0008, 0xe48: 0x0018, 0xe49: 0x0018, 0xe4a: 0x0018, 0xe4b: 0x0018, + 0xe4c: 0x0018, 0xe4d: 0x0018, 0xe4e: 0x0018, 0xe4f: 0x0018, 0xe50: 0x0018, 0xe51: 0x0018, + 0xe52: 0x0018, 0xe53: 0x0018, 0xe54: 0x0018, 0xe55: 0x0018, 0xe56: 0x0018, 0xe57: 0x0018, + 0xe58: 0x0018, 0xe59: 0x0018, 0xe5a: 0x0018, 0xe5b: 0x0018, 0xe5c: 0x0018, 0xe5d: 0x0018, + 0xe5e: 0x0018, 0xe5f: 0x0018, 0xe60: 0x0018, 0xe61: 0x0018, 0xe62: 0x0018, 0xe63: 0x0018, + 0xe64: 0x0018, 0xe65: 0x0018, 0xe66: 0x0018, 0xe67: 0x0018, 0xe68: 0x0018, 0xe69: 0x0018, + 0xe6a: 0x3308, 0xe6b: 0x3308, 0xe6c: 0x3308, 0xe6d: 0x3308, 0xe6e: 0x3018, 0xe6f: 0x3018, + 0xe70: 0x0018, 0xe71: 0x0018, 0xe72: 0x0018, 0xe73: 0x0018, 0xe74: 0x0018, 0xe75: 0x0018, + 0xe76: 0xe125, 0xe77: 0x0018, 0xe78: 0x29bd, 0xe79: 0x29dd, 0xe7a: 0x29fd, 0xe7b: 0x0018, + 0xe7c: 0x0008, 0xe7d: 0x0018, 0xe7e: 0x0018, 0xe7f: 0x0018, + // Block 0x3a, offset 0xe80 + 0xe80: 0x2b3d, 0xe81: 0x2b5d, 0xe82: 0x2b7d, 0xe83: 0x2b9d, 0xe84: 0x2bbd, 0xe85: 0x2bdd, + 0xe86: 0x2bdd, 0xe87: 0x2bdd, 0xe88: 0x2bfd, 0xe89: 0x2bfd, 0xe8a: 0x2bfd, 0xe8b: 0x2bfd, + 0xe8c: 0x2c1d, 0xe8d: 0x2c1d, 0xe8e: 0x2c1d, 0xe8f: 0x2c3d, 0xe90: 0x2c5d, 0xe91: 0x2c5d, + 0xe92: 0x2a7d, 0xe93: 0x2a7d, 0xe94: 0x2c5d, 0xe95: 0x2c5d, 0xe96: 0x2c7d, 0xe97: 0x2c7d, + 0xe98: 0x2c5d, 0xe99: 0x2c5d, 0xe9a: 0x2a7d, 0xe9b: 0x2a7d, 0xe9c: 0x2c5d, 0xe9d: 0x2c5d, + 0xe9e: 0x2c3d, 0xe9f: 0x2c3d, 0xea0: 0x2c9d, 0xea1: 0x2c9d, 0xea2: 0x2cbd, 0xea3: 0x2cbd, + 0xea4: 0x0040, 0xea5: 0x2cdd, 0xea6: 0x2cfd, 0xea7: 0x2d1d, 0xea8: 0x2d1d, 0xea9: 0x2d3d, + 0xeaa: 0x2d5d, 0xeab: 0x2d7d, 0xeac: 0x2d9d, 0xead: 0x2dbd, 0xeae: 0x2ddd, 0xeaf: 0x2dfd, + 0xeb0: 0x2e1d, 0xeb1: 0x2e3d, 0xeb2: 0x2e3d, 0xeb3: 0x2e5d, 0xeb4: 0x2e7d, 0xeb5: 0x2e7d, + 0xeb6: 0x2e9d, 0xeb7: 0x2ebd, 0xeb8: 0x2e5d, 0xeb9: 0x2edd, 0xeba: 0x2efd, 0xebb: 0x2edd, + 0xebc: 0x2e5d, 0xebd: 0x2f1d, 0xebe: 0x2f3d, 0xebf: 0x2f5d, + // Block 0x3b, offset 0xec0 + 0xec0: 0x2f7d, 0xec1: 0x2f9d, 0xec2: 0x2cfd, 0xec3: 0x2cdd, 0xec4: 0x2fbd, 0xec5: 0x2fdd, + 0xec6: 0x2ffd, 0xec7: 0x301d, 0xec8: 0x303d, 0xec9: 0x305d, 0xeca: 0x307d, 0xecb: 0x309d, + 0xecc: 0x30bd, 0xecd: 0x30dd, 0xece: 0x30fd, 0xecf: 0x0040, 0xed0: 0x0018, 0xed1: 0x0018, + 0xed2: 0x311d, 0xed3: 0x313d, 0xed4: 0x315d, 0xed5: 0x317d, 0xed6: 0x319d, 0xed7: 0x31bd, + 0xed8: 0x31dd, 0xed9: 0x31fd, 0xeda: 0x321d, 0xedb: 0x323d, 0xedc: 0x315d, 0xedd: 0x325d, + 0xede: 0x327d, 0xedf: 0x329d, 0xee0: 0x0008, 0xee1: 0x0008, 0xee2: 0x0008, 0xee3: 0x0008, + 0xee4: 0x0008, 0xee5: 0x0008, 0xee6: 0x0008, 0xee7: 0x0008, 0xee8: 0x0008, 0xee9: 0x0008, + 0xeea: 0x0008, 0xeeb: 0x0008, 0xeec: 0x0008, 0xeed: 0x0008, 0xeee: 0x0008, 0xeef: 0x0008, + 0xef0: 0x0008, 0xef1: 0x0008, 0xef2: 0x0008, 0xef3: 0x0008, 0xef4: 0x0008, 0xef5: 0x0008, + 0xef6: 0x0008, 0xef7: 0x0008, 0xef8: 0x0008, 0xef9: 0x0008, 0xefa: 0x0008, 0xefb: 0x0040, + 0xefc: 0x0040, 0xefd: 0x0040, 0xefe: 0x0040, 0xeff: 0x0040, + // Block 0x3c, offset 0xf00 + 0xf00: 0x36a2, 0xf01: 0x36d2, 0xf02: 0x3702, 0xf03: 0x3732, 0xf04: 0x32bd, 0xf05: 0x32dd, + 0xf06: 0x32fd, 0xf07: 0x331d, 0xf08: 0x0018, 0xf09: 0x0018, 0xf0a: 0x0018, 0xf0b: 0x0018, + 0xf0c: 0x0018, 0xf0d: 0x0018, 0xf0e: 0x0018, 0xf0f: 0x0018, 0xf10: 0x333d, 0xf11: 0x3761, + 0xf12: 0x3779, 0xf13: 0x3791, 0xf14: 0x37a9, 0xf15: 0x37c1, 0xf16: 0x37d9, 0xf17: 0x37f1, + 0xf18: 0x3809, 0xf19: 0x3821, 0xf1a: 0x3839, 0xf1b: 0x3851, 0xf1c: 0x3869, 0xf1d: 0x3881, + 0xf1e: 0x3899, 0xf1f: 0x38b1, 0xf20: 0x335d, 0xf21: 0x337d, 0xf22: 0x339d, 0xf23: 0x33bd, + 0xf24: 0x33dd, 0xf25: 0x33dd, 0xf26: 0x33fd, 0xf27: 0x341d, 0xf28: 0x343d, 0xf29: 0x345d, + 0xf2a: 0x347d, 0xf2b: 0x349d, 0xf2c: 0x34bd, 0xf2d: 0x34dd, 0xf2e: 0x34fd, 0xf2f: 0x351d, + 0xf30: 0x353d, 0xf31: 0x355d, 0xf32: 0x357d, 0xf33: 0x359d, 0xf34: 0x35bd, 0xf35: 0x35dd, + 0xf36: 0x35fd, 0xf37: 0x361d, 0xf38: 0x363d, 0xf39: 0x365d, 0xf3a: 0x367d, 0xf3b: 0x369d, + 0xf3c: 0x38c9, 0xf3d: 0x3901, 0xf3e: 0x36bd, 0xf3f: 0x0018, + // Block 0x3d, offset 0xf40 + 0xf40: 0x36dd, 0xf41: 0x36fd, 0xf42: 0x371d, 0xf43: 0x373d, 0xf44: 0x375d, 0xf45: 0x377d, + 0xf46: 0x379d, 0xf47: 0x37bd, 0xf48: 0x37dd, 0xf49: 0x37fd, 0xf4a: 0x381d, 0xf4b: 0x383d, + 0xf4c: 0x385d, 0xf4d: 0x387d, 0xf4e: 0x389d, 0xf4f: 0x38bd, 0xf50: 0x38dd, 0xf51: 0x38fd, + 0xf52: 0x391d, 0xf53: 0x393d, 0xf54: 0x395d, 0xf55: 0x397d, 0xf56: 0x399d, 0xf57: 0x39bd, + 0xf58: 0x39dd, 0xf59: 0x39fd, 0xf5a: 0x3a1d, 0xf5b: 0x3a3d, 0xf5c: 0x3a5d, 0xf5d: 0x3a7d, + 0xf5e: 0x3a9d, 0xf5f: 0x3abd, 0xf60: 0x3add, 0xf61: 0x3afd, 0xf62: 0x3b1d, 0xf63: 0x3b3d, + 0xf64: 0x3b5d, 0xf65: 0x3b7d, 0xf66: 0x127d, 0xf67: 0x3b9d, 0xf68: 0x3bbd, 0xf69: 0x3bdd, + 0xf6a: 0x3bfd, 0xf6b: 0x3c1d, 0xf6c: 0x3c3d, 0xf6d: 0x3c5d, 0xf6e: 0x239d, 0xf6f: 0x3c7d, + 0xf70: 0x3c9d, 0xf71: 0x3939, 0xf72: 0x3951, 0xf73: 0x3969, 0xf74: 0x3981, 0xf75: 0x3999, + 0xf76: 0x39b1, 0xf77: 0x39c9, 0xf78: 0x39e1, 0xf79: 0x39f9, 0xf7a: 0x3a11, 0xf7b: 0x3a29, + 0xf7c: 0x3a41, 0xf7d: 0x3a59, 0xf7e: 0x3a71, 0xf7f: 0x3a89, + // Block 0x3e, offset 0xf80 + 0xf80: 0x3aa1, 0xf81: 0x3ac9, 0xf82: 0x3af1, 0xf83: 0x3b19, 0xf84: 0x3b41, 0xf85: 0x3b69, + 0xf86: 0x3b91, 0xf87: 0x3bb9, 0xf88: 0x3be1, 0xf89: 0x3c09, 0xf8a: 0x3c39, 0xf8b: 0x3c69, + 0xf8c: 0x3c99, 0xf8d: 0x3cbd, 0xf8e: 0x3cb1, 0xf8f: 0x3cdd, 0xf90: 0x3cfd, 0xf91: 0x3d15, + 0xf92: 0x3d2d, 0xf93: 0x3d45, 0xf94: 0x3d5d, 0xf95: 0x3d5d, 0xf96: 0x3d45, 0xf97: 0x3d75, + 0xf98: 0x07bd, 0xf99: 0x3d8d, 0xf9a: 0x3da5, 0xf9b: 0x3dbd, 0xf9c: 0x3dd5, 0xf9d: 0x3ded, + 0xf9e: 0x3e05, 0xf9f: 0x3e1d, 0xfa0: 0x3e35, 0xfa1: 0x3e4d, 0xfa2: 0x3e65, 0xfa3: 0x3e7d, + 0xfa4: 0x3e95, 0xfa5: 0x3e95, 0xfa6: 0x3ead, 0xfa7: 0x3ead, 0xfa8: 0x3ec5, 0xfa9: 0x3ec5, + 0xfaa: 0x3edd, 0xfab: 0x3ef5, 0xfac: 0x3f0d, 0xfad: 0x3f25, 0xfae: 0x3f3d, 0xfaf: 0x3f3d, + 0xfb0: 0x3f55, 0xfb1: 0x3f55, 0xfb2: 0x3f55, 0xfb3: 0x3f6d, 0xfb4: 0x3f85, 0xfb5: 0x3f9d, + 0xfb6: 0x3fb5, 0xfb7: 0x3f9d, 0xfb8: 0x3fcd, 0xfb9: 0x3fe5, 0xfba: 0x3f6d, 0xfbb: 0x3ffd, + 0xfbc: 0x4015, 0xfbd: 0x4015, 0xfbe: 0x4015, 0xfbf: 0x0040, + // Block 0x3f, offset 0xfc0 + 0xfc0: 0x3cc9, 0xfc1: 0x3d31, 0xfc2: 0x3d99, 0xfc3: 0x3e01, 0xfc4: 0x3e51, 0xfc5: 0x3eb9, + 0xfc6: 0x3f09, 0xfc7: 0x3f59, 0xfc8: 0x3fd9, 0xfc9: 0x4041, 0xfca: 0x4091, 0xfcb: 0x40e1, + 0xfcc: 0x4131, 0xfcd: 0x4199, 0xfce: 0x4201, 0xfcf: 0x4251, 0xfd0: 0x42a1, 0xfd1: 0x42d9, + 0xfd2: 0x4329, 0xfd3: 0x4391, 0xfd4: 0x43f9, 0xfd5: 0x4431, 0xfd6: 0x44b1, 0xfd7: 0x4549, + 0xfd8: 0x45c9, 0xfd9: 0x4619, 0xfda: 0x4699, 0xfdb: 0x4719, 0xfdc: 0x4781, 0xfdd: 0x47d1, + 0xfde: 0x4821, 0xfdf: 0x4871, 0xfe0: 0x48d9, 0xfe1: 0x4959, 0xfe2: 0x49c1, 0xfe3: 0x4a11, + 0xfe4: 0x4a61, 0xfe5: 0x4ab1, 0xfe6: 0x4ae9, 0xfe7: 0x4b21, 0xfe8: 0x4b59, 0xfe9: 0x4b91, + 0xfea: 0x4be1, 0xfeb: 0x4c31, 0xfec: 0x4cb1, 0xfed: 0x4d01, 0xfee: 0x4d69, 0xfef: 0x4de9, + 0xff0: 0x4e39, 0xff1: 0x4e71, 0xff2: 0x4ea9, 0xff3: 0x4f29, 0xff4: 0x4f91, 0xff5: 0x5011, + 0xff6: 0x5061, 0xff7: 0x50e1, 0xff8: 0x5119, 0xff9: 0x5169, 0xffa: 0x51b9, 0xffb: 0x5209, + 0xffc: 0x5259, 0xffd: 0x52a9, 0xffe: 0x5311, 0xfff: 0x5361, + // Block 0x40, offset 0x1000 + 0x1000: 0x5399, 0x1001: 0x53e9, 0x1002: 0x5439, 0x1003: 0x5489, 0x1004: 0x54f1, 0x1005: 0x5541, + 0x1006: 0x5591, 0x1007: 0x55e1, 0x1008: 0x5661, 0x1009: 0x56c9, 0x100a: 0x5701, 0x100b: 0x5781, + 0x100c: 0x57b9, 0x100d: 0x5821, 0x100e: 0x5889, 0x100f: 0x58d9, 0x1010: 0x5929, 0x1011: 0x5979, + 0x1012: 0x59e1, 0x1013: 0x5a19, 0x1014: 0x5a69, 0x1015: 0x5ad1, 0x1016: 0x5b09, 0x1017: 0x5b89, + 0x1018: 0x5bd9, 0x1019: 0x5c01, 0x101a: 0x5c29, 0x101b: 0x5c51, 0x101c: 0x5c79, 0x101d: 0x5ca1, + 0x101e: 0x5cc9, 0x101f: 0x5cf1, 0x1020: 0x5d19, 0x1021: 0x5d41, 0x1022: 0x5d69, 0x1023: 0x5d99, + 0x1024: 0x5dc9, 0x1025: 0x5df9, 0x1026: 0x5e29, 0x1027: 0x5e59, 0x1028: 0x5e89, 0x1029: 0x5eb9, + 0x102a: 0x5ee9, 0x102b: 0x5f19, 0x102c: 0x5f49, 0x102d: 0x5f79, 0x102e: 0x5fa9, 0x102f: 0x5fd9, + 0x1030: 0x6009, 0x1031: 0x402d, 0x1032: 0x6039, 0x1033: 0x6051, 0x1034: 0x404d, 0x1035: 0x6069, + 0x1036: 0x6081, 0x1037: 0x6099, 0x1038: 0x406d, 0x1039: 0x406d, 0x103a: 0x60b1, 0x103b: 0x60c9, + 0x103c: 0x6101, 0x103d: 0x6139, 0x103e: 0x6171, 0x103f: 0x61a9, + // Block 0x41, offset 0x1040 + 0x1040: 0x6211, 0x1041: 0x6229, 0x1042: 0x408d, 0x1043: 0x6241, 0x1044: 0x6259, 0x1045: 0x6271, + 0x1046: 0x6289, 0x1047: 0x62a1, 0x1048: 0x40ad, 0x1049: 0x62b9, 0x104a: 0x62e1, 0x104b: 0x62f9, + 0x104c: 0x40cd, 0x104d: 0x40cd, 0x104e: 0x6311, 0x104f: 0x6329, 0x1050: 0x6341, 0x1051: 0x40ed, + 0x1052: 0x410d, 0x1053: 0x412d, 0x1054: 0x414d, 0x1055: 0x416d, 0x1056: 0x6359, 0x1057: 0x6371, + 0x1058: 0x6389, 0x1059: 0x63a1, 0x105a: 0x63b9, 0x105b: 0x418d, 0x105c: 0x63d1, 0x105d: 0x63e9, + 0x105e: 0x6401, 0x105f: 0x41ad, 0x1060: 0x41cd, 0x1061: 0x6419, 0x1062: 0x41ed, 0x1063: 0x420d, + 0x1064: 0x422d, 0x1065: 0x6431, 0x1066: 0x424d, 0x1067: 0x6449, 0x1068: 0x6479, 0x1069: 0x6211, + 0x106a: 0x426d, 0x106b: 0x428d, 0x106c: 0x42ad, 0x106d: 0x42cd, 0x106e: 0x64b1, 0x106f: 0x64f1, + 0x1070: 0x6539, 0x1071: 0x6551, 0x1072: 0x42ed, 0x1073: 0x6569, 0x1074: 0x6581, 0x1075: 0x6599, + 0x1076: 0x430d, 0x1077: 0x65b1, 0x1078: 0x65c9, 0x1079: 0x65b1, 0x107a: 0x65e1, 0x107b: 0x65f9, + 0x107c: 0x432d, 0x107d: 0x6611, 0x107e: 0x6629, 0x107f: 0x6611, + // Block 0x42, offset 0x1080 + 0x1080: 0x434d, 0x1081: 0x436d, 0x1082: 0x0040, 0x1083: 0x6641, 0x1084: 0x6659, 0x1085: 0x6671, + 0x1086: 0x6689, 0x1087: 0x0040, 0x1088: 0x66c1, 0x1089: 0x66d9, 0x108a: 0x66f1, 0x108b: 0x6709, + 0x108c: 0x6721, 0x108d: 0x6739, 0x108e: 0x6401, 0x108f: 0x6751, 0x1090: 0x6769, 0x1091: 0x6781, + 0x1092: 0x438d, 0x1093: 0x6799, 0x1094: 0x6289, 0x1095: 0x43ad, 0x1096: 0x43cd, 0x1097: 0x67b1, + 0x1098: 0x0040, 0x1099: 0x43ed, 0x109a: 0x67c9, 0x109b: 0x67e1, 0x109c: 0x67f9, 0x109d: 0x6811, + 0x109e: 0x6829, 0x109f: 0x6859, 0x10a0: 0x6889, 0x10a1: 0x68b1, 0x10a2: 0x68d9, 0x10a3: 0x6901, + 0x10a4: 0x6929, 0x10a5: 0x6951, 0x10a6: 0x6979, 0x10a7: 0x69a1, 0x10a8: 0x69c9, 0x10a9: 0x69f1, + 0x10aa: 0x6a21, 0x10ab: 0x6a51, 0x10ac: 0x6a81, 0x10ad: 0x6ab1, 0x10ae: 0x6ae1, 0x10af: 0x6b11, + 0x10b0: 0x6b41, 0x10b1: 0x6b71, 0x10b2: 0x6ba1, 0x10b3: 0x6bd1, 0x10b4: 0x6c01, 0x10b5: 0x6c31, + 0x10b6: 0x6c61, 0x10b7: 0x6c91, 0x10b8: 0x6cc1, 0x10b9: 0x6cf1, 0x10ba: 0x6d21, 0x10bb: 0x6d51, + 0x10bc: 0x6d81, 0x10bd: 0x6db1, 0x10be: 0x6de1, 0x10bf: 0x440d, + // Block 0x43, offset 0x10c0 + 0x10c0: 0xe00d, 0x10c1: 0x0008, 0x10c2: 0xe00d, 0x10c3: 0x0008, 0x10c4: 0xe00d, 0x10c5: 0x0008, + 0x10c6: 0xe00d, 0x10c7: 0x0008, 0x10c8: 0xe00d, 0x10c9: 0x0008, 0x10ca: 0xe00d, 0x10cb: 0x0008, + 0x10cc: 0xe00d, 0x10cd: 0x0008, 0x10ce: 0xe00d, 0x10cf: 0x0008, 0x10d0: 0xe00d, 0x10d1: 0x0008, + 0x10d2: 0xe00d, 0x10d3: 0x0008, 0x10d4: 0xe00d, 0x10d5: 0x0008, 0x10d6: 0xe00d, 0x10d7: 0x0008, + 0x10d8: 0xe00d, 0x10d9: 0x0008, 0x10da: 0xe00d, 0x10db: 0x0008, 0x10dc: 0xe00d, 0x10dd: 0x0008, + 0x10de: 0xe00d, 0x10df: 0x0008, 0x10e0: 0xe00d, 0x10e1: 0x0008, 0x10e2: 0xe00d, 0x10e3: 0x0008, + 0x10e4: 0xe00d, 0x10e5: 0x0008, 0x10e6: 0xe00d, 0x10e7: 0x0008, 0x10e8: 0xe00d, 0x10e9: 0x0008, + 0x10ea: 0xe00d, 0x10eb: 0x0008, 0x10ec: 0xe00d, 0x10ed: 0x0008, 0x10ee: 0x0008, 0x10ef: 0x3308, + 0x10f0: 0x3318, 0x10f1: 0x3318, 0x10f2: 0x3318, 0x10f3: 0x0018, 0x10f4: 0x3308, 0x10f5: 0x3308, + 0x10f6: 0x3308, 0x10f7: 0x3308, 0x10f8: 0x3308, 0x10f9: 0x3308, 0x10fa: 0x3308, 0x10fb: 0x3308, + 0x10fc: 0x3308, 0x10fd: 0x3308, 0x10fe: 0x0018, 0x10ff: 0x0008, + // Block 0x44, offset 0x1100 + 0x1100: 0xe00d, 0x1101: 0x0008, 0x1102: 0xe00d, 0x1103: 0x0008, 0x1104: 0xe00d, 0x1105: 0x0008, + 0x1106: 0xe00d, 0x1107: 0x0008, 0x1108: 0xe00d, 0x1109: 0x0008, 0x110a: 0xe00d, 0x110b: 0x0008, + 0x110c: 0xe00d, 0x110d: 0x0008, 0x110e: 0xe00d, 0x110f: 0x0008, 0x1110: 0xe00d, 0x1111: 0x0008, + 0x1112: 0xe00d, 0x1113: 0x0008, 0x1114: 0xe00d, 0x1115: 0x0008, 0x1116: 0xe00d, 0x1117: 0x0008, + 0x1118: 0xe00d, 0x1119: 0x0008, 0x111a: 0xe00d, 0x111b: 0x0008, 0x111c: 0x0ea1, 0x111d: 0x6e11, + 0x111e: 0x3308, 0x111f: 0x3308, 0x1120: 0x0008, 0x1121: 0x0008, 0x1122: 0x0008, 0x1123: 0x0008, + 0x1124: 0x0008, 0x1125: 0x0008, 0x1126: 0x0008, 0x1127: 0x0008, 0x1128: 0x0008, 0x1129: 0x0008, + 0x112a: 0x0008, 0x112b: 0x0008, 0x112c: 0x0008, 0x112d: 0x0008, 0x112e: 0x0008, 0x112f: 0x0008, + 0x1130: 0x0008, 0x1131: 0x0008, 0x1132: 0x0008, 0x1133: 0x0008, 0x1134: 0x0008, 0x1135: 0x0008, + 0x1136: 0x0008, 0x1137: 0x0008, 0x1138: 0x0008, 0x1139: 0x0008, 0x113a: 0x0008, 0x113b: 0x0008, + 0x113c: 0x0008, 0x113d: 0x0008, 0x113e: 0x0008, 0x113f: 0x0008, + // Block 0x45, offset 0x1140 + 0x1140: 0x0018, 0x1141: 0x0018, 0x1142: 0x0018, 0x1143: 0x0018, 0x1144: 0x0018, 0x1145: 0x0018, + 0x1146: 0x0018, 0x1147: 0x0018, 0x1148: 0x0018, 0x1149: 0x0018, 0x114a: 0x0018, 0x114b: 0x0018, + 0x114c: 0x0018, 0x114d: 0x0018, 0x114e: 0x0018, 0x114f: 0x0018, 0x1150: 0x0018, 0x1151: 0x0018, + 0x1152: 0x0018, 0x1153: 0x0018, 0x1154: 0x0018, 0x1155: 0x0018, 0x1156: 0x0018, 0x1157: 0x0008, + 0x1158: 0x0008, 0x1159: 0x0008, 0x115a: 0x0008, 0x115b: 0x0008, 0x115c: 0x0008, 0x115d: 0x0008, + 0x115e: 0x0008, 0x115f: 0x0008, 0x1160: 0x0018, 0x1161: 0x0018, 0x1162: 0xe00d, 0x1163: 0x0008, + 0x1164: 0xe00d, 0x1165: 0x0008, 0x1166: 0xe00d, 0x1167: 0x0008, 0x1168: 0xe00d, 0x1169: 0x0008, + 0x116a: 0xe00d, 0x116b: 0x0008, 0x116c: 0xe00d, 0x116d: 0x0008, 0x116e: 0xe00d, 0x116f: 0x0008, + 0x1170: 0x0008, 0x1171: 0x0008, 0x1172: 0xe00d, 0x1173: 0x0008, 0x1174: 0xe00d, 0x1175: 0x0008, + 0x1176: 0xe00d, 0x1177: 0x0008, 0x1178: 0xe00d, 0x1179: 0x0008, 0x117a: 0xe00d, 0x117b: 0x0008, + 0x117c: 0xe00d, 0x117d: 0x0008, 0x117e: 0xe00d, 0x117f: 0x0008, + // Block 0x46, offset 0x1180 + 0x1180: 0xe00d, 0x1181: 0x0008, 0x1182: 0xe00d, 0x1183: 0x0008, 0x1184: 0xe00d, 0x1185: 0x0008, + 0x1186: 0xe00d, 0x1187: 0x0008, 0x1188: 0xe00d, 0x1189: 0x0008, 0x118a: 0xe00d, 0x118b: 0x0008, + 0x118c: 0xe00d, 0x118d: 0x0008, 0x118e: 0xe00d, 0x118f: 0x0008, 0x1190: 0xe00d, 0x1191: 0x0008, + 0x1192: 0xe00d, 0x1193: 0x0008, 0x1194: 0xe00d, 0x1195: 0x0008, 0x1196: 0xe00d, 0x1197: 0x0008, + 0x1198: 0xe00d, 0x1199: 0x0008, 0x119a: 0xe00d, 0x119b: 0x0008, 0x119c: 0xe00d, 0x119d: 0x0008, + 0x119e: 0xe00d, 0x119f: 0x0008, 0x11a0: 0xe00d, 0x11a1: 0x0008, 0x11a2: 0xe00d, 0x11a3: 0x0008, + 0x11a4: 0xe00d, 0x11a5: 0x0008, 0x11a6: 0xe00d, 0x11a7: 0x0008, 0x11a8: 0xe00d, 0x11a9: 0x0008, + 0x11aa: 0xe00d, 0x11ab: 0x0008, 0x11ac: 0xe00d, 0x11ad: 0x0008, 0x11ae: 0xe00d, 0x11af: 0x0008, + 0x11b0: 0xe0fd, 0x11b1: 0x0008, 0x11b2: 0x0008, 0x11b3: 0x0008, 0x11b4: 0x0008, 0x11b5: 0x0008, + 0x11b6: 0x0008, 0x11b7: 0x0008, 0x11b8: 0x0008, 0x11b9: 0xe01d, 0x11ba: 0x0008, 0x11bb: 0xe03d, + 0x11bc: 0x0008, 0x11bd: 0x442d, 0x11be: 0xe00d, 0x11bf: 0x0008, + // Block 0x47, offset 0x11c0 + 0x11c0: 0xe00d, 0x11c1: 0x0008, 0x11c2: 0xe00d, 0x11c3: 0x0008, 0x11c4: 0xe00d, 0x11c5: 0x0008, + 0x11c6: 0xe00d, 0x11c7: 0x0008, 0x11c8: 0x0008, 0x11c9: 0x0018, 0x11ca: 0x0018, 0x11cb: 0xe03d, + 0x11cc: 0x0008, 0x11cd: 0x11d9, 0x11ce: 0x0008, 0x11cf: 0x0008, 0x11d0: 0xe00d, 0x11d1: 0x0008, + 0x11d2: 0xe00d, 0x11d3: 0x0008, 0x11d4: 0x0008, 0x11d5: 0x0008, 0x11d6: 0xe00d, 0x11d7: 0x0008, + 0x11d8: 0xe00d, 0x11d9: 0x0008, 0x11da: 0xe00d, 0x11db: 0x0008, 0x11dc: 0xe00d, 0x11dd: 0x0008, + 0x11de: 0xe00d, 0x11df: 0x0008, 0x11e0: 0xe00d, 0x11e1: 0x0008, 0x11e2: 0xe00d, 0x11e3: 0x0008, + 0x11e4: 0xe00d, 0x11e5: 0x0008, 0x11e6: 0xe00d, 0x11e7: 0x0008, 0x11e8: 0xe00d, 0x11e9: 0x0008, + 0x11ea: 0x6e29, 0x11eb: 0x1029, 0x11ec: 0x11c1, 0x11ed: 0x6e41, 0x11ee: 0x1221, 0x11ef: 0x0040, + 0x11f0: 0x6e59, 0x11f1: 0x6e71, 0x11f2: 0x1239, 0x11f3: 0x444d, 0x11f4: 0xe00d, 0x11f5: 0x0008, + 0x11f6: 0xe00d, 0x11f7: 0x0008, 0x11f8: 0x0040, 0x11f9: 0x0040, 0x11fa: 0x0040, 0x11fb: 0x0040, + 0x11fc: 0x0040, 0x11fd: 0x0040, 0x11fe: 0x0040, 0x11ff: 0x0040, + // Block 0x48, offset 0x1200 + 0x1200: 0x64d5, 0x1201: 0x64f5, 0x1202: 0x6515, 0x1203: 0x6535, 0x1204: 0x6555, 0x1205: 0x6575, + 0x1206: 0x6595, 0x1207: 0x65b5, 0x1208: 0x65d5, 0x1209: 0x65f5, 0x120a: 0x6615, 0x120b: 0x6635, + 0x120c: 0x6655, 0x120d: 0x6675, 0x120e: 0x0008, 0x120f: 0x0008, 0x1210: 0x6695, 0x1211: 0x0008, + 0x1212: 0x66b5, 0x1213: 0x0008, 0x1214: 0x0008, 0x1215: 0x66d5, 0x1216: 0x66f5, 0x1217: 0x6715, + 0x1218: 0x6735, 0x1219: 0x6755, 0x121a: 0x6775, 0x121b: 0x6795, 0x121c: 0x67b5, 0x121d: 0x67d5, + 0x121e: 0x67f5, 0x121f: 0x0008, 0x1220: 0x6815, 0x1221: 0x0008, 0x1222: 0x6835, 0x1223: 0x0008, + 0x1224: 0x0008, 0x1225: 0x6855, 0x1226: 0x6875, 0x1227: 0x0008, 0x1228: 0x0008, 0x1229: 0x0008, + 0x122a: 0x6895, 0x122b: 0x68b5, 0x122c: 0x68d5, 0x122d: 0x68f5, 0x122e: 0x6915, 0x122f: 0x6935, + 0x1230: 0x6955, 0x1231: 0x6975, 0x1232: 0x6995, 0x1233: 0x69b5, 0x1234: 0x69d5, 0x1235: 0x69f5, + 0x1236: 0x6a15, 0x1237: 0x6a35, 0x1238: 0x6a55, 0x1239: 0x6a75, 0x123a: 0x6a95, 0x123b: 0x6ab5, + 0x123c: 0x6ad5, 0x123d: 0x6af5, 0x123e: 0x6b15, 0x123f: 0x6b35, + // Block 0x49, offset 0x1240 + 0x1240: 0x7a95, 0x1241: 0x7ab5, 0x1242: 0x7ad5, 0x1243: 0x7af5, 0x1244: 0x7b15, 0x1245: 0x7b35, + 0x1246: 0x7b55, 0x1247: 0x7b75, 0x1248: 0x7b95, 0x1249: 0x7bb5, 0x124a: 0x7bd5, 0x124b: 0x7bf5, + 0x124c: 0x7c15, 0x124d: 0x7c35, 0x124e: 0x7c55, 0x124f: 0x6ec9, 0x1250: 0x6ef1, 0x1251: 0x6f19, + 0x1252: 0x7c75, 0x1253: 0x7c95, 0x1254: 0x7cb5, 0x1255: 0x6f41, 0x1256: 0x6f69, 0x1257: 0x6f91, + 0x1258: 0x7cd5, 0x1259: 0x7cf5, 0x125a: 0x0040, 0x125b: 0x0040, 0x125c: 0x0040, 0x125d: 0x0040, + 0x125e: 0x0040, 0x125f: 0x0040, 0x1260: 0x0040, 0x1261: 0x0040, 0x1262: 0x0040, 0x1263: 0x0040, + 0x1264: 0x0040, 0x1265: 0x0040, 0x1266: 0x0040, 0x1267: 0x0040, 0x1268: 0x0040, 0x1269: 0x0040, + 0x126a: 0x0040, 0x126b: 0x0040, 0x126c: 0x0040, 0x126d: 0x0040, 0x126e: 0x0040, 0x126f: 0x0040, + 0x1270: 0x0040, 0x1271: 0x0040, 0x1272: 0x0040, 0x1273: 0x0040, 0x1274: 0x0040, 0x1275: 0x0040, + 0x1276: 0x0040, 0x1277: 0x0040, 0x1278: 0x0040, 0x1279: 0x0040, 0x127a: 0x0040, 0x127b: 0x0040, + 0x127c: 0x0040, 0x127d: 0x0040, 0x127e: 0x0040, 0x127f: 0x0040, + // Block 0x4a, offset 0x1280 + 0x1280: 0x6fb9, 0x1281: 0x6fd1, 0x1282: 0x6fe9, 0x1283: 0x7d15, 0x1284: 0x7d35, 0x1285: 0x7001, + 0x1286: 0x7001, 0x1287: 0x0040, 0x1288: 0x0040, 0x1289: 0x0040, 0x128a: 0x0040, 0x128b: 0x0040, + 0x128c: 0x0040, 0x128d: 0x0040, 0x128e: 0x0040, 0x128f: 0x0040, 0x1290: 0x0040, 0x1291: 0x0040, + 0x1292: 0x0040, 0x1293: 0x7019, 0x1294: 0x7041, 0x1295: 0x7069, 0x1296: 0x7091, 0x1297: 0x70b9, + 0x1298: 0x0040, 0x1299: 0x0040, 0x129a: 0x0040, 0x129b: 0x0040, 0x129c: 0x0040, 0x129d: 0x70e1, + 0x129e: 0x3308, 0x129f: 0x7109, 0x12a0: 0x7131, 0x12a1: 0x20a9, 0x12a2: 0x20f1, 0x12a3: 0x7149, + 0x12a4: 0x7161, 0x12a5: 0x7179, 0x12a6: 0x7191, 0x12a7: 0x71a9, 0x12a8: 0x71c1, 0x12a9: 0x1fb2, + 0x12aa: 0x71d9, 0x12ab: 0x7201, 0x12ac: 0x7229, 0x12ad: 0x7261, 0x12ae: 0x7299, 0x12af: 0x72c1, + 0x12b0: 0x72e9, 0x12b1: 0x7311, 0x12b2: 0x7339, 0x12b3: 0x7361, 0x12b4: 0x7389, 0x12b5: 0x73b1, + 0x12b6: 0x73d9, 0x12b7: 0x0040, 0x12b8: 0x7401, 0x12b9: 0x7429, 0x12ba: 0x7451, 0x12bb: 0x7479, + 0x12bc: 0x74a1, 0x12bd: 0x0040, 0x12be: 0x74c9, 0x12bf: 0x0040, + // Block 0x4b, offset 0x12c0 + 0x12c0: 0x74f1, 0x12c1: 0x7519, 0x12c2: 0x0040, 0x12c3: 0x7541, 0x12c4: 0x7569, 0x12c5: 0x0040, + 0x12c6: 0x7591, 0x12c7: 0x75b9, 0x12c8: 0x75e1, 0x12c9: 0x7609, 0x12ca: 0x7631, 0x12cb: 0x7659, + 0x12cc: 0x7681, 0x12cd: 0x76a9, 0x12ce: 0x76d1, 0x12cf: 0x76f9, 0x12d0: 0x7721, 0x12d1: 0x7721, + 0x12d2: 0x7739, 0x12d3: 0x7739, 0x12d4: 0x7739, 0x12d5: 0x7739, 0x12d6: 0x7751, 0x12d7: 0x7751, + 0x12d8: 0x7751, 0x12d9: 0x7751, 0x12da: 0x7769, 0x12db: 0x7769, 0x12dc: 0x7769, 0x12dd: 0x7769, + 0x12de: 0x7781, 0x12df: 0x7781, 0x12e0: 0x7781, 0x12e1: 0x7781, 0x12e2: 0x7799, 0x12e3: 0x7799, + 0x12e4: 0x7799, 0x12e5: 0x7799, 0x12e6: 0x77b1, 0x12e7: 0x77b1, 0x12e8: 0x77b1, 0x12e9: 0x77b1, + 0x12ea: 0x77c9, 0x12eb: 0x77c9, 0x12ec: 0x77c9, 0x12ed: 0x77c9, 0x12ee: 0x77e1, 0x12ef: 0x77e1, + 0x12f0: 0x77e1, 0x12f1: 0x77e1, 0x12f2: 0x77f9, 0x12f3: 0x77f9, 0x12f4: 0x77f9, 0x12f5: 0x77f9, + 0x12f6: 0x7811, 0x12f7: 0x7811, 0x12f8: 0x7811, 0x12f9: 0x7811, 0x12fa: 0x7829, 0x12fb: 0x7829, + 0x12fc: 0x7829, 0x12fd: 0x7829, 0x12fe: 0x7841, 0x12ff: 0x7841, + // Block 0x4c, offset 0x1300 + 0x1300: 0x7841, 0x1301: 0x7841, 0x1302: 0x7859, 0x1303: 0x7859, 0x1304: 0x7871, 0x1305: 0x7871, + 0x1306: 0x7889, 0x1307: 0x7889, 0x1308: 0x78a1, 0x1309: 0x78a1, 0x130a: 0x78b9, 0x130b: 0x78b9, + 0x130c: 0x78d1, 0x130d: 0x78d1, 0x130e: 0x78e9, 0x130f: 0x78e9, 0x1310: 0x78e9, 0x1311: 0x78e9, + 0x1312: 0x7901, 0x1313: 0x7901, 0x1314: 0x7901, 0x1315: 0x7901, 0x1316: 0x7919, 0x1317: 0x7919, + 0x1318: 0x7919, 0x1319: 0x7919, 0x131a: 0x7931, 0x131b: 0x7931, 0x131c: 0x7931, 0x131d: 0x7931, + 0x131e: 0x7949, 0x131f: 0x7949, 0x1320: 0x7961, 0x1321: 0x7961, 0x1322: 0x7961, 0x1323: 0x7961, + 0x1324: 0x7979, 0x1325: 0x7979, 0x1326: 0x7991, 0x1327: 0x7991, 0x1328: 0x7991, 0x1329: 0x7991, + 0x132a: 0x79a9, 0x132b: 0x79a9, 0x132c: 0x79a9, 0x132d: 0x79a9, 0x132e: 0x79c1, 0x132f: 0x79c1, + 0x1330: 0x79d9, 0x1331: 0x79d9, 0x1332: 0x0818, 0x1333: 0x0818, 0x1334: 0x0818, 0x1335: 0x0818, + 0x1336: 0x0818, 0x1337: 0x0818, 0x1338: 0x0818, 0x1339: 0x0818, 0x133a: 0x0818, 0x133b: 0x0818, + 0x133c: 0x0818, 0x133d: 0x0818, 0x133e: 0x0818, 0x133f: 0x0818, + // Block 0x4d, offset 0x1340 + 0x1340: 0x0818, 0x1341: 0x0818, 0x1342: 0x0040, 0x1343: 0x0040, 0x1344: 0x0040, 0x1345: 0x0040, + 0x1346: 0x0040, 0x1347: 0x0040, 0x1348: 0x0040, 0x1349: 0x0040, 0x134a: 0x0040, 0x134b: 0x0040, + 0x134c: 0x0040, 0x134d: 0x0040, 0x134e: 0x0040, 0x134f: 0x0040, 0x1350: 0x0040, 0x1351: 0x0040, + 0x1352: 0x0040, 0x1353: 0x79f1, 0x1354: 0x79f1, 0x1355: 0x79f1, 0x1356: 0x79f1, 0x1357: 0x7a09, + 0x1358: 0x7a09, 0x1359: 0x7a21, 0x135a: 0x7a21, 0x135b: 0x7a39, 0x135c: 0x7a39, 0x135d: 0x0479, + 0x135e: 0x7a51, 0x135f: 0x7a51, 0x1360: 0x7a69, 0x1361: 0x7a69, 0x1362: 0x7a81, 0x1363: 0x7a81, + 0x1364: 0x7a99, 0x1365: 0x7a99, 0x1366: 0x7a99, 0x1367: 0x7a99, 0x1368: 0x7ab1, 0x1369: 0x7ab1, + 0x136a: 0x7ac9, 0x136b: 0x7ac9, 0x136c: 0x7af1, 0x136d: 0x7af1, 0x136e: 0x7b19, 0x136f: 0x7b19, + 0x1370: 0x7b41, 0x1371: 0x7b41, 0x1372: 0x7b69, 0x1373: 0x7b69, 0x1374: 0x7b91, 0x1375: 0x7b91, + 0x1376: 0x7bb9, 0x1377: 0x7bb9, 0x1378: 0x7bb9, 0x1379: 0x7be1, 0x137a: 0x7be1, 0x137b: 0x7be1, + 0x137c: 0x7c09, 0x137d: 0x7c09, 0x137e: 0x7c09, 0x137f: 0x7c09, + // Block 0x4e, offset 0x1380 + 0x1380: 0x85f9, 0x1381: 0x8621, 0x1382: 0x8649, 0x1383: 0x8671, 0x1384: 0x8699, 0x1385: 0x86c1, + 0x1386: 0x86e9, 0x1387: 0x8711, 0x1388: 0x8739, 0x1389: 0x8761, 0x138a: 0x8789, 0x138b: 0x87b1, + 0x138c: 0x87d9, 0x138d: 0x8801, 0x138e: 0x8829, 0x138f: 0x8851, 0x1390: 0x8879, 0x1391: 0x88a1, + 0x1392: 0x88c9, 0x1393: 0x88f1, 0x1394: 0x8919, 0x1395: 0x8941, 0x1396: 0x8969, 0x1397: 0x8991, + 0x1398: 0x89b9, 0x1399: 0x89e1, 0x139a: 0x8a09, 0x139b: 0x8a31, 0x139c: 0x8a59, 0x139d: 0x8a81, + 0x139e: 0x8aaa, 0x139f: 0x8ada, 0x13a0: 0x8b0a, 0x13a1: 0x8b3a, 0x13a2: 0x8b6a, 0x13a3: 0x8b9a, + 0x13a4: 0x8bc9, 0x13a5: 0x8bf1, 0x13a6: 0x7c71, 0x13a7: 0x8c19, 0x13a8: 0x7be1, 0x13a9: 0x7c99, + 0x13aa: 0x8c41, 0x13ab: 0x8c69, 0x13ac: 0x7d39, 0x13ad: 0x8c91, 0x13ae: 0x7d61, 0x13af: 0x7d89, + 0x13b0: 0x8cb9, 0x13b1: 0x8ce1, 0x13b2: 0x7e29, 0x13b3: 0x8d09, 0x13b4: 0x7e51, 0x13b5: 0x7e79, + 0x13b6: 0x8d31, 0x13b7: 0x8d59, 0x13b8: 0x7ec9, 0x13b9: 0x8d81, 0x13ba: 0x7ef1, 0x13bb: 0x7f19, + 0x13bc: 0x83a1, 0x13bd: 0x83c9, 0x13be: 0x8441, 0x13bf: 0x8469, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x8491, 0x13c1: 0x8531, 0x13c2: 0x8559, 0x13c3: 0x8581, 0x13c4: 0x85a9, 0x13c5: 0x8649, + 0x13c6: 0x8671, 0x13c7: 0x8699, 0x13c8: 0x8da9, 0x13c9: 0x8739, 0x13ca: 0x8dd1, 0x13cb: 0x8df9, + 0x13cc: 0x8829, 0x13cd: 0x8e21, 0x13ce: 0x8851, 0x13cf: 0x8879, 0x13d0: 0x8a81, 0x13d1: 0x8e49, + 0x13d2: 0x8e71, 0x13d3: 0x89b9, 0x13d4: 0x8e99, 0x13d5: 0x89e1, 0x13d6: 0x8a09, 0x13d7: 0x7c21, + 0x13d8: 0x7c49, 0x13d9: 0x8ec1, 0x13da: 0x7c71, 0x13db: 0x8ee9, 0x13dc: 0x7cc1, 0x13dd: 0x7ce9, + 0x13de: 0x7d11, 0x13df: 0x7d39, 0x13e0: 0x8f11, 0x13e1: 0x7db1, 0x13e2: 0x7dd9, 0x13e3: 0x7e01, + 0x13e4: 0x7e29, 0x13e5: 0x8f39, 0x13e6: 0x7ec9, 0x13e7: 0x7f41, 0x13e8: 0x7f69, 0x13e9: 0x7f91, + 0x13ea: 0x7fb9, 0x13eb: 0x7fe1, 0x13ec: 0x8031, 0x13ed: 0x8059, 0x13ee: 0x8081, 0x13ef: 0x80a9, + 0x13f0: 0x80d1, 0x13f1: 0x80f9, 0x13f2: 0x8f61, 0x13f3: 0x8121, 0x13f4: 0x8149, 0x13f5: 0x8171, + 0x13f6: 0x8199, 0x13f7: 0x81c1, 0x13f8: 0x81e9, 0x13f9: 0x8239, 0x13fa: 0x8261, 0x13fb: 0x8289, + 0x13fc: 0x82b1, 0x13fd: 0x82d9, 0x13fe: 0x8301, 0x13ff: 0x8329, + // Block 0x50, offset 0x1400 + 0x1400: 0x8351, 0x1401: 0x8379, 0x1402: 0x83f1, 0x1403: 0x8419, 0x1404: 0x84b9, 0x1405: 0x84e1, + 0x1406: 0x8509, 0x1407: 0x8531, 0x1408: 0x8559, 0x1409: 0x85d1, 0x140a: 0x85f9, 0x140b: 0x8621, + 0x140c: 0x8649, 0x140d: 0x8f89, 0x140e: 0x86c1, 0x140f: 0x86e9, 0x1410: 0x8711, 0x1411: 0x8739, + 0x1412: 0x87b1, 0x1413: 0x87d9, 0x1414: 0x8801, 0x1415: 0x8829, 0x1416: 0x8fb1, 0x1417: 0x88a1, + 0x1418: 0x88c9, 0x1419: 0x8fd9, 0x141a: 0x8941, 0x141b: 0x8969, 0x141c: 0x8991, 0x141d: 0x89b9, + 0x141e: 0x9001, 0x141f: 0x7c71, 0x1420: 0x8ee9, 0x1421: 0x7d39, 0x1422: 0x8f11, 0x1423: 0x7e29, + 0x1424: 0x8f39, 0x1425: 0x7ec9, 0x1426: 0x9029, 0x1427: 0x80d1, 0x1428: 0x9051, 0x1429: 0x9079, + 0x142a: 0x90a1, 0x142b: 0x8531, 0x142c: 0x8559, 0x142d: 0x8649, 0x142e: 0x8829, 0x142f: 0x8fb1, + 0x1430: 0x89b9, 0x1431: 0x9001, 0x1432: 0x90c9, 0x1433: 0x9101, 0x1434: 0x9139, 0x1435: 0x9171, + 0x1436: 0x9199, 0x1437: 0x91c1, 0x1438: 0x91e9, 0x1439: 0x9211, 0x143a: 0x9239, 0x143b: 0x9261, + 0x143c: 0x9289, 0x143d: 0x92b1, 0x143e: 0x92d9, 0x143f: 0x9301, + // Block 0x51, offset 0x1440 + 0x1440: 0x9329, 0x1441: 0x9351, 0x1442: 0x9379, 0x1443: 0x93a1, 0x1444: 0x93c9, 0x1445: 0x93f1, + 0x1446: 0x9419, 0x1447: 0x9441, 0x1448: 0x9469, 0x1449: 0x9491, 0x144a: 0x94b9, 0x144b: 0x94e1, + 0x144c: 0x9079, 0x144d: 0x9509, 0x144e: 0x9531, 0x144f: 0x9559, 0x1450: 0x9581, 0x1451: 0x9171, + 0x1452: 0x9199, 0x1453: 0x91c1, 0x1454: 0x91e9, 0x1455: 0x9211, 0x1456: 0x9239, 0x1457: 0x9261, + 0x1458: 0x9289, 0x1459: 0x92b1, 0x145a: 0x92d9, 0x145b: 0x9301, 0x145c: 0x9329, 0x145d: 0x9351, + 0x145e: 0x9379, 0x145f: 0x93a1, 0x1460: 0x93c9, 0x1461: 0x93f1, 0x1462: 0x9419, 0x1463: 0x9441, + 0x1464: 0x9469, 0x1465: 0x9491, 0x1466: 0x94b9, 0x1467: 0x94e1, 0x1468: 0x9079, 0x1469: 0x9509, + 0x146a: 0x9531, 0x146b: 0x9559, 0x146c: 0x9581, 0x146d: 0x9491, 0x146e: 0x94b9, 0x146f: 0x94e1, + 0x1470: 0x9079, 0x1471: 0x9051, 0x1472: 0x90a1, 0x1473: 0x8211, 0x1474: 0x8059, 0x1475: 0x8081, + 0x1476: 0x80a9, 0x1477: 0x9491, 0x1478: 0x94b9, 0x1479: 0x94e1, 0x147a: 0x8211, 0x147b: 0x8239, + 0x147c: 0x95a9, 0x147d: 0x95a9, 0x147e: 0x0018, 0x147f: 0x0018, + // Block 0x52, offset 0x1480 + 0x1480: 0x0040, 0x1481: 0x0040, 0x1482: 0x0040, 0x1483: 0x0040, 0x1484: 0x0040, 0x1485: 0x0040, + 0x1486: 0x0040, 0x1487: 0x0040, 0x1488: 0x0040, 0x1489: 0x0040, 0x148a: 0x0040, 0x148b: 0x0040, + 0x148c: 0x0040, 0x148d: 0x0040, 0x148e: 0x0040, 0x148f: 0x0040, 0x1490: 0x95d1, 0x1491: 0x9609, + 0x1492: 0x9609, 0x1493: 0x9641, 0x1494: 0x9679, 0x1495: 0x96b1, 0x1496: 0x96e9, 0x1497: 0x9721, + 0x1498: 0x9759, 0x1499: 0x9759, 0x149a: 0x9791, 0x149b: 0x97c9, 0x149c: 0x9801, 0x149d: 0x9839, + 0x149e: 0x9871, 0x149f: 0x98a9, 0x14a0: 0x98a9, 0x14a1: 0x98e1, 0x14a2: 0x9919, 0x14a3: 0x9919, + 0x14a4: 0x9951, 0x14a5: 0x9951, 0x14a6: 0x9989, 0x14a7: 0x99c1, 0x14a8: 0x99c1, 0x14a9: 0x99f9, + 0x14aa: 0x9a31, 0x14ab: 0x9a31, 0x14ac: 0x9a69, 0x14ad: 0x9a69, 0x14ae: 0x9aa1, 0x14af: 0x9ad9, + 0x14b0: 0x9ad9, 0x14b1: 0x9b11, 0x14b2: 0x9b11, 0x14b3: 0x9b49, 0x14b4: 0x9b81, 0x14b5: 0x9bb9, + 0x14b6: 0x9bf1, 0x14b7: 0x9bf1, 0x14b8: 0x9c29, 0x14b9: 0x9c61, 0x14ba: 0x9c99, 0x14bb: 0x9cd1, + 0x14bc: 0x9d09, 0x14bd: 0x9d09, 0x14be: 0x9d41, 0x14bf: 0x9d79, + // Block 0x53, offset 0x14c0 + 0x14c0: 0xa949, 0x14c1: 0xa981, 0x14c2: 0xa9b9, 0x14c3: 0xa8a1, 0x14c4: 0x9bb9, 0x14c5: 0x9989, + 0x14c6: 0xa9f1, 0x14c7: 0xaa29, 0x14c8: 0x0040, 0x14c9: 0x0040, 0x14ca: 0x0040, 0x14cb: 0x0040, + 0x14cc: 0x0040, 0x14cd: 0x0040, 0x14ce: 0x0040, 0x14cf: 0x0040, 0x14d0: 0x0040, 0x14d1: 0x0040, + 0x14d2: 0x0040, 0x14d3: 0x0040, 0x14d4: 0x0040, 0x14d5: 0x0040, 0x14d6: 0x0040, 0x14d7: 0x0040, + 0x14d8: 0x0040, 0x14d9: 0x0040, 0x14da: 0x0040, 0x14db: 0x0040, 0x14dc: 0x0040, 0x14dd: 0x0040, + 0x14de: 0x0040, 0x14df: 0x0040, 0x14e0: 0x0040, 0x14e1: 0x0040, 0x14e2: 0x0040, 0x14e3: 0x0040, + 0x14e4: 0x0040, 0x14e5: 0x0040, 0x14e6: 0x0040, 0x14e7: 0x0040, 0x14e8: 0x0040, 0x14e9: 0x0040, + 0x14ea: 0x0040, 0x14eb: 0x0040, 0x14ec: 0x0040, 0x14ed: 0x0040, 0x14ee: 0x0040, 0x14ef: 0x0040, + 0x14f0: 0xaa61, 0x14f1: 0xaa99, 0x14f2: 0xaad1, 0x14f3: 0xab19, 0x14f4: 0xab61, 0x14f5: 0xaba9, + 0x14f6: 0xabf1, 0x14f7: 0xac39, 0x14f8: 0xac81, 0x14f9: 0xacc9, 0x14fa: 0xad02, 0x14fb: 0xae12, + 0x14fc: 0xae91, 0x14fd: 0x0018, 0x14fe: 0x0040, 0x14ff: 0x0040, + // Block 0x54, offset 0x1500 + 0x1500: 0x33c0, 0x1501: 0x33c0, 0x1502: 0x33c0, 0x1503: 0x33c0, 0x1504: 0x33c0, 0x1505: 0x33c0, + 0x1506: 0x33c0, 0x1507: 0x33c0, 0x1508: 0x33c0, 0x1509: 0x33c0, 0x150a: 0x33c0, 0x150b: 0x33c0, + 0x150c: 0x33c0, 0x150d: 0x33c0, 0x150e: 0x33c0, 0x150f: 0x33c0, 0x1510: 0xaeda, 0x1511: 0x7d55, + 0x1512: 0x0040, 0x1513: 0xaeea, 0x1514: 0x03c2, 0x1515: 0xaefa, 0x1516: 0xaf0a, 0x1517: 0x7d75, + 0x1518: 0x7d95, 0x1519: 0x0040, 0x151a: 0x0040, 0x151b: 0x0040, 0x151c: 0x0040, 0x151d: 0x0040, + 0x151e: 0x0040, 0x151f: 0x0040, 0x1520: 0x3308, 0x1521: 0x3308, 0x1522: 0x3308, 0x1523: 0x3308, + 0x1524: 0x3308, 0x1525: 0x3308, 0x1526: 0x3308, 0x1527: 0x3308, 0x1528: 0x3308, 0x1529: 0x3308, + 0x152a: 0x3308, 0x152b: 0x3308, 0x152c: 0x3308, 0x152d: 0x3308, 0x152e: 0x3308, 0x152f: 0x3308, + 0x1530: 0x0040, 0x1531: 0x7db5, 0x1532: 0x7dd5, 0x1533: 0xaf1a, 0x1534: 0xaf1a, 0x1535: 0x1fd2, + 0x1536: 0x1fe2, 0x1537: 0xaf2a, 0x1538: 0xaf3a, 0x1539: 0x7df5, 0x153a: 0x7e15, 0x153b: 0x7e35, + 0x153c: 0x7df5, 0x153d: 0x7e55, 0x153e: 0x7e75, 0x153f: 0x7e55, + // Block 0x55, offset 0x1540 + 0x1540: 0x7e95, 0x1541: 0x7eb5, 0x1542: 0x7ed5, 0x1543: 0x7eb5, 0x1544: 0x7ef5, 0x1545: 0x0018, + 0x1546: 0x0018, 0x1547: 0xaf4a, 0x1548: 0xaf5a, 0x1549: 0x7f16, 0x154a: 0x7f36, 0x154b: 0x7f56, + 0x154c: 0x7f76, 0x154d: 0xaf1a, 0x154e: 0xaf1a, 0x154f: 0xaf1a, 0x1550: 0xaeda, 0x1551: 0x7f95, + 0x1552: 0x0040, 0x1553: 0x0040, 0x1554: 0x03c2, 0x1555: 0xaeea, 0x1556: 0xaf0a, 0x1557: 0xaefa, + 0x1558: 0x7fb5, 0x1559: 0x1fd2, 0x155a: 0x1fe2, 0x155b: 0xaf2a, 0x155c: 0xaf3a, 0x155d: 0x7e95, + 0x155e: 0x7ef5, 0x155f: 0xaf6a, 0x1560: 0xaf7a, 0x1561: 0xaf8a, 0x1562: 0x1fb2, 0x1563: 0xaf99, + 0x1564: 0xafaa, 0x1565: 0xafba, 0x1566: 0x1fc2, 0x1567: 0x0040, 0x1568: 0xafca, 0x1569: 0xafda, + 0x156a: 0xafea, 0x156b: 0xaffa, 0x156c: 0x0040, 0x156d: 0x0040, 0x156e: 0x0040, 0x156f: 0x0040, + 0x1570: 0x7fd6, 0x1571: 0xb009, 0x1572: 0x7ff6, 0x1573: 0x0808, 0x1574: 0x8016, 0x1575: 0x0040, + 0x1576: 0x8036, 0x1577: 0xb031, 0x1578: 0x8056, 0x1579: 0xb059, 0x157a: 0x8076, 0x157b: 0xb081, + 0x157c: 0x8096, 0x157d: 0xb0a9, 0x157e: 0x80b6, 0x157f: 0xb0d1, + // Block 0x56, offset 0x1580 + 0x1580: 0xb0f9, 0x1581: 0xb111, 0x1582: 0xb111, 0x1583: 0xb129, 0x1584: 0xb129, 0x1585: 0xb141, + 0x1586: 0xb141, 0x1587: 0xb159, 0x1588: 0xb159, 0x1589: 0xb171, 0x158a: 0xb171, 0x158b: 0xb171, + 0x158c: 0xb171, 0x158d: 0xb189, 0x158e: 0xb189, 0x158f: 0xb1a1, 0x1590: 0xb1a1, 0x1591: 0xb1a1, + 0x1592: 0xb1a1, 0x1593: 0xb1b9, 0x1594: 0xb1b9, 0x1595: 0xb1d1, 0x1596: 0xb1d1, 0x1597: 0xb1d1, + 0x1598: 0xb1d1, 0x1599: 0xb1e9, 0x159a: 0xb1e9, 0x159b: 0xb1e9, 0x159c: 0xb1e9, 0x159d: 0xb201, + 0x159e: 0xb201, 0x159f: 0xb201, 0x15a0: 0xb201, 0x15a1: 0xb219, 0x15a2: 0xb219, 0x15a3: 0xb219, + 0x15a4: 0xb219, 0x15a5: 0xb231, 0x15a6: 0xb231, 0x15a7: 0xb231, 0x15a8: 0xb231, 0x15a9: 0xb249, + 0x15aa: 0xb249, 0x15ab: 0xb261, 0x15ac: 0xb261, 0x15ad: 0xb279, 0x15ae: 0xb279, 0x15af: 0xb291, + 0x15b0: 0xb291, 0x15b1: 0xb2a9, 0x15b2: 0xb2a9, 0x15b3: 0xb2a9, 0x15b4: 0xb2a9, 0x15b5: 0xb2c1, + 0x15b6: 0xb2c1, 0x15b7: 0xb2c1, 0x15b8: 0xb2c1, 0x15b9: 0xb2d9, 0x15ba: 0xb2d9, 0x15bb: 0xb2d9, + 0x15bc: 0xb2d9, 0x15bd: 0xb2f1, 0x15be: 0xb2f1, 0x15bf: 0xb2f1, + // Block 0x57, offset 0x15c0 + 0x15c0: 0xb2f1, 0x15c1: 0xb309, 0x15c2: 0xb309, 0x15c3: 0xb309, 0x15c4: 0xb309, 0x15c5: 0xb321, + 0x15c6: 0xb321, 0x15c7: 0xb321, 0x15c8: 0xb321, 0x15c9: 0xb339, 0x15ca: 0xb339, 0x15cb: 0xb339, + 0x15cc: 0xb339, 0x15cd: 0xb351, 0x15ce: 0xb351, 0x15cf: 0xb351, 0x15d0: 0xb351, 0x15d1: 0xb369, + 0x15d2: 0xb369, 0x15d3: 0xb369, 0x15d4: 0xb369, 0x15d5: 0xb381, 0x15d6: 0xb381, 0x15d7: 0xb381, + 0x15d8: 0xb381, 0x15d9: 0xb399, 0x15da: 0xb399, 0x15db: 0xb399, 0x15dc: 0xb399, 0x15dd: 0xb3b1, + 0x15de: 0xb3b1, 0x15df: 0xb3b1, 0x15e0: 0xb3b1, 0x15e1: 0xb3c9, 0x15e2: 0xb3c9, 0x15e3: 0xb3c9, + 0x15e4: 0xb3c9, 0x15e5: 0xb3e1, 0x15e6: 0xb3e1, 0x15e7: 0xb3e1, 0x15e8: 0xb3e1, 0x15e9: 0xb3f9, + 0x15ea: 0xb3f9, 0x15eb: 0xb3f9, 0x15ec: 0xb3f9, 0x15ed: 0xb411, 0x15ee: 0xb411, 0x15ef: 0x7ab1, + 0x15f0: 0x7ab1, 0x15f1: 0xb429, 0x15f2: 0xb429, 0x15f3: 0xb429, 0x15f4: 0xb429, 0x15f5: 0xb441, + 0x15f6: 0xb441, 0x15f7: 0xb469, 0x15f8: 0xb469, 0x15f9: 0xb491, 0x15fa: 0xb491, 0x15fb: 0xb4b9, + 0x15fc: 0xb4b9, 0x15fd: 0x0040, 0x15fe: 0x0040, 0x15ff: 0x03c0, + // Block 0x58, offset 0x1600 + 0x1600: 0x0040, 0x1601: 0xaefa, 0x1602: 0xb4e2, 0x1603: 0xaf6a, 0x1604: 0xafda, 0x1605: 0xafea, + 0x1606: 0xaf7a, 0x1607: 0xb4f2, 0x1608: 0x1fd2, 0x1609: 0x1fe2, 0x160a: 0xaf8a, 0x160b: 0x1fb2, + 0x160c: 0xaeda, 0x160d: 0xaf99, 0x160e: 0x29d1, 0x160f: 0xb502, 0x1610: 0x1f41, 0x1611: 0x00c9, + 0x1612: 0x0069, 0x1613: 0x0079, 0x1614: 0x1f51, 0x1615: 0x1f61, 0x1616: 0x1f71, 0x1617: 0x1f81, + 0x1618: 0x1f91, 0x1619: 0x1fa1, 0x161a: 0xaeea, 0x161b: 0x03c2, 0x161c: 0xafaa, 0x161d: 0x1fc2, + 0x161e: 0xafba, 0x161f: 0xaf0a, 0x1620: 0xaffa, 0x1621: 0x0039, 0x1622: 0x0ee9, 0x1623: 0x1159, + 0x1624: 0x0ef9, 0x1625: 0x0f09, 0x1626: 0x1199, 0x1627: 0x0f31, 0x1628: 0x0249, 0x1629: 0x0f41, + 0x162a: 0x0259, 0x162b: 0x0f51, 0x162c: 0x0359, 0x162d: 0x0f61, 0x162e: 0x0f71, 0x162f: 0x00d9, + 0x1630: 0x0f99, 0x1631: 0x2039, 0x1632: 0x0269, 0x1633: 0x01d9, 0x1634: 0x0fa9, 0x1635: 0x0fb9, + 0x1636: 0x1089, 0x1637: 0x0279, 0x1638: 0x0369, 0x1639: 0x0289, 0x163a: 0x13d1, 0x163b: 0xaf4a, + 0x163c: 0xafca, 0x163d: 0xaf5a, 0x163e: 0xb512, 0x163f: 0xaf1a, + // Block 0x59, offset 0x1640 + 0x1640: 0x1caa, 0x1641: 0x0039, 0x1642: 0x0ee9, 0x1643: 0x1159, 0x1644: 0x0ef9, 0x1645: 0x0f09, + 0x1646: 0x1199, 0x1647: 0x0f31, 0x1648: 0x0249, 0x1649: 0x0f41, 0x164a: 0x0259, 0x164b: 0x0f51, + 0x164c: 0x0359, 0x164d: 0x0f61, 0x164e: 0x0f71, 0x164f: 0x00d9, 0x1650: 0x0f99, 0x1651: 0x2039, + 0x1652: 0x0269, 0x1653: 0x01d9, 0x1654: 0x0fa9, 0x1655: 0x0fb9, 0x1656: 0x1089, 0x1657: 0x0279, + 0x1658: 0x0369, 0x1659: 0x0289, 0x165a: 0x13d1, 0x165b: 0xaf2a, 0x165c: 0xb522, 0x165d: 0xaf3a, + 0x165e: 0xb532, 0x165f: 0x80d5, 0x1660: 0x80f5, 0x1661: 0x29d1, 0x1662: 0x8115, 0x1663: 0x8115, + 0x1664: 0x8135, 0x1665: 0x8155, 0x1666: 0x8175, 0x1667: 0x8195, 0x1668: 0x81b5, 0x1669: 0x81d5, + 0x166a: 0x81f5, 0x166b: 0x8215, 0x166c: 0x8235, 0x166d: 0x8255, 0x166e: 0x8275, 0x166f: 0x8295, + 0x1670: 0x82b5, 0x1671: 0x82d5, 0x1672: 0x82f5, 0x1673: 0x8315, 0x1674: 0x8335, 0x1675: 0x8355, + 0x1676: 0x8375, 0x1677: 0x8395, 0x1678: 0x83b5, 0x1679: 0x83d5, 0x167a: 0x83f5, 0x167b: 0x8415, + 0x167c: 0x81b5, 0x167d: 0x8435, 0x167e: 0x8455, 0x167f: 0x8215, + // Block 0x5a, offset 0x1680 + 0x1680: 0x8475, 0x1681: 0x8495, 0x1682: 0x84b5, 0x1683: 0x84d5, 0x1684: 0x84f5, 0x1685: 0x8515, + 0x1686: 0x8535, 0x1687: 0x8555, 0x1688: 0x84d5, 0x1689: 0x8575, 0x168a: 0x84d5, 0x168b: 0x8595, + 0x168c: 0x8595, 0x168d: 0x85b5, 0x168e: 0x85b5, 0x168f: 0x85d5, 0x1690: 0x8515, 0x1691: 0x85f5, + 0x1692: 0x8615, 0x1693: 0x85f5, 0x1694: 0x8635, 0x1695: 0x8615, 0x1696: 0x8655, 0x1697: 0x8655, + 0x1698: 0x8675, 0x1699: 0x8675, 0x169a: 0x8695, 0x169b: 0x8695, 0x169c: 0x8615, 0x169d: 0x8115, + 0x169e: 0x86b5, 0x169f: 0x86d5, 0x16a0: 0x0040, 0x16a1: 0x86f5, 0x16a2: 0x8715, 0x16a3: 0x8735, + 0x16a4: 0x8755, 0x16a5: 0x8735, 0x16a6: 0x8775, 0x16a7: 0x8795, 0x16a8: 0x87b5, 0x16a9: 0x87b5, + 0x16aa: 0x87d5, 0x16ab: 0x87d5, 0x16ac: 0x87f5, 0x16ad: 0x87f5, 0x16ae: 0x87d5, 0x16af: 0x87d5, + 0x16b0: 0x8815, 0x16b1: 0x8835, 0x16b2: 0x8855, 0x16b3: 0x8875, 0x16b4: 0x8895, 0x16b5: 0x88b5, + 0x16b6: 0x88b5, 0x16b7: 0x88b5, 0x16b8: 0x88d5, 0x16b9: 0x88d5, 0x16ba: 0x88d5, 0x16bb: 0x88d5, + 0x16bc: 0x87b5, 0x16bd: 0x87b5, 0x16be: 0x87b5, 0x16bf: 0x0040, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x0040, 0x16c1: 0x0040, 0x16c2: 0x8715, 0x16c3: 0x86f5, 0x16c4: 0x88f5, 0x16c5: 0x86f5, + 0x16c6: 0x8715, 0x16c7: 0x86f5, 0x16c8: 0x0040, 0x16c9: 0x0040, 0x16ca: 0x8915, 0x16cb: 0x8715, + 0x16cc: 0x8935, 0x16cd: 0x88f5, 0x16ce: 0x8935, 0x16cf: 0x8715, 0x16d0: 0x0040, 0x16d1: 0x0040, + 0x16d2: 0x8955, 0x16d3: 0x8975, 0x16d4: 0x8875, 0x16d5: 0x8935, 0x16d6: 0x88f5, 0x16d7: 0x8935, + 0x16d8: 0x0040, 0x16d9: 0x0040, 0x16da: 0x8995, 0x16db: 0x89b5, 0x16dc: 0x8995, 0x16dd: 0x0040, + 0x16de: 0x0040, 0x16df: 0x0040, 0x16e0: 0xb541, 0x16e1: 0xb559, 0x16e2: 0xb571, 0x16e3: 0x89d6, + 0x16e4: 0xb589, 0x16e5: 0xb5a1, 0x16e6: 0x89f5, 0x16e7: 0x0040, 0x16e8: 0x8a15, 0x16e9: 0x8a35, + 0x16ea: 0x8a55, 0x16eb: 0x8a35, 0x16ec: 0x8a75, 0x16ed: 0x8a95, 0x16ee: 0x8ab5, 0x16ef: 0x0040, + 0x16f0: 0x0040, 0x16f1: 0x0040, 0x16f2: 0x0040, 0x16f3: 0x0040, 0x16f4: 0x0040, 0x16f5: 0x0040, + 0x16f6: 0x0040, 0x16f7: 0x0040, 0x16f8: 0x0040, 0x16f9: 0x0340, 0x16fa: 0x0340, 0x16fb: 0x0340, + 0x16fc: 0x0040, 0x16fd: 0x0040, 0x16fe: 0x0040, 0x16ff: 0x0040, + // Block 0x5c, offset 0x1700 + 0x1700: 0x0a08, 0x1701: 0x0a08, 0x1702: 0x0a08, 0x1703: 0x0a08, 0x1704: 0x0a08, 0x1705: 0x0c08, + 0x1706: 0x0808, 0x1707: 0x0c08, 0x1708: 0x0818, 0x1709: 0x0c08, 0x170a: 0x0c08, 0x170b: 0x0808, + 0x170c: 0x0808, 0x170d: 0x0908, 0x170e: 0x0c08, 0x170f: 0x0c08, 0x1710: 0x0c08, 0x1711: 0x0c08, + 0x1712: 0x0c08, 0x1713: 0x0a08, 0x1714: 0x0a08, 0x1715: 0x0a08, 0x1716: 0x0a08, 0x1717: 0x0908, + 0x1718: 0x0a08, 0x1719: 0x0a08, 0x171a: 0x0a08, 0x171b: 0x0a08, 0x171c: 0x0a08, 0x171d: 0x0c08, + 0x171e: 0x0a08, 0x171f: 0x0a08, 0x1720: 0x0a08, 0x1721: 0x0c08, 0x1722: 0x0808, 0x1723: 0x0808, + 0x1724: 0x0c08, 0x1725: 0x3308, 0x1726: 0x3308, 0x1727: 0x0040, 0x1728: 0x0040, 0x1729: 0x0040, + 0x172a: 0x0040, 0x172b: 0x0a18, 0x172c: 0x0a18, 0x172d: 0x0a18, 0x172e: 0x0a18, 0x172f: 0x0c18, + 0x1730: 0x0818, 0x1731: 0x0818, 0x1732: 0x0818, 0x1733: 0x0818, 0x1734: 0x0818, 0x1735: 0x0818, + 0x1736: 0x0818, 0x1737: 0x0040, 0x1738: 0x0040, 0x1739: 0x0040, 0x173a: 0x0040, 0x173b: 0x0040, + 0x173c: 0x0040, 0x173d: 0x0040, 0x173e: 0x0040, 0x173f: 0x0040, + // Block 0x5d, offset 0x1740 + 0x1740: 0x0a08, 0x1741: 0x0c08, 0x1742: 0x0a08, 0x1743: 0x0c08, 0x1744: 0x0c08, 0x1745: 0x0c08, + 0x1746: 0x0a08, 0x1747: 0x0a08, 0x1748: 0x0a08, 0x1749: 0x0c08, 0x174a: 0x0a08, 0x174b: 0x0a08, + 0x174c: 0x0c08, 0x174d: 0x0a08, 0x174e: 0x0c08, 0x174f: 0x0c08, 0x1750: 0x0a08, 0x1751: 0x0c08, + 0x1752: 0x0040, 0x1753: 0x0040, 0x1754: 0x0040, 0x1755: 0x0040, 0x1756: 0x0040, 0x1757: 0x0040, + 0x1758: 0x0040, 0x1759: 0x0818, 0x175a: 0x0818, 0x175b: 0x0818, 0x175c: 0x0818, 0x175d: 0x0040, + 0x175e: 0x0040, 0x175f: 0x0040, 0x1760: 0x0040, 0x1761: 0x0040, 0x1762: 0x0040, 0x1763: 0x0040, + 0x1764: 0x0040, 0x1765: 0x0040, 0x1766: 0x0040, 0x1767: 0x0040, 0x1768: 0x0040, 0x1769: 0x0c18, + 0x176a: 0x0c18, 0x176b: 0x0c18, 0x176c: 0x0c18, 0x176d: 0x0a18, 0x176e: 0x0a18, 0x176f: 0x0818, + 0x1770: 0x0040, 0x1771: 0x0040, 0x1772: 0x0040, 0x1773: 0x0040, 0x1774: 0x0040, 0x1775: 0x0040, + 0x1776: 0x0040, 0x1777: 0x0040, 0x1778: 0x0040, 0x1779: 0x0040, 0x177a: 0x0040, 0x177b: 0x0040, + 0x177c: 0x0040, 0x177d: 0x0040, 0x177e: 0x0040, 0x177f: 0x0040, + // Block 0x5e, offset 0x1780 + 0x1780: 0x3308, 0x1781: 0x3308, 0x1782: 0x3008, 0x1783: 0x3008, 0x1784: 0x0040, 0x1785: 0x0008, + 0x1786: 0x0008, 0x1787: 0x0008, 0x1788: 0x0008, 0x1789: 0x0008, 0x178a: 0x0008, 0x178b: 0x0008, + 0x178c: 0x0008, 0x178d: 0x0040, 0x178e: 0x0040, 0x178f: 0x0008, 0x1790: 0x0008, 0x1791: 0x0040, + 0x1792: 0x0040, 0x1793: 0x0008, 0x1794: 0x0008, 0x1795: 0x0008, 0x1796: 0x0008, 0x1797: 0x0008, + 0x1798: 0x0008, 0x1799: 0x0008, 0x179a: 0x0008, 0x179b: 0x0008, 0x179c: 0x0008, 0x179d: 0x0008, + 0x179e: 0x0008, 0x179f: 0x0008, 0x17a0: 0x0008, 0x17a1: 0x0008, 0x17a2: 0x0008, 0x17a3: 0x0008, + 0x17a4: 0x0008, 0x17a5: 0x0008, 0x17a6: 0x0008, 0x17a7: 0x0008, 0x17a8: 0x0008, 0x17a9: 0x0040, + 0x17aa: 0x0008, 0x17ab: 0x0008, 0x17ac: 0x0008, 0x17ad: 0x0008, 0x17ae: 0x0008, 0x17af: 0x0008, + 0x17b0: 0x0008, 0x17b1: 0x0040, 0x17b2: 0x0008, 0x17b3: 0x0008, 0x17b4: 0x0040, 0x17b5: 0x0008, + 0x17b6: 0x0008, 0x17b7: 0x0008, 0x17b8: 0x0008, 0x17b9: 0x0008, 0x17ba: 0x0040, 0x17bb: 0x0040, + 0x17bc: 0x3308, 0x17bd: 0x0008, 0x17be: 0x3008, 0x17bf: 0x3008, + // Block 0x5f, offset 0x17c0 + 0x17c0: 0x3308, 0x17c1: 0x3008, 0x17c2: 0x3008, 0x17c3: 0x3008, 0x17c4: 0x3008, 0x17c5: 0x0040, + 0x17c6: 0x0040, 0x17c7: 0x3008, 0x17c8: 0x3008, 0x17c9: 0x0040, 0x17ca: 0x0040, 0x17cb: 0x3008, + 0x17cc: 0x3008, 0x17cd: 0x3808, 0x17ce: 0x0040, 0x17cf: 0x0040, 0x17d0: 0x0008, 0x17d1: 0x0040, + 0x17d2: 0x0040, 0x17d3: 0x0040, 0x17d4: 0x0040, 0x17d5: 0x0040, 0x17d6: 0x0040, 0x17d7: 0x3008, + 0x17d8: 0x0040, 0x17d9: 0x0040, 0x17da: 0x0040, 0x17db: 0x0040, 0x17dc: 0x0040, 0x17dd: 0x0008, + 0x17de: 0x0008, 0x17df: 0x0008, 0x17e0: 0x0008, 0x17e1: 0x0008, 0x17e2: 0x3008, 0x17e3: 0x3008, + 0x17e4: 0x0040, 0x17e5: 0x0040, 0x17e6: 0x3308, 0x17e7: 0x3308, 0x17e8: 0x3308, 0x17e9: 0x3308, + 0x17ea: 0x3308, 0x17eb: 0x3308, 0x17ec: 0x3308, 0x17ed: 0x0040, 0x17ee: 0x0040, 0x17ef: 0x0040, + 0x17f0: 0x3308, 0x17f1: 0x3308, 0x17f2: 0x3308, 0x17f3: 0x3308, 0x17f4: 0x3308, 0x17f5: 0x0040, + 0x17f6: 0x0040, 0x17f7: 0x0040, 0x17f8: 0x0040, 0x17f9: 0x0040, 0x17fa: 0x0040, 0x17fb: 0x0040, + 0x17fc: 0x0040, 0x17fd: 0x0040, 0x17fe: 0x0040, 0x17ff: 0x0040, + // Block 0x60, offset 0x1800 + 0x1800: 0x0039, 0x1801: 0x0ee9, 0x1802: 0x1159, 0x1803: 0x0ef9, 0x1804: 0x0f09, 0x1805: 0x1199, + 0x1806: 0x0f31, 0x1807: 0x0249, 0x1808: 0x0f41, 0x1809: 0x0259, 0x180a: 0x0f51, 0x180b: 0x0359, + 0x180c: 0x0f61, 0x180d: 0x0f71, 0x180e: 0x00d9, 0x180f: 0x0f99, 0x1810: 0x2039, 0x1811: 0x0269, + 0x1812: 0x01d9, 0x1813: 0x0fa9, 0x1814: 0x0fb9, 0x1815: 0x1089, 0x1816: 0x0279, 0x1817: 0x0369, + 0x1818: 0x0289, 0x1819: 0x13d1, 0x181a: 0x0039, 0x181b: 0x0ee9, 0x181c: 0x1159, 0x181d: 0x0ef9, + 0x181e: 0x0f09, 0x181f: 0x1199, 0x1820: 0x0f31, 0x1821: 0x0249, 0x1822: 0x0f41, 0x1823: 0x0259, + 0x1824: 0x0f51, 0x1825: 0x0359, 0x1826: 0x0f61, 0x1827: 0x0f71, 0x1828: 0x00d9, 0x1829: 0x0f99, + 0x182a: 0x2039, 0x182b: 0x0269, 0x182c: 0x01d9, 0x182d: 0x0fa9, 0x182e: 0x0fb9, 0x182f: 0x1089, + 0x1830: 0x0279, 0x1831: 0x0369, 0x1832: 0x0289, 0x1833: 0x13d1, 0x1834: 0x0039, 0x1835: 0x0ee9, + 0x1836: 0x1159, 0x1837: 0x0ef9, 0x1838: 0x0f09, 0x1839: 0x1199, 0x183a: 0x0f31, 0x183b: 0x0249, + 0x183c: 0x0f41, 0x183d: 0x0259, 0x183e: 0x0f51, 0x183f: 0x0359, + // Block 0x61, offset 0x1840 + 0x1840: 0x0f61, 0x1841: 0x0f71, 0x1842: 0x00d9, 0x1843: 0x0f99, 0x1844: 0x2039, 0x1845: 0x0269, + 0x1846: 0x01d9, 0x1847: 0x0fa9, 0x1848: 0x0fb9, 0x1849: 0x1089, 0x184a: 0x0279, 0x184b: 0x0369, + 0x184c: 0x0289, 0x184d: 0x13d1, 0x184e: 0x0039, 0x184f: 0x0ee9, 0x1850: 0x1159, 0x1851: 0x0ef9, + 0x1852: 0x0f09, 0x1853: 0x1199, 0x1854: 0x0f31, 0x1855: 0x0040, 0x1856: 0x0f41, 0x1857: 0x0259, + 0x1858: 0x0f51, 0x1859: 0x0359, 0x185a: 0x0f61, 0x185b: 0x0f71, 0x185c: 0x00d9, 0x185d: 0x0f99, + 0x185e: 0x2039, 0x185f: 0x0269, 0x1860: 0x01d9, 0x1861: 0x0fa9, 0x1862: 0x0fb9, 0x1863: 0x1089, + 0x1864: 0x0279, 0x1865: 0x0369, 0x1866: 0x0289, 0x1867: 0x13d1, 0x1868: 0x0039, 0x1869: 0x0ee9, + 0x186a: 0x1159, 0x186b: 0x0ef9, 0x186c: 0x0f09, 0x186d: 0x1199, 0x186e: 0x0f31, 0x186f: 0x0249, + 0x1870: 0x0f41, 0x1871: 0x0259, 0x1872: 0x0f51, 0x1873: 0x0359, 0x1874: 0x0f61, 0x1875: 0x0f71, + 0x1876: 0x00d9, 0x1877: 0x0f99, 0x1878: 0x2039, 0x1879: 0x0269, 0x187a: 0x01d9, 0x187b: 0x0fa9, + 0x187c: 0x0fb9, 0x187d: 0x1089, 0x187e: 0x0279, 0x187f: 0x0369, + // Block 0x62, offset 0x1880 + 0x1880: 0x0289, 0x1881: 0x13d1, 0x1882: 0x0039, 0x1883: 0x0ee9, 0x1884: 0x1159, 0x1885: 0x0ef9, + 0x1886: 0x0f09, 0x1887: 0x1199, 0x1888: 0x0f31, 0x1889: 0x0249, 0x188a: 0x0f41, 0x188b: 0x0259, + 0x188c: 0x0f51, 0x188d: 0x0359, 0x188e: 0x0f61, 0x188f: 0x0f71, 0x1890: 0x00d9, 0x1891: 0x0f99, + 0x1892: 0x2039, 0x1893: 0x0269, 0x1894: 0x01d9, 0x1895: 0x0fa9, 0x1896: 0x0fb9, 0x1897: 0x1089, + 0x1898: 0x0279, 0x1899: 0x0369, 0x189a: 0x0289, 0x189b: 0x13d1, 0x189c: 0x0039, 0x189d: 0x0040, + 0x189e: 0x1159, 0x189f: 0x0ef9, 0x18a0: 0x0040, 0x18a1: 0x0040, 0x18a2: 0x0f31, 0x18a3: 0x0040, + 0x18a4: 0x0040, 0x18a5: 0x0259, 0x18a6: 0x0f51, 0x18a7: 0x0040, 0x18a8: 0x0040, 0x18a9: 0x0f71, + 0x18aa: 0x00d9, 0x18ab: 0x0f99, 0x18ac: 0x2039, 0x18ad: 0x0040, 0x18ae: 0x01d9, 0x18af: 0x0fa9, + 0x18b0: 0x0fb9, 0x18b1: 0x1089, 0x18b2: 0x0279, 0x18b3: 0x0369, 0x18b4: 0x0289, 0x18b5: 0x13d1, + 0x18b6: 0x0039, 0x18b7: 0x0ee9, 0x18b8: 0x1159, 0x18b9: 0x0ef9, 0x18ba: 0x0040, 0x18bb: 0x1199, + 0x18bc: 0x0040, 0x18bd: 0x0249, 0x18be: 0x0f41, 0x18bf: 0x0259, + // Block 0x63, offset 0x18c0 + 0x18c0: 0x0f51, 0x18c1: 0x0359, 0x18c2: 0x0f61, 0x18c3: 0x0f71, 0x18c4: 0x0040, 0x18c5: 0x0f99, + 0x18c6: 0x2039, 0x18c7: 0x0269, 0x18c8: 0x01d9, 0x18c9: 0x0fa9, 0x18ca: 0x0fb9, 0x18cb: 0x1089, + 0x18cc: 0x0279, 0x18cd: 0x0369, 0x18ce: 0x0289, 0x18cf: 0x13d1, 0x18d0: 0x0039, 0x18d1: 0x0ee9, + 0x18d2: 0x1159, 0x18d3: 0x0ef9, 0x18d4: 0x0f09, 0x18d5: 0x1199, 0x18d6: 0x0f31, 0x18d7: 0x0249, + 0x18d8: 0x0f41, 0x18d9: 0x0259, 0x18da: 0x0f51, 0x18db: 0x0359, 0x18dc: 0x0f61, 0x18dd: 0x0f71, + 0x18de: 0x00d9, 0x18df: 0x0f99, 0x18e0: 0x2039, 0x18e1: 0x0269, 0x18e2: 0x01d9, 0x18e3: 0x0fa9, + 0x18e4: 0x0fb9, 0x18e5: 0x1089, 0x18e6: 0x0279, 0x18e7: 0x0369, 0x18e8: 0x0289, 0x18e9: 0x13d1, + 0x18ea: 0x0039, 0x18eb: 0x0ee9, 0x18ec: 0x1159, 0x18ed: 0x0ef9, 0x18ee: 0x0f09, 0x18ef: 0x1199, + 0x18f0: 0x0f31, 0x18f1: 0x0249, 0x18f2: 0x0f41, 0x18f3: 0x0259, 0x18f4: 0x0f51, 0x18f5: 0x0359, + 0x18f6: 0x0f61, 0x18f7: 0x0f71, 0x18f8: 0x00d9, 0x18f9: 0x0f99, 0x18fa: 0x2039, 0x18fb: 0x0269, + 0x18fc: 0x01d9, 0x18fd: 0x0fa9, 0x18fe: 0x0fb9, 0x18ff: 0x1089, + // Block 0x64, offset 0x1900 + 0x1900: 0x0279, 0x1901: 0x0369, 0x1902: 0x0289, 0x1903: 0x13d1, 0x1904: 0x0039, 0x1905: 0x0ee9, + 0x1906: 0x0040, 0x1907: 0x0ef9, 0x1908: 0x0f09, 0x1909: 0x1199, 0x190a: 0x0f31, 0x190b: 0x0040, + 0x190c: 0x0040, 0x190d: 0x0259, 0x190e: 0x0f51, 0x190f: 0x0359, 0x1910: 0x0f61, 0x1911: 0x0f71, + 0x1912: 0x00d9, 0x1913: 0x0f99, 0x1914: 0x2039, 0x1915: 0x0040, 0x1916: 0x01d9, 0x1917: 0x0fa9, + 0x1918: 0x0fb9, 0x1919: 0x1089, 0x191a: 0x0279, 0x191b: 0x0369, 0x191c: 0x0289, 0x191d: 0x0040, + 0x191e: 0x0039, 0x191f: 0x0ee9, 0x1920: 0x1159, 0x1921: 0x0ef9, 0x1922: 0x0f09, 0x1923: 0x1199, + 0x1924: 0x0f31, 0x1925: 0x0249, 0x1926: 0x0f41, 0x1927: 0x0259, 0x1928: 0x0f51, 0x1929: 0x0359, + 0x192a: 0x0f61, 0x192b: 0x0f71, 0x192c: 0x00d9, 0x192d: 0x0f99, 0x192e: 0x2039, 0x192f: 0x0269, + 0x1930: 0x01d9, 0x1931: 0x0fa9, 0x1932: 0x0fb9, 0x1933: 0x1089, 0x1934: 0x0279, 0x1935: 0x0369, + 0x1936: 0x0289, 0x1937: 0x13d1, 0x1938: 0x0039, 0x1939: 0x0ee9, 0x193a: 0x0040, 0x193b: 0x0ef9, + 0x193c: 0x0f09, 0x193d: 0x1199, 0x193e: 0x0f31, 0x193f: 0x0040, + // Block 0x65, offset 0x1940 + 0x1940: 0x0f41, 0x1941: 0x0259, 0x1942: 0x0f51, 0x1943: 0x0359, 0x1944: 0x0f61, 0x1945: 0x0040, + 0x1946: 0x00d9, 0x1947: 0x0040, 0x1948: 0x0040, 0x1949: 0x0040, 0x194a: 0x01d9, 0x194b: 0x0fa9, + 0x194c: 0x0fb9, 0x194d: 0x1089, 0x194e: 0x0279, 0x194f: 0x0369, 0x1950: 0x0289, 0x1951: 0x0040, + 0x1952: 0x0039, 0x1953: 0x0ee9, 0x1954: 0x1159, 0x1955: 0x0ef9, 0x1956: 0x0f09, 0x1957: 0x1199, + 0x1958: 0x0f31, 0x1959: 0x0249, 0x195a: 0x0f41, 0x195b: 0x0259, 0x195c: 0x0f51, 0x195d: 0x0359, + 0x195e: 0x0f61, 0x195f: 0x0f71, 0x1960: 0x00d9, 0x1961: 0x0f99, 0x1962: 0x2039, 0x1963: 0x0269, + 0x1964: 0x01d9, 0x1965: 0x0fa9, 0x1966: 0x0fb9, 0x1967: 0x1089, 0x1968: 0x0279, 0x1969: 0x0369, + 0x196a: 0x0289, 0x196b: 0x13d1, 0x196c: 0x0039, 0x196d: 0x0ee9, 0x196e: 0x1159, 0x196f: 0x0ef9, + 0x1970: 0x0f09, 0x1971: 0x1199, 0x1972: 0x0f31, 0x1973: 0x0249, 0x1974: 0x0f41, 0x1975: 0x0259, + 0x1976: 0x0f51, 0x1977: 0x0359, 0x1978: 0x0f61, 0x1979: 0x0f71, 0x197a: 0x00d9, 0x197b: 0x0f99, + 0x197c: 0x2039, 0x197d: 0x0269, 0x197e: 0x01d9, 0x197f: 0x0fa9, + // Block 0x66, offset 0x1980 + 0x1980: 0x0fb9, 0x1981: 0x1089, 0x1982: 0x0279, 0x1983: 0x0369, 0x1984: 0x0289, 0x1985: 0x13d1, + 0x1986: 0x0039, 0x1987: 0x0ee9, 0x1988: 0x1159, 0x1989: 0x0ef9, 0x198a: 0x0f09, 0x198b: 0x1199, + 0x198c: 0x0f31, 0x198d: 0x0249, 0x198e: 0x0f41, 0x198f: 0x0259, 0x1990: 0x0f51, 0x1991: 0x0359, + 0x1992: 0x0f61, 0x1993: 0x0f71, 0x1994: 0x00d9, 0x1995: 0x0f99, 0x1996: 0x2039, 0x1997: 0x0269, + 0x1998: 0x01d9, 0x1999: 0x0fa9, 0x199a: 0x0fb9, 0x199b: 0x1089, 0x199c: 0x0279, 0x199d: 0x0369, + 0x199e: 0x0289, 0x199f: 0x13d1, 0x19a0: 0x0039, 0x19a1: 0x0ee9, 0x19a2: 0x1159, 0x19a3: 0x0ef9, + 0x19a4: 0x0f09, 0x19a5: 0x1199, 0x19a6: 0x0f31, 0x19a7: 0x0249, 0x19a8: 0x0f41, 0x19a9: 0x0259, + 0x19aa: 0x0f51, 0x19ab: 0x0359, 0x19ac: 0x0f61, 0x19ad: 0x0f71, 0x19ae: 0x00d9, 0x19af: 0x0f99, + 0x19b0: 0x2039, 0x19b1: 0x0269, 0x19b2: 0x01d9, 0x19b3: 0x0fa9, 0x19b4: 0x0fb9, 0x19b5: 0x1089, + 0x19b6: 0x0279, 0x19b7: 0x0369, 0x19b8: 0x0289, 0x19b9: 0x13d1, 0x19ba: 0x0039, 0x19bb: 0x0ee9, + 0x19bc: 0x1159, 0x19bd: 0x0ef9, 0x19be: 0x0f09, 0x19bf: 0x1199, + // Block 0x67, offset 0x19c0 + 0x19c0: 0x0f31, 0x19c1: 0x0249, 0x19c2: 0x0f41, 0x19c3: 0x0259, 0x19c4: 0x0f51, 0x19c5: 0x0359, + 0x19c6: 0x0f61, 0x19c7: 0x0f71, 0x19c8: 0x00d9, 0x19c9: 0x0f99, 0x19ca: 0x2039, 0x19cb: 0x0269, + 0x19cc: 0x01d9, 0x19cd: 0x0fa9, 0x19ce: 0x0fb9, 0x19cf: 0x1089, 0x19d0: 0x0279, 0x19d1: 0x0369, + 0x19d2: 0x0289, 0x19d3: 0x13d1, 0x19d4: 0x0039, 0x19d5: 0x0ee9, 0x19d6: 0x1159, 0x19d7: 0x0ef9, + 0x19d8: 0x0f09, 0x19d9: 0x1199, 0x19da: 0x0f31, 0x19db: 0x0249, 0x19dc: 0x0f41, 0x19dd: 0x0259, + 0x19de: 0x0f51, 0x19df: 0x0359, 0x19e0: 0x0f61, 0x19e1: 0x0f71, 0x19e2: 0x00d9, 0x19e3: 0x0f99, + 0x19e4: 0x2039, 0x19e5: 0x0269, 0x19e6: 0x01d9, 0x19e7: 0x0fa9, 0x19e8: 0x0fb9, 0x19e9: 0x1089, + 0x19ea: 0x0279, 0x19eb: 0x0369, 0x19ec: 0x0289, 0x19ed: 0x13d1, 0x19ee: 0x0039, 0x19ef: 0x0ee9, + 0x19f0: 0x1159, 0x19f1: 0x0ef9, 0x19f2: 0x0f09, 0x19f3: 0x1199, 0x19f4: 0x0f31, 0x19f5: 0x0249, + 0x19f6: 0x0f41, 0x19f7: 0x0259, 0x19f8: 0x0f51, 0x19f9: 0x0359, 0x19fa: 0x0f61, 0x19fb: 0x0f71, + 0x19fc: 0x00d9, 0x19fd: 0x0f99, 0x19fe: 0x2039, 0x19ff: 0x0269, + // Block 0x68, offset 0x1a00 + 0x1a00: 0x01d9, 0x1a01: 0x0fa9, 0x1a02: 0x0fb9, 0x1a03: 0x1089, 0x1a04: 0x0279, 0x1a05: 0x0369, + 0x1a06: 0x0289, 0x1a07: 0x13d1, 0x1a08: 0x0039, 0x1a09: 0x0ee9, 0x1a0a: 0x1159, 0x1a0b: 0x0ef9, + 0x1a0c: 0x0f09, 0x1a0d: 0x1199, 0x1a0e: 0x0f31, 0x1a0f: 0x0249, 0x1a10: 0x0f41, 0x1a11: 0x0259, + 0x1a12: 0x0f51, 0x1a13: 0x0359, 0x1a14: 0x0f61, 0x1a15: 0x0f71, 0x1a16: 0x00d9, 0x1a17: 0x0f99, + 0x1a18: 0x2039, 0x1a19: 0x0269, 0x1a1a: 0x01d9, 0x1a1b: 0x0fa9, 0x1a1c: 0x0fb9, 0x1a1d: 0x1089, + 0x1a1e: 0x0279, 0x1a1f: 0x0369, 0x1a20: 0x0289, 0x1a21: 0x13d1, 0x1a22: 0x0039, 0x1a23: 0x0ee9, + 0x1a24: 0x1159, 0x1a25: 0x0ef9, 0x1a26: 0x0f09, 0x1a27: 0x1199, 0x1a28: 0x0f31, 0x1a29: 0x0249, + 0x1a2a: 0x0f41, 0x1a2b: 0x0259, 0x1a2c: 0x0f51, 0x1a2d: 0x0359, 0x1a2e: 0x0f61, 0x1a2f: 0x0f71, + 0x1a30: 0x00d9, 0x1a31: 0x0f99, 0x1a32: 0x2039, 0x1a33: 0x0269, 0x1a34: 0x01d9, 0x1a35: 0x0fa9, + 0x1a36: 0x0fb9, 0x1a37: 0x1089, 0x1a38: 0x0279, 0x1a39: 0x0369, 0x1a3a: 0x0289, 0x1a3b: 0x13d1, + 0x1a3c: 0x0039, 0x1a3d: 0x0ee9, 0x1a3e: 0x1159, 0x1a3f: 0x0ef9, + // Block 0x69, offset 0x1a40 + 0x1a40: 0x0f09, 0x1a41: 0x1199, 0x1a42: 0x0f31, 0x1a43: 0x0249, 0x1a44: 0x0f41, 0x1a45: 0x0259, + 0x1a46: 0x0f51, 0x1a47: 0x0359, 0x1a48: 0x0f61, 0x1a49: 0x0f71, 0x1a4a: 0x00d9, 0x1a4b: 0x0f99, + 0x1a4c: 0x2039, 0x1a4d: 0x0269, 0x1a4e: 0x01d9, 0x1a4f: 0x0fa9, 0x1a50: 0x0fb9, 0x1a51: 0x1089, + 0x1a52: 0x0279, 0x1a53: 0x0369, 0x1a54: 0x0289, 0x1a55: 0x13d1, 0x1a56: 0x0039, 0x1a57: 0x0ee9, + 0x1a58: 0x1159, 0x1a59: 0x0ef9, 0x1a5a: 0x0f09, 0x1a5b: 0x1199, 0x1a5c: 0x0f31, 0x1a5d: 0x0249, + 0x1a5e: 0x0f41, 0x1a5f: 0x0259, 0x1a60: 0x0f51, 0x1a61: 0x0359, 0x1a62: 0x0f61, 0x1a63: 0x0f71, + 0x1a64: 0x00d9, 0x1a65: 0x0f99, 0x1a66: 0x2039, 0x1a67: 0x0269, 0x1a68: 0x01d9, 0x1a69: 0x0fa9, + 0x1a6a: 0x0fb9, 0x1a6b: 0x1089, 0x1a6c: 0x0279, 0x1a6d: 0x0369, 0x1a6e: 0x0289, 0x1a6f: 0x13d1, + 0x1a70: 0x0039, 0x1a71: 0x0ee9, 0x1a72: 0x1159, 0x1a73: 0x0ef9, 0x1a74: 0x0f09, 0x1a75: 0x1199, + 0x1a76: 0x0f31, 0x1a77: 0x0249, 0x1a78: 0x0f41, 0x1a79: 0x0259, 0x1a7a: 0x0f51, 0x1a7b: 0x0359, + 0x1a7c: 0x0f61, 0x1a7d: 0x0f71, 0x1a7e: 0x00d9, 0x1a7f: 0x0f99, + // Block 0x6a, offset 0x1a80 + 0x1a80: 0x2039, 0x1a81: 0x0269, 0x1a82: 0x01d9, 0x1a83: 0x0fa9, 0x1a84: 0x0fb9, 0x1a85: 0x1089, + 0x1a86: 0x0279, 0x1a87: 0x0369, 0x1a88: 0x0289, 0x1a89: 0x13d1, 0x1a8a: 0x0039, 0x1a8b: 0x0ee9, + 0x1a8c: 0x1159, 0x1a8d: 0x0ef9, 0x1a8e: 0x0f09, 0x1a8f: 0x1199, 0x1a90: 0x0f31, 0x1a91: 0x0249, + 0x1a92: 0x0f41, 0x1a93: 0x0259, 0x1a94: 0x0f51, 0x1a95: 0x0359, 0x1a96: 0x0f61, 0x1a97: 0x0f71, + 0x1a98: 0x00d9, 0x1a99: 0x0f99, 0x1a9a: 0x2039, 0x1a9b: 0x0269, 0x1a9c: 0x01d9, 0x1a9d: 0x0fa9, + 0x1a9e: 0x0fb9, 0x1a9f: 0x1089, 0x1aa0: 0x0279, 0x1aa1: 0x0369, 0x1aa2: 0x0289, 0x1aa3: 0x13d1, + 0x1aa4: 0xba81, 0x1aa5: 0xba99, 0x1aa6: 0x0040, 0x1aa7: 0x0040, 0x1aa8: 0xbab1, 0x1aa9: 0x1099, + 0x1aaa: 0x10b1, 0x1aab: 0x10c9, 0x1aac: 0xbac9, 0x1aad: 0xbae1, 0x1aae: 0xbaf9, 0x1aaf: 0x1429, + 0x1ab0: 0x1a31, 0x1ab1: 0xbb11, 0x1ab2: 0xbb29, 0x1ab3: 0xbb41, 0x1ab4: 0xbb59, 0x1ab5: 0xbb71, + 0x1ab6: 0xbb89, 0x1ab7: 0x2109, 0x1ab8: 0x1111, 0x1ab9: 0x1429, 0x1aba: 0xbba1, 0x1abb: 0xbbb9, + 0x1abc: 0xbbd1, 0x1abd: 0x10e1, 0x1abe: 0x10f9, 0x1abf: 0xbbe9, + // Block 0x6b, offset 0x1ac0 + 0x1ac0: 0x2079, 0x1ac1: 0xbc01, 0x1ac2: 0xbab1, 0x1ac3: 0x1099, 0x1ac4: 0x10b1, 0x1ac5: 0x10c9, + 0x1ac6: 0xbac9, 0x1ac7: 0xbae1, 0x1ac8: 0xbaf9, 0x1ac9: 0x1429, 0x1aca: 0x1a31, 0x1acb: 0xbb11, + 0x1acc: 0xbb29, 0x1acd: 0xbb41, 0x1ace: 0xbb59, 0x1acf: 0xbb71, 0x1ad0: 0xbb89, 0x1ad1: 0x2109, + 0x1ad2: 0x1111, 0x1ad3: 0xbba1, 0x1ad4: 0xbba1, 0x1ad5: 0xbbb9, 0x1ad6: 0xbbd1, 0x1ad7: 0x10e1, + 0x1ad8: 0x10f9, 0x1ad9: 0xbbe9, 0x1ada: 0x2079, 0x1adb: 0xbc21, 0x1adc: 0xbac9, 0x1add: 0x1429, + 0x1ade: 0xbb11, 0x1adf: 0x10e1, 0x1ae0: 0x1111, 0x1ae1: 0x2109, 0x1ae2: 0xbab1, 0x1ae3: 0x1099, + 0x1ae4: 0x10b1, 0x1ae5: 0x10c9, 0x1ae6: 0xbac9, 0x1ae7: 0xbae1, 0x1ae8: 0xbaf9, 0x1ae9: 0x1429, + 0x1aea: 0x1a31, 0x1aeb: 0xbb11, 0x1aec: 0xbb29, 0x1aed: 0xbb41, 0x1aee: 0xbb59, 0x1aef: 0xbb71, + 0x1af0: 0xbb89, 0x1af1: 0x2109, 0x1af2: 0x1111, 0x1af3: 0x1429, 0x1af4: 0xbba1, 0x1af5: 0xbbb9, + 0x1af6: 0xbbd1, 0x1af7: 0x10e1, 0x1af8: 0x10f9, 0x1af9: 0xbbe9, 0x1afa: 0x2079, 0x1afb: 0xbc01, + 0x1afc: 0xbab1, 0x1afd: 0x1099, 0x1afe: 0x10b1, 0x1aff: 0x10c9, + // Block 0x6c, offset 0x1b00 + 0x1b00: 0xbac9, 0x1b01: 0xbae1, 0x1b02: 0xbaf9, 0x1b03: 0x1429, 0x1b04: 0x1a31, 0x1b05: 0xbb11, + 0x1b06: 0xbb29, 0x1b07: 0xbb41, 0x1b08: 0xbb59, 0x1b09: 0xbb71, 0x1b0a: 0xbb89, 0x1b0b: 0x2109, + 0x1b0c: 0x1111, 0x1b0d: 0xbba1, 0x1b0e: 0xbba1, 0x1b0f: 0xbbb9, 0x1b10: 0xbbd1, 0x1b11: 0x10e1, + 0x1b12: 0x10f9, 0x1b13: 0xbbe9, 0x1b14: 0x2079, 0x1b15: 0xbc21, 0x1b16: 0xbac9, 0x1b17: 0x1429, + 0x1b18: 0xbb11, 0x1b19: 0x10e1, 0x1b1a: 0x1111, 0x1b1b: 0x2109, 0x1b1c: 0xbab1, 0x1b1d: 0x1099, + 0x1b1e: 0x10b1, 0x1b1f: 0x10c9, 0x1b20: 0xbac9, 0x1b21: 0xbae1, 0x1b22: 0xbaf9, 0x1b23: 0x1429, + 0x1b24: 0x1a31, 0x1b25: 0xbb11, 0x1b26: 0xbb29, 0x1b27: 0xbb41, 0x1b28: 0xbb59, 0x1b29: 0xbb71, + 0x1b2a: 0xbb89, 0x1b2b: 0x2109, 0x1b2c: 0x1111, 0x1b2d: 0x1429, 0x1b2e: 0xbba1, 0x1b2f: 0xbbb9, + 0x1b30: 0xbbd1, 0x1b31: 0x10e1, 0x1b32: 0x10f9, 0x1b33: 0xbbe9, 0x1b34: 0x2079, 0x1b35: 0xbc01, + 0x1b36: 0xbab1, 0x1b37: 0x1099, 0x1b38: 0x10b1, 0x1b39: 0x10c9, 0x1b3a: 0xbac9, 0x1b3b: 0xbae1, + 0x1b3c: 0xbaf9, 0x1b3d: 0x1429, 0x1b3e: 0x1a31, 0x1b3f: 0xbb11, + // Block 0x6d, offset 0x1b40 + 0x1b40: 0xbb29, 0x1b41: 0xbb41, 0x1b42: 0xbb59, 0x1b43: 0xbb71, 0x1b44: 0xbb89, 0x1b45: 0x2109, + 0x1b46: 0x1111, 0x1b47: 0xbba1, 0x1b48: 0xbba1, 0x1b49: 0xbbb9, 0x1b4a: 0xbbd1, 0x1b4b: 0x10e1, + 0x1b4c: 0x10f9, 0x1b4d: 0xbbe9, 0x1b4e: 0x2079, 0x1b4f: 0xbc21, 0x1b50: 0xbac9, 0x1b51: 0x1429, + 0x1b52: 0xbb11, 0x1b53: 0x10e1, 0x1b54: 0x1111, 0x1b55: 0x2109, 0x1b56: 0xbab1, 0x1b57: 0x1099, + 0x1b58: 0x10b1, 0x1b59: 0x10c9, 0x1b5a: 0xbac9, 0x1b5b: 0xbae1, 0x1b5c: 0xbaf9, 0x1b5d: 0x1429, + 0x1b5e: 0x1a31, 0x1b5f: 0xbb11, 0x1b60: 0xbb29, 0x1b61: 0xbb41, 0x1b62: 0xbb59, 0x1b63: 0xbb71, + 0x1b64: 0xbb89, 0x1b65: 0x2109, 0x1b66: 0x1111, 0x1b67: 0x1429, 0x1b68: 0xbba1, 0x1b69: 0xbbb9, + 0x1b6a: 0xbbd1, 0x1b6b: 0x10e1, 0x1b6c: 0x10f9, 0x1b6d: 0xbbe9, 0x1b6e: 0x2079, 0x1b6f: 0xbc01, + 0x1b70: 0xbab1, 0x1b71: 0x1099, 0x1b72: 0x10b1, 0x1b73: 0x10c9, 0x1b74: 0xbac9, 0x1b75: 0xbae1, + 0x1b76: 0xbaf9, 0x1b77: 0x1429, 0x1b78: 0x1a31, 0x1b79: 0xbb11, 0x1b7a: 0xbb29, 0x1b7b: 0xbb41, + 0x1b7c: 0xbb59, 0x1b7d: 0xbb71, 0x1b7e: 0xbb89, 0x1b7f: 0x2109, + // Block 0x6e, offset 0x1b80 + 0x1b80: 0x1111, 0x1b81: 0xbba1, 0x1b82: 0xbba1, 0x1b83: 0xbbb9, 0x1b84: 0xbbd1, 0x1b85: 0x10e1, + 0x1b86: 0x10f9, 0x1b87: 0xbbe9, 0x1b88: 0x2079, 0x1b89: 0xbc21, 0x1b8a: 0xbac9, 0x1b8b: 0x1429, + 0x1b8c: 0xbb11, 0x1b8d: 0x10e1, 0x1b8e: 0x1111, 0x1b8f: 0x2109, 0x1b90: 0xbab1, 0x1b91: 0x1099, + 0x1b92: 0x10b1, 0x1b93: 0x10c9, 0x1b94: 0xbac9, 0x1b95: 0xbae1, 0x1b96: 0xbaf9, 0x1b97: 0x1429, + 0x1b98: 0x1a31, 0x1b99: 0xbb11, 0x1b9a: 0xbb29, 0x1b9b: 0xbb41, 0x1b9c: 0xbb59, 0x1b9d: 0xbb71, + 0x1b9e: 0xbb89, 0x1b9f: 0x2109, 0x1ba0: 0x1111, 0x1ba1: 0x1429, 0x1ba2: 0xbba1, 0x1ba3: 0xbbb9, + 0x1ba4: 0xbbd1, 0x1ba5: 0x10e1, 0x1ba6: 0x10f9, 0x1ba7: 0xbbe9, 0x1ba8: 0x2079, 0x1ba9: 0xbc01, + 0x1baa: 0xbab1, 0x1bab: 0x1099, 0x1bac: 0x10b1, 0x1bad: 0x10c9, 0x1bae: 0xbac9, 0x1baf: 0xbae1, + 0x1bb0: 0xbaf9, 0x1bb1: 0x1429, 0x1bb2: 0x1a31, 0x1bb3: 0xbb11, 0x1bb4: 0xbb29, 0x1bb5: 0xbb41, + 0x1bb6: 0xbb59, 0x1bb7: 0xbb71, 0x1bb8: 0xbb89, 0x1bb9: 0x2109, 0x1bba: 0x1111, 0x1bbb: 0xbba1, + 0x1bbc: 0xbba1, 0x1bbd: 0xbbb9, 0x1bbe: 0xbbd1, 0x1bbf: 0x10e1, + // Block 0x6f, offset 0x1bc0 + 0x1bc0: 0x10f9, 0x1bc1: 0xbbe9, 0x1bc2: 0x2079, 0x1bc3: 0xbc21, 0x1bc4: 0xbac9, 0x1bc5: 0x1429, + 0x1bc6: 0xbb11, 0x1bc7: 0x10e1, 0x1bc8: 0x1111, 0x1bc9: 0x2109, 0x1bca: 0xbc41, 0x1bcb: 0xbc41, + 0x1bcc: 0x0040, 0x1bcd: 0x0040, 0x1bce: 0x1f41, 0x1bcf: 0x00c9, 0x1bd0: 0x0069, 0x1bd1: 0x0079, + 0x1bd2: 0x1f51, 0x1bd3: 0x1f61, 0x1bd4: 0x1f71, 0x1bd5: 0x1f81, 0x1bd6: 0x1f91, 0x1bd7: 0x1fa1, + 0x1bd8: 0x1f41, 0x1bd9: 0x00c9, 0x1bda: 0x0069, 0x1bdb: 0x0079, 0x1bdc: 0x1f51, 0x1bdd: 0x1f61, + 0x1bde: 0x1f71, 0x1bdf: 0x1f81, 0x1be0: 0x1f91, 0x1be1: 0x1fa1, 0x1be2: 0x1f41, 0x1be3: 0x00c9, + 0x1be4: 0x0069, 0x1be5: 0x0079, 0x1be6: 0x1f51, 0x1be7: 0x1f61, 0x1be8: 0x1f71, 0x1be9: 0x1f81, + 0x1bea: 0x1f91, 0x1beb: 0x1fa1, 0x1bec: 0x1f41, 0x1bed: 0x00c9, 0x1bee: 0x0069, 0x1bef: 0x0079, + 0x1bf0: 0x1f51, 0x1bf1: 0x1f61, 0x1bf2: 0x1f71, 0x1bf3: 0x1f81, 0x1bf4: 0x1f91, 0x1bf5: 0x1fa1, + 0x1bf6: 0x1f41, 0x1bf7: 0x00c9, 0x1bf8: 0x0069, 0x1bf9: 0x0079, 0x1bfa: 0x1f51, 0x1bfb: 0x1f61, + 0x1bfc: 0x1f71, 0x1bfd: 0x1f81, 0x1bfe: 0x1f91, 0x1bff: 0x1fa1, + // Block 0x70, offset 0x1c00 + 0x1c00: 0xe115, 0x1c01: 0xe115, 0x1c02: 0xe135, 0x1c03: 0xe135, 0x1c04: 0xe115, 0x1c05: 0xe115, + 0x1c06: 0xe175, 0x1c07: 0xe175, 0x1c08: 0xe115, 0x1c09: 0xe115, 0x1c0a: 0xe135, 0x1c0b: 0xe135, + 0x1c0c: 0xe115, 0x1c0d: 0xe115, 0x1c0e: 0xe1f5, 0x1c0f: 0xe1f5, 0x1c10: 0xe115, 0x1c11: 0xe115, + 0x1c12: 0xe135, 0x1c13: 0xe135, 0x1c14: 0xe115, 0x1c15: 0xe115, 0x1c16: 0xe175, 0x1c17: 0xe175, + 0x1c18: 0xe115, 0x1c19: 0xe115, 0x1c1a: 0xe135, 0x1c1b: 0xe135, 0x1c1c: 0xe115, 0x1c1d: 0xe115, + 0x1c1e: 0x8b05, 0x1c1f: 0x8b05, 0x1c20: 0x04b5, 0x1c21: 0x04b5, 0x1c22: 0x0a08, 0x1c23: 0x0a08, + 0x1c24: 0x0a08, 0x1c25: 0x0a08, 0x1c26: 0x0a08, 0x1c27: 0x0a08, 0x1c28: 0x0a08, 0x1c29: 0x0a08, + 0x1c2a: 0x0a08, 0x1c2b: 0x0a08, 0x1c2c: 0x0a08, 0x1c2d: 0x0a08, 0x1c2e: 0x0a08, 0x1c2f: 0x0a08, + 0x1c30: 0x0a08, 0x1c31: 0x0a08, 0x1c32: 0x0a08, 0x1c33: 0x0a08, 0x1c34: 0x0a08, 0x1c35: 0x0a08, + 0x1c36: 0x0a08, 0x1c37: 0x0a08, 0x1c38: 0x0a08, 0x1c39: 0x0a08, 0x1c3a: 0x0a08, 0x1c3b: 0x0a08, + 0x1c3c: 0x0a08, 0x1c3d: 0x0a08, 0x1c3e: 0x0a08, 0x1c3f: 0x0a08, + // Block 0x71, offset 0x1c40 + 0x1c40: 0xb189, 0x1c41: 0xb1a1, 0x1c42: 0xb201, 0x1c43: 0xb249, 0x1c44: 0x0040, 0x1c45: 0xb411, + 0x1c46: 0xb291, 0x1c47: 0xb219, 0x1c48: 0xb309, 0x1c49: 0xb429, 0x1c4a: 0xb399, 0x1c4b: 0xb3b1, + 0x1c4c: 0xb3c9, 0x1c4d: 0xb3e1, 0x1c4e: 0xb2a9, 0x1c4f: 0xb339, 0x1c50: 0xb369, 0x1c51: 0xb2d9, + 0x1c52: 0xb381, 0x1c53: 0xb279, 0x1c54: 0xb2c1, 0x1c55: 0xb1d1, 0x1c56: 0xb1e9, 0x1c57: 0xb231, + 0x1c58: 0xb261, 0x1c59: 0xb2f1, 0x1c5a: 0xb321, 0x1c5b: 0xb351, 0x1c5c: 0xbc59, 0x1c5d: 0x7949, + 0x1c5e: 0xbc71, 0x1c5f: 0xbc89, 0x1c60: 0x0040, 0x1c61: 0xb1a1, 0x1c62: 0xb201, 0x1c63: 0x0040, + 0x1c64: 0xb3f9, 0x1c65: 0x0040, 0x1c66: 0x0040, 0x1c67: 0xb219, 0x1c68: 0x0040, 0x1c69: 0xb429, + 0x1c6a: 0xb399, 0x1c6b: 0xb3b1, 0x1c6c: 0xb3c9, 0x1c6d: 0xb3e1, 0x1c6e: 0xb2a9, 0x1c6f: 0xb339, + 0x1c70: 0xb369, 0x1c71: 0xb2d9, 0x1c72: 0xb381, 0x1c73: 0x0040, 0x1c74: 0xb2c1, 0x1c75: 0xb1d1, + 0x1c76: 0xb1e9, 0x1c77: 0xb231, 0x1c78: 0x0040, 0x1c79: 0xb2f1, 0x1c7a: 0x0040, 0x1c7b: 0xb351, + 0x1c7c: 0x0040, 0x1c7d: 0x0040, 0x1c7e: 0x0040, 0x1c7f: 0x0040, + // Block 0x72, offset 0x1c80 + 0x1c80: 0x0040, 0x1c81: 0x0040, 0x1c82: 0xb201, 0x1c83: 0x0040, 0x1c84: 0x0040, 0x1c85: 0x0040, + 0x1c86: 0x0040, 0x1c87: 0xb219, 0x1c88: 0x0040, 0x1c89: 0xb429, 0x1c8a: 0x0040, 0x1c8b: 0xb3b1, + 0x1c8c: 0x0040, 0x1c8d: 0xb3e1, 0x1c8e: 0xb2a9, 0x1c8f: 0xb339, 0x1c90: 0x0040, 0x1c91: 0xb2d9, + 0x1c92: 0xb381, 0x1c93: 0x0040, 0x1c94: 0xb2c1, 0x1c95: 0x0040, 0x1c96: 0x0040, 0x1c97: 0xb231, + 0x1c98: 0x0040, 0x1c99: 0xb2f1, 0x1c9a: 0x0040, 0x1c9b: 0xb351, 0x1c9c: 0x0040, 0x1c9d: 0x7949, + 0x1c9e: 0x0040, 0x1c9f: 0xbc89, 0x1ca0: 0x0040, 0x1ca1: 0xb1a1, 0x1ca2: 0xb201, 0x1ca3: 0x0040, + 0x1ca4: 0xb3f9, 0x1ca5: 0x0040, 0x1ca6: 0x0040, 0x1ca7: 0xb219, 0x1ca8: 0xb309, 0x1ca9: 0xb429, + 0x1caa: 0xb399, 0x1cab: 0x0040, 0x1cac: 0xb3c9, 0x1cad: 0xb3e1, 0x1cae: 0xb2a9, 0x1caf: 0xb339, + 0x1cb0: 0xb369, 0x1cb1: 0xb2d9, 0x1cb2: 0xb381, 0x1cb3: 0x0040, 0x1cb4: 0xb2c1, 0x1cb5: 0xb1d1, + 0x1cb6: 0xb1e9, 0x1cb7: 0xb231, 0x1cb8: 0x0040, 0x1cb9: 0xb2f1, 0x1cba: 0xb321, 0x1cbb: 0xb351, + 0x1cbc: 0xbc59, 0x1cbd: 0x0040, 0x1cbe: 0xbc71, 0x1cbf: 0x0040, + // Block 0x73, offset 0x1cc0 + 0x1cc0: 0xb189, 0x1cc1: 0xb1a1, 0x1cc2: 0xb201, 0x1cc3: 0xb249, 0x1cc4: 0xb3f9, 0x1cc5: 0xb411, + 0x1cc6: 0xb291, 0x1cc7: 0xb219, 0x1cc8: 0xb309, 0x1cc9: 0xb429, 0x1cca: 0x0040, 0x1ccb: 0xb3b1, + 0x1ccc: 0xb3c9, 0x1ccd: 0xb3e1, 0x1cce: 0xb2a9, 0x1ccf: 0xb339, 0x1cd0: 0xb369, 0x1cd1: 0xb2d9, + 0x1cd2: 0xb381, 0x1cd3: 0xb279, 0x1cd4: 0xb2c1, 0x1cd5: 0xb1d1, 0x1cd6: 0xb1e9, 0x1cd7: 0xb231, + 0x1cd8: 0xb261, 0x1cd9: 0xb2f1, 0x1cda: 0xb321, 0x1cdb: 0xb351, 0x1cdc: 0x0040, 0x1cdd: 0x0040, + 0x1cde: 0x0040, 0x1cdf: 0x0040, 0x1ce0: 0x0040, 0x1ce1: 0xb1a1, 0x1ce2: 0xb201, 0x1ce3: 0xb249, + 0x1ce4: 0x0040, 0x1ce5: 0xb411, 0x1ce6: 0xb291, 0x1ce7: 0xb219, 0x1ce8: 0xb309, 0x1ce9: 0xb429, + 0x1cea: 0x0040, 0x1ceb: 0xb3b1, 0x1cec: 0xb3c9, 0x1ced: 0xb3e1, 0x1cee: 0xb2a9, 0x1cef: 0xb339, + 0x1cf0: 0xb369, 0x1cf1: 0xb2d9, 0x1cf2: 0xb381, 0x1cf3: 0xb279, 0x1cf4: 0xb2c1, 0x1cf5: 0xb1d1, + 0x1cf6: 0xb1e9, 0x1cf7: 0xb231, 0x1cf8: 0xb261, 0x1cf9: 0xb2f1, 0x1cfa: 0xb321, 0x1cfb: 0xb351, + 0x1cfc: 0x0040, 0x1cfd: 0x0040, 0x1cfe: 0x0040, 0x1cff: 0x0040, + // Block 0x74, offset 0x1d00 + 0x1d00: 0x0040, 0x1d01: 0xbca2, 0x1d02: 0xbcba, 0x1d03: 0xbcd2, 0x1d04: 0xbcea, 0x1d05: 0xbd02, + 0x1d06: 0xbd1a, 0x1d07: 0xbd32, 0x1d08: 0xbd4a, 0x1d09: 0xbd62, 0x1d0a: 0xbd7a, 0x1d0b: 0x0018, + 0x1d0c: 0x0018, 0x1d0d: 0x0040, 0x1d0e: 0x0040, 0x1d0f: 0x0040, 0x1d10: 0xbd92, 0x1d11: 0xbdb2, + 0x1d12: 0xbdd2, 0x1d13: 0xbdf2, 0x1d14: 0xbe12, 0x1d15: 0xbe32, 0x1d16: 0xbe52, 0x1d17: 0xbe72, + 0x1d18: 0xbe92, 0x1d19: 0xbeb2, 0x1d1a: 0xbed2, 0x1d1b: 0xbef2, 0x1d1c: 0xbf12, 0x1d1d: 0xbf32, + 0x1d1e: 0xbf52, 0x1d1f: 0xbf72, 0x1d20: 0xbf92, 0x1d21: 0xbfb2, 0x1d22: 0xbfd2, 0x1d23: 0xbff2, + 0x1d24: 0xc012, 0x1d25: 0xc032, 0x1d26: 0xc052, 0x1d27: 0xc072, 0x1d28: 0xc092, 0x1d29: 0xc0b2, + 0x1d2a: 0xc0d1, 0x1d2b: 0x1159, 0x1d2c: 0x0269, 0x1d2d: 0x6671, 0x1d2e: 0xc111, 0x1d2f: 0x0040, + 0x1d30: 0x0039, 0x1d31: 0x0ee9, 0x1d32: 0x1159, 0x1d33: 0x0ef9, 0x1d34: 0x0f09, 0x1d35: 0x1199, + 0x1d36: 0x0f31, 0x1d37: 0x0249, 0x1d38: 0x0f41, 0x1d39: 0x0259, 0x1d3a: 0x0f51, 0x1d3b: 0x0359, + 0x1d3c: 0x0f61, 0x1d3d: 0x0f71, 0x1d3e: 0x00d9, 0x1d3f: 0x0f99, + // Block 0x75, offset 0x1d40 + 0x1d40: 0x2039, 0x1d41: 0x0269, 0x1d42: 0x01d9, 0x1d43: 0x0fa9, 0x1d44: 0x0fb9, 0x1d45: 0x1089, + 0x1d46: 0x0279, 0x1d47: 0x0369, 0x1d48: 0x0289, 0x1d49: 0x13d1, 0x1d4a: 0xc129, 0x1d4b: 0x65b1, + 0x1d4c: 0xc141, 0x1d4d: 0x1441, 0x1d4e: 0xc159, 0x1d4f: 0xc179, 0x1d50: 0x0018, 0x1d51: 0x0018, + 0x1d52: 0x0018, 0x1d53: 0x0018, 0x1d54: 0x0018, 0x1d55: 0x0018, 0x1d56: 0x0018, 0x1d57: 0x0018, + 0x1d58: 0x0018, 0x1d59: 0x0018, 0x1d5a: 0x0018, 0x1d5b: 0x0018, 0x1d5c: 0x0018, 0x1d5d: 0x0018, + 0x1d5e: 0x0018, 0x1d5f: 0x0018, 0x1d60: 0x0018, 0x1d61: 0x0018, 0x1d62: 0x0018, 0x1d63: 0x0018, + 0x1d64: 0x0018, 0x1d65: 0x0018, 0x1d66: 0x0018, 0x1d67: 0x0018, 0x1d68: 0x0018, 0x1d69: 0x0018, + 0x1d6a: 0xc191, 0x1d6b: 0xc1a9, 0x1d6c: 0x0040, 0x1d6d: 0x0040, 0x1d6e: 0x0040, 0x1d6f: 0x0040, + 0x1d70: 0x0018, 0x1d71: 0x0018, 0x1d72: 0x0018, 0x1d73: 0x0018, 0x1d74: 0x0018, 0x1d75: 0x0018, + 0x1d76: 0x0018, 0x1d77: 0x0018, 0x1d78: 0x0018, 0x1d79: 0x0018, 0x1d7a: 0x0018, 0x1d7b: 0x0018, + 0x1d7c: 0x0018, 0x1d7d: 0x0018, 0x1d7e: 0x0018, 0x1d7f: 0x0018, + // Block 0x76, offset 0x1d80 + 0x1d80: 0xc1d9, 0x1d81: 0xc211, 0x1d82: 0xc249, 0x1d83: 0x0040, 0x1d84: 0x0040, 0x1d85: 0x0040, + 0x1d86: 0x0040, 0x1d87: 0x0040, 0x1d88: 0x0040, 0x1d89: 0x0040, 0x1d8a: 0x0040, 0x1d8b: 0x0040, + 0x1d8c: 0x0040, 0x1d8d: 0x0040, 0x1d8e: 0x0040, 0x1d8f: 0x0040, 0x1d90: 0xc269, 0x1d91: 0xc289, + 0x1d92: 0xc2a9, 0x1d93: 0xc2c9, 0x1d94: 0xc2e9, 0x1d95: 0xc309, 0x1d96: 0xc329, 0x1d97: 0xc349, + 0x1d98: 0xc369, 0x1d99: 0xc389, 0x1d9a: 0xc3a9, 0x1d9b: 0xc3c9, 0x1d9c: 0xc3e9, 0x1d9d: 0xc409, + 0x1d9e: 0xc429, 0x1d9f: 0xc449, 0x1da0: 0xc469, 0x1da1: 0xc489, 0x1da2: 0xc4a9, 0x1da3: 0xc4c9, + 0x1da4: 0xc4e9, 0x1da5: 0xc509, 0x1da6: 0xc529, 0x1da7: 0xc549, 0x1da8: 0xc569, 0x1da9: 0xc589, + 0x1daa: 0xc5a9, 0x1dab: 0xc5c9, 0x1dac: 0xc5e9, 0x1dad: 0xc609, 0x1dae: 0xc629, 0x1daf: 0xc649, + 0x1db0: 0xc669, 0x1db1: 0xc689, 0x1db2: 0xc6a9, 0x1db3: 0xc6c9, 0x1db4: 0xc6e9, 0x1db5: 0xc709, + 0x1db6: 0xc729, 0x1db7: 0xc749, 0x1db8: 0xc769, 0x1db9: 0xc789, 0x1dba: 0xc7a9, 0x1dbb: 0xc7c9, + 0x1dbc: 0x0040, 0x1dbd: 0x0040, 0x1dbe: 0x0040, 0x1dbf: 0x0040, + // Block 0x77, offset 0x1dc0 + 0x1dc0: 0xcaf9, 0x1dc1: 0xcb19, 0x1dc2: 0xcb39, 0x1dc3: 0x8b1d, 0x1dc4: 0xcb59, 0x1dc5: 0xcb79, + 0x1dc6: 0xcb99, 0x1dc7: 0xcbb9, 0x1dc8: 0xcbd9, 0x1dc9: 0xcbf9, 0x1dca: 0xcc19, 0x1dcb: 0xcc39, + 0x1dcc: 0xcc59, 0x1dcd: 0x8b3d, 0x1dce: 0xcc79, 0x1dcf: 0xcc99, 0x1dd0: 0xccb9, 0x1dd1: 0xccd9, + 0x1dd2: 0x8b5d, 0x1dd3: 0xccf9, 0x1dd4: 0xcd19, 0x1dd5: 0xc429, 0x1dd6: 0x8b7d, 0x1dd7: 0xcd39, + 0x1dd8: 0xcd59, 0x1dd9: 0xcd79, 0x1dda: 0xcd99, 0x1ddb: 0xcdb9, 0x1ddc: 0x8b9d, 0x1ddd: 0xcdd9, + 0x1dde: 0xcdf9, 0x1ddf: 0xce19, 0x1de0: 0xce39, 0x1de1: 0xce59, 0x1de2: 0xc789, 0x1de3: 0xce79, + 0x1de4: 0xce99, 0x1de5: 0xceb9, 0x1de6: 0xced9, 0x1de7: 0xcef9, 0x1de8: 0xcf19, 0x1de9: 0xcf39, + 0x1dea: 0xcf59, 0x1deb: 0xcf79, 0x1dec: 0xcf99, 0x1ded: 0xcfb9, 0x1dee: 0xcfd9, 0x1def: 0xcff9, + 0x1df0: 0xd019, 0x1df1: 0xd039, 0x1df2: 0xd039, 0x1df3: 0xd039, 0x1df4: 0x8bbd, 0x1df5: 0xd059, + 0x1df6: 0xd079, 0x1df7: 0xd099, 0x1df8: 0x8bdd, 0x1df9: 0xd0b9, 0x1dfa: 0xd0d9, 0x1dfb: 0xd0f9, + 0x1dfc: 0xd119, 0x1dfd: 0xd139, 0x1dfe: 0xd159, 0x1dff: 0xd179, + // Block 0x78, offset 0x1e00 + 0x1e00: 0xd199, 0x1e01: 0xd1b9, 0x1e02: 0xd1d9, 0x1e03: 0xd1f9, 0x1e04: 0xd219, 0x1e05: 0xd239, + 0x1e06: 0xd239, 0x1e07: 0xd259, 0x1e08: 0xd279, 0x1e09: 0xd299, 0x1e0a: 0xd2b9, 0x1e0b: 0xd2d9, + 0x1e0c: 0xd2f9, 0x1e0d: 0xd319, 0x1e0e: 0xd339, 0x1e0f: 0xd359, 0x1e10: 0xd379, 0x1e11: 0xd399, + 0x1e12: 0xd3b9, 0x1e13: 0xd3d9, 0x1e14: 0xd3f9, 0x1e15: 0xd419, 0x1e16: 0xd439, 0x1e17: 0xd459, + 0x1e18: 0xd479, 0x1e19: 0x8bfd, 0x1e1a: 0xd499, 0x1e1b: 0xd4b9, 0x1e1c: 0xd4d9, 0x1e1d: 0xc309, + 0x1e1e: 0xd4f9, 0x1e1f: 0xd519, 0x1e20: 0x8c1d, 0x1e21: 0x8c3d, 0x1e22: 0xd539, 0x1e23: 0xd559, + 0x1e24: 0xd579, 0x1e25: 0xd599, 0x1e26: 0xd5b9, 0x1e27: 0xd5d9, 0x1e28: 0x2040, 0x1e29: 0xd5f9, + 0x1e2a: 0xd619, 0x1e2b: 0xd619, 0x1e2c: 0x8c5d, 0x1e2d: 0xd639, 0x1e2e: 0xd659, 0x1e2f: 0xd679, + 0x1e30: 0xd699, 0x1e31: 0x8c7d, 0x1e32: 0xd6b9, 0x1e33: 0xd6d9, 0x1e34: 0x2040, 0x1e35: 0xd6f9, + 0x1e36: 0xd719, 0x1e37: 0xd739, 0x1e38: 0xd759, 0x1e39: 0xd779, 0x1e3a: 0xd799, 0x1e3b: 0x8c9d, + 0x1e3c: 0xd7b9, 0x1e3d: 0x8cbd, 0x1e3e: 0xd7d9, 0x1e3f: 0xd7f9, + // Block 0x79, offset 0x1e40 + 0x1e40: 0xd819, 0x1e41: 0xd839, 0x1e42: 0xd859, 0x1e43: 0xd879, 0x1e44: 0xd899, 0x1e45: 0xd8b9, + 0x1e46: 0xd8d9, 0x1e47: 0xd8f9, 0x1e48: 0xd919, 0x1e49: 0x8cdd, 0x1e4a: 0xd939, 0x1e4b: 0xd959, + 0x1e4c: 0xd979, 0x1e4d: 0xd999, 0x1e4e: 0xd9b9, 0x1e4f: 0x8cfd, 0x1e50: 0xd9d9, 0x1e51: 0x8d1d, + 0x1e52: 0x8d3d, 0x1e53: 0xd9f9, 0x1e54: 0xda19, 0x1e55: 0xda19, 0x1e56: 0xda39, 0x1e57: 0x8d5d, + 0x1e58: 0x8d7d, 0x1e59: 0xda59, 0x1e5a: 0xda79, 0x1e5b: 0xda99, 0x1e5c: 0xdab9, 0x1e5d: 0xdad9, + 0x1e5e: 0xdaf9, 0x1e5f: 0xdb19, 0x1e60: 0xdb39, 0x1e61: 0xdb59, 0x1e62: 0xdb79, 0x1e63: 0xdb99, + 0x1e64: 0x8d9d, 0x1e65: 0xdbb9, 0x1e66: 0xdbd9, 0x1e67: 0xdbf9, 0x1e68: 0xdc19, 0x1e69: 0xdbf9, + 0x1e6a: 0xdc39, 0x1e6b: 0xdc59, 0x1e6c: 0xdc79, 0x1e6d: 0xdc99, 0x1e6e: 0xdcb9, 0x1e6f: 0xdcd9, + 0x1e70: 0xdcf9, 0x1e71: 0xdd19, 0x1e72: 0xdd39, 0x1e73: 0xdd59, 0x1e74: 0xdd79, 0x1e75: 0xdd99, + 0x1e76: 0xddb9, 0x1e77: 0xddd9, 0x1e78: 0x8dbd, 0x1e79: 0xddf9, 0x1e7a: 0xde19, 0x1e7b: 0xde39, + 0x1e7c: 0xde59, 0x1e7d: 0xde79, 0x1e7e: 0x8ddd, 0x1e7f: 0xde99, + // Block 0x7a, offset 0x1e80 + 0x1e80: 0xe599, 0x1e81: 0xe5b9, 0x1e82: 0xe5d9, 0x1e83: 0xe5f9, 0x1e84: 0xe619, 0x1e85: 0xe639, + 0x1e86: 0x8efd, 0x1e87: 0xe659, 0x1e88: 0xe679, 0x1e89: 0xe699, 0x1e8a: 0xe6b9, 0x1e8b: 0xe6d9, + 0x1e8c: 0xe6f9, 0x1e8d: 0x8f1d, 0x1e8e: 0xe719, 0x1e8f: 0xe739, 0x1e90: 0x8f3d, 0x1e91: 0x8f5d, + 0x1e92: 0xe759, 0x1e93: 0xe779, 0x1e94: 0xe799, 0x1e95: 0xe7b9, 0x1e96: 0xe7d9, 0x1e97: 0xe7f9, + 0x1e98: 0xe819, 0x1e99: 0xe839, 0x1e9a: 0xe859, 0x1e9b: 0x8f7d, 0x1e9c: 0xe879, 0x1e9d: 0x8f9d, + 0x1e9e: 0xe899, 0x1e9f: 0x2040, 0x1ea0: 0xe8b9, 0x1ea1: 0xe8d9, 0x1ea2: 0xe8f9, 0x1ea3: 0x8fbd, + 0x1ea4: 0xe919, 0x1ea5: 0xe939, 0x1ea6: 0x8fdd, 0x1ea7: 0x8ffd, 0x1ea8: 0xe959, 0x1ea9: 0xe979, + 0x1eaa: 0xe999, 0x1eab: 0xe9b9, 0x1eac: 0xe9d9, 0x1ead: 0xe9d9, 0x1eae: 0xe9f9, 0x1eaf: 0xea19, + 0x1eb0: 0xea39, 0x1eb1: 0xea59, 0x1eb2: 0xea79, 0x1eb3: 0xea99, 0x1eb4: 0xeab9, 0x1eb5: 0x901d, + 0x1eb6: 0xead9, 0x1eb7: 0x903d, 0x1eb8: 0xeaf9, 0x1eb9: 0x905d, 0x1eba: 0xeb19, 0x1ebb: 0x907d, + 0x1ebc: 0x909d, 0x1ebd: 0x90bd, 0x1ebe: 0xeb39, 0x1ebf: 0xeb59, + // Block 0x7b, offset 0x1ec0 + 0x1ec0: 0xeb79, 0x1ec1: 0x90dd, 0x1ec2: 0x90fd, 0x1ec3: 0x911d, 0x1ec4: 0x913d, 0x1ec5: 0xeb99, + 0x1ec6: 0xebb9, 0x1ec7: 0xebb9, 0x1ec8: 0xebd9, 0x1ec9: 0xebf9, 0x1eca: 0xec19, 0x1ecb: 0xec39, + 0x1ecc: 0xec59, 0x1ecd: 0x915d, 0x1ece: 0xec79, 0x1ecf: 0xec99, 0x1ed0: 0xecb9, 0x1ed1: 0xecd9, + 0x1ed2: 0x917d, 0x1ed3: 0xecf9, 0x1ed4: 0x919d, 0x1ed5: 0x91bd, 0x1ed6: 0xed19, 0x1ed7: 0xed39, + 0x1ed8: 0xed59, 0x1ed9: 0xed79, 0x1eda: 0xed99, 0x1edb: 0xedb9, 0x1edc: 0x91dd, 0x1edd: 0x91fd, + 0x1ede: 0x921d, 0x1edf: 0x2040, 0x1ee0: 0xedd9, 0x1ee1: 0x923d, 0x1ee2: 0xedf9, 0x1ee3: 0xee19, + 0x1ee4: 0xee39, 0x1ee5: 0x925d, 0x1ee6: 0xee59, 0x1ee7: 0xee79, 0x1ee8: 0xee99, 0x1ee9: 0xeeb9, + 0x1eea: 0xeed9, 0x1eeb: 0x927d, 0x1eec: 0xeef9, 0x1eed: 0xef19, 0x1eee: 0xef39, 0x1eef: 0xef59, + 0x1ef0: 0xef79, 0x1ef1: 0xef99, 0x1ef2: 0x929d, 0x1ef3: 0x92bd, 0x1ef4: 0xefb9, 0x1ef5: 0x92dd, + 0x1ef6: 0xefd9, 0x1ef7: 0x92fd, 0x1ef8: 0xeff9, 0x1ef9: 0xf019, 0x1efa: 0xf039, 0x1efb: 0x931d, + 0x1efc: 0x933d, 0x1efd: 0xf059, 0x1efe: 0x935d, 0x1eff: 0xf079, + // Block 0x7c, offset 0x1f00 + 0x1f00: 0xf6b9, 0x1f01: 0xf6d9, 0x1f02: 0xf6f9, 0x1f03: 0xf719, 0x1f04: 0xf739, 0x1f05: 0x951d, + 0x1f06: 0xf759, 0x1f07: 0xf779, 0x1f08: 0xf799, 0x1f09: 0xf7b9, 0x1f0a: 0xf7d9, 0x1f0b: 0x953d, + 0x1f0c: 0x955d, 0x1f0d: 0xf7f9, 0x1f0e: 0xf819, 0x1f0f: 0xf839, 0x1f10: 0xf859, 0x1f11: 0xf879, + 0x1f12: 0xf899, 0x1f13: 0x957d, 0x1f14: 0xf8b9, 0x1f15: 0xf8d9, 0x1f16: 0xf8f9, 0x1f17: 0xf919, + 0x1f18: 0x959d, 0x1f19: 0x95bd, 0x1f1a: 0xf939, 0x1f1b: 0xf959, 0x1f1c: 0xf979, 0x1f1d: 0x95dd, + 0x1f1e: 0xf999, 0x1f1f: 0xf9b9, 0x1f20: 0x6815, 0x1f21: 0x95fd, 0x1f22: 0xf9d9, 0x1f23: 0xf9f9, + 0x1f24: 0xfa19, 0x1f25: 0x961d, 0x1f26: 0xfa39, 0x1f27: 0xfa59, 0x1f28: 0xfa79, 0x1f29: 0xfa99, + 0x1f2a: 0xfab9, 0x1f2b: 0xfad9, 0x1f2c: 0xfaf9, 0x1f2d: 0x963d, 0x1f2e: 0xfb19, 0x1f2f: 0xfb39, + 0x1f30: 0xfb59, 0x1f31: 0x965d, 0x1f32: 0xfb79, 0x1f33: 0xfb99, 0x1f34: 0xfbb9, 0x1f35: 0xfbd9, + 0x1f36: 0x7b35, 0x1f37: 0x967d, 0x1f38: 0xfbf9, 0x1f39: 0xfc19, 0x1f3a: 0xfc39, 0x1f3b: 0x969d, + 0x1f3c: 0xfc59, 0x1f3d: 0x96bd, 0x1f3e: 0xfc79, 0x1f3f: 0xfc79, + // Block 0x7d, offset 0x1f40 + 0x1f40: 0xfc99, 0x1f41: 0x96dd, 0x1f42: 0xfcb9, 0x1f43: 0xfcd9, 0x1f44: 0xfcf9, 0x1f45: 0xfd19, + 0x1f46: 0xfd39, 0x1f47: 0xfd59, 0x1f48: 0xfd79, 0x1f49: 0x96fd, 0x1f4a: 0xfd99, 0x1f4b: 0xfdb9, + 0x1f4c: 0xfdd9, 0x1f4d: 0xfdf9, 0x1f4e: 0xfe19, 0x1f4f: 0xfe39, 0x1f50: 0x971d, 0x1f51: 0xfe59, + 0x1f52: 0x973d, 0x1f53: 0x975d, 0x1f54: 0x977d, 0x1f55: 0xfe79, 0x1f56: 0xfe99, 0x1f57: 0xfeb9, + 0x1f58: 0xfed9, 0x1f59: 0xfef9, 0x1f5a: 0xff19, 0x1f5b: 0xff39, 0x1f5c: 0xff59, 0x1f5d: 0x979d, + 0x1f5e: 0x0040, 0x1f5f: 0x0040, 0x1f60: 0x0040, 0x1f61: 0x0040, 0x1f62: 0x0040, 0x1f63: 0x0040, + 0x1f64: 0x0040, 0x1f65: 0x0040, 0x1f66: 0x0040, 0x1f67: 0x0040, 0x1f68: 0x0040, 0x1f69: 0x0040, + 0x1f6a: 0x0040, 0x1f6b: 0x0040, 0x1f6c: 0x0040, 0x1f6d: 0x0040, 0x1f6e: 0x0040, 0x1f6f: 0x0040, + 0x1f70: 0x0040, 0x1f71: 0x0040, 0x1f72: 0x0040, 0x1f73: 0x0040, 0x1f74: 0x0040, 0x1f75: 0x0040, + 0x1f76: 0x0040, 0x1f77: 0x0040, 0x1f78: 0x0040, 0x1f79: 0x0040, 0x1f7a: 0x0040, 0x1f7b: 0x0040, + 0x1f7c: 0x0040, 0x1f7d: 0x0040, 0x1f7e: 0x0040, 0x1f7f: 0x0040, +} + +// idnaIndex: 35 blocks, 2240 entries, 4480 bytes +// Block 0 is the zero block. +var idnaIndex = [2240]uint16{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x01, 0xc3: 0x7c, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x04, 0xc7: 0x05, + 0xc8: 0x06, 0xc9: 0x7d, 0xca: 0x7e, 0xcb: 0x07, 0xcc: 0x7f, 0xcd: 0x08, 0xce: 0x09, 0xcf: 0x0a, + 0xd0: 0x80, 0xd1: 0x0b, 0xd2: 0x0c, 0xd3: 0x0d, 0xd4: 0x0e, 0xd5: 0x81, 0xd6: 0x82, 0xd7: 0x83, + 0xd8: 0x0f, 0xd9: 0x10, 0xda: 0x84, 0xdb: 0x11, 0xdc: 0x12, 0xdd: 0x85, 0xde: 0x86, 0xdf: 0x87, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, 0xe5: 0x07, 0xe6: 0x07, 0xe7: 0x07, + 0xe8: 0x07, 0xe9: 0x08, 0xea: 0x09, 0xeb: 0x07, 0xec: 0x07, 0xed: 0x0a, 0xee: 0x0b, 0xef: 0x0c, + 0xf0: 0x1c, 0xf1: 0x1d, 0xf2: 0x1d, 0xf3: 0x1f, 0xf4: 0x20, + // Block 0x4, offset 0x100 + 0x120: 0x88, 0x121: 0x89, 0x122: 0x8a, 0x123: 0x8b, 0x124: 0x8c, 0x125: 0x13, 0x126: 0x14, 0x127: 0x15, + 0x128: 0x16, 0x129: 0x17, 0x12a: 0x18, 0x12b: 0x19, 0x12c: 0x1a, 0x12d: 0x1b, 0x12e: 0x1c, 0x12f: 0x8d, + 0x130: 0x8e, 0x131: 0x1d, 0x132: 0x1e, 0x133: 0x1f, 0x134: 0x8f, 0x135: 0x20, 0x136: 0x90, 0x137: 0x91, + 0x138: 0x92, 0x139: 0x93, 0x13a: 0x21, 0x13b: 0x94, 0x13c: 0x95, 0x13d: 0x22, 0x13e: 0x23, 0x13f: 0x96, + // Block 0x5, offset 0x140 + 0x140: 0x97, 0x141: 0x98, 0x142: 0x99, 0x143: 0x9a, 0x144: 0x9b, 0x145: 0x9c, 0x146: 0x9d, 0x147: 0x9e, + 0x148: 0x9f, 0x149: 0xa0, 0x14a: 0xa1, 0x14b: 0xa2, 0x14c: 0xa3, 0x14d: 0xa4, 0x14e: 0xa5, 0x14f: 0xa6, + 0x150: 0xa7, 0x151: 0x9f, 0x152: 0x9f, 0x153: 0x9f, 0x154: 0x9f, 0x155: 0x9f, 0x156: 0x9f, 0x157: 0x9f, + 0x158: 0x9f, 0x159: 0xa8, 0x15a: 0xa9, 0x15b: 0xaa, 0x15c: 0xab, 0x15d: 0xac, 0x15e: 0xad, 0x15f: 0xae, + 0x160: 0xaf, 0x161: 0xb0, 0x162: 0xb1, 0x163: 0xb2, 0x164: 0xb3, 0x165: 0xb4, 0x166: 0xb5, 0x167: 0xb6, + 0x168: 0xb7, 0x169: 0xb8, 0x16a: 0xb9, 0x16b: 0xba, 0x16c: 0xbb, 0x16d: 0xbc, 0x16e: 0xbd, 0x16f: 0xbe, + 0x170: 0xbf, 0x171: 0xc0, 0x172: 0xc1, 0x173: 0xc2, 0x174: 0x24, 0x175: 0x25, 0x176: 0x26, 0x177: 0xc3, + 0x178: 0x27, 0x179: 0x27, 0x17a: 0x28, 0x17b: 0x27, 0x17c: 0xc4, 0x17d: 0x29, 0x17e: 0x2a, 0x17f: 0x2b, + // Block 0x6, offset 0x180 + 0x180: 0x2c, 0x181: 0x2d, 0x182: 0x2e, 0x183: 0xc5, 0x184: 0x2f, 0x185: 0x30, 0x186: 0xc6, 0x187: 0x9b, + 0x188: 0xc7, 0x189: 0xc8, 0x18a: 0x9b, 0x18b: 0x9b, 0x18c: 0xc9, 0x18d: 0x9b, 0x18e: 0x9b, 0x18f: 0xca, + 0x190: 0xcb, 0x191: 0x31, 0x192: 0x32, 0x193: 0x33, 0x194: 0x9b, 0x195: 0x9b, 0x196: 0x9b, 0x197: 0x9b, + 0x198: 0x9b, 0x199: 0x9b, 0x19a: 0x9b, 0x19b: 0x9b, 0x19c: 0x9b, 0x19d: 0x9b, 0x19e: 0x9b, 0x19f: 0x9b, + 0x1a0: 0x9b, 0x1a1: 0x9b, 0x1a2: 0x9b, 0x1a3: 0x9b, 0x1a4: 0x9b, 0x1a5: 0x9b, 0x1a6: 0x9b, 0x1a7: 0x9b, + 0x1a8: 0xcc, 0x1a9: 0xcd, 0x1aa: 0x9b, 0x1ab: 0xce, 0x1ac: 0x9b, 0x1ad: 0xcf, 0x1ae: 0xd0, 0x1af: 0xd1, + 0x1b0: 0xd2, 0x1b1: 0x34, 0x1b2: 0x27, 0x1b3: 0x35, 0x1b4: 0xd3, 0x1b5: 0xd4, 0x1b6: 0xd5, 0x1b7: 0xd6, + 0x1b8: 0xd7, 0x1b9: 0xd8, 0x1ba: 0xd9, 0x1bb: 0xda, 0x1bc: 0xdb, 0x1bd: 0xdc, 0x1be: 0xdd, 0x1bf: 0x36, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x37, 0x1c1: 0xde, 0x1c2: 0xdf, 0x1c3: 0xe0, 0x1c4: 0xe1, 0x1c5: 0x38, 0x1c6: 0x39, 0x1c7: 0xe2, + 0x1c8: 0xe3, 0x1c9: 0x3a, 0x1ca: 0x3b, 0x1cb: 0x3c, 0x1cc: 0x3d, 0x1cd: 0x3e, 0x1ce: 0x3f, 0x1cf: 0x40, + 0x1d0: 0x9f, 0x1d1: 0x9f, 0x1d2: 0x9f, 0x1d3: 0x9f, 0x1d4: 0x9f, 0x1d5: 0x9f, 0x1d6: 0x9f, 0x1d7: 0x9f, + 0x1d8: 0x9f, 0x1d9: 0x9f, 0x1da: 0x9f, 0x1db: 0x9f, 0x1dc: 0x9f, 0x1dd: 0x9f, 0x1de: 0x9f, 0x1df: 0x9f, + 0x1e0: 0x9f, 0x1e1: 0x9f, 0x1e2: 0x9f, 0x1e3: 0x9f, 0x1e4: 0x9f, 0x1e5: 0x9f, 0x1e6: 0x9f, 0x1e7: 0x9f, + 0x1e8: 0x9f, 0x1e9: 0x9f, 0x1ea: 0x9f, 0x1eb: 0x9f, 0x1ec: 0x9f, 0x1ed: 0x9f, 0x1ee: 0x9f, 0x1ef: 0x9f, + 0x1f0: 0x9f, 0x1f1: 0x9f, 0x1f2: 0x9f, 0x1f3: 0x9f, 0x1f4: 0x9f, 0x1f5: 0x9f, 0x1f6: 0x9f, 0x1f7: 0x9f, + 0x1f8: 0x9f, 0x1f9: 0x9f, 0x1fa: 0x9f, 0x1fb: 0x9f, 0x1fc: 0x9f, 0x1fd: 0x9f, 0x1fe: 0x9f, 0x1ff: 0x9f, + // Block 0x8, offset 0x200 + 0x200: 0x9f, 0x201: 0x9f, 0x202: 0x9f, 0x203: 0x9f, 0x204: 0x9f, 0x205: 0x9f, 0x206: 0x9f, 0x207: 0x9f, + 0x208: 0x9f, 0x209: 0x9f, 0x20a: 0x9f, 0x20b: 0x9f, 0x20c: 0x9f, 0x20d: 0x9f, 0x20e: 0x9f, 0x20f: 0x9f, + 0x210: 0x9f, 0x211: 0x9f, 0x212: 0x9f, 0x213: 0x9f, 0x214: 0x9f, 0x215: 0x9f, 0x216: 0x9f, 0x217: 0x9f, + 0x218: 0x9f, 0x219: 0x9f, 0x21a: 0x9f, 0x21b: 0x9f, 0x21c: 0x9f, 0x21d: 0x9f, 0x21e: 0x9f, 0x21f: 0x9f, + 0x220: 0x9f, 0x221: 0x9f, 0x222: 0x9f, 0x223: 0x9f, 0x224: 0x9f, 0x225: 0x9f, 0x226: 0x9f, 0x227: 0x9f, + 0x228: 0x9f, 0x229: 0x9f, 0x22a: 0x9f, 0x22b: 0x9f, 0x22c: 0x9f, 0x22d: 0x9f, 0x22e: 0x9f, 0x22f: 0x9f, + 0x230: 0x9f, 0x231: 0x9f, 0x232: 0x9f, 0x233: 0x9f, 0x234: 0x9f, 0x235: 0x9f, 0x236: 0xb2, 0x237: 0x9b, + 0x238: 0x9f, 0x239: 0x9f, 0x23a: 0x9f, 0x23b: 0x9f, 0x23c: 0x9f, 0x23d: 0x9f, 0x23e: 0x9f, 0x23f: 0x9f, + // Block 0x9, offset 0x240 + 0x240: 0x9f, 0x241: 0x9f, 0x242: 0x9f, 0x243: 0x9f, 0x244: 0x9f, 0x245: 0x9f, 0x246: 0x9f, 0x247: 0x9f, + 0x248: 0x9f, 0x249: 0x9f, 0x24a: 0x9f, 0x24b: 0x9f, 0x24c: 0x9f, 0x24d: 0x9f, 0x24e: 0x9f, 0x24f: 0x9f, + 0x250: 0x9f, 0x251: 0x9f, 0x252: 0x9f, 0x253: 0x9f, 0x254: 0x9f, 0x255: 0x9f, 0x256: 0x9f, 0x257: 0x9f, + 0x258: 0x9f, 0x259: 0x9f, 0x25a: 0x9f, 0x25b: 0x9f, 0x25c: 0x9f, 0x25d: 0x9f, 0x25e: 0x9f, 0x25f: 0x9f, + 0x260: 0x9f, 0x261: 0x9f, 0x262: 0x9f, 0x263: 0x9f, 0x264: 0x9f, 0x265: 0x9f, 0x266: 0x9f, 0x267: 0x9f, + 0x268: 0x9f, 0x269: 0x9f, 0x26a: 0x9f, 0x26b: 0x9f, 0x26c: 0x9f, 0x26d: 0x9f, 0x26e: 0x9f, 0x26f: 0x9f, + 0x270: 0x9f, 0x271: 0x9f, 0x272: 0x9f, 0x273: 0x9f, 0x274: 0x9f, 0x275: 0x9f, 0x276: 0x9f, 0x277: 0x9f, + 0x278: 0x9f, 0x279: 0x9f, 0x27a: 0x9f, 0x27b: 0x9f, 0x27c: 0x9f, 0x27d: 0x9f, 0x27e: 0x9f, 0x27f: 0x9f, + // Block 0xa, offset 0x280 + 0x280: 0x9f, 0x281: 0x9f, 0x282: 0x9f, 0x283: 0x9f, 0x284: 0x9f, 0x285: 0x9f, 0x286: 0x9f, 0x287: 0x9f, + 0x288: 0x9f, 0x289: 0x9f, 0x28a: 0x9f, 0x28b: 0x9f, 0x28c: 0x9f, 0x28d: 0x9f, 0x28e: 0x9f, 0x28f: 0x9f, + 0x290: 0x9f, 0x291: 0x9f, 0x292: 0x9f, 0x293: 0x9f, 0x294: 0x9f, 0x295: 0x9f, 0x296: 0x9f, 0x297: 0x9f, + 0x298: 0x9f, 0x299: 0x9f, 0x29a: 0x9f, 0x29b: 0x9f, 0x29c: 0x9f, 0x29d: 0x9f, 0x29e: 0x9f, 0x29f: 0x9f, + 0x2a0: 0x9f, 0x2a1: 0x9f, 0x2a2: 0x9f, 0x2a3: 0x9f, 0x2a4: 0x9f, 0x2a5: 0x9f, 0x2a6: 0x9f, 0x2a7: 0x9f, + 0x2a8: 0x9f, 0x2a9: 0x9f, 0x2aa: 0x9f, 0x2ab: 0x9f, 0x2ac: 0x9f, 0x2ad: 0x9f, 0x2ae: 0x9f, 0x2af: 0x9f, + 0x2b0: 0x9f, 0x2b1: 0x9f, 0x2b2: 0x9f, 0x2b3: 0x9f, 0x2b4: 0x9f, 0x2b5: 0x9f, 0x2b6: 0x9f, 0x2b7: 0x9f, + 0x2b8: 0x9f, 0x2b9: 0x9f, 0x2ba: 0x9f, 0x2bb: 0x9f, 0x2bc: 0x9f, 0x2bd: 0x9f, 0x2be: 0x9f, 0x2bf: 0xe4, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x9f, 0x2c1: 0x9f, 0x2c2: 0x9f, 0x2c3: 0x9f, 0x2c4: 0x9f, 0x2c5: 0x9f, 0x2c6: 0x9f, 0x2c7: 0x9f, + 0x2c8: 0x9f, 0x2c9: 0x9f, 0x2ca: 0x9f, 0x2cb: 0x9f, 0x2cc: 0x9f, 0x2cd: 0x9f, 0x2ce: 0x9f, 0x2cf: 0x9f, + 0x2d0: 0x9f, 0x2d1: 0x9f, 0x2d2: 0xe5, 0x2d3: 0xe6, 0x2d4: 0x9f, 0x2d5: 0x9f, 0x2d6: 0x9f, 0x2d7: 0x9f, + 0x2d8: 0xe7, 0x2d9: 0x41, 0x2da: 0x42, 0x2db: 0xe8, 0x2dc: 0x43, 0x2dd: 0x44, 0x2de: 0x45, 0x2df: 0xe9, + 0x2e0: 0xea, 0x2e1: 0xeb, 0x2e2: 0xec, 0x2e3: 0xed, 0x2e4: 0xee, 0x2e5: 0xef, 0x2e6: 0xf0, 0x2e7: 0xf1, + 0x2e8: 0xf2, 0x2e9: 0xf3, 0x2ea: 0xf4, 0x2eb: 0xf5, 0x2ec: 0xf6, 0x2ed: 0xf7, 0x2ee: 0xf8, 0x2ef: 0xf9, + 0x2f0: 0x9f, 0x2f1: 0x9f, 0x2f2: 0x9f, 0x2f3: 0x9f, 0x2f4: 0x9f, 0x2f5: 0x9f, 0x2f6: 0x9f, 0x2f7: 0x9f, + 0x2f8: 0x9f, 0x2f9: 0x9f, 0x2fa: 0x9f, 0x2fb: 0x9f, 0x2fc: 0x9f, 0x2fd: 0x9f, 0x2fe: 0x9f, 0x2ff: 0x9f, + // Block 0xc, offset 0x300 + 0x300: 0x9f, 0x301: 0x9f, 0x302: 0x9f, 0x303: 0x9f, 0x304: 0x9f, 0x305: 0x9f, 0x306: 0x9f, 0x307: 0x9f, + 0x308: 0x9f, 0x309: 0x9f, 0x30a: 0x9f, 0x30b: 0x9f, 0x30c: 0x9f, 0x30d: 0x9f, 0x30e: 0x9f, 0x30f: 0x9f, + 0x310: 0x9f, 0x311: 0x9f, 0x312: 0x9f, 0x313: 0x9f, 0x314: 0x9f, 0x315: 0x9f, 0x316: 0x9f, 0x317: 0x9f, + 0x318: 0x9f, 0x319: 0x9f, 0x31a: 0x9f, 0x31b: 0x9f, 0x31c: 0x9f, 0x31d: 0x9f, 0x31e: 0xfa, 0x31f: 0xfb, + // Block 0xd, offset 0x340 + 0x340: 0xba, 0x341: 0xba, 0x342: 0xba, 0x343: 0xba, 0x344: 0xba, 0x345: 0xba, 0x346: 0xba, 0x347: 0xba, + 0x348: 0xba, 0x349: 0xba, 0x34a: 0xba, 0x34b: 0xba, 0x34c: 0xba, 0x34d: 0xba, 0x34e: 0xba, 0x34f: 0xba, + 0x350: 0xba, 0x351: 0xba, 0x352: 0xba, 0x353: 0xba, 0x354: 0xba, 0x355: 0xba, 0x356: 0xba, 0x357: 0xba, + 0x358: 0xba, 0x359: 0xba, 0x35a: 0xba, 0x35b: 0xba, 0x35c: 0xba, 0x35d: 0xba, 0x35e: 0xba, 0x35f: 0xba, + 0x360: 0xba, 0x361: 0xba, 0x362: 0xba, 0x363: 0xba, 0x364: 0xba, 0x365: 0xba, 0x366: 0xba, 0x367: 0xba, + 0x368: 0xba, 0x369: 0xba, 0x36a: 0xba, 0x36b: 0xba, 0x36c: 0xba, 0x36d: 0xba, 0x36e: 0xba, 0x36f: 0xba, + 0x370: 0xba, 0x371: 0xba, 0x372: 0xba, 0x373: 0xba, 0x374: 0xba, 0x375: 0xba, 0x376: 0xba, 0x377: 0xba, + 0x378: 0xba, 0x379: 0xba, 0x37a: 0xba, 0x37b: 0xba, 0x37c: 0xba, 0x37d: 0xba, 0x37e: 0xba, 0x37f: 0xba, + // Block 0xe, offset 0x380 + 0x380: 0xba, 0x381: 0xba, 0x382: 0xba, 0x383: 0xba, 0x384: 0xba, 0x385: 0xba, 0x386: 0xba, 0x387: 0xba, + 0x388: 0xba, 0x389: 0xba, 0x38a: 0xba, 0x38b: 0xba, 0x38c: 0xba, 0x38d: 0xba, 0x38e: 0xba, 0x38f: 0xba, + 0x390: 0xba, 0x391: 0xba, 0x392: 0xba, 0x393: 0xba, 0x394: 0xba, 0x395: 0xba, 0x396: 0xba, 0x397: 0xba, + 0x398: 0xba, 0x399: 0xba, 0x39a: 0xba, 0x39b: 0xba, 0x39c: 0xba, 0x39d: 0xba, 0x39e: 0xba, 0x39f: 0xba, + 0x3a0: 0xba, 0x3a1: 0xba, 0x3a2: 0xba, 0x3a3: 0xba, 0x3a4: 0xfc, 0x3a5: 0xfd, 0x3a6: 0xfe, 0x3a7: 0xff, + 0x3a8: 0x46, 0x3a9: 0x100, 0x3aa: 0x101, 0x3ab: 0x47, 0x3ac: 0x48, 0x3ad: 0x49, 0x3ae: 0x4a, 0x3af: 0x4b, + 0x3b0: 0x102, 0x3b1: 0x4c, 0x3b2: 0x4d, 0x3b3: 0x4e, 0x3b4: 0x4f, 0x3b5: 0x50, 0x3b6: 0x103, 0x3b7: 0x51, + 0x3b8: 0x52, 0x3b9: 0x53, 0x3ba: 0x54, 0x3bb: 0x55, 0x3bc: 0x56, 0x3bd: 0x57, 0x3be: 0x58, 0x3bf: 0x59, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x104, 0x3c1: 0x105, 0x3c2: 0x9f, 0x3c3: 0x106, 0x3c4: 0x107, 0x3c5: 0x9b, 0x3c6: 0x108, 0x3c7: 0x109, + 0x3c8: 0xba, 0x3c9: 0xba, 0x3ca: 0x10a, 0x3cb: 0x10b, 0x3cc: 0x10c, 0x3cd: 0x10d, 0x3ce: 0x10e, 0x3cf: 0x10f, + 0x3d0: 0x110, 0x3d1: 0x9f, 0x3d2: 0x111, 0x3d3: 0x112, 0x3d4: 0x113, 0x3d5: 0x114, 0x3d6: 0xba, 0x3d7: 0xba, + 0x3d8: 0x9f, 0x3d9: 0x9f, 0x3da: 0x9f, 0x3db: 0x9f, 0x3dc: 0x115, 0x3dd: 0x116, 0x3de: 0xba, 0x3df: 0xba, + 0x3e0: 0x117, 0x3e1: 0x118, 0x3e2: 0x119, 0x3e3: 0x11a, 0x3e4: 0x11b, 0x3e5: 0xba, 0x3e6: 0x11c, 0x3e7: 0x11d, + 0x3e8: 0x11e, 0x3e9: 0x11f, 0x3ea: 0x120, 0x3eb: 0x5a, 0x3ec: 0x121, 0x3ed: 0x122, 0x3ee: 0x5b, 0x3ef: 0xba, + 0x3f0: 0x123, 0x3f1: 0x124, 0x3f2: 0x125, 0x3f3: 0x126, 0x3f4: 0xba, 0x3f5: 0xba, 0x3f6: 0xba, 0x3f7: 0xba, + 0x3f8: 0xba, 0x3f9: 0x127, 0x3fa: 0xba, 0x3fb: 0xba, 0x3fc: 0xba, 0x3fd: 0xba, 0x3fe: 0xba, 0x3ff: 0xba, + // Block 0x10, offset 0x400 + 0x400: 0x128, 0x401: 0x129, 0x402: 0x12a, 0x403: 0x12b, 0x404: 0x12c, 0x405: 0x12d, 0x406: 0x12e, 0x407: 0x12f, + 0x408: 0x130, 0x409: 0xba, 0x40a: 0x131, 0x40b: 0x132, 0x40c: 0x5c, 0x40d: 0x5d, 0x40e: 0xba, 0x40f: 0xba, + 0x410: 0x133, 0x411: 0x134, 0x412: 0x135, 0x413: 0x136, 0x414: 0xba, 0x415: 0xba, 0x416: 0x137, 0x417: 0x138, + 0x418: 0x139, 0x419: 0x13a, 0x41a: 0x13b, 0x41b: 0x13c, 0x41c: 0x13d, 0x41d: 0xba, 0x41e: 0xba, 0x41f: 0xba, + 0x420: 0xba, 0x421: 0xba, 0x422: 0x13e, 0x423: 0x13f, 0x424: 0xba, 0x425: 0xba, 0x426: 0xba, 0x427: 0xba, + 0x428: 0xba, 0x429: 0xba, 0x42a: 0xba, 0x42b: 0x140, 0x42c: 0xba, 0x42d: 0xba, 0x42e: 0xba, 0x42f: 0xba, + 0x430: 0x141, 0x431: 0x142, 0x432: 0x143, 0x433: 0xba, 0x434: 0xba, 0x435: 0xba, 0x436: 0xba, 0x437: 0xba, + 0x438: 0xba, 0x439: 0xba, 0x43a: 0xba, 0x43b: 0xba, 0x43c: 0xba, 0x43d: 0xba, 0x43e: 0xba, 0x43f: 0xba, + // Block 0x11, offset 0x440 + 0x440: 0x9f, 0x441: 0x9f, 0x442: 0x9f, 0x443: 0x9f, 0x444: 0x9f, 0x445: 0x9f, 0x446: 0x9f, 0x447: 0x9f, + 0x448: 0x9f, 0x449: 0x9f, 0x44a: 0x9f, 0x44b: 0x9f, 0x44c: 0x9f, 0x44d: 0x9f, 0x44e: 0x144, 0x44f: 0xba, + 0x450: 0x9b, 0x451: 0x145, 0x452: 0x9f, 0x453: 0x9f, 0x454: 0x9f, 0x455: 0x146, 0x456: 0xba, 0x457: 0xba, + 0x458: 0xba, 0x459: 0xba, 0x45a: 0xba, 0x45b: 0xba, 0x45c: 0xba, 0x45d: 0xba, 0x45e: 0xba, 0x45f: 0xba, + 0x460: 0xba, 0x461: 0xba, 0x462: 0xba, 0x463: 0xba, 0x464: 0xba, 0x465: 0xba, 0x466: 0xba, 0x467: 0xba, + 0x468: 0xba, 0x469: 0xba, 0x46a: 0xba, 0x46b: 0xba, 0x46c: 0xba, 0x46d: 0xba, 0x46e: 0xba, 0x46f: 0xba, + 0x470: 0xba, 0x471: 0xba, 0x472: 0xba, 0x473: 0xba, 0x474: 0xba, 0x475: 0xba, 0x476: 0xba, 0x477: 0xba, + 0x478: 0xba, 0x479: 0xba, 0x47a: 0xba, 0x47b: 0xba, 0x47c: 0xba, 0x47d: 0xba, 0x47e: 0xba, 0x47f: 0xba, + // Block 0x12, offset 0x480 + 0x480: 0x9f, 0x481: 0x9f, 0x482: 0x9f, 0x483: 0x9f, 0x484: 0x9f, 0x485: 0x9f, 0x486: 0x9f, 0x487: 0x9f, + 0x488: 0x9f, 0x489: 0x9f, 0x48a: 0x9f, 0x48b: 0x9f, 0x48c: 0x9f, 0x48d: 0x9f, 0x48e: 0x9f, 0x48f: 0x9f, + 0x490: 0x147, 0x491: 0xba, 0x492: 0xba, 0x493: 0xba, 0x494: 0xba, 0x495: 0xba, 0x496: 0xba, 0x497: 0xba, + 0x498: 0xba, 0x499: 0xba, 0x49a: 0xba, 0x49b: 0xba, 0x49c: 0xba, 0x49d: 0xba, 0x49e: 0xba, 0x49f: 0xba, + 0x4a0: 0xba, 0x4a1: 0xba, 0x4a2: 0xba, 0x4a3: 0xba, 0x4a4: 0xba, 0x4a5: 0xba, 0x4a6: 0xba, 0x4a7: 0xba, + 0x4a8: 0xba, 0x4a9: 0xba, 0x4aa: 0xba, 0x4ab: 0xba, 0x4ac: 0xba, 0x4ad: 0xba, 0x4ae: 0xba, 0x4af: 0xba, + 0x4b0: 0xba, 0x4b1: 0xba, 0x4b2: 0xba, 0x4b3: 0xba, 0x4b4: 0xba, 0x4b5: 0xba, 0x4b6: 0xba, 0x4b7: 0xba, + 0x4b8: 0xba, 0x4b9: 0xba, 0x4ba: 0xba, 0x4bb: 0xba, 0x4bc: 0xba, 0x4bd: 0xba, 0x4be: 0xba, 0x4bf: 0xba, + // Block 0x13, offset 0x4c0 + 0x4c0: 0xba, 0x4c1: 0xba, 0x4c2: 0xba, 0x4c3: 0xba, 0x4c4: 0xba, 0x4c5: 0xba, 0x4c6: 0xba, 0x4c7: 0xba, + 0x4c8: 0xba, 0x4c9: 0xba, 0x4ca: 0xba, 0x4cb: 0xba, 0x4cc: 0xba, 0x4cd: 0xba, 0x4ce: 0xba, 0x4cf: 0xba, + 0x4d0: 0x9f, 0x4d1: 0x9f, 0x4d2: 0x9f, 0x4d3: 0x9f, 0x4d4: 0x9f, 0x4d5: 0x9f, 0x4d6: 0x9f, 0x4d7: 0x9f, + 0x4d8: 0x9f, 0x4d9: 0x148, 0x4da: 0xba, 0x4db: 0xba, 0x4dc: 0xba, 0x4dd: 0xba, 0x4de: 0xba, 0x4df: 0xba, + 0x4e0: 0xba, 0x4e1: 0xba, 0x4e2: 0xba, 0x4e3: 0xba, 0x4e4: 0xba, 0x4e5: 0xba, 0x4e6: 0xba, 0x4e7: 0xba, + 0x4e8: 0xba, 0x4e9: 0xba, 0x4ea: 0xba, 0x4eb: 0xba, 0x4ec: 0xba, 0x4ed: 0xba, 0x4ee: 0xba, 0x4ef: 0xba, + 0x4f0: 0xba, 0x4f1: 0xba, 0x4f2: 0xba, 0x4f3: 0xba, 0x4f4: 0xba, 0x4f5: 0xba, 0x4f6: 0xba, 0x4f7: 0xba, + 0x4f8: 0xba, 0x4f9: 0xba, 0x4fa: 0xba, 0x4fb: 0xba, 0x4fc: 0xba, 0x4fd: 0xba, 0x4fe: 0xba, 0x4ff: 0xba, + // Block 0x14, offset 0x500 + 0x500: 0xba, 0x501: 0xba, 0x502: 0xba, 0x503: 0xba, 0x504: 0xba, 0x505: 0xba, 0x506: 0xba, 0x507: 0xba, + 0x508: 0xba, 0x509: 0xba, 0x50a: 0xba, 0x50b: 0xba, 0x50c: 0xba, 0x50d: 0xba, 0x50e: 0xba, 0x50f: 0xba, + 0x510: 0xba, 0x511: 0xba, 0x512: 0xba, 0x513: 0xba, 0x514: 0xba, 0x515: 0xba, 0x516: 0xba, 0x517: 0xba, + 0x518: 0xba, 0x519: 0xba, 0x51a: 0xba, 0x51b: 0xba, 0x51c: 0xba, 0x51d: 0xba, 0x51e: 0xba, 0x51f: 0xba, + 0x520: 0x9f, 0x521: 0x9f, 0x522: 0x9f, 0x523: 0x9f, 0x524: 0x9f, 0x525: 0x9f, 0x526: 0x9f, 0x527: 0x9f, + 0x528: 0x140, 0x529: 0x149, 0x52a: 0xba, 0x52b: 0x14a, 0x52c: 0x14b, 0x52d: 0x14c, 0x52e: 0x14d, 0x52f: 0xba, + 0x530: 0xba, 0x531: 0xba, 0x532: 0xba, 0x533: 0xba, 0x534: 0xba, 0x535: 0xba, 0x536: 0xba, 0x537: 0xba, + 0x538: 0xba, 0x539: 0xba, 0x53a: 0xba, 0x53b: 0xba, 0x53c: 0x9f, 0x53d: 0x14e, 0x53e: 0x14f, 0x53f: 0x150, + // Block 0x15, offset 0x540 + 0x540: 0x9f, 0x541: 0x9f, 0x542: 0x9f, 0x543: 0x9f, 0x544: 0x9f, 0x545: 0x9f, 0x546: 0x9f, 0x547: 0x9f, + 0x548: 0x9f, 0x549: 0x9f, 0x54a: 0x9f, 0x54b: 0x9f, 0x54c: 0x9f, 0x54d: 0x9f, 0x54e: 0x9f, 0x54f: 0x9f, + 0x550: 0x9f, 0x551: 0x9f, 0x552: 0x9f, 0x553: 0x9f, 0x554: 0x9f, 0x555: 0x9f, 0x556: 0x9f, 0x557: 0x9f, + 0x558: 0x9f, 0x559: 0x9f, 0x55a: 0x9f, 0x55b: 0x9f, 0x55c: 0x9f, 0x55d: 0x9f, 0x55e: 0x9f, 0x55f: 0x151, + 0x560: 0x9f, 0x561: 0x9f, 0x562: 0x9f, 0x563: 0x9f, 0x564: 0x9f, 0x565: 0x9f, 0x566: 0x9f, 0x567: 0x9f, + 0x568: 0x9f, 0x569: 0x9f, 0x56a: 0x9f, 0x56b: 0x152, 0x56c: 0xba, 0x56d: 0xba, 0x56e: 0xba, 0x56f: 0xba, + 0x570: 0xba, 0x571: 0xba, 0x572: 0xba, 0x573: 0xba, 0x574: 0xba, 0x575: 0xba, 0x576: 0xba, 0x577: 0xba, + 0x578: 0xba, 0x579: 0xba, 0x57a: 0xba, 0x57b: 0xba, 0x57c: 0xba, 0x57d: 0xba, 0x57e: 0xba, 0x57f: 0xba, + // Block 0x16, offset 0x580 + 0x580: 0x153, 0x581: 0xba, 0x582: 0xba, 0x583: 0xba, 0x584: 0xba, 0x585: 0xba, 0x586: 0xba, 0x587: 0xba, + 0x588: 0xba, 0x589: 0xba, 0x58a: 0xba, 0x58b: 0xba, 0x58c: 0xba, 0x58d: 0xba, 0x58e: 0xba, 0x58f: 0xba, + 0x590: 0xba, 0x591: 0xba, 0x592: 0xba, 0x593: 0xba, 0x594: 0xba, 0x595: 0xba, 0x596: 0xba, 0x597: 0xba, + 0x598: 0xba, 0x599: 0xba, 0x59a: 0xba, 0x59b: 0xba, 0x59c: 0xba, 0x59d: 0xba, 0x59e: 0xba, 0x59f: 0xba, + 0x5a0: 0xba, 0x5a1: 0xba, 0x5a2: 0xba, 0x5a3: 0xba, 0x5a4: 0xba, 0x5a5: 0xba, 0x5a6: 0xba, 0x5a7: 0xba, + 0x5a8: 0xba, 0x5a9: 0xba, 0x5aa: 0xba, 0x5ab: 0xba, 0x5ac: 0xba, 0x5ad: 0xba, 0x5ae: 0xba, 0x5af: 0xba, + 0x5b0: 0x9f, 0x5b1: 0x154, 0x5b2: 0x155, 0x5b3: 0xba, 0x5b4: 0xba, 0x5b5: 0xba, 0x5b6: 0xba, 0x5b7: 0xba, + 0x5b8: 0xba, 0x5b9: 0xba, 0x5ba: 0xba, 0x5bb: 0xba, 0x5bc: 0xba, 0x5bd: 0xba, 0x5be: 0xba, 0x5bf: 0xba, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x9b, 0x5c1: 0x9b, 0x5c2: 0x9b, 0x5c3: 0x156, 0x5c4: 0x157, 0x5c5: 0x158, 0x5c6: 0x159, 0x5c7: 0x15a, + 0x5c8: 0x9b, 0x5c9: 0x15b, 0x5ca: 0xba, 0x5cb: 0xba, 0x5cc: 0x9b, 0x5cd: 0x15c, 0x5ce: 0xba, 0x5cf: 0xba, + 0x5d0: 0x5e, 0x5d1: 0x5f, 0x5d2: 0x60, 0x5d3: 0x61, 0x5d4: 0x62, 0x5d5: 0x63, 0x5d6: 0x64, 0x5d7: 0x65, + 0x5d8: 0x66, 0x5d9: 0x67, 0x5da: 0x68, 0x5db: 0x69, 0x5dc: 0x6a, 0x5dd: 0x6b, 0x5de: 0x6c, 0x5df: 0x6d, + 0x5e0: 0x9b, 0x5e1: 0x9b, 0x5e2: 0x9b, 0x5e3: 0x9b, 0x5e4: 0x9b, 0x5e5: 0x9b, 0x5e6: 0x9b, 0x5e7: 0x9b, + 0x5e8: 0x15d, 0x5e9: 0x15e, 0x5ea: 0x15f, 0x5eb: 0xba, 0x5ec: 0xba, 0x5ed: 0xba, 0x5ee: 0xba, 0x5ef: 0xba, + 0x5f0: 0xba, 0x5f1: 0xba, 0x5f2: 0xba, 0x5f3: 0xba, 0x5f4: 0xba, 0x5f5: 0xba, 0x5f6: 0xba, 0x5f7: 0xba, + 0x5f8: 0xba, 0x5f9: 0xba, 0x5fa: 0xba, 0x5fb: 0xba, 0x5fc: 0xba, 0x5fd: 0xba, 0x5fe: 0xba, 0x5ff: 0xba, + // Block 0x18, offset 0x600 + 0x600: 0x160, 0x601: 0xba, 0x602: 0xba, 0x603: 0xba, 0x604: 0xba, 0x605: 0xba, 0x606: 0xba, 0x607: 0xba, + 0x608: 0xba, 0x609: 0xba, 0x60a: 0xba, 0x60b: 0xba, 0x60c: 0xba, 0x60d: 0xba, 0x60e: 0xba, 0x60f: 0xba, + 0x610: 0xba, 0x611: 0xba, 0x612: 0xba, 0x613: 0xba, 0x614: 0xba, 0x615: 0xba, 0x616: 0xba, 0x617: 0xba, + 0x618: 0xba, 0x619: 0xba, 0x61a: 0xba, 0x61b: 0xba, 0x61c: 0xba, 0x61d: 0xba, 0x61e: 0xba, 0x61f: 0xba, + 0x620: 0x123, 0x621: 0x123, 0x622: 0x123, 0x623: 0x161, 0x624: 0x6e, 0x625: 0x162, 0x626: 0xba, 0x627: 0xba, + 0x628: 0xba, 0x629: 0xba, 0x62a: 0xba, 0x62b: 0xba, 0x62c: 0xba, 0x62d: 0xba, 0x62e: 0xba, 0x62f: 0xba, + 0x630: 0xba, 0x631: 0xba, 0x632: 0xba, 0x633: 0xba, 0x634: 0xba, 0x635: 0xba, 0x636: 0xba, 0x637: 0xba, + 0x638: 0x6f, 0x639: 0x70, 0x63a: 0x71, 0x63b: 0x163, 0x63c: 0xba, 0x63d: 0xba, 0x63e: 0xba, 0x63f: 0xba, + // Block 0x19, offset 0x640 + 0x640: 0x164, 0x641: 0x9b, 0x642: 0x165, 0x643: 0x166, 0x644: 0x72, 0x645: 0x73, 0x646: 0x167, 0x647: 0x168, + 0x648: 0x74, 0x649: 0x169, 0x64a: 0xba, 0x64b: 0xba, 0x64c: 0x9b, 0x64d: 0x9b, 0x64e: 0x9b, 0x64f: 0x9b, + 0x650: 0x9b, 0x651: 0x9b, 0x652: 0x9b, 0x653: 0x9b, 0x654: 0x9b, 0x655: 0x9b, 0x656: 0x9b, 0x657: 0x9b, + 0x658: 0x9b, 0x659: 0x9b, 0x65a: 0x9b, 0x65b: 0x16a, 0x65c: 0x9b, 0x65d: 0x16b, 0x65e: 0x9b, 0x65f: 0x16c, + 0x660: 0x16d, 0x661: 0x16e, 0x662: 0x16f, 0x663: 0xba, 0x664: 0x170, 0x665: 0x171, 0x666: 0x172, 0x667: 0x173, + 0x668: 0xba, 0x669: 0xba, 0x66a: 0xba, 0x66b: 0xba, 0x66c: 0xba, 0x66d: 0xba, 0x66e: 0xba, 0x66f: 0xba, + 0x670: 0xba, 0x671: 0xba, 0x672: 0xba, 0x673: 0xba, 0x674: 0xba, 0x675: 0xba, 0x676: 0xba, 0x677: 0xba, + 0x678: 0xba, 0x679: 0xba, 0x67a: 0xba, 0x67b: 0xba, 0x67c: 0xba, 0x67d: 0xba, 0x67e: 0xba, 0x67f: 0xba, + // Block 0x1a, offset 0x680 + 0x680: 0x9f, 0x681: 0x9f, 0x682: 0x9f, 0x683: 0x9f, 0x684: 0x9f, 0x685: 0x9f, 0x686: 0x9f, 0x687: 0x9f, + 0x688: 0x9f, 0x689: 0x9f, 0x68a: 0x9f, 0x68b: 0x9f, 0x68c: 0x9f, 0x68d: 0x9f, 0x68e: 0x9f, 0x68f: 0x9f, + 0x690: 0x9f, 0x691: 0x9f, 0x692: 0x9f, 0x693: 0x9f, 0x694: 0x9f, 0x695: 0x9f, 0x696: 0x9f, 0x697: 0x9f, + 0x698: 0x9f, 0x699: 0x9f, 0x69a: 0x9f, 0x69b: 0x174, 0x69c: 0x9f, 0x69d: 0x9f, 0x69e: 0x9f, 0x69f: 0x9f, + 0x6a0: 0x9f, 0x6a1: 0x9f, 0x6a2: 0x9f, 0x6a3: 0x9f, 0x6a4: 0x9f, 0x6a5: 0x9f, 0x6a6: 0x9f, 0x6a7: 0x9f, + 0x6a8: 0x9f, 0x6a9: 0x9f, 0x6aa: 0x9f, 0x6ab: 0x9f, 0x6ac: 0x9f, 0x6ad: 0x9f, 0x6ae: 0x9f, 0x6af: 0x9f, + 0x6b0: 0x9f, 0x6b1: 0x9f, 0x6b2: 0x9f, 0x6b3: 0x9f, 0x6b4: 0x9f, 0x6b5: 0x9f, 0x6b6: 0x9f, 0x6b7: 0x9f, + 0x6b8: 0x9f, 0x6b9: 0x9f, 0x6ba: 0x9f, 0x6bb: 0x9f, 0x6bc: 0x9f, 0x6bd: 0x9f, 0x6be: 0x9f, 0x6bf: 0x9f, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x9f, 0x6c1: 0x9f, 0x6c2: 0x9f, 0x6c3: 0x9f, 0x6c4: 0x9f, 0x6c5: 0x9f, 0x6c6: 0x9f, 0x6c7: 0x9f, + 0x6c8: 0x9f, 0x6c9: 0x9f, 0x6ca: 0x9f, 0x6cb: 0x9f, 0x6cc: 0x9f, 0x6cd: 0x9f, 0x6ce: 0x9f, 0x6cf: 0x9f, + 0x6d0: 0x9f, 0x6d1: 0x9f, 0x6d2: 0x9f, 0x6d3: 0x9f, 0x6d4: 0x9f, 0x6d5: 0x9f, 0x6d6: 0x9f, 0x6d7: 0x9f, + 0x6d8: 0x9f, 0x6d9: 0x9f, 0x6da: 0x9f, 0x6db: 0x9f, 0x6dc: 0x175, 0x6dd: 0x9f, 0x6de: 0x9f, 0x6df: 0x9f, + 0x6e0: 0x176, 0x6e1: 0x9f, 0x6e2: 0x9f, 0x6e3: 0x9f, 0x6e4: 0x9f, 0x6e5: 0x9f, 0x6e6: 0x9f, 0x6e7: 0x9f, + 0x6e8: 0x9f, 0x6e9: 0x9f, 0x6ea: 0x9f, 0x6eb: 0x9f, 0x6ec: 0x9f, 0x6ed: 0x9f, 0x6ee: 0x9f, 0x6ef: 0x9f, + 0x6f0: 0x9f, 0x6f1: 0x9f, 0x6f2: 0x9f, 0x6f3: 0x9f, 0x6f4: 0x9f, 0x6f5: 0x9f, 0x6f6: 0x9f, 0x6f7: 0x9f, + 0x6f8: 0x9f, 0x6f9: 0x9f, 0x6fa: 0x9f, 0x6fb: 0x9f, 0x6fc: 0x9f, 0x6fd: 0x9f, 0x6fe: 0x9f, 0x6ff: 0x9f, + // Block 0x1c, offset 0x700 + 0x700: 0x9f, 0x701: 0x9f, 0x702: 0x9f, 0x703: 0x9f, 0x704: 0x9f, 0x705: 0x9f, 0x706: 0x9f, 0x707: 0x9f, + 0x708: 0x9f, 0x709: 0x9f, 0x70a: 0x9f, 0x70b: 0x9f, 0x70c: 0x9f, 0x70d: 0x9f, 0x70e: 0x9f, 0x70f: 0x9f, + 0x710: 0x9f, 0x711: 0x9f, 0x712: 0x9f, 0x713: 0x9f, 0x714: 0x9f, 0x715: 0x9f, 0x716: 0x9f, 0x717: 0x9f, + 0x718: 0x9f, 0x719: 0x9f, 0x71a: 0x9f, 0x71b: 0x9f, 0x71c: 0x9f, 0x71d: 0x9f, 0x71e: 0x9f, 0x71f: 0x9f, + 0x720: 0x9f, 0x721: 0x9f, 0x722: 0x9f, 0x723: 0x9f, 0x724: 0x9f, 0x725: 0x9f, 0x726: 0x9f, 0x727: 0x9f, + 0x728: 0x9f, 0x729: 0x9f, 0x72a: 0x9f, 0x72b: 0x9f, 0x72c: 0x9f, 0x72d: 0x9f, 0x72e: 0x9f, 0x72f: 0x9f, + 0x730: 0x9f, 0x731: 0x9f, 0x732: 0x9f, 0x733: 0x9f, 0x734: 0x9f, 0x735: 0x9f, 0x736: 0x9f, 0x737: 0x9f, + 0x738: 0x9f, 0x739: 0x9f, 0x73a: 0x177, 0x73b: 0xba, 0x73c: 0xba, 0x73d: 0xba, 0x73e: 0xba, 0x73f: 0xba, + // Block 0x1d, offset 0x740 + 0x740: 0xba, 0x741: 0xba, 0x742: 0xba, 0x743: 0xba, 0x744: 0xba, 0x745: 0xba, 0x746: 0xba, 0x747: 0xba, + 0x748: 0xba, 0x749: 0xba, 0x74a: 0xba, 0x74b: 0xba, 0x74c: 0xba, 0x74d: 0xba, 0x74e: 0xba, 0x74f: 0xba, + 0x750: 0xba, 0x751: 0xba, 0x752: 0xba, 0x753: 0xba, 0x754: 0xba, 0x755: 0xba, 0x756: 0xba, 0x757: 0xba, + 0x758: 0xba, 0x759: 0xba, 0x75a: 0xba, 0x75b: 0xba, 0x75c: 0xba, 0x75d: 0xba, 0x75e: 0xba, 0x75f: 0xba, + 0x760: 0x75, 0x761: 0x76, 0x762: 0x77, 0x763: 0x178, 0x764: 0x78, 0x765: 0x79, 0x766: 0x179, 0x767: 0x7a, + 0x768: 0x7b, 0x769: 0xba, 0x76a: 0xba, 0x76b: 0xba, 0x76c: 0xba, 0x76d: 0xba, 0x76e: 0xba, 0x76f: 0xba, + 0x770: 0xba, 0x771: 0xba, 0x772: 0xba, 0x773: 0xba, 0x774: 0xba, 0x775: 0xba, 0x776: 0xba, 0x777: 0xba, + 0x778: 0xba, 0x779: 0xba, 0x77a: 0xba, 0x77b: 0xba, 0x77c: 0xba, 0x77d: 0xba, 0x77e: 0xba, 0x77f: 0xba, + // Block 0x1e, offset 0x780 + 0x790: 0x0d, 0x791: 0x0e, 0x792: 0x0f, 0x793: 0x10, 0x794: 0x11, 0x795: 0x0b, 0x796: 0x12, 0x797: 0x07, + 0x798: 0x13, 0x799: 0x0b, 0x79a: 0x0b, 0x79b: 0x14, 0x79c: 0x0b, 0x79d: 0x15, 0x79e: 0x16, 0x79f: 0x17, + 0x7a0: 0x07, 0x7a1: 0x07, 0x7a2: 0x07, 0x7a3: 0x07, 0x7a4: 0x07, 0x7a5: 0x07, 0x7a6: 0x07, 0x7a7: 0x07, + 0x7a8: 0x07, 0x7a9: 0x07, 0x7aa: 0x18, 0x7ab: 0x19, 0x7ac: 0x1a, 0x7ad: 0x0b, 0x7ae: 0x0b, 0x7af: 0x1b, + 0x7b0: 0x0b, 0x7b1: 0x0b, 0x7b2: 0x0b, 0x7b3: 0x0b, 0x7b4: 0x0b, 0x7b5: 0x0b, 0x7b6: 0x0b, 0x7b7: 0x0b, + 0x7b8: 0x0b, 0x7b9: 0x0b, 0x7ba: 0x0b, 0x7bb: 0x0b, 0x7bc: 0x0b, 0x7bd: 0x0b, 0x7be: 0x0b, 0x7bf: 0x0b, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x0b, 0x7c1: 0x0b, 0x7c2: 0x0b, 0x7c3: 0x0b, 0x7c4: 0x0b, 0x7c5: 0x0b, 0x7c6: 0x0b, 0x7c7: 0x0b, + 0x7c8: 0x0b, 0x7c9: 0x0b, 0x7ca: 0x0b, 0x7cb: 0x0b, 0x7cc: 0x0b, 0x7cd: 0x0b, 0x7ce: 0x0b, 0x7cf: 0x0b, + 0x7d0: 0x0b, 0x7d1: 0x0b, 0x7d2: 0x0b, 0x7d3: 0x0b, 0x7d4: 0x0b, 0x7d5: 0x0b, 0x7d6: 0x0b, 0x7d7: 0x0b, + 0x7d8: 0x0b, 0x7d9: 0x0b, 0x7da: 0x0b, 0x7db: 0x0b, 0x7dc: 0x0b, 0x7dd: 0x0b, 0x7de: 0x0b, 0x7df: 0x0b, + 0x7e0: 0x0b, 0x7e1: 0x0b, 0x7e2: 0x0b, 0x7e3: 0x0b, 0x7e4: 0x0b, 0x7e5: 0x0b, 0x7e6: 0x0b, 0x7e7: 0x0b, + 0x7e8: 0x0b, 0x7e9: 0x0b, 0x7ea: 0x0b, 0x7eb: 0x0b, 0x7ec: 0x0b, 0x7ed: 0x0b, 0x7ee: 0x0b, 0x7ef: 0x0b, + 0x7f0: 0x0b, 0x7f1: 0x0b, 0x7f2: 0x0b, 0x7f3: 0x0b, 0x7f4: 0x0b, 0x7f5: 0x0b, 0x7f6: 0x0b, 0x7f7: 0x0b, + 0x7f8: 0x0b, 0x7f9: 0x0b, 0x7fa: 0x0b, 0x7fb: 0x0b, 0x7fc: 0x0b, 0x7fd: 0x0b, 0x7fe: 0x0b, 0x7ff: 0x0b, + // Block 0x20, offset 0x800 + 0x800: 0x17a, 0x801: 0x17b, 0x802: 0xba, 0x803: 0xba, 0x804: 0x17c, 0x805: 0x17c, 0x806: 0x17c, 0x807: 0x17d, + 0x808: 0xba, 0x809: 0xba, 0x80a: 0xba, 0x80b: 0xba, 0x80c: 0xba, 0x80d: 0xba, 0x80e: 0xba, 0x80f: 0xba, + 0x810: 0xba, 0x811: 0xba, 0x812: 0xba, 0x813: 0xba, 0x814: 0xba, 0x815: 0xba, 0x816: 0xba, 0x817: 0xba, + 0x818: 0xba, 0x819: 0xba, 0x81a: 0xba, 0x81b: 0xba, 0x81c: 0xba, 0x81d: 0xba, 0x81e: 0xba, 0x81f: 0xba, + 0x820: 0xba, 0x821: 0xba, 0x822: 0xba, 0x823: 0xba, 0x824: 0xba, 0x825: 0xba, 0x826: 0xba, 0x827: 0xba, + 0x828: 0xba, 0x829: 0xba, 0x82a: 0xba, 0x82b: 0xba, 0x82c: 0xba, 0x82d: 0xba, 0x82e: 0xba, 0x82f: 0xba, + 0x830: 0xba, 0x831: 0xba, 0x832: 0xba, 0x833: 0xba, 0x834: 0xba, 0x835: 0xba, 0x836: 0xba, 0x837: 0xba, + 0x838: 0xba, 0x839: 0xba, 0x83a: 0xba, 0x83b: 0xba, 0x83c: 0xba, 0x83d: 0xba, 0x83e: 0xba, 0x83f: 0xba, + // Block 0x21, offset 0x840 + 0x840: 0x0b, 0x841: 0x0b, 0x842: 0x0b, 0x843: 0x0b, 0x844: 0x0b, 0x845: 0x0b, 0x846: 0x0b, 0x847: 0x0b, + 0x848: 0x0b, 0x849: 0x0b, 0x84a: 0x0b, 0x84b: 0x0b, 0x84c: 0x0b, 0x84d: 0x0b, 0x84e: 0x0b, 0x84f: 0x0b, + 0x850: 0x0b, 0x851: 0x0b, 0x852: 0x0b, 0x853: 0x0b, 0x854: 0x0b, 0x855: 0x0b, 0x856: 0x0b, 0x857: 0x0b, + 0x858: 0x0b, 0x859: 0x0b, 0x85a: 0x0b, 0x85b: 0x0b, 0x85c: 0x0b, 0x85d: 0x0b, 0x85e: 0x0b, 0x85f: 0x0b, + 0x860: 0x1e, 0x861: 0x0b, 0x862: 0x0b, 0x863: 0x0b, 0x864: 0x0b, 0x865: 0x0b, 0x866: 0x0b, 0x867: 0x0b, + 0x868: 0x0b, 0x869: 0x0b, 0x86a: 0x0b, 0x86b: 0x0b, 0x86c: 0x0b, 0x86d: 0x0b, 0x86e: 0x0b, 0x86f: 0x0b, + 0x870: 0x0b, 0x871: 0x0b, 0x872: 0x0b, 0x873: 0x0b, 0x874: 0x0b, 0x875: 0x0b, 0x876: 0x0b, 0x877: 0x0b, + 0x878: 0x0b, 0x879: 0x0b, 0x87a: 0x0b, 0x87b: 0x0b, 0x87c: 0x0b, 0x87d: 0x0b, 0x87e: 0x0b, 0x87f: 0x0b, + // Block 0x22, offset 0x880 + 0x880: 0x0b, 0x881: 0x0b, 0x882: 0x0b, 0x883: 0x0b, 0x884: 0x0b, 0x885: 0x0b, 0x886: 0x0b, 0x887: 0x0b, + 0x888: 0x0b, 0x889: 0x0b, 0x88a: 0x0b, 0x88b: 0x0b, 0x88c: 0x0b, 0x88d: 0x0b, 0x88e: 0x0b, 0x88f: 0x0b, +} + +// idnaSparseOffset: 258 entries, 516 bytes +var idnaSparseOffset = []uint16{0x0, 0x8, 0x19, 0x25, 0x27, 0x2c, 0x34, 0x3f, 0x4b, 0x4f, 0x5e, 0x63, 0x6b, 0x77, 0x85, 0x93, 0x98, 0xa1, 0xb1, 0xbf, 0xcc, 0xd8, 0xe9, 0xf3, 0xfa, 0x107, 0x118, 0x11f, 0x12a, 0x139, 0x147, 0x151, 0x153, 0x158, 0x15b, 0x15e, 0x160, 0x16c, 0x177, 0x17f, 0x185, 0x18b, 0x190, 0x195, 0x198, 0x19c, 0x1a2, 0x1a7, 0x1b3, 0x1bd, 0x1c3, 0x1d4, 0x1de, 0x1e1, 0x1e9, 0x1ec, 0x1f9, 0x201, 0x205, 0x20c, 0x214, 0x224, 0x230, 0x232, 0x23c, 0x248, 0x254, 0x260, 0x268, 0x26d, 0x277, 0x288, 0x28c, 0x297, 0x29b, 0x2a4, 0x2ac, 0x2b2, 0x2b7, 0x2ba, 0x2bd, 0x2c1, 0x2c7, 0x2cb, 0x2cf, 0x2d5, 0x2dc, 0x2e2, 0x2ea, 0x2f1, 0x2fc, 0x306, 0x30a, 0x30d, 0x313, 0x317, 0x319, 0x31c, 0x31e, 0x321, 0x32b, 0x32e, 0x33d, 0x341, 0x346, 0x349, 0x34d, 0x352, 0x357, 0x35d, 0x363, 0x372, 0x378, 0x37c, 0x38b, 0x390, 0x398, 0x3a2, 0x3ad, 0x3b5, 0x3c6, 0x3cf, 0x3df, 0x3ec, 0x3f6, 0x3fb, 0x408, 0x40c, 0x411, 0x413, 0x417, 0x419, 0x41d, 0x426, 0x42c, 0x430, 0x440, 0x44a, 0x44f, 0x452, 0x458, 0x45f, 0x464, 0x468, 0x46e, 0x473, 0x47c, 0x481, 0x487, 0x48e, 0x495, 0x49c, 0x4a0, 0x4a5, 0x4a8, 0x4ad, 0x4b9, 0x4bf, 0x4c4, 0x4cb, 0x4d3, 0x4d8, 0x4dc, 0x4ec, 0x4f3, 0x4f7, 0x4fb, 0x502, 0x504, 0x507, 0x50a, 0x50e, 0x512, 0x518, 0x521, 0x52d, 0x534, 0x53d, 0x545, 0x54c, 0x55a, 0x567, 0x574, 0x57d, 0x581, 0x58f, 0x597, 0x5a2, 0x5ab, 0x5b1, 0x5b9, 0x5c2, 0x5cc, 0x5cf, 0x5db, 0x5de, 0x5e3, 0x5e6, 0x5f0, 0x5f9, 0x605, 0x608, 0x60d, 0x610, 0x613, 0x616, 0x61d, 0x624, 0x628, 0x633, 0x636, 0x63c, 0x641, 0x645, 0x648, 0x64b, 0x64e, 0x653, 0x65d, 0x660, 0x664, 0x673, 0x67f, 0x683, 0x688, 0x68d, 0x691, 0x696, 0x69f, 0x6aa, 0x6b0, 0x6b8, 0x6bc, 0x6c0, 0x6c6, 0x6cc, 0x6d1, 0x6d4, 0x6e2, 0x6e9, 0x6ec, 0x6ef, 0x6f3, 0x6f9, 0x6fe, 0x708, 0x70d, 0x710, 0x713, 0x716, 0x719, 0x71d, 0x720, 0x730, 0x741, 0x746, 0x748, 0x74a} + +// idnaSparseValues: 1869 entries, 7476 bytes +var idnaSparseValues = [1869]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0000, lo: 0x07}, + {value: 0xe105, lo: 0x80, hi: 0x96}, + {value: 0x0018, lo: 0x97, hi: 0x97}, + {value: 0xe105, lo: 0x98, hi: 0x9e}, + {value: 0x001f, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbf}, + // Block 0x1, offset 0x8 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0xe01d, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0335, lo: 0x83, hi: 0x83}, + {value: 0x034d, lo: 0x84, hi: 0x84}, + {value: 0x0365, lo: 0x85, hi: 0x85}, + {value: 0xe00d, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0xe00d, lo: 0x88, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x89}, + {value: 0xe00d, lo: 0x8a, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe00d, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0x8d}, + {value: 0xe00d, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0xbf}, + // Block 0x2, offset 0x19 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x0249, lo: 0xb0, hi: 0xb0}, + {value: 0x037d, lo: 0xb1, hi: 0xb1}, + {value: 0x0259, lo: 0xb2, hi: 0xb2}, + {value: 0x0269, lo: 0xb3, hi: 0xb3}, + {value: 0x034d, lo: 0xb4, hi: 0xb4}, + {value: 0x0395, lo: 0xb5, hi: 0xb5}, + {value: 0xe1bd, lo: 0xb6, hi: 0xb6}, + {value: 0x0279, lo: 0xb7, hi: 0xb7}, + {value: 0x0289, lo: 0xb8, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbf}, + // Block 0x3, offset 0x25 + {value: 0x0000, lo: 0x01}, + {value: 0x3308, lo: 0x80, hi: 0xbf}, + // Block 0x4, offset 0x27 + {value: 0x0000, lo: 0x04}, + {value: 0x03f5, lo: 0x80, hi: 0x8f}, + {value: 0xe105, lo: 0x90, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x5, offset 0x2c + {value: 0x0000, lo: 0x07}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x0545, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x0008, lo: 0x99, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xbf}, + // Block 0x6, offset 0x34 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0401, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x88}, + {value: 0x0018, lo: 0x89, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x3308, lo: 0x91, hi: 0xbd}, + {value: 0x0818, lo: 0xbe, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x7, offset 0x3f + {value: 0x0000, lo: 0x0b}, + {value: 0x0818, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x82}, + {value: 0x0818, lo: 0x83, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x85}, + {value: 0x0818, lo: 0x86, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0808, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x8, offset 0x4b + {value: 0x0000, lo: 0x03}, + {value: 0x0a08, lo: 0x80, hi: 0x87}, + {value: 0x0c08, lo: 0x88, hi: 0x99}, + {value: 0x0a08, lo: 0x9a, hi: 0xbf}, + // Block 0x9, offset 0x4f + {value: 0x0000, lo: 0x0e}, + {value: 0x3308, lo: 0x80, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8c}, + {value: 0x0c08, lo: 0x8d, hi: 0x8d}, + {value: 0x0a08, lo: 0x8e, hi: 0x98}, + {value: 0x0c08, lo: 0x99, hi: 0x9b}, + {value: 0x0a08, lo: 0x9c, hi: 0xaa}, + {value: 0x0c08, lo: 0xab, hi: 0xac}, + {value: 0x0a08, lo: 0xad, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb1}, + {value: 0x0a08, lo: 0xb2, hi: 0xb2}, + {value: 0x0c08, lo: 0xb3, hi: 0xb4}, + {value: 0x0a08, lo: 0xb5, hi: 0xb7}, + {value: 0x0c08, lo: 0xb8, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbf}, + // Block 0xa, offset 0x5e + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xb0}, + {value: 0x0808, lo: 0xb1, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xb, offset 0x63 + {value: 0x0000, lo: 0x07}, + {value: 0x0808, lo: 0x80, hi: 0x89}, + {value: 0x0a08, lo: 0x8a, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb9}, + {value: 0x0818, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0xc, offset 0x6b + {value: 0x0000, lo: 0x0b}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x99}, + {value: 0x0808, lo: 0x9a, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0xa3}, + {value: 0x0808, lo: 0xa4, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa7}, + {value: 0x0808, lo: 0xa8, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0818, lo: 0xb0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xd, offset 0x77 + {value: 0x0000, lo: 0x0d}, + {value: 0x0c08, lo: 0x80, hi: 0x80}, + {value: 0x0a08, lo: 0x81, hi: 0x85}, + {value: 0x0c08, lo: 0x86, hi: 0x87}, + {value: 0x0a08, lo: 0x88, hi: 0x88}, + {value: 0x0c08, lo: 0x89, hi: 0x89}, + {value: 0x0a08, lo: 0x8a, hi: 0x93}, + {value: 0x0c08, lo: 0x94, hi: 0x94}, + {value: 0x0a08, lo: 0x95, hi: 0x95}, + {value: 0x0808, lo: 0x96, hi: 0x98}, + {value: 0x3308, lo: 0x99, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9d}, + {value: 0x0818, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xe, offset 0x85 + {value: 0x0000, lo: 0x0d}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0a08, lo: 0xa0, hi: 0xa9}, + {value: 0x0c08, lo: 0xaa, hi: 0xac}, + {value: 0x0808, lo: 0xad, hi: 0xad}, + {value: 0x0c08, lo: 0xae, hi: 0xae}, + {value: 0x0a08, lo: 0xaf, hi: 0xb0}, + {value: 0x0c08, lo: 0xb1, hi: 0xb2}, + {value: 0x0a08, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0a08, lo: 0xb6, hi: 0xb8}, + {value: 0x0c08, lo: 0xb9, hi: 0xb9}, + {value: 0x0a08, lo: 0xba, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0xf, offset 0x93 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x93}, + {value: 0x3308, lo: 0x94, hi: 0xa1}, + {value: 0x0840, lo: 0xa2, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xbf}, + // Block 0x10, offset 0x98 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x11, offset 0xa1 + {value: 0x0000, lo: 0x0f}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x85}, + {value: 0x3008, lo: 0x86, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x3008, lo: 0x8a, hi: 0x8c}, + {value: 0x3b08, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x12, offset 0xb1 + {value: 0x0000, lo: 0x0d}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xa9}, + {value: 0x0008, lo: 0xaa, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x13, offset 0xbf + {value: 0x0000, lo: 0x0c}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x14, offset 0xcc + {value: 0x0000, lo: 0x0b}, + {value: 0x0040, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x15, offset 0xd8 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x89}, + {value: 0x3b08, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8e}, + {value: 0x3008, lo: 0x8f, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x3008, lo: 0x98, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x16, offset 0xe9 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb2}, + {value: 0x08f1, lo: 0xb3, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb9}, + {value: 0x3b08, lo: 0xba, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x0018, lo: 0xbf, hi: 0xbf}, + // Block 0x17, offset 0xf3 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x8e}, + {value: 0x0018, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0xbf}, + // Block 0x18, offset 0xfa + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x3308, lo: 0x88, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0961, lo: 0x9c, hi: 0x9c}, + {value: 0x0999, lo: 0x9d, hi: 0x9d}, + {value: 0x0008, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x19, offset 0x107 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8a}, + {value: 0x0008, lo: 0x8b, hi: 0x8b}, + {value: 0xe03d, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xb8}, + {value: 0x3308, lo: 0xb9, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x1a, offset 0x118 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0xbf}, + // Block 0x1b, offset 0x11f + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x3008, lo: 0xab, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x1c, offset 0x12a + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x3008, lo: 0x96, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x3308, lo: 0x9e, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xa1}, + {value: 0x3008, lo: 0xa2, hi: 0xa4}, + {value: 0x0008, lo: 0xa5, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xbf}, + // Block 0x1d, offset 0x139 + {value: 0x0000, lo: 0x0d}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x8c}, + {value: 0x3308, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x8e}, + {value: 0x3008, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x3008, lo: 0x9a, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0x1e, offset 0x147 + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x86}, + {value: 0x055d, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8c}, + {value: 0x055d, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbb}, + {value: 0xe105, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0x1f, offset 0x151 + {value: 0x0000, lo: 0x01}, + {value: 0x0018, lo: 0x80, hi: 0xbf}, + // Block 0x20, offset 0x153 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa0}, + {value: 0x2018, lo: 0xa1, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x21, offset 0x158 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa7}, + {value: 0x2018, lo: 0xa8, hi: 0xbf}, + // Block 0x22, offset 0x15b + {value: 0x0000, lo: 0x02}, + {value: 0x2018, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0xbf}, + // Block 0x23, offset 0x15e + {value: 0x0000, lo: 0x01}, + {value: 0x0008, lo: 0x80, hi: 0xbf}, + // Block 0x24, offset 0x160 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x99}, + {value: 0x0008, lo: 0x9a, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x25, offset 0x16c + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x26, offset 0x177 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x27, offset 0x17f + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0x0008, lo: 0x92, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbf}, + // Block 0x28, offset 0x185 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x29, offset 0x18b + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x2a, offset 0x190 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x2b, offset 0x195 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x2c, offset 0x198 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xbf}, + // Block 0x2d, offset 0x19c + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x2e, offset 0x1a2 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0x2f, offset 0x1a7 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8d}, + {value: 0x0008, lo: 0x8e, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x93}, + {value: 0x3b08, lo: 0x94, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3b08, lo: 0xb4, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x30, offset 0x1b3 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x31, offset 0x1bd + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xb3}, + {value: 0x3340, lo: 0xb4, hi: 0xb5}, + {value: 0x3008, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbf}, + // Block 0x32, offset 0x1c3 + {value: 0x0000, lo: 0x10}, + {value: 0x3008, lo: 0x80, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x3008, lo: 0x87, hi: 0x88}, + {value: 0x3308, lo: 0x89, hi: 0x91}, + {value: 0x3b08, lo: 0x92, hi: 0x92}, + {value: 0x3308, lo: 0x93, hi: 0x93}, + {value: 0x0018, lo: 0x94, hi: 0x96}, + {value: 0x0008, lo: 0x97, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x33, offset 0x1d4 + {value: 0x0000, lo: 0x09}, + {value: 0x0018, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x86}, + {value: 0x0218, lo: 0x87, hi: 0x87}, + {value: 0x0018, lo: 0x88, hi: 0x8a}, + {value: 0x33c0, lo: 0x8b, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0208, lo: 0xa0, hi: 0xbf}, + // Block 0x34, offset 0x1de + {value: 0x0000, lo: 0x02}, + {value: 0x0208, lo: 0x80, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x35, offset 0x1e1 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x0208, lo: 0x87, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xa9}, + {value: 0x0208, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x36, offset 0x1e9 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0x37, offset 0x1ec + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb8}, + {value: 0x3308, lo: 0xb9, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x38, offset 0x1f9 + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0008, lo: 0x86, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0x39, offset 0x201 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x3a, offset 0x205 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0028, lo: 0x9a, hi: 0x9a}, + {value: 0x0040, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0xbf}, + // Block 0x3b, offset 0x20c + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x3308, lo: 0x97, hi: 0x98}, + {value: 0x3008, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x3c, offset 0x214 + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x94}, + {value: 0x3008, lo: 0x95, hi: 0x95}, + {value: 0x3308, lo: 0x96, hi: 0x96}, + {value: 0x3008, lo: 0x97, hi: 0x97}, + {value: 0x3308, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3b08, lo: 0xa0, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xac}, + {value: 0x3008, lo: 0xad, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0x3d, offset 0x224 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xbd}, + {value: 0x3318, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x3e, offset 0x230 + {value: 0x0000, lo: 0x01}, + {value: 0x0040, lo: 0x80, hi: 0xbf}, + // Block 0x3f, offset 0x232 + {value: 0x0000, lo: 0x09}, + {value: 0x3308, lo: 0x80, hi: 0x83}, + {value: 0x3008, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x40, offset 0x23c + {value: 0x0000, lo: 0x0b}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x3808, lo: 0x84, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x41, offset 0x248 + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3808, lo: 0xaa, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xbf}, + // Block 0x42, offset 0x254 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa9}, + {value: 0x3008, lo: 0xaa, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3808, lo: 0xb2, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbf}, + // Block 0x43, offset 0x260 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x3008, lo: 0xa4, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbf}, + // Block 0x44, offset 0x268 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x45, offset 0x26d + {value: 0x0000, lo: 0x09}, + {value: 0x0e29, lo: 0x80, hi: 0x80}, + {value: 0x0e41, lo: 0x81, hi: 0x81}, + {value: 0x0e59, lo: 0x82, hi: 0x82}, + {value: 0x0e71, lo: 0x83, hi: 0x83}, + {value: 0x0e89, lo: 0x84, hi: 0x85}, + {value: 0x0ea1, lo: 0x86, hi: 0x86}, + {value: 0x0eb9, lo: 0x87, hi: 0x87}, + {value: 0x057d, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0x46, offset 0x277 + {value: 0x0000, lo: 0x10}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x92}, + {value: 0x0018, lo: 0x93, hi: 0x93}, + {value: 0x3308, lo: 0x94, hi: 0xa0}, + {value: 0x3008, lo: 0xa1, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa8}, + {value: 0x0008, lo: 0xa9, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x0008, lo: 0xae, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x47, offset 0x288 + {value: 0x0000, lo: 0x03}, + {value: 0x3308, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0x48, offset 0x28c + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x87}, + {value: 0xe045, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0xe045, lo: 0x98, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0xe045, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb7}, + {value: 0xe045, lo: 0xb8, hi: 0xbf}, + // Block 0x49, offset 0x297 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x3318, lo: 0x90, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbf}, + // Block 0x4a, offset 0x29b + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x88}, + {value: 0x24c1, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x4b, offset 0x2a4 + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x24f1, lo: 0xac, hi: 0xac}, + {value: 0x2529, lo: 0xad, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xae}, + {value: 0x2579, lo: 0xaf, hi: 0xaf}, + {value: 0x25b1, lo: 0xb0, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0x4c, offset 0x2ac + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x9f}, + {value: 0x0080, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xad}, + {value: 0x0080, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x4d, offset 0x2b2 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xa8}, + {value: 0x09c5, lo: 0xa9, hi: 0xa9}, + {value: 0x09e5, lo: 0xaa, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xbf}, + // Block 0x4e, offset 0x2b7 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x4f, offset 0x2ba + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xbf}, + // Block 0x50, offset 0x2bd + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x28c1, lo: 0x8c, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0xbf}, + // Block 0x51, offset 0x2c1 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0e66, lo: 0xb4, hi: 0xb4}, + {value: 0x292a, lo: 0xb5, hi: 0xb5}, + {value: 0x0e86, lo: 0xb6, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x52, offset 0x2c7 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x9b}, + {value: 0x2941, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0xbf}, + // Block 0x53, offset 0x2cb + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0x54, offset 0x2cf + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0018, lo: 0x98, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbc}, + {value: 0x0018, lo: 0xbd, hi: 0xbf}, + // Block 0x55, offset 0x2d5 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xab}, + {value: 0x0018, lo: 0xac, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x56, offset 0x2dc + {value: 0x0000, lo: 0x05}, + {value: 0xe185, lo: 0x80, hi: 0x8f}, + {value: 0x03f5, lo: 0x90, hi: 0x9f}, + {value: 0x0ea5, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x57, offset 0x2e2 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xa6}, + {value: 0x0008, lo: 0xa7, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xac}, + {value: 0x0008, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x58, offset 0x2ea + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xae}, + {value: 0xe075, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0x59, offset 0x2f1 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x0008, lo: 0xb8, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x5a, offset 0x2fc + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xbf}, + // Block 0x5b, offset 0x306 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0008, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x5c, offset 0x30a + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0xbf}, + // Block 0x5d, offset 0x30d + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9e}, + {value: 0x0edd, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0x5e, offset 0x313 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xb2}, + {value: 0x0efd, lo: 0xb3, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0x5f, offset 0x317 + {value: 0x0020, lo: 0x01}, + {value: 0x0f1d, lo: 0x80, hi: 0xbf}, + // Block 0x60, offset 0x319 + {value: 0x0020, lo: 0x02}, + {value: 0x171d, lo: 0x80, hi: 0x8f}, + {value: 0x18fd, lo: 0x90, hi: 0xbf}, + // Block 0x61, offset 0x31c + {value: 0x0020, lo: 0x01}, + {value: 0x1efd, lo: 0x80, hi: 0xbf}, + // Block 0x62, offset 0x31e + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0xbf}, + // Block 0x63, offset 0x321 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x98}, + {value: 0x3308, lo: 0x99, hi: 0x9a}, + {value: 0x29e2, lo: 0x9b, hi: 0x9b}, + {value: 0x2a0a, lo: 0x9c, hi: 0x9c}, + {value: 0x0008, lo: 0x9d, hi: 0x9e}, + {value: 0x2a31, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0008, lo: 0xa1, hi: 0xbf}, + // Block 0x64, offset 0x32b + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xbe}, + {value: 0x2a69, lo: 0xbf, hi: 0xbf}, + // Block 0x65, offset 0x32e + {value: 0x0000, lo: 0x0e}, + {value: 0x0040, lo: 0x80, hi: 0x84}, + {value: 0x0008, lo: 0x85, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xb0}, + {value: 0x2a1d, lo: 0xb1, hi: 0xb1}, + {value: 0x2a3d, lo: 0xb2, hi: 0xb2}, + {value: 0x2a5d, lo: 0xb3, hi: 0xb3}, + {value: 0x2a7d, lo: 0xb4, hi: 0xb4}, + {value: 0x2a5d, lo: 0xb5, hi: 0xb5}, + {value: 0x2a9d, lo: 0xb6, hi: 0xb6}, + {value: 0x2abd, lo: 0xb7, hi: 0xb7}, + {value: 0x2add, lo: 0xb8, hi: 0xb9}, + {value: 0x2afd, lo: 0xba, hi: 0xbb}, + {value: 0x2b1d, lo: 0xbc, hi: 0xbd}, + {value: 0x2afd, lo: 0xbe, hi: 0xbf}, + // Block 0x66, offset 0x33d + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x67, offset 0x341 + {value: 0x0030, lo: 0x04}, + {value: 0x2aa2, lo: 0x80, hi: 0x9d}, + {value: 0x305a, lo: 0x9e, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x30a2, lo: 0xa0, hi: 0xbf}, + // Block 0x68, offset 0x346 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0xbf}, + // Block 0x69, offset 0x349 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0040, lo: 0x8d, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0x6a, offset 0x34d + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0x6b, offset 0x352 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xbf}, + // Block 0x6c, offset 0x357 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb1}, + {value: 0x0018, lo: 0xb2, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x6d, offset 0x35d + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0xb6}, + {value: 0x0008, lo: 0xb7, hi: 0xb7}, + {value: 0x2009, lo: 0xb8, hi: 0xb8}, + {value: 0x6e89, lo: 0xb9, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xbf}, + // Block 0x6e, offset 0x363 + {value: 0x0000, lo: 0x0e}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x3308, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0x85}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x3308, lo: 0x8b, hi: 0x8b}, + {value: 0x0008, lo: 0x8c, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa6}, + {value: 0x3008, lo: 0xa7, hi: 0xa7}, + {value: 0x0018, lo: 0xa8, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x6f, offset 0x372 + {value: 0x0000, lo: 0x05}, + {value: 0x0208, lo: 0x80, hi: 0xb1}, + {value: 0x0108, lo: 0xb2, hi: 0xb2}, + {value: 0x0008, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0x70, offset 0x378 + {value: 0x0000, lo: 0x03}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xbf}, + // Block 0x71, offset 0x37c + {value: 0x0000, lo: 0x0e}, + {value: 0x3008, lo: 0x80, hi: 0x83}, + {value: 0x3b08, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8d}, + {value: 0x0018, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xba}, + {value: 0x0008, lo: 0xbb, hi: 0xbb}, + {value: 0x0018, lo: 0xbc, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x72, offset 0x38b + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x73, offset 0x390 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x3308, lo: 0x87, hi: 0x91}, + {value: 0x3008, lo: 0x92, hi: 0x92}, + {value: 0x3808, lo: 0x93, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0x74, offset 0x398 + {value: 0x0000, lo: 0x09}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x3008, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb9}, + {value: 0x3008, lo: 0xba, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbf}, + // Block 0x75, offset 0x3a2 + {value: 0x0000, lo: 0x0a}, + {value: 0x3808, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0x76, offset 0x3ad + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xa8}, + {value: 0x3308, lo: 0xa9, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xb0}, + {value: 0x3308, lo: 0xb1, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x77, offset 0x3b5 + {value: 0x0000, lo: 0x10}, + {value: 0x0008, lo: 0x80, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x8b}, + {value: 0x3308, lo: 0x8c, hi: 0x8c}, + {value: 0x3008, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xb9}, + {value: 0x0008, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbc}, + {value: 0x3008, lo: 0xbd, hi: 0xbd}, + {value: 0x0008, lo: 0xbe, hi: 0xbf}, + // Block 0x78, offset 0x3c6 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb0}, + {value: 0x0008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb4}, + {value: 0x0008, lo: 0xb5, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb8}, + {value: 0x0008, lo: 0xb9, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbf}, + // Block 0x79, offset 0x3cf + {value: 0x0000, lo: 0x0f}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x9a}, + {value: 0x0008, lo: 0x9b, hi: 0x9d}, + {value: 0x0018, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xaa}, + {value: 0x3008, lo: 0xab, hi: 0xab}, + {value: 0x3308, lo: 0xac, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb5}, + {value: 0x3b08, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x7a, offset 0x3df + {value: 0x0000, lo: 0x0c}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x88}, + {value: 0x0008, lo: 0x89, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x90}, + {value: 0x0008, lo: 0x91, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x7b, offset 0x3ec + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x4465, lo: 0x9c, hi: 0x9c}, + {value: 0x447d, lo: 0x9d, hi: 0x9d}, + {value: 0x2971, lo: 0x9e, hi: 0x9e}, + {value: 0xe06d, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa5}, + {value: 0x0040, lo: 0xa6, hi: 0xaf}, + {value: 0x4495, lo: 0xb0, hi: 0xbf}, + // Block 0x7c, offset 0x3f6 + {value: 0x0000, lo: 0x04}, + {value: 0x44b5, lo: 0x80, hi: 0x8f}, + {value: 0x44d5, lo: 0x90, hi: 0x9f}, + {value: 0x44f5, lo: 0xa0, hi: 0xaf}, + {value: 0x44d5, lo: 0xb0, hi: 0xbf}, + // Block 0x7d, offset 0x3fb + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0xa2}, + {value: 0x3008, lo: 0xa3, hi: 0xa4}, + {value: 0x3308, lo: 0xa5, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa7}, + {value: 0x3308, lo: 0xa8, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xaa}, + {value: 0x0018, lo: 0xab, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3b08, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0x7e, offset 0x408 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0x7f, offset 0x40c + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x80, offset 0x411 + {value: 0x0020, lo: 0x01}, + {value: 0x4515, lo: 0x80, hi: 0xbf}, + // Block 0x81, offset 0x413 + {value: 0x0020, lo: 0x03}, + {value: 0x4d15, lo: 0x80, hi: 0x94}, + {value: 0x4ad5, lo: 0x95, hi: 0x95}, + {value: 0x4fb5, lo: 0x96, hi: 0xbf}, + // Block 0x82, offset 0x417 + {value: 0x0020, lo: 0x01}, + {value: 0x54f5, lo: 0x80, hi: 0xbf}, + // Block 0x83, offset 0x419 + {value: 0x0020, lo: 0x03}, + {value: 0x5cf5, lo: 0x80, hi: 0x84}, + {value: 0x5655, lo: 0x85, hi: 0x85}, + {value: 0x5d95, lo: 0x86, hi: 0xbf}, + // Block 0x84, offset 0x41d + {value: 0x0020, lo: 0x08}, + {value: 0x6b55, lo: 0x80, hi: 0x8f}, + {value: 0x6d15, lo: 0x90, hi: 0x90}, + {value: 0x6d55, lo: 0x91, hi: 0xab}, + {value: 0x6ea1, lo: 0xac, hi: 0xac}, + {value: 0x70b5, lo: 0xad, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x70d5, lo: 0xb0, hi: 0xbf}, + // Block 0x85, offset 0x426 + {value: 0x0020, lo: 0x05}, + {value: 0x72d5, lo: 0x80, hi: 0xad}, + {value: 0x6535, lo: 0xae, hi: 0xae}, + {value: 0x7895, lo: 0xaf, hi: 0xb5}, + {value: 0x6f55, lo: 0xb6, hi: 0xb6}, + {value: 0x7975, lo: 0xb7, hi: 0xbf}, + // Block 0x86, offset 0x42c + {value: 0x0028, lo: 0x03}, + {value: 0x7c21, lo: 0x80, hi: 0x82}, + {value: 0x7be1, lo: 0x83, hi: 0x83}, + {value: 0x7c99, lo: 0x84, hi: 0xbf}, + // Block 0x87, offset 0x430 + {value: 0x0038, lo: 0x0f}, + {value: 0x9db1, lo: 0x80, hi: 0x83}, + {value: 0x9e59, lo: 0x84, hi: 0x85}, + {value: 0x9e91, lo: 0x86, hi: 0x87}, + {value: 0x9ec9, lo: 0x88, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x91}, + {value: 0xa089, lo: 0x92, hi: 0x97}, + {value: 0xa1a1, lo: 0x98, hi: 0x9c}, + {value: 0xa281, lo: 0x9d, hi: 0xb3}, + {value: 0x9d41, lo: 0xb4, hi: 0xb4}, + {value: 0x9db1, lo: 0xb5, hi: 0xb5}, + {value: 0xa789, lo: 0xb6, hi: 0xbb}, + {value: 0xa869, lo: 0xbc, hi: 0xbc}, + {value: 0xa7f9, lo: 0xbd, hi: 0xbd}, + {value: 0xa8d9, lo: 0xbe, hi: 0xbf}, + // Block 0x88, offset 0x440 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8c}, + {value: 0x0008, lo: 0x8d, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbb}, + {value: 0x0008, lo: 0xbc, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0x89, offset 0x44a + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0x8a, offset 0x44f + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x8b, offset 0x452 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x82}, + {value: 0x0040, lo: 0x83, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0x8c, offset 0x458 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x8e}, + {value: 0x0040, lo: 0x8f, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0x8d, offset 0x45f + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x0040, lo: 0xbe, hi: 0xbf}, + // Block 0x8e, offset 0x464 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9c}, + {value: 0x0040, lo: 0x9d, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x8f, offset 0x468 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x90}, + {value: 0x0040, lo: 0x91, hi: 0x9f}, + {value: 0x3308, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x90, offset 0x46e + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x91, offset 0x473 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x81}, + {value: 0x0008, lo: 0x82, hi: 0x89}, + {value: 0x0018, lo: 0x8a, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbf}, + // Block 0x92, offset 0x47c + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0x93, offset 0x481 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0xbf}, + // Block 0x94, offset 0x487 + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x97}, + {value: 0x8ad5, lo: 0x98, hi: 0x9f}, + {value: 0x8aed, lo: 0xa0, hi: 0xa7}, + {value: 0x0008, lo: 0xa8, hi: 0xbf}, + // Block 0x95, offset 0x48e + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x8aed, lo: 0xb0, hi: 0xb7}, + {value: 0x8ad5, lo: 0xb8, hi: 0xbf}, + // Block 0x96, offset 0x495 + {value: 0x0000, lo: 0x06}, + {value: 0xe145, lo: 0x80, hi: 0x87}, + {value: 0xe1c5, lo: 0x88, hi: 0x8f}, + {value: 0xe145, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0xbb}, + {value: 0x0040, lo: 0xbc, hi: 0xbf}, + // Block 0x97, offset 0x49c + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0x98, offset 0x4a0 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xae}, + {value: 0x0018, lo: 0xaf, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x99, offset 0x4a5 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0x9a, offset 0x4a8 + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xbf}, + // Block 0x9b, offset 0x4ad + {value: 0x0000, lo: 0x0b}, + {value: 0x0808, lo: 0x80, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x87}, + {value: 0x0808, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0808, lo: 0x8a, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb6}, + {value: 0x0808, lo: 0xb7, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbb}, + {value: 0x0808, lo: 0xbc, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbe}, + {value: 0x0808, lo: 0xbf, hi: 0xbf}, + // Block 0x9c, offset 0x4b9 + {value: 0x0000, lo: 0x05}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x96}, + {value: 0x0818, lo: 0x97, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb6}, + {value: 0x0818, lo: 0xb7, hi: 0xbf}, + // Block 0x9d, offset 0x4bf + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xa6}, + {value: 0x0818, lo: 0xa7, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0x9e, offset 0x4c4 + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb3}, + {value: 0x0808, lo: 0xb4, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xba}, + {value: 0x0818, lo: 0xbb, hi: 0xbf}, + // Block 0x9f, offset 0x4cb + {value: 0x0000, lo: 0x07}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0818, lo: 0x96, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbe}, + {value: 0x0818, lo: 0xbf, hi: 0xbf}, + // Block 0xa0, offset 0x4d3 + {value: 0x0000, lo: 0x04}, + {value: 0x0808, lo: 0x80, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbb}, + {value: 0x0818, lo: 0xbc, hi: 0xbd}, + {value: 0x0808, lo: 0xbe, hi: 0xbf}, + // Block 0xa1, offset 0x4d8 + {value: 0x0000, lo: 0x03}, + {value: 0x0818, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x0818, lo: 0x92, hi: 0xbf}, + // Block 0xa2, offset 0x4dc + {value: 0x0000, lo: 0x0f}, + {value: 0x0808, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x84}, + {value: 0x3308, lo: 0x85, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x8b}, + {value: 0x3308, lo: 0x8c, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x94}, + {value: 0x0808, lo: 0x95, hi: 0x97}, + {value: 0x0040, lo: 0x98, hi: 0x98}, + {value: 0x0808, lo: 0x99, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xba}, + {value: 0x0040, lo: 0xbb, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xa3, offset 0x4ec + {value: 0x0000, lo: 0x06}, + {value: 0x0818, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0818, lo: 0x90, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xbc}, + {value: 0x0818, lo: 0xbd, hi: 0xbf}, + // Block 0xa4, offset 0x4f3 + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0x9c}, + {value: 0x0818, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xa5, offset 0x4f7 + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb8}, + {value: 0x0018, lo: 0xb9, hi: 0xbf}, + // Block 0xa6, offset 0x4fb + {value: 0x0000, lo: 0x06}, + {value: 0x0808, lo: 0x80, hi: 0x95}, + {value: 0x0040, lo: 0x96, hi: 0x97}, + {value: 0x0818, lo: 0x98, hi: 0x9f}, + {value: 0x0808, lo: 0xa0, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb7}, + {value: 0x0818, lo: 0xb8, hi: 0xbf}, + // Block 0xa7, offset 0x502 + {value: 0x0000, lo: 0x01}, + {value: 0x0808, lo: 0x80, hi: 0xbf}, + // Block 0xa8, offset 0x504 + {value: 0x0000, lo: 0x02}, + {value: 0x0808, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0xbf}, + // Block 0xa9, offset 0x507 + {value: 0x0000, lo: 0x02}, + {value: 0x03dd, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xaa, offset 0x50a + {value: 0x0000, lo: 0x03}, + {value: 0x0808, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xb9}, + {value: 0x0818, lo: 0xba, hi: 0xbf}, + // Block 0xab, offset 0x50e + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0818, lo: 0xa0, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xac, offset 0x512 + {value: 0x0000, lo: 0x05}, + {value: 0x3008, lo: 0x80, hi: 0x80}, + {value: 0x3308, lo: 0x81, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xad, offset 0x518 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x85}, + {value: 0x3b08, lo: 0x86, hi: 0x86}, + {value: 0x0018, lo: 0x87, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x91}, + {value: 0x0018, lo: 0x92, hi: 0xa5}, + {value: 0x0008, lo: 0xa6, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xae, offset 0x521 + {value: 0x0000, lo: 0x0b}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb6}, + {value: 0x3008, lo: 0xb7, hi: 0xb8}, + {value: 0x3b08, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x0018, lo: 0xbb, hi: 0xbc}, + {value: 0x0340, lo: 0xbd, hi: 0xbd}, + {value: 0x0018, lo: 0xbe, hi: 0xbf}, + // Block 0xaf, offset 0x52d + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xb0, offset 0x534 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xb2}, + {value: 0x3b08, lo: 0xb3, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xbf}, + // Block 0xb1, offset 0x53d + {value: 0x0000, lo: 0x07}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb3}, + {value: 0x0018, lo: 0xb4, hi: 0xb5}, + {value: 0x0008, lo: 0xb6, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xb2, offset 0x545 + {value: 0x0000, lo: 0x06}, + {value: 0x3308, lo: 0x80, hi: 0x81}, + {value: 0x3008, lo: 0x82, hi: 0x82}, + {value: 0x0008, lo: 0x83, hi: 0xb2}, + {value: 0x3008, lo: 0xb3, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xbe}, + {value: 0x3008, lo: 0xbf, hi: 0xbf}, + // Block 0xb3, offset 0x54c + {value: 0x0000, lo: 0x0d}, + {value: 0x3808, lo: 0x80, hi: 0x80}, + {value: 0x0008, lo: 0x81, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x89}, + {value: 0x3308, lo: 0x8a, hi: 0x8c}, + {value: 0x0018, lo: 0x8d, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0008, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x0018, lo: 0xa1, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xb4, offset 0x55a + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xae}, + {value: 0x3308, lo: 0xaf, hi: 0xb1}, + {value: 0x3008, lo: 0xb2, hi: 0xb3}, + {value: 0x3308, lo: 0xb4, hi: 0xb4}, + {value: 0x3808, lo: 0xb5, hi: 0xb5}, + {value: 0x3308, lo: 0xb6, hi: 0xb7}, + {value: 0x0018, lo: 0xb8, hi: 0xbd}, + {value: 0x3308, lo: 0xbe, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xb5, offset 0x567 + {value: 0x0000, lo: 0x0c}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x0008, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0x8d}, + {value: 0x0040, lo: 0x8e, hi: 0x8e}, + {value: 0x0008, lo: 0x8f, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9e}, + {value: 0x0008, lo: 0x9f, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbf}, + // Block 0xb6, offset 0x574 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x3308, lo: 0x9f, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xa9}, + {value: 0x3b08, lo: 0xaa, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0040, lo: 0xba, hi: 0xbf}, + // Block 0xb7, offset 0x57d + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x3008, lo: 0xb5, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbf}, + // Block 0xb8, offset 0x581 + {value: 0x0000, lo: 0x0d}, + {value: 0x3008, lo: 0x80, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x84}, + {value: 0x3008, lo: 0x85, hi: 0x85}, + {value: 0x3308, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x8a}, + {value: 0x0018, lo: 0x8b, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0x9b}, + {value: 0x0040, lo: 0x9c, hi: 0x9c}, + {value: 0x0018, lo: 0x9d, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0xb9, offset 0x58f + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xb8}, + {value: 0x3008, lo: 0xb9, hi: 0xb9}, + {value: 0x3308, lo: 0xba, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbe}, + {value: 0x3308, lo: 0xbf, hi: 0xbf}, + // Block 0xba, offset 0x597 + {value: 0x0000, lo: 0x0a}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x3008, lo: 0x81, hi: 0x81}, + {value: 0x3b08, lo: 0x82, hi: 0x82}, + {value: 0x3308, lo: 0x83, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x85}, + {value: 0x0018, lo: 0x86, hi: 0x86}, + {value: 0x0008, lo: 0x87, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xbb, offset 0x5a2 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xb7}, + {value: 0x3008, lo: 0xb8, hi: 0xbb}, + {value: 0x3308, lo: 0xbc, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbc, offset 0x5ab + {value: 0x0000, lo: 0x05}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x97}, + {value: 0x0008, lo: 0x98, hi: 0x9b}, + {value: 0x3308, lo: 0x9c, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0xbf}, + // Block 0xbd, offset 0x5b1 + {value: 0x0000, lo: 0x07}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3008, lo: 0xb0, hi: 0xb2}, + {value: 0x3308, lo: 0xb3, hi: 0xba}, + {value: 0x3008, lo: 0xbb, hi: 0xbc}, + {value: 0x3308, lo: 0xbd, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xbe, offset 0x5b9 + {value: 0x0000, lo: 0x08}, + {value: 0x3308, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x83}, + {value: 0x0008, lo: 0x84, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xbf, offset 0x5c2 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x3308, lo: 0xab, hi: 0xab}, + {value: 0x3008, lo: 0xac, hi: 0xac}, + {value: 0x3308, lo: 0xad, hi: 0xad}, + {value: 0x3008, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb5}, + {value: 0x3808, lo: 0xb6, hi: 0xb6}, + {value: 0x3308, lo: 0xb7, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbf}, + // Block 0xc0, offset 0x5cc + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x89}, + {value: 0x0040, lo: 0x8a, hi: 0xbf}, + // Block 0xc1, offset 0x5cf + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9f}, + {value: 0x3008, lo: 0xa0, hi: 0xa1}, + {value: 0x3308, lo: 0xa2, hi: 0xa5}, + {value: 0x3008, lo: 0xa6, hi: 0xa6}, + {value: 0x3308, lo: 0xa7, hi: 0xaa}, + {value: 0x3b08, lo: 0xab, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xb9}, + {value: 0x0018, lo: 0xba, hi: 0xbf}, + // Block 0xc2, offset 0x5db + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x049d, lo: 0xa0, hi: 0xbf}, + // Block 0xc3, offset 0x5de + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbe}, + {value: 0x0008, lo: 0xbf, hi: 0xbf}, + // Block 0xc4, offset 0x5e3 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb8}, + {value: 0x0040, lo: 0xb9, hi: 0xbf}, + // Block 0xc5, offset 0x5e6 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x89}, + {value: 0x0008, lo: 0x8a, hi: 0xae}, + {value: 0x3008, lo: 0xaf, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xb7}, + {value: 0x3308, lo: 0xb8, hi: 0xbd}, + {value: 0x3008, lo: 0xbe, hi: 0xbe}, + {value: 0x3b08, lo: 0xbf, hi: 0xbf}, + // Block 0xc6, offset 0x5f0 + {value: 0x0000, lo: 0x08}, + {value: 0x0008, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0018, lo: 0x9a, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0008, lo: 0xb2, hi: 0xbf}, + // Block 0xc7, offset 0x5f9 + {value: 0x0000, lo: 0x0b}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x91}, + {value: 0x3308, lo: 0x92, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xa8}, + {value: 0x3008, lo: 0xa9, hi: 0xa9}, + {value: 0x3308, lo: 0xaa, hi: 0xb0}, + {value: 0x3008, lo: 0xb1, hi: 0xb1}, + {value: 0x3308, lo: 0xb2, hi: 0xb3}, + {value: 0x3008, lo: 0xb4, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xc8, offset 0x605 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0xbf}, + // Block 0xc9, offset 0x608 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xca, offset 0x60d + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0040, lo: 0x84, hi: 0xbf}, + // Block 0xcb, offset 0x610 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xbf}, + // Block 0xcc, offset 0x613 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0xbf}, + // Block 0xcd, offset 0x616 + {value: 0x0000, lo: 0x06}, + {value: 0x0008, lo: 0x80, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa9}, + {value: 0x0040, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xce, offset 0x61d + {value: 0x0000, lo: 0x06}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb4}, + {value: 0x0018, lo: 0xb5, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xcf, offset 0x624 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0xaf}, + {value: 0x3308, lo: 0xb0, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xbf}, + // Block 0xd0, offset 0x628 + {value: 0x0000, lo: 0x0a}, + {value: 0x0008, lo: 0x80, hi: 0x83}, + {value: 0x0018, lo: 0x84, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9a}, + {value: 0x0018, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x0008, lo: 0xa3, hi: 0xb7}, + {value: 0x0040, lo: 0xb8, hi: 0xbc}, + {value: 0x0008, lo: 0xbd, hi: 0xbf}, + // Block 0xd1, offset 0x633 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0xbf}, + // Block 0xd2, offset 0x636 + {value: 0x0000, lo: 0x05}, + {value: 0x0008, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x90}, + {value: 0x3008, lo: 0x91, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xd3, offset 0x63c + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x8e}, + {value: 0x3308, lo: 0x8f, hi: 0x92}, + {value: 0x0008, lo: 0x93, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xd4, offset 0x641 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xa0}, + {value: 0x0040, lo: 0xa1, hi: 0xbf}, + // Block 0xd5, offset 0x645 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xd6, offset 0x648 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb2}, + {value: 0x0040, lo: 0xb3, hi: 0xbf}, + // Block 0xd7, offset 0x64b + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0xbf}, + // Block 0xd8, offset 0x64e + {value: 0x0000, lo: 0x04}, + {value: 0x0008, lo: 0x80, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xaf}, + {value: 0x0008, lo: 0xb0, hi: 0xbc}, + {value: 0x0040, lo: 0xbd, hi: 0xbf}, + // Block 0xd9, offset 0x653 + {value: 0x0000, lo: 0x09}, + {value: 0x0008, lo: 0x80, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0x0008, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9b}, + {value: 0x0018, lo: 0x9c, hi: 0x9c}, + {value: 0x3308, lo: 0x9d, hi: 0x9e}, + {value: 0x0018, lo: 0x9f, hi: 0x9f}, + {value: 0x03c0, lo: 0xa0, hi: 0xa3}, + {value: 0x0040, lo: 0xa4, hi: 0xbf}, + // Block 0xda, offset 0x65d + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xdb, offset 0x660 + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xa6}, + {value: 0x0040, lo: 0xa7, hi: 0xa8}, + {value: 0x0018, lo: 0xa9, hi: 0xbf}, + // Block 0xdc, offset 0x664 + {value: 0x0000, lo: 0x0e}, + {value: 0x0018, lo: 0x80, hi: 0x9d}, + {value: 0xb5b9, lo: 0x9e, hi: 0x9e}, + {value: 0xb601, lo: 0x9f, hi: 0x9f}, + {value: 0xb649, lo: 0xa0, hi: 0xa0}, + {value: 0xb6b1, lo: 0xa1, hi: 0xa1}, + {value: 0xb719, lo: 0xa2, hi: 0xa2}, + {value: 0xb781, lo: 0xa3, hi: 0xa3}, + {value: 0xb7e9, lo: 0xa4, hi: 0xa4}, + {value: 0x3018, lo: 0xa5, hi: 0xa6}, + {value: 0x3318, lo: 0xa7, hi: 0xa9}, + {value: 0x0018, lo: 0xaa, hi: 0xac}, + {value: 0x3018, lo: 0xad, hi: 0xb2}, + {value: 0x0340, lo: 0xb3, hi: 0xba}, + {value: 0x3318, lo: 0xbb, hi: 0xbf}, + // Block 0xdd, offset 0x673 + {value: 0x0000, lo: 0x0b}, + {value: 0x3318, lo: 0x80, hi: 0x82}, + {value: 0x0018, lo: 0x83, hi: 0x84}, + {value: 0x3318, lo: 0x85, hi: 0x8b}, + {value: 0x0018, lo: 0x8c, hi: 0xa9}, + {value: 0x3318, lo: 0xaa, hi: 0xad}, + {value: 0x0018, lo: 0xae, hi: 0xba}, + {value: 0xb851, lo: 0xbb, hi: 0xbb}, + {value: 0xb899, lo: 0xbc, hi: 0xbc}, + {value: 0xb8e1, lo: 0xbd, hi: 0xbd}, + {value: 0xb949, lo: 0xbe, hi: 0xbe}, + {value: 0xb9b1, lo: 0xbf, hi: 0xbf}, + // Block 0xde, offset 0x67f + {value: 0x0000, lo: 0x03}, + {value: 0xba19, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0xa8}, + {value: 0x0040, lo: 0xa9, hi: 0xbf}, + // Block 0xdf, offset 0x683 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x81}, + {value: 0x3318, lo: 0x82, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x85}, + {value: 0x0040, lo: 0x86, hi: 0xbf}, + // Block 0xe0, offset 0x688 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xe1, offset 0x68d + {value: 0x0000, lo: 0x03}, + {value: 0x3308, lo: 0x80, hi: 0xb6}, + {value: 0x0018, lo: 0xb7, hi: 0xba}, + {value: 0x3308, lo: 0xbb, hi: 0xbf}, + // Block 0xe2, offset 0x691 + {value: 0x0000, lo: 0x04}, + {value: 0x3308, lo: 0x80, hi: 0xac}, + {value: 0x0018, lo: 0xad, hi: 0xb4}, + {value: 0x3308, lo: 0xb5, hi: 0xb5}, + {value: 0x0018, lo: 0xb6, hi: 0xbf}, + // Block 0xe3, offset 0x696 + {value: 0x0000, lo: 0x08}, + {value: 0x0018, lo: 0x80, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x84}, + {value: 0x0018, lo: 0x85, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xa0}, + {value: 0x3308, lo: 0xa1, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, + // Block 0xe4, offset 0x69f + {value: 0x0000, lo: 0x0a}, + {value: 0x3308, lo: 0x80, hi: 0x86}, + {value: 0x0040, lo: 0x87, hi: 0x87}, + {value: 0x3308, lo: 0x88, hi: 0x98}, + {value: 0x0040, lo: 0x99, hi: 0x9a}, + {value: 0x3308, lo: 0x9b, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xa2}, + {value: 0x3308, lo: 0xa3, hi: 0xa4}, + {value: 0x0040, lo: 0xa5, hi: 0xa5}, + {value: 0x3308, lo: 0xa6, hi: 0xaa}, + {value: 0x0040, lo: 0xab, hi: 0xbf}, + // Block 0xe5, offset 0x6aa + {value: 0x0000, lo: 0x05}, + {value: 0x0808, lo: 0x80, hi: 0x84}, + {value: 0x0040, lo: 0x85, hi: 0x86}, + {value: 0x0818, lo: 0x87, hi: 0x8f}, + {value: 0x3308, lo: 0x90, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0xe6, offset 0x6b0 + {value: 0x0000, lo: 0x07}, + {value: 0x0a08, lo: 0x80, hi: 0x83}, + {value: 0x3308, lo: 0x84, hi: 0x8a}, + {value: 0x0040, lo: 0x8b, hi: 0x8f}, + {value: 0x0808, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9d}, + {value: 0x0818, lo: 0x9e, hi: 0x9f}, + {value: 0x0040, lo: 0xa0, hi: 0xbf}, + // Block 0xe7, offset 0x6b8 + {value: 0x0000, lo: 0x03}, + {value: 0x0040, lo: 0x80, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb1}, + {value: 0x0040, lo: 0xb2, hi: 0xbf}, + // Block 0xe8, offset 0x6bc + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0xab}, + {value: 0x0040, lo: 0xac, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xbf}, + // Block 0xe9, offset 0x6c0 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x93}, + {value: 0x0040, lo: 0x94, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xae}, + {value: 0x0040, lo: 0xaf, hi: 0xb0}, + {value: 0x0018, lo: 0xb1, hi: 0xbf}, + // Block 0xea, offset 0x6c6 + {value: 0x0000, lo: 0x05}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0018, lo: 0x81, hi: 0x8f}, + {value: 0x0040, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xb5}, + {value: 0x0040, lo: 0xb6, hi: 0xbf}, + // Block 0xeb, offset 0x6cc + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8f}, + {value: 0xc1c1, lo: 0x90, hi: 0x90}, + {value: 0x0018, lo: 0x91, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xbf}, + // Block 0xec, offset 0x6d1 + {value: 0x0000, lo: 0x02}, + {value: 0x0040, lo: 0x80, hi: 0xa5}, + {value: 0x0018, lo: 0xa6, hi: 0xbf}, + // Block 0xed, offset 0x6d4 + {value: 0x0000, lo: 0x0d}, + {value: 0xc7e9, lo: 0x80, hi: 0x80}, + {value: 0xc839, lo: 0x81, hi: 0x81}, + {value: 0xc889, lo: 0x82, hi: 0x82}, + {value: 0xc8d9, lo: 0x83, hi: 0x83}, + {value: 0xc929, lo: 0x84, hi: 0x84}, + {value: 0xc979, lo: 0x85, hi: 0x85}, + {value: 0xc9c9, lo: 0x86, hi: 0x86}, + {value: 0xca19, lo: 0x87, hi: 0x87}, + {value: 0xca69, lo: 0x88, hi: 0x88}, + {value: 0x0040, lo: 0x89, hi: 0x8f}, + {value: 0xcab9, lo: 0x90, hi: 0x90}, + {value: 0xcad9, lo: 0x91, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xbf}, + // Block 0xee, offset 0x6e2 + {value: 0x0000, lo: 0x06}, + {value: 0x0018, lo: 0x80, hi: 0x92}, + {value: 0x0040, lo: 0x93, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xac}, + {value: 0x0040, lo: 0xad, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb6}, + {value: 0x0040, lo: 0xb7, hi: 0xbf}, + // Block 0xef, offset 0x6e9 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0xb3}, + {value: 0x0040, lo: 0xb4, hi: 0xbf}, + // Block 0xf0, offset 0x6ec + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x94}, + {value: 0x0040, lo: 0x95, hi: 0xbf}, + // Block 0xf1, offset 0x6ef + {value: 0x0000, lo: 0x03}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xbf}, + // Block 0xf2, offset 0x6f3 + {value: 0x0000, lo: 0x05}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x99}, + {value: 0x0040, lo: 0x9a, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xbf}, + // Block 0xf3, offset 0x6f9 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x87}, + {value: 0x0040, lo: 0x88, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0xad}, + {value: 0x0040, lo: 0xae, hi: 0xbf}, + // Block 0xf4, offset 0x6fe + {value: 0x0000, lo: 0x09}, + {value: 0x0040, lo: 0x80, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0x9f}, + {value: 0x0018, lo: 0xa0, hi: 0xa7}, + {value: 0x0040, lo: 0xa8, hi: 0xaf}, + {value: 0x0018, lo: 0xb0, hi: 0xb0}, + {value: 0x0040, lo: 0xb1, hi: 0xb2}, + {value: 0x0018, lo: 0xb3, hi: 0xbe}, + {value: 0x0040, lo: 0xbf, hi: 0xbf}, + // Block 0xf5, offset 0x708 + {value: 0x0000, lo: 0x04}, + {value: 0x0018, lo: 0x80, hi: 0x8b}, + {value: 0x0040, lo: 0x8c, hi: 0x8f}, + {value: 0x0018, lo: 0x90, hi: 0x9e}, + {value: 0x0040, lo: 0x9f, hi: 0xbf}, + // Block 0xf6, offset 0x70d + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x91}, + {value: 0x0040, lo: 0x92, hi: 0xbf}, + // Block 0xf7, offset 0x710 + {value: 0x0000, lo: 0x02}, + {value: 0x0018, lo: 0x80, hi: 0x80}, + {value: 0x0040, lo: 0x81, hi: 0xbf}, + // Block 0xf8, offset 0x713 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0x96}, + {value: 0x0040, lo: 0x97, hi: 0xbf}, + // Block 0xf9, offset 0x716 + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xb4}, + {value: 0x0040, lo: 0xb5, hi: 0xbf}, + // Block 0xfa, offset 0x719 + {value: 0x0000, lo: 0x03}, + {value: 0x0008, lo: 0x80, hi: 0x9d}, + {value: 0x0040, lo: 0x9e, hi: 0x9f}, + {value: 0x0008, lo: 0xa0, hi: 0xbf}, + // Block 0xfb, offset 0x71d + {value: 0x0000, lo: 0x02}, + {value: 0x0008, lo: 0x80, hi: 0xa1}, + {value: 0x0040, lo: 0xa2, hi: 0xbf}, + // Block 0xfc, offset 0x720 + {value: 0x0020, lo: 0x0f}, + {value: 0xdeb9, lo: 0x80, hi: 0x89}, + {value: 0x8dfd, lo: 0x8a, hi: 0x8a}, + {value: 0xdff9, lo: 0x8b, hi: 0x9c}, + {value: 0x8e1d, lo: 0x9d, hi: 0x9d}, + {value: 0xe239, lo: 0x9e, hi: 0xa2}, + {value: 0x8e3d, lo: 0xa3, hi: 0xa3}, + {value: 0xe2d9, lo: 0xa4, hi: 0xab}, + {value: 0x7ed5, lo: 0xac, hi: 0xac}, + {value: 0xe3d9, lo: 0xad, hi: 0xaf}, + {value: 0x8e5d, lo: 0xb0, hi: 0xb0}, + {value: 0xe439, lo: 0xb1, hi: 0xb6}, + {value: 0x8e7d, lo: 0xb7, hi: 0xb9}, + {value: 0xe4f9, lo: 0xba, hi: 0xba}, + {value: 0x8edd, lo: 0xbb, hi: 0xbb}, + {value: 0xe519, lo: 0xbc, hi: 0xbf}, + // Block 0xfd, offset 0x730 + {value: 0x0020, lo: 0x10}, + {value: 0x937d, lo: 0x80, hi: 0x80}, + {value: 0xf099, lo: 0x81, hi: 0x86}, + {value: 0x939d, lo: 0x87, hi: 0x8a}, + {value: 0xd9f9, lo: 0x8b, hi: 0x8b}, + {value: 0xf159, lo: 0x8c, hi: 0x96}, + {value: 0x941d, lo: 0x97, hi: 0x97}, + {value: 0xf2b9, lo: 0x98, hi: 0xa3}, + {value: 0x943d, lo: 0xa4, hi: 0xa6}, + {value: 0xf439, lo: 0xa7, hi: 0xaa}, + {value: 0x949d, lo: 0xab, hi: 0xab}, + {value: 0xf4b9, lo: 0xac, hi: 0xac}, + {value: 0x94bd, lo: 0xad, hi: 0xad}, + {value: 0xf4d9, lo: 0xae, hi: 0xaf}, + {value: 0x94dd, lo: 0xb0, hi: 0xb1}, + {value: 0xf519, lo: 0xb2, hi: 0xbe}, + {value: 0x2040, lo: 0xbf, hi: 0xbf}, + // Block 0xfe, offset 0x741 + {value: 0x0000, lo: 0x04}, + {value: 0x0040, lo: 0x80, hi: 0x80}, + {value: 0x0340, lo: 0x81, hi: 0x81}, + {value: 0x0040, lo: 0x82, hi: 0x9f}, + {value: 0x0340, lo: 0xa0, hi: 0xbf}, + // Block 0xff, offset 0x746 + {value: 0x0000, lo: 0x01}, + {value: 0x0340, lo: 0x80, hi: 0xbf}, + // Block 0x100, offset 0x748 + {value: 0x0000, lo: 0x01}, + {value: 0x33c0, lo: 0x80, hi: 0xbf}, + // Block 0x101, offset 0x74a + {value: 0x0000, lo: 0x02}, + {value: 0x33c0, lo: 0x80, hi: 0xaf}, + {value: 0x0040, lo: 0xb0, hi: 0xbf}, +} + +// Total table size 41662 bytes (40KiB); checksum: 355A58A4 diff --git a/vendor/golang.org/x/net/proxy/dial.go b/vendor/golang.org/x/net/proxy/dial.go new file mode 100644 index 0000000000..811c2e4e96 --- /dev/null +++ b/vendor/golang.org/x/net/proxy/dial.go @@ -0,0 +1,54 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proxy + +import ( + "context" + "net" +) + +// A ContextDialer dials using a context. +type ContextDialer interface { + DialContext(ctx context.Context, network, address string) (net.Conn, error) +} + +// Dial works like DialContext on net.Dialer but using a dialer returned by FromEnvironment. +// +// The passed ctx is only used for returning the Conn, not the lifetime of the Conn. +// +// Custom dialers (registered via RegisterDialerType) that do not implement ContextDialer +// can leak a goroutine for as long as it takes the underlying Dialer implementation to timeout. +// +// A Conn returned from a successful Dial after the context has been cancelled will be immediately closed. +func Dial(ctx context.Context, network, address string) (net.Conn, error) { + d := FromEnvironment() + if xd, ok := d.(ContextDialer); ok { + return xd.DialContext(ctx, network, address) + } + return dialContext(ctx, d, network, address) +} + +// WARNING: this can leak a goroutine for as long as the underlying Dialer implementation takes to timeout +// A Conn returned from a successful Dial after the context has been cancelled will be immediately closed. +func dialContext(ctx context.Context, d Dialer, network, address string) (net.Conn, error) { + var ( + conn net.Conn + done = make(chan struct{}, 1) + err error + ) + go func() { + conn, err = d.Dial(network, address) + close(done) + if conn != nil && ctx.Err() != nil { + conn.Close() + } + }() + select { + case <-ctx.Done(): + err = ctx.Err() + case <-done: + } + return conn, err +} diff --git a/vendor/golang.org/x/net/proxy/direct.go b/vendor/golang.org/x/net/proxy/direct.go index 4c5ad88b1e..3d66bdef9d 100644 --- a/vendor/golang.org/x/net/proxy/direct.go +++ b/vendor/golang.org/x/net/proxy/direct.go @@ -5,14 +5,27 @@ package proxy import ( + "context" "net" ) type direct struct{} -// Direct is a direct proxy: one that makes network connections directly. +// Direct implements Dialer by making network connections directly using net.Dial or net.DialContext. var Direct = direct{} +var ( + _ Dialer = Direct + _ ContextDialer = Direct +) + +// Dial directly invokes net.Dial with the supplied parameters. func (direct) Dial(network, addr string) (net.Conn, error) { return net.Dial(network, addr) } + +// DialContext instantiates a net.Dialer and invokes its DialContext receiver with the supplied parameters. +func (direct) DialContext(ctx context.Context, network, addr string) (net.Conn, error) { + var d net.Dialer + return d.DialContext(ctx, network, addr) +} diff --git a/vendor/golang.org/x/net/proxy/per_host.go b/vendor/golang.org/x/net/proxy/per_host.go index 0689bb6a70..573fe79e86 100644 --- a/vendor/golang.org/x/net/proxy/per_host.go +++ b/vendor/golang.org/x/net/proxy/per_host.go @@ -5,6 +5,7 @@ package proxy import ( + "context" "net" "strings" ) @@ -41,6 +42,20 @@ func (p *PerHost) Dial(network, addr string) (c net.Conn, err error) { return p.dialerForRequest(host).Dial(network, addr) } +// DialContext connects to the address addr on the given network through either +// defaultDialer or bypass. +func (p *PerHost) DialContext(ctx context.Context, network, addr string) (c net.Conn, err error) { + host, _, err := net.SplitHostPort(addr) + if err != nil { + return nil, err + } + d := p.dialerForRequest(host) + if x, ok := d.(ContextDialer); ok { + return x.DialContext(ctx, network, addr) + } + return dialContext(ctx, d, network, addr) +} + func (p *PerHost) dialerForRequest(host string) Dialer { if ip := net.ParseIP(host); ip != nil { for _, net := range p.bypassNetworks { diff --git a/vendor/golang.org/x/net/proxy/proxy.go b/vendor/golang.org/x/net/proxy/proxy.go index f6026b902c..9ff4b9a776 100644 --- a/vendor/golang.org/x/net/proxy/proxy.go +++ b/vendor/golang.org/x/net/proxy/proxy.go @@ -15,6 +15,7 @@ import ( ) // A Dialer is a means to establish a connection. +// Custom dialers should also implement ContextDialer. type Dialer interface { // Dial connects to the given address via the proxy. Dial(network, addr string) (c net.Conn, err error) @@ -25,21 +26,30 @@ type Auth struct { User, Password string } -// FromEnvironment returns the dialer specified by the proxy related variables in -// the environment. +// FromEnvironment returns the dialer specified by the proxy-related +// variables in the environment and makes underlying connections +// directly. func FromEnvironment() Dialer { + return FromEnvironmentUsing(Direct) +} + +// FromEnvironmentUsing returns the dialer specify by the proxy-related +// variables in the environment and makes underlying connections +// using the provided forwarding Dialer (for instance, a *net.Dialer +// with desired configuration). +func FromEnvironmentUsing(forward Dialer) Dialer { allProxy := allProxyEnv.Get() if len(allProxy) == 0 { - return Direct + return forward } proxyURL, err := url.Parse(allProxy) if err != nil { - return Direct + return forward } - proxy, err := FromURL(proxyURL, Direct) + proxy, err := FromURL(proxyURL, forward) if err != nil { - return Direct + return forward } noProxy := noProxyEnv.Get() @@ -47,7 +57,7 @@ func FromEnvironment() Dialer { return proxy } - perHost := NewPerHost(proxy, Direct) + perHost := NewPerHost(proxy, forward) perHost.AddFromString(noProxy) return perHost } diff --git a/vendor/golang.org/x/net/proxy/socks5.go b/vendor/golang.org/x/net/proxy/socks5.go index 56345ec8b6..c91651f96d 100644 --- a/vendor/golang.org/x/net/proxy/socks5.go +++ b/vendor/golang.org/x/net/proxy/socks5.go @@ -17,8 +17,14 @@ import ( func SOCKS5(network, address string, auth *Auth, forward Dialer) (Dialer, error) { d := socks.NewDialer(network, address) if forward != nil { - d.ProxyDial = func(_ context.Context, network string, address string) (net.Conn, error) { - return forward.Dial(network, address) + if f, ok := forward.(ContextDialer); ok { + d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) { + return f.DialContext(ctx, network, address) + } + } else { + d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) { + return dialContext(ctx, forward, network, address) + } } } if auth != nil { diff --git a/vendor/golang.org/x/oauth2/internal/token.go b/vendor/golang.org/x/oauth2/internal/token.go index 999e668e6f..5c5451ad8d 100644 --- a/vendor/golang.org/x/oauth2/internal/token.go +++ b/vendor/golang.org/x/oauth2/internal/token.go @@ -103,6 +103,7 @@ var brokenAuthHeaderProviders = []string{ "https://api.twitch.tv/", "https://id.twitch.tv/", "https://app.box.com/", + "https://api.box.com/", "https://connect.stripe.com/", "https://login.mailchimp.com/", "https://login.microsoftonline.com/", @@ -130,6 +131,7 @@ var brokenAuthHeaderProviders = []string{ "https://multisport.todaysplan.com.au/rest/oauth/access_token", "https://whats.todaysplan.com.au/rest/oauth/access_token", "https://stackoverflow.com/oauth/access_token", + "https://account.health.nokia.com", } // brokenAuthHeaderDomains lists broken providers that issue dynamic endpoints. diff --git a/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s b/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s new file mode 100644 index 0000000000..06f84b8555 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s @@ -0,0 +1,17 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go +// + +TEXT ·syscall6(SB),NOSPLIT,$0-88 + JMP syscall·syscall6(SB) + +TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/cpu/byteorder.go b/vendor/golang.org/x/sys/cpu/byteorder.go index da6b9e4363..ed8da8deac 100644 --- a/vendor/golang.org/x/sys/cpu/byteorder.go +++ b/vendor/golang.org/x/sys/cpu/byteorder.go @@ -5,26 +5,56 @@ package cpu import ( - "encoding/binary" "runtime" ) +// byteOrder is a subset of encoding/binary.ByteOrder. +type byteOrder interface { + Uint32([]byte) uint32 + Uint64([]byte) uint64 +} + +type littleEndian struct{} +type bigEndian struct{} + +func (littleEndian) Uint32(b []byte) uint32 { + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 +} + +func (littleEndian) Uint64(b []byte) uint64 { + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 +} + +func (bigEndian) Uint32(b []byte) uint32 { + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24 +} + +func (bigEndian) Uint64(b []byte) uint64 { + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | + uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 +} + // hostByteOrder returns binary.LittleEndian on little-endian machines and // binary.BigEndian on big-endian machines. -func hostByteOrder() binary.ByteOrder { +func hostByteOrder() byteOrder { switch runtime.GOARCH { case "386", "amd64", "amd64p32", "arm", "arm64", "mipsle", "mips64le", "mips64p32le", "ppc64le", "riscv", "riscv64": - return binary.LittleEndian + return littleEndian{} case "armbe", "arm64be", "mips", "mips64", "mips64p32", "ppc", "ppc64", "s390", "s390x", "sparc", "sparc64": - return binary.BigEndian + return bigEndian{} } panic("unknown architecture") } diff --git a/vendor/golang.org/x/sys/cpu/cpu.go b/vendor/golang.org/x/sys/cpu/cpu.go index 679e78c2ce..b4e6ecb2dc 100644 --- a/vendor/golang.org/x/sys/cpu/cpu.go +++ b/vendor/golang.org/x/sys/cpu/cpu.go @@ -78,6 +78,42 @@ var ARM64 struct { _ CacheLinePad } +// ARM contains the supported CPU features of the current ARM (32-bit) platform. +// All feature flags are false if: +// 1. the current platform is not arm, or +// 2. the current operating system is not Linux. +var ARM struct { + _ CacheLinePad + HasSWP bool // SWP instruction support + HasHALF bool // Half-word load and store support + HasTHUMB bool // ARM Thumb instruction set + Has26BIT bool // Address space limited to 26-bits + HasFASTMUL bool // 32-bit operand, 64-bit result multiplication support + HasFPA bool // Floating point arithmetic support + HasVFP bool // Vector floating point support + HasEDSP bool // DSP Extensions support + HasJAVA bool // Java instruction set + HasIWMMXT bool // Intel Wireless MMX technology support + HasCRUNCH bool // MaverickCrunch context switching and handling + HasTHUMBEE bool // Thumb EE instruction set + HasNEON bool // NEON instruction set + HasVFPv3 bool // Vector floating point version 3 support + HasVFPv3D16 bool // Vector floating point version 3 D8-D15 + HasTLS bool // Thread local storage support + HasVFPv4 bool // Vector floating point version 4 support + HasIDIVA bool // Integer divide instruction support in ARM mode + HasIDIVT bool // Integer divide instruction support in Thumb mode + HasVFPD32 bool // Vector floating point version 3 D15-D31 + HasLPAE bool // Large Physical Address Extensions + HasEVTSTRM bool // Event stream support + HasAES bool // AES hardware implementation + HasPMULL bool // Polynomial multiplication instruction set + HasSHA1 bool // SHA1 hardware implementation + HasSHA2 bool // SHA2 hardware implementation + HasCRC32 bool // CRC32 hardware implementation + _ CacheLinePad +} + // PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms. // If the current platform is not ppc64/ppc64le then all feature flags are false. // diff --git a/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go b/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go index d8c26a048d..be60272247 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go @@ -6,8 +6,6 @@ package cpu -import "golang.org/x/sys/unix" - const cacheLineSize = 128 const ( @@ -18,7 +16,7 @@ const ( ) func init() { - impl := unix.Getsystemcfg(_SC_IMPL) + impl := getsystemcfg(_SC_IMPL) if impl&_IMPL_POWER8 != 0 { PPC64.IsPOWER8 = true } @@ -28,3 +26,9 @@ func init() { Initialized = true } + +func getsystemcfg(label int) (n uint64) { + r0, _ := callgetsystemcfg(label) + n = uint64(r0) + return +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm.go b/vendor/golang.org/x/sys/cpu/cpu_arm.go index 7f2348b7d4..981af6818c 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_arm.go +++ b/vendor/golang.org/x/sys/cpu/cpu_arm.go @@ -6,4 +6,35 @@ package cpu const cacheLineSize = 32 -func doinit() {} +// HWCAP/HWCAP2 bits. +// These are specific to Linux. +const ( + hwcap_SWP = 1 << 0 + hwcap_HALF = 1 << 1 + hwcap_THUMB = 1 << 2 + hwcap_26BIT = 1 << 3 + hwcap_FAST_MULT = 1 << 4 + hwcap_FPA = 1 << 5 + hwcap_VFP = 1 << 6 + hwcap_EDSP = 1 << 7 + hwcap_JAVA = 1 << 8 + hwcap_IWMMXT = 1 << 9 + hwcap_CRUNCH = 1 << 10 + hwcap_THUMBEE = 1 << 11 + hwcap_NEON = 1 << 12 + hwcap_VFPv3 = 1 << 13 + hwcap_VFPv3D16 = 1 << 14 + hwcap_TLS = 1 << 15 + hwcap_VFPv4 = 1 << 16 + hwcap_IDIVA = 1 << 17 + hwcap_IDIVT = 1 << 18 + hwcap_VFPD32 = 1 << 19 + hwcap_LPAE = 1 << 20 + hwcap_EVTSTRM = 1 << 21 + + hwcap2_AES = 1 << 0 + hwcap2_PMULL = 1 << 1 + hwcap2_SHA1 = 1 << 2 + hwcap2_SHA2 = 1 << 3 + hwcap2_CRC32 = 1 << 4 +) diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux.go b/vendor/golang.org/x/sys/cpu/cpu_linux.go index 76b5f507fa..10e712dc5d 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_linux.go +++ b/vendor/golang.org/x/sys/cpu/cpu_linux.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//+build !amd64,!amd64p32,!386 +// +build !amd64,!amd64p32,!386 package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go b/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go new file mode 100644 index 0000000000..2057006dce --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go @@ -0,0 +1,39 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +func doinit() { + ARM.HasSWP = isSet(hwCap, hwcap_SWP) + ARM.HasHALF = isSet(hwCap, hwcap_HALF) + ARM.HasTHUMB = isSet(hwCap, hwcap_THUMB) + ARM.Has26BIT = isSet(hwCap, hwcap_26BIT) + ARM.HasFASTMUL = isSet(hwCap, hwcap_FAST_MULT) + ARM.HasFPA = isSet(hwCap, hwcap_FPA) + ARM.HasVFP = isSet(hwCap, hwcap_VFP) + ARM.HasEDSP = isSet(hwCap, hwcap_EDSP) + ARM.HasJAVA = isSet(hwCap, hwcap_JAVA) + ARM.HasIWMMXT = isSet(hwCap, hwcap_IWMMXT) + ARM.HasCRUNCH = isSet(hwCap, hwcap_CRUNCH) + ARM.HasTHUMBEE = isSet(hwCap, hwcap_THUMBEE) + ARM.HasNEON = isSet(hwCap, hwcap_NEON) + ARM.HasVFPv3 = isSet(hwCap, hwcap_VFPv3) + ARM.HasVFPv3D16 = isSet(hwCap, hwcap_VFPv3D16) + ARM.HasTLS = isSet(hwCap, hwcap_TLS) + ARM.HasVFPv4 = isSet(hwCap, hwcap_VFPv4) + ARM.HasIDIVA = isSet(hwCap, hwcap_IDIVA) + ARM.HasIDIVT = isSet(hwCap, hwcap_IDIVT) + ARM.HasVFPD32 = isSet(hwCap, hwcap_VFPD32) + ARM.HasLPAE = isSet(hwCap, hwcap_LPAE) + ARM.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) + ARM.HasAES = isSet(hwCap2, hwcap2_AES) + ARM.HasPMULL = isSet(hwCap2, hwcap2_PMULL) + ARM.HasSHA1 = isSet(hwCap2, hwcap2_SHA1) + ARM.HasSHA2 = isSet(hwCap2, hwcap2_SHA2) + ARM.HasCRC32 = isSet(hwCap2, hwcap2_CRC32) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go new file mode 100644 index 0000000000..78fe25e86f --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go @@ -0,0 +1,36 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Minimal copy of x/sys/unix so the cpu package can make a +// system call on AIX without depending on x/sys/unix. +// (See golang.org/issue/32102) + +// +build aix,ppc64 +// +build !gccgo + +package cpu + +import ( + "syscall" + "unsafe" +) + +//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" + +//go:linkname libc_getsystemcfg libc_getsystemcfg + +type syscallFunc uintptr + +var libc_getsystemcfg syscallFunc + +type errno = syscall.Errno + +// Implemented in runtime/syscall_aix.go. +func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) +func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) + +func callgetsystemcfg(label int) (r1 uintptr, e1 errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0) + return +} diff --git a/vendor/golang.org/x/sys/unix/affinity_linux.go b/vendor/golang.org/x/sys/unix/affinity_linux.go index 72afe3338c..6e5c81acd0 100644 --- a/vendor/golang.org/x/sys/unix/affinity_linux.go +++ b/vendor/golang.org/x/sys/unix/affinity_linux.go @@ -7,6 +7,7 @@ package unix import ( + "math/bits" "unsafe" ) @@ -79,46 +80,7 @@ func (s *CPUSet) IsSet(cpu int) bool { func (s *CPUSet) Count() int { c := 0 for _, b := range s { - c += onesCount64(uint64(b)) + c += bits.OnesCount64(uint64(b)) } return c } - -// onesCount64 is a copy of Go 1.9's math/bits.OnesCount64. -// Once this package can require Go 1.9, we can delete this -// and update the caller to use bits.OnesCount64. -func onesCount64(x uint64) int { - const m0 = 0x5555555555555555 // 01010101 ... - const m1 = 0x3333333333333333 // 00110011 ... - const m2 = 0x0f0f0f0f0f0f0f0f // 00001111 ... - const m3 = 0x00ff00ff00ff00ff // etc. - const m4 = 0x0000ffff0000ffff - - // Implementation: Parallel summing of adjacent bits. - // See "Hacker's Delight", Chap. 5: Counting Bits. - // The following pattern shows the general approach: - // - // x = x>>1&(m0&m) + x&(m0&m) - // x = x>>2&(m1&m) + x&(m1&m) - // x = x>>4&(m2&m) + x&(m2&m) - // x = x>>8&(m3&m) + x&(m3&m) - // x = x>>16&(m4&m) + x&(m4&m) - // x = x>>32&(m5&m) + x&(m5&m) - // return int(x) - // - // Masking (& operations) can be left away when there's no - // danger that a field's sum will carry over into the next - // field: Since the result cannot be > 64, 8 bits is enough - // and we can ignore the masks for the shifts by 8 and up. - // Per "Hacker's Delight", the first line can be simplified - // more, but it saves at best one instruction, so we leave - // it alone for clarity. - const m = 1<<64 - 1 - x = x>>1&(m0&m) + x&(m0&m) - x = x>>2&(m1&m) + x&(m1&m) - x = (x>>4 + x) & (m2 & m) - x += x >> 8 - x += x >> 16 - x += x >> 32 - return int(x) & (1<<7 - 1) -} diff --git a/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s new file mode 100644 index 0000000000..6db717de53 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s @@ -0,0 +1,54 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build riscv64,!gccgo + +#include "textflag.h" + +// +// System calls for linux/riscv64. +// +// Where available, just jump to package syscall's implementation of +// these functions. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + CALL runtime·entersyscall(SB) + MOV a1+8(FP), A0 + MOV a2+16(FP), A1 + MOV a3+24(FP), A2 + MOV $0, A3 + MOV $0, A4 + MOV $0, A5 + MOV $0, A6 + MOV trap+0(FP), A7 // syscall entry + ECALL + MOV A0, r1+32(FP) // r1 + MOV A1, r2+40(FP) // r2 + CALL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOV a1+8(FP), A0 + MOV a2+16(FP), A1 + MOV a3+24(FP), A2 + MOV ZERO, A3 + MOV ZERO, A4 + MOV ZERO, A5 + MOV trap+0(FP), A7 // syscall entry + ECALL + MOV A0, r1+32(FP) + MOV A1, r2+40(FP) + RET diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s new file mode 100644 index 0000000000..0cedea3d39 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for arm64, OpenBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go index 4407c505a3..304016b688 100644 --- a/vendor/golang.org/x/sys/unix/dirent.go +++ b/vendor/golang.org/x/sys/unix/dirent.go @@ -2,16 +2,101 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix -import "syscall" +import "unsafe" + +// readInt returns the size-bytes unsigned integer in native byte order at offset off. +func readInt(b []byte, off, size uintptr) (u uint64, ok bool) { + if len(b) < int(off+size) { + return 0, false + } + if isBigEndian { + return readIntBE(b[off:], size), true + } + return readIntLE(b[off:], size), true +} + +func readIntBE(b []byte, size uintptr) uint64 { + switch size { + case 1: + return uint64(b[0]) + case 2: + _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[1]) | uint64(b[0])<<8 + case 4: + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24 + case 8: + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | + uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 + default: + panic("syscall: readInt with unsupported size") + } +} + +func readIntLE(b []byte, size uintptr) uint64 { + switch size { + case 1: + return uint64(b[0]) + case 2: + _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 + case 4: + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 + case 8: + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 + default: + panic("syscall: readInt with unsupported size") + } +} // ParseDirent parses up to max directory entries in buf, // appending the names to names. It returns the number of // bytes consumed from buf, the number of entries added // to names, and the new names slice. func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { - return syscall.ParseDirent(buf, max, names) + origlen := len(buf) + count = 0 + for max != 0 && len(buf) > 0 { + reclen, ok := direntReclen(buf) + if !ok || reclen > uint64(len(buf)) { + return origlen, count, names + } + rec := buf[:reclen] + buf = buf[reclen:] + ino, ok := direntIno(rec) + if !ok { + break + } + if ino == 0 { // File absent in directory. + continue + } + const namoff = uint64(unsafe.Offsetof(Dirent{}.Name)) + namlen, ok := direntNamlen(rec) + if !ok || namoff+namlen > uint64(len(rec)) { + break + } + name := rec[namoff : namoff+namlen] + for i, c := range name { + if c == 0 { + name = name[:i] + break + } + } + // Check for useless names before allocating a string. + if string(name) == "." || string(name) == ".." { + continue + } + max-- + count++ + names = append(names, string(name)) + } + return origlen - len(buf), count, names } diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go index 085df2d8dd..bcdb5d30eb 100644 --- a/vendor/golang.org/x/sys/unix/endian_little.go +++ b/vendor/golang.org/x/sys/unix/endian_little.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // -// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le +// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le riscv64 package unix diff --git a/vendor/golang.org/x/sys/unix/ioctl.go b/vendor/golang.org/x/sys/unix/ioctl.go index f121a8d64b..3559e5dcb2 100644 --- a/vendor/golang.org/x/sys/unix/ioctl.go +++ b/vendor/golang.org/x/sys/unix/ioctl.go @@ -6,7 +6,19 @@ package unix -import "runtime" +import ( + "runtime" + "unsafe" +) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} // IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. // @@ -14,7 +26,7 @@ import "runtime" func IoctlSetWinsize(fd int, req uint, value *Winsize) error { // TODO: if we get the chance, remove the req parameter and // hardcode TIOCSWINSZ. - err := ioctlSetWinsize(fd, req, value) + err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) runtime.KeepAlive(value) return err } @@ -24,7 +36,30 @@ func IoctlSetWinsize(fd int, req uint, value *Winsize) error { // The req value will usually be TCSETA or TIOCSETA. func IoctlSetTermios(fd int, req uint, value *Termios) error { // TODO: if we get the chance, remove the req parameter. - err := ioctlSetTermios(fd, req, value) + err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) runtime.KeepAlive(value) return err } + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +// +// A few ioctl requests use the return value as an output parameter; +// for those, IoctlRetInt should be used instead of this function. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh index 1e5c59d0dd..890ec464c7 100644 --- a/vendor/golang.org/x/sys/unix/mkall.sh +++ b/vendor/golang.org/x/sys/unix/mkall.sh @@ -105,25 +105,25 @@ dragonfly_amd64) freebsd_386) mkerrors="$mkerrors -m32" mksyscall="go run mksyscall.go -l32" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; freebsd_amd64) mkerrors="$mkerrors -m64" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; freebsd_arm) mkerrors="$mkerrors" mksyscall="go run mksyscall.go -l32 -arm" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" # Let the type of C char be signed for making the bare syscall # API consistent across platforms. mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" ;; freebsd_arm64) mkerrors="$mkerrors -m64" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; netbsd_386) @@ -146,24 +146,39 @@ netbsd_arm) # API consistent across platforms. mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" ;; +netbsd_arm64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -netbsd" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; openbsd_386) mkerrors="$mkerrors -m32" mksyscall="go run mksyscall.go -l32 -openbsd" - mksysctl="./mksysctl_openbsd.pl" + mksysctl="go run mksysctl_openbsd.go" mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; openbsd_amd64) mkerrors="$mkerrors -m64" mksyscall="go run mksyscall.go -openbsd" - mksysctl="./mksysctl_openbsd.pl" + mksysctl="go run mksysctl_openbsd.go" mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; openbsd_arm) mkerrors="$mkerrors" mksyscall="go run mksyscall.go -l32 -openbsd -arm" - mksysctl="./mksysctl_openbsd.pl" + mksysctl="go run mksysctl_openbsd.go" + mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +openbsd_arm64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd" + mksysctl="go run mksysctl_openbsd.go" mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" # Let the type of C char be signed for making the bare syscall # API consistent across platforms. @@ -197,9 +212,11 @@ esac echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_"$GOOSARCH"_gccgo.go && gofmt -w zsyscall_"$GOOSARCH"_gc.go " ; elif [ "$GOOS" == "darwin" ]; then # pre-1.12, direct syscalls - echo "$mksyscall -tags $GOOS,$GOARCH,!go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.1_11.go"; + echo "$mksyscall -tags $GOOS,$GOARCH,!go1.12 $syscall_goos syscall_darwin_${GOARCH}.1_11.go $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.1_11.go"; # 1.12 and later, syscalls via libSystem echo "$mksyscall -tags $GOOS,$GOARCH,go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; + # 1.13 and later, syscalls via libSystem (including syscallPtr) + echo "$mksyscall -tags $GOOS,$GOARCH,go1.13 syscall_darwin.1_13.go |gofmt >zsyscall_$GOOSARCH.1_13.go"; else echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; fi diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index cfb61ba049..67b84828ac 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -60,6 +60,7 @@ includes_Darwin=' #include #include #include +#include #include #include #include @@ -80,6 +81,7 @@ includes_Darwin=' includes_DragonFly=' #include #include +#include #include #include #include @@ -103,6 +105,7 @@ includes_FreeBSD=' #include #include #include +#include #include #include #include @@ -179,49 +182,57 @@ struct ltchars { #include #include #include +#include #include #include #include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include #include +#include #include #include #include #include #include #include -#include -#include -#include -#include -#include +#include #include #include +#include #include #include #include #include #include #include +#include #include +#include #include #include +#include #include -#include #include #include -#include -#include -#include #include -#include -#include +#include #include -#include +#include +#include +#include #include -#include -#include -#include + #include #include @@ -260,6 +271,11 @@ struct ltchars { #define FS_KEY_DESC_PREFIX "fscrypt:" #define FS_KEY_DESC_PREFIX_SIZE 8 #define FS_MAX_KEY_SIZE 64 + +// The code generator produces -0x1 for (~0), but an unsigned value is necessary +// for the tipc_subscr timeout __u32 field. +#undef TIPC_WAIT_FOREVER +#define TIPC_WAIT_FOREVER 0xffffffff ' includes_NetBSD=' @@ -269,6 +285,7 @@ includes_NetBSD=' #include #include #include +#include #include #include #include @@ -295,6 +312,7 @@ includes_OpenBSD=' #include #include #include +#include #include #include #include @@ -331,6 +349,7 @@ includes_OpenBSD=' includes_SunOS=' #include #include +#include #include #include #include @@ -423,6 +442,7 @@ ccflags="$@" $2 == "XCASE" || $2 == "ALTWERASE" || $2 == "NOKERNINFO" || + $2 == "NFDBITS" || $2 ~ /^PAR/ || $2 ~ /^SIG[^_]/ || $2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ || @@ -432,7 +452,9 @@ ccflags="$@" $2 ~ /^TC[IO](ON|OFF)$/ || $2 ~ /^IN_/ || $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || - $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || + $2 ~ /^LO_(KEY|NAME)_SIZE$/ || + $2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ || + $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|MCAST|EVFILT|NOTE|EV|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || $2 ~ /^TP_STATUS_/ || $2 ~ /^FALLOC_/ || $2 == "ICMPV6_FILTER" || @@ -445,6 +467,7 @@ ccflags="$@" $2 ~ /^SYSCTL_VERS/ || $2 !~ "MNT_BITS" && $2 ~ /^(MS|MNT|UMOUNT)_/ || + $2 ~ /^NS_GET_/ || $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || $2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT)_/ || $2 ~ /^KEXEC_/ || @@ -465,7 +488,7 @@ ccflags="$@" $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ || $2 ~ /^PRIO_(PROCESS|PGRP|USER)/ || $2 ~ /^CLONE_[A-Z_]+/ || - $2 !~ /^(BPF_TIMEVAL)$/ && + $2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+)$/ && $2 ~ /^(BPF|DLT)_/ || $2 ~ /^(CLOCK|TIMER)_/ || $2 ~ /^CAN_/ || @@ -499,6 +522,8 @@ ccflags="$@" $2 ~ /^NFN/ || $2 ~ /^XDP_/ || $2 ~ /^(HDIO|WIN|SMART)_/ || + $2 ~ /^CRYPTO_/ || + $2 ~ /^TIPC_/ || $2 !~ "WMESGLEN" && $2 ~ /^W[A-Z0-9]+$/ || $2 ~/^PPPIOC/ || diff --git a/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl b/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl deleted file mode 100644 index 20632e1460..0000000000 --- a/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl +++ /dev/null @@ -1,265 +0,0 @@ -#!/usr/bin/env perl - -# Copyright 2011 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -# -# Parse the header files for OpenBSD and generate a Go usable sysctl MIB. -# -# Build a MIB with each entry being an array containing the level, type and -# a hash that will contain additional entries if the current entry is a node. -# We then walk this MIB and create a flattened sysctl name to OID hash. -# - -use strict; - -if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { - print STDERR "GOARCH or GOOS not defined in environment\n"; - exit 1; -} - -my $debug = 0; -my %ctls = (); - -my @headers = qw ( - sys/sysctl.h - sys/socket.h - sys/tty.h - sys/malloc.h - sys/mount.h - sys/namei.h - sys/sem.h - sys/shm.h - sys/vmmeter.h - uvm/uvmexp.h - uvm/uvm_param.h - uvm/uvm_swap_encrypt.h - ddb/db_var.h - net/if.h - net/if_pfsync.h - net/pipex.h - netinet/in.h - netinet/icmp_var.h - netinet/igmp_var.h - netinet/ip_ah.h - netinet/ip_carp.h - netinet/ip_divert.h - netinet/ip_esp.h - netinet/ip_ether.h - netinet/ip_gre.h - netinet/ip_ipcomp.h - netinet/ip_ipip.h - netinet/pim_var.h - netinet/tcp_var.h - netinet/udp_var.h - netinet6/in6.h - netinet6/ip6_divert.h - netinet6/pim6_var.h - netinet/icmp6.h - netmpls/mpls.h -); - -my @ctls = qw ( - kern - vm - fs - net - #debug # Special handling required - hw - #machdep # Arch specific - user - ddb - #vfs # Special handling required - fs.posix - kern.forkstat - kern.intrcnt - kern.malloc - kern.nchstats - kern.seminfo - kern.shminfo - kern.timecounter - kern.tty - kern.watchdog - net.bpf - net.ifq - net.inet - net.inet.ah - net.inet.carp - net.inet.divert - net.inet.esp - net.inet.etherip - net.inet.gre - net.inet.icmp - net.inet.igmp - net.inet.ip - net.inet.ip.ifq - net.inet.ipcomp - net.inet.ipip - net.inet.mobileip - net.inet.pfsync - net.inet.pim - net.inet.tcp - net.inet.udp - net.inet6 - net.inet6.divert - net.inet6.ip6 - net.inet6.icmp6 - net.inet6.pim6 - net.inet6.tcp6 - net.inet6.udp6 - net.mpls - net.mpls.ifq - net.key - net.pflow - net.pfsync - net.pipex - net.rt - vm.swapencrypt - #vfsgenctl # Special handling required -); - -# Node name "fixups" -my %ctl_map = ( - "ipproto" => "net.inet", - "net.inet.ipproto" => "net.inet", - "net.inet6.ipv6proto" => "net.inet6", - "net.inet6.ipv6" => "net.inet6.ip6", - "net.inet.icmpv6" => "net.inet6.icmp6", - "net.inet6.divert6" => "net.inet6.divert", - "net.inet6.tcp6" => "net.inet.tcp", - "net.inet6.udp6" => "net.inet.udp", - "mpls" => "net.mpls", - "swpenc" => "vm.swapencrypt" -); - -# Node mappings -my %node_map = ( - "net.inet.ip.ifq" => "net.ifq", - "net.inet.pfsync" => "net.pfsync", - "net.mpls.ifq" => "net.ifq" -); - -my $ctlname; -my %mib = (); -my %sysctl = (); -my $node; - -sub debug() { - print STDERR "$_[0]\n" if $debug; -} - -# Walk the MIB and build a sysctl name to OID mapping. -sub build_sysctl() { - my ($node, $name, $oid) = @_; - my %node = %{$node}; - my @oid = @{$oid}; - - foreach my $key (sort keys %node) { - my @node = @{$node{$key}}; - my $nodename = $name.($name ne '' ? '.' : '').$key; - my @nodeoid = (@oid, $node[0]); - if ($node[1] eq 'CTLTYPE_NODE') { - if (exists $node_map{$nodename}) { - $node = \%mib; - $ctlname = $node_map{$nodename}; - foreach my $part (split /\./, $ctlname) { - $node = \%{@{$$node{$part}}[2]}; - } - } else { - $node = $node[2]; - } - &build_sysctl($node, $nodename, \@nodeoid); - } elsif ($node[1] ne '') { - $sysctl{$nodename} = \@nodeoid; - } - } -} - -foreach my $ctl (@ctls) { - $ctls{$ctl} = $ctl; -} - -# Build MIB -foreach my $header (@headers) { - &debug("Processing $header..."); - open HEADER, "/usr/include/$header" || - print STDERR "Failed to open $header\n"; - while (
) { - if ($_ =~ /^#define\s+(CTL_NAMES)\s+{/ || - $_ =~ /^#define\s+(CTL_(.*)_NAMES)\s+{/ || - $_ =~ /^#define\s+((.*)CTL_NAMES)\s+{/) { - if ($1 eq 'CTL_NAMES') { - # Top level. - $node = \%mib; - } else { - # Node. - my $nodename = lc($2); - if ($header =~ /^netinet\//) { - $ctlname = "net.inet.$nodename"; - } elsif ($header =~ /^netinet6\//) { - $ctlname = "net.inet6.$nodename"; - } elsif ($header =~ /^net\//) { - $ctlname = "net.$nodename"; - } else { - $ctlname = "$nodename"; - $ctlname =~ s/^(fs|net|kern)_/$1\./; - } - if (exists $ctl_map{$ctlname}) { - $ctlname = $ctl_map{$ctlname}; - } - if (not exists $ctls{$ctlname}) { - &debug("Ignoring $ctlname..."); - next; - } - - # Walk down from the top of the MIB. - $node = \%mib; - foreach my $part (split /\./, $ctlname) { - if (not exists $$node{$part}) { - &debug("Missing node $part"); - $$node{$part} = [ 0, '', {} ]; - } - $node = \%{@{$$node{$part}}[2]}; - } - } - - # Populate current node with entries. - my $i = -1; - while (defined($_) && $_ !~ /^}/) { - $_ =
; - $i++ if $_ =~ /{.*}/; - next if $_ !~ /{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}/; - $$node{$1} = [ $i, $2, {} ]; - } - } - } - close HEADER; -} - -&build_sysctl(\%mib, "", []); - -print <>= 32 + stat.Mtim.Nsec >>= 32 + stat.Ctim.Nsec >>= 32 +} + +func Fstat(fd int, stat *Stat_t) error { + err := fstat(fd, stat) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) error { + err := fstatat(dirfd, path, stat, flags) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Lstat(path string, stat *Stat_t) error { + err := lstat(path, stat) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Stat(path string, statptr *Stat_t) error { + err := stat(path, statptr) + if err != nil { + return err + } + fixStatTimFields(statptr) + return nil +} diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go index 33c8b5f0db..3e6671426c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -63,15 +63,6 @@ func Setgroups(gids []int) (err error) { return setgroups(len(a), &a[0]) } -func ReadDirent(fd int, buf []byte) (n int, err error) { - // Final argument is (basep *uintptr) and the syscall doesn't take nil. - // 64 bits should be enough. (32 bits isn't even on 386). Since the - // actual system call is getdirentries64, 64 is a good guess. - // TODO(rsc): Can we use a single global basep for all calls? - var base = (*uintptr)(unsafe.Pointer(new(uint64))) - return Getdirentries(fd, buf, base) -} - // Wait status is 7 bits at bottom, either 0 (exited), // 0x7F (stopped), or a signal number that caused an exit. // The 0x80 bit is whether there was a core dump. @@ -86,6 +77,7 @@ const ( shift = 8 exited = 0 + killed = 9 stopped = 0x7F ) @@ -112,6 +104,8 @@ func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } +func (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL } + func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } func (w WaitStatus) StopSignal() syscall.Signal { @@ -419,8 +413,6 @@ func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err e return kevent(kq, change, len(changes), event, len(events), timeout) } -//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL - // sysctlmib translates name to mib number and appends any additional args. func sysctlmib(name string, args ...int) ([]_C_int, error) { // Translate name to mib number. diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go new file mode 100644 index 0000000000..6a15cba611 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_12.go @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,go1.12,!go1.13 + +package unix + +import ( + "unsafe" +) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + // To implement this using libSystem we'd need syscall_syscallPtr for + // fdopendir. However, syscallPtr was only added in Go 1.13, so we fall + // back to raw syscalls for this func on Go 1.12. + var p unsafe.Pointer + if len(buf) > 0 { + p = unsafe.Pointer(&buf[0]) + } else { + p = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(p), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + return n, errnoErr(e1) + } + return n, nil +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go new file mode 100644 index 0000000000..24960c38ba --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.1_13.go @@ -0,0 +1,103 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,go1.13 + +package unix + +import "unsafe" + +//sys closedir(dir uintptr) (err error) +//sys readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) + +func fdopendir(fd int) (dir uintptr, err error) { + r0, _, e1 := syscall_syscallPtr(funcPC(libc_fdopendir_trampoline), uintptr(fd), 0, 0) + dir = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fdopendir_trampoline() + +//go:linkname libc_fdopendir libc_fdopendir +//go:cgo_import_dynamic libc_fdopendir fdopendir "/usr/lib/libSystem.B.dylib" + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + // Simulate Getdirentries using fdopendir/readdir_r/closedir. + const ptrSize = unsafe.Sizeof(uintptr(0)) + + // We store the number of entries to skip in the seek + // offset of fd. See issue #31368. + // It's not the full required semantics, but should handle the case + // of calling Getdirentries or ReadDirent repeatedly. + // It won't handle assigning the results of lseek to *basep, or handle + // the directory being edited underfoot. + skip, err := Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + return 0, err + } + + // We need to duplicate the incoming file descriptor + // because the caller expects to retain control of it, but + // fdopendir expects to take control of its argument. + // Just Dup'ing the file descriptor is not enough, as the + // result shares underlying state. Use Openat to make a really + // new file descriptor referring to the same directory. + fd2, err := Openat(fd, ".", O_RDONLY, 0) + if err != nil { + return 0, err + } + d, err := fdopendir(fd2) + if err != nil { + Close(fd2) + return 0, err + } + defer closedir(d) + + var cnt int64 + for { + var entry Dirent + var entryp *Dirent + e := readdir_r(d, &entry, &entryp) + if e != 0 { + return n, errnoErr(e) + } + if entryp == nil { + break + } + if skip > 0 { + skip-- + cnt++ + continue + } + reclen := int(entry.Reclen) + if reclen > len(buf) { + // Not enough room. Return for now. + // The counter will let us know where we should start up again. + // Note: this strategy for suspending in the middle and + // restarting is O(n^2) in the length of the directory. Oh well. + break + } + // Copy entry into return buffer. + s := struct { + ptr unsafe.Pointer + siz int + cap int + }{ptr: unsafe.Pointer(&entry), siz: reclen, cap: reclen} + copy(buf, *(*[]byte)(unsafe.Pointer(&s))) + buf = buf[reclen:] + n += reclen + cnt++ + } + // Set the seek offset of the input fd to record + // how many files we've already returned. + _, err = Seek(fd, cnt, 0 /* SEEK_SET */) + if err != nil { + return n, err + } + + return n, nil +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 2120091892..c5018a385c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -77,7 +77,18 @@ func nametomib(name string) (mib []_C_int, err error) { return buf[0 : n/siz], nil } -//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) } func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) } @@ -328,43 +339,6 @@ func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(sig //sys ioctl(fd int, req uint, arg uintptr) (err error) -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. - -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func Uname(uname *Utsname) error { mib := []_C_int{CTL_KERN, KERN_OSTYPE} n := unsafe.Sizeof(uname.Sysname) @@ -486,7 +460,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sys Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go new file mode 100644 index 0000000000..6b223f91a5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.1_11.go @@ -0,0 +1,9 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,386,!go1.12 + +package unix + +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go index 489726fa9b..dd756e708c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go @@ -10,6 +10,9 @@ import ( "syscall" ) +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) + func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: int32(sec), Nsec: int32(nsec)} } @@ -43,6 +46,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } @@ -56,7 +63,6 @@ const SYS___SYSCTL = SYS_SYSCTL //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 //sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 -//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go new file mode 100644 index 0000000000..68ebd6fab2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.1_11.go @@ -0,0 +1,9 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,amd64,!go1.12 + +package unix + +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go index 914b89bde5..7f148c428e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -10,6 +10,9 @@ import ( "syscall" ) +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) + func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: sec, Nsec: nsec} } @@ -43,6 +46,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } @@ -56,7 +63,6 @@ const SYS___SYSCTL = SYS_SYSCTL //sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 //sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 //sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 -//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 //sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 //sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 //sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 diff --git a/vendor/golang.org/x/sys/windows/mkerrors.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go similarity index 53% rename from vendor/golang.org/x/sys/windows/mkerrors.go rename to vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go index cbf123ef89..c81510da27 100644 --- a/vendor/golang.org/x/sys/windows/mkerrors.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go @@ -2,6 +2,10 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -package windows +// +build darwin,386,!go1.12 -//go:generate ./mkerrors.bash zerrors_windows.go +package unix + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return 0, ENOSYS +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go index 4a284cf502..58be02e718 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go @@ -8,6 +8,14 @@ import ( "syscall" ) +func ptrace(request int, pid int, addr uintptr, data uintptr) error { + return ENOTSUP +} + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { + return ENOTSUP +} + func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: int32(sec), Nsec: int32(nsec)} } @@ -41,6 +49,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } @@ -58,7 +70,3 @@ const SYS___SYSCTL = SYS_SYSCTL //sys Lstat(path string, stat *Stat_t) (err error) //sys Stat(path string, stat *Stat_t) (err error) //sys Statfs(path string, stat *Statfs_t) (err error) - -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - return 0, ENOSYS -} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go new file mode 100644 index 0000000000..01d450406b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.1_11.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,arm64,!go1.12 + +package unix + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return 0, ENOSYS +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go index 52dcd88f6b..1ee931f97c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -10,6 +10,14 @@ import ( "syscall" ) +func ptrace(request int, pid int, addr uintptr, data uintptr) error { + return ENOTSUP +} + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { + return ENOTSUP +} + func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: sec, Nsec: nsec} } @@ -43,6 +51,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } @@ -60,7 +72,3 @@ const SYS___SYSCTL = SYS_SYSCTL //sys Lstat(path string, stat *Stat_t) (err error) //sys Stat(path string, stat *Stat_t) (err error) //sys Statfs(path string, stat *Statfs_t) (err error) - -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - return 0, ENOSYS -} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go index 4b4ae460f2..f34c86c899 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -15,6 +15,7 @@ func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) //go:linkname syscall_syscall syscall.syscall //go:linkname syscall_syscall6 syscall.syscall6 @@ -22,6 +23,7 @@ func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, er //go:linkname syscall_syscall9 syscall.syscall9 //go:linkname syscall_rawSyscall syscall.rawSyscall //go:linkname syscall_rawSyscall6 syscall.rawSyscall6 +//go:linkname syscall_syscallPtr syscall.syscallPtr // Find the entry point for f. See comments in runtime/proc.go for the // function of the same name. diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index 962eee3046..8c8d502979 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -14,6 +14,8 @@ package unix import "unsafe" +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + // SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. type SockaddrDatalink struct { Len uint8 @@ -57,6 +59,22 @@ func nametomib(name string) (mib []_C_int, err error) { return buf[0 : n/siz], nil } +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + namlen, ok := direntNamlen(buf) + if !ok { + return 0, false + } + return (16 + namlen + 1 + 7) &^ 7, true +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + //sysnb pipe() (r int, w int, err error) func Pipe(p []int) (err error) { @@ -134,43 +152,6 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. - -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { err := sysctl(mib, old, oldlen, nil, 0) if err != nil { @@ -269,6 +250,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Fstatfs(fd int, stat *Statfs_t) (err error) //sys Fsync(fd int) (err error) //sys Ftruncate(fd int, length int64) (err error) +//sys Getdents(fd int, buf []byte) (n int, err error) //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) //sys Getdtablesize() (size int) //sysnb Getegid() (egid int) @@ -308,7 +290,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sysnb Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go index 9babb31ea7..a6b4830ac8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go @@ -33,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index a7ca1ebea3..25ac9340c0 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -36,6 +36,8 @@ var ( // INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h const _ino64First = 1200031 +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + func supportsABI(ver uint32) bool { osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) return osreldate >= ver @@ -82,6 +84,18 @@ func nametomib(name string) (mib []_C_int, err error) { return buf[0 : n/siz], nil } +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + func Pipe(p []int) (err error) { return Pipe2(p, 0) } @@ -189,43 +203,6 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. - -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func Uname(uname *Utsname) error { mib := []_C_int{CTL_KERN, KERN_OSTYPE} n := unsafe.Sizeof(uname.Sysname) @@ -362,7 +339,21 @@ func Getdents(fd int, buf []byte) (n int, err error) { func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { if supportsABI(_ino64First) { - return getdirentries_freebsd12(fd, buf, basep) + if basep == nil || unsafe.Sizeof(*basep) == 8 { + return getdirentries_freebsd12(fd, buf, (*uint64)(unsafe.Pointer(basep))) + } + // The freebsd12 syscall needs a 64-bit base. On 32-bit machines + // we can't just use the basep passed in. See #32498. + var base uint64 = uint64(*basep) + n, err = getdirentries_freebsd12(fd, buf, &base) + *basep = uintptr(base) + if base>>32 != 0 { + // We can't stuff the base back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO is allowed by getdirentries. + err = EIO + } + return } // The old syscall entries are smaller than the new. Use 1/4 of the original @@ -404,22 +395,22 @@ func roundup(x, y int) int { func (s *Stat_t) convertFrom(old *stat_freebsd11_t) { *s = Stat_t{ - Dev: uint64(old.Dev), - Ino: uint64(old.Ino), - Nlink: uint64(old.Nlink), - Mode: old.Mode, - Uid: old.Uid, - Gid: old.Gid, - Rdev: uint64(old.Rdev), - Atim: old.Atim, - Mtim: old.Mtim, - Ctim: old.Ctim, - Birthtim: old.Birthtim, - Size: old.Size, - Blocks: old.Blocks, - Blksize: old.Blksize, - Flags: old.Flags, - Gen: uint64(old.Gen), + Dev: uint64(old.Dev), + Ino: uint64(old.Ino), + Nlink: uint64(old.Nlink), + Mode: old.Mode, + Uid: old.Uid, + Gid: old.Gid, + Rdev: uint64(old.Rdev), + Atim: old.Atim, + Mtim: old.Mtim, + Ctim: old.Ctim, + Btim: old.Btim, + Size: old.Size, + Blocks: old.Blocks, + Blksize: old.Blksize, + Flags: old.Flags, + Gen: uint64(old.Gen), } } @@ -507,6 +498,70 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e return sendfile(outfd, infd, offset, count) } +//sys ptrace(request int, pid int, addr uintptr, data int) (err error) + +func PtraceAttach(pid int) (err error) { + return ptrace(PTRACE_ATTACH, pid, 0, 0) +} + +func PtraceCont(pid int, signal int) (err error) { + return ptrace(PTRACE_CONT, pid, 1, signal) +} + +func PtraceDetach(pid int) (err error) { + return ptrace(PTRACE_DETACH, pid, 1, 0) +} + +func PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) { + return ptrace(PTRACE_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0) +} + +func PtraceGetFsBase(pid int, fsbase *int64) (err error) { + return ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) +} + +func PtraceGetRegs(pid int, regsout *Reg) (err error) { + return ptrace(PTRACE_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0) +} + +func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { + ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint(countin)} + err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + return int(ioDesc.Len), err +} + +func PtraceLwpEvents(pid int, enable int) (err error) { + return ptrace(PTRACE_LWPEVENTS, pid, 0, enable) +} + +func PtraceLwpInfo(pid int, info uintptr) (err error) { + return ptrace(PTRACE_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{}))) +} + +func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { + return PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong) +} + +func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) { + return PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong) +} + +func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { + return PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong) +} + +func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { + return PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong) +} + +func PtraceSetRegs(pid int, regs *Reg) (err error) { + return ptrace(PTRACE_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0) +} + +func PtraceSingleStep(pid int) (err error) { + return ptrace(PTRACE_SINGLESTEP, pid, 1, 0) +} + /* * Exposed directly */ @@ -555,7 +610,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Fsync(fd int) (err error) //sys Ftruncate(fd int, length int64) (err error) //sys getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) -//sys getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) //sys Getdtablesize() (size int) //sysnb Getegid() (egid int) //sysnb Geteuid() (uid int) @@ -598,7 +653,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sysnb Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go index 21e03958cd..dcc56457a0 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -33,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go index 9c945a6579..321c3baceb 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -33,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go index 5cd6243f2a..6977008313 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -33,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go index a318054878..dbbbfd6035 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -33,6 +33,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 558f07b53f..ebf3195b65 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -13,7 +13,6 @@ package unix import ( "encoding/binary" - "net" "runtime" "syscall" "unsafe" @@ -72,6 +71,17 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { // ioctl itself should not be exposed directly, but additional get/set // functions for specific types are permissible. +// IoctlRetInt performs an ioctl operation specified by req on a device +// associated with opened file descriptor fd, and returns a non-negative +// integer that is returned by the ioctl syscall. +func IoctlRetInt(fd int, req uint) (int, error) { + ret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0) + if err != 0 { + return 0, err + } + return int(ret), nil +} + // IoctlSetPointerInt performs an ioctl operation which sets an // integer value on fd, using the specified request number. The ioctl // argument is called with a pointer to the integer value, rather than @@ -81,46 +91,18 @@ func IoctlSetPointerInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(unsafe.Pointer(&v))) } -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - func IoctlSetRTCTime(fd int, value *RTCTime) error { err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value))) runtime.KeepAlive(value) return err } -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int +func IoctlGetUint32(fd int, req uint) (uint32, error) { + var value uint32 err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) return value, err } -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func IoctlGetRTCTime(fd int) (*RTCTime, error) { var value RTCTime err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value))) @@ -759,7 +741,7 @@ const px_proto_oe = 0 type SockaddrPPPoE struct { SID uint16 - Remote net.HardwareAddr + Remote []byte Dev string raw RawSockaddrPPPoX } @@ -793,6 +775,70 @@ func (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) { return unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil } +// SockaddrTIPC implements the Sockaddr interface for AF_TIPC type sockets. +// For more information on TIPC, see: http://tipc.sourceforge.net/. +type SockaddrTIPC struct { + // Scope is the publication scopes when binding service/service range. + // Should be set to TIPC_CLUSTER_SCOPE or TIPC_NODE_SCOPE. + Scope int + + // Addr is the type of address used to manipulate a socket. Addr must be + // one of: + // - *TIPCSocketAddr: "id" variant in the C addr union + // - *TIPCServiceRange: "nameseq" variant in the C addr union + // - *TIPCServiceName: "name" variant in the C addr union + // + // If nil, EINVAL will be returned when the structure is used. + Addr TIPCAddr + + raw RawSockaddrTIPC +} + +// TIPCAddr is implemented by types that can be used as an address for +// SockaddrTIPC. It is only implemented by *TIPCSocketAddr, *TIPCServiceRange, +// and *TIPCServiceName. +type TIPCAddr interface { + tipcAddrtype() uint8 + tipcAddr() [12]byte +} + +func (sa *TIPCSocketAddr) tipcAddr() [12]byte { + var out [12]byte + copy(out[:], (*(*[unsafe.Sizeof(TIPCSocketAddr{})]byte)(unsafe.Pointer(sa)))[:]) + return out +} + +func (sa *TIPCSocketAddr) tipcAddrtype() uint8 { return TIPC_SOCKET_ADDR } + +func (sa *TIPCServiceRange) tipcAddr() [12]byte { + var out [12]byte + copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceRange{})]byte)(unsafe.Pointer(sa)))[:]) + return out +} + +func (sa *TIPCServiceRange) tipcAddrtype() uint8 { return TIPC_SERVICE_RANGE } + +func (sa *TIPCServiceName) tipcAddr() [12]byte { + var out [12]byte + copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceName{})]byte)(unsafe.Pointer(sa)))[:]) + return out +} + +func (sa *TIPCServiceName) tipcAddrtype() uint8 { return TIPC_SERVICE_ADDR } + +func (sa *SockaddrTIPC) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Addr == nil { + return nil, 0, EINVAL + } + + sa.raw.Family = AF_TIPC + sa.raw.Scope = int8(sa.Scope) + sa.raw.Addrtype = sa.Addr.tipcAddrtype() + sa.raw.Addr = sa.Addr.tipcAddr() + + return unsafe.Pointer(&sa.raw), SizeofSockaddrTIPC, nil +} + func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { switch rsa.Addr.Family { case AF_NETLINK: @@ -910,7 +956,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { } sa := &SockaddrPPPoE{ SID: binary.BigEndian.Uint16(pp[6:8]), - Remote: net.HardwareAddr(pp[8:14]), + Remote: pp[8:14], } for i := 14; i < 14+IFNAMSIZ; i++ { if pp[i] == 0 { @@ -918,6 +964,27 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { break } } + return sa, nil + case AF_TIPC: + pp := (*RawSockaddrTIPC)(unsafe.Pointer(rsa)) + + sa := &SockaddrTIPC{ + Scope: int(pp.Scope), + } + + // Determine which union variant is present in pp.Addr by checking + // pp.Addrtype. + switch pp.Addrtype { + case TIPC_SERVICE_RANGE: + sa.Addr = (*TIPCServiceRange)(unsafe.Pointer(&pp.Addr)) + case TIPC_SERVICE_ADDR: + sa.Addr = (*TIPCServiceName)(unsafe.Pointer(&pp.Addr)) + case TIPC_SOCKET_ADDR: + sa.Addr = (*TIPCSocketAddr)(unsafe.Pointer(&pp.Addr)) + default: + return nil, EINVAL + } + return sa, nil } return nil, EAFNOSUPPORT @@ -1155,6 +1222,34 @@ func KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error return keyctlDH(KEYCTL_DH_COMPUTE, params, buffer) } +// KeyctlRestrictKeyring implements the KEYCTL_RESTRICT_KEYRING command. This +// command limits the set of keys that can be linked to the keyring, regardless +// of keyring permissions. The command requires the "setattr" permission. +// +// When called with an empty keyType the command locks the keyring, preventing +// any further keys from being linked to the keyring. +// +// The "asymmetric" keyType defines restrictions requiring key payloads to be +// DER encoded X.509 certificates signed by keys in another keyring. Restrictions +// for "asymmetric" include "builtin_trusted", "builtin_and_secondary_trusted", +// "key_or_keyring:", and "key_or_keyring::chain". +// +// As of Linux 4.12, only the "asymmetric" keyType defines type-specific +// restrictions. +// +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_restrict_keyring.3.html +// http://man7.org/linux/man-pages/man2/keyctl.2.html +func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error { + if keyType == "" { + return keyctlRestrictKeyring(KEYCTL_RESTRICT_KEYRING, ringid) + } + return keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction) +} + +//sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL +//sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL + func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { var msg Msghdr var rsa RawSockaddrAny @@ -1398,8 +1493,12 @@ func PtraceSyscall(pid int, signal int) (err error) { func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) } +func PtraceInterrupt(pid int) (err error) { return ptrace(PTRACE_INTERRUPT, pid, 0, 0) } + func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) } +func PtraceSeize(pid int) (err error) { return ptrace(PTRACE_SEIZE, pid, 0, 0) } + func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) } //sys reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) @@ -1408,8 +1507,20 @@ func Reboot(cmd int) (err error) { return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "") } -func ReadDirent(fd int, buf []byte) (n int, err error) { - return Getdents(fd, buf) +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true } //sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) @@ -1444,6 +1555,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Acct(path string) (err error) //sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) //sys Adjtimex(buf *Timex) (state int, err error) +//sys Capget(hdr *CapUserHeader, data *CapUserData) (err error) +//sys Capset(hdr *CapUserHeader, data *CapUserData) (err error) //sys Chdir(path string) (err error) //sys Chroot(path string) (err error) //sys ClockGetres(clockid int32, res *Timespec) (err error) @@ -1531,9 +1644,13 @@ func Setgid(uid int) (err error) { return EOPNOTSUPP } +func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) { + return signalfd(fd, sigmask, _C__NSIG/8, flags) +} + //sys Setpriority(which int, who int, prio int) (err error) //sys Setxattr(path string, attr string, data []byte, flags int) (err error) -//sys Signalfd(fd int, mask *Sigset_t, flags int) = SYS_SIGNALFD4 +//sys signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) = SYS_SIGNALFD4 //sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) //sys Sync() //sys Syncfs(fd int) (err error) @@ -1675,6 +1792,80 @@ type fileHandle struct { Type int32 } +// FileHandle represents the C struct file_handle used by +// name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see +// OpenByHandleAt). +type FileHandle struct { + *fileHandle +} + +// NewFileHandle constructs a FileHandle. +func NewFileHandle(handleType int32, handle []byte) FileHandle { + const hdrSize = unsafe.Sizeof(fileHandle{}) + buf := make([]byte, hdrSize+uintptr(len(handle))) + copy(buf[hdrSize:], handle) + fh := (*fileHandle)(unsafe.Pointer(&buf[0])) + fh.Type = handleType + fh.Bytes = uint32(len(handle)) + return FileHandle{fh} +} + +func (fh *FileHandle) Size() int { return int(fh.fileHandle.Bytes) } +func (fh *FileHandle) Type() int32 { return fh.fileHandle.Type } +func (fh *FileHandle) Bytes() []byte { + n := fh.Size() + if n == 0 { + return nil + } + return (*[1 << 30]byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type)) + 4))[:n:n] +} + +// NameToHandleAt wraps the name_to_handle_at system call; it obtains +// a handle for a path name. +func NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) { + var mid _C_int + // Try first with a small buffer, assuming the handle will + // only be 32 bytes. + size := uint32(32 + unsafe.Sizeof(fileHandle{})) + didResize := false + for { + buf := make([]byte, size) + fh := (*fileHandle)(unsafe.Pointer(&buf[0])) + fh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{})) + err = nameToHandleAt(dirfd, path, fh, &mid, flags) + if err == EOVERFLOW { + if didResize { + // We shouldn't need to resize more than once + return + } + didResize = true + size = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{})) + continue + } + if err != nil { + return + } + return FileHandle{fh}, int(mid), nil + } +} + +// OpenByHandleAt wraps the open_by_handle_at system call; it opens a +// file via a handle as previously returned by NameToHandleAt. +func OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) { + return openByHandleAt(mountFD, handle.fileHandle, flags) +} + +// Klogset wraps the sys_syslog system call; it sets console_loglevel to +// the value specified by arg and passes a dummy pointer to bufp. +func Klogset(typ int, arg int) (err error) { + var p unsafe.Pointer + _, _, errno := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(p), uintptr(arg)) + if errno != 0 { + return errnoErr(errno) + } + return nil +} + /* * Unimplemented */ @@ -1682,8 +1873,6 @@ type fileHandle struct { // Alarm // ArchPrctl // Brk -// Capget -// Capset // ClockNanosleep // ClockSettime // Clone diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go index e2f8cf6e5a..e7fa665e68 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -372,6 +372,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go index 87a30744d6..088ce0f935 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -163,6 +163,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go index 3a3c37b4c8..11930fc8fa 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -252,6 +252,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } @@ -272,3 +276,16 @@ func SyncFileRange(fd int, off int64, n int64, flags int) error { // order of their arguments. return armSyncFileRange(fd, flags, off, n) } + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index cb20b15d5d..251e2d9715 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -180,6 +180,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go index b3b21ec1e2..7562fe97b8 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -208,6 +208,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go index 5144d4e133..a939ff8f21 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -220,6 +220,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go index 0a100b66a3..28d6d0f229 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -91,6 +91,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index 6230f64052..6798c26258 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -179,6 +179,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go index f81dbdc9c8..eb5cb1a71d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -120,6 +120,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go index b69565616f..37321c12ef 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -107,6 +107,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint64(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go index 5240e16e4b..f95463ee28 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -18,6 +18,8 @@ import ( "unsafe" ) +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + // SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. type SockaddrDatalink struct { Len uint8 @@ -94,6 +96,18 @@ func nametomib(name string) (mib []_C_int, err error) { return mib, nil } +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + func SysctlClockinfo(name string) (*Clockinfo, error) { mib, err := sysctlmib(name) if err != nil { @@ -120,9 +134,30 @@ func Pipe(p []int) (err error) { return } -//sys getdents(fd int, buf []byte) (n int, err error) +//sys Getdents(fd int, buf []byte) (n int, err error) func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - return getdents(fd, buf) + n, err = Getdents(fd, buf) + if err != nil || basep == nil { + return + } + + var off int64 + off, err = Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + *basep = ^uintptr(0) + return + } + *basep = uintptr(off) + if unsafe.Sizeof(*basep) == 8 { + return + } + if off>>32 != 0 { + // We can't stuff the offset back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO is allowed by getdirentries. + err = EIO + } + return } const ImplementsGetwd = true @@ -154,43 +189,6 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. - -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) { var value Ptmget err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) @@ -332,7 +330,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sysnb Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go index 24f74e58ce..24da8b5245 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go index 6878bf7ff9..25a0ac8258 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go index dbbfcf71db..21591ecd4d 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go index f3434465a1..8047496350 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index c8648ec026..7fe65ef75f 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -18,6 +18,8 @@ import ( "unsafe" ) +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + // SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. type SockaddrDatalink struct { Len uint8 @@ -43,6 +45,18 @@ func nametomib(name string) (mib []_C_int, err error) { return nil, EINVAL } +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + func SysctlClockinfo(name string) (*Clockinfo, error) { mib, err := sysctlmib(name) if err != nil { @@ -89,9 +103,30 @@ func Pipe(p []int) (err error) { return } -//sys getdents(fd int, buf []byte) (n int, err error) +//sys Getdents(fd int, buf []byte) (n int, err error) func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - return getdents(fd, buf) + n, err = Getdents(fd, buf) + if err != nil || basep == nil { + return + } + + var off int64 + off, err = Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + *basep = ^uintptr(0) + return + } + *basep = uintptr(off) + if unsafe.Sizeof(*basep) == 8 { + return + } + if off>>32 != 0 { + // We can't stuff the offset back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO was allowed by getdirentries. + err = EIO + } + return } const ImplementsGetwd = true @@ -145,43 +180,6 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. - -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - //sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { @@ -307,7 +305,7 @@ func Uname(uname *Utsname) error { //sys Revoke(path string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sysnb Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go index d62da60d1f..42b5a0e51e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go index 9a35334cba..6ea4b48831 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go index 5d812aaea5..1c3d26fa2c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -28,6 +28,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go new file mode 100644 index 0000000000..a8c458cb03 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go @@ -0,0 +1,41 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index e478012753..62f968c7f0 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -35,6 +35,22 @@ type SockaddrDatalink struct { raw RawSockaddrDatalink } +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true +} + //sysnb pipe(p *[2]_C_int) (n int, err error) func Pipe(p []int) (err error) { @@ -189,6 +205,7 @@ func Setgroups(gids []int) (err error) { return setgroups(len(a), &a[0]) } +// ReadDirent reads directory entries from fd and writes them into buf. func ReadDirent(fd int, buf []byte) (n int, err error) { // Final argument is (basep *uintptr) and the syscall doesn't take nil. // TODO(rsc): Can we use a single global basep for all calls? @@ -536,40 +553,10 @@ func Minor(dev uint64) uint32 { //sys ioctl(fd int, req uint, arg uintptr) (err error) -func IoctlSetInt(fd int, req uint, value int) (err error) { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) (err error) { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) (err error) { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - func IoctlSetTermio(fd int, req uint, value *Termio) (err error) { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func IoctlGetTermio(fd int, req uint) (*Termio, error) { var value Termio err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) @@ -662,7 +649,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) //sys Rmdir(path string) (err error) //sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek -//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) //sysnb Setegid(egid int) (err error) //sysnb Seteuid(euid int) (err error) //sysnb Setgid(gid int) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go index 91c32ddf02..b22a34d7ae 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go @@ -18,6 +18,10 @@ func (iov *Iovec) SetLen(length int) { iov.Len = uint64(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/vendor/golang.org/x/sys/unix/openbsd_unveil.go b/vendor/golang.org/x/sys/unix/unveil_openbsd.go similarity index 98% rename from vendor/golang.org/x/sys/unix/openbsd_unveil.go rename to vendor/golang.org/x/sys/unix/unveil_openbsd.go index aebc2dc576..168d5ae779 100644 --- a/vendor/golang.org/x/sys/unix/openbsd_unveil.go +++ b/vendor/golang.org/x/sys/unix/unveil_openbsd.go @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build openbsd - package unix import ( diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go index 3b39d7408a..6217cdba57 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go @@ -3,7 +3,7 @@ // +build 386,darwin -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m32 _const.go package unix @@ -980,6 +980,7 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NFDBITS = 0x20 NL0 = 0x0 NL1 = 0x100 NL2 = 0x200 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go index 8fe5547775..e3ff2ee3d4 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -3,7 +3,7 @@ // +build amd64,darwin -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -980,6 +980,7 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NFDBITS = 0x20 NL0 = 0x0 NL1 = 0x100 NL2 = 0x200 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go index 7a977770d0..3e417571a9 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go @@ -3,7 +3,7 @@ // +build arm,darwin -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- _const.go package unix @@ -980,6 +980,7 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NFDBITS = 0x20 NL0 = 0x0 NL1 = 0x100 NL2 = 0x200 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go index 6d56d8a059..cbd8ed18b9 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -3,7 +3,7 @@ // +build arm64,darwin -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -980,6 +980,7 @@ const ( NET_RT_MAXID = 0xa NET_RT_STAT = 0x4 NET_RT_TRASH = 0x5 + NFDBITS = 0x20 NL0 = 0x0 NL1 = 0x100 NL2 = 0x200 diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go index bbe6089bb7..6130471748 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -938,6 +938,7 @@ const ( NET_RT_FLAGS = 0x2 NET_RT_IFLIST = 0x3 NET_RT_MAXID = 0x4 + NFDBITS = 0x40 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index d2bbaabc87..b72544fcd2 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -3,7 +3,7 @@ // +build 386,freebsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m32 _const.go package unix @@ -1055,6 +1055,7 @@ const ( NET_RT_IFLIST = 0x3 NET_RT_IFLISTL = 0x5 NET_RT_IFMALIST = 0x4 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index 4f8db783d3..9f382678e5 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -3,7 +3,7 @@ // +build amd64,freebsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -1056,6 +1056,7 @@ const ( NET_RT_IFLIST = 0x3 NET_RT_IFLISTL = 0x5 NET_RT_IFMALIST = 0x4 + NFDBITS = 0x40 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index 53e5de6051..16db56abc4 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -3,7 +3,7 @@ // +build arm,freebsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- _const.go package unix @@ -1063,6 +1063,7 @@ const ( NET_RT_IFLIST = 0x3 NET_RT_IFLISTL = 0x5 NET_RT_IFMALIST = 0x4 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go index d4a192fefe..1a1de34543 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -3,7 +3,7 @@ // +build arm64,freebsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -1056,6 +1056,7 @@ const ( NET_RT_IFLIST = 0x3 NET_RT_IFLISTL = 0x5 NET_RT_IFMALIST = 0x4 + NFDBITS = 0x40 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 9e99d67cb8..fcf5796a01 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -414,6 +543,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -433,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -497,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -585,6 +726,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -850,6 +992,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -948,6 +1091,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -960,6 +1114,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1012,6 +1168,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1052,6 +1222,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1182,6 +1361,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1246,6 +1426,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1487,6 +1671,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1510,6 +1695,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1525,6 +1712,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 @@ -1563,6 +1751,10 @@ const ( PTRACE_SINGLEBLOCK = 0x21 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_SYSEMU = 0x1f PTRACE_SYSEMU_SINGLESTEP = 0x20 PTRACE_TRACEME = 0x0 @@ -1623,7 +1815,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1696,6 +1888,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1720,6 +1913,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1727,7 +1921,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1739,6 +1933,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1747,8 +1942,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1833,6 +2028,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1864,6 +2061,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -1957,6 +2158,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -1966,6 +2168,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2005,6 +2208,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2016,9 +2221,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2060,6 +2273,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2111,6 +2325,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2253,6 +2469,71 @@ const ( TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 TPACKET_ALIGNMENT = 0x10 @@ -2266,7 +2547,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2277,6 +2558,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x400854d5 TUNDETACHFILTER = 0x400854d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x800854db TUNGETIFF = 0x800454d2 @@ -2312,8 +2594,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2462,6 +2746,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2477,6 +2764,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index e3091f1e30..5bcf3dbd75 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -414,6 +543,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -433,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -497,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -585,6 +726,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -850,6 +992,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -948,6 +1091,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -960,6 +1114,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1012,6 +1168,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1052,6 +1222,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1182,6 +1361,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1246,6 +1426,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1487,6 +1671,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1511,6 +1696,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1526,6 +1713,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 @@ -1564,6 +1752,10 @@ const ( PTRACE_SINGLEBLOCK = 0x21 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_SYSEMU = 0x1f PTRACE_SYSEMU_SINGLESTEP = 0x20 PTRACE_TRACEME = 0x0 @@ -1624,7 +1816,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1697,6 +1889,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1721,6 +1914,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1728,7 +1922,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1740,6 +1934,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1748,8 +1943,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1834,6 +2029,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1865,6 +2062,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -1958,6 +2159,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -1967,6 +2169,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2006,6 +2209,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2017,9 +2222,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2061,6 +2274,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2112,6 +2326,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2254,6 +2470,71 @@ const ( TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 TPACKET_ALIGNMENT = 0x10 @@ -2267,7 +2548,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2278,6 +2559,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x801054db TUNGETIFF = 0x800454d2 @@ -2313,8 +2595,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2462,6 +2746,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2477,6 +2764,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index a75dfebcc4..3e02dcff88 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -414,6 +543,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -433,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -497,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +725,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +991,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -947,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -959,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1011,6 +1167,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1220,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1180,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1244,6 +1424,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1669,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1508,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1529,6 +1716,7 @@ const ( PTRACE_GETSIGMASK = 0x420a PTRACE_GETVFPREGS = 0x1b PTRACE_GETWMMXREGS = 0x12 + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x16 PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 @@ -1569,6 +1757,10 @@ const ( PTRACE_SET_SYSCALL = 0x17 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 PT_DATA_ADDR = 0x10004 PT_TEXT_ADDR = 0x10000 @@ -1630,7 +1822,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1703,6 +1895,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1727,6 +1920,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1734,7 +1928,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1746,6 +1940,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1754,8 +1949,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1840,6 +2035,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1871,6 +2068,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -1964,6 +2165,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -1973,6 +2175,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2012,6 +2215,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2023,9 +2228,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2067,6 +2280,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2118,6 +2332,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2260,6 +2476,71 @@ const ( TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 TPACKET_ALIGNMENT = 0x10 @@ -2273,7 +2554,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2284,6 +2565,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x400854d5 TUNDETACHFILTER = 0x400854d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x800854db TUNGETIFF = 0x800454d2 @@ -2319,8 +2601,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2468,6 +2752,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2483,6 +2770,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 393ad7c91b..2293f8bb86 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -415,6 +544,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -434,6 +564,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -499,6 +630,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -507,8 +639,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -522,6 +658,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -530,6 +670,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -587,6 +728,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -852,6 +994,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -950,6 +1093,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -962,6 +1116,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1014,6 +1170,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1053,6 +1223,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1183,6 +1362,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1247,6 +1427,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1488,6 +1672,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1511,6 +1696,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1524,6 +1711,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1556,6 +1744,12 @@ const ( PTRACE_SETSIGMASK = 0x420b PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1614,7 +1808,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1687,6 +1881,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1711,6 +1906,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1718,7 +1914,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1730,6 +1926,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1738,8 +1935,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1824,6 +2021,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1855,6 +2054,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -1948,6 +2151,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -1957,6 +2161,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -1996,6 +2201,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2007,9 +2214,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2052,6 +2267,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2103,6 +2319,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2245,6 +2463,71 @@ const ( TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 TPACKET_ALIGNMENT = 0x10 @@ -2258,7 +2541,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2269,6 +2552,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x801054db TUNGETIFF = 0x800454d2 @@ -2304,8 +2588,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2453,6 +2739,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2468,6 +2757,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index ba1beb9093..57742ea276 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -414,6 +543,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -433,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -497,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +725,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +991,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -947,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -959,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1011,6 +1167,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1220,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1180,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1244,6 +1424,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1669,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1508,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1522,6 +1709,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 PTRACE_GET_WATCH_REGS = 0xd0 @@ -1565,6 +1753,10 @@ const ( PTRACE_SET_WATCH_REGS = 0xd1 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1623,7 +1815,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1696,6 +1888,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1720,6 +1913,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1727,7 +1921,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1739,6 +1933,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1747,8 +1942,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1833,6 +2028,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1864,6 +2061,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x467f SIOCOUTQ = 0x7472 SIOCOUTQNSD = 0x894b @@ -1957,6 +2158,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe @@ -1966,6 +2168,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2005,6 +2208,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_RXQ_OVFL = 0x28 @@ -2016,10 +2221,18 @@ const ( SO_SNDBUFFORCE = 0x1f SO_SNDLOWAT = 0x1003 SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 SO_STYLE = 0x1008 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2061,6 +2274,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2111,6 +2325,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2255,6 +2471,71 @@ const ( TIOCSTI = 0x5472 TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x8000 TPACKET_ALIGNMENT = 0x10 @@ -2268,7 +2549,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2279,6 +2560,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x800854d5 TUNDETACHFILTER = 0x800854d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x400854db TUNGETIFF = 0x400454d2 @@ -2314,8 +2596,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2464,6 +2748,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2479,6 +2766,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index efba3e5c9d..33bfa6cbf0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -414,6 +543,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -433,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -497,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +725,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +991,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -947,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -959,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1011,6 +1167,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1220,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1180,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1244,6 +1424,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1669,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1508,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1522,6 +1709,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 PTRACE_GET_WATCH_REGS = 0xd0 @@ -1565,6 +1753,10 @@ const ( PTRACE_SET_WATCH_REGS = 0xd1 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1623,7 +1815,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1696,6 +1888,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1720,6 +1913,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1727,7 +1921,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1739,6 +1933,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1747,8 +1942,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1833,6 +2028,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1864,6 +2061,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x467f SIOCOUTQ = 0x7472 SIOCOUTQNSD = 0x894b @@ -1957,6 +2158,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe @@ -1966,6 +2168,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2005,6 +2208,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_RXQ_OVFL = 0x28 @@ -2016,10 +2221,18 @@ const ( SO_SNDBUFFORCE = 0x1f SO_SNDLOWAT = 0x1003 SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 SO_STYLE = 0x1008 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2061,6 +2274,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2111,6 +2325,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2255,6 +2471,71 @@ const ( TIOCSTI = 0x5472 TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x8000 TPACKET_ALIGNMENT = 0x10 @@ -2268,7 +2549,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2279,6 +2560,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x401054db TUNGETIFF = 0x400454d2 @@ -2314,8 +2596,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2464,6 +2748,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2479,6 +2766,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index d3f6e90652..89fd414e66 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -414,6 +543,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -433,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -497,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +725,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +991,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -947,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -959,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1011,6 +1167,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1220,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1180,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1244,6 +1424,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1669,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1508,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1522,6 +1709,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 PTRACE_GET_WATCH_REGS = 0xd0 @@ -1565,6 +1753,10 @@ const ( PTRACE_SET_WATCH_REGS = 0xd1 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1623,7 +1815,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1696,6 +1888,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1720,6 +1913,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1727,7 +1921,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1739,6 +1933,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1747,8 +1942,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1833,6 +2028,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1864,6 +2061,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x467f SIOCOUTQ = 0x7472 SIOCOUTQNSD = 0x894b @@ -1957,6 +2158,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe @@ -1966,6 +2168,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2005,6 +2208,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_RXQ_OVFL = 0x28 @@ -2016,10 +2221,18 @@ const ( SO_SNDBUFFORCE = 0x1f SO_SNDLOWAT = 0x1003 SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 SO_STYLE = 0x1008 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2061,6 +2274,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2111,6 +2325,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2255,6 +2471,71 @@ const ( TIOCSTI = 0x5472 TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x8000 TPACKET_ALIGNMENT = 0x10 @@ -2268,7 +2549,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2279,6 +2560,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x401054db TUNGETIFF = 0x400454d2 @@ -2314,8 +2596,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2464,6 +2748,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2479,6 +2766,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 7275cd876b..aabe5e4244 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -414,6 +543,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -433,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -497,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +725,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +991,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -947,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -959,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1011,6 +1167,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1220,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1180,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x20 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1244,6 +1424,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1669,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1508,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1522,6 +1709,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 PTRACE_GET_WATCH_REGS = 0xd0 @@ -1565,6 +1753,10 @@ const ( PTRACE_SET_WATCH_REGS = 0xd1 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1623,7 +1815,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1696,6 +1888,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1720,6 +1913,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1727,7 +1921,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1739,6 +1933,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1747,8 +1942,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1833,6 +2028,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1864,6 +2061,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x467f SIOCOUTQ = 0x7472 SIOCOUTQNSD = 0x894b @@ -1957,6 +2158,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe @@ -1966,6 +2168,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2005,6 +2208,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_RXQ_OVFL = 0x28 @@ -2016,10 +2221,18 @@ const ( SO_SNDBUFFORCE = 0x1f SO_SNDLOWAT = 0x1003 SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 SO_STYLE = 0x1008 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2061,6 +2274,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2111,6 +2325,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2255,6 +2471,71 @@ const ( TIOCSTI = 0x5472 TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x8000 TPACKET_ALIGNMENT = 0x10 @@ -2268,7 +2549,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2279,6 +2560,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x800854d5 TUNDETACHFILTER = 0x800854d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x400854db TUNGETIFF = 0x400454d2 @@ -2314,8 +2596,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2464,6 +2748,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2479,6 +2766,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 7586a134ef..2722791287 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0xff CBAUDEX = 0x0 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x3000 CREAD = 0x800 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x100 CS7 = 0x200 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -414,6 +543,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -433,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -497,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +725,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +991,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -947,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -959,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1011,6 +1167,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1049,6 +1219,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 @@ -1179,6 +1358,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1245,6 +1425,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80000000 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1487,6 +1671,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1510,6 +1695,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1529,6 +1716,7 @@ const ( PTRACE_GETVRREGS = 0x12 PTRACE_GETVSRREGS = 0x1b PTRACE_GET_DEBUGREG = 0x19 + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1568,6 +1756,10 @@ const ( PTRACE_SINGLEBLOCK = 0x100 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_SYSEMU = 0x1d PTRACE_SYSEMU_SINGLESTEP = 0x1e PTRACE_TRACEME = 0x0 @@ -1681,7 +1873,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1754,6 +1946,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1778,6 +1971,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1785,7 +1979,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1797,6 +1991,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1805,8 +2000,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1891,6 +2086,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1922,6 +2119,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x4004667f SIOCOUTQ = 0x40047473 SIOCOUTQNSD = 0x894b @@ -2015,6 +2216,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -2024,6 +2226,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2063,6 +2266,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVTIMEO = 0x12 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x12 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2074,9 +2279,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x11 SO_SNDTIMEO = 0x13 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x13 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2118,6 +2331,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2167,6 +2381,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2315,6 +2531,71 @@ const ( TIOCSTOP = 0x2000746f TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x400000 TPACKET_ALIGNMENT = 0x10 @@ -2328,7 +2609,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2339,6 +2620,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x401054db TUNGETIFF = 0x400454d2 @@ -2374,8 +2656,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2523,6 +2807,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2538,6 +2825,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0xc00 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index b861ec7834..e33be416c7 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0xff CBAUDEX = 0x0 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x3000 CREAD = 0x800 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x100 CS7 = 0x200 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -414,6 +543,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -433,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -497,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +725,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +991,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -947,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -959,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1011,6 +1167,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1049,6 +1219,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 @@ -1179,6 +1358,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1245,6 +1425,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80000000 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1487,6 +1671,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1510,6 +1695,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1529,6 +1716,7 @@ const ( PTRACE_GETVRREGS = 0x12 PTRACE_GETVSRREGS = 0x1b PTRACE_GET_DEBUGREG = 0x19 + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1568,6 +1756,10 @@ const ( PTRACE_SINGLEBLOCK = 0x100 PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_SYSEMU = 0x1d PTRACE_SYSEMU_SINGLESTEP = 0x1e PTRACE_TRACEME = 0x0 @@ -1681,7 +1873,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1754,6 +1946,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1778,6 +1971,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1785,7 +1979,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1797,6 +1991,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1805,8 +2000,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1891,6 +2086,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1922,6 +2119,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x4004667f SIOCOUTQ = 0x40047473 SIOCOUTQNSD = 0x894b @@ -2015,6 +2216,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -2024,6 +2226,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2063,6 +2266,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVTIMEO = 0x12 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x12 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2074,9 +2279,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x11 SO_SNDTIMEO = 0x13 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x13 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2118,6 +2331,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2167,6 +2381,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2315,6 +2531,71 @@ const ( TIOCSTOP = 0x2000746f TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x400000 TPACKET_ALIGNMENT = 0x10 @@ -2328,7 +2609,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2339,6 +2620,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x401054db TUNGETIFF = 0x400454d2 @@ -2374,8 +2656,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2523,6 +2807,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2538,6 +2825,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0xc00 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index a321ec23f4..b9908d3094 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -414,6 +543,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -433,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -497,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +725,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +991,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -947,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -959,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1011,6 +1167,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1220,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1180,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1244,6 +1424,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1669,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1508,6 +1693,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1521,6 +1708,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1553,6 +1741,10 @@ const ( PTRACE_SETSIGMASK = 0x420b PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 QNX4_SUPER_MAGIC = 0x2f QNX6_SUPER_MAGIC = 0x68191122 @@ -1611,7 +1803,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1684,6 +1876,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1708,6 +1901,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1715,7 +1909,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1727,6 +1921,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1735,8 +1930,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1821,6 +2016,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1852,6 +2049,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -1945,6 +2146,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -1954,6 +2156,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -1993,6 +2196,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2004,9 +2209,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2048,6 +2261,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2099,6 +2313,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2241,6 +2457,71 @@ const ( TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 TPACKET_ALIGNMENT = 0x10 @@ -2254,7 +2535,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2265,6 +2546,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x801054db TUNGETIFF = 0x800454d2 @@ -2300,8 +2582,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2449,6 +2733,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2464,6 +2751,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index f6c99164ff..85647f4f79 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -196,11 +196,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +268,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +291,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +348,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +425,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +444,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -334,6 +462,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -414,6 +543,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -433,6 +563,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -497,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +725,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +991,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -947,6 +1090,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -959,6 +1113,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1011,6 +1167,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1220,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1180,6 +1359,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1244,6 +1424,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1669,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1510,6 +1695,8 @@ const ( PTRACE_DETACH = 0x11 PTRACE_DISABLE_TE = 0x5010 PTRACE_ENABLE_TE = 0x5009 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1524,6 +1711,7 @@ const ( PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a PTRACE_GET_LAST_BREAK = 0x5006 + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1567,6 +1755,10 @@ const ( PTRACE_SINGLEBLOCK = 0xc PTRACE_SINGLESTEP = 0x9 PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TE_ABORT_RAND = 0x5011 PTRACE_TRACEME = 0x0 PT_ACR0 = 0x90 @@ -1684,7 +1876,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1757,6 +1949,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1781,6 +1974,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1788,7 +1982,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1800,6 +1994,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1808,8 +2003,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1894,6 +2089,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1925,6 +2122,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -2018,6 +2219,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -2027,6 +2229,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x44 SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2066,6 +2269,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2077,9 +2282,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2121,6 +2334,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2172,6 +2386,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2314,6 +2530,71 @@ const ( TIOCSTI = 0x5412 TIOCSWINSZ = 0x5414 TIOCVHANGUP = 0x5437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 TPACKET_ALIGNMENT = 0x10 @@ -2327,7 +2608,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2338,6 +2619,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x801054db TUNGETIFF = 0x800454d2 @@ -2373,8 +2655,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2522,6 +2806,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2537,6 +2824,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index c1e95e29cb..c0095a5432 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -199,11 +199,71 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TEST_RND_HI32 = 0x4 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -211,8 +271,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -226,20 +294,36 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0xf + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_RTT_CB_FLAG = 0x8 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -267,6 +351,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -305,6 +428,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -323,6 +447,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -337,6 +465,7 @@ const ( DAXFS_MAGIC = 0x64646178 DEBUGFS_MAGIC = 0x64626720 DEVPTS_SUPER_MAGIC = 0x1cd1 + DMA_BUF_MAGIC = 0x444d4142 DT_BLK = 0x6 DT_CHR = 0x2 DT_DIR = 0x4 @@ -418,6 +547,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -437,6 +567,7 @@ const ( ETH_P_IRDA = 0x17 ETH_P_LAT = 0x6004 ETH_P_LINK_CTL = 0x886c + ETH_P_LLDP = 0x88cc ETH_P_LOCALTALK = 0x9 ETH_P_LOOP = 0x60 ETH_P_LOOPBACK = 0x9000 @@ -501,6 +632,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -509,8 +641,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -524,6 +660,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -532,6 +672,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -588,6 +729,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x1 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -853,6 +995,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -951,6 +1094,17 @@ const ( KEXEC_PRESERVE_CONTEXT = 0x2 KEXEC_SEGMENT_MAX = 0x10 KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CAPABILITIES = 0x1f + KEYCTL_CAPS0_BIG_KEY = 0x10 + KEYCTL_CAPS0_CAPABILITIES = 0x1 + KEYCTL_CAPS0_DIFFIE_HELLMAN = 0x4 + KEYCTL_CAPS0_INVALIDATE = 0x20 + KEYCTL_CAPS0_MOVE = 0x80 + KEYCTL_CAPS0_PERSISTENT_KEYRINGS = 0x2 + KEYCTL_CAPS0_PUBLIC_KEY = 0x8 + KEYCTL_CAPS0_RESTRICT_KEYRING = 0x40 + KEYCTL_CAPS1_NS_KEYRING_NAME = 0x1 + KEYCTL_CAPS1_NS_KEY_TAG = 0x2 KEYCTL_CHOWN = 0x4 KEYCTL_CLEAR = 0x7 KEYCTL_DESCRIBE = 0x6 @@ -963,6 +1117,8 @@ const ( KEYCTL_INVALIDATE = 0x15 KEYCTL_JOIN_SESSION_KEYRING = 0x1 KEYCTL_LINK = 0x8 + KEYCTL_MOVE = 0x1e + KEYCTL_MOVE_EXCL = 0x1 KEYCTL_NEGATE = 0xd KEYCTL_PKEY_DECRYPT = 0x1a KEYCTL_PKEY_ENCRYPT = 0x19 @@ -1015,6 +1171,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1054,6 +1224,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 @@ -1184,6 +1363,7 @@ const ( NETLINK_XFRM = 0x6 NETNSA_MAX = 0x5 NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFDBITS = 0x40 NFNETLINK_V0 = 0x0 NFNLGRP_ACCT_QUOTA = 0x8 NFNLGRP_CONNTRACK_DESTROY = 0x3 @@ -1248,6 +1428,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1489,6 +1673,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1512,6 +1697,8 @@ const ( PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 + PTRACE_EVENTMSG_SYSCALL_ENTRY = 0x1 + PTRACE_EVENTMSG_SYSCALL_EXIT = 0x2 PTRACE_EVENT_CLONE = 0x3 PTRACE_EVENT_EXEC = 0x4 PTRACE_EVENT_EXIT = 0x6 @@ -1529,6 +1716,7 @@ const ( PTRACE_GETREGSET = 0x4204 PTRACE_GETSIGINFO = 0x4202 PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_SYSCALL_INFO = 0x420e PTRACE_INTERRUPT = 0x4207 PTRACE_KILL = 0x8 PTRACE_LISTEN = 0x4208 @@ -1568,6 +1756,10 @@ const ( PTRACE_SINGLESTEP = 0x9 PTRACE_SPARC_DETACH = 0xb PTRACE_SYSCALL = 0x18 + PTRACE_SYSCALL_INFO_ENTRY = 0x1 + PTRACE_SYSCALL_INFO_EXIT = 0x2 + PTRACE_SYSCALL_INFO_NONE = 0x0 + PTRACE_SYSCALL_INFO_SECCOMP = 0x3 PTRACE_TRACEME = 0x0 PTRACE_WRITEDATA = 0x11 PTRACE_WRITETEXT = 0x13 @@ -1676,7 +1868,7 @@ const ( RTAX_UNSPEC = 0x0 RTAX_WINDOW = 0x3 RTA_ALIGNTO = 0x4 - RTA_MAX = 0x1d + RTA_MAX = 0x1e RTCF_DIRECTSRC = 0x4000000 RTCF_DOREDIRECT = 0x1000000 RTCF_LOG = 0x2000000 @@ -1749,6 +1941,7 @@ const ( RTM_DELMDB = 0x55 RTM_DELNEIGH = 0x1d RTM_DELNETCONF = 0x51 + RTM_DELNEXTHOP = 0x69 RTM_DELNSID = 0x59 RTM_DELQDISC = 0x25 RTM_DELROUTE = 0x19 @@ -1773,6 +1966,7 @@ const ( RTM_GETNEIGH = 0x1e RTM_GETNEIGHTBL = 0x42 RTM_GETNETCONF = 0x52 + RTM_GETNEXTHOP = 0x6a RTM_GETNSID = 0x5a RTM_GETQDISC = 0x26 RTM_GETROUTE = 0x1a @@ -1780,7 +1974,7 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e - RTM_MAX = 0x67 + RTM_MAX = 0x6b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -1792,6 +1986,7 @@ const ( RTM_NEWNEIGH = 0x1c RTM_NEWNEIGHTBL = 0x40 RTM_NEWNETCONF = 0x50 + RTM_NEWNEXTHOP = 0x68 RTM_NEWNSID = 0x58 RTM_NEWPREFIX = 0x34 RTM_NEWQDISC = 0x24 @@ -1800,8 +1995,8 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x16 - RTM_NR_MSGTYPES = 0x58 + RTM_NR_FAMILIES = 0x17 + RTM_NR_MSGTYPES = 0x5c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 @@ -1886,6 +2081,8 @@ const ( SIOCDRARP = 0x8960 SIOCETHTOOL = 0x8946 SIOCGARP = 0x8954 + SIOCGETLINKNAME = 0x89e0 + SIOCGETNODEID = 0x89e1 SIOCGHWTSTAMP = 0x89b1 SIOCGIFADDR = 0x8915 SIOCGIFBR = 0x8940 @@ -1917,6 +2114,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x4004667f SIOCOUTQ = 0x40047473 SIOCOUTQNSD = 0x894b @@ -2010,6 +2211,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x35 SO_ATTACH_REUSEPORT_EBPF = 0x36 SO_BINDTODEVICE = 0xd + SO_BINDTOIFINDEX = 0x41 SO_BPF_EXTENSIONS = 0x32 SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0x400 @@ -2019,6 +2221,7 @@ const ( SO_DEBUG = 0x1 SO_DETACH_BPF = 0x1b SO_DETACH_FILTER = 0x1b + SO_DETACH_REUSEPORT_BPF = 0x47 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 @@ -2058,6 +2261,8 @@ const ( SO_RCVBUFFORCE = 0x100b SO_RCVLOWAT = 0x800 SO_RCVTIMEO = 0x2000 + SO_RCVTIMEO_NEW = 0x44 + SO_RCVTIMEO_OLD = 0x2000 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_RXQ_OVFL = 0x24 @@ -2069,9 +2274,17 @@ const ( SO_SNDBUFFORCE = 0x100a SO_SNDLOWAT = 0x1000 SO_SNDTIMEO = 0x4000 + SO_SNDTIMEO_NEW = 0x45 + SO_SNDTIMEO_OLD = 0x4000 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x23 + SO_TIMESTAMPING_NEW = 0x43 + SO_TIMESTAMPING_OLD = 0x23 SO_TIMESTAMPNS = 0x21 + SO_TIMESTAMPNS_NEW = 0x42 + SO_TIMESTAMPNS_OLD = 0x21 + SO_TIMESTAMP_NEW = 0x46 + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3f SO_TYPE = 0x1008 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2113,6 +2326,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2163,6 +2377,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2303,6 +2519,71 @@ const ( TIOCSTOP = 0x2000746f TIOCSWINSZ = 0x80087467 TIOCVHANGUP = 0x20005437 + TIPC_ADDR_ID = 0x3 + TIPC_ADDR_MCAST = 0x1 + TIPC_ADDR_NAME = 0x2 + TIPC_ADDR_NAMESEQ = 0x1 + TIPC_CFG_SRV = 0x0 + TIPC_CLUSTER_BITS = 0xc + TIPC_CLUSTER_MASK = 0xfff000 + TIPC_CLUSTER_OFFSET = 0xc + TIPC_CLUSTER_SIZE = 0xfff + TIPC_CONN_SHUTDOWN = 0x5 + TIPC_CONN_TIMEOUT = 0x82 + TIPC_CRITICAL_IMPORTANCE = 0x3 + TIPC_DESTNAME = 0x3 + TIPC_DEST_DROPPABLE = 0x81 + TIPC_ERRINFO = 0x1 + TIPC_ERR_NO_NAME = 0x1 + TIPC_ERR_NO_NODE = 0x3 + TIPC_ERR_NO_PORT = 0x2 + TIPC_ERR_OVERLOAD = 0x4 + TIPC_GROUP_JOIN = 0x87 + TIPC_GROUP_LEAVE = 0x88 + TIPC_GROUP_LOOPBACK = 0x1 + TIPC_GROUP_MEMBER_EVTS = 0x2 + TIPC_HIGH_IMPORTANCE = 0x2 + TIPC_IMPORTANCE = 0x7f + TIPC_LINK_STATE = 0x2 + TIPC_LOW_IMPORTANCE = 0x0 + TIPC_MAX_BEARER_NAME = 0x20 + TIPC_MAX_IF_NAME = 0x10 + TIPC_MAX_LINK_NAME = 0x44 + TIPC_MAX_MEDIA_NAME = 0x10 + TIPC_MAX_USER_MSG_SIZE = 0x101d0 + TIPC_MCAST_BROADCAST = 0x85 + TIPC_MCAST_REPLICAST = 0x86 + TIPC_MEDIUM_IMPORTANCE = 0x1 + TIPC_NODEID_LEN = 0x10 + TIPC_NODE_BITS = 0xc + TIPC_NODE_MASK = 0xfff + TIPC_NODE_OFFSET = 0x0 + TIPC_NODE_RECVQ_DEPTH = 0x83 + TIPC_NODE_SIZE = 0xfff + TIPC_NODE_STATE = 0x0 + TIPC_OK = 0x0 + TIPC_PUBLISHED = 0x1 + TIPC_RESERVED_TYPES = 0x40 + TIPC_RETDATA = 0x2 + TIPC_SERVICE_ADDR = 0x2 + TIPC_SERVICE_RANGE = 0x1 + TIPC_SOCKET_ADDR = 0x3 + TIPC_SOCK_RECVQ_DEPTH = 0x84 + TIPC_SOCK_RECVQ_USED = 0x89 + TIPC_SRC_DROPPABLE = 0x80 + TIPC_SUBSCR_TIMEOUT = 0x3 + TIPC_SUB_CANCEL = 0x4 + TIPC_SUB_PORTS = 0x1 + TIPC_SUB_SERVICE = 0x2 + TIPC_TOP_SRV = 0x1 + TIPC_WAIT_FOREVER = 0xffffffff + TIPC_WITHDRAWN = 0x2 + TIPC_ZONE_BITS = 0x8 + TIPC_ZONE_CLUSTER_MASK = 0xfffff000 + TIPC_ZONE_MASK = 0xff000000 + TIPC_ZONE_OFFSET = 0x18 + TIPC_ZONE_SCOPE = 0x1 + TIPC_ZONE_SIZE = 0xff TMPFS_MAGIC = 0x1021994 TOSTOP = 0x100 TPACKET_ALIGNMENT = 0x10 @@ -2316,7 +2597,7 @@ const ( TP_STATUS_LOSING = 0x4 TP_STATUS_SENDING = 0x2 TP_STATUS_SEND_REQUEST = 0x1 - TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_RAW_HARDWARE = 0x80000000 TP_STATUS_TS_SOFTWARE = 0x20000000 TP_STATUS_TS_SYS_HARDWARE = 0x40000000 TP_STATUS_USER = 0x1 @@ -2327,6 +2608,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x401054db TUNGETIFF = 0x400454d2 @@ -2362,8 +2644,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2511,6 +2795,9 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_OPTIONS = 0x8 + XDP_OPTIONS_ZEROCOPY = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 @@ -2526,6 +2813,7 @@ const ( XENFS_SUPER_MAGIC = 0xabba1974 XFS_SUPER_MAGIC = 0x58465342 XTABS = 0x1800 + Z3FOLD_MAGIC = 0x33 ZSMALLOC_MAGIC = 0x58295829 __TIOCFLUSH = 0x80047410 ) diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go index 78cc04ea6d..96b9b8ab30 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -3,7 +3,7 @@ // +build 386,netbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m32 _const.go package unix @@ -1085,6 +1085,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_OIFLIST = 0x4 NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go index 92185e693f..ed522a84e8 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -3,7 +3,7 @@ // +build amd64,netbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -1075,6 +1075,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_OIFLIST = 0x4 NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go index 373ad4543d..c8d36fe998 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -3,7 +3,7 @@ // +build arm,netbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -marm _const.go package unix @@ -1065,6 +1065,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_OIFLIST = 0x4 NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go index fb6c60441d..f1c146a74c 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go @@ -3,7 +3,7 @@ // +build arm64,netbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -1075,6 +1075,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_OIFLIST = 0x4 NET_RT_OOIFLIST = 0x3 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go index d8be045189..5402bd55ce 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -3,7 +3,7 @@ // +build 386,openbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m32 _const.go package unix @@ -881,14 +881,15 @@ const ( MADV_SPACEAVAIL = 0x5 MADV_WILLNEED = 0x3 MAP_ANON = 0x1000 - MAP_COPY = 0x4 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 - MAP_FLAGMASK = 0x1ff7 - MAP_HASSEMAPHORE = 0x200 - MAP_INHERIT = 0x80 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 MAP_INHERIT_COPY = 0x1 - MAP_INHERIT_DONATE_COPY = 0x3 MAP_INHERIT_NONE = 0x2 MAP_INHERIT_SHARE = 0x0 MAP_NOEXTEND = 0x100 @@ -896,7 +897,8 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x20 MAP_SHARED = 0x1 - MAP_TRYFIXED = 0x400 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MNT_ASYNC = 0x40 @@ -946,6 +948,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_STATS = 0x4 NET_RT_TABLE = 0x5 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go index 1f9e8a29ea..ffaf2d2f9f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -3,7 +3,7 @@ // +build amd64,openbsd -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -920,10 +920,11 @@ const ( MADV_WILLNEED = 0x3 MAP_ANON = 0x1000 MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 - MAP_FLAGMASK = 0x7ff7 + MAP_FLAGMASK = 0xfff7 MAP_HASSEMAPHORE = 0x0 MAP_INHERIT = 0x0 MAP_INHERIT_COPY = 0x1 @@ -990,6 +991,7 @@ const ( NET_RT_MAXID = 0x7 NET_RT_STATS = 0x4 NET_RT_TABLE = 0x5 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 NOTE_ATTRIB = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go index 79d5695c37..7aa796a642 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -1,11 +1,11 @@ // mkerrors.sh // Code generated by the command above; see README.md. DO NOT EDIT. -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs -- _const.go - // +build arm,openbsd +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- _const.go + package unix import "syscall" @@ -881,10 +881,11 @@ const ( MADV_WILLNEED = 0x3 MAP_ANON = 0x1000 MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 MAP_COPY = 0x2 MAP_FILE = 0x0 MAP_FIXED = 0x10 - MAP_FLAGMASK = 0x3ff7 + MAP_FLAGMASK = 0xfff7 MAP_HASSEMAPHORE = 0x0 MAP_INHERIT = 0x0 MAP_INHERIT_COPY = 0x1 @@ -896,6 +897,7 @@ const ( MAP_PRIVATE = 0x2 MAP_RENAME = 0x0 MAP_SHARED = 0x1 + MAP_STACK = 0x4000 MAP_TRYFIXED = 0x0 MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 @@ -947,6 +949,7 @@ const ( NET_RT_MAXID = 0x6 NET_RT_STATS = 0x4 NET_RT_TABLE = 0x5 + NFDBITS = 0x20 NOFLSH = 0x80000000 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go new file mode 100644 index 0000000000..1792d3f13e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go @@ -0,0 +1,1790 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x8 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NFDBITS = 0x20 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0186941 + SIOCBRDGGFD = 0xc0186952 + SIOCBRDGGHT = 0xc0186951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0186953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0186950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0186946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80186940 + SIOCBRDGSFD = 0x80186952 + SIOCBRDGSHT = 0x80186951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80186953 + SIOCBRDGSPRI = 0x80186950 + SIOCBRDGSPROTO = 0x8018695a + SIOCBRDGSTO = 0x80186945 + SIOCBRDGSTXHC = 0x80186959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SIOCSWGDPID = 0xc018695b + SIOCSWGMAXFLOW = 0xc0186960 + SIOCSWGMAXGROUP = 0xc018695d + SIOCSWSDPID = 0x8018695c + SIOCSWSPORTNO = 0xc060695f + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go index 22569db31d..46e054ccb0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -3,7 +3,7 @@ // +build amd64,solaris -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -m64 _const.go package unix @@ -666,6 +666,7 @@ const ( M_FLUSH = 0x86 NAME_MAX = 0xff NEWDEV = 0x1 + NFDBITS = 0x40 NL0 = 0x0 NL1 = 0x100 NLDLY = 0x100 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go index 4a9e99a0e1..ed657ff1bc 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -859,7 +859,7 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fstat(fd int, stat *Stat_t) (err error) { +func fstat(fd int, stat *Stat_t) (err error) { r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) if r0 == -1 && er != nil { err = er @@ -869,7 +869,7 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { +func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { _p0 := uintptr(unsafe.Pointer(C.CString(path))) r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags)) if r0 == -1 && er != nil { @@ -953,7 +953,7 @@ func Listen(s int, n int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Lstat(path string, stat *Stat_t) (err error) { +func lstat(path string, stat *Stat_t) (err error) { _p0 := uintptr(unsafe.Pointer(C.CString(path))) r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) if r0 == -1 && er != nil { @@ -1071,9 +1071,9 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Stat(path string, stat *Stat_t) (err error) { +func stat(path string, statptr *Stat_t) (err error) { _p0 := uintptr(unsafe.Pointer(C.CString(path))) - r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(statptr)))) if r0 == -1 && er != nil { err = er } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go index c3371ddc2f..664b293b43 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -803,7 +803,7 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fstat(fd int, stat *Stat_t) (err error) { +func fstat(fd int, stat *Stat_t) (err error) { _, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat))) if e1 != 0 { err = errnoErr(e1) @@ -813,7 +813,7 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { +func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -905,7 +905,7 @@ func Listen(s int, n int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Lstat(path string, stat *Stat_t) (err error) { +func lstat(path string, stat *Stat_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1023,13 +1023,13 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Stat(path string, stat *Stat_t) (err error) { +func stat(path string, statptr *Stat_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + _, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statptr))) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go index 4eda723234..4b3a8ad7be 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go @@ -941,8 +941,8 @@ func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { - r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, stat, 0, 0, 0, 0) +func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, statptr, 0, 0, 0, 0) return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go index e5c4cbdd6c..cde4dbc5f5 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go @@ -783,8 +783,8 @@ func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { - r1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(stat))) +func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(statptr))) e1 = syscall.GetErrno() return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go index c4ec7ff87c..b42c1cbadd 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -l32 -tags darwin,386,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go +// go run mksyscall.go -l32 -tags darwin,386,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.1_11.go syscall_darwin_386.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build darwin,386,!go1.12 @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,16 +361,6 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -1352,8 +1326,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -1691,6 +1666,49 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) sec = int32(r0) @@ -1738,23 +1756,6 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags)) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go new file mode 100644 index 0000000000..e263fbdb8b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.go @@ -0,0 +1,41 @@ +// go run mksyscall.go -l32 -tags darwin,386,go1.13 syscall_darwin.1_13.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,386,go1.13 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_closedir_trampoline() + +//go:linkname libc_closedir libc_closedir +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +func libc_readdir_r_trampoline() + +//go:linkname libc_readdir_r libc_readdir_r +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s new file mode 100644 index 0000000000..00da1ebfca --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s @@ -0,0 +1,12 @@ +// go run mkasm_darwin.go 386 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.13 + +#include "textflag.h" +TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go index 23346dc68f..603c9f6eb1 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -304,27 +304,6 @@ func libc_kevent_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___sysctl_trampoline() - -//go:linkname libc___sysctl libc___sysctl -//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -527,21 +506,6 @@ func libc_munlockall_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_ptrace_trampoline() - -//go:linkname libc_ptrace libc_ptrace -//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -943,6 +907,21 @@ func libc_chroot_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_clock_gettime_trampoline() + +//go:linkname libc_clock_gettime libc_clock_gettime +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Close(fd int) (err error) { _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) if e1 != 0 { @@ -1872,8 +1851,9 @@ func libc_lseek_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -2341,6 +2321,42 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) sec = int32(r0) @@ -2408,28 +2424,6 @@ func libc_fstatfs64_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := syscall_syscall6(funcPC(libc___getdirentries64_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___getdirentries64_trampoline() - -//go:linkname libc___getdirentries64 libc___getdirentries64 -//go:cgo_import_dynamic libc___getdirentries64 __getdirentries64 "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s index 37b85b4f61..ece6f67c26 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s @@ -40,8 +40,6 @@ TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) -TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 - JMP libc___sysctl(SB) TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 @@ -64,8 +62,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) -TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 - JMP libc_ptrace(SB) TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 JMP libc_getattrlist(SB) TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 @@ -108,6 +104,8 @@ TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 JMP libc_chown(SB) TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 JMP libc_chroot(SB) +TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 JMP libc_close(SB) TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 @@ -264,6 +262,10 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_mmap(SB) TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_munmap(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 JMP libc_gettimeofday(SB) TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0 @@ -272,8 +274,6 @@ TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0 JMP libc_fstatat64(SB) TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0 JMP libc_fstatfs64(SB) -TEXT ·libc___getdirentries64_trampoline(SB),NOSPLIT,$0-0 - JMP libc___getdirentries64(SB) TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0 JMP libc_getfsstat64(SB) TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go index 2581e8960f..38b7cbab38 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -tags darwin,amd64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// go run mksyscall.go -tags darwin,amd64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.1_11.go syscall_darwin_amd64.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build darwin,amd64,!go1.12 @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,16 +361,6 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -1352,8 +1326,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -1691,6 +1666,49 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) sec = int64(r0) @@ -1738,23 +1756,6 @@ func Fstatfs(fd int, stat *Statfs_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags)) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go new file mode 100644 index 0000000000..314042a9d4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.go @@ -0,0 +1,41 @@ +// go run mksyscall.go -tags darwin,amd64,go1.13 syscall_darwin.1_13.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,amd64,go1.13 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_closedir_trampoline() + +//go:linkname libc_closedir libc_closedir +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +func libc_readdir_r_trampoline() + +//go:linkname libc_readdir_r libc_readdir_r +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s new file mode 100644 index 0000000000..d671e8311f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s @@ -0,0 +1,12 @@ +// go run mkasm_darwin.go amd64 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.13 + +#include "textflag.h" +TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index c142e33e92..fda478e8bd 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -304,27 +304,6 @@ func libc_kevent_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___sysctl_trampoline() - -//go:linkname libc___sysctl libc___sysctl -//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -527,21 +506,6 @@ func libc_munlockall_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_ptrace_trampoline() - -//go:linkname libc_ptrace libc_ptrace -//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -1887,8 +1851,9 @@ func libc_lseek_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } @@ -2356,6 +2321,42 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) sec = int64(r0) @@ -2423,28 +2424,6 @@ func libc_fstatfs64_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := syscall_syscall6(funcPC(libc___getdirentries64_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___getdirentries64_trampoline() - -//go:linkname libc___getdirentries64 libc___getdirentries64 -//go:cgo_import_dynamic libc___getdirentries64 __getdirentries64 "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) n = int(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index 1a3915197d..7c4d590163 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -40,8 +40,6 @@ TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) -TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 - JMP libc___sysctl(SB) TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 @@ -64,8 +62,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) -TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 - JMP libc_ptrace(SB) TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 JMP libc_getattrlist(SB) TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 @@ -266,6 +262,10 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_mmap(SB) TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_munmap(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 JMP libc_gettimeofday(SB) TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0 @@ -274,8 +274,6 @@ TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0 JMP libc_fstatat64(SB) TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0 JMP libc_fstatfs64(SB) -TEXT ·libc___getdirentries64_trampoline(SB),NOSPLIT,$0-0 - JMP libc___getdirentries64(SB) TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0 JMP libc_getfsstat64(SB) TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go index f8caecef02..abb69183a3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -l32 -tags darwin,arm,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go +// go run mksyscall.go -l32 -tags darwin,arm,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.1_11.go syscall_darwin_arm.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build darwin,arm,!go1.12 @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,16 +361,6 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -1352,8 +1326,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go new file mode 100644 index 0000000000..f519ce9afb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.go @@ -0,0 +1,41 @@ +// go run mksyscall.go -l32 -tags darwin,arm,go1.13 syscall_darwin.1_13.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm,go1.13 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_closedir_trampoline() + +//go:linkname libc_closedir libc_closedir +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +func libc_readdir_r_trampoline() + +//go:linkname libc_readdir_r libc_readdir_r +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s new file mode 100644 index 0000000000..488e55707a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s @@ -0,0 +1,12 @@ +// go run mkasm_darwin.go arm +// Code generated by the command above; DO NOT EDIT. + +// +build go1.13 + +#include "textflag.h" +TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go index 01cffbf46c..163b3912d3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -304,27 +304,6 @@ func libc_kevent_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___sysctl_trampoline() - -//go:linkname libc___sysctl libc___sysctl -//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -527,21 +506,6 @@ func libc_munlockall_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_ptrace_trampoline() - -//go:linkname libc_ptrace libc_ptrace -//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -943,6 +907,21 @@ func libc_chroot_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_clock_gettime_trampoline() + +//go:linkname libc_clock_gettime libc_clock_gettime +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Close(fd int) (err error) { _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) if e1 != 0 { @@ -1872,8 +1851,9 @@ func libc_lseek_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s index 994056f359..5bebb1bbd0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s @@ -40,8 +40,6 @@ TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) -TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 - JMP libc___sysctl(SB) TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 @@ -64,8 +62,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) -TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 - JMP libc_ptrace(SB) TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 JMP libc_getattrlist(SB) TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 @@ -108,6 +104,8 @@ TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 JMP libc_chown(SB) TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 JMP libc_chroot(SB) +TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 JMP libc_close(SB) TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go index 3fd0f3c854..b75c11d41e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go @@ -1,4 +1,4 @@ -// go run mksyscall.go -tags darwin,arm64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// go run mksyscall.go -tags darwin,arm64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.1_11.go syscall_darwin_arm64.go // Code generated by the command above; see README.md. DO NOT EDIT. // +build darwin,arm64,!go1.12 @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,16 +361,6 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -1352,8 +1326,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go new file mode 100644 index 0000000000..d64e6c806f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.go @@ -0,0 +1,41 @@ +// go run mksyscall.go -tags darwin,arm64,go1.13 syscall_darwin.1_13.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm64,go1.13 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func closedir(dir uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_closedir_trampoline), uintptr(dir), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_closedir_trampoline() + +//go:linkname libc_closedir libc_closedir +//go:cgo_import_dynamic libc_closedir closedir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) { + r0, _, _ := syscall_syscall(funcPC(libc_readdir_r_trampoline), uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result))) + res = Errno(r0) + return +} + +func libc_readdir_r_trampoline() + +//go:linkname libc_readdir_r libc_readdir_r +//go:cgo_import_dynamic libc_readdir_r readdir_r "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s new file mode 100644 index 0000000000..b29dabb0f0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s @@ -0,0 +1,12 @@ +// go run mkasm_darwin.go arm64 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.13 + +#include "textflag.h" +TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fdopendir(SB) +TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_closedir(SB) +TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readdir_r(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 8f2691deea..7c5bd510e5 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -304,27 +304,6 @@ func libc_kevent_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc___sysctl_trampoline() - -//go:linkname libc___sysctl libc___sysctl -//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -527,21 +506,6 @@ func libc_munlockall_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_ptrace_trampoline() - -//go:linkname libc_ptrace libc_ptrace -//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -943,6 +907,21 @@ func libc_chroot_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_clock_gettime_trampoline() + +//go:linkname libc_clock_gettime libc_clock_gettime +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Close(fd int) (err error) { _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) if e1 != 0 { @@ -1872,8 +1851,9 @@ func libc_lseek_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index 61dc0d4c12..96ab9877eb 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -40,8 +40,6 @@ TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 JMP libc_sendmsg(SB) TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 JMP libc_kevent(SB) -TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 - JMP libc___sysctl(SB) TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 JMP libc_utimes(SB) TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 @@ -64,8 +62,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) -TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 - JMP libc_ptrace(SB) TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 JMP libc_getattrlist(SB) TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 @@ -108,6 +104,8 @@ TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 JMP libc_chown(SB) TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 JMP libc_chroot(SB) +TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 JMP libc_close(SB) TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go index ae9f1a21e6..df199b3454 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -749,6 +749,23 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -1255,8 +1272,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index 80903e47b6..e68185f1e3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -387,6 +387,16 @@ func pipe2(p *[2]_C_int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -1019,7 +1029,7 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1596,8 +1606,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index cd250ff0e2..2f77f93c4e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { @@ -414,6 +414,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1019,7 +1029,7 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1596,8 +1606,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index 290a9c2cb0..e9a12c9d93 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { @@ -414,6 +414,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1019,7 +1029,7 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1596,8 +1606,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go index c6df9d2e8f..27ab0fbda0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { @@ -414,6 +414,16 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Access(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1019,7 +1029,7 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1596,8 +1606,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index feb3c03933..fe5d462e49 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index fa0cb252a9..536abcea33 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index daec1d5d2c..37823cd6bf 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -2366,3 +2420,18 @@ func armSyncFileRange(fd int, flags int, off int64, n int64) (err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index ad9820b598..794f61264a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go index c82ce7d299..1b34b550c3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index d1b77c1934..5714e25922 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index b8e45f98c7..88a6b3362f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go index e26c748d4e..c09dbe3454 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index 0a958ca0b3..42f6c21039 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index 658f361e77..de2cd8db91 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go index daff300399..d51bf07fc5 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index caf6ea8663..1e3a3cb732 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go index 369a04b57d..3c97008cd0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -305,6 +305,36 @@ func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(restriction) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlRestrictKeyring(cmd int, arg2 int) (err error) { + _, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -408,6 +438,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1431,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go index 642db7670a..5ade42cce0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (fd1 int, fd2 int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) fd1 = int(r0) @@ -389,7 +389,7 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1498,8 +1498,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go index 59585fee35..3e0bbc5f10 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (fd1 int, fd2 int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) fd1 = int(r0) @@ -389,7 +389,7 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1498,8 +1498,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go index 6ec31434b2..cb0af13a3c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (fd1 int, fd2 int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) fd1 = int(r0) @@ -389,7 +389,7 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1498,8 +1498,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go index 603d144334..6fd48d3dcd 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe() (fd1 int, fd2 int, err error) { r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) fd1 = int(r0) @@ -389,7 +389,7 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1498,8 +1498,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index 6a489fac0a..2938e4124e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { @@ -387,7 +387,7 @@ func pipe(p *[2]_C_int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1304,8 +1304,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index 30cba4347c..22b79ab0e2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { @@ -387,7 +387,7 @@ func pipe(p *[2]_C_int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1304,8 +1304,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index fa1beda33e..cb921f37af 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -214,22 +214,6 @@ func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, ne // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func utimes(path string, timeval *[2]Timeval) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -377,6 +361,22 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { @@ -387,7 +387,7 @@ func pipe(p *[2]_C_int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1304,8 +1304,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = errnoErr(e1) } diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go new file mode 100644 index 0000000000..5a74380355 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -0,0 +1,1693 @@ +// go run mksyscall.go -openbsd -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index 5f614760c6..a96165d4bf 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -1478,8 +1478,9 @@ func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { - _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) if e1 != 0 { err = e1 } diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go index b005031abe..37dcc74c2d 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -1,6 +1,8 @@ // mksysctl_openbsd.pl // Code generated by the command above; DO NOT EDIT. +// +build 386,openbsd + package unix type mibentry struct { diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go index d014451c9d..fe6caa6eb7 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -1,4 +1,4 @@ -// mksysctl_openbsd.pl +// go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. // +build amd64,openbsd diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go index b005031abe..6eb8c0b086 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -1,6 +1,8 @@ -// mksysctl_openbsd.pl +// go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +// +build arm,openbsd + package unix type mibentry struct { diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go new file mode 100644 index 0000000000..ba4304fd23 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go @@ -0,0 +1,275 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +// +build arm64,openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go index 55c3a32945..9474974b65 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. // +build 386,freebsd @@ -118,8 +118,6 @@ const ( SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } SYS_SETFIB = 175 // { int setfib(int fibnum); } SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } SYS_SETGID = 181 // { int setgid(gid_t gid); } @@ -133,10 +131,6 @@ const ( SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -164,6 +158,7 @@ const ( SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } @@ -197,13 +192,10 @@ const ( SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } - SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } - SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } - SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } - SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } @@ -236,7 +228,7 @@ const ( SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } @@ -258,7 +250,7 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } @@ -293,8 +285,6 @@ const ( SYS_THR_EXIT = 431 // { void thr_exit(long *state); } SYS_THR_SELF = 432 // { int thr_self(long *id); } SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } @@ -400,4 +390,7 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } + SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go index b39be6cb8f..48a7beae7b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,freebsd @@ -118,8 +118,6 @@ const ( SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } SYS_SETFIB = 175 // { int setfib(int fibnum); } SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } SYS_SETGID = 181 // { int setgid(gid_t gid); } @@ -133,10 +131,6 @@ const ( SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -164,6 +158,7 @@ const ( SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } @@ -197,13 +192,10 @@ const ( SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } - SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } - SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } - SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } - SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } @@ -236,7 +228,7 @@ const ( SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } @@ -258,7 +250,7 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } @@ -293,8 +285,6 @@ const ( SYS_THR_EXIT = 431 // { void thr_exit(long *state); } SYS_THR_SELF = 432 // { int thr_self(long *id); } SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } @@ -400,4 +390,7 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } + SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go index 44ffd4ce5e..4a6dfd4a74 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,freebsd @@ -118,8 +118,6 @@ const ( SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } SYS_SETFIB = 175 // { int setfib(int fibnum); } SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } SYS_SETGID = 181 // { int setgid(gid_t gid); } @@ -133,10 +131,6 @@ const ( SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -164,6 +158,7 @@ const ( SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } @@ -197,13 +192,10 @@ const ( SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } - SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } - SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } - SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } - SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } @@ -236,7 +228,7 @@ const ( SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } @@ -258,7 +250,7 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } @@ -293,8 +285,6 @@ const ( SYS_THR_EXIT = 431 // { void thr_exit(long *state); } SYS_THR_SELF = 432 // { int thr_self(long *id); } SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } @@ -400,4 +390,7 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } + SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go index 9f21e9550e..3e51af8edd 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. // +build arm64,freebsd @@ -7,13 +7,13 @@ package unix const ( // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int - SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void SYS_FORK = 2 // { int fork(void); } - SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ - SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } SYS_CLOSE = 6 // { int close(int fd); } - SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } SYS_LINK = 9 // { int link(char *path, char *link); } SYS_UNLINK = 10 // { int unlink(char *path); } SYS_CHDIR = 12 // { int chdir(char *path); } @@ -21,20 +21,20 @@ const ( SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } SYS_CHMOD = 15 // { int chmod(char *path, int mode); } SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int SYS_GETPID = 20 // { pid_t getpid(void); } - SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } SYS_SETUID = 23 // { int setuid(uid_t uid); } SYS_GETUID = 24 // { uid_t getuid(void); } SYS_GETEUID = 25 // { uid_t geteuid(void); } - SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ - SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ - SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ - SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ - SYS_ACCEPT = 30 // { int accept(int s, \ - SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ - SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } SYS_ACCESS = 33 // { int access(char *path, int amode); } SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } @@ -42,56 +42,57 @@ const ( SYS_KILL = 37 // { int kill(int pid, int signum); } SYS_GETPPID = 39 // { pid_t getppid(void); } SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } SYS_GETEGID = 43 // { gid_t getegid(void); } - SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ - SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } SYS_GETGID = 47 // { gid_t getgid(void); } - SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } SYS_ACCT = 51 // { int acct(char *path); } - SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ - SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } SYS_REBOOT = 55 // { int reboot(int opt); } SYS_REVOKE = 56 // { int revoke(char *path); } SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } - SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ - SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int SYS_CHROOT = 61 // { int chroot(char *path); } - SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } SYS_VFORK = 66 // { int vfork(void); } SYS_SBRK = 69 // { int sbrk(int incr); } SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ - SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ - SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ - SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ - SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } SYS_GETPGRP = 81 // { int getpgrp(void); } SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } - SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } SYS_SWAPON = 85 // { int swapon(char *name); } - SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } - SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } SYS_FSYNC = 95 // { int fsync(int fd); } - SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ - SYS_SOCKET = 97 // { int socket(int domain, int type, \ - SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } - SYS_BIND = 104 // { int bind(int s, caddr_t name, \ - SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } SYS_LISTEN = 106 // { int listen(int s, int backlog); } - SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ - SYS_GETRUSAGE = 117 // { int getrusage(int who, \ - SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ - SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ - SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ - SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } @@ -99,24 +100,24 @@ const ( SYS_RENAME = 128 // { int rename(char *from, char *to); } SYS_FLOCK = 131 // { int flock(int fd, int how); } SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } - SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } - SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } SYS_RMDIR = 137 // { int rmdir(char *path); } - SYS_UTIMES = 138 // { int utimes(char *path, \ - SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } SYS_SETSID = 147 // { int setsid(void); } - SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } - SYS_LGETFH = 160 // { int lgetfh(char *fname, \ - SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } - SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ - SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, \ - SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, \ - SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, \ + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } SYS_SETFIB = 175 // { int setfib(int fibnum); } SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } SYS_SETGID = 181 // { int setgid(gid_t gid); } @@ -127,269 +128,269 @@ const ( SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } - SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ - SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ - SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } SYS_UNDELETE = 205 // { int undelete(char *path); } SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } SYS_GETPGID = 207 // { int getpgid(pid_t pid); } - SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ - SYS_SEMGET = 221 // { int semget(key_t key, int nsems, \ - SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } - SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, \ - SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, \ - SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, \ + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } - SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, \ - SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ - SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ - SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ - SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } - SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ - SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } - SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ - SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, \ - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } - SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } SYS_ISSETUGID = 253 // { int issetugid(void); } SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } - SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, \ - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } - SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } - SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ - SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ - SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } SYS_MODFNEXT = 302 // { int modfnext(int modid); } SYS_MODFIND = 303 // { int modfind(const char *name); } SYS_KLDLOAD = 304 // { int kldload(const char *file); } SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } SYS_KLDFIND = 306 // { int kldfind(const char *file); } SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } SYS_GETSID = 310 // { int getsid(pid_t pid); } - SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ - SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } - SYS_AIO_SUSPEND = 315 // { int aio_suspend( \ - SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, \ + SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } - SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ - SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ - SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } SYS_SCHED_YIELD = 331 // { int sched_yield (void); } SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } - SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } - SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } SYS_JAIL = 338 // { int jail(struct jail *jail); } - SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } - SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ - SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ - SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ - SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ - SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ - SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ - SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ - SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ - SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ - SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ - SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ - SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ - SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( \ - SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ - SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ - SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ - SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } SYS___SETUGID = 374 // { int __setugid(int flag); } SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } - SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } - SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ - SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ - SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ - SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ - SYS_KENV = 390 // { int kenv(int what, const char *name, \ - SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ - SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ - SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ - SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ - SYS_STATFS = 396 // { int statfs(char *path, \ + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } - SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, \ - SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, \ + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } - SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ - SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ - SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ - SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ - SYS_SIGACTION = 416 // { int sigaction(int sig, \ - SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( \ - SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } SYS_SWAPOFF = 424 // { int swapoff(const char *name); } - SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ - SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ - SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ - SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ - SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ - SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } SYS_THR_EXIT = 431 // { void thr_exit(long *state); } SYS_THR_SELF = 432 // { int thr_self(long *id); } SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } - SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ - SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, \ - SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } SYS_THR_WAKE = 443 // { int thr_wake(long id); } SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } - SYS_AUDIT = 445 // { int audit(const void *record, \ - SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } SYS_GETAUID = 447 // { int getauid(uid_t *auid); } SYS_SETAUID = 448 // { int setauid(uid_t *auid); } SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } SYS_AUDITCTL = 453 // { int auditctl(char *path); } - SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ - SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } - SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, \ - SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, \ - SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, \ - SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, \ - SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, \ + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } - SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } - SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ - SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ - SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ - SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ - SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ - SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } - SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } - SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ - SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ - SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ - SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ - SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ - SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ - SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ - SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ - SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ - SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ - SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ - SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ - SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } - SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ - SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } - SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, \ - SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, \ - SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, \ + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } - SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } SYS_CAP_ENTER = 516 // { int cap_enter(void); } SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } - SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ - SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } - SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ - SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ - SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ - SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ - SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ - SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ - SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ - SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ - SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ - SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ - SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ - SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ - SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ - SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ - SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ - SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ - SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } - SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ - SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ - SYS_FUTIMENS = 546 // { int futimens(int fd, \ - SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ - SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, \ - SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, \ + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } + SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } SYS_FDATASYNC = 550 // { int fdatasync(int fd); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index 8d17873de0..7aae554f21 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -6,387 +6,429 @@ package unix const ( - SYS_RESTART_SYSCALL = 0 - SYS_EXIT = 1 - SYS_FORK = 2 - SYS_READ = 3 - SYS_WRITE = 4 - SYS_OPEN = 5 - SYS_CLOSE = 6 - SYS_WAITPID = 7 - SYS_CREAT = 8 - SYS_LINK = 9 - SYS_UNLINK = 10 - SYS_EXECVE = 11 - SYS_CHDIR = 12 - SYS_TIME = 13 - SYS_MKNOD = 14 - SYS_CHMOD = 15 - SYS_LCHOWN = 16 - SYS_BREAK = 17 - SYS_OLDSTAT = 18 - SYS_LSEEK = 19 - SYS_GETPID = 20 - SYS_MOUNT = 21 - SYS_UMOUNT = 22 - SYS_SETUID = 23 - SYS_GETUID = 24 - SYS_STIME = 25 - SYS_PTRACE = 26 - SYS_ALARM = 27 - SYS_OLDFSTAT = 28 - SYS_PAUSE = 29 - SYS_UTIME = 30 - SYS_STTY = 31 - SYS_GTTY = 32 - SYS_ACCESS = 33 - SYS_NICE = 34 - SYS_FTIME = 35 - SYS_SYNC = 36 - SYS_KILL = 37 - SYS_RENAME = 38 - SYS_MKDIR = 39 - SYS_RMDIR = 40 - SYS_DUP = 41 - SYS_PIPE = 42 - SYS_TIMES = 43 - SYS_PROF = 44 - SYS_BRK = 45 - SYS_SETGID = 46 - SYS_GETGID = 47 - SYS_SIGNAL = 48 - SYS_GETEUID = 49 - SYS_GETEGID = 50 - SYS_ACCT = 51 - SYS_UMOUNT2 = 52 - SYS_LOCK = 53 - SYS_IOCTL = 54 - SYS_FCNTL = 55 - SYS_MPX = 56 - SYS_SETPGID = 57 - SYS_ULIMIT = 58 - SYS_OLDOLDUNAME = 59 - SYS_UMASK = 60 - SYS_CHROOT = 61 - SYS_USTAT = 62 - SYS_DUP2 = 63 - SYS_GETPPID = 64 - SYS_GETPGRP = 65 - SYS_SETSID = 66 - SYS_SIGACTION = 67 - SYS_SGETMASK = 68 - SYS_SSETMASK = 69 - SYS_SETREUID = 70 - SYS_SETREGID = 71 - SYS_SIGSUSPEND = 72 - SYS_SIGPENDING = 73 - SYS_SETHOSTNAME = 74 - SYS_SETRLIMIT = 75 - SYS_GETRLIMIT = 76 - SYS_GETRUSAGE = 77 - SYS_GETTIMEOFDAY = 78 - SYS_SETTIMEOFDAY = 79 - SYS_GETGROUPS = 80 - SYS_SETGROUPS = 81 - SYS_SELECT = 82 - SYS_SYMLINK = 83 - SYS_OLDLSTAT = 84 - SYS_READLINK = 85 - SYS_USELIB = 86 - SYS_SWAPON = 87 - SYS_REBOOT = 88 - SYS_READDIR = 89 - SYS_MMAP = 90 - SYS_MUNMAP = 91 - SYS_TRUNCATE = 92 - SYS_FTRUNCATE = 93 - SYS_FCHMOD = 94 - SYS_FCHOWN = 95 - SYS_GETPRIORITY = 96 - SYS_SETPRIORITY = 97 - SYS_PROFIL = 98 - SYS_STATFS = 99 - SYS_FSTATFS = 100 - SYS_IOPERM = 101 - SYS_SOCKETCALL = 102 - SYS_SYSLOG = 103 - SYS_SETITIMER = 104 - SYS_GETITIMER = 105 - SYS_STAT = 106 - SYS_LSTAT = 107 - SYS_FSTAT = 108 - SYS_OLDUNAME = 109 - SYS_IOPL = 110 - SYS_VHANGUP = 111 - SYS_IDLE = 112 - SYS_VM86OLD = 113 - SYS_WAIT4 = 114 - SYS_SWAPOFF = 115 - SYS_SYSINFO = 116 - SYS_IPC = 117 - SYS_FSYNC = 118 - SYS_SIGRETURN = 119 - SYS_CLONE = 120 - SYS_SETDOMAINNAME = 121 - SYS_UNAME = 122 - SYS_MODIFY_LDT = 123 - SYS_ADJTIMEX = 124 - SYS_MPROTECT = 125 - SYS_SIGPROCMASK = 126 - SYS_CREATE_MODULE = 127 - SYS_INIT_MODULE = 128 - SYS_DELETE_MODULE = 129 - SYS_GET_KERNEL_SYMS = 130 - SYS_QUOTACTL = 131 - SYS_GETPGID = 132 - SYS_FCHDIR = 133 - SYS_BDFLUSH = 134 - SYS_SYSFS = 135 - SYS_PERSONALITY = 136 - SYS_AFS_SYSCALL = 137 - SYS_SETFSUID = 138 - SYS_SETFSGID = 139 - SYS__LLSEEK = 140 - SYS_GETDENTS = 141 - SYS__NEWSELECT = 142 - SYS_FLOCK = 143 - SYS_MSYNC = 144 - SYS_READV = 145 - SYS_WRITEV = 146 - SYS_GETSID = 147 - SYS_FDATASYNC = 148 - SYS__SYSCTL = 149 - SYS_MLOCK = 150 - SYS_MUNLOCK = 151 - SYS_MLOCKALL = 152 - SYS_MUNLOCKALL = 153 - SYS_SCHED_SETPARAM = 154 - SYS_SCHED_GETPARAM = 155 - SYS_SCHED_SETSCHEDULER = 156 - SYS_SCHED_GETSCHEDULER = 157 - SYS_SCHED_YIELD = 158 - SYS_SCHED_GET_PRIORITY_MAX = 159 - SYS_SCHED_GET_PRIORITY_MIN = 160 - SYS_SCHED_RR_GET_INTERVAL = 161 - SYS_NANOSLEEP = 162 - SYS_MREMAP = 163 - SYS_SETRESUID = 164 - SYS_GETRESUID = 165 - SYS_VM86 = 166 - SYS_QUERY_MODULE = 167 - SYS_POLL = 168 - SYS_NFSSERVCTL = 169 - SYS_SETRESGID = 170 - SYS_GETRESGID = 171 - SYS_PRCTL = 172 - SYS_RT_SIGRETURN = 173 - SYS_RT_SIGACTION = 174 - SYS_RT_SIGPROCMASK = 175 - SYS_RT_SIGPENDING = 176 - SYS_RT_SIGTIMEDWAIT = 177 - SYS_RT_SIGQUEUEINFO = 178 - SYS_RT_SIGSUSPEND = 179 - SYS_PREAD64 = 180 - SYS_PWRITE64 = 181 - SYS_CHOWN = 182 - SYS_GETCWD = 183 - SYS_CAPGET = 184 - SYS_CAPSET = 185 - SYS_SIGALTSTACK = 186 - SYS_SENDFILE = 187 - SYS_GETPMSG = 188 - SYS_PUTPMSG = 189 - SYS_VFORK = 190 - SYS_UGETRLIMIT = 191 - SYS_MMAP2 = 192 - SYS_TRUNCATE64 = 193 - SYS_FTRUNCATE64 = 194 - SYS_STAT64 = 195 - SYS_LSTAT64 = 196 - SYS_FSTAT64 = 197 - SYS_LCHOWN32 = 198 - SYS_GETUID32 = 199 - SYS_GETGID32 = 200 - SYS_GETEUID32 = 201 - SYS_GETEGID32 = 202 - SYS_SETREUID32 = 203 - SYS_SETREGID32 = 204 - SYS_GETGROUPS32 = 205 - SYS_SETGROUPS32 = 206 - SYS_FCHOWN32 = 207 - SYS_SETRESUID32 = 208 - SYS_GETRESUID32 = 209 - SYS_SETRESGID32 = 210 - SYS_GETRESGID32 = 211 - SYS_CHOWN32 = 212 - SYS_SETUID32 = 213 - SYS_SETGID32 = 214 - SYS_SETFSUID32 = 215 - SYS_SETFSGID32 = 216 - SYS_PIVOT_ROOT = 217 - SYS_MINCORE = 218 - SYS_MADVISE = 219 - SYS_GETDENTS64 = 220 - SYS_FCNTL64 = 221 - SYS_GETTID = 224 - SYS_READAHEAD = 225 - SYS_SETXATTR = 226 - SYS_LSETXATTR = 227 - SYS_FSETXATTR = 228 - SYS_GETXATTR = 229 - SYS_LGETXATTR = 230 - SYS_FGETXATTR = 231 - SYS_LISTXATTR = 232 - SYS_LLISTXATTR = 233 - SYS_FLISTXATTR = 234 - SYS_REMOVEXATTR = 235 - SYS_LREMOVEXATTR = 236 - SYS_FREMOVEXATTR = 237 - SYS_TKILL = 238 - SYS_SENDFILE64 = 239 - SYS_FUTEX = 240 - SYS_SCHED_SETAFFINITY = 241 - SYS_SCHED_GETAFFINITY = 242 - SYS_SET_THREAD_AREA = 243 - SYS_GET_THREAD_AREA = 244 - SYS_IO_SETUP = 245 - SYS_IO_DESTROY = 246 - SYS_IO_GETEVENTS = 247 - SYS_IO_SUBMIT = 248 - SYS_IO_CANCEL = 249 - SYS_FADVISE64 = 250 - SYS_EXIT_GROUP = 252 - SYS_LOOKUP_DCOOKIE = 253 - SYS_EPOLL_CREATE = 254 - SYS_EPOLL_CTL = 255 - SYS_EPOLL_WAIT = 256 - SYS_REMAP_FILE_PAGES = 257 - SYS_SET_TID_ADDRESS = 258 - SYS_TIMER_CREATE = 259 - SYS_TIMER_SETTIME = 260 - SYS_TIMER_GETTIME = 261 - SYS_TIMER_GETOVERRUN = 262 - SYS_TIMER_DELETE = 263 - SYS_CLOCK_SETTIME = 264 - SYS_CLOCK_GETTIME = 265 - SYS_CLOCK_GETRES = 266 - SYS_CLOCK_NANOSLEEP = 267 - SYS_STATFS64 = 268 - SYS_FSTATFS64 = 269 - SYS_TGKILL = 270 - SYS_UTIMES = 271 - SYS_FADVISE64_64 = 272 - SYS_VSERVER = 273 - SYS_MBIND = 274 - SYS_GET_MEMPOLICY = 275 - SYS_SET_MEMPOLICY = 276 - SYS_MQ_OPEN = 277 - SYS_MQ_UNLINK = 278 - SYS_MQ_TIMEDSEND = 279 - SYS_MQ_TIMEDRECEIVE = 280 - SYS_MQ_NOTIFY = 281 - SYS_MQ_GETSETATTR = 282 - SYS_KEXEC_LOAD = 283 - SYS_WAITID = 284 - SYS_ADD_KEY = 286 - SYS_REQUEST_KEY = 287 - SYS_KEYCTL = 288 - SYS_IOPRIO_SET = 289 - SYS_IOPRIO_GET = 290 - SYS_INOTIFY_INIT = 291 - SYS_INOTIFY_ADD_WATCH = 292 - SYS_INOTIFY_RM_WATCH = 293 - SYS_MIGRATE_PAGES = 294 - SYS_OPENAT = 295 - SYS_MKDIRAT = 296 - SYS_MKNODAT = 297 - SYS_FCHOWNAT = 298 - SYS_FUTIMESAT = 299 - SYS_FSTATAT64 = 300 - SYS_UNLINKAT = 301 - SYS_RENAMEAT = 302 - SYS_LINKAT = 303 - SYS_SYMLINKAT = 304 - SYS_READLINKAT = 305 - SYS_FCHMODAT = 306 - SYS_FACCESSAT = 307 - SYS_PSELECT6 = 308 - SYS_PPOLL = 309 - SYS_UNSHARE = 310 - SYS_SET_ROBUST_LIST = 311 - SYS_GET_ROBUST_LIST = 312 - SYS_SPLICE = 313 - SYS_SYNC_FILE_RANGE = 314 - SYS_TEE = 315 - SYS_VMSPLICE = 316 - SYS_MOVE_PAGES = 317 - SYS_GETCPU = 318 - SYS_EPOLL_PWAIT = 319 - SYS_UTIMENSAT = 320 - SYS_SIGNALFD = 321 - SYS_TIMERFD_CREATE = 322 - SYS_EVENTFD = 323 - SYS_FALLOCATE = 324 - SYS_TIMERFD_SETTIME = 325 - SYS_TIMERFD_GETTIME = 326 - SYS_SIGNALFD4 = 327 - SYS_EVENTFD2 = 328 - SYS_EPOLL_CREATE1 = 329 - SYS_DUP3 = 330 - SYS_PIPE2 = 331 - SYS_INOTIFY_INIT1 = 332 - SYS_PREADV = 333 - SYS_PWRITEV = 334 - SYS_RT_TGSIGQUEUEINFO = 335 - SYS_PERF_EVENT_OPEN = 336 - SYS_RECVMMSG = 337 - SYS_FANOTIFY_INIT = 338 - SYS_FANOTIFY_MARK = 339 - SYS_PRLIMIT64 = 340 - SYS_NAME_TO_HANDLE_AT = 341 - SYS_OPEN_BY_HANDLE_AT = 342 - SYS_CLOCK_ADJTIME = 343 - SYS_SYNCFS = 344 - SYS_SENDMMSG = 345 - SYS_SETNS = 346 - SYS_PROCESS_VM_READV = 347 - SYS_PROCESS_VM_WRITEV = 348 - SYS_KCMP = 349 - SYS_FINIT_MODULE = 350 - SYS_SCHED_SETATTR = 351 - SYS_SCHED_GETATTR = 352 - SYS_RENAMEAT2 = 353 - SYS_SECCOMP = 354 - SYS_GETRANDOM = 355 - SYS_MEMFD_CREATE = 356 - SYS_BPF = 357 - SYS_EXECVEAT = 358 - SYS_SOCKET = 359 - SYS_SOCKETPAIR = 360 - SYS_BIND = 361 - SYS_CONNECT = 362 - SYS_LISTEN = 363 - SYS_ACCEPT4 = 364 - SYS_GETSOCKOPT = 365 - SYS_SETSOCKOPT = 366 - SYS_GETSOCKNAME = 367 - SYS_GETPEERNAME = 368 - SYS_SENDTO = 369 - SYS_SENDMSG = 370 - SYS_RECVFROM = 371 - SYS_RECVMSG = 372 - SYS_SHUTDOWN = 373 - SYS_USERFAULTFD = 374 - SYS_MEMBARRIER = 375 - SYS_MLOCK2 = 376 - SYS_COPY_FILE_RANGE = 377 - SYS_PREADV2 = 378 - SYS_PWRITEV2 = 379 - SYS_PKEY_MPROTECT = 380 - SYS_PKEY_ALLOC = 381 - SYS_PKEY_FREE = 382 - SYS_STATX = 383 - SYS_ARCH_PRCTL = 384 - SYS_IO_PGETEVENTS = 385 - SYS_RSEQ = 386 + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86OLD = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_VM86 = 166 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_SET_THREAD_AREA = 243 + SYS_GET_THREAD_AREA = 244 + SYS_IO_SETUP = 245 + SYS_IO_DESTROY = 246 + SYS_IO_GETEVENTS = 247 + SYS_IO_SUBMIT = 248 + SYS_IO_CANCEL = 249 + SYS_FADVISE64 = 250 + SYS_EXIT_GROUP = 252 + SYS_LOOKUP_DCOOKIE = 253 + SYS_EPOLL_CREATE = 254 + SYS_EPOLL_CTL = 255 + SYS_EPOLL_WAIT = 256 + SYS_REMAP_FILE_PAGES = 257 + SYS_SET_TID_ADDRESS = 258 + SYS_TIMER_CREATE = 259 + SYS_TIMER_SETTIME = 260 + SYS_TIMER_GETTIME = 261 + SYS_TIMER_GETOVERRUN = 262 + SYS_TIMER_DELETE = 263 + SYS_CLOCK_SETTIME = 264 + SYS_CLOCK_GETTIME = 265 + SYS_CLOCK_GETRES = 266 + SYS_CLOCK_NANOSLEEP = 267 + SYS_STATFS64 = 268 + SYS_FSTATFS64 = 269 + SYS_TGKILL = 270 + SYS_UTIMES = 271 + SYS_FADVISE64_64 = 272 + SYS_VSERVER = 273 + SYS_MBIND = 274 + SYS_GET_MEMPOLICY = 275 + SYS_SET_MEMPOLICY = 276 + SYS_MQ_OPEN = 277 + SYS_MQ_UNLINK = 278 + SYS_MQ_TIMEDSEND = 279 + SYS_MQ_TIMEDRECEIVE = 280 + SYS_MQ_NOTIFY = 281 + SYS_MQ_GETSETATTR = 282 + SYS_KEXEC_LOAD = 283 + SYS_WAITID = 284 + SYS_ADD_KEY = 286 + SYS_REQUEST_KEY = 287 + SYS_KEYCTL = 288 + SYS_IOPRIO_SET = 289 + SYS_IOPRIO_GET = 290 + SYS_INOTIFY_INIT = 291 + SYS_INOTIFY_ADD_WATCH = 292 + SYS_INOTIFY_RM_WATCH = 293 + SYS_MIGRATE_PAGES = 294 + SYS_OPENAT = 295 + SYS_MKDIRAT = 296 + SYS_MKNODAT = 297 + SYS_FCHOWNAT = 298 + SYS_FUTIMESAT = 299 + SYS_FSTATAT64 = 300 + SYS_UNLINKAT = 301 + SYS_RENAMEAT = 302 + SYS_LINKAT = 303 + SYS_SYMLINKAT = 304 + SYS_READLINKAT = 305 + SYS_FCHMODAT = 306 + SYS_FACCESSAT = 307 + SYS_PSELECT6 = 308 + SYS_PPOLL = 309 + SYS_UNSHARE = 310 + SYS_SET_ROBUST_LIST = 311 + SYS_GET_ROBUST_LIST = 312 + SYS_SPLICE = 313 + SYS_SYNC_FILE_RANGE = 314 + SYS_TEE = 315 + SYS_VMSPLICE = 316 + SYS_MOVE_PAGES = 317 + SYS_GETCPU = 318 + SYS_EPOLL_PWAIT = 319 + SYS_UTIMENSAT = 320 + SYS_SIGNALFD = 321 + SYS_TIMERFD_CREATE = 322 + SYS_EVENTFD = 323 + SYS_FALLOCATE = 324 + SYS_TIMERFD_SETTIME = 325 + SYS_TIMERFD_GETTIME = 326 + SYS_SIGNALFD4 = 327 + SYS_EVENTFD2 = 328 + SYS_EPOLL_CREATE1 = 329 + SYS_DUP3 = 330 + SYS_PIPE2 = 331 + SYS_INOTIFY_INIT1 = 332 + SYS_PREADV = 333 + SYS_PWRITEV = 334 + SYS_RT_TGSIGQUEUEINFO = 335 + SYS_PERF_EVENT_OPEN = 336 + SYS_RECVMMSG = 337 + SYS_FANOTIFY_INIT = 338 + SYS_FANOTIFY_MARK = 339 + SYS_PRLIMIT64 = 340 + SYS_NAME_TO_HANDLE_AT = 341 + SYS_OPEN_BY_HANDLE_AT = 342 + SYS_CLOCK_ADJTIME = 343 + SYS_SYNCFS = 344 + SYS_SENDMMSG = 345 + SYS_SETNS = 346 + SYS_PROCESS_VM_READV = 347 + SYS_PROCESS_VM_WRITEV = 348 + SYS_KCMP = 349 + SYS_FINIT_MODULE = 350 + SYS_SCHED_SETATTR = 351 + SYS_SCHED_GETATTR = 352 + SYS_RENAMEAT2 = 353 + SYS_SECCOMP = 354 + SYS_GETRANDOM = 355 + SYS_MEMFD_CREATE = 356 + SYS_BPF = 357 + SYS_EXECVEAT = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_USERFAULTFD = 374 + SYS_MEMBARRIER = 375 + SYS_MLOCK2 = 376 + SYS_COPY_FILE_RANGE = 377 + SYS_PREADV2 = 378 + SYS_PWRITEV2 = 379 + SYS_PKEY_MPROTECT = 380 + SYS_PKEY_ALLOC = 381 + SYS_PKEY_FREE = 382 + SYS_STATX = 383 + SYS_ARCH_PRCTL = 384 + SYS_IO_PGETEVENTS = 385 + SYS_RSEQ = 386 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_CLOCK_GETTIME64 = 403 + SYS_CLOCK_SETTIME64 = 404 + SYS_CLOCK_ADJTIME64 = 405 + SYS_CLOCK_GETRES_TIME64 = 406 + SYS_CLOCK_NANOSLEEP_TIME64 = 407 + SYS_TIMER_GETTIME64 = 408 + SYS_TIMER_SETTIME64 = 409 + SYS_TIMERFD_GETTIME64 = 410 + SYS_TIMERFD_SETTIME64 = 411 + SYS_UTIMENSAT_TIME64 = 412 + SYS_PSELECT6_TIME64 = 413 + SYS_PPOLL_TIME64 = 414 + SYS_IO_PGETEVENTS_TIME64 = 416 + SYS_RECVMMSG_TIME64 = 417 + SYS_MQ_TIMEDSEND_TIME64 = 418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 419 + SYS_SEMTIMEDOP_TIME64 = 420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 421 + SYS_FUTEX_TIME64 = 422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index b3d8ad79d4..7968439a92 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -341,4 +341,16 @@ const ( SYS_STATX = 332 SYS_IO_PGETEVENTS = 333 SYS_RSEQ = 334 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index e092822fba..3c663c69d4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -6,359 +6,393 @@ package unix const ( - SYS_RESTART_SYSCALL = 0 - SYS_EXIT = 1 - SYS_FORK = 2 - SYS_READ = 3 - SYS_WRITE = 4 - SYS_OPEN = 5 - SYS_CLOSE = 6 - SYS_CREAT = 8 - SYS_LINK = 9 - SYS_UNLINK = 10 - SYS_EXECVE = 11 - SYS_CHDIR = 12 - SYS_MKNOD = 14 - SYS_CHMOD = 15 - SYS_LCHOWN = 16 - SYS_LSEEK = 19 - SYS_GETPID = 20 - SYS_MOUNT = 21 - SYS_SETUID = 23 - SYS_GETUID = 24 - SYS_PTRACE = 26 - SYS_PAUSE = 29 - SYS_ACCESS = 33 - SYS_NICE = 34 - SYS_SYNC = 36 - SYS_KILL = 37 - SYS_RENAME = 38 - SYS_MKDIR = 39 - SYS_RMDIR = 40 - SYS_DUP = 41 - SYS_PIPE = 42 - SYS_TIMES = 43 - SYS_BRK = 45 - SYS_SETGID = 46 - SYS_GETGID = 47 - SYS_GETEUID = 49 - SYS_GETEGID = 50 - SYS_ACCT = 51 - SYS_UMOUNT2 = 52 - SYS_IOCTL = 54 - SYS_FCNTL = 55 - SYS_SETPGID = 57 - SYS_UMASK = 60 - SYS_CHROOT = 61 - SYS_USTAT = 62 - SYS_DUP2 = 63 - SYS_GETPPID = 64 - SYS_GETPGRP = 65 - SYS_SETSID = 66 - SYS_SIGACTION = 67 - SYS_SETREUID = 70 - SYS_SETREGID = 71 - SYS_SIGSUSPEND = 72 - SYS_SIGPENDING = 73 - SYS_SETHOSTNAME = 74 - SYS_SETRLIMIT = 75 - SYS_GETRUSAGE = 77 - SYS_GETTIMEOFDAY = 78 - SYS_SETTIMEOFDAY = 79 - SYS_GETGROUPS = 80 - SYS_SETGROUPS = 81 - SYS_SYMLINK = 83 - SYS_READLINK = 85 - SYS_USELIB = 86 - SYS_SWAPON = 87 - SYS_REBOOT = 88 - SYS_MUNMAP = 91 - SYS_TRUNCATE = 92 - SYS_FTRUNCATE = 93 - SYS_FCHMOD = 94 - SYS_FCHOWN = 95 - SYS_GETPRIORITY = 96 - SYS_SETPRIORITY = 97 - SYS_STATFS = 99 - SYS_FSTATFS = 100 - SYS_SYSLOG = 103 - SYS_SETITIMER = 104 - SYS_GETITIMER = 105 - SYS_STAT = 106 - SYS_LSTAT = 107 - SYS_FSTAT = 108 - SYS_VHANGUP = 111 - SYS_WAIT4 = 114 - SYS_SWAPOFF = 115 - SYS_SYSINFO = 116 - SYS_FSYNC = 118 - SYS_SIGRETURN = 119 - SYS_CLONE = 120 - SYS_SETDOMAINNAME = 121 - SYS_UNAME = 122 - SYS_ADJTIMEX = 124 - SYS_MPROTECT = 125 - SYS_SIGPROCMASK = 126 - SYS_INIT_MODULE = 128 - SYS_DELETE_MODULE = 129 - SYS_QUOTACTL = 131 - SYS_GETPGID = 132 - SYS_FCHDIR = 133 - SYS_BDFLUSH = 134 - SYS_SYSFS = 135 - SYS_PERSONALITY = 136 - SYS_SETFSUID = 138 - SYS_SETFSGID = 139 - SYS__LLSEEK = 140 - SYS_GETDENTS = 141 - SYS__NEWSELECT = 142 - SYS_FLOCK = 143 - SYS_MSYNC = 144 - SYS_READV = 145 - SYS_WRITEV = 146 - SYS_GETSID = 147 - SYS_FDATASYNC = 148 - SYS__SYSCTL = 149 - SYS_MLOCK = 150 - SYS_MUNLOCK = 151 - SYS_MLOCKALL = 152 - SYS_MUNLOCKALL = 153 - SYS_SCHED_SETPARAM = 154 - SYS_SCHED_GETPARAM = 155 - SYS_SCHED_SETSCHEDULER = 156 - SYS_SCHED_GETSCHEDULER = 157 - SYS_SCHED_YIELD = 158 - SYS_SCHED_GET_PRIORITY_MAX = 159 - SYS_SCHED_GET_PRIORITY_MIN = 160 - SYS_SCHED_RR_GET_INTERVAL = 161 - SYS_NANOSLEEP = 162 - SYS_MREMAP = 163 - SYS_SETRESUID = 164 - SYS_GETRESUID = 165 - SYS_POLL = 168 - SYS_NFSSERVCTL = 169 - SYS_SETRESGID = 170 - SYS_GETRESGID = 171 - SYS_PRCTL = 172 - SYS_RT_SIGRETURN = 173 - SYS_RT_SIGACTION = 174 - SYS_RT_SIGPROCMASK = 175 - SYS_RT_SIGPENDING = 176 - SYS_RT_SIGTIMEDWAIT = 177 - SYS_RT_SIGQUEUEINFO = 178 - SYS_RT_SIGSUSPEND = 179 - SYS_PREAD64 = 180 - SYS_PWRITE64 = 181 - SYS_CHOWN = 182 - SYS_GETCWD = 183 - SYS_CAPGET = 184 - SYS_CAPSET = 185 - SYS_SIGALTSTACK = 186 - SYS_SENDFILE = 187 - SYS_VFORK = 190 - SYS_UGETRLIMIT = 191 - SYS_MMAP2 = 192 - SYS_TRUNCATE64 = 193 - SYS_FTRUNCATE64 = 194 - SYS_STAT64 = 195 - SYS_LSTAT64 = 196 - SYS_FSTAT64 = 197 - SYS_LCHOWN32 = 198 - SYS_GETUID32 = 199 - SYS_GETGID32 = 200 - SYS_GETEUID32 = 201 - SYS_GETEGID32 = 202 - SYS_SETREUID32 = 203 - SYS_SETREGID32 = 204 - SYS_GETGROUPS32 = 205 - SYS_SETGROUPS32 = 206 - SYS_FCHOWN32 = 207 - SYS_SETRESUID32 = 208 - SYS_GETRESUID32 = 209 - SYS_SETRESGID32 = 210 - SYS_GETRESGID32 = 211 - SYS_CHOWN32 = 212 - SYS_SETUID32 = 213 - SYS_SETGID32 = 214 - SYS_SETFSUID32 = 215 - SYS_SETFSGID32 = 216 - SYS_GETDENTS64 = 217 - SYS_PIVOT_ROOT = 218 - SYS_MINCORE = 219 - SYS_MADVISE = 220 - SYS_FCNTL64 = 221 - SYS_GETTID = 224 - SYS_READAHEAD = 225 - SYS_SETXATTR = 226 - SYS_LSETXATTR = 227 - SYS_FSETXATTR = 228 - SYS_GETXATTR = 229 - SYS_LGETXATTR = 230 - SYS_FGETXATTR = 231 - SYS_LISTXATTR = 232 - SYS_LLISTXATTR = 233 - SYS_FLISTXATTR = 234 - SYS_REMOVEXATTR = 235 - SYS_LREMOVEXATTR = 236 - SYS_FREMOVEXATTR = 237 - SYS_TKILL = 238 - SYS_SENDFILE64 = 239 - SYS_FUTEX = 240 - SYS_SCHED_SETAFFINITY = 241 - SYS_SCHED_GETAFFINITY = 242 - SYS_IO_SETUP = 243 - SYS_IO_DESTROY = 244 - SYS_IO_GETEVENTS = 245 - SYS_IO_SUBMIT = 246 - SYS_IO_CANCEL = 247 - SYS_EXIT_GROUP = 248 - SYS_LOOKUP_DCOOKIE = 249 - SYS_EPOLL_CREATE = 250 - SYS_EPOLL_CTL = 251 - SYS_EPOLL_WAIT = 252 - SYS_REMAP_FILE_PAGES = 253 - SYS_SET_TID_ADDRESS = 256 - SYS_TIMER_CREATE = 257 - SYS_TIMER_SETTIME = 258 - SYS_TIMER_GETTIME = 259 - SYS_TIMER_GETOVERRUN = 260 - SYS_TIMER_DELETE = 261 - SYS_CLOCK_SETTIME = 262 - SYS_CLOCK_GETTIME = 263 - SYS_CLOCK_GETRES = 264 - SYS_CLOCK_NANOSLEEP = 265 - SYS_STATFS64 = 266 - SYS_FSTATFS64 = 267 - SYS_TGKILL = 268 - SYS_UTIMES = 269 - SYS_ARM_FADVISE64_64 = 270 - SYS_PCICONFIG_IOBASE = 271 - SYS_PCICONFIG_READ = 272 - SYS_PCICONFIG_WRITE = 273 - SYS_MQ_OPEN = 274 - SYS_MQ_UNLINK = 275 - SYS_MQ_TIMEDSEND = 276 - SYS_MQ_TIMEDRECEIVE = 277 - SYS_MQ_NOTIFY = 278 - SYS_MQ_GETSETATTR = 279 - SYS_WAITID = 280 - SYS_SOCKET = 281 - SYS_BIND = 282 - SYS_CONNECT = 283 - SYS_LISTEN = 284 - SYS_ACCEPT = 285 - SYS_GETSOCKNAME = 286 - SYS_GETPEERNAME = 287 - SYS_SOCKETPAIR = 288 - SYS_SEND = 289 - SYS_SENDTO = 290 - SYS_RECV = 291 - SYS_RECVFROM = 292 - SYS_SHUTDOWN = 293 - SYS_SETSOCKOPT = 294 - SYS_GETSOCKOPT = 295 - SYS_SENDMSG = 296 - SYS_RECVMSG = 297 - SYS_SEMOP = 298 - SYS_SEMGET = 299 - SYS_SEMCTL = 300 - SYS_MSGSND = 301 - SYS_MSGRCV = 302 - SYS_MSGGET = 303 - SYS_MSGCTL = 304 - SYS_SHMAT = 305 - SYS_SHMDT = 306 - SYS_SHMGET = 307 - SYS_SHMCTL = 308 - SYS_ADD_KEY = 309 - SYS_REQUEST_KEY = 310 - SYS_KEYCTL = 311 - SYS_SEMTIMEDOP = 312 - SYS_VSERVER = 313 - SYS_IOPRIO_SET = 314 - SYS_IOPRIO_GET = 315 - SYS_INOTIFY_INIT = 316 - SYS_INOTIFY_ADD_WATCH = 317 - SYS_INOTIFY_RM_WATCH = 318 - SYS_MBIND = 319 - SYS_GET_MEMPOLICY = 320 - SYS_SET_MEMPOLICY = 321 - SYS_OPENAT = 322 - SYS_MKDIRAT = 323 - SYS_MKNODAT = 324 - SYS_FCHOWNAT = 325 - SYS_FUTIMESAT = 326 - SYS_FSTATAT64 = 327 - SYS_UNLINKAT = 328 - SYS_RENAMEAT = 329 - SYS_LINKAT = 330 - SYS_SYMLINKAT = 331 - SYS_READLINKAT = 332 - SYS_FCHMODAT = 333 - SYS_FACCESSAT = 334 - SYS_PSELECT6 = 335 - SYS_PPOLL = 336 - SYS_UNSHARE = 337 - SYS_SET_ROBUST_LIST = 338 - SYS_GET_ROBUST_LIST = 339 - SYS_SPLICE = 340 - SYS_ARM_SYNC_FILE_RANGE = 341 - SYS_TEE = 342 - SYS_VMSPLICE = 343 - SYS_MOVE_PAGES = 344 - SYS_GETCPU = 345 - SYS_EPOLL_PWAIT = 346 - SYS_KEXEC_LOAD = 347 - SYS_UTIMENSAT = 348 - SYS_SIGNALFD = 349 - SYS_TIMERFD_CREATE = 350 - SYS_EVENTFD = 351 - SYS_FALLOCATE = 352 - SYS_TIMERFD_SETTIME = 353 - SYS_TIMERFD_GETTIME = 354 - SYS_SIGNALFD4 = 355 - SYS_EVENTFD2 = 356 - SYS_EPOLL_CREATE1 = 357 - SYS_DUP3 = 358 - SYS_PIPE2 = 359 - SYS_INOTIFY_INIT1 = 360 - SYS_PREADV = 361 - SYS_PWRITEV = 362 - SYS_RT_TGSIGQUEUEINFO = 363 - SYS_PERF_EVENT_OPEN = 364 - SYS_RECVMMSG = 365 - SYS_ACCEPT4 = 366 - SYS_FANOTIFY_INIT = 367 - SYS_FANOTIFY_MARK = 368 - SYS_PRLIMIT64 = 369 - SYS_NAME_TO_HANDLE_AT = 370 - SYS_OPEN_BY_HANDLE_AT = 371 - SYS_CLOCK_ADJTIME = 372 - SYS_SYNCFS = 373 - SYS_SENDMMSG = 374 - SYS_SETNS = 375 - SYS_PROCESS_VM_READV = 376 - SYS_PROCESS_VM_WRITEV = 377 - SYS_KCMP = 378 - SYS_FINIT_MODULE = 379 - SYS_SCHED_SETATTR = 380 - SYS_SCHED_GETATTR = 381 - SYS_RENAMEAT2 = 382 - SYS_SECCOMP = 383 - SYS_GETRANDOM = 384 - SYS_MEMFD_CREATE = 385 - SYS_BPF = 386 - SYS_EXECVEAT = 387 - SYS_USERFAULTFD = 388 - SYS_MEMBARRIER = 389 - SYS_MLOCK2 = 390 - SYS_COPY_FILE_RANGE = 391 - SYS_PREADV2 = 392 - SYS_PWRITEV2 = 393 - SYS_PKEY_MPROTECT = 394 - SYS_PKEY_ALLOC = 395 - SYS_PKEY_FREE = 396 - SYS_STATX = 397 - SYS_RSEQ = 398 - SYS_IO_PGETEVENTS = 399 + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_PTRACE = 26 + SYS_PAUSE = 29 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_VHANGUP = 111 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_GETDENTS64 = 217 + SYS_PIVOT_ROOT = 218 + SYS_MINCORE = 219 + SYS_MADVISE = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_LOOKUP_DCOOKIE = 249 + SYS_EPOLL_CREATE = 250 + SYS_EPOLL_CTL = 251 + SYS_EPOLL_WAIT = 252 + SYS_REMAP_FILE_PAGES = 253 + SYS_SET_TID_ADDRESS = 256 + SYS_TIMER_CREATE = 257 + SYS_TIMER_SETTIME = 258 + SYS_TIMER_GETTIME = 259 + SYS_TIMER_GETOVERRUN = 260 + SYS_TIMER_DELETE = 261 + SYS_CLOCK_SETTIME = 262 + SYS_CLOCK_GETTIME = 263 + SYS_CLOCK_GETRES = 264 + SYS_CLOCK_NANOSLEEP = 265 + SYS_STATFS64 = 266 + SYS_FSTATFS64 = 267 + SYS_TGKILL = 268 + SYS_UTIMES = 269 + SYS_ARM_FADVISE64_64 = 270 + SYS_PCICONFIG_IOBASE = 271 + SYS_PCICONFIG_READ = 272 + SYS_PCICONFIG_WRITE = 273 + SYS_MQ_OPEN = 274 + SYS_MQ_UNLINK = 275 + SYS_MQ_TIMEDSEND = 276 + SYS_MQ_TIMEDRECEIVE = 277 + SYS_MQ_NOTIFY = 278 + SYS_MQ_GETSETATTR = 279 + SYS_WAITID = 280 + SYS_SOCKET = 281 + SYS_BIND = 282 + SYS_CONNECT = 283 + SYS_LISTEN = 284 + SYS_ACCEPT = 285 + SYS_GETSOCKNAME = 286 + SYS_GETPEERNAME = 287 + SYS_SOCKETPAIR = 288 + SYS_SEND = 289 + SYS_SENDTO = 290 + SYS_RECV = 291 + SYS_RECVFROM = 292 + SYS_SHUTDOWN = 293 + SYS_SETSOCKOPT = 294 + SYS_GETSOCKOPT = 295 + SYS_SENDMSG = 296 + SYS_RECVMSG = 297 + SYS_SEMOP = 298 + SYS_SEMGET = 299 + SYS_SEMCTL = 300 + SYS_MSGSND = 301 + SYS_MSGRCV = 302 + SYS_MSGGET = 303 + SYS_MSGCTL = 304 + SYS_SHMAT = 305 + SYS_SHMDT = 306 + SYS_SHMGET = 307 + SYS_SHMCTL = 308 + SYS_ADD_KEY = 309 + SYS_REQUEST_KEY = 310 + SYS_KEYCTL = 311 + SYS_SEMTIMEDOP = 312 + SYS_VSERVER = 313 + SYS_IOPRIO_SET = 314 + SYS_IOPRIO_GET = 315 + SYS_INOTIFY_INIT = 316 + SYS_INOTIFY_ADD_WATCH = 317 + SYS_INOTIFY_RM_WATCH = 318 + SYS_MBIND = 319 + SYS_GET_MEMPOLICY = 320 + SYS_SET_MEMPOLICY = 321 + SYS_OPENAT = 322 + SYS_MKDIRAT = 323 + SYS_MKNODAT = 324 + SYS_FCHOWNAT = 325 + SYS_FUTIMESAT = 326 + SYS_FSTATAT64 = 327 + SYS_UNLINKAT = 328 + SYS_RENAMEAT = 329 + SYS_LINKAT = 330 + SYS_SYMLINKAT = 331 + SYS_READLINKAT = 332 + SYS_FCHMODAT = 333 + SYS_FACCESSAT = 334 + SYS_PSELECT6 = 335 + SYS_PPOLL = 336 + SYS_UNSHARE = 337 + SYS_SET_ROBUST_LIST = 338 + SYS_GET_ROBUST_LIST = 339 + SYS_SPLICE = 340 + SYS_ARM_SYNC_FILE_RANGE = 341 + SYS_TEE = 342 + SYS_VMSPLICE = 343 + SYS_MOVE_PAGES = 344 + SYS_GETCPU = 345 + SYS_EPOLL_PWAIT = 346 + SYS_KEXEC_LOAD = 347 + SYS_UTIMENSAT = 348 + SYS_SIGNALFD = 349 + SYS_TIMERFD_CREATE = 350 + SYS_EVENTFD = 351 + SYS_FALLOCATE = 352 + SYS_TIMERFD_SETTIME = 353 + SYS_TIMERFD_GETTIME = 354 + SYS_SIGNALFD4 = 355 + SYS_EVENTFD2 = 356 + SYS_EPOLL_CREATE1 = 357 + SYS_DUP3 = 358 + SYS_PIPE2 = 359 + SYS_INOTIFY_INIT1 = 360 + SYS_PREADV = 361 + SYS_PWRITEV = 362 + SYS_RT_TGSIGQUEUEINFO = 363 + SYS_PERF_EVENT_OPEN = 364 + SYS_RECVMMSG = 365 + SYS_ACCEPT4 = 366 + SYS_FANOTIFY_INIT = 367 + SYS_FANOTIFY_MARK = 368 + SYS_PRLIMIT64 = 369 + SYS_NAME_TO_HANDLE_AT = 370 + SYS_OPEN_BY_HANDLE_AT = 371 + SYS_CLOCK_ADJTIME = 372 + SYS_SYNCFS = 373 + SYS_SENDMMSG = 374 + SYS_SETNS = 375 + SYS_PROCESS_VM_READV = 376 + SYS_PROCESS_VM_WRITEV = 377 + SYS_KCMP = 378 + SYS_FINIT_MODULE = 379 + SYS_SCHED_SETATTR = 380 + SYS_SCHED_GETATTR = 381 + SYS_RENAMEAT2 = 382 + SYS_SECCOMP = 383 + SYS_GETRANDOM = 384 + SYS_MEMFD_CREATE = 385 + SYS_BPF = 386 + SYS_EXECVEAT = 387 + SYS_USERFAULTFD = 388 + SYS_MEMBARRIER = 389 + SYS_MLOCK2 = 390 + SYS_COPY_FILE_RANGE = 391 + SYS_PREADV2 = 392 + SYS_PWRITEV2 = 393 + SYS_PKEY_MPROTECT = 394 + SYS_PKEY_ALLOC = 395 + SYS_PKEY_FREE = 396 + SYS_STATX = 397 + SYS_RSEQ = 398 + SYS_IO_PGETEVENTS = 399 + SYS_MIGRATE_PAGES = 400 + SYS_KEXEC_FILE_LOAD = 401 + SYS_CLOCK_GETTIME64 = 403 + SYS_CLOCK_SETTIME64 = 404 + SYS_CLOCK_ADJTIME64 = 405 + SYS_CLOCK_GETRES_TIME64 = 406 + SYS_CLOCK_NANOSLEEP_TIME64 = 407 + SYS_TIMER_GETTIME64 = 408 + SYS_TIMER_SETTIME64 = 409 + SYS_TIMERFD_GETTIME64 = 410 + SYS_TIMERFD_SETTIME64 = 411 + SYS_UTIMENSAT_TIME64 = 412 + SYS_PSELECT6_TIME64 = 413 + SYS_PPOLL_TIME64 = 414 + SYS_IO_PGETEVENTS_TIME64 = 416 + SYS_RECVMMSG_TIME64 = 417 + SYS_MQ_TIMEDSEND_TIME64 = 418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 419 + SYS_SEMTIMEDOP_TIME64 = 420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 421 + SYS_FUTEX_TIME64 = 422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index b81d508a73..753def987e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -286,4 +286,15 @@ const ( SYS_IO_PGETEVENTS = 292 SYS_RSEQ = 293 SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index 6893a5bd05..ac86bd5446 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -6,372 +6,413 @@ package unix const ( - SYS_SYSCALL = 4000 - SYS_EXIT = 4001 - SYS_FORK = 4002 - SYS_READ = 4003 - SYS_WRITE = 4004 - SYS_OPEN = 4005 - SYS_CLOSE = 4006 - SYS_WAITPID = 4007 - SYS_CREAT = 4008 - SYS_LINK = 4009 - SYS_UNLINK = 4010 - SYS_EXECVE = 4011 - SYS_CHDIR = 4012 - SYS_TIME = 4013 - SYS_MKNOD = 4014 - SYS_CHMOD = 4015 - SYS_LCHOWN = 4016 - SYS_BREAK = 4017 - SYS_UNUSED18 = 4018 - SYS_LSEEK = 4019 - SYS_GETPID = 4020 - SYS_MOUNT = 4021 - SYS_UMOUNT = 4022 - SYS_SETUID = 4023 - SYS_GETUID = 4024 - SYS_STIME = 4025 - SYS_PTRACE = 4026 - SYS_ALARM = 4027 - SYS_UNUSED28 = 4028 - SYS_PAUSE = 4029 - SYS_UTIME = 4030 - SYS_STTY = 4031 - SYS_GTTY = 4032 - SYS_ACCESS = 4033 - SYS_NICE = 4034 - SYS_FTIME = 4035 - SYS_SYNC = 4036 - SYS_KILL = 4037 - SYS_RENAME = 4038 - SYS_MKDIR = 4039 - SYS_RMDIR = 4040 - SYS_DUP = 4041 - SYS_PIPE = 4042 - SYS_TIMES = 4043 - SYS_PROF = 4044 - SYS_BRK = 4045 - SYS_SETGID = 4046 - SYS_GETGID = 4047 - SYS_SIGNAL = 4048 - SYS_GETEUID = 4049 - SYS_GETEGID = 4050 - SYS_ACCT = 4051 - SYS_UMOUNT2 = 4052 - SYS_LOCK = 4053 - SYS_IOCTL = 4054 - SYS_FCNTL = 4055 - SYS_MPX = 4056 - SYS_SETPGID = 4057 - SYS_ULIMIT = 4058 - SYS_UNUSED59 = 4059 - SYS_UMASK = 4060 - SYS_CHROOT = 4061 - SYS_USTAT = 4062 - SYS_DUP2 = 4063 - SYS_GETPPID = 4064 - SYS_GETPGRP = 4065 - SYS_SETSID = 4066 - SYS_SIGACTION = 4067 - SYS_SGETMASK = 4068 - SYS_SSETMASK = 4069 - SYS_SETREUID = 4070 - SYS_SETREGID = 4071 - SYS_SIGSUSPEND = 4072 - SYS_SIGPENDING = 4073 - SYS_SETHOSTNAME = 4074 - SYS_SETRLIMIT = 4075 - SYS_GETRLIMIT = 4076 - SYS_GETRUSAGE = 4077 - SYS_GETTIMEOFDAY = 4078 - SYS_SETTIMEOFDAY = 4079 - SYS_GETGROUPS = 4080 - SYS_SETGROUPS = 4081 - SYS_RESERVED82 = 4082 - SYS_SYMLINK = 4083 - SYS_UNUSED84 = 4084 - SYS_READLINK = 4085 - SYS_USELIB = 4086 - SYS_SWAPON = 4087 - SYS_REBOOT = 4088 - SYS_READDIR = 4089 - SYS_MMAP = 4090 - SYS_MUNMAP = 4091 - SYS_TRUNCATE = 4092 - SYS_FTRUNCATE = 4093 - SYS_FCHMOD = 4094 - SYS_FCHOWN = 4095 - SYS_GETPRIORITY = 4096 - SYS_SETPRIORITY = 4097 - SYS_PROFIL = 4098 - SYS_STATFS = 4099 - SYS_FSTATFS = 4100 - SYS_IOPERM = 4101 - SYS_SOCKETCALL = 4102 - SYS_SYSLOG = 4103 - SYS_SETITIMER = 4104 - SYS_GETITIMER = 4105 - SYS_STAT = 4106 - SYS_LSTAT = 4107 - SYS_FSTAT = 4108 - SYS_UNUSED109 = 4109 - SYS_IOPL = 4110 - SYS_VHANGUP = 4111 - SYS_IDLE = 4112 - SYS_VM86 = 4113 - SYS_WAIT4 = 4114 - SYS_SWAPOFF = 4115 - SYS_SYSINFO = 4116 - SYS_IPC = 4117 - SYS_FSYNC = 4118 - SYS_SIGRETURN = 4119 - SYS_CLONE = 4120 - SYS_SETDOMAINNAME = 4121 - SYS_UNAME = 4122 - SYS_MODIFY_LDT = 4123 - SYS_ADJTIMEX = 4124 - SYS_MPROTECT = 4125 - SYS_SIGPROCMASK = 4126 - SYS_CREATE_MODULE = 4127 - SYS_INIT_MODULE = 4128 - SYS_DELETE_MODULE = 4129 - SYS_GET_KERNEL_SYMS = 4130 - SYS_QUOTACTL = 4131 - SYS_GETPGID = 4132 - SYS_FCHDIR = 4133 - SYS_BDFLUSH = 4134 - SYS_SYSFS = 4135 - SYS_PERSONALITY = 4136 - SYS_AFS_SYSCALL = 4137 - SYS_SETFSUID = 4138 - SYS_SETFSGID = 4139 - SYS__LLSEEK = 4140 - SYS_GETDENTS = 4141 - SYS__NEWSELECT = 4142 - SYS_FLOCK = 4143 - SYS_MSYNC = 4144 - SYS_READV = 4145 - SYS_WRITEV = 4146 - SYS_CACHEFLUSH = 4147 - SYS_CACHECTL = 4148 - SYS_SYSMIPS = 4149 - SYS_UNUSED150 = 4150 - SYS_GETSID = 4151 - SYS_FDATASYNC = 4152 - SYS__SYSCTL = 4153 - SYS_MLOCK = 4154 - SYS_MUNLOCK = 4155 - SYS_MLOCKALL = 4156 - SYS_MUNLOCKALL = 4157 - SYS_SCHED_SETPARAM = 4158 - SYS_SCHED_GETPARAM = 4159 - SYS_SCHED_SETSCHEDULER = 4160 - SYS_SCHED_GETSCHEDULER = 4161 - SYS_SCHED_YIELD = 4162 - SYS_SCHED_GET_PRIORITY_MAX = 4163 - SYS_SCHED_GET_PRIORITY_MIN = 4164 - SYS_SCHED_RR_GET_INTERVAL = 4165 - SYS_NANOSLEEP = 4166 - SYS_MREMAP = 4167 - SYS_ACCEPT = 4168 - SYS_BIND = 4169 - SYS_CONNECT = 4170 - SYS_GETPEERNAME = 4171 - SYS_GETSOCKNAME = 4172 - SYS_GETSOCKOPT = 4173 - SYS_LISTEN = 4174 - SYS_RECV = 4175 - SYS_RECVFROM = 4176 - SYS_RECVMSG = 4177 - SYS_SEND = 4178 - SYS_SENDMSG = 4179 - SYS_SENDTO = 4180 - SYS_SETSOCKOPT = 4181 - SYS_SHUTDOWN = 4182 - SYS_SOCKET = 4183 - SYS_SOCKETPAIR = 4184 - SYS_SETRESUID = 4185 - SYS_GETRESUID = 4186 - SYS_QUERY_MODULE = 4187 - SYS_POLL = 4188 - SYS_NFSSERVCTL = 4189 - SYS_SETRESGID = 4190 - SYS_GETRESGID = 4191 - SYS_PRCTL = 4192 - SYS_RT_SIGRETURN = 4193 - SYS_RT_SIGACTION = 4194 - SYS_RT_SIGPROCMASK = 4195 - SYS_RT_SIGPENDING = 4196 - SYS_RT_SIGTIMEDWAIT = 4197 - SYS_RT_SIGQUEUEINFO = 4198 - SYS_RT_SIGSUSPEND = 4199 - SYS_PREAD64 = 4200 - SYS_PWRITE64 = 4201 - SYS_CHOWN = 4202 - SYS_GETCWD = 4203 - SYS_CAPGET = 4204 - SYS_CAPSET = 4205 - SYS_SIGALTSTACK = 4206 - SYS_SENDFILE = 4207 - SYS_GETPMSG = 4208 - SYS_PUTPMSG = 4209 - SYS_MMAP2 = 4210 - SYS_TRUNCATE64 = 4211 - SYS_FTRUNCATE64 = 4212 - SYS_STAT64 = 4213 - SYS_LSTAT64 = 4214 - SYS_FSTAT64 = 4215 - SYS_PIVOT_ROOT = 4216 - SYS_MINCORE = 4217 - SYS_MADVISE = 4218 - SYS_GETDENTS64 = 4219 - SYS_FCNTL64 = 4220 - SYS_RESERVED221 = 4221 - SYS_GETTID = 4222 - SYS_READAHEAD = 4223 - SYS_SETXATTR = 4224 - SYS_LSETXATTR = 4225 - SYS_FSETXATTR = 4226 - SYS_GETXATTR = 4227 - SYS_LGETXATTR = 4228 - SYS_FGETXATTR = 4229 - SYS_LISTXATTR = 4230 - SYS_LLISTXATTR = 4231 - SYS_FLISTXATTR = 4232 - SYS_REMOVEXATTR = 4233 - SYS_LREMOVEXATTR = 4234 - SYS_FREMOVEXATTR = 4235 - SYS_TKILL = 4236 - SYS_SENDFILE64 = 4237 - SYS_FUTEX = 4238 - SYS_SCHED_SETAFFINITY = 4239 - SYS_SCHED_GETAFFINITY = 4240 - SYS_IO_SETUP = 4241 - SYS_IO_DESTROY = 4242 - SYS_IO_GETEVENTS = 4243 - SYS_IO_SUBMIT = 4244 - SYS_IO_CANCEL = 4245 - SYS_EXIT_GROUP = 4246 - SYS_LOOKUP_DCOOKIE = 4247 - SYS_EPOLL_CREATE = 4248 - SYS_EPOLL_CTL = 4249 - SYS_EPOLL_WAIT = 4250 - SYS_REMAP_FILE_PAGES = 4251 - SYS_SET_TID_ADDRESS = 4252 - SYS_RESTART_SYSCALL = 4253 - SYS_FADVISE64 = 4254 - SYS_STATFS64 = 4255 - SYS_FSTATFS64 = 4256 - SYS_TIMER_CREATE = 4257 - SYS_TIMER_SETTIME = 4258 - SYS_TIMER_GETTIME = 4259 - SYS_TIMER_GETOVERRUN = 4260 - SYS_TIMER_DELETE = 4261 - SYS_CLOCK_SETTIME = 4262 - SYS_CLOCK_GETTIME = 4263 - SYS_CLOCK_GETRES = 4264 - SYS_CLOCK_NANOSLEEP = 4265 - SYS_TGKILL = 4266 - SYS_UTIMES = 4267 - SYS_MBIND = 4268 - SYS_GET_MEMPOLICY = 4269 - SYS_SET_MEMPOLICY = 4270 - SYS_MQ_OPEN = 4271 - SYS_MQ_UNLINK = 4272 - SYS_MQ_TIMEDSEND = 4273 - SYS_MQ_TIMEDRECEIVE = 4274 - SYS_MQ_NOTIFY = 4275 - SYS_MQ_GETSETATTR = 4276 - SYS_VSERVER = 4277 - SYS_WAITID = 4278 - SYS_ADD_KEY = 4280 - SYS_REQUEST_KEY = 4281 - SYS_KEYCTL = 4282 - SYS_SET_THREAD_AREA = 4283 - SYS_INOTIFY_INIT = 4284 - SYS_INOTIFY_ADD_WATCH = 4285 - SYS_INOTIFY_RM_WATCH = 4286 - SYS_MIGRATE_PAGES = 4287 - SYS_OPENAT = 4288 - SYS_MKDIRAT = 4289 - SYS_MKNODAT = 4290 - SYS_FCHOWNAT = 4291 - SYS_FUTIMESAT = 4292 - SYS_FSTATAT64 = 4293 - SYS_UNLINKAT = 4294 - SYS_RENAMEAT = 4295 - SYS_LINKAT = 4296 - SYS_SYMLINKAT = 4297 - SYS_READLINKAT = 4298 - SYS_FCHMODAT = 4299 - SYS_FACCESSAT = 4300 - SYS_PSELECT6 = 4301 - SYS_PPOLL = 4302 - SYS_UNSHARE = 4303 - SYS_SPLICE = 4304 - SYS_SYNC_FILE_RANGE = 4305 - SYS_TEE = 4306 - SYS_VMSPLICE = 4307 - SYS_MOVE_PAGES = 4308 - SYS_SET_ROBUST_LIST = 4309 - SYS_GET_ROBUST_LIST = 4310 - SYS_KEXEC_LOAD = 4311 - SYS_GETCPU = 4312 - SYS_EPOLL_PWAIT = 4313 - SYS_IOPRIO_SET = 4314 - SYS_IOPRIO_GET = 4315 - SYS_UTIMENSAT = 4316 - SYS_SIGNALFD = 4317 - SYS_TIMERFD = 4318 - SYS_EVENTFD = 4319 - SYS_FALLOCATE = 4320 - SYS_TIMERFD_CREATE = 4321 - SYS_TIMERFD_GETTIME = 4322 - SYS_TIMERFD_SETTIME = 4323 - SYS_SIGNALFD4 = 4324 - SYS_EVENTFD2 = 4325 - SYS_EPOLL_CREATE1 = 4326 - SYS_DUP3 = 4327 - SYS_PIPE2 = 4328 - SYS_INOTIFY_INIT1 = 4329 - SYS_PREADV = 4330 - SYS_PWRITEV = 4331 - SYS_RT_TGSIGQUEUEINFO = 4332 - SYS_PERF_EVENT_OPEN = 4333 - SYS_ACCEPT4 = 4334 - SYS_RECVMMSG = 4335 - SYS_FANOTIFY_INIT = 4336 - SYS_FANOTIFY_MARK = 4337 - SYS_PRLIMIT64 = 4338 - SYS_NAME_TO_HANDLE_AT = 4339 - SYS_OPEN_BY_HANDLE_AT = 4340 - SYS_CLOCK_ADJTIME = 4341 - SYS_SYNCFS = 4342 - SYS_SENDMMSG = 4343 - SYS_SETNS = 4344 - SYS_PROCESS_VM_READV = 4345 - SYS_PROCESS_VM_WRITEV = 4346 - SYS_KCMP = 4347 - SYS_FINIT_MODULE = 4348 - SYS_SCHED_SETATTR = 4349 - SYS_SCHED_GETATTR = 4350 - SYS_RENAMEAT2 = 4351 - SYS_SECCOMP = 4352 - SYS_GETRANDOM = 4353 - SYS_MEMFD_CREATE = 4354 - SYS_BPF = 4355 - SYS_EXECVEAT = 4356 - SYS_USERFAULTFD = 4357 - SYS_MEMBARRIER = 4358 - SYS_MLOCK2 = 4359 - SYS_COPY_FILE_RANGE = 4360 - SYS_PREADV2 = 4361 - SYS_PWRITEV2 = 4362 - SYS_PKEY_MPROTECT = 4363 - SYS_PKEY_ALLOC = 4364 - SYS_PKEY_FREE = 4365 - SYS_STATX = 4366 - SYS_RSEQ = 4367 - SYS_IO_PGETEVENTS = 4368 + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 + SYS_SEMGET = 4393 + SYS_SEMCTL = 4394 + SYS_SHMGET = 4395 + SYS_SHMCTL = 4396 + SYS_SHMAT = 4397 + SYS_SHMDT = 4398 + SYS_MSGGET = 4399 + SYS_MSGSND = 4400 + SYS_MSGRCV = 4401 + SYS_MSGCTL = 4402 + SYS_CLOCK_GETTIME64 = 4403 + SYS_CLOCK_SETTIME64 = 4404 + SYS_CLOCK_ADJTIME64 = 4405 + SYS_CLOCK_GETRES_TIME64 = 4406 + SYS_CLOCK_NANOSLEEP_TIME64 = 4407 + SYS_TIMER_GETTIME64 = 4408 + SYS_TIMER_SETTIME64 = 4409 + SYS_TIMERFD_GETTIME64 = 4410 + SYS_TIMERFD_SETTIME64 = 4411 + SYS_UTIMENSAT_TIME64 = 4412 + SYS_PSELECT6_TIME64 = 4413 + SYS_PPOLL_TIME64 = 4414 + SYS_IO_PGETEVENTS_TIME64 = 4416 + SYS_RECVMMSG_TIME64 = 4417 + SYS_MQ_TIMEDSEND_TIME64 = 4418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 4419 + SYS_SEMTIMEDOP_TIME64 = 4420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 4421 + SYS_FUTEX_TIME64 = 4422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423 + SYS_PIDFD_SEND_SIGNAL = 4424 + SYS_IO_URING_SETUP = 4425 + SYS_IO_URING_ENTER = 4426 + SYS_IO_URING_REGISTER = 4427 + SYS_OPEN_TREE = 4428 + SYS_MOVE_MOUNT = 4429 + SYS_FSOPEN = 4430 + SYS_FSCONFIG = 4431 + SYS_FSMOUNT = 4432 + SYS_FSPICK = 4433 + SYS_PIDFD_OPEN = 4434 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 40164cacdf..1f5705b588 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -334,4 +334,15 @@ const ( SYS_STATX = 5326 SYS_RSEQ = 5327 SYS_IO_PGETEVENTS = 5328 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index 8a909738bc..d9ed953264 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -334,4 +334,15 @@ const ( SYS_STATX = 5326 SYS_RSEQ = 5327 SYS_IO_PGETEVENTS = 5328 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 + SYS_PIDFD_OPEN = 5434 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 8d78184224..94266b65a4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -6,372 +6,413 @@ package unix const ( - SYS_SYSCALL = 4000 - SYS_EXIT = 4001 - SYS_FORK = 4002 - SYS_READ = 4003 - SYS_WRITE = 4004 - SYS_OPEN = 4005 - SYS_CLOSE = 4006 - SYS_WAITPID = 4007 - SYS_CREAT = 4008 - SYS_LINK = 4009 - SYS_UNLINK = 4010 - SYS_EXECVE = 4011 - SYS_CHDIR = 4012 - SYS_TIME = 4013 - SYS_MKNOD = 4014 - SYS_CHMOD = 4015 - SYS_LCHOWN = 4016 - SYS_BREAK = 4017 - SYS_UNUSED18 = 4018 - SYS_LSEEK = 4019 - SYS_GETPID = 4020 - SYS_MOUNT = 4021 - SYS_UMOUNT = 4022 - SYS_SETUID = 4023 - SYS_GETUID = 4024 - SYS_STIME = 4025 - SYS_PTRACE = 4026 - SYS_ALARM = 4027 - SYS_UNUSED28 = 4028 - SYS_PAUSE = 4029 - SYS_UTIME = 4030 - SYS_STTY = 4031 - SYS_GTTY = 4032 - SYS_ACCESS = 4033 - SYS_NICE = 4034 - SYS_FTIME = 4035 - SYS_SYNC = 4036 - SYS_KILL = 4037 - SYS_RENAME = 4038 - SYS_MKDIR = 4039 - SYS_RMDIR = 4040 - SYS_DUP = 4041 - SYS_PIPE = 4042 - SYS_TIMES = 4043 - SYS_PROF = 4044 - SYS_BRK = 4045 - SYS_SETGID = 4046 - SYS_GETGID = 4047 - SYS_SIGNAL = 4048 - SYS_GETEUID = 4049 - SYS_GETEGID = 4050 - SYS_ACCT = 4051 - SYS_UMOUNT2 = 4052 - SYS_LOCK = 4053 - SYS_IOCTL = 4054 - SYS_FCNTL = 4055 - SYS_MPX = 4056 - SYS_SETPGID = 4057 - SYS_ULIMIT = 4058 - SYS_UNUSED59 = 4059 - SYS_UMASK = 4060 - SYS_CHROOT = 4061 - SYS_USTAT = 4062 - SYS_DUP2 = 4063 - SYS_GETPPID = 4064 - SYS_GETPGRP = 4065 - SYS_SETSID = 4066 - SYS_SIGACTION = 4067 - SYS_SGETMASK = 4068 - SYS_SSETMASK = 4069 - SYS_SETREUID = 4070 - SYS_SETREGID = 4071 - SYS_SIGSUSPEND = 4072 - SYS_SIGPENDING = 4073 - SYS_SETHOSTNAME = 4074 - SYS_SETRLIMIT = 4075 - SYS_GETRLIMIT = 4076 - SYS_GETRUSAGE = 4077 - SYS_GETTIMEOFDAY = 4078 - SYS_SETTIMEOFDAY = 4079 - SYS_GETGROUPS = 4080 - SYS_SETGROUPS = 4081 - SYS_RESERVED82 = 4082 - SYS_SYMLINK = 4083 - SYS_UNUSED84 = 4084 - SYS_READLINK = 4085 - SYS_USELIB = 4086 - SYS_SWAPON = 4087 - SYS_REBOOT = 4088 - SYS_READDIR = 4089 - SYS_MMAP = 4090 - SYS_MUNMAP = 4091 - SYS_TRUNCATE = 4092 - SYS_FTRUNCATE = 4093 - SYS_FCHMOD = 4094 - SYS_FCHOWN = 4095 - SYS_GETPRIORITY = 4096 - SYS_SETPRIORITY = 4097 - SYS_PROFIL = 4098 - SYS_STATFS = 4099 - SYS_FSTATFS = 4100 - SYS_IOPERM = 4101 - SYS_SOCKETCALL = 4102 - SYS_SYSLOG = 4103 - SYS_SETITIMER = 4104 - SYS_GETITIMER = 4105 - SYS_STAT = 4106 - SYS_LSTAT = 4107 - SYS_FSTAT = 4108 - SYS_UNUSED109 = 4109 - SYS_IOPL = 4110 - SYS_VHANGUP = 4111 - SYS_IDLE = 4112 - SYS_VM86 = 4113 - SYS_WAIT4 = 4114 - SYS_SWAPOFF = 4115 - SYS_SYSINFO = 4116 - SYS_IPC = 4117 - SYS_FSYNC = 4118 - SYS_SIGRETURN = 4119 - SYS_CLONE = 4120 - SYS_SETDOMAINNAME = 4121 - SYS_UNAME = 4122 - SYS_MODIFY_LDT = 4123 - SYS_ADJTIMEX = 4124 - SYS_MPROTECT = 4125 - SYS_SIGPROCMASK = 4126 - SYS_CREATE_MODULE = 4127 - SYS_INIT_MODULE = 4128 - SYS_DELETE_MODULE = 4129 - SYS_GET_KERNEL_SYMS = 4130 - SYS_QUOTACTL = 4131 - SYS_GETPGID = 4132 - SYS_FCHDIR = 4133 - SYS_BDFLUSH = 4134 - SYS_SYSFS = 4135 - SYS_PERSONALITY = 4136 - SYS_AFS_SYSCALL = 4137 - SYS_SETFSUID = 4138 - SYS_SETFSGID = 4139 - SYS__LLSEEK = 4140 - SYS_GETDENTS = 4141 - SYS__NEWSELECT = 4142 - SYS_FLOCK = 4143 - SYS_MSYNC = 4144 - SYS_READV = 4145 - SYS_WRITEV = 4146 - SYS_CACHEFLUSH = 4147 - SYS_CACHECTL = 4148 - SYS_SYSMIPS = 4149 - SYS_UNUSED150 = 4150 - SYS_GETSID = 4151 - SYS_FDATASYNC = 4152 - SYS__SYSCTL = 4153 - SYS_MLOCK = 4154 - SYS_MUNLOCK = 4155 - SYS_MLOCKALL = 4156 - SYS_MUNLOCKALL = 4157 - SYS_SCHED_SETPARAM = 4158 - SYS_SCHED_GETPARAM = 4159 - SYS_SCHED_SETSCHEDULER = 4160 - SYS_SCHED_GETSCHEDULER = 4161 - SYS_SCHED_YIELD = 4162 - SYS_SCHED_GET_PRIORITY_MAX = 4163 - SYS_SCHED_GET_PRIORITY_MIN = 4164 - SYS_SCHED_RR_GET_INTERVAL = 4165 - SYS_NANOSLEEP = 4166 - SYS_MREMAP = 4167 - SYS_ACCEPT = 4168 - SYS_BIND = 4169 - SYS_CONNECT = 4170 - SYS_GETPEERNAME = 4171 - SYS_GETSOCKNAME = 4172 - SYS_GETSOCKOPT = 4173 - SYS_LISTEN = 4174 - SYS_RECV = 4175 - SYS_RECVFROM = 4176 - SYS_RECVMSG = 4177 - SYS_SEND = 4178 - SYS_SENDMSG = 4179 - SYS_SENDTO = 4180 - SYS_SETSOCKOPT = 4181 - SYS_SHUTDOWN = 4182 - SYS_SOCKET = 4183 - SYS_SOCKETPAIR = 4184 - SYS_SETRESUID = 4185 - SYS_GETRESUID = 4186 - SYS_QUERY_MODULE = 4187 - SYS_POLL = 4188 - SYS_NFSSERVCTL = 4189 - SYS_SETRESGID = 4190 - SYS_GETRESGID = 4191 - SYS_PRCTL = 4192 - SYS_RT_SIGRETURN = 4193 - SYS_RT_SIGACTION = 4194 - SYS_RT_SIGPROCMASK = 4195 - SYS_RT_SIGPENDING = 4196 - SYS_RT_SIGTIMEDWAIT = 4197 - SYS_RT_SIGQUEUEINFO = 4198 - SYS_RT_SIGSUSPEND = 4199 - SYS_PREAD64 = 4200 - SYS_PWRITE64 = 4201 - SYS_CHOWN = 4202 - SYS_GETCWD = 4203 - SYS_CAPGET = 4204 - SYS_CAPSET = 4205 - SYS_SIGALTSTACK = 4206 - SYS_SENDFILE = 4207 - SYS_GETPMSG = 4208 - SYS_PUTPMSG = 4209 - SYS_MMAP2 = 4210 - SYS_TRUNCATE64 = 4211 - SYS_FTRUNCATE64 = 4212 - SYS_STAT64 = 4213 - SYS_LSTAT64 = 4214 - SYS_FSTAT64 = 4215 - SYS_PIVOT_ROOT = 4216 - SYS_MINCORE = 4217 - SYS_MADVISE = 4218 - SYS_GETDENTS64 = 4219 - SYS_FCNTL64 = 4220 - SYS_RESERVED221 = 4221 - SYS_GETTID = 4222 - SYS_READAHEAD = 4223 - SYS_SETXATTR = 4224 - SYS_LSETXATTR = 4225 - SYS_FSETXATTR = 4226 - SYS_GETXATTR = 4227 - SYS_LGETXATTR = 4228 - SYS_FGETXATTR = 4229 - SYS_LISTXATTR = 4230 - SYS_LLISTXATTR = 4231 - SYS_FLISTXATTR = 4232 - SYS_REMOVEXATTR = 4233 - SYS_LREMOVEXATTR = 4234 - SYS_FREMOVEXATTR = 4235 - SYS_TKILL = 4236 - SYS_SENDFILE64 = 4237 - SYS_FUTEX = 4238 - SYS_SCHED_SETAFFINITY = 4239 - SYS_SCHED_GETAFFINITY = 4240 - SYS_IO_SETUP = 4241 - SYS_IO_DESTROY = 4242 - SYS_IO_GETEVENTS = 4243 - SYS_IO_SUBMIT = 4244 - SYS_IO_CANCEL = 4245 - SYS_EXIT_GROUP = 4246 - SYS_LOOKUP_DCOOKIE = 4247 - SYS_EPOLL_CREATE = 4248 - SYS_EPOLL_CTL = 4249 - SYS_EPOLL_WAIT = 4250 - SYS_REMAP_FILE_PAGES = 4251 - SYS_SET_TID_ADDRESS = 4252 - SYS_RESTART_SYSCALL = 4253 - SYS_FADVISE64 = 4254 - SYS_STATFS64 = 4255 - SYS_FSTATFS64 = 4256 - SYS_TIMER_CREATE = 4257 - SYS_TIMER_SETTIME = 4258 - SYS_TIMER_GETTIME = 4259 - SYS_TIMER_GETOVERRUN = 4260 - SYS_TIMER_DELETE = 4261 - SYS_CLOCK_SETTIME = 4262 - SYS_CLOCK_GETTIME = 4263 - SYS_CLOCK_GETRES = 4264 - SYS_CLOCK_NANOSLEEP = 4265 - SYS_TGKILL = 4266 - SYS_UTIMES = 4267 - SYS_MBIND = 4268 - SYS_GET_MEMPOLICY = 4269 - SYS_SET_MEMPOLICY = 4270 - SYS_MQ_OPEN = 4271 - SYS_MQ_UNLINK = 4272 - SYS_MQ_TIMEDSEND = 4273 - SYS_MQ_TIMEDRECEIVE = 4274 - SYS_MQ_NOTIFY = 4275 - SYS_MQ_GETSETATTR = 4276 - SYS_VSERVER = 4277 - SYS_WAITID = 4278 - SYS_ADD_KEY = 4280 - SYS_REQUEST_KEY = 4281 - SYS_KEYCTL = 4282 - SYS_SET_THREAD_AREA = 4283 - SYS_INOTIFY_INIT = 4284 - SYS_INOTIFY_ADD_WATCH = 4285 - SYS_INOTIFY_RM_WATCH = 4286 - SYS_MIGRATE_PAGES = 4287 - SYS_OPENAT = 4288 - SYS_MKDIRAT = 4289 - SYS_MKNODAT = 4290 - SYS_FCHOWNAT = 4291 - SYS_FUTIMESAT = 4292 - SYS_FSTATAT64 = 4293 - SYS_UNLINKAT = 4294 - SYS_RENAMEAT = 4295 - SYS_LINKAT = 4296 - SYS_SYMLINKAT = 4297 - SYS_READLINKAT = 4298 - SYS_FCHMODAT = 4299 - SYS_FACCESSAT = 4300 - SYS_PSELECT6 = 4301 - SYS_PPOLL = 4302 - SYS_UNSHARE = 4303 - SYS_SPLICE = 4304 - SYS_SYNC_FILE_RANGE = 4305 - SYS_TEE = 4306 - SYS_VMSPLICE = 4307 - SYS_MOVE_PAGES = 4308 - SYS_SET_ROBUST_LIST = 4309 - SYS_GET_ROBUST_LIST = 4310 - SYS_KEXEC_LOAD = 4311 - SYS_GETCPU = 4312 - SYS_EPOLL_PWAIT = 4313 - SYS_IOPRIO_SET = 4314 - SYS_IOPRIO_GET = 4315 - SYS_UTIMENSAT = 4316 - SYS_SIGNALFD = 4317 - SYS_TIMERFD = 4318 - SYS_EVENTFD = 4319 - SYS_FALLOCATE = 4320 - SYS_TIMERFD_CREATE = 4321 - SYS_TIMERFD_GETTIME = 4322 - SYS_TIMERFD_SETTIME = 4323 - SYS_SIGNALFD4 = 4324 - SYS_EVENTFD2 = 4325 - SYS_EPOLL_CREATE1 = 4326 - SYS_DUP3 = 4327 - SYS_PIPE2 = 4328 - SYS_INOTIFY_INIT1 = 4329 - SYS_PREADV = 4330 - SYS_PWRITEV = 4331 - SYS_RT_TGSIGQUEUEINFO = 4332 - SYS_PERF_EVENT_OPEN = 4333 - SYS_ACCEPT4 = 4334 - SYS_RECVMMSG = 4335 - SYS_FANOTIFY_INIT = 4336 - SYS_FANOTIFY_MARK = 4337 - SYS_PRLIMIT64 = 4338 - SYS_NAME_TO_HANDLE_AT = 4339 - SYS_OPEN_BY_HANDLE_AT = 4340 - SYS_CLOCK_ADJTIME = 4341 - SYS_SYNCFS = 4342 - SYS_SENDMMSG = 4343 - SYS_SETNS = 4344 - SYS_PROCESS_VM_READV = 4345 - SYS_PROCESS_VM_WRITEV = 4346 - SYS_KCMP = 4347 - SYS_FINIT_MODULE = 4348 - SYS_SCHED_SETATTR = 4349 - SYS_SCHED_GETATTR = 4350 - SYS_RENAMEAT2 = 4351 - SYS_SECCOMP = 4352 - SYS_GETRANDOM = 4353 - SYS_MEMFD_CREATE = 4354 - SYS_BPF = 4355 - SYS_EXECVEAT = 4356 - SYS_USERFAULTFD = 4357 - SYS_MEMBARRIER = 4358 - SYS_MLOCK2 = 4359 - SYS_COPY_FILE_RANGE = 4360 - SYS_PREADV2 = 4361 - SYS_PWRITEV2 = 4362 - SYS_PKEY_MPROTECT = 4363 - SYS_PKEY_ALLOC = 4364 - SYS_PKEY_FREE = 4365 - SYS_STATX = 4366 - SYS_RSEQ = 4367 - SYS_IO_PGETEVENTS = 4368 + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 + SYS_SEMGET = 4393 + SYS_SEMCTL = 4394 + SYS_SHMGET = 4395 + SYS_SHMCTL = 4396 + SYS_SHMAT = 4397 + SYS_SHMDT = 4398 + SYS_MSGGET = 4399 + SYS_MSGSND = 4400 + SYS_MSGRCV = 4401 + SYS_MSGCTL = 4402 + SYS_CLOCK_GETTIME64 = 4403 + SYS_CLOCK_SETTIME64 = 4404 + SYS_CLOCK_ADJTIME64 = 4405 + SYS_CLOCK_GETRES_TIME64 = 4406 + SYS_CLOCK_NANOSLEEP_TIME64 = 4407 + SYS_TIMER_GETTIME64 = 4408 + SYS_TIMER_SETTIME64 = 4409 + SYS_TIMERFD_GETTIME64 = 4410 + SYS_TIMERFD_SETTIME64 = 4411 + SYS_UTIMENSAT_TIME64 = 4412 + SYS_PSELECT6_TIME64 = 4413 + SYS_PPOLL_TIME64 = 4414 + SYS_IO_PGETEVENTS_TIME64 = 4416 + SYS_RECVMMSG_TIME64 = 4417 + SYS_MQ_TIMEDSEND_TIME64 = 4418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 4419 + SYS_SEMTIMEDOP_TIME64 = 4420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 4421 + SYS_FUTEX_TIME64 = 4422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423 + SYS_PIDFD_SEND_SIGNAL = 4424 + SYS_IO_URING_SETUP = 4425 + SYS_IO_URING_ENTER = 4426 + SYS_IO_URING_REGISTER = 4427 + SYS_OPEN_TREE = 4428 + SYS_MOVE_MOUNT = 4429 + SYS_FSOPEN = 4430 + SYS_FSCONFIG = 4431 + SYS_FSMOUNT = 4432 + SYS_FSPICK = 4433 + SYS_PIDFD_OPEN = 4434 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index ec5bde3d56..52e3da6490 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -372,4 +372,27 @@ const ( SYS_PKEY_MPROTECT = 386 SYS_RSEQ = 387 SYS_IO_PGETEVENTS = 388 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index bdbabdbcdb..6141f90a82 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -372,4 +372,27 @@ const ( SYS_PKEY_MPROTECT = 386 SYS_RSEQ = 387 SYS_IO_PGETEVENTS = 388 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index 2c8c46a2fc..4f7261a884 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -285,4 +285,16 @@ const ( SYS_IO_PGETEVENTS = 292 SYS_RSEQ = 293 SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index 6eb7c257f8..f47014ac05 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -334,4 +334,30 @@ const ( SYS_KEXEC_FILE_LOAD = 381 SYS_IO_PGETEVENTS = 382 SYS_RSEQ = 383 + SYS_PKEY_MPROTECT = 384 + SYS_PKEY_ALLOC = 385 + SYS_PKEY_FREE = 386 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 6ed306370a..dd78abb0d6 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -348,4 +348,30 @@ const ( SYS_PWRITEV2 = 359 SYS_STATX = 360 SYS_IO_PGETEVENTS = 361 + SYS_PKEY_MPROTECT = 362 + SYS_PKEY_ALLOC = 363 + SYS_PKEY_FREE = 364 + SYS_RSEQ = 365 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go new file mode 100644 index 0000000000..fe2b689b63 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go @@ -0,0 +1,217 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go index cedc9b0f26..2c1f815e6f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -30,11 +30,6 @@ type Timespec struct { Nsec int32 } -type StTimespec struct { - Sec int32 - Nsec int32 -} - type Timeval struct { Sec int32 Usec int32 @@ -101,9 +96,9 @@ type Stat_t struct { Gid uint32 Rdev uint32 Size int32 - Atim StTimespec - Mtim StTimespec - Ctim StTimespec + Atim Timespec + Mtim Timespec + Ctim Timespec Blksize int32 Blocks int32 Vfstype int32 @@ -148,6 +143,17 @@ type RawSockaddrUnix struct { Path [1023]uint8 } +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [120]uint8 +} + type RawSockaddr struct { Len uint8 Family uint8 @@ -207,17 +213,18 @@ type Msghdr struct { } const ( - SizeofSockaddrInet4 = 0x10 - SizeofSockaddrInet6 = 0x1c - SizeofSockaddrAny = 0x404 - SizeofSockaddrUnix = 0x401 - SizeofLinger = 0x8 - SizeofIPMreq = 0x8 - SizeofIPv6Mreq = 0x14 - SizeofIPv6MTUInfo = 0x20 - SizeofMsghdr = 0x1c - SizeofCmsghdr = 0xc - SizeofICMPv6Filter = 0x20 + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofSockaddrDatalink = 0x80 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 ) const ( diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go index 904359f69f..b4a069ecbd 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -30,12 +30,6 @@ type Timespec struct { Nsec int64 } -type StTimespec struct { - Sec int64 - Nsec int32 - _ [4]byte -} - type Timeval struct { Sec int64 Usec int32 @@ -103,9 +97,9 @@ type Stat_t struct { Gid uint32 Rdev uint64 Ssize int32 - Atim StTimespec - Mtim StTimespec - Ctim StTimespec + Atim Timespec + Mtim Timespec + Ctim Timespec Blksize int64 Blocks int64 Vfstype int32 @@ -153,6 +147,17 @@ type RawSockaddrUnix struct { Path [1023]uint8 } +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [120]uint8 +} + type RawSockaddr struct { Len uint8 Family uint8 @@ -212,17 +217,18 @@ type Msghdr struct { } const ( - SizeofSockaddrInet4 = 0x10 - SizeofSockaddrInet6 = 0x1c - SizeofSockaddrAny = 0x404 - SizeofSockaddrUnix = 0x401 - SizeofLinger = 0x8 - SizeofIPMreq = 0x8 - SizeofIPv6Mreq = 0x14 - SizeofIPv6MTUInfo = 0x20 - SizeofMsghdr = 0x30 - SizeofCmsghdr = 0xc - SizeofICMPv6Filter = 0x20 + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofSockaddrDatalink = 0x80 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 ) const ( diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go index cefe2f8eae..9f47b87c50 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go @@ -59,24 +59,24 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev int32 - Mode uint16 - Nlink uint16 - Ino uint64 - Uid uint32 - Gid uint32 - Rdev int32 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Qspare [2]int64 + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 } type Statfs_t struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index c6bb883c39..966798a870 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -63,25 +63,25 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev int32 - Mode uint16 - Nlink uint16 - Ino uint64 - Uid uint32 - Gid uint32 - Rdev int32 - _ [4]byte - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Qspare [2]int64 + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + _ [4]byte + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 } type Statfs_t struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go index 94c23bc2d4..4fe4c9cd73 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go @@ -60,24 +60,24 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev int32 - Mode uint16 - Nlink uint16 - Ino uint64 - Uid uint32 - Gid uint32 - Rdev int32 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Qspare [2]int64 + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 } type Statfs_t struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index c82a930cdc..21999e4b0a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -63,25 +63,25 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev int32 - Mode uint16 - Nlink uint16 - Ino uint64 - Uid uint32 - Gid uint32 - Rdev int32 - _ [4]byte - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Qspare [2]int64 + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + _ [4]byte + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 } type Statfs_t struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go index 7b34e2e2c6..c206f2b053 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -57,25 +57,25 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Ino uint64 - Nlink uint32 - Dev uint32 - Mode uint16 - Padding1 uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Lspare int32 - Qspare1 int64 - Qspare2 int64 + Ino uint64 + Nlink uint32 + Dev uint32 + Mode uint16 + _1 uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare1 int64 + Qspare2 int64 } type Statfs_t struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index c146c1ad35..7312e95ff4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -62,50 +62,50 @@ const ( ) type Stat_t struct { - Dev uint64 - Ino uint64 - Nlink uint64 - Mode uint16 - _0 int16 - Uid uint32 - Gid uint32 - _1 int32 - Rdev uint64 - Atim_ext int32 - Atim Timespec - Mtim_ext int32 - Mtim Timespec - Ctim_ext int32 - Ctim Timespec - Btim_ext int32 - Birthtim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint64 - Spare [10]uint64 + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + _ int32 + Atim Timespec + _ int32 + Mtim Timespec + _ int32 + Ctim Timespec + _ int32 + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 } type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Birthtim Timespec - _ [8]byte + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Btim Timespec + _ [8]byte } type Statfs_t struct { @@ -324,11 +324,108 @@ const ( ) const ( - PTRACE_TRACEME = 0x0 - PTRACE_CONT = 0x7 - PTRACE_KILL = 0x8 + PTRACE_ATTACH = 0xa + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0xb + PTRACE_GETFPREGS = 0x23 + PTRACE_GETFSBASE = 0x47 + PTRACE_GETLWPLIST = 0xf + PTRACE_GETNUMLWPS = 0xe + PTRACE_GETREGS = 0x21 + PTRACE_GETXSTATE = 0x45 + PTRACE_IO = 0xc + PTRACE_KILL = 0x8 + PTRACE_LWPEVENTS = 0x18 + PTRACE_LWPINFO = 0xd + PTRACE_SETFPREGS = 0x24 + PTRACE_SETREGS = 0x22 + PTRACE_SINGLESTEP = 0x9 + PTRACE_TRACEME = 0x0 +) + +const ( + PIOD_READ_D = 0x1 + PIOD_WRITE_D = 0x2 + PIOD_READ_I = 0x3 + PIOD_WRITE_I = 0x4 +) + +const ( + PL_FLAG_BORN = 0x100 + PL_FLAG_EXITED = 0x200 + PL_FLAG_SI = 0x20 +) + +const ( + TRAP_BRKPT = 0x1 + TRAP_TRACE = 0x2 ) +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __Siginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [4]byte + X_reason [32]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + Fs uint32 + Es uint32 + Ds uint32 + Edi uint32 + Esi uint32 + Ebp uint32 + Isp uint32 + Ebx uint32 + Edx uint32 + Ecx uint32 + Eax uint32 + Trapno uint32 + Err uint32 + Eip uint32 + Cs uint32 + Eflags uint32 + Esp uint32 + Ss uint32 + Gs uint32 +} + +type FpReg struct { + Env [7]uint32 + Acc [8][10]uint8 + Ex_sw uint32 + Pad [64]uint8 +} + +type PtraceIoDesc struct { + Op int32 + Offs *byte + Addr *byte + Len uint +} + type Kevent_t struct { Ident uint32 Filter int16 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index ac33a8dd4a..29ba2f5bf7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -62,45 +62,45 @@ const ( ) type Stat_t struct { - Dev uint64 - Ino uint64 - Nlink uint64 - Mode uint16 - _0 int16 - Uid uint32 - Gid uint32 - _1 int32 - Rdev uint64 - Atim Timespec - Mtim Timespec - Ctim Timespec - Birthtim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint64 - Spare [10]uint64 + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 } type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Birthtim Timespec + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Btim Timespec } type Statfs_t struct { @@ -322,11 +322,115 @@ const ( ) const ( - PTRACE_TRACEME = 0x0 - PTRACE_CONT = 0x7 - PTRACE_KILL = 0x8 + PTRACE_ATTACH = 0xa + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0xb + PTRACE_GETFPREGS = 0x23 + PTRACE_GETFSBASE = 0x47 + PTRACE_GETLWPLIST = 0xf + PTRACE_GETNUMLWPS = 0xe + PTRACE_GETREGS = 0x21 + PTRACE_GETXSTATE = 0x45 + PTRACE_IO = 0xc + PTRACE_KILL = 0x8 + PTRACE_LWPEVENTS = 0x18 + PTRACE_LWPINFO = 0xd + PTRACE_SETFPREGS = 0x24 + PTRACE_SETREGS = 0x22 + PTRACE_SINGLESTEP = 0x9 + PTRACE_TRACEME = 0x0 ) +const ( + PIOD_READ_D = 0x1 + PIOD_WRITE_D = 0x2 + PIOD_READ_I = 0x3 + PIOD_WRITE_I = 0x4 +) + +const ( + PL_FLAG_BORN = 0x100 + PL_FLAG_EXITED = 0x200 + PL_FLAG_SI = 0x20 +) + +const ( + TRAP_BRKPT = 0x1 + TRAP_TRACE = 0x2 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __Siginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + _ [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + R15 int64 + R14 int64 + R13 int64 + R12 int64 + R11 int64 + R10 int64 + R9 int64 + R8 int64 + Rdi int64 + Rsi int64 + Rbp int64 + Rbx int64 + Rdx int64 + Rcx int64 + Rax int64 + Trapno uint32 + Fs uint16 + Gs uint16 + Err uint32 + Es uint16 + Ds uint16 + Rip int64 + Cs int64 + Rflags int64 + Rsp int64 + Ss int64 +} + +type FpReg struct { + Env [4]uint64 + Acc [8][16]uint8 + Xacc [16][16]uint8 + Spare [12]uint64 +} + +type PtraceIoDesc struct { + Op int32 + Offs *byte + Addr *byte + Len uint +} + type Kevent_t struct { Ident uint64 Filter int16 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index e27511a642..b4090ef311 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -64,45 +64,45 @@ const ( ) type Stat_t struct { - Dev uint64 - Ino uint64 - Nlink uint64 - Mode uint16 - _0 int16 - Uid uint32 - Gid uint32 - _1 int32 - Rdev uint64 - Atim Timespec - Mtim Timespec - Ctim Timespec - Birthtim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint64 - Spare [10]uint64 + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 } type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Birthtim Timespec + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Btim Timespec } type Statfs_t struct { @@ -322,11 +322,92 @@ const ( ) const ( - PTRACE_TRACEME = 0x0 - PTRACE_CONT = 0x7 - PTRACE_KILL = 0x8 + PTRACE_ATTACH = 0xa + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0xb + PTRACE_GETFPREGS = 0x23 + PTRACE_GETFSBASE = 0x47 + PTRACE_GETLWPLIST = 0xf + PTRACE_GETNUMLWPS = 0xe + PTRACE_GETREGS = 0x21 + PTRACE_GETXSTATE = 0x45 + PTRACE_IO = 0xc + PTRACE_KILL = 0x8 + PTRACE_LWPEVENTS = 0x18 + PTRACE_LWPINFO = 0xd + PTRACE_SETFPREGS = 0x24 + PTRACE_SETREGS = 0x22 + PTRACE_SINGLESTEP = 0x9 + PTRACE_TRACEME = 0x0 +) + +const ( + PIOD_READ_D = 0x1 + PIOD_WRITE_D = 0x2 + PIOD_READ_I = 0x3 + PIOD_WRITE_I = 0x4 +) + +const ( + PL_FLAG_BORN = 0x100 + PL_FLAG_EXITED = 0x200 + PL_FLAG_SI = 0x20 +) + +const ( + TRAP_BRKPT = 0x1 + TRAP_TRACE = 0x2 ) +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __Siginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [4]byte + X_reason [32]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + R [13]uint32 + R_sp uint32 + R_lr uint32 + R_pc uint32 + R_cpsr uint32 +} + +type FpReg struct { + Fpr_fpsr uint32 + Fpr [8][3]uint32 +} + +type PtraceIoDesc struct { + Op int32 + Offs *byte + Addr *byte + Len uint +} + type Kevent_t struct { Ident uint32 Filter int16 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index 2aadc1a4d8..1542a87734 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -62,45 +62,45 @@ const ( ) type Stat_t struct { - Dev uint64 - Ino uint64 - Nlink uint64 - Mode uint16 - _0 int16 - Uid uint32 - Gid uint32 - _1 int32 - Rdev uint64 - Atim Timespec - Mtim Timespec - Ctim Timespec - Birthtim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint64 - Spare [10]uint64 + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 } type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Birthtim Timespec + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Btim Timespec } type Statfs_t struct { @@ -322,11 +322,93 @@ const ( ) const ( - PTRACE_TRACEME = 0x0 - PTRACE_CONT = 0x7 - PTRACE_KILL = 0x8 + PTRACE_ATTACH = 0xa + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0xb + PTRACE_GETFPREGS = 0x23 + PTRACE_GETFSBASE = 0x47 + PTRACE_GETLWPLIST = 0xf + PTRACE_GETNUMLWPS = 0xe + PTRACE_GETREGS = 0x21 + PTRACE_GETXSTATE = 0x45 + PTRACE_IO = 0xc + PTRACE_KILL = 0x8 + PTRACE_LWPEVENTS = 0x18 + PTRACE_LWPINFO = 0xd + PTRACE_SETFPREGS = 0x24 + PTRACE_SETREGS = 0x22 + PTRACE_SINGLESTEP = 0x9 + PTRACE_TRACEME = 0x0 +) + +const ( + PIOD_READ_D = 0x1 + PIOD_WRITE_D = 0x2 + PIOD_READ_I = 0x3 + PIOD_WRITE_I = 0x4 +) + +const ( + PL_FLAG_BORN = 0x100 + PL_FLAG_EXITED = 0x200 + PL_FLAG_SI = 0x20 +) + +const ( + TRAP_BRKPT = 0x1 + TRAP_TRACE = 0x2 ) +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __Siginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + X_reason [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + X [30]uint64 + Lr uint64 + Sp uint64 + Elr uint64 + Spsr uint32 +} + +type FpReg struct { + Fp_q [32]uint128 + Fp_sr uint32 + Fp_cr uint32 +} + +type PtraceIoDesc struct { + Op int32 + Offs *byte + Addr *byte + Len uint +} + type Kevent_t struct { Ident uint64 Filter int16 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index a908f259e7..16d62fa492 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -285,6 +285,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -425,6 +432,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x8 SizeofIPMreq = 0x8 @@ -591,22 +599,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -614,6 +606,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -664,6 +657,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -829,6 +829,8 @@ type Sigset_t struct { Val [32]uint32 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1452,6 +1454,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2133,3 +2150,479 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint32 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index e63fa7415a..97e92393cd 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -285,6 +285,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -426,6 +433,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 @@ -592,22 +600,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -615,6 +607,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -665,6 +658,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -842,6 +842,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1464,6 +1466,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2146,3 +2163,480 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index 34e4e6db07..05f978e817 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -289,6 +289,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -429,6 +436,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x8 SizeofIPMreq = 0x8 @@ -595,22 +603,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -618,6 +610,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -668,6 +661,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -818,6 +818,8 @@ type Sigset_t struct { Val [32]uint32 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1442,6 +1444,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2124,3 +2141,479 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint32 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]uint8 +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 7f2e26f156..5086fcea98 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -286,6 +286,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -427,6 +434,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 @@ -593,22 +601,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -616,6 +608,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -666,6 +659,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -821,6 +821,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1443,6 +1445,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2125,3 +2142,480 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 66e408fa0c..b6ddd8c536 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -288,6 +288,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -428,6 +435,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x8 SizeofIPMreq = 0x8 @@ -594,22 +602,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -617,6 +609,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -667,6 +660,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -823,6 +823,8 @@ type Sigset_t struct { Val [32]uint32 } +const _C__NSIG = 0x80 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1448,6 +1450,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2130,3 +2147,479 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint32 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index e60575a35a..89f3e32af9 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -286,6 +286,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -427,6 +434,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 @@ -593,22 +601,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -616,6 +608,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -666,6 +659,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -823,6 +823,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x80 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1445,6 +1447,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2127,3 +2144,480 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index af5836a41a..6b84cf79af 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -286,6 +286,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -427,6 +434,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 @@ -593,22 +601,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -616,6 +608,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -666,6 +659,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -823,6 +823,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x80 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1445,6 +1447,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2127,3 +2144,480 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index 471706ac92..bc50cd3819 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -288,6 +288,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -428,6 +435,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x8 SizeofIPMreq = 0x8 @@ -594,22 +602,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -617,6 +609,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -667,6 +660,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -823,6 +823,8 @@ type Sigset_t struct { Val [32]uint32 } +const _C__NSIG = 0x80 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1448,6 +1450,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2130,3 +2147,479 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint32 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 6cfa149fa2..0a1ec1705d 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -287,6 +287,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -428,6 +435,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 @@ -594,22 +602,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -617,6 +609,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -667,6 +660,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -831,6 +831,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1453,6 +1455,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2135,3 +2152,480 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index acb3773ff9..c7f045a55c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -287,6 +287,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -428,6 +435,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 @@ -594,22 +602,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -617,6 +609,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -667,6 +660,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -831,6 +831,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1453,6 +1455,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2135,3 +2152,480 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 9735b2576e..5d8d44799f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -286,6 +286,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]uint8 @@ -427,6 +434,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 @@ -593,22 +601,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -616,6 +608,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -666,6 +659,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -808,6 +808,7 @@ type Ustat_t struct { type EpollEvent struct { Events uint32 + _ int32 Fd int32 Pad int32 } @@ -848,6 +849,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1470,6 +1473,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2152,3 +2170,480 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]uint8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]uint8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]uint8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index 5369f652f4..034875a69e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -285,6 +285,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -426,6 +433,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 @@ -592,22 +600,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -615,6 +607,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -665,6 +658,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -844,6 +844,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1467,6 +1469,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2149,3 +2166,480 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint64 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 552dbe51e8..2f7ec8b887 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -289,6 +289,13 @@ type RawSockaddrXDP struct { type RawSockaddrPPPoX [0x1e]byte +type RawSockaddrTIPC struct { + Family uint16 + Addrtype uint8 + Scope int8 + Addr [12]byte +} + type RawSockaddr struct { Family uint16 Data [14]int8 @@ -430,6 +437,7 @@ const ( SizeofSockaddrVM = 0x10 SizeofSockaddrXDP = 0x10 SizeofSockaddrPPPoX = 0x1e + SizeofSockaddrTIPC = 0x10 SizeofLinger = 0x8 SizeofIovec = 0x10 SizeofIPMreq = 0x8 @@ -596,22 +604,6 @@ const ( RTN_THROW = 0x9 RTN_NAT = 0xa RTN_XRESOLVE = 0xb - RTNLGRP_NONE = 0x0 - RTNLGRP_LINK = 0x1 - RTNLGRP_NOTIFY = 0x2 - RTNLGRP_NEIGH = 0x3 - RTNLGRP_TC = 0x4 - RTNLGRP_IPV4_IFADDR = 0x5 - RTNLGRP_IPV4_MROUTE = 0x6 - RTNLGRP_IPV4_ROUTE = 0x7 - RTNLGRP_IPV4_RULE = 0x8 - RTNLGRP_IPV6_IFADDR = 0x9 - RTNLGRP_IPV6_MROUTE = 0xa - RTNLGRP_IPV6_ROUTE = 0xb - RTNLGRP_IPV6_IFINFO = 0xc - RTNLGRP_IPV6_PREFIX = 0x12 - RTNLGRP_IPV6_RULE = 0x13 - RTNLGRP_ND_USEROPT = 0x14 SizeofNlMsghdr = 0x10 SizeofNlMsgerr = 0x14 SizeofRtGenmsg = 0x1 @@ -619,6 +611,7 @@ const ( SizeofRtAttr = 0x4 SizeofIfInfomsg = 0x10 SizeofIfAddrmsg = 0x8 + SizeofIfaCacheinfo = 0x10 SizeofRtMsg = 0xc SizeofRtNexthop = 0x8 SizeofNdUseroptmsg = 0x10 @@ -669,6 +662,13 @@ type IfAddrmsg struct { Index uint32 } +type IfaCacheinfo struct { + Prefered uint32 + Valid uint32 + Cstamp uint32 + Tstamp uint32 +} + type RtMsg struct { Family uint8 Dst_len uint8 @@ -826,6 +826,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1448,6 +1450,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2130,3 +2147,480 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +const ( + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_DECnet_IFADDR = 0xd + RTNLGRP_NOP2 = 0xe + RTNLGRP_DECnet_ROUTE = 0xf + RTNLGRP_DECnet_RULE = 0x10 + RTNLGRP_NOP4 = 0x11 + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + RTNLGRP_PHONET_IFADDR = 0x15 + RTNLGRP_PHONET_ROUTE = 0x16 + RTNLGRP_DCB = 0x17 + RTNLGRP_IPV4_NETCONF = 0x18 + RTNLGRP_IPV6_NETCONF = 0x19 + RTNLGRP_MDB = 0x1a + RTNLGRP_MPLS_ROUTE = 0x1b + RTNLGRP_NSID = 0x1c + RTNLGRP_MPLS_NETCONF = 0x1d + RTNLGRP_IPV4_MROUTE_R = 0x1e + RTNLGRP_IPV6_MROUTE_R = 0x1f + RTNLGRP_NEXTHOP = 0x20 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} + +type TIPCSocketAddr struct { + Ref uint32 + Node uint32 +} + +type TIPCServiceRange struct { + Type uint32 + Lower uint32 + Upper uint32 +} + +type TIPCServiceName struct { + Type uint32 + Instance uint32 + Domain uint32 +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCEvent struct { + Event uint32 + Lower uint32 + Upper uint32 + Port TIPCSocketAddr + S TIPCSubscr +} + +type TIPCGroupReq struct { + Type uint32 + Instance uint32 + Scope uint32 + Flags uint32 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +const ( + TIPC_CLUSTER_SCOPE = 0x2 + TIPC_NODE_SCOPE = 0x3 +) + +const ( + SYSLOG_ACTION_CLOSE = 0 + SYSLOG_ACTION_OPEN = 1 + SYSLOG_ACTION_READ = 2 + SYSLOG_ACTION_READ_ALL = 3 + SYSLOG_ACTION_READ_CLEAR = 4 + SYSLOG_ACTION_CLEAR = 5 + SYSLOG_ACTION_CONSOLE_OFF = 6 + SYSLOG_ACTION_CONSOLE_ON = 7 + SYSLOG_ACTION_CONSOLE_LEVEL = 8 + SYSLOG_ACTION_SIZE_UNREAD = 9 + SYSLOG_ACTION_SIZE_BUFFER = 10 +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go index 2dae0c17a3..86736ab6e7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -57,23 +57,23 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Mode uint32 - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - Rdev uint64 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Spare [2]uint32 + Dev uint64 + Mode uint32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 } type Statfs_t [0]byte @@ -411,6 +411,7 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x200 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go index 1f0e76c0cc..3427811f98 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -58,26 +58,26 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Mode uint32 - Pad_cgo_0 [4]byte - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - Pad_cgo_1 [4]byte - Rdev uint64 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Spare [2]uint32 - Pad_cgo_2 [4]byte + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte } type Statfs_t [0]byte @@ -418,6 +418,7 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x200 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go index 53f2159c7d..399f37a434 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -59,26 +59,26 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Mode uint32 - Pad_cgo_0 [4]byte - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - Pad_cgo_1 [4]byte - Rdev uint64 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Spare [2]uint32 - Pad_cgo_2 [4]byte + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte } type Statfs_t [0]byte @@ -416,6 +416,7 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x200 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go index 43da2c41c5..32f0c15d98 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -58,26 +58,26 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Mode uint32 - Pad_cgo_0 [4]byte - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - Pad_cgo_1 [4]byte - Rdev uint64 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Spare [2]uint32 - Pad_cgo_2 [4]byte + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte } type Statfs_t [0]byte @@ -418,6 +418,7 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x200 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index 900fb44622..61ea0019a2 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -436,6 +436,7 @@ type Winsize struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x4 AT_SYMLINK_NOFOLLOW = 0x2 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index 028fa78d74..87a493f68f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -436,6 +436,7 @@ type Winsize struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x4 AT_SYMLINK_NOFOLLOW = 0x2 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index b45d5eedff..d80836efab 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -437,6 +437,7 @@ type Winsize struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x4 AT_SYMLINK_NOFOLLOW = 0x2 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go new file mode 100644 index 0000000000..4e158746f1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -0,0 +1,565 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x4 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/windows/asm_windows_386.s b/vendor/golang.org/x/sys/windows/asm_windows_386.s deleted file mode 100644 index 21d994d318..0000000000 --- a/vendor/golang.org/x/sys/windows/asm_windows_386.s +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// -// System calls for 386, Windows are implemented in runtime/syscall_windows.goc -// - -TEXT ·getprocaddress(SB), 7, $0-16 - JMP syscall·getprocaddress(SB) - -TEXT ·loadlibrary(SB), 7, $0-12 - JMP syscall·loadlibrary(SB) diff --git a/vendor/golang.org/x/sys/windows/asm_windows_amd64.s b/vendor/golang.org/x/sys/windows/asm_windows_amd64.s deleted file mode 100644 index 5bfdf79741..0000000000 --- a/vendor/golang.org/x/sys/windows/asm_windows_amd64.s +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// -// System calls for amd64, Windows are implemented in runtime/syscall_windows.goc -// - -TEXT ·getprocaddress(SB), 7, $0-32 - JMP syscall·getprocaddress(SB) - -TEXT ·loadlibrary(SB), 7, $0-24 - JMP syscall·loadlibrary(SB) diff --git a/vendor/golang.org/x/sys/windows/asm_windows_arm.s b/vendor/golang.org/x/sys/windows/asm_windows_arm.s deleted file mode 100644 index 55d8b91a28..0000000000 --- a/vendor/golang.org/x/sys/windows/asm_windows_arm.s +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -#include "textflag.h" - -TEXT ·getprocaddress(SB),NOSPLIT,$0 - B syscall·getprocaddress(SB) - -TEXT ·loadlibrary(SB),NOSPLIT,$0 - B syscall·loadlibrary(SB) diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go index ba67658db1..d777113415 100644 --- a/vendor/golang.org/x/sys/windows/dll_windows.go +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -11,6 +11,18 @@ import ( "unsafe" ) +// We need to use LoadLibrary and GetProcAddress from the Go runtime, because +// the these symbols are loaded by the system linker and are required to +// dynamically load additional symbols. Note that in the Go runtime, these +// return syscall.Handle and syscall.Errno, but these are the same, in fact, +// as windows.Handle and windows.Errno, and we intend to keep these the same. + +//go:linkname syscall_loadlibrary syscall.loadlibrary +func syscall_loadlibrary(filename *uint16) (handle Handle, err Errno) + +//go:linkname syscall_getprocaddress syscall.getprocaddress +func syscall_getprocaddress(handle Handle, procname *uint8) (proc uintptr, err Errno) + // DLLError describes reasons for DLL load failures. type DLLError struct { Err error @@ -20,10 +32,6 @@ type DLLError struct { func (e *DLLError) Error() string { return e.Msg } -// Implemented in runtime/syscall_windows.goc; we provide jumps to them in our assembly file. -func loadlibrary(filename *uint16) (handle uintptr, err syscall.Errno) -func getprocaddress(handle uintptr, procname *uint8) (proc uintptr, err syscall.Errno) - // A DLL implements access to a single DLL. type DLL struct { Name string @@ -40,7 +48,7 @@ func LoadDLL(name string) (dll *DLL, err error) { if err != nil { return nil, err } - h, e := loadlibrary(namep) + h, e := syscall_loadlibrary(namep) if e != 0 { return nil, &DLLError{ Err: e, @@ -50,7 +58,7 @@ func LoadDLL(name string) (dll *DLL, err error) { } d := &DLL{ Name: name, - Handle: Handle(h), + Handle: h, } return d, nil } @@ -71,7 +79,7 @@ func (d *DLL) FindProc(name string) (proc *Proc, err error) { if err != nil { return nil, err } - a, e := getprocaddress(uintptr(d.Handle), namep) + a, e := syscall_getprocaddress(d.Handle, namep) if e != 0 { return nil, &DLLError{ Err: e, diff --git a/vendor/golang.org/x/sys/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go index bdc71e241e..f482a9fab3 100644 --- a/vendor/golang.org/x/sys/windows/env_windows.go +++ b/vendor/golang.org/x/sys/windows/env_windows.go @@ -6,7 +6,11 @@ package windows -import "syscall" +import ( + "syscall" + "unicode/utf16" + "unsafe" +) func Getenv(key string) (value string, found bool) { return syscall.Getenv(key) @@ -24,6 +28,34 @@ func Environ() []string { return syscall.Environ() } +// Returns a default environment associated with the token, rather than the current +// process. If inheritExisting is true, then this environment also inherits the +// environment of the current process. +func (token Token) Environ(inheritExisting bool) (env []string, err error) { + var block *uint16 + err = CreateEnvironmentBlock(&block, token, inheritExisting) + if err != nil { + return nil, err + } + defer DestroyEnvironmentBlock(block) + blockp := uintptr(unsafe.Pointer(block)) + for { + entry := (*[(1 << 30) - 1]uint16)(unsafe.Pointer(blockp))[:] + for i, v := range entry { + if v == 0 { + entry = entry[:i] + break + } + } + if len(entry) == 0 { + break + } + env = append(env, string(utf16.Decode(entry))) + blockp += 2 * (uintptr(len(entry)) + 1) + } + return env, nil +} + func Unsetenv(key string) error { return syscall.Unsetenv(key) } diff --git a/vendor/golang.org/x/sys/windows/mkerrors.bash b/vendor/golang.org/x/sys/windows/mkerrors.bash index a70b24f398..2163843a11 100644 --- a/vendor/golang.org/x/sys/windows/mkerrors.bash +++ b/vendor/golang.org/x/sys/windows/mkerrors.bash @@ -7,14 +7,13 @@ set -e shopt -s nullglob -[[ $# -eq 1 ]] || { echo "Usage: $0 OUTPUT_FILE.go" >&2; exit 1; } winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)" [[ -n $winerror ]] || { echo "Unable to find winerror.h" >&2; exit 1; } declare -A errors { - echo "// Code generated by 'go generate'; DO NOT EDIT." + echo "// Code generated by 'mkerrors.bash'; DO NOT EDIT." echo echo "package windows" echo "import \"syscall\"" @@ -61,4 +60,4 @@ declare -A errors done < "$winerror" echo ")" -} | gofmt > "$1" +} | gofmt > "zerrors_windows.go" diff --git a/vendor/golang.org/x/sys/windows/mkknownfolderids.bash b/vendor/golang.org/x/sys/windows/mkknownfolderids.bash new file mode 100644 index 0000000000..ab8924e936 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/mkknownfolderids.bash @@ -0,0 +1,27 @@ +#!/bin/bash + +# Copyright 2019 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +set -e +shopt -s nullglob + +knownfolders="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)" +[[ -n $knownfolders ]] || { echo "Unable to find KnownFolders.h" >&2; exit 1; } + +{ + echo "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT." + echo + echo "package windows" + echo "type KNOWNFOLDERID GUID" + echo "var (" + while read -r line; do + [[ $line =~ DEFINE_KNOWN_FOLDER\((FOLDERID_[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+)\) ]] || continue + printf "%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\n" \ + "${BASH_REMATCH[1]}" $(( "${BASH_REMATCH[2]}" )) $(( "${BASH_REMATCH[3]}" )) $(( "${BASH_REMATCH[4]}" )) \ + $(( "${BASH_REMATCH[5]}" )) $(( "${BASH_REMATCH[6]}" )) $(( "${BASH_REMATCH[7]}" )) $(( "${BASH_REMATCH[8]}" )) \ + $(( "${BASH_REMATCH[9]}" )) $(( "${BASH_REMATCH[10]}" )) $(( "${BASH_REMATCH[11]}" )) $(( "${BASH_REMATCH[12]}" )) + done < "$knownfolders" + echo ")" +} | gofmt > "zknownfolderids_windows.go" diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go index fb7db0ef8d..328e3b2ace 100644 --- a/vendor/golang.org/x/sys/windows/mksyscall.go +++ b/vendor/golang.org/x/sys/windows/mksyscall.go @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build generate + package windows -//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go +//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go diff --git a/vendor/golang.org/x/sys/windows/registry/mksyscall.go b/vendor/golang.org/x/sys/windows/registry/mksyscall.go index 0ac95ffe73..50c32a3f4e 100644 --- a/vendor/golang.org/x/sys/windows/registry/mksyscall.go +++ b/vendor/golang.org/x/sys/windows/registry/mksyscall.go @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build generate + package registry -//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go syscall.go +//go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go syscall.go diff --git a/vendor/golang.org/x/sys/windows/registry/value.go b/vendor/golang.org/x/sys/windows/registry/value.go index 71d4e15bab..7487e05f8d 100644 --- a/vendor/golang.org/x/sys/windows/registry/value.go +++ b/vendor/golang.org/x/sys/windows/registry/value.go @@ -68,7 +68,7 @@ func (k Key) GetValue(name string, buf []byte) (n int, valtype uint32, err error return int(l), valtype, nil } -func (k Key) getValue(name string, buf []byte) (date []byte, valtype uint32, err error) { +func (k Key) getValue(name string, buf []byte) (data []byte, valtype uint32, err error) { p, err := syscall.UTF16PtrFromString(name) if err != nil { return nil, 0, err @@ -241,12 +241,15 @@ func (k Key) GetIntegerValue(name string) (val uint64, valtype uint32, err error if len(data) != 4 { return 0, typ, errors.New("DWORD value is not 4 bytes long") } - return uint64(*(*uint32)(unsafe.Pointer(&data[0]))), DWORD, nil + var val32 uint32 + copy((*[4]byte)(unsafe.Pointer(&val32))[:], data) + return uint64(val32), DWORD, nil case QWORD: if len(data) != 8 { return 0, typ, errors.New("QWORD value is not 8 bytes long") } - return uint64(*(*uint64)(unsafe.Pointer(&data[0]))), QWORD, nil + copy((*[8]byte)(unsafe.Pointer(&val))[:], data) + return val, QWORD, nil default: return 0, typ, ErrUnexpectedType } diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go index da06406c44..c605ee6abb 100644 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -9,14 +9,6 @@ import ( "unsafe" ) -const ( - STANDARD_RIGHTS_REQUIRED = 0xf0000 - STANDARD_RIGHTS_READ = 0x20000 - STANDARD_RIGHTS_WRITE = 0x20000 - STANDARD_RIGHTS_EXECUTE = 0x20000 - STANDARD_RIGHTS_ALL = 0x1F0000 -) - const ( NameUnknown = 0 NameFullyQualifiedDN = 1 @@ -170,15 +162,20 @@ const ( //sys CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid //sys AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid //sys createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid +//sys isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) = advapi32.IsWellKnownSid //sys FreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid //sys EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid +//sys getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) = advapi32.GetSidIdentifierAuthority +//sys getSidSubAuthorityCount(sid *SID) (count *uint8) = advapi32.GetSidSubAuthorityCount +//sys getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) = advapi32.GetSidSubAuthority +//sys isValidSid(sid *SID) (isValid bool) = advapi32.IsValidSid // The security identifier (SID) structure is a variable-length // structure used to uniquely identify users or groups. type SID struct{} // StringToSid converts a string-format security identifier -// sid into a valid, functional sid. +// SID into a valid, functional SID. func StringToSid(s string) (*SID, error) { var sid *SID p, e := UTF16PtrFromString(s) @@ -193,7 +190,7 @@ func StringToSid(s string) (*SID, error) { return sid.Copy() } -// LookupSID retrieves a security identifier sid for the account +// LookupSID retrieves a security identifier SID for the account // and the name of the domain on which the account was found. // System specify target computer to search. func LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) { @@ -230,24 +227,23 @@ func LookupSID(system, account string) (sid *SID, domain string, accType uint32, } } -// String converts sid to a string format -// suitable for display, storage, or transmission. -func (sid *SID) String() (string, error) { +// String converts SID to a string format suitable for display, storage, or transmission. +func (sid *SID) String() string { var s *uint16 e := ConvertSidToStringSid(sid, &s) if e != nil { - return "", e + return "" } defer LocalFree((Handle)(unsafe.Pointer(s))) - return UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:]), nil + return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(s))[:]) } -// Len returns the length, in bytes, of a valid security identifier sid. +// Len returns the length, in bytes, of a valid security identifier SID. func (sid *SID) Len() int { return int(GetLengthSid(sid)) } -// Copy creates a duplicate of security identifier sid. +// Copy creates a duplicate of security identifier SID. func (sid *SID) Copy() (*SID, error) { b := make([]byte, sid.Len()) sid2 := (*SID)(unsafe.Pointer(&b[0])) @@ -258,8 +254,42 @@ func (sid *SID) Copy() (*SID, error) { return sid2, nil } -// LookupAccount retrieves the name of the account for this sid -// and the name of the first domain on which this sid is found. +// IdentifierAuthority returns the identifier authority of the SID. +func (sid *SID) IdentifierAuthority() SidIdentifierAuthority { + return *getSidIdentifierAuthority(sid) +} + +// SubAuthorityCount returns the number of sub-authorities in the SID. +func (sid *SID) SubAuthorityCount() uint8 { + return *getSidSubAuthorityCount(sid) +} + +// SubAuthority returns the sub-authority of the SID as specified by +// the index, which must be less than sid.SubAuthorityCount(). +func (sid *SID) SubAuthority(idx uint32) uint32 { + if idx >= uint32(sid.SubAuthorityCount()) { + panic("sub-authority index out of range") + } + return *getSidSubAuthority(sid, idx) +} + +// IsValid returns whether the SID has a valid revision and length. +func (sid *SID) IsValid() bool { + return isValidSid(sid) +} + +// Equals compares two SIDs for equality. +func (sid *SID) Equals(sid2 *SID) bool { + return EqualSid(sid, sid2) +} + +// IsWellKnown determines whether the SID matches the well-known sidType. +func (sid *SID) IsWellKnown(sidType WELL_KNOWN_SID_TYPE) bool { + return isWellKnownSid(sid, sidType) +} + +// LookupAccount retrieves the name of the account for this SID +// and the name of the first domain on which this SID is found. // System specify target computer to search for. func (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) { var sys *uint16 @@ -287,7 +317,7 @@ func (sid *SID) LookupAccount(system string) (account, domain string, accType ui } } -// Various types of pre-specified sids that can be synthesized at runtime. +// Various types of pre-specified SIDs that can be synthesized and compared at runtime. type WELL_KNOWN_SID_TYPE uint32 const ( @@ -413,13 +443,13 @@ const ( WinBuiltinDeviceOwnersSid = 119 ) -// Creates a sid for a well-known predefined alias, generally using the constants of the form +// Creates a SID for a well-known predefined alias, generally using the constants of the form // Win*Sid, for the local machine. func CreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE) (*SID, error) { return CreateWellKnownDomainSid(sidType, nil) } -// Creates a sid for a well-known predefined alias, generally using the constants of the form +// Creates a SID for a well-known predefined alias, generally using the constants of the form // Win*Sid, for the domain specified by the domainSid parameter. func CreateWellKnownDomainSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID) (*SID, error) { n := uint32(50) @@ -502,6 +532,53 @@ const ( MaxTokenInfoClass ) +// Group attributes inside of Tokengroups.Groups[i].Attributes +const ( + SE_GROUP_MANDATORY = 0x00000001 + SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002 + SE_GROUP_ENABLED = 0x00000004 + SE_GROUP_OWNER = 0x00000008 + SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010 + SE_GROUP_INTEGRITY = 0x00000020 + SE_GROUP_INTEGRITY_ENABLED = 0x00000040 + SE_GROUP_LOGON_ID = 0xC0000000 + SE_GROUP_RESOURCE = 0x20000000 + SE_GROUP_VALID_ATTRIBUTES = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED +) + +// Privilege attributes +const ( + SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001 + SE_PRIVILEGE_ENABLED = 0x00000002 + SE_PRIVILEGE_REMOVED = 0x00000004 + SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000 + SE_PRIVILEGE_VALID_ATTRIBUTES = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS +) + +// Token types +const ( + TokenPrimary = 1 + TokenImpersonation = 2 +) + +// Impersonation levels +const ( + SecurityAnonymous = 0 + SecurityIdentification = 1 + SecurityImpersonation = 2 + SecurityDelegation = 3 +) + +type LUID struct { + LowPart uint32 + HighPart int32 +} + +type LUIDAndAttributes struct { + Luid LUID + Attributes uint32 +} + type SIDAndAttributes struct { Sid *SID Attributes uint32 @@ -517,15 +594,49 @@ type Tokenprimarygroup struct { type Tokengroups struct { GroupCount uint32 - Groups [1]SIDAndAttributes + Groups [1]SIDAndAttributes // Use AllGroups() for iterating. +} + +// AllGroups returns a slice that can be used to iterate over the groups in g. +func (g *Tokengroups) AllGroups() []SIDAndAttributes { + return (*[(1 << 28) - 1]SIDAndAttributes)(unsafe.Pointer(&g.Groups[0]))[:g.GroupCount:g.GroupCount] +} + +type Tokenprivileges struct { + PrivilegeCount uint32 + Privileges [1]LUIDAndAttributes // Use AllPrivileges() for iterating. +} + +// AllPrivileges returns a slice that can be used to iterate over the privileges in p. +func (p *Tokenprivileges) AllPrivileges() []LUIDAndAttributes { + return (*[(1 << 27) - 1]LUIDAndAttributes)(unsafe.Pointer(&p.Privileges[0]))[:p.PrivilegeCount:p.PrivilegeCount] +} + +type Tokenmandatorylabel struct { + Label SIDAndAttributes +} + +func (tml *Tokenmandatorylabel) Size() uint32 { + return uint32(unsafe.Sizeof(Tokenmandatorylabel{})) + GetLengthSid(tml.Label.Sid) } // Authorization Functions -//sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership -//sys OpenProcessToken(h Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken -//sys GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation +//sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership +//sys OpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken +//sys OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken +//sys ImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf +//sys RevertToSelf() (err error) = advapi32.RevertToSelf +//sys SetThreadToken(thread *Handle, token Token) (err error) = advapi32.SetThreadToken +//sys LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) = advapi32.LookupPrivilegeValueW +//sys AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) = advapi32.AdjustTokenPrivileges +//sys AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) = advapi32.AdjustTokenGroups +//sys GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation +//sys SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) = advapi32.SetTokenInformation +//sys DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) = advapi32.DuplicateTokenEx //sys GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW //sys getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW +//sys getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetWindowsDirectoryW +//sys getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemWindowsDirectoryW // An access token contains the security information for a logon session. // The system creates an access token when a user logs on, and every @@ -536,19 +647,37 @@ type Tokengroups struct { // system-related operations on the local computer. type Token Handle -// OpenCurrentProcessToken opens the access token -// associated with current process. +// OpenCurrentProcessToken opens an access token associated with current +// process with TOKEN_QUERY access. It is a real token that needs to be closed. +// +// Deprecated: Explicitly call OpenProcessToken(CurrentProcess(), ...) +// with the desired access instead, or use GetCurrentProcessToken for a +// TOKEN_QUERY token. func OpenCurrentProcessToken() (Token, error) { - p, e := GetCurrentProcess() - if e != nil { - return 0, e - } - var t Token - e = OpenProcessToken(p, TOKEN_QUERY, &t) - if e != nil { - return 0, e - } - return t, nil + var token Token + err := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token) + return token, err +} + +// GetCurrentProcessToken returns the access token associated with +// the current process. It is a pseudo token that does not need +// to be closed. +func GetCurrentProcessToken() Token { + return Token(^uintptr(4 - 1)) +} + +// GetCurrentThreadToken return the access token associated with +// the current thread. It is a pseudo token that does not need +// to be closed. +func GetCurrentThreadToken() Token { + return Token(^uintptr(5 - 1)) +} + +// GetCurrentThreadEffectiveToken returns the effective access token +// associated with the current thread. It is a pseudo token that does +// not need to be closed. +func GetCurrentThreadEffectiveToken() Token { + return Token(^uintptr(6 - 1)) } // Close releases access to access token. @@ -622,8 +751,30 @@ func (t Token) GetUserProfileDirectory() (string, error) { } } -// GetSystemDirectory retrieves path to current location of the system -// directory, which is typically, though not always, C:\Windows\System32. +// IsElevated returns whether the current token is elevated from a UAC perspective. +func (token Token) IsElevated() bool { + var isElevated uint32 + var outLen uint32 + err := GetTokenInformation(token, TokenElevation, (*byte)(unsafe.Pointer(&isElevated)), uint32(unsafe.Sizeof(isElevated)), &outLen) + if err != nil { + return false + } + return outLen == uint32(unsafe.Sizeof(isElevated)) && isElevated != 0 +} + +// GetLinkedToken returns the linked token, which may be an elevated UAC token. +func (token Token) GetLinkedToken() (Token, error) { + var linkedToken Token + var outLen uint32 + err := GetTokenInformation(token, TokenLinkedToken, (*byte)(unsafe.Pointer(&linkedToken)), uint32(unsafe.Sizeof(linkedToken)), &outLen) + if err != nil { + return Token(0), err + } + return linkedToken, nil +} + +// GetSystemDirectory retrieves the path to current location of the system +// directory, which is typically, though not always, `C:\Windows\System32`. func GetSystemDirectory() (string, error) { n := uint32(MAX_PATH) for { @@ -639,6 +790,42 @@ func GetSystemDirectory() (string, error) { } } +// GetWindowsDirectory retrieves the path to current location of the Windows +// directory, which is typically, though not always, `C:\Windows`. This may +// be a private user directory in the case that the application is running +// under a terminal server. +func GetWindowsDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getWindowsDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + +// GetSystemWindowsDirectory retrieves the path to current location of the +// Windows directory, which is typically, though not always, `C:\Windows`. +func GetSystemWindowsDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getSystemWindowsDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + // IsMember reports whether the access token t is a member of the provided SID. func (t Token) IsMember(sid *SID) (bool, error) { var b int32 @@ -647,3 +834,563 @@ func (t Token) IsMember(sid *SID) (bool, error) { } return b != 0, nil } + +const ( + WTS_CONSOLE_CONNECT = 0x1 + WTS_CONSOLE_DISCONNECT = 0x2 + WTS_REMOTE_CONNECT = 0x3 + WTS_REMOTE_DISCONNECT = 0x4 + WTS_SESSION_LOGON = 0x5 + WTS_SESSION_LOGOFF = 0x6 + WTS_SESSION_LOCK = 0x7 + WTS_SESSION_UNLOCK = 0x8 + WTS_SESSION_REMOTE_CONTROL = 0x9 + WTS_SESSION_CREATE = 0xa + WTS_SESSION_TERMINATE = 0xb +) + +const ( + WTSActive = 0 + WTSConnected = 1 + WTSConnectQuery = 2 + WTSShadow = 3 + WTSDisconnected = 4 + WTSIdle = 5 + WTSListen = 6 + WTSReset = 7 + WTSDown = 8 + WTSInit = 9 +) + +type WTSSESSION_NOTIFICATION struct { + Size uint32 + SessionID uint32 +} + +type WTS_SESSION_INFO struct { + SessionID uint32 + WindowStationName *uint16 + State uint32 +} + +//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken +//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW +//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory + +type ACL struct { + aclRevision byte + sbz1 byte + aclSize uint16 + aceCount uint16 + sbz2 uint16 +} + +type SECURITY_DESCRIPTOR struct { + revision byte + sbz1 byte + control SECURITY_DESCRIPTOR_CONTROL + owner *SID + group *SID + sacl *ACL + dacl *ACL +} + +type SecurityAttributes struct { + Length uint32 + SecurityDescriptor *SECURITY_DESCRIPTOR + InheritHandle uint32 +} + +type SE_OBJECT_TYPE uint32 + +// Constants for type SE_OBJECT_TYPE +const ( + SE_UNKNOWN_OBJECT_TYPE = 0 + SE_FILE_OBJECT = 1 + SE_SERVICE = 2 + SE_PRINTER = 3 + SE_REGISTRY_KEY = 4 + SE_LMSHARE = 5 + SE_KERNEL_OBJECT = 6 + SE_WINDOW_OBJECT = 7 + SE_DS_OBJECT = 8 + SE_DS_OBJECT_ALL = 9 + SE_PROVIDER_DEFINED_OBJECT = 10 + SE_WMIGUID_OBJECT = 11 + SE_REGISTRY_WOW64_32KEY = 12 + SE_REGISTRY_WOW64_64KEY = 13 +) + +type SECURITY_INFORMATION uint32 + +// Constants for type SECURITY_INFORMATION +const ( + OWNER_SECURITY_INFORMATION = 0x00000001 + GROUP_SECURITY_INFORMATION = 0x00000002 + DACL_SECURITY_INFORMATION = 0x00000004 + SACL_SECURITY_INFORMATION = 0x00000008 + LABEL_SECURITY_INFORMATION = 0x00000010 + ATTRIBUTE_SECURITY_INFORMATION = 0x00000020 + SCOPE_SECURITY_INFORMATION = 0x00000040 + BACKUP_SECURITY_INFORMATION = 0x00010000 + PROTECTED_DACL_SECURITY_INFORMATION = 0x80000000 + PROTECTED_SACL_SECURITY_INFORMATION = 0x40000000 + UNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000 + UNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000 +) + +type SECURITY_DESCRIPTOR_CONTROL uint16 + +// Constants for type SECURITY_DESCRIPTOR_CONTROL +const ( + SE_OWNER_DEFAULTED = 0x0001 + SE_GROUP_DEFAULTED = 0x0002 + SE_DACL_PRESENT = 0x0004 + SE_DACL_DEFAULTED = 0x0008 + SE_SACL_PRESENT = 0x0010 + SE_SACL_DEFAULTED = 0x0020 + SE_DACL_AUTO_INHERIT_REQ = 0x0100 + SE_SACL_AUTO_INHERIT_REQ = 0x0200 + SE_DACL_AUTO_INHERITED = 0x0400 + SE_SACL_AUTO_INHERITED = 0x0800 + SE_DACL_PROTECTED = 0x1000 + SE_SACL_PROTECTED = 0x2000 + SE_RM_CONTROL_VALID = 0x4000 + SE_SELF_RELATIVE = 0x8000 +) + +type ACCESS_MASK uint32 + +// Constants for type ACCESS_MASK +const ( + DELETE = 0x00010000 + READ_CONTROL = 0x00020000 + WRITE_DAC = 0x00040000 + WRITE_OWNER = 0x00080000 + SYNCHRONIZE = 0x00100000 + STANDARD_RIGHTS_REQUIRED = 0x000F0000 + STANDARD_RIGHTS_READ = READ_CONTROL + STANDARD_RIGHTS_WRITE = READ_CONTROL + STANDARD_RIGHTS_EXECUTE = READ_CONTROL + STANDARD_RIGHTS_ALL = 0x001F0000 + SPECIFIC_RIGHTS_ALL = 0x0000FFFF + ACCESS_SYSTEM_SECURITY = 0x01000000 + MAXIMUM_ALLOWED = 0x02000000 + GENERIC_READ = 0x80000000 + GENERIC_WRITE = 0x40000000 + GENERIC_EXECUTE = 0x20000000 + GENERIC_ALL = 0x10000000 +) + +type ACCESS_MODE uint32 + +// Constants for type ACCESS_MODE +const ( + NOT_USED_ACCESS = 0 + GRANT_ACCESS = 1 + SET_ACCESS = 2 + DENY_ACCESS = 3 + REVOKE_ACCESS = 4 + SET_AUDIT_SUCCESS = 5 + SET_AUDIT_FAILURE = 6 +) + +// Constants for AceFlags and Inheritance fields +const ( + NO_INHERITANCE = 0x0 + SUB_OBJECTS_ONLY_INHERIT = 0x1 + SUB_CONTAINERS_ONLY_INHERIT = 0x2 + SUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3 + INHERIT_NO_PROPAGATE = 0x4 + INHERIT_ONLY = 0x8 + INHERITED_ACCESS_ENTRY = 0x10 + INHERITED_PARENT = 0x10000000 + INHERITED_GRANDPARENT = 0x20000000 + OBJECT_INHERIT_ACE = 0x1 + CONTAINER_INHERIT_ACE = 0x2 + NO_PROPAGATE_INHERIT_ACE = 0x4 + INHERIT_ONLY_ACE = 0x8 + INHERITED_ACE = 0x10 + VALID_INHERIT_FLAGS = 0x1F +) + +type MULTIPLE_TRUSTEE_OPERATION uint32 + +// Constants for MULTIPLE_TRUSTEE_OPERATION +const ( + NO_MULTIPLE_TRUSTEE = 0 + TRUSTEE_IS_IMPERSONATE = 1 +) + +type TRUSTEE_FORM uint32 + +// Constants for TRUSTEE_FORM +const ( + TRUSTEE_IS_SID = 0 + TRUSTEE_IS_NAME = 1 + TRUSTEE_BAD_FORM = 2 + TRUSTEE_IS_OBJECTS_AND_SID = 3 + TRUSTEE_IS_OBJECTS_AND_NAME = 4 +) + +type TRUSTEE_TYPE uint32 + +// Constants for TRUSTEE_TYPE +const ( + TRUSTEE_IS_UNKNOWN = 0 + TRUSTEE_IS_USER = 1 + TRUSTEE_IS_GROUP = 2 + TRUSTEE_IS_DOMAIN = 3 + TRUSTEE_IS_ALIAS = 4 + TRUSTEE_IS_WELL_KNOWN_GROUP = 5 + TRUSTEE_IS_DELETED = 6 + TRUSTEE_IS_INVALID = 7 + TRUSTEE_IS_COMPUTER = 8 +) + +// Constants for ObjectsPresent field +const ( + ACE_OBJECT_TYPE_PRESENT = 0x1 + ACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2 +) + +type EXPLICIT_ACCESS struct { + AccessPermissions ACCESS_MASK + AccessMode ACCESS_MODE + Inheritance uint32 + Trustee TRUSTEE +} + +// This type is the union inside of TRUSTEE and must be created using one of the TrusteeValueFrom* functions. +type TrusteeValue uintptr + +func TrusteeValueFromString(str string) TrusteeValue { + return TrusteeValue(unsafe.Pointer(StringToUTF16Ptr(str))) +} +func TrusteeValueFromSID(sid *SID) TrusteeValue { + return TrusteeValue(unsafe.Pointer(sid)) +} +func TrusteeValueFromObjectsAndSid(objectsAndSid *OBJECTS_AND_SID) TrusteeValue { + return TrusteeValue(unsafe.Pointer(objectsAndSid)) +} +func TrusteeValueFromObjectsAndName(objectsAndName *OBJECTS_AND_NAME) TrusteeValue { + return TrusteeValue(unsafe.Pointer(objectsAndName)) +} + +type TRUSTEE struct { + MultipleTrustee *TRUSTEE + MultipleTrusteeOperation MULTIPLE_TRUSTEE_OPERATION + TrusteeForm TRUSTEE_FORM + TrusteeType TRUSTEE_TYPE + TrusteeValue TrusteeValue +} + +type OBJECTS_AND_SID struct { + ObjectsPresent uint32 + ObjectTypeGuid GUID + InheritedObjectTypeGuid GUID + Sid *SID +} + +type OBJECTS_AND_NAME struct { + ObjectsPresent uint32 + ObjectType SE_OBJECT_TYPE + ObjectTypeName *uint16 + InheritedObjectTypeName *uint16 + Name *uint16 +} + +//sys getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetSecurityInfo +//sys SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) = advapi32.SetSecurityInfo +//sys getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetNamedSecurityInfoW +//sys SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetNamedSecurityInfoW + +//sys buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) = advapi32.BuildSecurityDescriptorW +//sys initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) = advapi32.InitializeSecurityDescriptor + +//sys getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) = advapi32.GetSecurityDescriptorControl +//sys getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorDacl +//sys getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorSacl +//sys getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorOwner +//sys getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorGroup +//sys getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) = advapi32.GetSecurityDescriptorLength +//sys getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) [failretval!=0] = advapi32.GetSecurityDescriptorRMControl +//sys isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) = advapi32.IsValidSecurityDescriptor + +//sys setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) = advapi32.SetSecurityDescriptorControl +//sys setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorDacl +//sys setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorSacl +//sys setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) = advapi32.SetSecurityDescriptorOwner +//sys setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) = advapi32.SetSecurityDescriptorGroup +//sys setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) = advapi32.SetSecurityDescriptorRMControl + +//sys convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW +//sys convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW + +//sys makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) = advapi32.MakeAbsoluteSD +//sys makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD + +//sys setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW + +// Control returns the security descriptor control bits. +func (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) { + err = getSecurityDescriptorControl(sd, &control, &revision) + return +} + +// SetControl sets the security descriptor control bits. +func (sd *SECURITY_DESCRIPTOR) SetControl(controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) error { + return setSecurityDescriptorControl(sd, controlBitsOfInterest, controlBitsToSet) +} + +// RMControl returns the security descriptor resource manager control bits. +func (sd *SECURITY_DESCRIPTOR) RMControl() (control uint8, err error) { + err = getSecurityDescriptorRMControl(sd, &control) + return +} + +// SetRMControl sets the security descriptor resource manager control bits. +func (sd *SECURITY_DESCRIPTOR) SetRMControl(rmControl uint8) { + setSecurityDescriptorRMControl(sd, &rmControl) +} + +// DACL returns the security descriptor DACL and whether it was defaulted. The dacl return value may be nil +// if a DACL exists but is an "empty DACL", meaning fully permissive. If the DACL does not exist, err returns +// ERROR_OBJECT_NOT_FOUND. +func (sd *SECURITY_DESCRIPTOR) DACL() (dacl *ACL, defaulted bool, err error) { + var present bool + err = getSecurityDescriptorDacl(sd, &present, &dacl, &defaulted) + if !present { + err = ERROR_OBJECT_NOT_FOUND + } + return +} + +// SetDACL sets the absolute security descriptor DACL. +func (absoluteSD *SECURITY_DESCRIPTOR) SetDACL(dacl *ACL, present, defaulted bool) error { + return setSecurityDescriptorDacl(absoluteSD, present, dacl, defaulted) +} + +// SACL returns the security descriptor SACL and whether it was defaulted. The sacl return value may be nil +// if a SACL exists but is an "empty SACL", meaning fully permissive. If the SACL does not exist, err returns +// ERROR_OBJECT_NOT_FOUND. +func (sd *SECURITY_DESCRIPTOR) SACL() (sacl *ACL, defaulted bool, err error) { + var present bool + err = getSecurityDescriptorSacl(sd, &present, &sacl, &defaulted) + if !present { + err = ERROR_OBJECT_NOT_FOUND + } + return +} + +// SetSACL sets the absolute security descriptor SACL. +func (absoluteSD *SECURITY_DESCRIPTOR) SetSACL(sacl *ACL, present, defaulted bool) error { + return setSecurityDescriptorSacl(absoluteSD, present, sacl, defaulted) +} + +// Owner returns the security descriptor owner and whether it was defaulted. +func (sd *SECURITY_DESCRIPTOR) Owner() (owner *SID, defaulted bool, err error) { + err = getSecurityDescriptorOwner(sd, &owner, &defaulted) + return +} + +// SetOwner sets the absolute security descriptor owner. +func (absoluteSD *SECURITY_DESCRIPTOR) SetOwner(owner *SID, defaulted bool) error { + return setSecurityDescriptorOwner(absoluteSD, owner, defaulted) +} + +// Group returns the security descriptor group and whether it was defaulted. +func (sd *SECURITY_DESCRIPTOR) Group() (group *SID, defaulted bool, err error) { + err = getSecurityDescriptorGroup(sd, &group, &defaulted) + return +} + +// SetGroup sets the absolute security descriptor owner. +func (absoluteSD *SECURITY_DESCRIPTOR) SetGroup(group *SID, defaulted bool) error { + return setSecurityDescriptorGroup(absoluteSD, group, defaulted) +} + +// Length returns the length of the security descriptor. +func (sd *SECURITY_DESCRIPTOR) Length() uint32 { + return getSecurityDescriptorLength(sd) +} + +// IsValid returns whether the security descriptor is valid. +func (sd *SECURITY_DESCRIPTOR) IsValid() bool { + return isValidSecurityDescriptor(sd) +} + +// String returns the SDDL form of the security descriptor, with a function signature that can be +// used with %v formatting directives. +func (sd *SECURITY_DESCRIPTOR) String() string { + var sddl *uint16 + err := convertSecurityDescriptorToStringSecurityDescriptor(sd, 1, 0xff, &sddl, nil) + if err != nil { + return "" + } + defer LocalFree(Handle(unsafe.Pointer(sddl))) + return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(sddl))[:]) +} + +// ToAbsolute converts a self-relative security descriptor into an absolute one. +func (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DESCRIPTOR, err error) { + control, _, err := selfRelativeSD.Control() + if err != nil { + return + } + if control&SE_SELF_RELATIVE == 0 { + err = ERROR_INVALID_PARAMETER + return + } + var absoluteSDSize, daclSize, saclSize, ownerSize, groupSize uint32 + err = makeAbsoluteSD(selfRelativeSD, nil, &absoluteSDSize, + nil, &daclSize, nil, &saclSize, nil, &ownerSize, nil, &groupSize) + switch err { + case ERROR_INSUFFICIENT_BUFFER: + case nil: + // makeAbsoluteSD is expected to fail, but it succeeds. + return nil, ERROR_INTERNAL_ERROR + default: + return nil, err + } + if absoluteSDSize > 0 { + absoluteSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, absoluteSDSize)[0])) + } + var ( + dacl *ACL + sacl *ACL + owner *SID + group *SID + ) + if daclSize > 0 { + dacl = (*ACL)(unsafe.Pointer(&make([]byte, daclSize)[0])) + } + if saclSize > 0 { + sacl = (*ACL)(unsafe.Pointer(&make([]byte, saclSize)[0])) + } + if ownerSize > 0 { + owner = (*SID)(unsafe.Pointer(&make([]byte, ownerSize)[0])) + } + if groupSize > 0 { + group = (*SID)(unsafe.Pointer(&make([]byte, groupSize)[0])) + } + err = makeAbsoluteSD(selfRelativeSD, absoluteSD, &absoluteSDSize, + dacl, &daclSize, sacl, &saclSize, owner, &ownerSize, group, &groupSize) + return +} + +// ToSelfRelative converts an absolute security descriptor into a self-relative one. +func (absoluteSD *SECURITY_DESCRIPTOR) ToSelfRelative() (selfRelativeSD *SECURITY_DESCRIPTOR, err error) { + control, _, err := absoluteSD.Control() + if err != nil { + return + } + if control&SE_SELF_RELATIVE != 0 { + err = ERROR_INVALID_PARAMETER + return + } + var selfRelativeSDSize uint32 + err = makeSelfRelativeSD(absoluteSD, nil, &selfRelativeSDSize) + switch err { + case ERROR_INSUFFICIENT_BUFFER: + case nil: + // makeSelfRelativeSD is expected to fail, but it succeeds. + return nil, ERROR_INTERNAL_ERROR + default: + return nil, err + } + if selfRelativeSDSize > 0 { + selfRelativeSD = (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&make([]byte, selfRelativeSDSize)[0])) + } + err = makeSelfRelativeSD(absoluteSD, selfRelativeSD, &selfRelativeSDSize) + return +} + +func (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR { + sdBytes := make([]byte, selfRelativeSD.Length()) + copy(sdBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(selfRelativeSD))[:len(sdBytes)]) + return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&sdBytes[0])) +} + +// SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a +// self-relative security descriptor object allocated on the Go heap. +func SecurityDescriptorFromString(sddl string) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + err = convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &winHeapSD, nil) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// GetSecurityInfo queries the security information for a given handle and returns the self-relative security +// descriptor result on the Go heap. +func GetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + err = getSecurityInfo(handle, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// GetNamedSecurityInfo queries the security information for a given named object and returns the self-relative security +// descriptor result on the Go heap. +func GetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + err = getNamedSecurityInfo(objectName, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// BuildSecurityDescriptor makes a new security descriptor using the input trustees, explicit access lists, and +// prior security descriptor to be merged, any of which can be nil, returning the self-relative security descriptor +// result on the Go heap. +func BuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, accessEntries []EXPLICIT_ACCESS, auditEntries []EXPLICIT_ACCESS, mergedSecurityDescriptor *SECURITY_DESCRIPTOR) (sd *SECURITY_DESCRIPTOR, err error) { + var winHeapSD *SECURITY_DESCRIPTOR + var winHeapSDSize uint32 + var firstAccessEntry *EXPLICIT_ACCESS + if len(accessEntries) > 0 { + firstAccessEntry = &accessEntries[0] + } + var firstAuditEntry *EXPLICIT_ACCESS + if len(auditEntries) > 0 { + firstAuditEntry = &auditEntries[0] + } + err = buildSecurityDescriptor(owner, group, uint32(len(accessEntries)), firstAccessEntry, uint32(len(auditEntries)), firstAuditEntry, mergedSecurityDescriptor, &winHeapSDSize, &winHeapSD) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapSD))) + return winHeapSD.copySelfRelativeSecurityDescriptor(), nil +} + +// NewSecurityDescriptor creates and initializes a new absolute security descriptor. +func NewSecurityDescriptor() (absoluteSD *SECURITY_DESCRIPTOR, err error) { + absoluteSD = &SECURITY_DESCRIPTOR{} + err = initializeSecurityDescriptor(absoluteSD, 1) + return +} + +// ACLFromEntries returns a new ACL on the Go heap containing a list of explicit entries as well as those of another ACL. +// Both explicitEntries and mergedACL are optional and can be nil. +func ACLFromEntries(explicitEntries []EXPLICIT_ACCESS, mergedACL *ACL) (acl *ACL, err error) { + var firstExplicitEntry *EXPLICIT_ACCESS + if len(explicitEntries) > 0 { + firstExplicitEntry = &explicitEntries[0] + } + var winHeapACL *ACL + err = setEntriesInAcl(uint32(len(explicitEntries)), firstExplicitEntry, mergedACL, &winHeapACL) + if err != nil { + return + } + defer LocalFree(Handle(unsafe.Pointer(winHeapACL))) + aclBytes := make([]byte, winHeapACL.aclSize) + copy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes)]) + return (*ACL)(unsafe.Pointer(&aclBytes[0])), nil +} diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go index 994b1290ce..847e00bc99 100644 --- a/vendor/golang.org/x/sys/windows/service.go +++ b/vendor/golang.org/x/sys/windows/service.go @@ -85,21 +85,47 @@ const ( SERVICE_INACTIVE = 2 SERVICE_STATE_ALL = 3 - SERVICE_QUERY_CONFIG = 1 - SERVICE_CHANGE_CONFIG = 2 - SERVICE_QUERY_STATUS = 4 - SERVICE_ENUMERATE_DEPENDENTS = 8 - SERVICE_START = 16 - SERVICE_STOP = 32 - SERVICE_PAUSE_CONTINUE = 64 - SERVICE_INTERROGATE = 128 - SERVICE_USER_DEFINED_CONTROL = 256 - SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL + SERVICE_QUERY_CONFIG = 1 + SERVICE_CHANGE_CONFIG = 2 + SERVICE_QUERY_STATUS = 4 + SERVICE_ENUMERATE_DEPENDENTS = 8 + SERVICE_START = 16 + SERVICE_STOP = 32 + SERVICE_PAUSE_CONTINUE = 64 + SERVICE_INTERROGATE = 128 + SERVICE_USER_DEFINED_CONTROL = 256 + SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL + SERVICE_RUNS_IN_SYSTEM_PROCESS = 1 - SERVICE_CONFIG_DESCRIPTION = 1 - SERVICE_CONFIG_FAILURE_ACTIONS = 2 + + SERVICE_CONFIG_DESCRIPTION = 1 + SERVICE_CONFIG_FAILURE_ACTIONS = 2 + SERVICE_CONFIG_DELAYED_AUTO_START_INFO = 3 + SERVICE_CONFIG_FAILURE_ACTIONS_FLAG = 4 + SERVICE_CONFIG_SERVICE_SID_INFO = 5 + SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6 + SERVICE_CONFIG_PRESHUTDOWN_INFO = 7 + SERVICE_CONFIG_TRIGGER_INFO = 8 + SERVICE_CONFIG_PREFERRED_NODE = 9 + SERVICE_CONFIG_LAUNCH_PROTECTED = 12 + + SERVICE_SID_TYPE_NONE = 0 + SERVICE_SID_TYPE_UNRESTRICTED = 1 + SERVICE_SID_TYPE_RESTRICTED = 2 | SERVICE_SID_TYPE_UNRESTRICTED SC_ENUM_PROCESS_INFO = 0 + + SERVICE_NOTIFY_STATUS_CHANGE = 2 + SERVICE_NOTIFY_STOPPED = 0x00000001 + SERVICE_NOTIFY_START_PENDING = 0x00000002 + SERVICE_NOTIFY_STOP_PENDING = 0x00000004 + SERVICE_NOTIFY_RUNNING = 0x00000008 + SERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010 + SERVICE_NOTIFY_PAUSE_PENDING = 0x00000020 + SERVICE_NOTIFY_PAUSED = 0x00000040 + SERVICE_NOTIFY_CREATED = 0x00000080 + SERVICE_NOTIFY_DELETED = 0x00000100 + SERVICE_NOTIFY_DELETE_PENDING = 0x00000200 ) type SERVICE_STATUS struct { @@ -133,6 +159,10 @@ type SERVICE_DESCRIPTION struct { Description *uint16 } +type SERVICE_DELAYED_AUTO_START_INFO struct { + IsDelayedAutoStartUp uint32 +} + type SERVICE_STATUS_PROCESS struct { ServiceType uint32 CurrentState uint32 @@ -151,6 +181,16 @@ type ENUM_SERVICE_STATUS_PROCESS struct { ServiceStatusProcess SERVICE_STATUS_PROCESS } +type SERVICE_NOTIFY struct { + Version uint32 + NotifyCallback uintptr + Context uintptr + NotificationStatus uint32 + ServiceStatus SERVICE_STATUS_PROCESS + NotificationTriggered uint32 + ServiceNames *uint16 +} + type SERVICE_FAILURE_ACTIONS struct { ResetPeriod uint32 RebootMsg *uint16 @@ -164,12 +204,19 @@ type SC_ACTION struct { Delay uint32 } +type QUERY_SERVICE_LOCK_STATUS struct { + IsLocked uint32 + LockOwner *uint16 + LockDuration uint32 +} + //sys CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle //sys CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW //sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW //sys DeleteService(service Handle) (err error) = advapi32.DeleteService //sys StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW //sys QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus +//sys QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW //sys ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService //sys StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW //sys SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus @@ -178,4 +225,5 @@ type SC_ACTION struct { //sys ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W //sys QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W //sys EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW -//sys QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx +//sys QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx +//sys NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 4c9bc55b4e..df0ffc6963 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -10,6 +10,7 @@ import ( errorspkg "errors" "sync" "syscall" + "time" "unicode/utf16" "unsafe" ) @@ -55,6 +56,14 @@ const ( FILE_UNICODE_ON_DISK = 0x00000004 FILE_VOLUME_IS_COMPRESSED = 0x00008000 FILE_VOLUME_QUOTAS = 0x00000020 + + // Flags for LockFileEx. + LOCKFILE_FAIL_IMMEDIATELY = 0x00000001 + LOCKFILE_EXCLUSIVE_LOCK = 0x00000002 + + // Return values of SleepEx and other APC functions + STATUS_USER_APC = 0x000000C0 + WAIT_IO_COMPLETION = STATUS_USER_APC ) // StringToUTF16 is deprecated. Use UTF16FromString instead. @@ -131,10 +140,13 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW //sys FreeLibrary(handle Handle) (err error) //sys GetProcAddress(module Handle, procname string) (proc uintptr, err error) +//sys GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW +//sys GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW //sys GetVersion() (ver uint32, err error) //sys FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW //sys ExitProcess(exitcode uint32) -//sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW +//sys IsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process +//sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW //sys ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) //sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) //sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) @@ -154,6 +166,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys DeleteFile(path *uint16) (err error) = DeleteFileW //sys MoveFile(from *uint16, to *uint16) (err error) = MoveFileW //sys MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW +//sys LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) +//sys UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) //sys GetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW //sys GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW //sys SetEndOfFile(handle Handle) (err error) @@ -166,11 +180,12 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CancelIo(s Handle) (err error) //sys CancelIoEx(s Handle, o *Overlapped) (err error) //sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW -//sys OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) +//sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) +//sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW +//sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath //sys TerminateProcess(handle Handle, exitcode uint32) (err error) //sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) //sys GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW -//sys GetCurrentProcess() (pseudoHandle Handle, err error) //sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) //sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) //sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] @@ -185,6 +200,9 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW //sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW //sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW +//sys CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock +//sys DestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock +//sys getTickCount64() (ms uint64) = kernel32.GetTickCount64 //sys SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) //sys GetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW //sys SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW @@ -223,7 +241,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW //sys RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW //sys RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW -//sys getCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId +//sys GetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId //sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode //sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode //sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo @@ -232,6 +250,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot //sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW //sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW +//sys Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) +//sys Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) //sys DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) // This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. //sys CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW @@ -243,6 +263,23 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys SetEvent(event Handle) (err error) = kernel32.SetEvent //sys ResetEvent(event Handle) (err error) = kernel32.ResetEvent //sys PulseEvent(event Handle) (err error) = kernel32.PulseEvent +//sys CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) = kernel32.CreateMutexW +//sys CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = kernel32.CreateMutexExW +//sys OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenMutexW +//sys ReleaseMutex(mutex Handle) (err error) = kernel32.ReleaseMutex +//sys SleepEx(milliseconds uint32, alertable bool) (ret uint32) = kernel32.SleepEx +//sys CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) = kernel32.CreateJobObjectW +//sys AssignProcessToJobObject(job Handle, process Handle) (err error) = kernel32.AssignProcessToJobObject +//sys TerminateJobObject(job Handle, exitCode uint32) (err error) = kernel32.TerminateJobObject +//sys SetErrorMode(mode uint32) (ret uint32) = kernel32.SetErrorMode +//sys ResumeThread(thread Handle) (ret uint32, err error) [failretval==0xffffffff] = kernel32.ResumeThread +//sys SetPriorityClass(process Handle, priorityClass uint32) (err error) = kernel32.SetPriorityClass +//sys GetPriorityClass(process Handle) (ret uint32, err error) = kernel32.GetPriorityClass +//sys SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) +//sys GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) +//sys GetProcessId(process Handle) (id uint32, err error) +//sys OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) +//sys SetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost // Volume Management Functions //sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW @@ -253,6 +290,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW //sys FindVolumeClose(findVolume Handle) (err error) //sys FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) +//sys GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) = GetDiskFreeSpaceExW //sys GetDriveType(rootPathName *uint16) (driveType uint32) = GetDriveTypeW //sys GetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0] //sys GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW @@ -264,9 +302,48 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW //sys SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW //sys SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW +//sys MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW +//sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx +//sys InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW +//sys SetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters +//sys GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters +//sys clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) = ole32.CLSIDFromString +//sys stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) = ole32.StringFromGUID2 +//sys coCreateGuid(pguid *GUID) (ret error) = ole32.CoCreateGuid +//sys CoTaskMemFree(address unsafe.Pointer) = ole32.CoTaskMemFree +//sys rtlGetVersion(info *OsVersionInfoEx) (ret error) = ntdll.RtlGetVersion +//sys rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers // syscall interface implementation for other packages +// GetCurrentProcess returns the handle for the current process. +// It is a pseudo handle that does not need to be closed. +// The returned error is always nil. +// +// Deprecated: use CurrentProcess for the same Handle without the nil +// error. +func GetCurrentProcess() (Handle, error) { + return CurrentProcess(), nil +} + +// CurrentProcess returns the handle for the current process. +// It is a pseudo handle that does not need to be closed. +func CurrentProcess() Handle { return Handle(^uintptr(1 - 1)) } + +// GetCurrentThread returns the handle for the current thread. +// It is a pseudo handle that does not need to be closed. +// The returned error is always nil. +// +// Deprecated: use CurrentThread for the same Handle without the nil +// error. +func GetCurrentThread() (Handle, error) { + return CurrentThread(), nil +} + +// CurrentThread returns the handle for the current thread. +// It is a pseudo handle that does not need to be closed. +func CurrentThread() Handle { return Handle(^uintptr(2 - 1)) } + // GetProcAddressByOrdinal retrieves the address of the exported // function from module by ordinal. func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) { @@ -478,6 +555,10 @@ func ComputerName() (name string, err error) { return string(utf16.Decode(b[0:n])), nil } +func DurationSinceBoot() time.Duration { + return time.Duration(getTickCount64()) * time.Millisecond +} + func Ftruncate(fd Handle, length int64) (err error) { curoffset, e := Seek(fd, 0, 1) if e != nil { @@ -561,9 +642,6 @@ func Fsync(fd Handle) (err error) { } func Chmod(path string, mode uint32) (err error) { - if mode == 0 { - return syscall.EINVAL - } p, e := UTF16PtrFromString(path) if e != nil { return e @@ -1090,7 +1168,7 @@ func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) { return syscall.EWINDOWS } -func Getpid() (pid int) { return int(getCurrentProcessId()) } +func Getpid() (pid int) { return int(GetCurrentProcessId()) } func FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) { // NOTE(rsc): The Win32finddata struct is wrong for the system call: @@ -1218,3 +1296,78 @@ func Readlink(path string, buf []byte) (n int, err error) { return n, nil } + +// GUIDFromString parses a string in the form of +// "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" into a GUID. +func GUIDFromString(str string) (GUID, error) { + guid := GUID{} + str16, err := syscall.UTF16PtrFromString(str) + if err != nil { + return guid, err + } + err = clsidFromString(str16, &guid) + if err != nil { + return guid, err + } + return guid, nil +} + +// GenerateGUID creates a new random GUID. +func GenerateGUID() (GUID, error) { + guid := GUID{} + err := coCreateGuid(&guid) + if err != nil { + return guid, err + } + return guid, nil +} + +// String returns the canonical string form of the GUID, +// in the form of "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}". +func (guid GUID) String() string { + var str [100]uint16 + chars := stringFromGUID2(&guid, &str[0], int32(len(str))) + if chars <= 1 { + return "" + } + return string(utf16.Decode(str[:chars-1])) +} + +// KnownFolderPath returns a well-known folder path for the current user, specified by one of +// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag. +func KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) { + return Token(0).KnownFolderPath(folderID, flags) +} + +// KnownFolderPath returns a well-known folder path for the user token, specified by one of +// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag. +func (t Token) KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) { + var p *uint16 + err := shGetKnownFolderPath(folderID, flags, t, &p) + if err != nil { + return "", err + } + defer CoTaskMemFree(unsafe.Pointer(p)) + return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(p))[:]), nil +} + +// RtlGetVersion returns the version of the underlying operating system, ignoring +// manifest semantics but is affected by the application compatibility layer. +func RtlGetVersion() *OsVersionInfoEx { + info := &OsVersionInfoEx{} + info.osVersionInfoSize = uint32(unsafe.Sizeof(*info)) + // According to documentation, this function always succeeds. + // The function doesn't even check the validity of the + // osVersionInfoSize member. Disassembling ntdll.dll indicates + // that the documentation is indeed correct about that. + _ = rtlGetVersion(info) + return info +} + +// RtlGetNtVersionNumbers returns the version of the underlying operating system, +// ignoring manifest semantics and the application compatibility layer. +func RtlGetNtVersionNumbers() (majorVersion, minorVersion, buildNumber uint32) { + rtlGetNtVersionNumbers(&majorVersion, &minorVersion, &buildNumber) + buildNumber &= 0xffff + return +} diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index ee27936840..7f178bb91e 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -4,7 +4,11 @@ package windows -import "syscall" +import ( + "net" + "syscall" + "unsafe" +) const ( // Invented values to support what package os expects. @@ -58,11 +62,6 @@ var signals = [...]string{ } const ( - GENERIC_READ = 0x80000000 - GENERIC_WRITE = 0x40000000 - GENERIC_EXECUTE = 0x20000000 - GENERIC_ALL = 0x10000000 - FILE_LIST_DIRECTORY = 0x00000001 FILE_APPEND_DATA = 0x00000004 FILE_WRITE_ATTRIBUTES = 0x00000100 @@ -154,17 +153,43 @@ const ( WAIT_OBJECT_0 = 0x00000000 WAIT_FAILED = 0xFFFFFFFF - PROCESS_TERMINATE = 1 - PROCESS_QUERY_INFORMATION = 0x00000400 - SYNCHRONIZE = 0x00100000 + // Access rights for process. + PROCESS_CREATE_PROCESS = 0x0080 + PROCESS_CREATE_THREAD = 0x0002 + PROCESS_DUP_HANDLE = 0x0040 + PROCESS_QUERY_INFORMATION = 0x0400 + PROCESS_QUERY_LIMITED_INFORMATION = 0x1000 + PROCESS_SET_INFORMATION = 0x0200 + PROCESS_SET_QUOTA = 0x0100 + PROCESS_SUSPEND_RESUME = 0x0800 + PROCESS_TERMINATE = 0x0001 + PROCESS_VM_OPERATION = 0x0008 + PROCESS_VM_READ = 0x0010 + PROCESS_VM_WRITE = 0x0020 + + // Access rights for thread. + THREAD_DIRECT_IMPERSONATION = 0x0200 + THREAD_GET_CONTEXT = 0x0008 + THREAD_IMPERSONATE = 0x0100 + THREAD_QUERY_INFORMATION = 0x0040 + THREAD_QUERY_LIMITED_INFORMATION = 0x0800 + THREAD_SET_CONTEXT = 0x0010 + THREAD_SET_INFORMATION = 0x0020 + THREAD_SET_LIMITED_INFORMATION = 0x0400 + THREAD_SET_THREAD_TOKEN = 0x0080 + THREAD_SUSPEND_RESUME = 0x0002 + THREAD_TERMINATE = 0x0001 FILE_MAP_COPY = 0x01 FILE_MAP_WRITE = 0x02 FILE_MAP_READ = 0x04 FILE_MAP_EXECUTE = 0x20 - CTRL_C_EVENT = 0 - CTRL_BREAK_EVENT = 1 + CTRL_C_EVENT = 0 + CTRL_BREAK_EVENT = 1 + CTRL_CLOSE_EVENT = 2 + CTRL_LOGOFF_EVENT = 5 + CTRL_SHUTDOWN_EVENT = 6 // Windows reserves errors >= 1<<29 for application use. APPLICATION_ERROR = 1 << 29 @@ -396,6 +421,26 @@ const ( SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000 ) +const ( + // flags for SetErrorMode + SEM_FAILCRITICALERRORS = 0x0001 + SEM_NOALIGNMENTFAULTEXCEPT = 0x0004 + SEM_NOGPFAULTERRORBOX = 0x0002 + SEM_NOOPENFILEERRORBOX = 0x8000 +) + +const ( + // Priority class. + ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000 + BELOW_NORMAL_PRIORITY_CLASS = 0x00004000 + HIGH_PRIORITY_CLASS = 0x00000080 + IDLE_PRIORITY_CLASS = 0x00000040 + NORMAL_PRIORITY_CLASS = 0x00000020 + PROCESS_MODE_BACKGROUND_BEGIN = 0x00100000 + PROCESS_MODE_BACKGROUND_END = 0x00200000 + REALTIME_PRIORITY_CLASS = 0x00000100 +) + var ( OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") @@ -426,12 +471,6 @@ func NsecToTimeval(nsec int64) (tv Timeval) { return } -type SecurityAttributes struct { - Length uint32 - SecurityDescriptor uintptr - InheritHandle uint32 -} - type Overlapped struct { Internal uintptr InternalHigh uintptr @@ -605,6 +644,16 @@ type ProcessEntry32 struct { ExeFile [MAX_PATH]uint16 } +type ThreadEntry32 struct { + Size uint32 + Usage uint32 + ThreadID uint32 + OwnerProcessID uint32 + BasePri int32 + DeltaPri int32 + Flags uint32 +} + type Systemtime struct { Year uint16 Month uint16 @@ -1123,6 +1172,28 @@ const ( REG_QWORD = REG_QWORD_LITTLE_ENDIAN ) +const ( + EVENT_MODIFY_STATE = 0x0002 + EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 + + MUTANT_QUERY_STATE = 0x0001 + MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE + + SEMAPHORE_MODIFY_STATE = 0x0002 + SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 + + TIMER_QUERY_STATE = 0x0001 + TIMER_MODIFY_STATE = 0x0002 + TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE + + MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE + MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS + + CREATE_EVENT_MANUAL_RESET = 0x1 + CREATE_EVENT_INITIAL_SET = 0x2 + CREATE_MUTEX_INITIAL_OWNER = 0x1 +) + type AddrinfoW struct { Flags int32 Family int32 @@ -1286,6 +1357,41 @@ const ( ComputerNameMax = 8 ) +// For MessageBox() +const ( + MB_OK = 0x00000000 + MB_OKCANCEL = 0x00000001 + MB_ABORTRETRYIGNORE = 0x00000002 + MB_YESNOCANCEL = 0x00000003 + MB_YESNO = 0x00000004 + MB_RETRYCANCEL = 0x00000005 + MB_CANCELTRYCONTINUE = 0x00000006 + MB_ICONHAND = 0x00000010 + MB_ICONQUESTION = 0x00000020 + MB_ICONEXCLAMATION = 0x00000030 + MB_ICONASTERISK = 0x00000040 + MB_USERICON = 0x00000080 + MB_ICONWARNING = MB_ICONEXCLAMATION + MB_ICONERROR = MB_ICONHAND + MB_ICONINFORMATION = MB_ICONASTERISK + MB_ICONSTOP = MB_ICONHAND + MB_DEFBUTTON1 = 0x00000000 + MB_DEFBUTTON2 = 0x00000100 + MB_DEFBUTTON3 = 0x00000200 + MB_DEFBUTTON4 = 0x00000300 + MB_APPLMODAL = 0x00000000 + MB_SYSTEMMODAL = 0x00001000 + MB_TASKMODAL = 0x00002000 + MB_HELP = 0x00004000 + MB_NOFOCUS = 0x00008000 + MB_SETFOREGROUND = 0x00010000 + MB_DEFAULT_DESKTOP_ONLY = 0x00020000 + MB_TOPMOST = 0x00040000 + MB_RIGHT = 0x00080000 + MB_RTLREADING = 0x00100000 + MB_SERVICE_NOTIFICATION = 0x00200000 +) + const ( MOVEFILE_REPLACE_EXISTING = 0x1 MOVEFILE_COPY_ALLOWED = 0x2 @@ -1314,6 +1420,16 @@ type SocketAddress struct { SockaddrLength int32 } +// IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither. +func (addr *SocketAddress) IP() net.IP { + if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET { + return (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:] + } else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 { + return (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:] + } + return nil +} + type IpAdapterUnicastAddress struct { Length uint32 Flags uint32 @@ -1439,3 +1555,190 @@ type ConsoleScreenBufferInfo struct { } const UNIX_PATH_MAX = 108 // defined in afunix.h + +const ( + // flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags + JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008 + JOB_OBJECT_LIMIT_AFFINITY = 0x00000010 + JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800 + JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400 + JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200 + JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004 + JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000 + JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040 + JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020 + JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100 + JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002 + JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080 + JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000 + JOB_OBJECT_LIMIT_SUBSET_AFFINITY = 0x00004000 + JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001 +) + +type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { + PerProcessUserTimeLimit int64 + PerJobUserTimeLimit int64 + LimitFlags uint32 + MinimumWorkingSetSize uintptr + MaximumWorkingSetSize uintptr + ActiveProcessLimit uint32 + Affinity uintptr + PriorityClass uint32 + SchedulingClass uint32 +} + +type IO_COUNTERS struct { + ReadOperationCount uint64 + WriteOperationCount uint64 + OtherOperationCount uint64 + ReadTransferCount uint64 + WriteTransferCount uint64 + OtherTransferCount uint64 +} + +type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct { + BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION + IoInfo IO_COUNTERS + ProcessMemoryLimit uintptr + JobMemoryLimit uintptr + PeakProcessMemoryUsed uintptr + PeakJobMemoryUsed uintptr +} + +const ( + // UIRestrictionsClass + JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040 + JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010 + JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080 + JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020 + JOB_OBJECT_UILIMIT_HANDLES = 0x00000001 + JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002 + JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008 + JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004 +) + +type JOBOBJECT_BASIC_UI_RESTRICTIONS struct { + UIRestrictionsClass uint32 +} + +const ( + // JobObjectInformationClass + JobObjectAssociateCompletionPortInformation = 7 + JobObjectBasicLimitInformation = 2 + JobObjectBasicUIRestrictions = 4 + JobObjectCpuRateControlInformation = 15 + JobObjectEndOfJobTimeInformation = 6 + JobObjectExtendedLimitInformation = 9 + JobObjectGroupInformation = 11 + JobObjectGroupInformationEx = 14 + JobObjectLimitViolationInformation2 = 35 + JobObjectNetRateControlInformation = 32 + JobObjectNotificationLimitInformation = 12 + JobObjectNotificationLimitInformation2 = 34 + JobObjectSecurityLimitInformation = 5 +) + +const ( + KF_FLAG_DEFAULT = 0x00000000 + KF_FLAG_FORCE_APP_DATA_REDIRECTION = 0x00080000 + KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000 + KF_FLAG_FORCE_PACKAGE_REDIRECTION = 0x00020000 + KF_FLAG_NO_PACKAGE_REDIRECTION = 0x00010000 + KF_FLAG_FORCE_APPCONTAINER_REDIRECTION = 0x00020000 + KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000 + KF_FLAG_CREATE = 0x00008000 + KF_FLAG_DONT_VERIFY = 0x00004000 + KF_FLAG_DONT_UNEXPAND = 0x00002000 + KF_FLAG_NO_ALIAS = 0x00001000 + KF_FLAG_INIT = 0x00000800 + KF_FLAG_DEFAULT_PATH = 0x00000400 + KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200 + KF_FLAG_SIMPLE_IDLIST = 0x00000100 + KF_FLAG_ALIAS_ONLY = 0x80000000 +) + +type OsVersionInfoEx struct { + osVersionInfoSize uint32 + MajorVersion uint32 + MinorVersion uint32 + BuildNumber uint32 + PlatformId uint32 + CsdVersion [128]uint16 + ServicePackMajor uint16 + ServicePackMinor uint16 + SuiteMask uint16 + ProductType byte + _ byte +} + +const ( + EWX_LOGOFF = 0x00000000 + EWX_SHUTDOWN = 0x00000001 + EWX_REBOOT = 0x00000002 + EWX_FORCE = 0x00000004 + EWX_POWEROFF = 0x00000008 + EWX_FORCEIFHUNG = 0x00000010 + EWX_QUICKRESOLVE = 0x00000020 + EWX_RESTARTAPPS = 0x00000040 + EWX_HYBRID_SHUTDOWN = 0x00400000 + EWX_BOOTOPTIONS = 0x01000000 + + SHTDN_REASON_FLAG_COMMENT_REQUIRED = 0x01000000 + SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000 + SHTDN_REASON_FLAG_CLEAN_UI = 0x04000000 + SHTDN_REASON_FLAG_DIRTY_UI = 0x08000000 + SHTDN_REASON_FLAG_USER_DEFINED = 0x40000000 + SHTDN_REASON_FLAG_PLANNED = 0x80000000 + SHTDN_REASON_MAJOR_OTHER = 0x00000000 + SHTDN_REASON_MAJOR_NONE = 0x00000000 + SHTDN_REASON_MAJOR_HARDWARE = 0x00010000 + SHTDN_REASON_MAJOR_OPERATINGSYSTEM = 0x00020000 + SHTDN_REASON_MAJOR_SOFTWARE = 0x00030000 + SHTDN_REASON_MAJOR_APPLICATION = 0x00040000 + SHTDN_REASON_MAJOR_SYSTEM = 0x00050000 + SHTDN_REASON_MAJOR_POWER = 0x00060000 + SHTDN_REASON_MAJOR_LEGACY_API = 0x00070000 + SHTDN_REASON_MINOR_OTHER = 0x00000000 + SHTDN_REASON_MINOR_NONE = 0x000000ff + SHTDN_REASON_MINOR_MAINTENANCE = 0x00000001 + SHTDN_REASON_MINOR_INSTALLATION = 0x00000002 + SHTDN_REASON_MINOR_UPGRADE = 0x00000003 + SHTDN_REASON_MINOR_RECONFIG = 0x00000004 + SHTDN_REASON_MINOR_HUNG = 0x00000005 + SHTDN_REASON_MINOR_UNSTABLE = 0x00000006 + SHTDN_REASON_MINOR_DISK = 0x00000007 + SHTDN_REASON_MINOR_PROCESSOR = 0x00000008 + SHTDN_REASON_MINOR_NETWORKCARD = 0x00000009 + SHTDN_REASON_MINOR_POWER_SUPPLY = 0x0000000a + SHTDN_REASON_MINOR_CORDUNPLUGGED = 0x0000000b + SHTDN_REASON_MINOR_ENVIRONMENT = 0x0000000c + SHTDN_REASON_MINOR_HARDWARE_DRIVER = 0x0000000d + SHTDN_REASON_MINOR_OTHERDRIVER = 0x0000000e + SHTDN_REASON_MINOR_BLUESCREEN = 0x0000000F + SHTDN_REASON_MINOR_SERVICEPACK = 0x00000010 + SHTDN_REASON_MINOR_HOTFIX = 0x00000011 + SHTDN_REASON_MINOR_SECURITYFIX = 0x00000012 + SHTDN_REASON_MINOR_SECURITY = 0x00000013 + SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = 0x00000014 + SHTDN_REASON_MINOR_WMI = 0x00000015 + SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = 0x00000016 + SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = 0x00000017 + SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = 0x00000018 + SHTDN_REASON_MINOR_MMC = 0x00000019 + SHTDN_REASON_MINOR_SYSTEMRESTORE = 0x0000001a + SHTDN_REASON_MINOR_TERMSRV = 0x00000020 + SHTDN_REASON_MINOR_DC_PROMOTION = 0x00000021 + SHTDN_REASON_MINOR_DC_DEMOTION = 0x00000022 + SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE + SHTDN_REASON_LEGACY_API = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED + SHTDN_REASON_VALID_BIT_MASK = 0xc0ffffff + + SHUTDOWN_NORETRY = 0x1 +) + +// Flags used for GetModuleHandleEx +const ( + GET_MODULE_HANDLE_EX_FLAG_PIN = 1 + GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2 + GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4 +) diff --git a/vendor/golang.org/x/sys/windows/zerrors_windows.go b/vendor/golang.org/x/sys/windows/zerrors_windows.go index 2b4cea5b94..f021200352 100644 --- a/vendor/golang.org/x/sys/windows/zerrors_windows.go +++ b/vendor/golang.org/x/sys/windows/zerrors_windows.go @@ -1,4 +1,4 @@ -// Code generated by 'go generate'; DO NOT EDIT. +// Code generated by 'mkerrors.bash'; DO NOT EDIT. package windows diff --git a/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go b/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go new file mode 100644 index 0000000000..6048ac679f --- /dev/null +++ b/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go @@ -0,0 +1,149 @@ +// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT. + +package windows + +type KNOWNFOLDERID GUID + +var ( + FOLDERID_NetworkFolder = &KNOWNFOLDERID{0xd20beec4, 0x5ca8, 0x4905, [8]byte{0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53}} + FOLDERID_ComputerFolder = &KNOWNFOLDERID{0x0ac0837c, 0xbbf8, 0x452a, [8]byte{0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7}} + FOLDERID_InternetFolder = &KNOWNFOLDERID{0x4d9f7874, 0x4e0c, 0x4904, [8]byte{0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b}} + FOLDERID_ControlPanelFolder = &KNOWNFOLDERID{0x82a74aeb, 0xaeb4, 0x465c, [8]byte{0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63}} + FOLDERID_PrintersFolder = &KNOWNFOLDERID{0x76fc4e2d, 0xd6ad, 0x4519, [8]byte{0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85}} + FOLDERID_SyncManagerFolder = &KNOWNFOLDERID{0x43668bf8, 0xc14e, 0x49b2, [8]byte{0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7}} + FOLDERID_SyncSetupFolder = &KNOWNFOLDERID{0x0f214138, 0xb1d3, 0x4a90, [8]byte{0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a}} + FOLDERID_ConflictFolder = &KNOWNFOLDERID{0x4bfefb45, 0x347d, 0x4006, [8]byte{0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92}} + FOLDERID_SyncResultsFolder = &KNOWNFOLDERID{0x289a9a43, 0xbe44, 0x4057, [8]byte{0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9}} + FOLDERID_RecycleBinFolder = &KNOWNFOLDERID{0xb7534046, 0x3ecb, 0x4c18, [8]byte{0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac}} + FOLDERID_ConnectionsFolder = &KNOWNFOLDERID{0x6f0cd92b, 0x2e97, 0x45d1, [8]byte{0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd}} + FOLDERID_Fonts = &KNOWNFOLDERID{0xfd228cb7, 0xae11, 0x4ae3, [8]byte{0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe}} + FOLDERID_Desktop = &KNOWNFOLDERID{0xb4bfcc3a, 0xdb2c, 0x424c, [8]byte{0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41}} + FOLDERID_Startup = &KNOWNFOLDERID{0xb97d20bb, 0xf46a, 0x4c97, [8]byte{0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54}} + FOLDERID_Programs = &KNOWNFOLDERID{0xa77f5d77, 0x2e2b, 0x44c3, [8]byte{0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51}} + FOLDERID_StartMenu = &KNOWNFOLDERID{0x625b53c3, 0xab48, 0x4ec1, [8]byte{0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19}} + FOLDERID_Recent = &KNOWNFOLDERID{0xae50c081, 0xebd2, 0x438a, [8]byte{0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a}} + FOLDERID_SendTo = &KNOWNFOLDERID{0x8983036c, 0x27c0, 0x404b, [8]byte{0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74}} + FOLDERID_Documents = &KNOWNFOLDERID{0xfdd39ad0, 0x238f, 0x46af, [8]byte{0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7}} + FOLDERID_Favorites = &KNOWNFOLDERID{0x1777f761, 0x68ad, 0x4d8a, [8]byte{0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd}} + FOLDERID_NetHood = &KNOWNFOLDERID{0xc5abbf53, 0xe17f, 0x4121, [8]byte{0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73}} + FOLDERID_PrintHood = &KNOWNFOLDERID{0x9274bd8d, 0xcfd1, 0x41c3, [8]byte{0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4}} + FOLDERID_Templates = &KNOWNFOLDERID{0xa63293e8, 0x664e, 0x48db, [8]byte{0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7}} + FOLDERID_CommonStartup = &KNOWNFOLDERID{0x82a5ea35, 0xd9cd, 0x47c5, [8]byte{0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e}} + FOLDERID_CommonPrograms = &KNOWNFOLDERID{0x0139d44e, 0x6afe, 0x49f2, [8]byte{0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8}} + FOLDERID_CommonStartMenu = &KNOWNFOLDERID{0xa4115719, 0xd62e, 0x491d, [8]byte{0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67}} + FOLDERID_PublicDesktop = &KNOWNFOLDERID{0xc4aa340d, 0xf20f, 0x4863, [8]byte{0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25}} + FOLDERID_ProgramData = &KNOWNFOLDERID{0x62ab5d82, 0xfdc1, 0x4dc3, [8]byte{0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97}} + FOLDERID_CommonTemplates = &KNOWNFOLDERID{0xb94237e7, 0x57ac, 0x4347, [8]byte{0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7}} + FOLDERID_PublicDocuments = &KNOWNFOLDERID{0xed4824af, 0xdce4, 0x45a8, [8]byte{0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34}} + FOLDERID_RoamingAppData = &KNOWNFOLDERID{0x3eb685db, 0x65f9, 0x4cf6, [8]byte{0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d}} + FOLDERID_LocalAppData = &KNOWNFOLDERID{0xf1b32785, 0x6fba, 0x4fcf, [8]byte{0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91}} + FOLDERID_LocalAppDataLow = &KNOWNFOLDERID{0xa520a1a4, 0x1780, 0x4ff6, [8]byte{0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16}} + FOLDERID_InternetCache = &KNOWNFOLDERID{0x352481e8, 0x33be, 0x4251, [8]byte{0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d}} + FOLDERID_Cookies = &KNOWNFOLDERID{0x2b0f765d, 0xc0e9, 0x4171, [8]byte{0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6}} + FOLDERID_History = &KNOWNFOLDERID{0xd9dc8a3b, 0xb784, 0x432e, [8]byte{0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63}} + FOLDERID_System = &KNOWNFOLDERID{0x1ac14e77, 0x02e7, 0x4e5d, [8]byte{0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7}} + FOLDERID_SystemX86 = &KNOWNFOLDERID{0xd65231b0, 0xb2f1, 0x4857, [8]byte{0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27}} + FOLDERID_Windows = &KNOWNFOLDERID{0xf38bf404, 0x1d43, 0x42f2, [8]byte{0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23}} + FOLDERID_Profile = &KNOWNFOLDERID{0x5e6c858f, 0x0e22, 0x4760, [8]byte{0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73}} + FOLDERID_Pictures = &KNOWNFOLDERID{0x33e28130, 0x4e1e, 0x4676, [8]byte{0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb}} + FOLDERID_ProgramFilesX86 = &KNOWNFOLDERID{0x7c5a40ef, 0xa0fb, 0x4bfc, [8]byte{0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e}} + FOLDERID_ProgramFilesCommonX86 = &KNOWNFOLDERID{0xde974d24, 0xd9c6, 0x4d3e, [8]byte{0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17}} + FOLDERID_ProgramFilesX64 = &KNOWNFOLDERID{0x6d809377, 0x6af0, 0x444b, [8]byte{0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e}} + FOLDERID_ProgramFilesCommonX64 = &KNOWNFOLDERID{0x6365d5a7, 0x0f0d, 0x45e5, [8]byte{0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d}} + FOLDERID_ProgramFiles = &KNOWNFOLDERID{0x905e63b6, 0xc1bf, 0x494e, [8]byte{0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a}} + FOLDERID_ProgramFilesCommon = &KNOWNFOLDERID{0xf7f1ed05, 0x9f6d, 0x47a2, [8]byte{0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66}} + FOLDERID_UserProgramFiles = &KNOWNFOLDERID{0x5cd7aee2, 0x2219, 0x4a67, [8]byte{0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb}} + FOLDERID_UserProgramFilesCommon = &KNOWNFOLDERID{0xbcbd3057, 0xca5c, 0x4622, [8]byte{0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16}} + FOLDERID_AdminTools = &KNOWNFOLDERID{0x724ef170, 0xa42d, 0x4fef, [8]byte{0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f}} + FOLDERID_CommonAdminTools = &KNOWNFOLDERID{0xd0384e7d, 0xbac3, 0x4797, [8]byte{0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5}} + FOLDERID_Music = &KNOWNFOLDERID{0x4bd8d571, 0x6d19, 0x48d3, [8]byte{0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43}} + FOLDERID_Videos = &KNOWNFOLDERID{0x18989b1d, 0x99b5, 0x455b, [8]byte{0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc}} + FOLDERID_Ringtones = &KNOWNFOLDERID{0xc870044b, 0xf49e, 0x4126, [8]byte{0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8}} + FOLDERID_PublicPictures = &KNOWNFOLDERID{0xb6ebfb86, 0x6907, 0x413c, [8]byte{0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5}} + FOLDERID_PublicMusic = &KNOWNFOLDERID{0x3214fab5, 0x9757, 0x4298, [8]byte{0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff}} + FOLDERID_PublicVideos = &KNOWNFOLDERID{0x2400183a, 0x6185, 0x49fb, [8]byte{0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3}} + FOLDERID_PublicRingtones = &KNOWNFOLDERID{0xe555ab60, 0x153b, 0x4d17, [8]byte{0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec}} + FOLDERID_ResourceDir = &KNOWNFOLDERID{0x8ad10c31, 0x2adb, 0x4296, [8]byte{0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72}} + FOLDERID_LocalizedResourcesDir = &KNOWNFOLDERID{0x2a00375e, 0x224c, 0x49de, [8]byte{0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc}} + FOLDERID_CommonOEMLinks = &KNOWNFOLDERID{0xc1bae2d0, 0x10df, 0x4334, [8]byte{0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d}} + FOLDERID_CDBurning = &KNOWNFOLDERID{0x9e52ab10, 0xf80d, 0x49df, [8]byte{0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55}} + FOLDERID_UserProfiles = &KNOWNFOLDERID{0x0762d272, 0xc50a, 0x4bb0, [8]byte{0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80}} + FOLDERID_Playlists = &KNOWNFOLDERID{0xde92c1c7, 0x837f, 0x4f69, [8]byte{0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23}} + FOLDERID_SamplePlaylists = &KNOWNFOLDERID{0x15ca69b3, 0x30ee, 0x49c1, [8]byte{0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5}} + FOLDERID_SampleMusic = &KNOWNFOLDERID{0xb250c668, 0xf57d, 0x4ee1, [8]byte{0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f}} + FOLDERID_SamplePictures = &KNOWNFOLDERID{0xc4900540, 0x2379, 0x4c75, [8]byte{0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b}} + FOLDERID_SampleVideos = &KNOWNFOLDERID{0x859ead94, 0x2e85, 0x48ad, [8]byte{0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd}} + FOLDERID_PhotoAlbums = &KNOWNFOLDERID{0x69d2cf90, 0xfc33, 0x4fb7, [8]byte{0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c}} + FOLDERID_Public = &KNOWNFOLDERID{0xdfdf76a2, 0xc82a, 0x4d63, [8]byte{0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85}} + FOLDERID_ChangeRemovePrograms = &KNOWNFOLDERID{0xdf7266ac, 0x9274, 0x4867, [8]byte{0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d}} + FOLDERID_AppUpdates = &KNOWNFOLDERID{0xa305ce99, 0xf527, 0x492b, [8]byte{0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4}} + FOLDERID_AddNewPrograms = &KNOWNFOLDERID{0xde61d971, 0x5ebc, 0x4f02, [8]byte{0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04}} + FOLDERID_Downloads = &KNOWNFOLDERID{0x374de290, 0x123f, 0x4565, [8]byte{0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b}} + FOLDERID_PublicDownloads = &KNOWNFOLDERID{0x3d644c9b, 0x1fb8, 0x4f30, [8]byte{0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0}} + FOLDERID_SavedSearches = &KNOWNFOLDERID{0x7d1d3a04, 0xdebb, 0x4115, [8]byte{0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda}} + FOLDERID_QuickLaunch = &KNOWNFOLDERID{0x52a4f021, 0x7b75, 0x48a9, [8]byte{0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f}} + FOLDERID_Contacts = &KNOWNFOLDERID{0x56784854, 0xc6cb, 0x462b, [8]byte{0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82}} + FOLDERID_SidebarParts = &KNOWNFOLDERID{0xa75d362e, 0x50fc, 0x4fb7, [8]byte{0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93}} + FOLDERID_SidebarDefaultParts = &KNOWNFOLDERID{0x7b396e54, 0x9ec5, 0x4300, [8]byte{0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26}} + FOLDERID_PublicGameTasks = &KNOWNFOLDERID{0xdebf2536, 0xe1a8, 0x4c59, [8]byte{0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea}} + FOLDERID_GameTasks = &KNOWNFOLDERID{0x054fae61, 0x4dd8, 0x4787, [8]byte{0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00}} + FOLDERID_SavedGames = &KNOWNFOLDERID{0x4c5c32ff, 0xbb9d, 0x43b0, [8]byte{0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4}} + FOLDERID_Games = &KNOWNFOLDERID{0xcac52c1a, 0xb53d, 0x4edc, [8]byte{0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34}} + FOLDERID_SEARCH_MAPI = &KNOWNFOLDERID{0x98ec0e18, 0x2098, 0x4d44, [8]byte{0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81}} + FOLDERID_SEARCH_CSC = &KNOWNFOLDERID{0xee32e446, 0x31ca, 0x4aba, [8]byte{0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e}} + FOLDERID_Links = &KNOWNFOLDERID{0xbfb9d5e0, 0xc6a9, 0x404c, [8]byte{0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68}} + FOLDERID_UsersFiles = &KNOWNFOLDERID{0xf3ce0f7c, 0x4901, 0x4acc, [8]byte{0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f}} + FOLDERID_UsersLibraries = &KNOWNFOLDERID{0xa302545d, 0xdeff, 0x464b, [8]byte{0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b}} + FOLDERID_SearchHome = &KNOWNFOLDERID{0x190337d1, 0xb8ca, 0x4121, [8]byte{0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a}} + FOLDERID_OriginalImages = &KNOWNFOLDERID{0x2c36c0aa, 0x5812, 0x4b87, [8]byte{0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39}} + FOLDERID_DocumentsLibrary = &KNOWNFOLDERID{0x7b0db17d, 0x9cd2, 0x4a93, [8]byte{0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c}} + FOLDERID_MusicLibrary = &KNOWNFOLDERID{0x2112ab0a, 0xc86a, 0x4ffe, [8]byte{0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e}} + FOLDERID_PicturesLibrary = &KNOWNFOLDERID{0xa990ae9f, 0xa03b, 0x4e80, [8]byte{0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04}} + FOLDERID_VideosLibrary = &KNOWNFOLDERID{0x491e922f, 0x5643, 0x4af4, [8]byte{0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74}} + FOLDERID_RecordedTVLibrary = &KNOWNFOLDERID{0x1a6fdba2, 0xf42d, 0x4358, [8]byte{0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5}} + FOLDERID_HomeGroup = &KNOWNFOLDERID{0x52528a6b, 0xb9e3, 0x4add, [8]byte{0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d}} + FOLDERID_HomeGroupCurrentUser = &KNOWNFOLDERID{0x9b74b6a3, 0x0dfd, 0x4f11, [8]byte{0x9e, 0x78, 0x5f, 0x78, 0x00, 0xf2, 0xe7, 0x72}} + FOLDERID_DeviceMetadataStore = &KNOWNFOLDERID{0x5ce4a5e9, 0xe4eb, 0x479d, [8]byte{0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55}} + FOLDERID_Libraries = &KNOWNFOLDERID{0x1b3ea5dc, 0xb587, 0x4786, [8]byte{0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae}} + FOLDERID_PublicLibraries = &KNOWNFOLDERID{0x48daf80b, 0xe6cf, 0x4f4e, [8]byte{0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84}} + FOLDERID_UserPinned = &KNOWNFOLDERID{0x9e3995ab, 0x1f9c, 0x4f13, [8]byte{0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74}} + FOLDERID_ImplicitAppShortcuts = &KNOWNFOLDERID{0xbcb5256f, 0x79f6, 0x4cee, [8]byte{0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46}} + FOLDERID_AccountPictures = &KNOWNFOLDERID{0x008ca0b1, 0x55b4, 0x4c56, [8]byte{0xb8, 0xa8, 0x4d, 0xe4, 0xb2, 0x99, 0xd3, 0xbe}} + FOLDERID_PublicUserTiles = &KNOWNFOLDERID{0x0482af6c, 0x08f1, 0x4c34, [8]byte{0x8c, 0x90, 0xe1, 0x7e, 0xc9, 0x8b, 0x1e, 0x17}} + FOLDERID_AppsFolder = &KNOWNFOLDERID{0x1e87508d, 0x89c2, 0x42f0, [8]byte{0x8a, 0x7e, 0x64, 0x5a, 0x0f, 0x50, 0xca, 0x58}} + FOLDERID_StartMenuAllPrograms = &KNOWNFOLDERID{0xf26305ef, 0x6948, 0x40b9, [8]byte{0xb2, 0x55, 0x81, 0x45, 0x3d, 0x09, 0xc7, 0x85}} + FOLDERID_CommonStartMenuPlaces = &KNOWNFOLDERID{0xa440879f, 0x87a0, 0x4f7d, [8]byte{0xb7, 0x00, 0x02, 0x07, 0xb9, 0x66, 0x19, 0x4a}} + FOLDERID_ApplicationShortcuts = &KNOWNFOLDERID{0xa3918781, 0xe5f2, 0x4890, [8]byte{0xb3, 0xd9, 0xa7, 0xe5, 0x43, 0x32, 0x32, 0x8c}} + FOLDERID_RoamingTiles = &KNOWNFOLDERID{0x00bcfc5a, 0xed94, 0x4e48, [8]byte{0x96, 0xa1, 0x3f, 0x62, 0x17, 0xf2, 0x19, 0x90}} + FOLDERID_RoamedTileImages = &KNOWNFOLDERID{0xaaa8d5a5, 0xf1d6, 0x4259, [8]byte{0xba, 0xa8, 0x78, 0xe7, 0xef, 0x60, 0x83, 0x5e}} + FOLDERID_Screenshots = &KNOWNFOLDERID{0xb7bede81, 0xdf94, 0x4682, [8]byte{0xa7, 0xd8, 0x57, 0xa5, 0x26, 0x20, 0xb8, 0x6f}} + FOLDERID_CameraRoll = &KNOWNFOLDERID{0xab5fb87b, 0x7ce2, 0x4f83, [8]byte{0x91, 0x5d, 0x55, 0x08, 0x46, 0xc9, 0x53, 0x7b}} + FOLDERID_SkyDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}} + FOLDERID_OneDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}} + FOLDERID_SkyDriveDocuments = &KNOWNFOLDERID{0x24d89e24, 0x2f19, 0x4534, [8]byte{0x9d, 0xde, 0x6a, 0x66, 0x71, 0xfb, 0xb8, 0xfe}} + FOLDERID_SkyDrivePictures = &KNOWNFOLDERID{0x339719b5, 0x8c47, 0x4894, [8]byte{0x94, 0xc2, 0xd8, 0xf7, 0x7a, 0xdd, 0x44, 0xa6}} + FOLDERID_SkyDriveMusic = &KNOWNFOLDERID{0xc3f2459e, 0x80d6, 0x45dc, [8]byte{0xbf, 0xef, 0x1f, 0x76, 0x9f, 0x2b, 0xe7, 0x30}} + FOLDERID_SkyDriveCameraRoll = &KNOWNFOLDERID{0x767e6811, 0x49cb, 0x4273, [8]byte{0x87, 0xc2, 0x20, 0xf3, 0x55, 0xe1, 0x08, 0x5b}} + FOLDERID_SearchHistory = &KNOWNFOLDERID{0x0d4c3db6, 0x03a3, 0x462f, [8]byte{0xa0, 0xe6, 0x08, 0x92, 0x4c, 0x41, 0xb5, 0xd4}} + FOLDERID_SearchTemplates = &KNOWNFOLDERID{0x7e636bfe, 0xdfa9, 0x4d5e, [8]byte{0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9}} + FOLDERID_CameraRollLibrary = &KNOWNFOLDERID{0x2b20df75, 0x1eda, 0x4039, [8]byte{0x80, 0x97, 0x38, 0x79, 0x82, 0x27, 0xd5, 0xb7}} + FOLDERID_SavedPictures = &KNOWNFOLDERID{0x3b193882, 0xd3ad, 0x4eab, [8]byte{0x96, 0x5a, 0x69, 0x82, 0x9d, 0x1f, 0xb5, 0x9f}} + FOLDERID_SavedPicturesLibrary = &KNOWNFOLDERID{0xe25b5812, 0xbe88, 0x4bd9, [8]byte{0x94, 0xb0, 0x29, 0x23, 0x34, 0x77, 0xb6, 0xc3}} + FOLDERID_RetailDemo = &KNOWNFOLDERID{0x12d4c69e, 0x24ad, 0x4923, [8]byte{0xbe, 0x19, 0x31, 0x32, 0x1c, 0x43, 0xa7, 0x67}} + FOLDERID_Device = &KNOWNFOLDERID{0x1c2ac1dc, 0x4358, 0x4b6c, [8]byte{0x97, 0x33, 0xaf, 0x21, 0x15, 0x65, 0x76, 0xf0}} + FOLDERID_DevelopmentFiles = &KNOWNFOLDERID{0xdbe8e08e, 0x3053, 0x4bbc, [8]byte{0xb1, 0x83, 0x2a, 0x7b, 0x2b, 0x19, 0x1e, 0x59}} + FOLDERID_Objects3D = &KNOWNFOLDERID{0x31c0dd25, 0x9439, 0x4f12, [8]byte{0xbf, 0x41, 0x7f, 0xf4, 0xed, 0xa3, 0x87, 0x22}} + FOLDERID_AppCaptures = &KNOWNFOLDERID{0xedc0fe71, 0x98d8, 0x4f4a, [8]byte{0xb9, 0x20, 0xc8, 0xdc, 0x13, 0x3c, 0xb1, 0x65}} + FOLDERID_LocalDocuments = &KNOWNFOLDERID{0xf42ee2d3, 0x909f, 0x4907, [8]byte{0x88, 0x71, 0x4c, 0x22, 0xfc, 0x0b, 0xf7, 0x56}} + FOLDERID_LocalPictures = &KNOWNFOLDERID{0x0ddd015d, 0xb06c, 0x45d5, [8]byte{0x8c, 0x4c, 0xf5, 0x97, 0x13, 0x85, 0x46, 0x39}} + FOLDERID_LocalVideos = &KNOWNFOLDERID{0x35286a68, 0x3c57, 0x41a1, [8]byte{0xbb, 0xb1, 0x0e, 0xae, 0x73, 0xd7, 0x6c, 0x95}} + FOLDERID_LocalMusic = &KNOWNFOLDERID{0xa0c69a99, 0x21c8, 0x4671, [8]byte{0x87, 0x03, 0x79, 0x34, 0x16, 0x2f, 0xcf, 0x1d}} + FOLDERID_LocalDownloads = &KNOWNFOLDERID{0x7d83ee9b, 0x2244, 0x4e70, [8]byte{0xb1, 0xf5, 0x53, 0x93, 0x04, 0x2a, 0xf1, 0xe4}} + FOLDERID_RecordedCalls = &KNOWNFOLDERID{0x2f8b40c2, 0x83ed, 0x48ee, [8]byte{0xb3, 0x83, 0xa1, 0xf1, 0x57, 0xec, 0x6f, 0x9a}} + FOLDERID_AllAppMods = &KNOWNFOLDERID{0x7ad67899, 0x66af, 0x43ba, [8]byte{0x91, 0x56, 0x6a, 0xad, 0x42, 0xe6, 0xc5, 0x96}} + FOLDERID_CurrentAppMods = &KNOWNFOLDERID{0x3db40b20, 0x2a30, 0x4dbe, [8]byte{0x91, 0x7e, 0x77, 0x1d, 0xd2, 0x1d, 0xd0, 0x99}} + FOLDERID_AppDataDesktop = &KNOWNFOLDERID{0xb2c5e279, 0x7add, 0x439f, [8]byte{0xb2, 0x8c, 0xc4, 0x1f, 0xe1, 0xbb, 0xf6, 0x72}} + FOLDERID_AppDataDocuments = &KNOWNFOLDERID{0x7be16610, 0x1f7f, 0x44ac, [8]byte{0xbf, 0xf0, 0x83, 0xe1, 0x5f, 0x2f, 0xfc, 0xa1}} + FOLDERID_AppDataFavorites = &KNOWNFOLDERID{0x7cfbefbc, 0xde1f, 0x45aa, [8]byte{0xb8, 0x43, 0xa5, 0x42, 0xac, 0x53, 0x6c, 0xc9}} + FOLDERID_AppDataProgramData = &KNOWNFOLDERID{0x559d40a3, 0xa036, 0x40fa, [8]byte{0xaf, 0x61, 0x84, 0xcb, 0x43, 0x0a, 0x4d, 0x34}} +) diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 7060f4341d..74d721e0f3 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -38,224 +38,314 @@ var ( modadvapi32 = NewLazySystemDLL("advapi32.dll") modkernel32 = NewLazySystemDLL("kernel32.dll") modshell32 = NewLazySystemDLL("shell32.dll") + moduserenv = NewLazySystemDLL("userenv.dll") modmswsock = NewLazySystemDLL("mswsock.dll") modcrypt32 = NewLazySystemDLL("crypt32.dll") + moduser32 = NewLazySystemDLL("user32.dll") + modole32 = NewLazySystemDLL("ole32.dll") + modntdll = NewLazySystemDLL("ntdll.dll") modws2_32 = NewLazySystemDLL("ws2_32.dll") moddnsapi = NewLazySystemDLL("dnsapi.dll") modiphlpapi = NewLazySystemDLL("iphlpapi.dll") modsecur32 = NewLazySystemDLL("secur32.dll") modnetapi32 = NewLazySystemDLL("netapi32.dll") - moduserenv = NewLazySystemDLL("userenv.dll") - - procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW") - procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource") - procReportEventW = modadvapi32.NewProc("ReportEventW") - procOpenSCManagerW = modadvapi32.NewProc("OpenSCManagerW") - procCloseServiceHandle = modadvapi32.NewProc("CloseServiceHandle") - procCreateServiceW = modadvapi32.NewProc("CreateServiceW") - procOpenServiceW = modadvapi32.NewProc("OpenServiceW") - procDeleteService = modadvapi32.NewProc("DeleteService") - procStartServiceW = modadvapi32.NewProc("StartServiceW") - procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus") - procControlService = modadvapi32.NewProc("ControlService") - procStartServiceCtrlDispatcherW = modadvapi32.NewProc("StartServiceCtrlDispatcherW") - procSetServiceStatus = modadvapi32.NewProc("SetServiceStatus") - procChangeServiceConfigW = modadvapi32.NewProc("ChangeServiceConfigW") - procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW") - procChangeServiceConfig2W = modadvapi32.NewProc("ChangeServiceConfig2W") - procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W") - procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW") - procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx") - procGetLastError = modkernel32.NewProc("GetLastError") - procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") - procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW") - procFreeLibrary = modkernel32.NewProc("FreeLibrary") - procGetProcAddress = modkernel32.NewProc("GetProcAddress") - procGetVersion = modkernel32.NewProc("GetVersion") - procFormatMessageW = modkernel32.NewProc("FormatMessageW") - procExitProcess = modkernel32.NewProc("ExitProcess") - procCreateFileW = modkernel32.NewProc("CreateFileW") - procReadFile = modkernel32.NewProc("ReadFile") - procWriteFile = modkernel32.NewProc("WriteFile") - procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") - procSetFilePointer = modkernel32.NewProc("SetFilePointer") - procCloseHandle = modkernel32.NewProc("CloseHandle") - procGetStdHandle = modkernel32.NewProc("GetStdHandle") - procSetStdHandle = modkernel32.NewProc("SetStdHandle") - procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") - procFindNextFileW = modkernel32.NewProc("FindNextFileW") - procFindClose = modkernel32.NewProc("FindClose") - procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle") - procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx") - procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") - procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") - procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") - procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") - procDeleteFileW = modkernel32.NewProc("DeleteFileW") - procMoveFileW = modkernel32.NewProc("MoveFileW") - procMoveFileExW = modkernel32.NewProc("MoveFileExW") - procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") - procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") - procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") - procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") - procGetSystemTimePreciseAsFileTime = modkernel32.NewProc("GetSystemTimePreciseAsFileTime") - procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") - procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") - procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") - procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus") - procCancelIo = modkernel32.NewProc("CancelIo") - procCancelIoEx = modkernel32.NewProc("CancelIoEx") - procCreateProcessW = modkernel32.NewProc("CreateProcessW") - procOpenProcess = modkernel32.NewProc("OpenProcess") - procTerminateProcess = modkernel32.NewProc("TerminateProcess") - procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") - procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") - procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess") - procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") - procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") - procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") - procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects") - procGetTempPathW = modkernel32.NewProc("GetTempPathW") - procCreatePipe = modkernel32.NewProc("CreatePipe") - procGetFileType = modkernel32.NewProc("GetFileType") - procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") - procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext") - procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom") - procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW") - procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") - procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") - procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") - procSetFileTime = modkernel32.NewProc("SetFileTime") - procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") - procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") - procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW") - procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") - procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") - procLocalFree = modkernel32.NewProc("LocalFree") - procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") - procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers") - procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW") - procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW") - procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW") - procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW") - procMapViewOfFile = modkernel32.NewProc("MapViewOfFile") - procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile") - procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") - procVirtualLock = modkernel32.NewProc("VirtualLock") - procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") - procVirtualAlloc = modkernel32.NewProc("VirtualAlloc") - procVirtualFree = modkernel32.NewProc("VirtualFree") - procVirtualProtect = modkernel32.NewProc("VirtualProtect") - procTransmitFile = modmswsock.NewProc("TransmitFile") - procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") - procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") - procCertOpenStore = modcrypt32.NewProc("CertOpenStore") - procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") - procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore") - procCertCloseStore = modcrypt32.NewProc("CertCloseStore") - procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain") - procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain") - procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext") - procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext") - procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy") - procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") - procRegCloseKey = modadvapi32.NewProc("RegCloseKey") - procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") - procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") - procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") - procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId") - procGetConsoleMode = modkernel32.NewProc("GetConsoleMode") - procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") - procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo") - procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") - procReadConsoleW = modkernel32.NewProc("ReadConsoleW") - procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") - procProcess32FirstW = modkernel32.NewProc("Process32FirstW") - procProcess32NextW = modkernel32.NewProc("Process32NextW") - procDeviceIoControl = modkernel32.NewProc("DeviceIoControl") - procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW") - procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW") - procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId") - procCreateEventW = modkernel32.NewProc("CreateEventW") - procCreateEventExW = modkernel32.NewProc("CreateEventExW") - procOpenEventW = modkernel32.NewProc("OpenEventW") - procSetEvent = modkernel32.NewProc("SetEvent") - procResetEvent = modkernel32.NewProc("ResetEvent") - procPulseEvent = modkernel32.NewProc("PulseEvent") - procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW") - procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW") - procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW") - procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW") - procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW") - procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW") - procFindVolumeClose = modkernel32.NewProc("FindVolumeClose") - procFindVolumeMountPointClose = modkernel32.NewProc("FindVolumeMountPointClose") - procGetDriveTypeW = modkernel32.NewProc("GetDriveTypeW") - procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives") - procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW") - procGetVolumeInformationW = modkernel32.NewProc("GetVolumeInformationW") - procGetVolumeInformationByHandleW = modkernel32.NewProc("GetVolumeInformationByHandleW") - procGetVolumeNameForVolumeMountPointW = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW") - procGetVolumePathNameW = modkernel32.NewProc("GetVolumePathNameW") - procGetVolumePathNamesForVolumeNameW = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW") - procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW") - procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW") - procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW") - procWSAStartup = modws2_32.NewProc("WSAStartup") - procWSACleanup = modws2_32.NewProc("WSACleanup") - procWSAIoctl = modws2_32.NewProc("WSAIoctl") - procsocket = modws2_32.NewProc("socket") - procsetsockopt = modws2_32.NewProc("setsockopt") - procgetsockopt = modws2_32.NewProc("getsockopt") - procbind = modws2_32.NewProc("bind") - procconnect = modws2_32.NewProc("connect") - procgetsockname = modws2_32.NewProc("getsockname") - procgetpeername = modws2_32.NewProc("getpeername") - proclisten = modws2_32.NewProc("listen") - procshutdown = modws2_32.NewProc("shutdown") - procclosesocket = modws2_32.NewProc("closesocket") - procAcceptEx = modmswsock.NewProc("AcceptEx") - procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") - procWSARecv = modws2_32.NewProc("WSARecv") - procWSASend = modws2_32.NewProc("WSASend") - procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") - procWSASendTo = modws2_32.NewProc("WSASendTo") - procgethostbyname = modws2_32.NewProc("gethostbyname") - procgetservbyname = modws2_32.NewProc("getservbyname") - procntohs = modws2_32.NewProc("ntohs") - procgetprotobyname = modws2_32.NewProc("getprotobyname") - procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") - procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") - procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W") - procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW") - procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW") - procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") - procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") - procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes") - procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW") - procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") - procGetACP = modkernel32.NewProc("GetACP") - procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar") - procTranslateNameW = modsecur32.NewProc("TranslateNameW") - procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") - procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") - procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation") - procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") - procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW") - procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") - procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") - procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") - procGetLengthSid = modadvapi32.NewProc("GetLengthSid") - procCopySid = modadvapi32.NewProc("CopySid") - procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid") - procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid") - procFreeSid = modadvapi32.NewProc("FreeSid") - procEqualSid = modadvapi32.NewProc("EqualSid") - procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership") - procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") - procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") - procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") - procGetSystemDirectoryW = modkernel32.NewProc("GetSystemDirectoryW") + modwtsapi32 = NewLazySystemDLL("wtsapi32.dll") + + procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW") + procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource") + procReportEventW = modadvapi32.NewProc("ReportEventW") + procOpenSCManagerW = modadvapi32.NewProc("OpenSCManagerW") + procCloseServiceHandle = modadvapi32.NewProc("CloseServiceHandle") + procCreateServiceW = modadvapi32.NewProc("CreateServiceW") + procOpenServiceW = modadvapi32.NewProc("OpenServiceW") + procDeleteService = modadvapi32.NewProc("DeleteService") + procStartServiceW = modadvapi32.NewProc("StartServiceW") + procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus") + procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW") + procControlService = modadvapi32.NewProc("ControlService") + procStartServiceCtrlDispatcherW = modadvapi32.NewProc("StartServiceCtrlDispatcherW") + procSetServiceStatus = modadvapi32.NewProc("SetServiceStatus") + procChangeServiceConfigW = modadvapi32.NewProc("ChangeServiceConfigW") + procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW") + procChangeServiceConfig2W = modadvapi32.NewProc("ChangeServiceConfig2W") + procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W") + procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW") + procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx") + procNotifyServiceStatusChangeW = modadvapi32.NewProc("NotifyServiceStatusChangeW") + procGetLastError = modkernel32.NewProc("GetLastError") + procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") + procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW") + procFreeLibrary = modkernel32.NewProc("FreeLibrary") + procGetProcAddress = modkernel32.NewProc("GetProcAddress") + procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW") + procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW") + procGetVersion = modkernel32.NewProc("GetVersion") + procFormatMessageW = modkernel32.NewProc("FormatMessageW") + procExitProcess = modkernel32.NewProc("ExitProcess") + procIsWow64Process = modkernel32.NewProc("IsWow64Process") + procCreateFileW = modkernel32.NewProc("CreateFileW") + procReadFile = modkernel32.NewProc("ReadFile") + procWriteFile = modkernel32.NewProc("WriteFile") + procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") + procSetFilePointer = modkernel32.NewProc("SetFilePointer") + procCloseHandle = modkernel32.NewProc("CloseHandle") + procGetStdHandle = modkernel32.NewProc("GetStdHandle") + procSetStdHandle = modkernel32.NewProc("SetStdHandle") + procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") + procFindNextFileW = modkernel32.NewProc("FindNextFileW") + procFindClose = modkernel32.NewProc("FindClose") + procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle") + procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx") + procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") + procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") + procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") + procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") + procDeleteFileW = modkernel32.NewProc("DeleteFileW") + procMoveFileW = modkernel32.NewProc("MoveFileW") + procMoveFileExW = modkernel32.NewProc("MoveFileExW") + procLockFileEx = modkernel32.NewProc("LockFileEx") + procUnlockFileEx = modkernel32.NewProc("UnlockFileEx") + procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") + procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") + procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") + procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") + procGetSystemTimePreciseAsFileTime = modkernel32.NewProc("GetSystemTimePreciseAsFileTime") + procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") + procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") + procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") + procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus") + procCancelIo = modkernel32.NewProc("CancelIo") + procCancelIoEx = modkernel32.NewProc("CancelIoEx") + procCreateProcessW = modkernel32.NewProc("CreateProcessW") + procOpenProcess = modkernel32.NewProc("OpenProcess") + procShellExecuteW = modshell32.NewProc("ShellExecuteW") + procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath") + procTerminateProcess = modkernel32.NewProc("TerminateProcess") + procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") + procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") + procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") + procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") + procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") + procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects") + procGetTempPathW = modkernel32.NewProc("GetTempPathW") + procCreatePipe = modkernel32.NewProc("CreatePipe") + procGetFileType = modkernel32.NewProc("GetFileType") + procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") + procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext") + procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom") + procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW") + procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") + procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") + procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") + procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock") + procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock") + procGetTickCount64 = modkernel32.NewProc("GetTickCount64") + procSetFileTime = modkernel32.NewProc("SetFileTime") + procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") + procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") + procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW") + procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") + procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") + procLocalFree = modkernel32.NewProc("LocalFree") + procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") + procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers") + procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW") + procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW") + procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW") + procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW") + procMapViewOfFile = modkernel32.NewProc("MapViewOfFile") + procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile") + procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") + procVirtualLock = modkernel32.NewProc("VirtualLock") + procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") + procVirtualAlloc = modkernel32.NewProc("VirtualAlloc") + procVirtualFree = modkernel32.NewProc("VirtualFree") + procVirtualProtect = modkernel32.NewProc("VirtualProtect") + procTransmitFile = modmswsock.NewProc("TransmitFile") + procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") + procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") + procCertOpenStore = modcrypt32.NewProc("CertOpenStore") + procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") + procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore") + procCertCloseStore = modcrypt32.NewProc("CertCloseStore") + procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain") + procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain") + procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext") + procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext") + procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy") + procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") + procRegCloseKey = modadvapi32.NewProc("RegCloseKey") + procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") + procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") + procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") + procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId") + procGetConsoleMode = modkernel32.NewProc("GetConsoleMode") + procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") + procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo") + procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") + procReadConsoleW = modkernel32.NewProc("ReadConsoleW") + procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") + procProcess32FirstW = modkernel32.NewProc("Process32FirstW") + procProcess32NextW = modkernel32.NewProc("Process32NextW") + procThread32First = modkernel32.NewProc("Thread32First") + procThread32Next = modkernel32.NewProc("Thread32Next") + procDeviceIoControl = modkernel32.NewProc("DeviceIoControl") + procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW") + procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW") + procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId") + procCreateEventW = modkernel32.NewProc("CreateEventW") + procCreateEventExW = modkernel32.NewProc("CreateEventExW") + procOpenEventW = modkernel32.NewProc("OpenEventW") + procSetEvent = modkernel32.NewProc("SetEvent") + procResetEvent = modkernel32.NewProc("ResetEvent") + procPulseEvent = modkernel32.NewProc("PulseEvent") + procCreateMutexW = modkernel32.NewProc("CreateMutexW") + procCreateMutexExW = modkernel32.NewProc("CreateMutexExW") + procOpenMutexW = modkernel32.NewProc("OpenMutexW") + procReleaseMutex = modkernel32.NewProc("ReleaseMutex") + procSleepEx = modkernel32.NewProc("SleepEx") + procCreateJobObjectW = modkernel32.NewProc("CreateJobObjectW") + procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject") + procTerminateJobObject = modkernel32.NewProc("TerminateJobObject") + procSetErrorMode = modkernel32.NewProc("SetErrorMode") + procResumeThread = modkernel32.NewProc("ResumeThread") + procSetPriorityClass = modkernel32.NewProc("SetPriorityClass") + procGetPriorityClass = modkernel32.NewProc("GetPriorityClass") + procSetInformationJobObject = modkernel32.NewProc("SetInformationJobObject") + procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent") + procGetProcessId = modkernel32.NewProc("GetProcessId") + procOpenThread = modkernel32.NewProc("OpenThread") + procSetProcessPriorityBoost = modkernel32.NewProc("SetProcessPriorityBoost") + procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW") + procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW") + procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW") + procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW") + procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW") + procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW") + procFindVolumeClose = modkernel32.NewProc("FindVolumeClose") + procFindVolumeMountPointClose = modkernel32.NewProc("FindVolumeMountPointClose") + procGetDiskFreeSpaceExW = modkernel32.NewProc("GetDiskFreeSpaceExW") + procGetDriveTypeW = modkernel32.NewProc("GetDriveTypeW") + procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives") + procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW") + procGetVolumeInformationW = modkernel32.NewProc("GetVolumeInformationW") + procGetVolumeInformationByHandleW = modkernel32.NewProc("GetVolumeInformationByHandleW") + procGetVolumeNameForVolumeMountPointW = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW") + procGetVolumePathNameW = modkernel32.NewProc("GetVolumePathNameW") + procGetVolumePathNamesForVolumeNameW = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW") + procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW") + procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW") + procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW") + procMessageBoxW = moduser32.NewProc("MessageBoxW") + procExitWindowsEx = moduser32.NewProc("ExitWindowsEx") + procInitiateSystemShutdownExW = modadvapi32.NewProc("InitiateSystemShutdownExW") + procSetProcessShutdownParameters = modkernel32.NewProc("SetProcessShutdownParameters") + procGetProcessShutdownParameters = modkernel32.NewProc("GetProcessShutdownParameters") + procCLSIDFromString = modole32.NewProc("CLSIDFromString") + procStringFromGUID2 = modole32.NewProc("StringFromGUID2") + procCoCreateGuid = modole32.NewProc("CoCreateGuid") + procCoTaskMemFree = modole32.NewProc("CoTaskMemFree") + procRtlGetVersion = modntdll.NewProc("RtlGetVersion") + procRtlGetNtVersionNumbers = modntdll.NewProc("RtlGetNtVersionNumbers") + procWSAStartup = modws2_32.NewProc("WSAStartup") + procWSACleanup = modws2_32.NewProc("WSACleanup") + procWSAIoctl = modws2_32.NewProc("WSAIoctl") + procsocket = modws2_32.NewProc("socket") + procsetsockopt = modws2_32.NewProc("setsockopt") + procgetsockopt = modws2_32.NewProc("getsockopt") + procbind = modws2_32.NewProc("bind") + procconnect = modws2_32.NewProc("connect") + procgetsockname = modws2_32.NewProc("getsockname") + procgetpeername = modws2_32.NewProc("getpeername") + proclisten = modws2_32.NewProc("listen") + procshutdown = modws2_32.NewProc("shutdown") + procclosesocket = modws2_32.NewProc("closesocket") + procAcceptEx = modmswsock.NewProc("AcceptEx") + procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") + procWSARecv = modws2_32.NewProc("WSARecv") + procWSASend = modws2_32.NewProc("WSASend") + procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") + procWSASendTo = modws2_32.NewProc("WSASendTo") + procgethostbyname = modws2_32.NewProc("gethostbyname") + procgetservbyname = modws2_32.NewProc("getservbyname") + procntohs = modws2_32.NewProc("ntohs") + procgetprotobyname = modws2_32.NewProc("getprotobyname") + procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") + procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") + procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W") + procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW") + procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW") + procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") + procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") + procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes") + procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW") + procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") + procGetACP = modkernel32.NewProc("GetACP") + procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar") + procTranslateNameW = modsecur32.NewProc("TranslateNameW") + procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") + procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") + procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation") + procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") + procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW") + procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") + procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") + procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") + procGetLengthSid = modadvapi32.NewProc("GetLengthSid") + procCopySid = modadvapi32.NewProc("CopySid") + procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid") + procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid") + procIsWellKnownSid = modadvapi32.NewProc("IsWellKnownSid") + procFreeSid = modadvapi32.NewProc("FreeSid") + procEqualSid = modadvapi32.NewProc("EqualSid") + procGetSidIdentifierAuthority = modadvapi32.NewProc("GetSidIdentifierAuthority") + procGetSidSubAuthorityCount = modadvapi32.NewProc("GetSidSubAuthorityCount") + procGetSidSubAuthority = modadvapi32.NewProc("GetSidSubAuthority") + procIsValidSid = modadvapi32.NewProc("IsValidSid") + procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership") + procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") + procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken") + procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf") + procRevertToSelf = modadvapi32.NewProc("RevertToSelf") + procSetThreadToken = modadvapi32.NewProc("SetThreadToken") + procLookupPrivilegeValueW = modadvapi32.NewProc("LookupPrivilegeValueW") + procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges") + procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups") + procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") + procSetTokenInformation = modadvapi32.NewProc("SetTokenInformation") + procDuplicateTokenEx = modadvapi32.NewProc("DuplicateTokenEx") + procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") + procGetSystemDirectoryW = modkernel32.NewProc("GetSystemDirectoryW") + procGetWindowsDirectoryW = modkernel32.NewProc("GetWindowsDirectoryW") + procGetSystemWindowsDirectoryW = modkernel32.NewProc("GetSystemWindowsDirectoryW") + procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken") + procWTSEnumerateSessionsW = modwtsapi32.NewProc("WTSEnumerateSessionsW") + procWTSFreeMemory = modwtsapi32.NewProc("WTSFreeMemory") + procGetSecurityInfo = modadvapi32.NewProc("GetSecurityInfo") + procSetSecurityInfo = modadvapi32.NewProc("SetSecurityInfo") + procGetNamedSecurityInfoW = modadvapi32.NewProc("GetNamedSecurityInfoW") + procSetNamedSecurityInfoW = modadvapi32.NewProc("SetNamedSecurityInfoW") + procBuildSecurityDescriptorW = modadvapi32.NewProc("BuildSecurityDescriptorW") + procInitializeSecurityDescriptor = modadvapi32.NewProc("InitializeSecurityDescriptor") + procGetSecurityDescriptorControl = modadvapi32.NewProc("GetSecurityDescriptorControl") + procGetSecurityDescriptorDacl = modadvapi32.NewProc("GetSecurityDescriptorDacl") + procGetSecurityDescriptorSacl = modadvapi32.NewProc("GetSecurityDescriptorSacl") + procGetSecurityDescriptorOwner = modadvapi32.NewProc("GetSecurityDescriptorOwner") + procGetSecurityDescriptorGroup = modadvapi32.NewProc("GetSecurityDescriptorGroup") + procGetSecurityDescriptorLength = modadvapi32.NewProc("GetSecurityDescriptorLength") + procGetSecurityDescriptorRMControl = modadvapi32.NewProc("GetSecurityDescriptorRMControl") + procIsValidSecurityDescriptor = modadvapi32.NewProc("IsValidSecurityDescriptor") + procSetSecurityDescriptorControl = modadvapi32.NewProc("SetSecurityDescriptorControl") + procSetSecurityDescriptorDacl = modadvapi32.NewProc("SetSecurityDescriptorDacl") + procSetSecurityDescriptorSacl = modadvapi32.NewProc("SetSecurityDescriptorSacl") + procSetSecurityDescriptorOwner = modadvapi32.NewProc("SetSecurityDescriptorOwner") + procSetSecurityDescriptorGroup = modadvapi32.NewProc("SetSecurityDescriptorGroup") + procSetSecurityDescriptorRMControl = modadvapi32.NewProc("SetSecurityDescriptorRMControl") + procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW") + procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW") + procMakeAbsoluteSD = modadvapi32.NewProc("MakeAbsoluteSD") + procMakeSelfRelativeSD = modadvapi32.NewProc("MakeSelfRelativeSD") + procSetEntriesInAclW = modadvapi32.NewProc("SetEntriesInAclW") ) func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) { @@ -382,6 +472,18 @@ func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) { return } +func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) { r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status))) if r1 == 0 { @@ -490,6 +592,14 @@ func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize return } +func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) { + r0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + func GetLastError() (lasterr error) { r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0) if r0 != 0 { @@ -576,6 +686,31 @@ func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) { return } +func GetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetModuleFileNameW.Addr(), 3, uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size)) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) { + r1, _, e1 := syscall.Syscall(procGetModuleHandleExW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(moduleName)), uintptr(unsafe.Pointer(module))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func GetVersion() (ver uint32, err error) { r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0) ver = uint32(r0) @@ -611,7 +746,26 @@ func ExitProcess(exitcode uint32) { return } -func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) { +func IsWow64Process(handle Handle, isWow64 *bool) (err error) { + var _p0 uint32 + if *isWow64 { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(&_p0)), 0) + *isWow64 = _p0 != 0 + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) { r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0) handle = Handle(r0) if handle == InvalidHandle { @@ -870,6 +1024,30 @@ func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) { return } +func LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func GetComputerName(buf *uint16, n *uint32) (err error) { r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0) if r1 == 0 { @@ -1008,14 +1186,14 @@ func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityA return } -func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) { +func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) { var _p0 uint32 if inheritHandle { _p0 = 1 } else { _p0 = 0 } - r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(da), uintptr(_p0), uintptr(pid)) + r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId)) handle = Handle(r0) if handle == 0 { if e1 != 0 { @@ -1027,9 +1205,9 @@ func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err return } -func TerminateProcess(handle Handle, exitcode uint32) (err error) { - r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0) - if r1 == 0 { +func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) { + r1, _, e1 := syscall.Syscall6(procShellExecuteW.Addr(), 6, uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd)) + if r1 <= 32 { if e1 != 0 { err = errnoErr(e1) } else { @@ -1039,8 +1217,16 @@ func TerminateProcess(handle Handle, exitcode uint32) (err error) { return } -func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0) +func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) { + r0, _, _ := syscall.Syscall6(procSHGetKnownFolderPath.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func TerminateProcess(handle Handle, exitcode uint32) (err error) { + r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -1051,8 +1237,8 @@ func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) { return } -func GetStartupInfo(startupInfo *StartupInfo) (err error) { - r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) +func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -1063,10 +1249,9 @@ func GetStartupInfo(startupInfo *StartupInfo) (err error) { return } -func GetCurrentProcess() (pseudoHandle Handle, err error) { - r0, _, e1 := syscall.Syscall(procGetCurrentProcess.Addr(), 0, 0, 0, 0) - pseudoHandle = Handle(r0) - if pseudoHandle == 0 { +func GetStartupInfo(startupInfo *StartupInfo) (err error) { + r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -1262,6 +1447,42 @@ func SetEnvironmentVariable(name *uint16, value *uint16) (err error) { return } +func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) { + var _p0 uint32 + if inheritExisting { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DestroyEnvironmentBlock(block *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getTickCount64() (ms uint64) { + r0, _, _ := syscall.Syscall(procGetTickCount64.Addr(), 0, 0, 0, 0) + ms = uint64(r0) + return +} + func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) { r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0) if r1 == 0 { @@ -1704,7 +1925,7 @@ func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32 return } -func getCurrentProcessId() (pid uint32) { +func GetCurrentProcessId() (pid uint32) { r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0) pid = uint32(r0) return @@ -1807,6 +2028,30 @@ func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) { return } +func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procThread32First.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procThread32Next.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) { r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0) if r1 == 0 { @@ -1930,9 +2175,16 @@ func PulseEvent(event Handle) (err error) { return } -func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath))) - if r1 == 0 { +func CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if initialOwner { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall(procCreateMutexW.Addr(), 3, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -1942,9 +2194,10 @@ func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err return } -func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0) - if r1 == 0 { +func CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateMutexExW.Addr(), 4, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0) + handle = Handle(r0) + if handle == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -1954,10 +2207,16 @@ func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) { return } -func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0) +func OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall(procOpenMutexW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) handle = Handle(r0) - if handle == InvalidHandle { + if handle == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -1967,10 +2226,9 @@ func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, er return } -func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) - handle = Handle(r0) - if handle == InvalidHandle { +func ReleaseMutex(mutex Handle) (err error) { + r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -1980,9 +2238,22 @@ func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, b return } -func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) - if r1 == 0 { +func SleepEx(milliseconds uint32, alertable bool) (ret uint32) { + var _p0 uint32 + if alertable { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0) + ret = uint32(r0) + return +} + +func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0) + handle = Handle(r0) + if handle == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -1992,8 +2263,8 @@ func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) return } -func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) +func AssignProcessToJobObject(job Handle, process Handle) (err error) { + r1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2004,8 +2275,8 @@ func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uin return } -func FindVolumeClose(findVolume Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0) +func TerminateJobObject(job Handle, exitCode uint32) (err error) { + r1, _, e1 := syscall.Syscall(procTerminateJobObject.Addr(), 2, uintptr(job), uintptr(exitCode), 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2016,9 +2287,16 @@ func FindVolumeClose(findVolume Handle) (err error) { return } -func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { - r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0) - if r1 == 0 { +func SetErrorMode(mode uint32) (ret uint32) { + r0, _, _ := syscall.Syscall(procSetErrorMode.Addr(), 1, uintptr(mode), 0, 0) + ret = uint32(r0) + return +} + +func ResumeThread(thread Handle) (ret uint32, err error) { + r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0) + ret = uint32(r0) + if ret == 0xffffffff { if e1 != 0 { err = errnoErr(e1) } else { @@ -2028,16 +2306,9 @@ func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { return } -func GetDriveType(rootPathName *uint16) (driveType uint32) { - r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0) - driveType = uint32(r0) - return -} - -func GetLogicalDrives() (drivesBitMask uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0) - drivesBitMask = uint32(r0) - if drivesBitMask == 0 { +func SetPriorityClass(process Handle, priorityClass uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2047,10 +2318,10 @@ func GetLogicalDrives() (drivesBitMask uint32, err error) { return } -func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0) - n = uint32(r0) - if n == 0 { +func GetPriorityClass(process Handle) (ret uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetPriorityClass.Addr(), 1, uintptr(process), 0, 0) + ret = uint32(r0) + if ret == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2060,9 +2331,10 @@ func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err return } -func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) - if r1 == 0 { +func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) { + r0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0) + ret = int(r0) + if ret == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2072,8 +2344,8 @@ func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volume return } -func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) +func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGenerateConsoleCtrlEvent.Addr(), 2, uintptr(ctrlEvent), uintptr(processGroupID), 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2084,9 +2356,10 @@ func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeN return } -func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength)) - if r1 == 0 { +func GetProcessId(process Handle) (id uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetProcessId.Addr(), 1, uintptr(process), 0, 0) + id = uint32(r0) + if id == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2096,9 +2369,16 @@ func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint return } -func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength)) - if r1 == 0 { +func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId)) + handle = Handle(r0) + if handle == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2108,8 +2388,14 @@ func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength ui return } -func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0) +func SetProcessPriorityBoost(process Handle, disable bool) (err error) { + var _p0 uint32 + if disable { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall(procSetProcessPriorityBoost.Addr(), 2, uintptr(process), uintptr(_p0), 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2120,10 +2406,9 @@ func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16 return } -func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) { - r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max)) - n = uint32(r0) - if n == 0 { +func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath))) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2133,8 +2418,8 @@ func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint3 return } -func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0) +func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2145,9 +2430,10 @@ func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) { return } -func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) { - r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0) - if r1 == 0 { +func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0) + handle = Handle(r0) + if handle == InvalidHandle { if e1 != 0 { err = errnoErr(e1) } else { @@ -2157,17 +2443,10 @@ func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err erro return } -func WSAStartup(verreq uint32, data *WSAData) (sockerr error) { - r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0) - if r0 != 0 { - sockerr = syscall.Errno(r0) - } - return -} - -func WSACleanup() (err error) { - r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0) - if r1 == socket_error { +func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + handle = Handle(r0) + if handle == InvalidHandle { if e1 != 0 { err = errnoErr(e1) } else { @@ -2177,9 +2456,9 @@ func WSACleanup() (err error) { return } -func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { - r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) - if r1 == socket_error { +func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2189,10 +2468,9 @@ func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbo return } -func socket(af int32, typ int32, protocol int32) (handle Handle, err error) { - r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol)) - handle = Handle(r0) - if handle == InvalidHandle { +func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2202,9 +2480,9 @@ func socket(af int32, typ int32, protocol int32) (handle Handle, err error) { return } -func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) { - r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0) - if r1 == socket_error { +func FindVolumeClose(findVolume Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2214,9 +2492,9 @@ func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32 return } -func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) { - r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0) - if r1 == socket_error { +func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2226,9 +2504,9 @@ func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int3 return } -func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { - r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) - if r1 == socket_error { +func GetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) { + r1, _, e1 := syscall.Syscall6(procGetDiskFreeSpaceExW.Addr(), 4, uintptr(unsafe.Pointer(directoryName)), uintptr(unsafe.Pointer(freeBytesAvailableToCaller)), uintptr(unsafe.Pointer(totalNumberOfBytes)), uintptr(unsafe.Pointer(totalNumberOfFreeBytes)), 0, 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2238,9 +2516,16 @@ func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { return } -func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { - r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) - if r1 == socket_error { +func GetDriveType(rootPathName *uint16) (driveType uint32) { + r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0) + driveType = uint32(r0) + return +} + +func GetLogicalDrives() (drivesBitMask uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0) + drivesBitMask = uint32(r0) + if drivesBitMask == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2250,9 +2535,10 @@ func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { return } -func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { - r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) - if r1 == socket_error { +func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0) + n = uint32(r0) + if n == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2262,9 +2548,9 @@ func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { return } -func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { - r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) - if r1 == socket_error { +func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2274,9 +2560,9 @@ func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { return } -func listen(s Handle, backlog int32) (err error) { - r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0) - if r1 == socket_error { +func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2286,9 +2572,9 @@ func listen(s Handle, backlog int32) (err error) { return } -func shutdown(s Handle, how int32) (err error) { - r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0) - if r1 == socket_error { +func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength)) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2298,9 +2584,9 @@ func shutdown(s Handle, how int32) (err error) { return } -func Closesocket(s Handle) (err error) { - r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0) - if r1 == socket_error { +func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength)) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2310,8 +2596,8 @@ func Closesocket(s Handle) (err error) { return } -func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) { - r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0) +func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2322,14 +2608,10 @@ func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32 return } -func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) { - syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0) - return -} - -func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) - if r1 == socket_error { +func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max)) + n = uint32(r0) + if n == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2339,9 +2621,9 @@ func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32 return } -func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) - if r1 == socket_error { +func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2351,9 +2633,9 @@ func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, return } -func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) - if r1 == socket_error { +func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2363,9 +2645,10 @@ func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *ui return } -func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) { - r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) - if r1 == socket_error { +func MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { + r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0) + ret = int32(r0) + if ret == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2375,19 +2658,9 @@ func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32 return } -func GetHostByName(name string) (h *Hostent, err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(name) - if err != nil { - return - } - return _GetHostByName(_p0) -} - -func _GetHostByName(name *byte) (h *Hostent, err error) { - r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) - h = (*Hostent)(unsafe.Pointer(r0)) - if h == nil { +func ExitWindowsEx(flags uint32, reason uint32) (err error) { + r1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2397,24 +2670,21 @@ func _GetHostByName(name *byte) (h *Hostent, err error) { return } -func GetServByName(name string, proto string) (s *Servent, err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(name) - if err != nil { - return +func InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) { + var _p0 uint32 + if forceAppsClosed { + _p0 = 1 + } else { + _p0 = 0 } - var _p1 *byte - _p1, err = syscall.BytePtrFromString(proto) - if err != nil { - return + var _p1 uint32 + if rebootAfterShutdown { + _p1 = 1 + } else { + _p1 = 0 } - return _GetServByName(_p0, _p1) -} - -func _GetServByName(name *byte, proto *byte) (s *Servent, err error) { - r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0) - s = (*Servent)(unsafe.Pointer(r0)) - if s == nil { + r1, _, e1 := syscall.Syscall6(procInitiateSystemShutdownExW.Addr(), 6, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(message)), uintptr(timeout), uintptr(_p0), uintptr(_p1), uintptr(reason)) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2424,25 +2694,9 @@ func _GetServByName(name *byte, proto *byte) (s *Servent, err error) { return } -func Ntohs(netshort uint16) (u uint16) { - r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0) - u = uint16(r0) - return -} - -func GetProtoByName(name string) (p *Protoent, err error) { - var _p0 *byte - _p0, err = syscall.BytePtrFromString(name) - if err != nil { - return - } - return _GetProtoByName(_p0) -} - -func _GetProtoByName(name *byte) (p *Protoent, err error) { - r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) - p = (*Protoent)(unsafe.Pointer(r0)) - if p == nil { +func SetProcessShutdownParameters(level uint32, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetProcessShutdownParameters.Addr(), 2, uintptr(level), uintptr(flags), 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2452,66 +2706,69 @@ func _GetProtoByName(name *byte) (p *Protoent, err error) { return } -func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { - var _p0 *uint16 - _p0, status = syscall.UTF16PtrFromString(name) - if status != nil { - return +func GetProcessShutdownParameters(level *uint32, flags *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetProcessShutdownParameters.Addr(), 2, uintptr(unsafe.Pointer(level)), uintptr(unsafe.Pointer(flags)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } } - return _DnsQuery(_p0, qtype, options, extra, qrs, pr) + return } -func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { - r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr))) +func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) { + r0, _, _ := syscall.Syscall(procCLSIDFromString.Addr(), 2, uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)), 0) if r0 != 0 { - status = syscall.Errno(r0) + ret = syscall.Errno(r0) } return } -func DnsRecordListFree(rl *DNSRecord, freetype uint32) { - syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0) - return -} - -func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) { - r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0) - same = r0 != 0 +func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) { + r0, _, _ := syscall.Syscall(procStringFromGUID2.Addr(), 3, uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax)) + chars = int32(r0) return } -func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) { - r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0) +func coCreateGuid(pguid *GUID) (ret error) { + r0, _, _ := syscall.Syscall(procCoCreateGuid.Addr(), 1, uintptr(unsafe.Pointer(pguid)), 0, 0) if r0 != 0 { - sockerr = syscall.Errno(r0) + ret = syscall.Errno(r0) } return } -func FreeAddrInfoW(addrinfo *AddrinfoW) { - syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0) +func CoTaskMemFree(address unsafe.Pointer) { + syscall.Syscall(procCoTaskMemFree.Addr(), 1, uintptr(address), 0, 0) return } -func GetIfEntry(pIfRow *MibIfRow) (errcode error) { - r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0) +func rtlGetVersion(info *OsVersionInfoEx) (ret error) { + r0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0) if r0 != 0 { - errcode = syscall.Errno(r0) + ret = syscall.Errno(r0) } return } -func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) { - r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0) +func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) { + syscall.Syscall(procRtlGetNtVersionNumbers.Addr(), 3, uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber))) + return +} + +func WSAStartup(verreq uint32, data *WSAData) (sockerr error) { + r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0) if r0 != 0 { - errcode = syscall.Errno(r0) + sockerr = syscall.Errno(r0) } return } -func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) { - r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0) - if r1 == 0 { +func WSACleanup() (err error) { + r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0) + if r1 == socket_error { if e1 != 0 { err = errnoErr(e1) } else { @@ -2521,10 +2778,9 @@ func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) return } -func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) { - r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength))) - n = int32(r0) - if n == -1 { +func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { + r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) + if r1 == socket_error { if e1 != 0 { err = errnoErr(e1) } else { @@ -2534,24 +2790,10 @@ func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferL return } -func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) { - r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0) - if r0 != 0 { - errcode = syscall.Errno(r0) - } - return -} - -func GetACP() (acp uint32) { - r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0) - acp = uint32(r0) - return -} - -func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) { - r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar)) - nwrite = int32(r0) - if nwrite == 0 { +func socket(af int32, typ int32, protocol int32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol)) + handle = Handle(r0) + if handle == InvalidHandle { if e1 != 0 { err = errnoErr(e1) } else { @@ -2561,9 +2803,9 @@ func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, return } -func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0) - if r1&0xff == 0 { +func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) { + r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0) + if r1 == socket_error { if e1 != 0 { err = errnoErr(e1) } else { @@ -2573,7 +2815,366 @@ func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint return } -func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) { +func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) { + r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { + r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { + r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { + r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { + r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func listen(s Handle, backlog int32) (err error) { + r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func shutdown(s Handle, how int32) (err error) { + r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Closesocket(s Handle) (err error) { + r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) { + syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0) + return +} + +func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetHostByName(name string) (h *Hostent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + return _GetHostByName(_p0) +} + +func _GetHostByName(name *byte) (h *Hostent, err error) { + r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + h = (*Hostent)(unsafe.Pointer(r0)) + if h == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetServByName(name string, proto string) (s *Servent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + var _p1 *byte + _p1, err = syscall.BytePtrFromString(proto) + if err != nil { + return + } + return _GetServByName(_p0, _p1) +} + +func _GetServByName(name *byte, proto *byte) (s *Servent, err error) { + r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0) + s = (*Servent)(unsafe.Pointer(r0)) + if s == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Ntohs(netshort uint16) (u uint16) { + r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0) + u = uint16(r0) + return +} + +func GetProtoByName(name string) (p *Protoent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + return _GetProtoByName(_p0) +} + +func _GetProtoByName(name *byte) (p *Protoent, err error) { + r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + p = (*Protoent)(unsafe.Pointer(r0)) + if p == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { + var _p0 *uint16 + _p0, status = syscall.UTF16PtrFromString(name) + if status != nil { + return + } + return _DnsQuery(_p0, qtype, options, extra, qrs, pr) +} + +func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { + r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr))) + if r0 != 0 { + status = syscall.Errno(r0) + } + return +} + +func DnsRecordListFree(rl *DNSRecord, freetype uint32) { + syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0) + return +} + +func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) { + r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0) + same = r0 != 0 + return +} + +func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) { + r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0) + if r0 != 0 { + sockerr = syscall.Errno(r0) + } + return +} + +func FreeAddrInfoW(addrinfo *AddrinfoW) { + syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0) + return +} + +func GetIfEntry(pIfRow *MibIfRow) (errcode error) { + r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) { + r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) { + r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) { + r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength))) + n = int32(r0) + if n == -1 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) { + r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetACP() (acp uint32) { + r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0) + acp = uint32(r0) + return +} + +func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) { + r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar)) + nwrite = int32(r0) + if nwrite == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0) + if r1&0xff == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) { r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize))) if r1&0xff == 0 { if e1 != 0 { @@ -2585,32 +3186,467 @@ func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err er return } -func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) { - r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0) +func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) { + r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) { + r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType))) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NetApiBufferFree(buf *byte) (neterr error) { + r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) { + r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) { + r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetLengthSid(sid *SID) (len uint32) { + r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + len = uint32(r0) + return +} + +func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) { + r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) { + r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) { + r0, _, _ := syscall.Syscall(procIsWellKnownSid.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(sidType), 0) + isWellKnown = r0 != 0 + return +} + +func FreeSid(sid *SID) (err error) { + r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + if r1 != 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) { + r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0) + isEqual = r0 != 0 + return +} + +func getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) { + r0, _, _ := syscall.Syscall(procGetSidIdentifierAuthority.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + authority = (*SidIdentifierAuthority)(unsafe.Pointer(r0)) + return +} + +func getSidSubAuthorityCount(sid *SID) (count *uint8) { + r0, _, _ := syscall.Syscall(procGetSidSubAuthorityCount.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + count = (*uint8)(unsafe.Pointer(r0)) + return +} + +func getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) { + r0, _, _ := syscall.Syscall(procGetSidSubAuthority.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(index), 0) + subAuthority = (*uint32)(unsafe.Pointer(r0)) + return +} + +func isValidSid(sid *SID) (isValid bool) { + r0, _, _ := syscall.Syscall(procIsValidSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + isValid = r0 != 0 + return +} + +func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) { + r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenProcessToken(process Handle, access uint32, token *Token) (err error) { + r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) { + var _p0 uint32 + if openAsSelf { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ImpersonateSelf(impersonationlevel uint32) (err error) { + r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func RevertToSelf() (err error) { + r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetThreadToken(thread *Handle, token Token) (err error) { + r1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) { + r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) { + var _p0 uint32 + if disableAllPrivileges { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) { + var _p0 uint32 + if resetToDefault { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall6(procAdjustTokenGroups.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) { + r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + len = uint32(r0) + if len == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + len = uint32(r0) + if len == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetSystemWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + len = uint32(r0) + if len == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WTSQueryUserToken(session uint32, token *Token) (err error) { + r1, _, e1 := syscall.Syscall(procWTSQueryUserToken.Addr(), 2, uintptr(session), uintptr(unsafe.Pointer(token)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procWTSEnumerateSessionsW.Addr(), 5, uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WTSFreeMemory(ptr uintptr) { + syscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0) + return +} + +func getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { + r0, _, _ := syscall.Syscall9(procGetSecurityInfo.Addr(), 8, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0) if r0 != 0 { - neterr = syscall.Errno(r0) + ret = syscall.Errno(r0) } return } -func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) { - r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType))) +func SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) { + syscall.Syscall9(procSetSecurityInfo.Addr(), 7, uintptr(handle), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) + return +} + +func getNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { + var _p0 *uint16 + _p0, ret = syscall.UTF16PtrFromString(objectName) + if ret != nil { + return + } + return _getNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl, sd) +} + +func _getNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) { + r0, _, _ := syscall.Syscall9(procGetNamedSecurityInfoW.Addr(), 8, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(sd)), 0) if r0 != 0 { - neterr = syscall.Errno(r0) + ret = syscall.Errno(r0) } return } -func NetApiBufferFree(buf *byte) (neterr error) { - r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0) +func SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { + var _p0 *uint16 + _p0, ret = syscall.UTF16PtrFromString(objectName) + if ret != nil { + return + } + return _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl) +} + +func _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) { + r0, _, _ := syscall.Syscall9(procSetNamedSecurityInfoW.Addr(), 7, uintptr(unsafe.Pointer(objectName)), uintptr(objectType), uintptr(securityInformation), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(sacl)), 0, 0) if r0 != 0 { - neterr = syscall.Errno(r0) + ret = syscall.Errno(r0) } return } -func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) +func buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) { + r0, _, _ := syscall.Syscall9(procBuildSecurityDescriptorW.Addr(), 9, uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(group)), uintptr(countAccessEntries), uintptr(unsafe.Pointer(accessEntries)), uintptr(countAuditEntries), uintptr(unsafe.Pointer(auditEntries)), uintptr(unsafe.Pointer(oldSecurityDescriptor)), uintptr(unsafe.Pointer(sizeNewSecurityDescriptor)), uintptr(unsafe.Pointer(newSecurityDescriptor))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func initializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) { + r1, _, e1 := syscall.Syscall(procInitializeSecurityDescriptor.Addr(), 2, uintptr(unsafe.Pointer(absoluteSD)), uintptr(revision), 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2621,8 +3657,8 @@ func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint3 return } -func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) +func getSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(control)), uintptr(unsafe.Pointer(revision))) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2633,8 +3669,22 @@ func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen return } -func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) { - r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0) +func getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) { + var _p0 uint32 + if *daclPresent { + _p0 = 1 + } else { + _p0 = 0 + } + var _p1 uint32 + if *daclDefaulted { + _p1 = 1 + } else { + _p1 = 0 + } + r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0) + *daclPresent = _p0 != 0 + *daclDefaulted = _p1 != 0 if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2645,8 +3695,22 @@ func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) { return } -func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) { - r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0) +func getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) { + var _p0 uint32 + if *saclPresent { + _p0 = 1 + } else { + _p0 = 0 + } + var _p1 uint32 + if *saclDefaulted { + _p1 = 1 + } else { + _p1 = 0 + } + r1, _, e1 := syscall.Syscall6(procGetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(&_p0)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(&_p1)), 0, 0) + *saclPresent = _p0 != 0 + *saclDefaulted = _p1 != 0 if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2657,14 +3721,34 @@ func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) { return } -func GetLengthSid(sid *SID) (len uint32) { - r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) - len = uint32(r0) +func getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) { + var _p0 uint32 + if *ownerDefaulted { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(&_p0))) + *ownerDefaulted = _p0 != 0 + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } return } -func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) { - r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid))) +func getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) { + var _p0 uint32 + if *groupDefaulted { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall(procGetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(&_p0))) + *groupDefaulted = _p0 != 0 if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2675,8 +3759,28 @@ func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) { return } -func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) { - r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0) +func getSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) { + r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0) + len = uint32(r0) + return +} + +func getSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) { + r0, _, _ := syscall.Syscall(procGetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) { + r0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0) + isValid = r0 != 0 + return +} + +func setSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) { + r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorControl.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(controlBitsOfInterest), uintptr(controlBitsToSet)) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2687,8 +3791,20 @@ func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, s return } -func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0) +func setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) { + var _p0 uint32 + if daclPresent { + _p0 = 1 + } else { + _p0 = 0 + } + var _p1 uint32 + if daclDefaulted { + _p1 = 1 + } else { + _p1 = 0 + } + r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1), 0, 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2699,9 +3815,21 @@ func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, s return } -func FreeSid(sid *SID) (err error) { - r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) - if r1 != 0 { +func setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) { + var _p0 uint32 + if saclPresent { + _p0 = 1 + } else { + _p0 = 0 + } + var _p1 uint32 + if saclDefaulted { + _p1 = 1 + } else { + _p1 = 0 + } + r1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1), 0, 0) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2711,14 +3839,32 @@ func FreeSid(sid *SID) (err error) { return } -func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) { - r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0) - isEqual = r0 != 0 +func setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) { + var _p0 uint32 + if ownerDefaulted { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } return } -func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) { - r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember))) +func setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) { + var _p0 uint32 + if groupDefaulted { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall(procSetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0)) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2729,8 +3875,22 @@ func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) ( return } -func OpenProcessToken(h Handle, access uint32, token *Token) (err error) { - r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token))) +func setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) { + syscall.Syscall(procSetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0) + return +} + +func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(str) + if err != nil { + return + } + return _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size) +} + +func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2741,8 +3901,8 @@ func OpenProcessToken(h Handle, access uint32, token *Token) (err error) { return } -func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(t), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0) +func convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(securityInformation), uintptr(unsafe.Pointer(str)), uintptr(unsafe.Pointer(strLen)), 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2753,8 +3913,8 @@ func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, return } -func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { - r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen))) +func makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall12(procMakeAbsoluteSD.Addr(), 11, uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(absoluteSDSize)), uintptr(unsafe.Pointer(dacl)), uintptr(unsafe.Pointer(daclSize)), uintptr(unsafe.Pointer(sacl)), uintptr(unsafe.Pointer(saclSize)), uintptr(unsafe.Pointer(owner)), uintptr(unsafe.Pointer(ownerSize)), uintptr(unsafe.Pointer(group)), uintptr(unsafe.Pointer(groupSize)), 0) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2765,10 +3925,9 @@ func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { return } -func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { - r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) - len = uint32(r0) - if len == 0 { +func makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procMakeSelfRelativeSD.Addr(), 3, uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize))) + if r1 == 0 { if e1 != 0 { err = errnoErr(e1) } else { @@ -2777,3 +3936,11 @@ func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { } return } + +func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) { + r0, _, _ := syscall.Syscall6(procSetEntriesInAclW.Addr(), 4, uintptr(countExplicitEntries), uintptr(unsafe.Pointer(explicitEntries)), uintptr(unsafe.Pointer(oldACL)), uintptr(unsafe.Pointer(newACL)), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} diff --git a/vendor/golang.org/x/text/transform/transform.go b/vendor/golang.org/x/text/transform/transform.go index fe47b9b35f..520b9ada0e 100644 --- a/vendor/golang.org/x/text/transform/transform.go +++ b/vendor/golang.org/x/text/transform/transform.go @@ -78,8 +78,8 @@ type SpanningTransformer interface { // considering the error err. // // A nil error means that all input bytes are known to be identical to the - // output produced by the Transformer. A nil error can be be returned - // regardless of whether atEOF is true. If err is nil, then then n must + // output produced by the Transformer. A nil error can be returned + // regardless of whether atEOF is true. If err is nil, then n must // equal len(src); the converse is not necessarily true. // // ErrEndOfSpan means that the Transformer output may differ from the @@ -493,7 +493,7 @@ func (c *chain) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err erro return dstL.n, srcL.p, err } -// Deprecated: use runes.Remove instead. +// Deprecated: Use runes.Remove instead. func RemoveFunc(f func(r rune) bool) Transformer { return removeF(f) } diff --git a/vendor/golang.org/x/text/unicode/bidi/bidi.go b/vendor/golang.org/x/text/unicode/bidi/bidi.go index 3fc4a62521..e8edc54cc2 100644 --- a/vendor/golang.org/x/text/unicode/bidi/bidi.go +++ b/vendor/golang.org/x/text/unicode/bidi/bidi.go @@ -6,7 +6,7 @@ // Package bidi contains functionality for bidirectional text support. // -// See http://www.unicode.org/reports/tr9. +// See https://www.unicode.org/reports/tr9. // // NOTE: UNDER CONSTRUCTION. This API may change in backwards incompatible ways // and without notice. diff --git a/vendor/golang.org/x/text/unicode/bidi/bracket.go b/vendor/golang.org/x/text/unicode/bidi/bracket.go index 601e259203..1853939791 100644 --- a/vendor/golang.org/x/text/unicode/bidi/bracket.go +++ b/vendor/golang.org/x/text/unicode/bidi/bracket.go @@ -12,7 +12,7 @@ import ( // This file contains a port of the reference implementation of the // Bidi Parentheses Algorithm: -// http://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/BidiPBAReference.java +// https://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/BidiPBAReference.java // // The implementation in this file covers definitions BD14-BD16 and rule N0 // of UAX#9. @@ -246,7 +246,7 @@ func (p *bracketPairer) getStrongTypeN0(index int) Class { // assuming the given embedding direction. // // It returns ON if no strong type is found. If a single strong type is found, -// it returns this this type. Otherwise it returns the embedding direction. +// it returns this type. Otherwise it returns the embedding direction. // // TODO: use separate type for "strong" directionality. func (p *bracketPairer) classifyPairContent(loc bracketPair, dirEmbed Class) Class { diff --git a/vendor/golang.org/x/text/unicode/bidi/core.go b/vendor/golang.org/x/text/unicode/bidi/core.go index d4c1399f0d..48d144008a 100644 --- a/vendor/golang.org/x/text/unicode/bidi/core.go +++ b/vendor/golang.org/x/text/unicode/bidi/core.go @@ -7,7 +7,7 @@ package bidi import "log" // This implementation is a port based on the reference implementation found at: -// http://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/ +// https://www.unicode.org/Public/PROGRAMS/BidiReferenceJava/ // // described in Unicode Bidirectional Algorithm (UAX #9). // diff --git a/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go index 2e1ff19599..d8c94e1bd1 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go @@ -1,6 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. -// +build go1.10 +// +build go1.10,!go1.13 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go new file mode 100644 index 0000000000..022e3c6909 --- /dev/null +++ b/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go @@ -0,0 +1,1887 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// +build go1.13 + +package bidi + +// UnicodeVersion is the Unicode version from which the tables in this package are derived. +const UnicodeVersion = "11.0.0" + +// xorMasks contains masks to be xor-ed with brackets to get the reverse +// version. +var xorMasks = []int32{ // 8 elements + 0, 1, 6, 7, 3, 15, 29, 63, +} // Size: 56 bytes + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *bidiTrie) lookup(s []byte) (v uint8, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return bidiValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = bidiIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *bidiTrie) lookupUnsafe(s []byte) uint8 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return bidiValues[c0] + } + i := bidiIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *bidiTrie) lookupString(s string) (v uint8, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return bidiValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := bidiIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = bidiIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = bidiIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *bidiTrie) lookupStringUnsafe(s string) uint8 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return bidiValues[c0] + } + i := bidiIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = bidiIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// bidiTrie. Total size: 16512 bytes (16.12 KiB). Checksum: 2a9cf1317f2ffaa. +type bidiTrie struct{} + +func newBidiTrie(i int) *bidiTrie { + return &bidiTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *bidiTrie) lookupValue(n uint32, b byte) uint8 { + switch { + default: + return uint8(bidiValues[n<<6+uint32(b)]) + } +} + +// bidiValues: 234 blocks, 14976 entries, 14976 bytes +// The third block is the zero block. +var bidiValues = [14976]uint8{ + // Block 0x0, offset 0x0 + 0x00: 0x000b, 0x01: 0x000b, 0x02: 0x000b, 0x03: 0x000b, 0x04: 0x000b, 0x05: 0x000b, + 0x06: 0x000b, 0x07: 0x000b, 0x08: 0x000b, 0x09: 0x0008, 0x0a: 0x0007, 0x0b: 0x0008, + 0x0c: 0x0009, 0x0d: 0x0007, 0x0e: 0x000b, 0x0f: 0x000b, 0x10: 0x000b, 0x11: 0x000b, + 0x12: 0x000b, 0x13: 0x000b, 0x14: 0x000b, 0x15: 0x000b, 0x16: 0x000b, 0x17: 0x000b, + 0x18: 0x000b, 0x19: 0x000b, 0x1a: 0x000b, 0x1b: 0x000b, 0x1c: 0x0007, 0x1d: 0x0007, + 0x1e: 0x0007, 0x1f: 0x0008, 0x20: 0x0009, 0x21: 0x000a, 0x22: 0x000a, 0x23: 0x0004, + 0x24: 0x0004, 0x25: 0x0004, 0x26: 0x000a, 0x27: 0x000a, 0x28: 0x003a, 0x29: 0x002a, + 0x2a: 0x000a, 0x2b: 0x0003, 0x2c: 0x0006, 0x2d: 0x0003, 0x2e: 0x0006, 0x2f: 0x0006, + 0x30: 0x0002, 0x31: 0x0002, 0x32: 0x0002, 0x33: 0x0002, 0x34: 0x0002, 0x35: 0x0002, + 0x36: 0x0002, 0x37: 0x0002, 0x38: 0x0002, 0x39: 0x0002, 0x3a: 0x0006, 0x3b: 0x000a, + 0x3c: 0x000a, 0x3d: 0x000a, 0x3e: 0x000a, 0x3f: 0x000a, + // Block 0x1, offset 0x40 + 0x40: 0x000a, + 0x5b: 0x005a, 0x5c: 0x000a, 0x5d: 0x004a, + 0x5e: 0x000a, 0x5f: 0x000a, 0x60: 0x000a, + 0x7b: 0x005a, + 0x7c: 0x000a, 0x7d: 0x004a, 0x7e: 0x000a, 0x7f: 0x000b, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x000b, 0xc1: 0x000b, 0xc2: 0x000b, 0xc3: 0x000b, 0xc4: 0x000b, 0xc5: 0x0007, + 0xc6: 0x000b, 0xc7: 0x000b, 0xc8: 0x000b, 0xc9: 0x000b, 0xca: 0x000b, 0xcb: 0x000b, + 0xcc: 0x000b, 0xcd: 0x000b, 0xce: 0x000b, 0xcf: 0x000b, 0xd0: 0x000b, 0xd1: 0x000b, + 0xd2: 0x000b, 0xd3: 0x000b, 0xd4: 0x000b, 0xd5: 0x000b, 0xd6: 0x000b, 0xd7: 0x000b, + 0xd8: 0x000b, 0xd9: 0x000b, 0xda: 0x000b, 0xdb: 0x000b, 0xdc: 0x000b, 0xdd: 0x000b, + 0xde: 0x000b, 0xdf: 0x000b, 0xe0: 0x0006, 0xe1: 0x000a, 0xe2: 0x0004, 0xe3: 0x0004, + 0xe4: 0x0004, 0xe5: 0x0004, 0xe6: 0x000a, 0xe7: 0x000a, 0xe8: 0x000a, 0xe9: 0x000a, + 0xeb: 0x000a, 0xec: 0x000a, 0xed: 0x000b, 0xee: 0x000a, 0xef: 0x000a, + 0xf0: 0x0004, 0xf1: 0x0004, 0xf2: 0x0002, 0xf3: 0x0002, 0xf4: 0x000a, + 0xf6: 0x000a, 0xf7: 0x000a, 0xf8: 0x000a, 0xf9: 0x0002, 0xfb: 0x000a, + 0xfc: 0x000a, 0xfd: 0x000a, 0xfe: 0x000a, 0xff: 0x000a, + // Block 0x4, offset 0x100 + 0x117: 0x000a, + 0x137: 0x000a, + // Block 0x5, offset 0x140 + 0x179: 0x000a, 0x17a: 0x000a, + // Block 0x6, offset 0x180 + 0x182: 0x000a, 0x183: 0x000a, 0x184: 0x000a, 0x185: 0x000a, + 0x186: 0x000a, 0x187: 0x000a, 0x188: 0x000a, 0x189: 0x000a, 0x18a: 0x000a, 0x18b: 0x000a, + 0x18c: 0x000a, 0x18d: 0x000a, 0x18e: 0x000a, 0x18f: 0x000a, + 0x192: 0x000a, 0x193: 0x000a, 0x194: 0x000a, 0x195: 0x000a, 0x196: 0x000a, 0x197: 0x000a, + 0x198: 0x000a, 0x199: 0x000a, 0x19a: 0x000a, 0x19b: 0x000a, 0x19c: 0x000a, 0x19d: 0x000a, + 0x19e: 0x000a, 0x19f: 0x000a, + 0x1a5: 0x000a, 0x1a6: 0x000a, 0x1a7: 0x000a, 0x1a8: 0x000a, 0x1a9: 0x000a, + 0x1aa: 0x000a, 0x1ab: 0x000a, 0x1ac: 0x000a, 0x1ad: 0x000a, 0x1af: 0x000a, + 0x1b0: 0x000a, 0x1b1: 0x000a, 0x1b2: 0x000a, 0x1b3: 0x000a, 0x1b4: 0x000a, 0x1b5: 0x000a, + 0x1b6: 0x000a, 0x1b7: 0x000a, 0x1b8: 0x000a, 0x1b9: 0x000a, 0x1ba: 0x000a, 0x1bb: 0x000a, + 0x1bc: 0x000a, 0x1bd: 0x000a, 0x1be: 0x000a, 0x1bf: 0x000a, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x000c, 0x1c1: 0x000c, 0x1c2: 0x000c, 0x1c3: 0x000c, 0x1c4: 0x000c, 0x1c5: 0x000c, + 0x1c6: 0x000c, 0x1c7: 0x000c, 0x1c8: 0x000c, 0x1c9: 0x000c, 0x1ca: 0x000c, 0x1cb: 0x000c, + 0x1cc: 0x000c, 0x1cd: 0x000c, 0x1ce: 0x000c, 0x1cf: 0x000c, 0x1d0: 0x000c, 0x1d1: 0x000c, + 0x1d2: 0x000c, 0x1d3: 0x000c, 0x1d4: 0x000c, 0x1d5: 0x000c, 0x1d6: 0x000c, 0x1d7: 0x000c, + 0x1d8: 0x000c, 0x1d9: 0x000c, 0x1da: 0x000c, 0x1db: 0x000c, 0x1dc: 0x000c, 0x1dd: 0x000c, + 0x1de: 0x000c, 0x1df: 0x000c, 0x1e0: 0x000c, 0x1e1: 0x000c, 0x1e2: 0x000c, 0x1e3: 0x000c, + 0x1e4: 0x000c, 0x1e5: 0x000c, 0x1e6: 0x000c, 0x1e7: 0x000c, 0x1e8: 0x000c, 0x1e9: 0x000c, + 0x1ea: 0x000c, 0x1eb: 0x000c, 0x1ec: 0x000c, 0x1ed: 0x000c, 0x1ee: 0x000c, 0x1ef: 0x000c, + 0x1f0: 0x000c, 0x1f1: 0x000c, 0x1f2: 0x000c, 0x1f3: 0x000c, 0x1f4: 0x000c, 0x1f5: 0x000c, + 0x1f6: 0x000c, 0x1f7: 0x000c, 0x1f8: 0x000c, 0x1f9: 0x000c, 0x1fa: 0x000c, 0x1fb: 0x000c, + 0x1fc: 0x000c, 0x1fd: 0x000c, 0x1fe: 0x000c, 0x1ff: 0x000c, + // Block 0x8, offset 0x200 + 0x200: 0x000c, 0x201: 0x000c, 0x202: 0x000c, 0x203: 0x000c, 0x204: 0x000c, 0x205: 0x000c, + 0x206: 0x000c, 0x207: 0x000c, 0x208: 0x000c, 0x209: 0x000c, 0x20a: 0x000c, 0x20b: 0x000c, + 0x20c: 0x000c, 0x20d: 0x000c, 0x20e: 0x000c, 0x20f: 0x000c, 0x210: 0x000c, 0x211: 0x000c, + 0x212: 0x000c, 0x213: 0x000c, 0x214: 0x000c, 0x215: 0x000c, 0x216: 0x000c, 0x217: 0x000c, + 0x218: 0x000c, 0x219: 0x000c, 0x21a: 0x000c, 0x21b: 0x000c, 0x21c: 0x000c, 0x21d: 0x000c, + 0x21e: 0x000c, 0x21f: 0x000c, 0x220: 0x000c, 0x221: 0x000c, 0x222: 0x000c, 0x223: 0x000c, + 0x224: 0x000c, 0x225: 0x000c, 0x226: 0x000c, 0x227: 0x000c, 0x228: 0x000c, 0x229: 0x000c, + 0x22a: 0x000c, 0x22b: 0x000c, 0x22c: 0x000c, 0x22d: 0x000c, 0x22e: 0x000c, 0x22f: 0x000c, + 0x234: 0x000a, 0x235: 0x000a, + 0x23e: 0x000a, + // Block 0x9, offset 0x240 + 0x244: 0x000a, 0x245: 0x000a, + 0x247: 0x000a, + // Block 0xa, offset 0x280 + 0x2b6: 0x000a, + // Block 0xb, offset 0x2c0 + 0x2c3: 0x000c, 0x2c4: 0x000c, 0x2c5: 0x000c, + 0x2c6: 0x000c, 0x2c7: 0x000c, 0x2c8: 0x000c, 0x2c9: 0x000c, + // Block 0xc, offset 0x300 + 0x30a: 0x000a, + 0x30d: 0x000a, 0x30e: 0x000a, 0x30f: 0x0004, 0x310: 0x0001, 0x311: 0x000c, + 0x312: 0x000c, 0x313: 0x000c, 0x314: 0x000c, 0x315: 0x000c, 0x316: 0x000c, 0x317: 0x000c, + 0x318: 0x000c, 0x319: 0x000c, 0x31a: 0x000c, 0x31b: 0x000c, 0x31c: 0x000c, 0x31d: 0x000c, + 0x31e: 0x000c, 0x31f: 0x000c, 0x320: 0x000c, 0x321: 0x000c, 0x322: 0x000c, 0x323: 0x000c, + 0x324: 0x000c, 0x325: 0x000c, 0x326: 0x000c, 0x327: 0x000c, 0x328: 0x000c, 0x329: 0x000c, + 0x32a: 0x000c, 0x32b: 0x000c, 0x32c: 0x000c, 0x32d: 0x000c, 0x32e: 0x000c, 0x32f: 0x000c, + 0x330: 0x000c, 0x331: 0x000c, 0x332: 0x000c, 0x333: 0x000c, 0x334: 0x000c, 0x335: 0x000c, + 0x336: 0x000c, 0x337: 0x000c, 0x338: 0x000c, 0x339: 0x000c, 0x33a: 0x000c, 0x33b: 0x000c, + 0x33c: 0x000c, 0x33d: 0x000c, 0x33e: 0x0001, 0x33f: 0x000c, + // Block 0xd, offset 0x340 + 0x340: 0x0001, 0x341: 0x000c, 0x342: 0x000c, 0x343: 0x0001, 0x344: 0x000c, 0x345: 0x000c, + 0x346: 0x0001, 0x347: 0x000c, 0x348: 0x0001, 0x349: 0x0001, 0x34a: 0x0001, 0x34b: 0x0001, + 0x34c: 0x0001, 0x34d: 0x0001, 0x34e: 0x0001, 0x34f: 0x0001, 0x350: 0x0001, 0x351: 0x0001, + 0x352: 0x0001, 0x353: 0x0001, 0x354: 0x0001, 0x355: 0x0001, 0x356: 0x0001, 0x357: 0x0001, + 0x358: 0x0001, 0x359: 0x0001, 0x35a: 0x0001, 0x35b: 0x0001, 0x35c: 0x0001, 0x35d: 0x0001, + 0x35e: 0x0001, 0x35f: 0x0001, 0x360: 0x0001, 0x361: 0x0001, 0x362: 0x0001, 0x363: 0x0001, + 0x364: 0x0001, 0x365: 0x0001, 0x366: 0x0001, 0x367: 0x0001, 0x368: 0x0001, 0x369: 0x0001, + 0x36a: 0x0001, 0x36b: 0x0001, 0x36c: 0x0001, 0x36d: 0x0001, 0x36e: 0x0001, 0x36f: 0x0001, + 0x370: 0x0001, 0x371: 0x0001, 0x372: 0x0001, 0x373: 0x0001, 0x374: 0x0001, 0x375: 0x0001, + 0x376: 0x0001, 0x377: 0x0001, 0x378: 0x0001, 0x379: 0x0001, 0x37a: 0x0001, 0x37b: 0x0001, + 0x37c: 0x0001, 0x37d: 0x0001, 0x37e: 0x0001, 0x37f: 0x0001, + // Block 0xe, offset 0x380 + 0x380: 0x0005, 0x381: 0x0005, 0x382: 0x0005, 0x383: 0x0005, 0x384: 0x0005, 0x385: 0x0005, + 0x386: 0x000a, 0x387: 0x000a, 0x388: 0x000d, 0x389: 0x0004, 0x38a: 0x0004, 0x38b: 0x000d, + 0x38c: 0x0006, 0x38d: 0x000d, 0x38e: 0x000a, 0x38f: 0x000a, 0x390: 0x000c, 0x391: 0x000c, + 0x392: 0x000c, 0x393: 0x000c, 0x394: 0x000c, 0x395: 0x000c, 0x396: 0x000c, 0x397: 0x000c, + 0x398: 0x000c, 0x399: 0x000c, 0x39a: 0x000c, 0x39b: 0x000d, 0x39c: 0x000d, 0x39d: 0x000d, + 0x39e: 0x000d, 0x39f: 0x000d, 0x3a0: 0x000d, 0x3a1: 0x000d, 0x3a2: 0x000d, 0x3a3: 0x000d, + 0x3a4: 0x000d, 0x3a5: 0x000d, 0x3a6: 0x000d, 0x3a7: 0x000d, 0x3a8: 0x000d, 0x3a9: 0x000d, + 0x3aa: 0x000d, 0x3ab: 0x000d, 0x3ac: 0x000d, 0x3ad: 0x000d, 0x3ae: 0x000d, 0x3af: 0x000d, + 0x3b0: 0x000d, 0x3b1: 0x000d, 0x3b2: 0x000d, 0x3b3: 0x000d, 0x3b4: 0x000d, 0x3b5: 0x000d, + 0x3b6: 0x000d, 0x3b7: 0x000d, 0x3b8: 0x000d, 0x3b9: 0x000d, 0x3ba: 0x000d, 0x3bb: 0x000d, + 0x3bc: 0x000d, 0x3bd: 0x000d, 0x3be: 0x000d, 0x3bf: 0x000d, + // Block 0xf, offset 0x3c0 + 0x3c0: 0x000d, 0x3c1: 0x000d, 0x3c2: 0x000d, 0x3c3: 0x000d, 0x3c4: 0x000d, 0x3c5: 0x000d, + 0x3c6: 0x000d, 0x3c7: 0x000d, 0x3c8: 0x000d, 0x3c9: 0x000d, 0x3ca: 0x000d, 0x3cb: 0x000c, + 0x3cc: 0x000c, 0x3cd: 0x000c, 0x3ce: 0x000c, 0x3cf: 0x000c, 0x3d0: 0x000c, 0x3d1: 0x000c, + 0x3d2: 0x000c, 0x3d3: 0x000c, 0x3d4: 0x000c, 0x3d5: 0x000c, 0x3d6: 0x000c, 0x3d7: 0x000c, + 0x3d8: 0x000c, 0x3d9: 0x000c, 0x3da: 0x000c, 0x3db: 0x000c, 0x3dc: 0x000c, 0x3dd: 0x000c, + 0x3de: 0x000c, 0x3df: 0x000c, 0x3e0: 0x0005, 0x3e1: 0x0005, 0x3e2: 0x0005, 0x3e3: 0x0005, + 0x3e4: 0x0005, 0x3e5: 0x0005, 0x3e6: 0x0005, 0x3e7: 0x0005, 0x3e8: 0x0005, 0x3e9: 0x0005, + 0x3ea: 0x0004, 0x3eb: 0x0005, 0x3ec: 0x0005, 0x3ed: 0x000d, 0x3ee: 0x000d, 0x3ef: 0x000d, + 0x3f0: 0x000c, 0x3f1: 0x000d, 0x3f2: 0x000d, 0x3f3: 0x000d, 0x3f4: 0x000d, 0x3f5: 0x000d, + 0x3f6: 0x000d, 0x3f7: 0x000d, 0x3f8: 0x000d, 0x3f9: 0x000d, 0x3fa: 0x000d, 0x3fb: 0x000d, + 0x3fc: 0x000d, 0x3fd: 0x000d, 0x3fe: 0x000d, 0x3ff: 0x000d, + // Block 0x10, offset 0x400 + 0x400: 0x000d, 0x401: 0x000d, 0x402: 0x000d, 0x403: 0x000d, 0x404: 0x000d, 0x405: 0x000d, + 0x406: 0x000d, 0x407: 0x000d, 0x408: 0x000d, 0x409: 0x000d, 0x40a: 0x000d, 0x40b: 0x000d, + 0x40c: 0x000d, 0x40d: 0x000d, 0x40e: 0x000d, 0x40f: 0x000d, 0x410: 0x000d, 0x411: 0x000d, + 0x412: 0x000d, 0x413: 0x000d, 0x414: 0x000d, 0x415: 0x000d, 0x416: 0x000d, 0x417: 0x000d, + 0x418: 0x000d, 0x419: 0x000d, 0x41a: 0x000d, 0x41b: 0x000d, 0x41c: 0x000d, 0x41d: 0x000d, + 0x41e: 0x000d, 0x41f: 0x000d, 0x420: 0x000d, 0x421: 0x000d, 0x422: 0x000d, 0x423: 0x000d, + 0x424: 0x000d, 0x425: 0x000d, 0x426: 0x000d, 0x427: 0x000d, 0x428: 0x000d, 0x429: 0x000d, + 0x42a: 0x000d, 0x42b: 0x000d, 0x42c: 0x000d, 0x42d: 0x000d, 0x42e: 0x000d, 0x42f: 0x000d, + 0x430: 0x000d, 0x431: 0x000d, 0x432: 0x000d, 0x433: 0x000d, 0x434: 0x000d, 0x435: 0x000d, + 0x436: 0x000d, 0x437: 0x000d, 0x438: 0x000d, 0x439: 0x000d, 0x43a: 0x000d, 0x43b: 0x000d, + 0x43c: 0x000d, 0x43d: 0x000d, 0x43e: 0x000d, 0x43f: 0x000d, + // Block 0x11, offset 0x440 + 0x440: 0x000d, 0x441: 0x000d, 0x442: 0x000d, 0x443: 0x000d, 0x444: 0x000d, 0x445: 0x000d, + 0x446: 0x000d, 0x447: 0x000d, 0x448: 0x000d, 0x449: 0x000d, 0x44a: 0x000d, 0x44b: 0x000d, + 0x44c: 0x000d, 0x44d: 0x000d, 0x44e: 0x000d, 0x44f: 0x000d, 0x450: 0x000d, 0x451: 0x000d, + 0x452: 0x000d, 0x453: 0x000d, 0x454: 0x000d, 0x455: 0x000d, 0x456: 0x000c, 0x457: 0x000c, + 0x458: 0x000c, 0x459: 0x000c, 0x45a: 0x000c, 0x45b: 0x000c, 0x45c: 0x000c, 0x45d: 0x0005, + 0x45e: 0x000a, 0x45f: 0x000c, 0x460: 0x000c, 0x461: 0x000c, 0x462: 0x000c, 0x463: 0x000c, + 0x464: 0x000c, 0x465: 0x000d, 0x466: 0x000d, 0x467: 0x000c, 0x468: 0x000c, 0x469: 0x000a, + 0x46a: 0x000c, 0x46b: 0x000c, 0x46c: 0x000c, 0x46d: 0x000c, 0x46e: 0x000d, 0x46f: 0x000d, + 0x470: 0x0002, 0x471: 0x0002, 0x472: 0x0002, 0x473: 0x0002, 0x474: 0x0002, 0x475: 0x0002, + 0x476: 0x0002, 0x477: 0x0002, 0x478: 0x0002, 0x479: 0x0002, 0x47a: 0x000d, 0x47b: 0x000d, + 0x47c: 0x000d, 0x47d: 0x000d, 0x47e: 0x000d, 0x47f: 0x000d, + // Block 0x12, offset 0x480 + 0x480: 0x000d, 0x481: 0x000d, 0x482: 0x000d, 0x483: 0x000d, 0x484: 0x000d, 0x485: 0x000d, + 0x486: 0x000d, 0x487: 0x000d, 0x488: 0x000d, 0x489: 0x000d, 0x48a: 0x000d, 0x48b: 0x000d, + 0x48c: 0x000d, 0x48d: 0x000d, 0x48e: 0x000d, 0x48f: 0x000d, 0x490: 0x000d, 0x491: 0x000c, + 0x492: 0x000d, 0x493: 0x000d, 0x494: 0x000d, 0x495: 0x000d, 0x496: 0x000d, 0x497: 0x000d, + 0x498: 0x000d, 0x499: 0x000d, 0x49a: 0x000d, 0x49b: 0x000d, 0x49c: 0x000d, 0x49d: 0x000d, + 0x49e: 0x000d, 0x49f: 0x000d, 0x4a0: 0x000d, 0x4a1: 0x000d, 0x4a2: 0x000d, 0x4a3: 0x000d, + 0x4a4: 0x000d, 0x4a5: 0x000d, 0x4a6: 0x000d, 0x4a7: 0x000d, 0x4a8: 0x000d, 0x4a9: 0x000d, + 0x4aa: 0x000d, 0x4ab: 0x000d, 0x4ac: 0x000d, 0x4ad: 0x000d, 0x4ae: 0x000d, 0x4af: 0x000d, + 0x4b0: 0x000c, 0x4b1: 0x000c, 0x4b2: 0x000c, 0x4b3: 0x000c, 0x4b4: 0x000c, 0x4b5: 0x000c, + 0x4b6: 0x000c, 0x4b7: 0x000c, 0x4b8: 0x000c, 0x4b9: 0x000c, 0x4ba: 0x000c, 0x4bb: 0x000c, + 0x4bc: 0x000c, 0x4bd: 0x000c, 0x4be: 0x000c, 0x4bf: 0x000c, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x000c, 0x4c1: 0x000c, 0x4c2: 0x000c, 0x4c3: 0x000c, 0x4c4: 0x000c, 0x4c5: 0x000c, + 0x4c6: 0x000c, 0x4c7: 0x000c, 0x4c8: 0x000c, 0x4c9: 0x000c, 0x4ca: 0x000c, 0x4cb: 0x000d, + 0x4cc: 0x000d, 0x4cd: 0x000d, 0x4ce: 0x000d, 0x4cf: 0x000d, 0x4d0: 0x000d, 0x4d1: 0x000d, + 0x4d2: 0x000d, 0x4d3: 0x000d, 0x4d4: 0x000d, 0x4d5: 0x000d, 0x4d6: 0x000d, 0x4d7: 0x000d, + 0x4d8: 0x000d, 0x4d9: 0x000d, 0x4da: 0x000d, 0x4db: 0x000d, 0x4dc: 0x000d, 0x4dd: 0x000d, + 0x4de: 0x000d, 0x4df: 0x000d, 0x4e0: 0x000d, 0x4e1: 0x000d, 0x4e2: 0x000d, 0x4e3: 0x000d, + 0x4e4: 0x000d, 0x4e5: 0x000d, 0x4e6: 0x000d, 0x4e7: 0x000d, 0x4e8: 0x000d, 0x4e9: 0x000d, + 0x4ea: 0x000d, 0x4eb: 0x000d, 0x4ec: 0x000d, 0x4ed: 0x000d, 0x4ee: 0x000d, 0x4ef: 0x000d, + 0x4f0: 0x000d, 0x4f1: 0x000d, 0x4f2: 0x000d, 0x4f3: 0x000d, 0x4f4: 0x000d, 0x4f5: 0x000d, + 0x4f6: 0x000d, 0x4f7: 0x000d, 0x4f8: 0x000d, 0x4f9: 0x000d, 0x4fa: 0x000d, 0x4fb: 0x000d, + 0x4fc: 0x000d, 0x4fd: 0x000d, 0x4fe: 0x000d, 0x4ff: 0x000d, + // Block 0x14, offset 0x500 + 0x500: 0x000d, 0x501: 0x000d, 0x502: 0x000d, 0x503: 0x000d, 0x504: 0x000d, 0x505: 0x000d, + 0x506: 0x000d, 0x507: 0x000d, 0x508: 0x000d, 0x509: 0x000d, 0x50a: 0x000d, 0x50b: 0x000d, + 0x50c: 0x000d, 0x50d: 0x000d, 0x50e: 0x000d, 0x50f: 0x000d, 0x510: 0x000d, 0x511: 0x000d, + 0x512: 0x000d, 0x513: 0x000d, 0x514: 0x000d, 0x515: 0x000d, 0x516: 0x000d, 0x517: 0x000d, + 0x518: 0x000d, 0x519: 0x000d, 0x51a: 0x000d, 0x51b: 0x000d, 0x51c: 0x000d, 0x51d: 0x000d, + 0x51e: 0x000d, 0x51f: 0x000d, 0x520: 0x000d, 0x521: 0x000d, 0x522: 0x000d, 0x523: 0x000d, + 0x524: 0x000d, 0x525: 0x000d, 0x526: 0x000c, 0x527: 0x000c, 0x528: 0x000c, 0x529: 0x000c, + 0x52a: 0x000c, 0x52b: 0x000c, 0x52c: 0x000c, 0x52d: 0x000c, 0x52e: 0x000c, 0x52f: 0x000c, + 0x530: 0x000c, 0x531: 0x000d, 0x532: 0x000d, 0x533: 0x000d, 0x534: 0x000d, 0x535: 0x000d, + 0x536: 0x000d, 0x537: 0x000d, 0x538: 0x000d, 0x539: 0x000d, 0x53a: 0x000d, 0x53b: 0x000d, + 0x53c: 0x000d, 0x53d: 0x000d, 0x53e: 0x000d, 0x53f: 0x000d, + // Block 0x15, offset 0x540 + 0x540: 0x0001, 0x541: 0x0001, 0x542: 0x0001, 0x543: 0x0001, 0x544: 0x0001, 0x545: 0x0001, + 0x546: 0x0001, 0x547: 0x0001, 0x548: 0x0001, 0x549: 0x0001, 0x54a: 0x0001, 0x54b: 0x0001, + 0x54c: 0x0001, 0x54d: 0x0001, 0x54e: 0x0001, 0x54f: 0x0001, 0x550: 0x0001, 0x551: 0x0001, + 0x552: 0x0001, 0x553: 0x0001, 0x554: 0x0001, 0x555: 0x0001, 0x556: 0x0001, 0x557: 0x0001, + 0x558: 0x0001, 0x559: 0x0001, 0x55a: 0x0001, 0x55b: 0x0001, 0x55c: 0x0001, 0x55d: 0x0001, + 0x55e: 0x0001, 0x55f: 0x0001, 0x560: 0x0001, 0x561: 0x0001, 0x562: 0x0001, 0x563: 0x0001, + 0x564: 0x0001, 0x565: 0x0001, 0x566: 0x0001, 0x567: 0x0001, 0x568: 0x0001, 0x569: 0x0001, + 0x56a: 0x0001, 0x56b: 0x000c, 0x56c: 0x000c, 0x56d: 0x000c, 0x56e: 0x000c, 0x56f: 0x000c, + 0x570: 0x000c, 0x571: 0x000c, 0x572: 0x000c, 0x573: 0x000c, 0x574: 0x0001, 0x575: 0x0001, + 0x576: 0x000a, 0x577: 0x000a, 0x578: 0x000a, 0x579: 0x000a, 0x57a: 0x0001, 0x57b: 0x0001, + 0x57c: 0x0001, 0x57d: 0x000c, 0x57e: 0x0001, 0x57f: 0x0001, + // Block 0x16, offset 0x580 + 0x580: 0x0001, 0x581: 0x0001, 0x582: 0x0001, 0x583: 0x0001, 0x584: 0x0001, 0x585: 0x0001, + 0x586: 0x0001, 0x587: 0x0001, 0x588: 0x0001, 0x589: 0x0001, 0x58a: 0x0001, 0x58b: 0x0001, + 0x58c: 0x0001, 0x58d: 0x0001, 0x58e: 0x0001, 0x58f: 0x0001, 0x590: 0x0001, 0x591: 0x0001, + 0x592: 0x0001, 0x593: 0x0001, 0x594: 0x0001, 0x595: 0x0001, 0x596: 0x000c, 0x597: 0x000c, + 0x598: 0x000c, 0x599: 0x000c, 0x59a: 0x0001, 0x59b: 0x000c, 0x59c: 0x000c, 0x59d: 0x000c, + 0x59e: 0x000c, 0x59f: 0x000c, 0x5a0: 0x000c, 0x5a1: 0x000c, 0x5a2: 0x000c, 0x5a3: 0x000c, + 0x5a4: 0x0001, 0x5a5: 0x000c, 0x5a6: 0x000c, 0x5a7: 0x000c, 0x5a8: 0x0001, 0x5a9: 0x000c, + 0x5aa: 0x000c, 0x5ab: 0x000c, 0x5ac: 0x000c, 0x5ad: 0x000c, 0x5ae: 0x0001, 0x5af: 0x0001, + 0x5b0: 0x0001, 0x5b1: 0x0001, 0x5b2: 0x0001, 0x5b3: 0x0001, 0x5b4: 0x0001, 0x5b5: 0x0001, + 0x5b6: 0x0001, 0x5b7: 0x0001, 0x5b8: 0x0001, 0x5b9: 0x0001, 0x5ba: 0x0001, 0x5bb: 0x0001, + 0x5bc: 0x0001, 0x5bd: 0x0001, 0x5be: 0x0001, 0x5bf: 0x0001, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x0001, 0x5c1: 0x0001, 0x5c2: 0x0001, 0x5c3: 0x0001, 0x5c4: 0x0001, 0x5c5: 0x0001, + 0x5c6: 0x0001, 0x5c7: 0x0001, 0x5c8: 0x0001, 0x5c9: 0x0001, 0x5ca: 0x0001, 0x5cb: 0x0001, + 0x5cc: 0x0001, 0x5cd: 0x0001, 0x5ce: 0x0001, 0x5cf: 0x0001, 0x5d0: 0x0001, 0x5d1: 0x0001, + 0x5d2: 0x0001, 0x5d3: 0x0001, 0x5d4: 0x0001, 0x5d5: 0x0001, 0x5d6: 0x0001, 0x5d7: 0x0001, + 0x5d8: 0x0001, 0x5d9: 0x000c, 0x5da: 0x000c, 0x5db: 0x000c, 0x5dc: 0x0001, 0x5dd: 0x0001, + 0x5de: 0x0001, 0x5df: 0x0001, 0x5e0: 0x000d, 0x5e1: 0x000d, 0x5e2: 0x000d, 0x5e3: 0x000d, + 0x5e4: 0x000d, 0x5e5: 0x000d, 0x5e6: 0x000d, 0x5e7: 0x000d, 0x5e8: 0x000d, 0x5e9: 0x000d, + 0x5ea: 0x000d, 0x5eb: 0x000d, 0x5ec: 0x000d, 0x5ed: 0x000d, 0x5ee: 0x000d, 0x5ef: 0x000d, + 0x5f0: 0x0001, 0x5f1: 0x0001, 0x5f2: 0x0001, 0x5f3: 0x0001, 0x5f4: 0x0001, 0x5f5: 0x0001, + 0x5f6: 0x0001, 0x5f7: 0x0001, 0x5f8: 0x0001, 0x5f9: 0x0001, 0x5fa: 0x0001, 0x5fb: 0x0001, + 0x5fc: 0x0001, 0x5fd: 0x0001, 0x5fe: 0x0001, 0x5ff: 0x0001, + // Block 0x18, offset 0x600 + 0x600: 0x0001, 0x601: 0x0001, 0x602: 0x0001, 0x603: 0x0001, 0x604: 0x0001, 0x605: 0x0001, + 0x606: 0x0001, 0x607: 0x0001, 0x608: 0x0001, 0x609: 0x0001, 0x60a: 0x0001, 0x60b: 0x0001, + 0x60c: 0x0001, 0x60d: 0x0001, 0x60e: 0x0001, 0x60f: 0x0001, 0x610: 0x0001, 0x611: 0x0001, + 0x612: 0x0001, 0x613: 0x0001, 0x614: 0x0001, 0x615: 0x0001, 0x616: 0x0001, 0x617: 0x0001, + 0x618: 0x0001, 0x619: 0x0001, 0x61a: 0x0001, 0x61b: 0x0001, 0x61c: 0x0001, 0x61d: 0x0001, + 0x61e: 0x0001, 0x61f: 0x0001, 0x620: 0x000d, 0x621: 0x000d, 0x622: 0x000d, 0x623: 0x000d, + 0x624: 0x000d, 0x625: 0x000d, 0x626: 0x000d, 0x627: 0x000d, 0x628: 0x000d, 0x629: 0x000d, + 0x62a: 0x000d, 0x62b: 0x000d, 0x62c: 0x000d, 0x62d: 0x000d, 0x62e: 0x000d, 0x62f: 0x000d, + 0x630: 0x000d, 0x631: 0x000d, 0x632: 0x000d, 0x633: 0x000d, 0x634: 0x000d, 0x635: 0x000d, + 0x636: 0x000d, 0x637: 0x000d, 0x638: 0x000d, 0x639: 0x000d, 0x63a: 0x000d, 0x63b: 0x000d, + 0x63c: 0x000d, 0x63d: 0x000d, 0x63e: 0x000d, 0x63f: 0x000d, + // Block 0x19, offset 0x640 + 0x640: 0x000d, 0x641: 0x000d, 0x642: 0x000d, 0x643: 0x000d, 0x644: 0x000d, 0x645: 0x000d, + 0x646: 0x000d, 0x647: 0x000d, 0x648: 0x000d, 0x649: 0x000d, 0x64a: 0x000d, 0x64b: 0x000d, + 0x64c: 0x000d, 0x64d: 0x000d, 0x64e: 0x000d, 0x64f: 0x000d, 0x650: 0x000d, 0x651: 0x000d, + 0x652: 0x000d, 0x653: 0x000c, 0x654: 0x000c, 0x655: 0x000c, 0x656: 0x000c, 0x657: 0x000c, + 0x658: 0x000c, 0x659: 0x000c, 0x65a: 0x000c, 0x65b: 0x000c, 0x65c: 0x000c, 0x65d: 0x000c, + 0x65e: 0x000c, 0x65f: 0x000c, 0x660: 0x000c, 0x661: 0x000c, 0x662: 0x0005, 0x663: 0x000c, + 0x664: 0x000c, 0x665: 0x000c, 0x666: 0x000c, 0x667: 0x000c, 0x668: 0x000c, 0x669: 0x000c, + 0x66a: 0x000c, 0x66b: 0x000c, 0x66c: 0x000c, 0x66d: 0x000c, 0x66e: 0x000c, 0x66f: 0x000c, + 0x670: 0x000c, 0x671: 0x000c, 0x672: 0x000c, 0x673: 0x000c, 0x674: 0x000c, 0x675: 0x000c, + 0x676: 0x000c, 0x677: 0x000c, 0x678: 0x000c, 0x679: 0x000c, 0x67a: 0x000c, 0x67b: 0x000c, + 0x67c: 0x000c, 0x67d: 0x000c, 0x67e: 0x000c, 0x67f: 0x000c, + // Block 0x1a, offset 0x680 + 0x680: 0x000c, 0x681: 0x000c, 0x682: 0x000c, + 0x6ba: 0x000c, + 0x6bc: 0x000c, + // Block 0x1b, offset 0x6c0 + 0x6c1: 0x000c, 0x6c2: 0x000c, 0x6c3: 0x000c, 0x6c4: 0x000c, 0x6c5: 0x000c, + 0x6c6: 0x000c, 0x6c7: 0x000c, 0x6c8: 0x000c, + 0x6cd: 0x000c, 0x6d1: 0x000c, + 0x6d2: 0x000c, 0x6d3: 0x000c, 0x6d4: 0x000c, 0x6d5: 0x000c, 0x6d6: 0x000c, 0x6d7: 0x000c, + 0x6e2: 0x000c, 0x6e3: 0x000c, + // Block 0x1c, offset 0x700 + 0x701: 0x000c, + 0x73c: 0x000c, + // Block 0x1d, offset 0x740 + 0x741: 0x000c, 0x742: 0x000c, 0x743: 0x000c, 0x744: 0x000c, + 0x74d: 0x000c, + 0x762: 0x000c, 0x763: 0x000c, + 0x772: 0x0004, 0x773: 0x0004, + 0x77b: 0x0004, + 0x77e: 0x000c, + // Block 0x1e, offset 0x780 + 0x781: 0x000c, 0x782: 0x000c, + 0x7bc: 0x000c, + // Block 0x1f, offset 0x7c0 + 0x7c1: 0x000c, 0x7c2: 0x000c, + 0x7c7: 0x000c, 0x7c8: 0x000c, 0x7cb: 0x000c, + 0x7cc: 0x000c, 0x7cd: 0x000c, 0x7d1: 0x000c, + 0x7f0: 0x000c, 0x7f1: 0x000c, 0x7f5: 0x000c, + // Block 0x20, offset 0x800 + 0x801: 0x000c, 0x802: 0x000c, 0x803: 0x000c, 0x804: 0x000c, 0x805: 0x000c, + 0x807: 0x000c, 0x808: 0x000c, + 0x80d: 0x000c, + 0x822: 0x000c, 0x823: 0x000c, + 0x831: 0x0004, + 0x83a: 0x000c, 0x83b: 0x000c, + 0x83c: 0x000c, 0x83d: 0x000c, 0x83e: 0x000c, 0x83f: 0x000c, + // Block 0x21, offset 0x840 + 0x841: 0x000c, + 0x87c: 0x000c, 0x87f: 0x000c, + // Block 0x22, offset 0x880 + 0x881: 0x000c, 0x882: 0x000c, 0x883: 0x000c, 0x884: 0x000c, + 0x88d: 0x000c, + 0x896: 0x000c, + 0x8a2: 0x000c, 0x8a3: 0x000c, + // Block 0x23, offset 0x8c0 + 0x8c2: 0x000c, + // Block 0x24, offset 0x900 + 0x900: 0x000c, + 0x90d: 0x000c, + 0x933: 0x000a, 0x934: 0x000a, 0x935: 0x000a, + 0x936: 0x000a, 0x937: 0x000a, 0x938: 0x000a, 0x939: 0x0004, 0x93a: 0x000a, + // Block 0x25, offset 0x940 + 0x940: 0x000c, 0x944: 0x000c, + 0x97e: 0x000c, 0x97f: 0x000c, + // Block 0x26, offset 0x980 + 0x980: 0x000c, + 0x986: 0x000c, 0x987: 0x000c, 0x988: 0x000c, 0x98a: 0x000c, 0x98b: 0x000c, + 0x98c: 0x000c, 0x98d: 0x000c, + 0x995: 0x000c, 0x996: 0x000c, + 0x9a2: 0x000c, 0x9a3: 0x000c, + 0x9b8: 0x000a, 0x9b9: 0x000a, 0x9ba: 0x000a, 0x9bb: 0x000a, + 0x9bc: 0x000a, 0x9bd: 0x000a, 0x9be: 0x000a, + // Block 0x27, offset 0x9c0 + 0x9cc: 0x000c, 0x9cd: 0x000c, + 0x9e2: 0x000c, 0x9e3: 0x000c, + // Block 0x28, offset 0xa00 + 0xa00: 0x000c, 0xa01: 0x000c, + 0xa3b: 0x000c, + 0xa3c: 0x000c, + // Block 0x29, offset 0xa40 + 0xa41: 0x000c, 0xa42: 0x000c, 0xa43: 0x000c, 0xa44: 0x000c, + 0xa4d: 0x000c, + 0xa62: 0x000c, 0xa63: 0x000c, + // Block 0x2a, offset 0xa80 + 0xa8a: 0x000c, + 0xa92: 0x000c, 0xa93: 0x000c, 0xa94: 0x000c, 0xa96: 0x000c, + // Block 0x2b, offset 0xac0 + 0xaf1: 0x000c, 0xaf4: 0x000c, 0xaf5: 0x000c, + 0xaf6: 0x000c, 0xaf7: 0x000c, 0xaf8: 0x000c, 0xaf9: 0x000c, 0xafa: 0x000c, + 0xaff: 0x0004, + // Block 0x2c, offset 0xb00 + 0xb07: 0x000c, 0xb08: 0x000c, 0xb09: 0x000c, 0xb0a: 0x000c, 0xb0b: 0x000c, + 0xb0c: 0x000c, 0xb0d: 0x000c, 0xb0e: 0x000c, + // Block 0x2d, offset 0xb40 + 0xb71: 0x000c, 0xb74: 0x000c, 0xb75: 0x000c, + 0xb76: 0x000c, 0xb77: 0x000c, 0xb78: 0x000c, 0xb79: 0x000c, 0xb7b: 0x000c, + 0xb7c: 0x000c, + // Block 0x2e, offset 0xb80 + 0xb88: 0x000c, 0xb89: 0x000c, 0xb8a: 0x000c, 0xb8b: 0x000c, + 0xb8c: 0x000c, 0xb8d: 0x000c, + // Block 0x2f, offset 0xbc0 + 0xbd8: 0x000c, 0xbd9: 0x000c, + 0xbf5: 0x000c, + 0xbf7: 0x000c, 0xbf9: 0x000c, 0xbfa: 0x003a, 0xbfb: 0x002a, + 0xbfc: 0x003a, 0xbfd: 0x002a, + // Block 0x30, offset 0xc00 + 0xc31: 0x000c, 0xc32: 0x000c, 0xc33: 0x000c, 0xc34: 0x000c, 0xc35: 0x000c, + 0xc36: 0x000c, 0xc37: 0x000c, 0xc38: 0x000c, 0xc39: 0x000c, 0xc3a: 0x000c, 0xc3b: 0x000c, + 0xc3c: 0x000c, 0xc3d: 0x000c, 0xc3e: 0x000c, + // Block 0x31, offset 0xc40 + 0xc40: 0x000c, 0xc41: 0x000c, 0xc42: 0x000c, 0xc43: 0x000c, 0xc44: 0x000c, + 0xc46: 0x000c, 0xc47: 0x000c, + 0xc4d: 0x000c, 0xc4e: 0x000c, 0xc4f: 0x000c, 0xc50: 0x000c, 0xc51: 0x000c, + 0xc52: 0x000c, 0xc53: 0x000c, 0xc54: 0x000c, 0xc55: 0x000c, 0xc56: 0x000c, 0xc57: 0x000c, + 0xc59: 0x000c, 0xc5a: 0x000c, 0xc5b: 0x000c, 0xc5c: 0x000c, 0xc5d: 0x000c, + 0xc5e: 0x000c, 0xc5f: 0x000c, 0xc60: 0x000c, 0xc61: 0x000c, 0xc62: 0x000c, 0xc63: 0x000c, + 0xc64: 0x000c, 0xc65: 0x000c, 0xc66: 0x000c, 0xc67: 0x000c, 0xc68: 0x000c, 0xc69: 0x000c, + 0xc6a: 0x000c, 0xc6b: 0x000c, 0xc6c: 0x000c, 0xc6d: 0x000c, 0xc6e: 0x000c, 0xc6f: 0x000c, + 0xc70: 0x000c, 0xc71: 0x000c, 0xc72: 0x000c, 0xc73: 0x000c, 0xc74: 0x000c, 0xc75: 0x000c, + 0xc76: 0x000c, 0xc77: 0x000c, 0xc78: 0x000c, 0xc79: 0x000c, 0xc7a: 0x000c, 0xc7b: 0x000c, + 0xc7c: 0x000c, + // Block 0x32, offset 0xc80 + 0xc86: 0x000c, + // Block 0x33, offset 0xcc0 + 0xced: 0x000c, 0xcee: 0x000c, 0xcef: 0x000c, + 0xcf0: 0x000c, 0xcf2: 0x000c, 0xcf3: 0x000c, 0xcf4: 0x000c, 0xcf5: 0x000c, + 0xcf6: 0x000c, 0xcf7: 0x000c, 0xcf9: 0x000c, 0xcfa: 0x000c, + 0xcfd: 0x000c, 0xcfe: 0x000c, + // Block 0x34, offset 0xd00 + 0xd18: 0x000c, 0xd19: 0x000c, + 0xd1e: 0x000c, 0xd1f: 0x000c, 0xd20: 0x000c, + 0xd31: 0x000c, 0xd32: 0x000c, 0xd33: 0x000c, 0xd34: 0x000c, + // Block 0x35, offset 0xd40 + 0xd42: 0x000c, 0xd45: 0x000c, + 0xd46: 0x000c, + 0xd4d: 0x000c, + 0xd5d: 0x000c, + // Block 0x36, offset 0xd80 + 0xd9d: 0x000c, + 0xd9e: 0x000c, 0xd9f: 0x000c, + // Block 0x37, offset 0xdc0 + 0xdd0: 0x000a, 0xdd1: 0x000a, + 0xdd2: 0x000a, 0xdd3: 0x000a, 0xdd4: 0x000a, 0xdd5: 0x000a, 0xdd6: 0x000a, 0xdd7: 0x000a, + 0xdd8: 0x000a, 0xdd9: 0x000a, + // Block 0x38, offset 0xe00 + 0xe00: 0x000a, + // Block 0x39, offset 0xe40 + 0xe40: 0x0009, + 0xe5b: 0x007a, 0xe5c: 0x006a, + // Block 0x3a, offset 0xe80 + 0xe92: 0x000c, 0xe93: 0x000c, 0xe94: 0x000c, + 0xeb2: 0x000c, 0xeb3: 0x000c, 0xeb4: 0x000c, + // Block 0x3b, offset 0xec0 + 0xed2: 0x000c, 0xed3: 0x000c, + 0xef2: 0x000c, 0xef3: 0x000c, + // Block 0x3c, offset 0xf00 + 0xf34: 0x000c, 0xf35: 0x000c, + 0xf37: 0x000c, 0xf38: 0x000c, 0xf39: 0x000c, 0xf3a: 0x000c, 0xf3b: 0x000c, + 0xf3c: 0x000c, 0xf3d: 0x000c, + // Block 0x3d, offset 0xf40 + 0xf46: 0x000c, 0xf49: 0x000c, 0xf4a: 0x000c, 0xf4b: 0x000c, + 0xf4c: 0x000c, 0xf4d: 0x000c, 0xf4e: 0x000c, 0xf4f: 0x000c, 0xf50: 0x000c, 0xf51: 0x000c, + 0xf52: 0x000c, 0xf53: 0x000c, + 0xf5b: 0x0004, 0xf5d: 0x000c, + 0xf70: 0x000a, 0xf71: 0x000a, 0xf72: 0x000a, 0xf73: 0x000a, 0xf74: 0x000a, 0xf75: 0x000a, + 0xf76: 0x000a, 0xf77: 0x000a, 0xf78: 0x000a, 0xf79: 0x000a, + // Block 0x3e, offset 0xf80 + 0xf80: 0x000a, 0xf81: 0x000a, 0xf82: 0x000a, 0xf83: 0x000a, 0xf84: 0x000a, 0xf85: 0x000a, + 0xf86: 0x000a, 0xf87: 0x000a, 0xf88: 0x000a, 0xf89: 0x000a, 0xf8a: 0x000a, 0xf8b: 0x000c, + 0xf8c: 0x000c, 0xf8d: 0x000c, 0xf8e: 0x000b, + // Block 0x3f, offset 0xfc0 + 0xfc5: 0x000c, + 0xfc6: 0x000c, + 0xfe9: 0x000c, + // Block 0x40, offset 0x1000 + 0x1020: 0x000c, 0x1021: 0x000c, 0x1022: 0x000c, + 0x1027: 0x000c, 0x1028: 0x000c, + 0x1032: 0x000c, + 0x1039: 0x000c, 0x103a: 0x000c, 0x103b: 0x000c, + // Block 0x41, offset 0x1040 + 0x1040: 0x000a, 0x1044: 0x000a, 0x1045: 0x000a, + // Block 0x42, offset 0x1080 + 0x109e: 0x000a, 0x109f: 0x000a, 0x10a0: 0x000a, 0x10a1: 0x000a, 0x10a2: 0x000a, 0x10a3: 0x000a, + 0x10a4: 0x000a, 0x10a5: 0x000a, 0x10a6: 0x000a, 0x10a7: 0x000a, 0x10a8: 0x000a, 0x10a9: 0x000a, + 0x10aa: 0x000a, 0x10ab: 0x000a, 0x10ac: 0x000a, 0x10ad: 0x000a, 0x10ae: 0x000a, 0x10af: 0x000a, + 0x10b0: 0x000a, 0x10b1: 0x000a, 0x10b2: 0x000a, 0x10b3: 0x000a, 0x10b4: 0x000a, 0x10b5: 0x000a, + 0x10b6: 0x000a, 0x10b7: 0x000a, 0x10b8: 0x000a, 0x10b9: 0x000a, 0x10ba: 0x000a, 0x10bb: 0x000a, + 0x10bc: 0x000a, 0x10bd: 0x000a, 0x10be: 0x000a, 0x10bf: 0x000a, + // Block 0x43, offset 0x10c0 + 0x10d7: 0x000c, + 0x10d8: 0x000c, 0x10db: 0x000c, + // Block 0x44, offset 0x1100 + 0x1116: 0x000c, + 0x1118: 0x000c, 0x1119: 0x000c, 0x111a: 0x000c, 0x111b: 0x000c, 0x111c: 0x000c, 0x111d: 0x000c, + 0x111e: 0x000c, 0x1120: 0x000c, 0x1122: 0x000c, + 0x1125: 0x000c, 0x1126: 0x000c, 0x1127: 0x000c, 0x1128: 0x000c, 0x1129: 0x000c, + 0x112a: 0x000c, 0x112b: 0x000c, 0x112c: 0x000c, + 0x1133: 0x000c, 0x1134: 0x000c, 0x1135: 0x000c, + 0x1136: 0x000c, 0x1137: 0x000c, 0x1138: 0x000c, 0x1139: 0x000c, 0x113a: 0x000c, 0x113b: 0x000c, + 0x113c: 0x000c, 0x113f: 0x000c, + // Block 0x45, offset 0x1140 + 0x1170: 0x000c, 0x1171: 0x000c, 0x1172: 0x000c, 0x1173: 0x000c, 0x1174: 0x000c, 0x1175: 0x000c, + 0x1176: 0x000c, 0x1177: 0x000c, 0x1178: 0x000c, 0x1179: 0x000c, 0x117a: 0x000c, 0x117b: 0x000c, + 0x117c: 0x000c, 0x117d: 0x000c, 0x117e: 0x000c, + // Block 0x46, offset 0x1180 + 0x1180: 0x000c, 0x1181: 0x000c, 0x1182: 0x000c, 0x1183: 0x000c, + 0x11b4: 0x000c, + 0x11b6: 0x000c, 0x11b7: 0x000c, 0x11b8: 0x000c, 0x11b9: 0x000c, 0x11ba: 0x000c, + 0x11bc: 0x000c, + // Block 0x47, offset 0x11c0 + 0x11c2: 0x000c, + 0x11eb: 0x000c, 0x11ec: 0x000c, 0x11ed: 0x000c, 0x11ee: 0x000c, 0x11ef: 0x000c, + 0x11f0: 0x000c, 0x11f1: 0x000c, 0x11f2: 0x000c, 0x11f3: 0x000c, + // Block 0x48, offset 0x1200 + 0x1200: 0x000c, 0x1201: 0x000c, + 0x1222: 0x000c, 0x1223: 0x000c, + 0x1224: 0x000c, 0x1225: 0x000c, 0x1228: 0x000c, 0x1229: 0x000c, + 0x122b: 0x000c, 0x122c: 0x000c, 0x122d: 0x000c, + // Block 0x49, offset 0x1240 + 0x1266: 0x000c, 0x1268: 0x000c, 0x1269: 0x000c, + 0x126d: 0x000c, 0x126f: 0x000c, + 0x1270: 0x000c, 0x1271: 0x000c, + // Block 0x4a, offset 0x1280 + 0x12ac: 0x000c, 0x12ad: 0x000c, 0x12ae: 0x000c, 0x12af: 0x000c, + 0x12b0: 0x000c, 0x12b1: 0x000c, 0x12b2: 0x000c, 0x12b3: 0x000c, + 0x12b6: 0x000c, 0x12b7: 0x000c, + // Block 0x4b, offset 0x12c0 + 0x12d0: 0x000c, 0x12d1: 0x000c, + 0x12d2: 0x000c, 0x12d4: 0x000c, 0x12d5: 0x000c, 0x12d6: 0x000c, 0x12d7: 0x000c, + 0x12d8: 0x000c, 0x12d9: 0x000c, 0x12da: 0x000c, 0x12db: 0x000c, 0x12dc: 0x000c, 0x12dd: 0x000c, + 0x12de: 0x000c, 0x12df: 0x000c, 0x12e0: 0x000c, 0x12e2: 0x000c, 0x12e3: 0x000c, + 0x12e4: 0x000c, 0x12e5: 0x000c, 0x12e6: 0x000c, 0x12e7: 0x000c, 0x12e8: 0x000c, + 0x12ed: 0x000c, + 0x12f4: 0x000c, + 0x12f8: 0x000c, 0x12f9: 0x000c, + // Block 0x4c, offset 0x1300 + 0x1300: 0x000c, 0x1301: 0x000c, 0x1302: 0x000c, 0x1303: 0x000c, 0x1304: 0x000c, 0x1305: 0x000c, + 0x1306: 0x000c, 0x1307: 0x000c, 0x1308: 0x000c, 0x1309: 0x000c, 0x130a: 0x000c, 0x130b: 0x000c, + 0x130c: 0x000c, 0x130d: 0x000c, 0x130e: 0x000c, 0x130f: 0x000c, 0x1310: 0x000c, 0x1311: 0x000c, + 0x1312: 0x000c, 0x1313: 0x000c, 0x1314: 0x000c, 0x1315: 0x000c, 0x1316: 0x000c, 0x1317: 0x000c, + 0x1318: 0x000c, 0x1319: 0x000c, 0x131a: 0x000c, 0x131b: 0x000c, 0x131c: 0x000c, 0x131d: 0x000c, + 0x131e: 0x000c, 0x131f: 0x000c, 0x1320: 0x000c, 0x1321: 0x000c, 0x1322: 0x000c, 0x1323: 0x000c, + 0x1324: 0x000c, 0x1325: 0x000c, 0x1326: 0x000c, 0x1327: 0x000c, 0x1328: 0x000c, 0x1329: 0x000c, + 0x132a: 0x000c, 0x132b: 0x000c, 0x132c: 0x000c, 0x132d: 0x000c, 0x132e: 0x000c, 0x132f: 0x000c, + 0x1330: 0x000c, 0x1331: 0x000c, 0x1332: 0x000c, 0x1333: 0x000c, 0x1334: 0x000c, 0x1335: 0x000c, + 0x1336: 0x000c, 0x1337: 0x000c, 0x1338: 0x000c, 0x1339: 0x000c, 0x133b: 0x000c, + 0x133c: 0x000c, 0x133d: 0x000c, 0x133e: 0x000c, 0x133f: 0x000c, + // Block 0x4d, offset 0x1340 + 0x137d: 0x000a, 0x137f: 0x000a, + // Block 0x4e, offset 0x1380 + 0x1380: 0x000a, 0x1381: 0x000a, + 0x138d: 0x000a, 0x138e: 0x000a, 0x138f: 0x000a, + 0x139d: 0x000a, + 0x139e: 0x000a, 0x139f: 0x000a, + 0x13ad: 0x000a, 0x13ae: 0x000a, 0x13af: 0x000a, + 0x13bd: 0x000a, 0x13be: 0x000a, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x0009, 0x13c1: 0x0009, 0x13c2: 0x0009, 0x13c3: 0x0009, 0x13c4: 0x0009, 0x13c5: 0x0009, + 0x13c6: 0x0009, 0x13c7: 0x0009, 0x13c8: 0x0009, 0x13c9: 0x0009, 0x13ca: 0x0009, 0x13cb: 0x000b, + 0x13cc: 0x000b, 0x13cd: 0x000b, 0x13cf: 0x0001, 0x13d0: 0x000a, 0x13d1: 0x000a, + 0x13d2: 0x000a, 0x13d3: 0x000a, 0x13d4: 0x000a, 0x13d5: 0x000a, 0x13d6: 0x000a, 0x13d7: 0x000a, + 0x13d8: 0x000a, 0x13d9: 0x000a, 0x13da: 0x000a, 0x13db: 0x000a, 0x13dc: 0x000a, 0x13dd: 0x000a, + 0x13de: 0x000a, 0x13df: 0x000a, 0x13e0: 0x000a, 0x13e1: 0x000a, 0x13e2: 0x000a, 0x13e3: 0x000a, + 0x13e4: 0x000a, 0x13e5: 0x000a, 0x13e6: 0x000a, 0x13e7: 0x000a, 0x13e8: 0x0009, 0x13e9: 0x0007, + 0x13ea: 0x000e, 0x13eb: 0x000e, 0x13ec: 0x000e, 0x13ed: 0x000e, 0x13ee: 0x000e, 0x13ef: 0x0006, + 0x13f0: 0x0004, 0x13f1: 0x0004, 0x13f2: 0x0004, 0x13f3: 0x0004, 0x13f4: 0x0004, 0x13f5: 0x000a, + 0x13f6: 0x000a, 0x13f7: 0x000a, 0x13f8: 0x000a, 0x13f9: 0x000a, 0x13fa: 0x000a, 0x13fb: 0x000a, + 0x13fc: 0x000a, 0x13fd: 0x000a, 0x13fe: 0x000a, 0x13ff: 0x000a, + // Block 0x50, offset 0x1400 + 0x1400: 0x000a, 0x1401: 0x000a, 0x1402: 0x000a, 0x1403: 0x000a, 0x1404: 0x0006, 0x1405: 0x009a, + 0x1406: 0x008a, 0x1407: 0x000a, 0x1408: 0x000a, 0x1409: 0x000a, 0x140a: 0x000a, 0x140b: 0x000a, + 0x140c: 0x000a, 0x140d: 0x000a, 0x140e: 0x000a, 0x140f: 0x000a, 0x1410: 0x000a, 0x1411: 0x000a, + 0x1412: 0x000a, 0x1413: 0x000a, 0x1414: 0x000a, 0x1415: 0x000a, 0x1416: 0x000a, 0x1417: 0x000a, + 0x1418: 0x000a, 0x1419: 0x000a, 0x141a: 0x000a, 0x141b: 0x000a, 0x141c: 0x000a, 0x141d: 0x000a, + 0x141e: 0x000a, 0x141f: 0x0009, 0x1420: 0x000b, 0x1421: 0x000b, 0x1422: 0x000b, 0x1423: 0x000b, + 0x1424: 0x000b, 0x1425: 0x000b, 0x1426: 0x000e, 0x1427: 0x000e, 0x1428: 0x000e, 0x1429: 0x000e, + 0x142a: 0x000b, 0x142b: 0x000b, 0x142c: 0x000b, 0x142d: 0x000b, 0x142e: 0x000b, 0x142f: 0x000b, + 0x1430: 0x0002, 0x1434: 0x0002, 0x1435: 0x0002, + 0x1436: 0x0002, 0x1437: 0x0002, 0x1438: 0x0002, 0x1439: 0x0002, 0x143a: 0x0003, 0x143b: 0x0003, + 0x143c: 0x000a, 0x143d: 0x009a, 0x143e: 0x008a, + // Block 0x51, offset 0x1440 + 0x1440: 0x0002, 0x1441: 0x0002, 0x1442: 0x0002, 0x1443: 0x0002, 0x1444: 0x0002, 0x1445: 0x0002, + 0x1446: 0x0002, 0x1447: 0x0002, 0x1448: 0x0002, 0x1449: 0x0002, 0x144a: 0x0003, 0x144b: 0x0003, + 0x144c: 0x000a, 0x144d: 0x009a, 0x144e: 0x008a, + 0x1460: 0x0004, 0x1461: 0x0004, 0x1462: 0x0004, 0x1463: 0x0004, + 0x1464: 0x0004, 0x1465: 0x0004, 0x1466: 0x0004, 0x1467: 0x0004, 0x1468: 0x0004, 0x1469: 0x0004, + 0x146a: 0x0004, 0x146b: 0x0004, 0x146c: 0x0004, 0x146d: 0x0004, 0x146e: 0x0004, 0x146f: 0x0004, + 0x1470: 0x0004, 0x1471: 0x0004, 0x1472: 0x0004, 0x1473: 0x0004, 0x1474: 0x0004, 0x1475: 0x0004, + 0x1476: 0x0004, 0x1477: 0x0004, 0x1478: 0x0004, 0x1479: 0x0004, 0x147a: 0x0004, 0x147b: 0x0004, + 0x147c: 0x0004, 0x147d: 0x0004, 0x147e: 0x0004, 0x147f: 0x0004, + // Block 0x52, offset 0x1480 + 0x1480: 0x0004, 0x1481: 0x0004, 0x1482: 0x0004, 0x1483: 0x0004, 0x1484: 0x0004, 0x1485: 0x0004, + 0x1486: 0x0004, 0x1487: 0x0004, 0x1488: 0x0004, 0x1489: 0x0004, 0x148a: 0x0004, 0x148b: 0x0004, + 0x148c: 0x0004, 0x148d: 0x0004, 0x148e: 0x0004, 0x148f: 0x0004, 0x1490: 0x000c, 0x1491: 0x000c, + 0x1492: 0x000c, 0x1493: 0x000c, 0x1494: 0x000c, 0x1495: 0x000c, 0x1496: 0x000c, 0x1497: 0x000c, + 0x1498: 0x000c, 0x1499: 0x000c, 0x149a: 0x000c, 0x149b: 0x000c, 0x149c: 0x000c, 0x149d: 0x000c, + 0x149e: 0x000c, 0x149f: 0x000c, 0x14a0: 0x000c, 0x14a1: 0x000c, 0x14a2: 0x000c, 0x14a3: 0x000c, + 0x14a4: 0x000c, 0x14a5: 0x000c, 0x14a6: 0x000c, 0x14a7: 0x000c, 0x14a8: 0x000c, 0x14a9: 0x000c, + 0x14aa: 0x000c, 0x14ab: 0x000c, 0x14ac: 0x000c, 0x14ad: 0x000c, 0x14ae: 0x000c, 0x14af: 0x000c, + 0x14b0: 0x000c, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x000a, 0x14c1: 0x000a, 0x14c3: 0x000a, 0x14c4: 0x000a, 0x14c5: 0x000a, + 0x14c6: 0x000a, 0x14c8: 0x000a, 0x14c9: 0x000a, + 0x14d4: 0x000a, 0x14d6: 0x000a, 0x14d7: 0x000a, + 0x14d8: 0x000a, + 0x14de: 0x000a, 0x14df: 0x000a, 0x14e0: 0x000a, 0x14e1: 0x000a, 0x14e2: 0x000a, 0x14e3: 0x000a, + 0x14e5: 0x000a, 0x14e7: 0x000a, 0x14e9: 0x000a, + 0x14ee: 0x0004, + 0x14fa: 0x000a, 0x14fb: 0x000a, + // Block 0x54, offset 0x1500 + 0x1500: 0x000a, 0x1501: 0x000a, 0x1502: 0x000a, 0x1503: 0x000a, 0x1504: 0x000a, + 0x150a: 0x000a, 0x150b: 0x000a, + 0x150c: 0x000a, 0x150d: 0x000a, 0x1510: 0x000a, 0x1511: 0x000a, + 0x1512: 0x000a, 0x1513: 0x000a, 0x1514: 0x000a, 0x1515: 0x000a, 0x1516: 0x000a, 0x1517: 0x000a, + 0x1518: 0x000a, 0x1519: 0x000a, 0x151a: 0x000a, 0x151b: 0x000a, 0x151c: 0x000a, 0x151d: 0x000a, + 0x151e: 0x000a, 0x151f: 0x000a, + // Block 0x55, offset 0x1540 + 0x1549: 0x000a, 0x154a: 0x000a, 0x154b: 0x000a, + 0x1550: 0x000a, 0x1551: 0x000a, + 0x1552: 0x000a, 0x1553: 0x000a, 0x1554: 0x000a, 0x1555: 0x000a, 0x1556: 0x000a, 0x1557: 0x000a, + 0x1558: 0x000a, 0x1559: 0x000a, 0x155a: 0x000a, 0x155b: 0x000a, 0x155c: 0x000a, 0x155d: 0x000a, + 0x155e: 0x000a, 0x155f: 0x000a, 0x1560: 0x000a, 0x1561: 0x000a, 0x1562: 0x000a, 0x1563: 0x000a, + 0x1564: 0x000a, 0x1565: 0x000a, 0x1566: 0x000a, 0x1567: 0x000a, 0x1568: 0x000a, 0x1569: 0x000a, + 0x156a: 0x000a, 0x156b: 0x000a, 0x156c: 0x000a, 0x156d: 0x000a, 0x156e: 0x000a, 0x156f: 0x000a, + 0x1570: 0x000a, 0x1571: 0x000a, 0x1572: 0x000a, 0x1573: 0x000a, 0x1574: 0x000a, 0x1575: 0x000a, + 0x1576: 0x000a, 0x1577: 0x000a, 0x1578: 0x000a, 0x1579: 0x000a, 0x157a: 0x000a, 0x157b: 0x000a, + 0x157c: 0x000a, 0x157d: 0x000a, 0x157e: 0x000a, 0x157f: 0x000a, + // Block 0x56, offset 0x1580 + 0x1580: 0x000a, 0x1581: 0x000a, 0x1582: 0x000a, 0x1583: 0x000a, 0x1584: 0x000a, 0x1585: 0x000a, + 0x1586: 0x000a, 0x1587: 0x000a, 0x1588: 0x000a, 0x1589: 0x000a, 0x158a: 0x000a, 0x158b: 0x000a, + 0x158c: 0x000a, 0x158d: 0x000a, 0x158e: 0x000a, 0x158f: 0x000a, 0x1590: 0x000a, 0x1591: 0x000a, + 0x1592: 0x000a, 0x1593: 0x000a, 0x1594: 0x000a, 0x1595: 0x000a, 0x1596: 0x000a, 0x1597: 0x000a, + 0x1598: 0x000a, 0x1599: 0x000a, 0x159a: 0x000a, 0x159b: 0x000a, 0x159c: 0x000a, 0x159d: 0x000a, + 0x159e: 0x000a, 0x159f: 0x000a, 0x15a0: 0x000a, 0x15a1: 0x000a, 0x15a2: 0x000a, 0x15a3: 0x000a, + 0x15a4: 0x000a, 0x15a5: 0x000a, 0x15a6: 0x000a, 0x15a7: 0x000a, 0x15a8: 0x000a, 0x15a9: 0x000a, + 0x15aa: 0x000a, 0x15ab: 0x000a, 0x15ac: 0x000a, 0x15ad: 0x000a, 0x15ae: 0x000a, 0x15af: 0x000a, + 0x15b0: 0x000a, 0x15b1: 0x000a, 0x15b2: 0x000a, 0x15b3: 0x000a, 0x15b4: 0x000a, 0x15b5: 0x000a, + 0x15b6: 0x000a, 0x15b7: 0x000a, 0x15b8: 0x000a, 0x15b9: 0x000a, 0x15ba: 0x000a, 0x15bb: 0x000a, + 0x15bc: 0x000a, 0x15bd: 0x000a, 0x15be: 0x000a, 0x15bf: 0x000a, + // Block 0x57, offset 0x15c0 + 0x15c0: 0x000a, 0x15c1: 0x000a, 0x15c2: 0x000a, 0x15c3: 0x000a, 0x15c4: 0x000a, 0x15c5: 0x000a, + 0x15c6: 0x000a, 0x15c7: 0x000a, 0x15c8: 0x000a, 0x15c9: 0x000a, 0x15ca: 0x000a, 0x15cb: 0x000a, + 0x15cc: 0x000a, 0x15cd: 0x000a, 0x15ce: 0x000a, 0x15cf: 0x000a, 0x15d0: 0x000a, 0x15d1: 0x000a, + 0x15d2: 0x0003, 0x15d3: 0x0004, 0x15d4: 0x000a, 0x15d5: 0x000a, 0x15d6: 0x000a, 0x15d7: 0x000a, + 0x15d8: 0x000a, 0x15d9: 0x000a, 0x15da: 0x000a, 0x15db: 0x000a, 0x15dc: 0x000a, 0x15dd: 0x000a, + 0x15de: 0x000a, 0x15df: 0x000a, 0x15e0: 0x000a, 0x15e1: 0x000a, 0x15e2: 0x000a, 0x15e3: 0x000a, + 0x15e4: 0x000a, 0x15e5: 0x000a, 0x15e6: 0x000a, 0x15e7: 0x000a, 0x15e8: 0x000a, 0x15e9: 0x000a, + 0x15ea: 0x000a, 0x15eb: 0x000a, 0x15ec: 0x000a, 0x15ed: 0x000a, 0x15ee: 0x000a, 0x15ef: 0x000a, + 0x15f0: 0x000a, 0x15f1: 0x000a, 0x15f2: 0x000a, 0x15f3: 0x000a, 0x15f4: 0x000a, 0x15f5: 0x000a, + 0x15f6: 0x000a, 0x15f7: 0x000a, 0x15f8: 0x000a, 0x15f9: 0x000a, 0x15fa: 0x000a, 0x15fb: 0x000a, + 0x15fc: 0x000a, 0x15fd: 0x000a, 0x15fe: 0x000a, 0x15ff: 0x000a, + // Block 0x58, offset 0x1600 + 0x1600: 0x000a, 0x1601: 0x000a, 0x1602: 0x000a, 0x1603: 0x000a, 0x1604: 0x000a, 0x1605: 0x000a, + 0x1606: 0x000a, 0x1607: 0x000a, 0x1608: 0x003a, 0x1609: 0x002a, 0x160a: 0x003a, 0x160b: 0x002a, + 0x160c: 0x000a, 0x160d: 0x000a, 0x160e: 0x000a, 0x160f: 0x000a, 0x1610: 0x000a, 0x1611: 0x000a, + 0x1612: 0x000a, 0x1613: 0x000a, 0x1614: 0x000a, 0x1615: 0x000a, 0x1616: 0x000a, 0x1617: 0x000a, + 0x1618: 0x000a, 0x1619: 0x000a, 0x161a: 0x000a, 0x161b: 0x000a, 0x161c: 0x000a, 0x161d: 0x000a, + 0x161e: 0x000a, 0x161f: 0x000a, 0x1620: 0x000a, 0x1621: 0x000a, 0x1622: 0x000a, 0x1623: 0x000a, + 0x1624: 0x000a, 0x1625: 0x000a, 0x1626: 0x000a, 0x1627: 0x000a, 0x1628: 0x000a, 0x1629: 0x009a, + 0x162a: 0x008a, 0x162b: 0x000a, 0x162c: 0x000a, 0x162d: 0x000a, 0x162e: 0x000a, 0x162f: 0x000a, + 0x1630: 0x000a, 0x1631: 0x000a, 0x1632: 0x000a, 0x1633: 0x000a, 0x1634: 0x000a, 0x1635: 0x000a, + // Block 0x59, offset 0x1640 + 0x167b: 0x000a, + 0x167c: 0x000a, 0x167d: 0x000a, 0x167e: 0x000a, 0x167f: 0x000a, + // Block 0x5a, offset 0x1680 + 0x1680: 0x000a, 0x1681: 0x000a, 0x1682: 0x000a, 0x1683: 0x000a, 0x1684: 0x000a, 0x1685: 0x000a, + 0x1686: 0x000a, 0x1687: 0x000a, 0x1688: 0x000a, 0x1689: 0x000a, 0x168a: 0x000a, 0x168b: 0x000a, + 0x168c: 0x000a, 0x168d: 0x000a, 0x168e: 0x000a, 0x168f: 0x000a, 0x1690: 0x000a, 0x1691: 0x000a, + 0x1692: 0x000a, 0x1693: 0x000a, 0x1694: 0x000a, 0x1696: 0x000a, 0x1697: 0x000a, + 0x1698: 0x000a, 0x1699: 0x000a, 0x169a: 0x000a, 0x169b: 0x000a, 0x169c: 0x000a, 0x169d: 0x000a, + 0x169e: 0x000a, 0x169f: 0x000a, 0x16a0: 0x000a, 0x16a1: 0x000a, 0x16a2: 0x000a, 0x16a3: 0x000a, + 0x16a4: 0x000a, 0x16a5: 0x000a, 0x16a6: 0x000a, 0x16a7: 0x000a, 0x16a8: 0x000a, 0x16a9: 0x000a, + 0x16aa: 0x000a, 0x16ab: 0x000a, 0x16ac: 0x000a, 0x16ad: 0x000a, 0x16ae: 0x000a, 0x16af: 0x000a, + 0x16b0: 0x000a, 0x16b1: 0x000a, 0x16b2: 0x000a, 0x16b3: 0x000a, 0x16b4: 0x000a, 0x16b5: 0x000a, + 0x16b6: 0x000a, 0x16b7: 0x000a, 0x16b8: 0x000a, 0x16b9: 0x000a, 0x16ba: 0x000a, 0x16bb: 0x000a, + 0x16bc: 0x000a, 0x16bd: 0x000a, 0x16be: 0x000a, 0x16bf: 0x000a, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x000a, 0x16c1: 0x000a, 0x16c2: 0x000a, 0x16c3: 0x000a, 0x16c4: 0x000a, 0x16c5: 0x000a, + 0x16c6: 0x000a, 0x16c7: 0x000a, 0x16c8: 0x000a, 0x16c9: 0x000a, 0x16ca: 0x000a, 0x16cb: 0x000a, + 0x16cc: 0x000a, 0x16cd: 0x000a, 0x16ce: 0x000a, 0x16cf: 0x000a, 0x16d0: 0x000a, 0x16d1: 0x000a, + 0x16d2: 0x000a, 0x16d3: 0x000a, 0x16d4: 0x000a, 0x16d5: 0x000a, 0x16d6: 0x000a, 0x16d7: 0x000a, + 0x16d8: 0x000a, 0x16d9: 0x000a, 0x16da: 0x000a, 0x16db: 0x000a, 0x16dc: 0x000a, 0x16dd: 0x000a, + 0x16de: 0x000a, 0x16df: 0x000a, 0x16e0: 0x000a, 0x16e1: 0x000a, 0x16e2: 0x000a, 0x16e3: 0x000a, + 0x16e4: 0x000a, 0x16e5: 0x000a, 0x16e6: 0x000a, + // Block 0x5c, offset 0x1700 + 0x1700: 0x000a, 0x1701: 0x000a, 0x1702: 0x000a, 0x1703: 0x000a, 0x1704: 0x000a, 0x1705: 0x000a, + 0x1706: 0x000a, 0x1707: 0x000a, 0x1708: 0x000a, 0x1709: 0x000a, 0x170a: 0x000a, + 0x1720: 0x000a, 0x1721: 0x000a, 0x1722: 0x000a, 0x1723: 0x000a, + 0x1724: 0x000a, 0x1725: 0x000a, 0x1726: 0x000a, 0x1727: 0x000a, 0x1728: 0x000a, 0x1729: 0x000a, + 0x172a: 0x000a, 0x172b: 0x000a, 0x172c: 0x000a, 0x172d: 0x000a, 0x172e: 0x000a, 0x172f: 0x000a, + 0x1730: 0x000a, 0x1731: 0x000a, 0x1732: 0x000a, 0x1733: 0x000a, 0x1734: 0x000a, 0x1735: 0x000a, + 0x1736: 0x000a, 0x1737: 0x000a, 0x1738: 0x000a, 0x1739: 0x000a, 0x173a: 0x000a, 0x173b: 0x000a, + 0x173c: 0x000a, 0x173d: 0x000a, 0x173e: 0x000a, 0x173f: 0x000a, + // Block 0x5d, offset 0x1740 + 0x1740: 0x000a, 0x1741: 0x000a, 0x1742: 0x000a, 0x1743: 0x000a, 0x1744: 0x000a, 0x1745: 0x000a, + 0x1746: 0x000a, 0x1747: 0x000a, 0x1748: 0x0002, 0x1749: 0x0002, 0x174a: 0x0002, 0x174b: 0x0002, + 0x174c: 0x0002, 0x174d: 0x0002, 0x174e: 0x0002, 0x174f: 0x0002, 0x1750: 0x0002, 0x1751: 0x0002, + 0x1752: 0x0002, 0x1753: 0x0002, 0x1754: 0x0002, 0x1755: 0x0002, 0x1756: 0x0002, 0x1757: 0x0002, + 0x1758: 0x0002, 0x1759: 0x0002, 0x175a: 0x0002, 0x175b: 0x0002, + // Block 0x5e, offset 0x1780 + 0x17aa: 0x000a, 0x17ab: 0x000a, 0x17ac: 0x000a, 0x17ad: 0x000a, 0x17ae: 0x000a, 0x17af: 0x000a, + 0x17b0: 0x000a, 0x17b1: 0x000a, 0x17b2: 0x000a, 0x17b3: 0x000a, 0x17b4: 0x000a, 0x17b5: 0x000a, + 0x17b6: 0x000a, 0x17b7: 0x000a, 0x17b8: 0x000a, 0x17b9: 0x000a, 0x17ba: 0x000a, 0x17bb: 0x000a, + 0x17bc: 0x000a, 0x17bd: 0x000a, 0x17be: 0x000a, 0x17bf: 0x000a, + // Block 0x5f, offset 0x17c0 + 0x17c0: 0x000a, 0x17c1: 0x000a, 0x17c2: 0x000a, 0x17c3: 0x000a, 0x17c4: 0x000a, 0x17c5: 0x000a, + 0x17c6: 0x000a, 0x17c7: 0x000a, 0x17c8: 0x000a, 0x17c9: 0x000a, 0x17ca: 0x000a, 0x17cb: 0x000a, + 0x17cc: 0x000a, 0x17cd: 0x000a, 0x17ce: 0x000a, 0x17cf: 0x000a, 0x17d0: 0x000a, 0x17d1: 0x000a, + 0x17d2: 0x000a, 0x17d3: 0x000a, 0x17d4: 0x000a, 0x17d5: 0x000a, 0x17d6: 0x000a, 0x17d7: 0x000a, + 0x17d8: 0x000a, 0x17d9: 0x000a, 0x17da: 0x000a, 0x17db: 0x000a, 0x17dc: 0x000a, 0x17dd: 0x000a, + 0x17de: 0x000a, 0x17df: 0x000a, 0x17e0: 0x000a, 0x17e1: 0x000a, 0x17e2: 0x000a, 0x17e3: 0x000a, + 0x17e4: 0x000a, 0x17e5: 0x000a, 0x17e6: 0x000a, 0x17e7: 0x000a, 0x17e8: 0x000a, 0x17e9: 0x000a, + 0x17ea: 0x000a, 0x17eb: 0x000a, 0x17ed: 0x000a, 0x17ee: 0x000a, 0x17ef: 0x000a, + 0x17f0: 0x000a, 0x17f1: 0x000a, 0x17f2: 0x000a, 0x17f3: 0x000a, 0x17f4: 0x000a, 0x17f5: 0x000a, + 0x17f6: 0x000a, 0x17f7: 0x000a, 0x17f8: 0x000a, 0x17f9: 0x000a, 0x17fa: 0x000a, 0x17fb: 0x000a, + 0x17fc: 0x000a, 0x17fd: 0x000a, 0x17fe: 0x000a, 0x17ff: 0x000a, + // Block 0x60, offset 0x1800 + 0x1800: 0x000a, 0x1801: 0x000a, 0x1802: 0x000a, 0x1803: 0x000a, 0x1804: 0x000a, 0x1805: 0x000a, + 0x1806: 0x000a, 0x1807: 0x000a, 0x1808: 0x000a, 0x1809: 0x000a, 0x180a: 0x000a, 0x180b: 0x000a, + 0x180c: 0x000a, 0x180d: 0x000a, 0x180e: 0x000a, 0x180f: 0x000a, 0x1810: 0x000a, 0x1811: 0x000a, + 0x1812: 0x000a, 0x1813: 0x000a, 0x1814: 0x000a, 0x1815: 0x000a, 0x1816: 0x000a, 0x1817: 0x000a, + 0x1818: 0x000a, 0x1819: 0x000a, 0x181a: 0x000a, 0x181b: 0x000a, 0x181c: 0x000a, 0x181d: 0x000a, + 0x181e: 0x000a, 0x181f: 0x000a, 0x1820: 0x000a, 0x1821: 0x000a, 0x1822: 0x000a, 0x1823: 0x000a, + 0x1824: 0x000a, 0x1825: 0x000a, 0x1826: 0x000a, 0x1827: 0x000a, 0x1828: 0x003a, 0x1829: 0x002a, + 0x182a: 0x003a, 0x182b: 0x002a, 0x182c: 0x003a, 0x182d: 0x002a, 0x182e: 0x003a, 0x182f: 0x002a, + 0x1830: 0x003a, 0x1831: 0x002a, 0x1832: 0x003a, 0x1833: 0x002a, 0x1834: 0x003a, 0x1835: 0x002a, + 0x1836: 0x000a, 0x1837: 0x000a, 0x1838: 0x000a, 0x1839: 0x000a, 0x183a: 0x000a, 0x183b: 0x000a, + 0x183c: 0x000a, 0x183d: 0x000a, 0x183e: 0x000a, 0x183f: 0x000a, + // Block 0x61, offset 0x1840 + 0x1840: 0x000a, 0x1841: 0x000a, 0x1842: 0x000a, 0x1843: 0x000a, 0x1844: 0x000a, 0x1845: 0x009a, + 0x1846: 0x008a, 0x1847: 0x000a, 0x1848: 0x000a, 0x1849: 0x000a, 0x184a: 0x000a, 0x184b: 0x000a, + 0x184c: 0x000a, 0x184d: 0x000a, 0x184e: 0x000a, 0x184f: 0x000a, 0x1850: 0x000a, 0x1851: 0x000a, + 0x1852: 0x000a, 0x1853: 0x000a, 0x1854: 0x000a, 0x1855: 0x000a, 0x1856: 0x000a, 0x1857: 0x000a, + 0x1858: 0x000a, 0x1859: 0x000a, 0x185a: 0x000a, 0x185b: 0x000a, 0x185c: 0x000a, 0x185d: 0x000a, + 0x185e: 0x000a, 0x185f: 0x000a, 0x1860: 0x000a, 0x1861: 0x000a, 0x1862: 0x000a, 0x1863: 0x000a, + 0x1864: 0x000a, 0x1865: 0x000a, 0x1866: 0x003a, 0x1867: 0x002a, 0x1868: 0x003a, 0x1869: 0x002a, + 0x186a: 0x003a, 0x186b: 0x002a, 0x186c: 0x003a, 0x186d: 0x002a, 0x186e: 0x003a, 0x186f: 0x002a, + 0x1870: 0x000a, 0x1871: 0x000a, 0x1872: 0x000a, 0x1873: 0x000a, 0x1874: 0x000a, 0x1875: 0x000a, + 0x1876: 0x000a, 0x1877: 0x000a, 0x1878: 0x000a, 0x1879: 0x000a, 0x187a: 0x000a, 0x187b: 0x000a, + 0x187c: 0x000a, 0x187d: 0x000a, 0x187e: 0x000a, 0x187f: 0x000a, + // Block 0x62, offset 0x1880 + 0x1880: 0x000a, 0x1881: 0x000a, 0x1882: 0x000a, 0x1883: 0x007a, 0x1884: 0x006a, 0x1885: 0x009a, + 0x1886: 0x008a, 0x1887: 0x00ba, 0x1888: 0x00aa, 0x1889: 0x009a, 0x188a: 0x008a, 0x188b: 0x007a, + 0x188c: 0x006a, 0x188d: 0x00da, 0x188e: 0x002a, 0x188f: 0x003a, 0x1890: 0x00ca, 0x1891: 0x009a, + 0x1892: 0x008a, 0x1893: 0x007a, 0x1894: 0x006a, 0x1895: 0x009a, 0x1896: 0x008a, 0x1897: 0x00ba, + 0x1898: 0x00aa, 0x1899: 0x000a, 0x189a: 0x000a, 0x189b: 0x000a, 0x189c: 0x000a, 0x189d: 0x000a, + 0x189e: 0x000a, 0x189f: 0x000a, 0x18a0: 0x000a, 0x18a1: 0x000a, 0x18a2: 0x000a, 0x18a3: 0x000a, + 0x18a4: 0x000a, 0x18a5: 0x000a, 0x18a6: 0x000a, 0x18a7: 0x000a, 0x18a8: 0x000a, 0x18a9: 0x000a, + 0x18aa: 0x000a, 0x18ab: 0x000a, 0x18ac: 0x000a, 0x18ad: 0x000a, 0x18ae: 0x000a, 0x18af: 0x000a, + 0x18b0: 0x000a, 0x18b1: 0x000a, 0x18b2: 0x000a, 0x18b3: 0x000a, 0x18b4: 0x000a, 0x18b5: 0x000a, + 0x18b6: 0x000a, 0x18b7: 0x000a, 0x18b8: 0x000a, 0x18b9: 0x000a, 0x18ba: 0x000a, 0x18bb: 0x000a, + 0x18bc: 0x000a, 0x18bd: 0x000a, 0x18be: 0x000a, 0x18bf: 0x000a, + // Block 0x63, offset 0x18c0 + 0x18c0: 0x000a, 0x18c1: 0x000a, 0x18c2: 0x000a, 0x18c3: 0x000a, 0x18c4: 0x000a, 0x18c5: 0x000a, + 0x18c6: 0x000a, 0x18c7: 0x000a, 0x18c8: 0x000a, 0x18c9: 0x000a, 0x18ca: 0x000a, 0x18cb: 0x000a, + 0x18cc: 0x000a, 0x18cd: 0x000a, 0x18ce: 0x000a, 0x18cf: 0x000a, 0x18d0: 0x000a, 0x18d1: 0x000a, + 0x18d2: 0x000a, 0x18d3: 0x000a, 0x18d4: 0x000a, 0x18d5: 0x000a, 0x18d6: 0x000a, 0x18d7: 0x000a, + 0x18d8: 0x003a, 0x18d9: 0x002a, 0x18da: 0x003a, 0x18db: 0x002a, 0x18dc: 0x000a, 0x18dd: 0x000a, + 0x18de: 0x000a, 0x18df: 0x000a, 0x18e0: 0x000a, 0x18e1: 0x000a, 0x18e2: 0x000a, 0x18e3: 0x000a, + 0x18e4: 0x000a, 0x18e5: 0x000a, 0x18e6: 0x000a, 0x18e7: 0x000a, 0x18e8: 0x000a, 0x18e9: 0x000a, + 0x18ea: 0x000a, 0x18eb: 0x000a, 0x18ec: 0x000a, 0x18ed: 0x000a, 0x18ee: 0x000a, 0x18ef: 0x000a, + 0x18f0: 0x000a, 0x18f1: 0x000a, 0x18f2: 0x000a, 0x18f3: 0x000a, 0x18f4: 0x000a, 0x18f5: 0x000a, + 0x18f6: 0x000a, 0x18f7: 0x000a, 0x18f8: 0x000a, 0x18f9: 0x000a, 0x18fa: 0x000a, 0x18fb: 0x000a, + 0x18fc: 0x003a, 0x18fd: 0x002a, 0x18fe: 0x000a, 0x18ff: 0x000a, + // Block 0x64, offset 0x1900 + 0x1900: 0x000a, 0x1901: 0x000a, 0x1902: 0x000a, 0x1903: 0x000a, 0x1904: 0x000a, 0x1905: 0x000a, + 0x1906: 0x000a, 0x1907: 0x000a, 0x1908: 0x000a, 0x1909: 0x000a, 0x190a: 0x000a, 0x190b: 0x000a, + 0x190c: 0x000a, 0x190d: 0x000a, 0x190e: 0x000a, 0x190f: 0x000a, 0x1910: 0x000a, 0x1911: 0x000a, + 0x1912: 0x000a, 0x1913: 0x000a, 0x1914: 0x000a, 0x1915: 0x000a, 0x1916: 0x000a, 0x1917: 0x000a, + 0x1918: 0x000a, 0x1919: 0x000a, 0x191a: 0x000a, 0x191b: 0x000a, 0x191c: 0x000a, 0x191d: 0x000a, + 0x191e: 0x000a, 0x191f: 0x000a, 0x1920: 0x000a, 0x1921: 0x000a, 0x1922: 0x000a, 0x1923: 0x000a, + 0x1924: 0x000a, 0x1925: 0x000a, 0x1926: 0x000a, 0x1927: 0x000a, 0x1928: 0x000a, 0x1929: 0x000a, + 0x192a: 0x000a, 0x192b: 0x000a, 0x192c: 0x000a, 0x192d: 0x000a, 0x192e: 0x000a, 0x192f: 0x000a, + 0x1930: 0x000a, 0x1931: 0x000a, 0x1932: 0x000a, 0x1933: 0x000a, + 0x1936: 0x000a, 0x1937: 0x000a, 0x1938: 0x000a, 0x1939: 0x000a, 0x193a: 0x000a, 0x193b: 0x000a, + 0x193c: 0x000a, 0x193d: 0x000a, 0x193e: 0x000a, 0x193f: 0x000a, + // Block 0x65, offset 0x1940 + 0x1940: 0x000a, 0x1941: 0x000a, 0x1942: 0x000a, 0x1943: 0x000a, 0x1944: 0x000a, 0x1945: 0x000a, + 0x1946: 0x000a, 0x1947: 0x000a, 0x1948: 0x000a, 0x1949: 0x000a, 0x194a: 0x000a, 0x194b: 0x000a, + 0x194c: 0x000a, 0x194d: 0x000a, 0x194e: 0x000a, 0x194f: 0x000a, 0x1950: 0x000a, 0x1951: 0x000a, + 0x1952: 0x000a, 0x1953: 0x000a, 0x1954: 0x000a, 0x1955: 0x000a, + 0x1958: 0x000a, 0x1959: 0x000a, 0x195a: 0x000a, 0x195b: 0x000a, 0x195c: 0x000a, 0x195d: 0x000a, + 0x195e: 0x000a, 0x195f: 0x000a, 0x1960: 0x000a, 0x1961: 0x000a, 0x1962: 0x000a, 0x1963: 0x000a, + 0x1964: 0x000a, 0x1965: 0x000a, 0x1966: 0x000a, 0x1967: 0x000a, 0x1968: 0x000a, 0x1969: 0x000a, + 0x196a: 0x000a, 0x196b: 0x000a, 0x196c: 0x000a, 0x196d: 0x000a, 0x196e: 0x000a, 0x196f: 0x000a, + 0x1970: 0x000a, 0x1971: 0x000a, 0x1972: 0x000a, 0x1973: 0x000a, 0x1974: 0x000a, 0x1975: 0x000a, + 0x1976: 0x000a, 0x1977: 0x000a, 0x1978: 0x000a, 0x1979: 0x000a, 0x197a: 0x000a, 0x197b: 0x000a, + 0x197c: 0x000a, 0x197d: 0x000a, 0x197e: 0x000a, 0x197f: 0x000a, + // Block 0x66, offset 0x1980 + 0x1980: 0x000a, 0x1981: 0x000a, 0x1982: 0x000a, 0x1983: 0x000a, 0x1984: 0x000a, 0x1985: 0x000a, + 0x1986: 0x000a, 0x1987: 0x000a, 0x1988: 0x000a, 0x198a: 0x000a, 0x198b: 0x000a, + 0x198c: 0x000a, 0x198d: 0x000a, 0x198e: 0x000a, 0x198f: 0x000a, 0x1990: 0x000a, 0x1991: 0x000a, + 0x1992: 0x000a, 0x1993: 0x000a, 0x1994: 0x000a, 0x1995: 0x000a, 0x1996: 0x000a, 0x1997: 0x000a, + 0x1998: 0x000a, 0x1999: 0x000a, 0x199a: 0x000a, 0x199b: 0x000a, 0x199c: 0x000a, 0x199d: 0x000a, + 0x199e: 0x000a, 0x199f: 0x000a, 0x19a0: 0x000a, 0x19a1: 0x000a, 0x19a2: 0x000a, 0x19a3: 0x000a, + 0x19a4: 0x000a, 0x19a5: 0x000a, 0x19a6: 0x000a, 0x19a7: 0x000a, 0x19a8: 0x000a, 0x19a9: 0x000a, + 0x19aa: 0x000a, 0x19ab: 0x000a, 0x19ac: 0x000a, 0x19ad: 0x000a, 0x19ae: 0x000a, 0x19af: 0x000a, + 0x19b0: 0x000a, 0x19b1: 0x000a, 0x19b2: 0x000a, 0x19b3: 0x000a, 0x19b4: 0x000a, 0x19b5: 0x000a, + 0x19b6: 0x000a, 0x19b7: 0x000a, 0x19b8: 0x000a, 0x19b9: 0x000a, 0x19ba: 0x000a, 0x19bb: 0x000a, + 0x19bc: 0x000a, 0x19bd: 0x000a, 0x19be: 0x000a, + // Block 0x67, offset 0x19c0 + 0x19e5: 0x000a, 0x19e6: 0x000a, 0x19e7: 0x000a, 0x19e8: 0x000a, 0x19e9: 0x000a, + 0x19ea: 0x000a, 0x19ef: 0x000c, + 0x19f0: 0x000c, 0x19f1: 0x000c, + 0x19f9: 0x000a, 0x19fa: 0x000a, 0x19fb: 0x000a, + 0x19fc: 0x000a, 0x19fd: 0x000a, 0x19fe: 0x000a, 0x19ff: 0x000a, + // Block 0x68, offset 0x1a00 + 0x1a3f: 0x000c, + // Block 0x69, offset 0x1a40 + 0x1a60: 0x000c, 0x1a61: 0x000c, 0x1a62: 0x000c, 0x1a63: 0x000c, + 0x1a64: 0x000c, 0x1a65: 0x000c, 0x1a66: 0x000c, 0x1a67: 0x000c, 0x1a68: 0x000c, 0x1a69: 0x000c, + 0x1a6a: 0x000c, 0x1a6b: 0x000c, 0x1a6c: 0x000c, 0x1a6d: 0x000c, 0x1a6e: 0x000c, 0x1a6f: 0x000c, + 0x1a70: 0x000c, 0x1a71: 0x000c, 0x1a72: 0x000c, 0x1a73: 0x000c, 0x1a74: 0x000c, 0x1a75: 0x000c, + 0x1a76: 0x000c, 0x1a77: 0x000c, 0x1a78: 0x000c, 0x1a79: 0x000c, 0x1a7a: 0x000c, 0x1a7b: 0x000c, + 0x1a7c: 0x000c, 0x1a7d: 0x000c, 0x1a7e: 0x000c, 0x1a7f: 0x000c, + // Block 0x6a, offset 0x1a80 + 0x1a80: 0x000a, 0x1a81: 0x000a, 0x1a82: 0x000a, 0x1a83: 0x000a, 0x1a84: 0x000a, 0x1a85: 0x000a, + 0x1a86: 0x000a, 0x1a87: 0x000a, 0x1a88: 0x000a, 0x1a89: 0x000a, 0x1a8a: 0x000a, 0x1a8b: 0x000a, + 0x1a8c: 0x000a, 0x1a8d: 0x000a, 0x1a8e: 0x000a, 0x1a8f: 0x000a, 0x1a90: 0x000a, 0x1a91: 0x000a, + 0x1a92: 0x000a, 0x1a93: 0x000a, 0x1a94: 0x000a, 0x1a95: 0x000a, 0x1a96: 0x000a, 0x1a97: 0x000a, + 0x1a98: 0x000a, 0x1a99: 0x000a, 0x1a9a: 0x000a, 0x1a9b: 0x000a, 0x1a9c: 0x000a, 0x1a9d: 0x000a, + 0x1a9e: 0x000a, 0x1a9f: 0x000a, 0x1aa0: 0x000a, 0x1aa1: 0x000a, 0x1aa2: 0x003a, 0x1aa3: 0x002a, + 0x1aa4: 0x003a, 0x1aa5: 0x002a, 0x1aa6: 0x003a, 0x1aa7: 0x002a, 0x1aa8: 0x003a, 0x1aa9: 0x002a, + 0x1aaa: 0x000a, 0x1aab: 0x000a, 0x1aac: 0x000a, 0x1aad: 0x000a, 0x1aae: 0x000a, 0x1aaf: 0x000a, + 0x1ab0: 0x000a, 0x1ab1: 0x000a, 0x1ab2: 0x000a, 0x1ab3: 0x000a, 0x1ab4: 0x000a, 0x1ab5: 0x000a, + 0x1ab6: 0x000a, 0x1ab7: 0x000a, 0x1ab8: 0x000a, 0x1ab9: 0x000a, 0x1aba: 0x000a, 0x1abb: 0x000a, + 0x1abc: 0x000a, 0x1abd: 0x000a, 0x1abe: 0x000a, 0x1abf: 0x000a, + // Block 0x6b, offset 0x1ac0 + 0x1ac0: 0x000a, 0x1ac1: 0x000a, 0x1ac2: 0x000a, 0x1ac3: 0x000a, 0x1ac4: 0x000a, 0x1ac5: 0x000a, + 0x1ac6: 0x000a, 0x1ac7: 0x000a, 0x1ac8: 0x000a, 0x1ac9: 0x000a, 0x1aca: 0x000a, 0x1acb: 0x000a, + 0x1acc: 0x000a, 0x1acd: 0x000a, 0x1ace: 0x000a, + // Block 0x6c, offset 0x1b00 + 0x1b00: 0x000a, 0x1b01: 0x000a, 0x1b02: 0x000a, 0x1b03: 0x000a, 0x1b04: 0x000a, 0x1b05: 0x000a, + 0x1b06: 0x000a, 0x1b07: 0x000a, 0x1b08: 0x000a, 0x1b09: 0x000a, 0x1b0a: 0x000a, 0x1b0b: 0x000a, + 0x1b0c: 0x000a, 0x1b0d: 0x000a, 0x1b0e: 0x000a, 0x1b0f: 0x000a, 0x1b10: 0x000a, 0x1b11: 0x000a, + 0x1b12: 0x000a, 0x1b13: 0x000a, 0x1b14: 0x000a, 0x1b15: 0x000a, 0x1b16: 0x000a, 0x1b17: 0x000a, + 0x1b18: 0x000a, 0x1b19: 0x000a, 0x1b1b: 0x000a, 0x1b1c: 0x000a, 0x1b1d: 0x000a, + 0x1b1e: 0x000a, 0x1b1f: 0x000a, 0x1b20: 0x000a, 0x1b21: 0x000a, 0x1b22: 0x000a, 0x1b23: 0x000a, + 0x1b24: 0x000a, 0x1b25: 0x000a, 0x1b26: 0x000a, 0x1b27: 0x000a, 0x1b28: 0x000a, 0x1b29: 0x000a, + 0x1b2a: 0x000a, 0x1b2b: 0x000a, 0x1b2c: 0x000a, 0x1b2d: 0x000a, 0x1b2e: 0x000a, 0x1b2f: 0x000a, + 0x1b30: 0x000a, 0x1b31: 0x000a, 0x1b32: 0x000a, 0x1b33: 0x000a, 0x1b34: 0x000a, 0x1b35: 0x000a, + 0x1b36: 0x000a, 0x1b37: 0x000a, 0x1b38: 0x000a, 0x1b39: 0x000a, 0x1b3a: 0x000a, 0x1b3b: 0x000a, + 0x1b3c: 0x000a, 0x1b3d: 0x000a, 0x1b3e: 0x000a, 0x1b3f: 0x000a, + // Block 0x6d, offset 0x1b40 + 0x1b40: 0x000a, 0x1b41: 0x000a, 0x1b42: 0x000a, 0x1b43: 0x000a, 0x1b44: 0x000a, 0x1b45: 0x000a, + 0x1b46: 0x000a, 0x1b47: 0x000a, 0x1b48: 0x000a, 0x1b49: 0x000a, 0x1b4a: 0x000a, 0x1b4b: 0x000a, + 0x1b4c: 0x000a, 0x1b4d: 0x000a, 0x1b4e: 0x000a, 0x1b4f: 0x000a, 0x1b50: 0x000a, 0x1b51: 0x000a, + 0x1b52: 0x000a, 0x1b53: 0x000a, 0x1b54: 0x000a, 0x1b55: 0x000a, 0x1b56: 0x000a, 0x1b57: 0x000a, + 0x1b58: 0x000a, 0x1b59: 0x000a, 0x1b5a: 0x000a, 0x1b5b: 0x000a, 0x1b5c: 0x000a, 0x1b5d: 0x000a, + 0x1b5e: 0x000a, 0x1b5f: 0x000a, 0x1b60: 0x000a, 0x1b61: 0x000a, 0x1b62: 0x000a, 0x1b63: 0x000a, + 0x1b64: 0x000a, 0x1b65: 0x000a, 0x1b66: 0x000a, 0x1b67: 0x000a, 0x1b68: 0x000a, 0x1b69: 0x000a, + 0x1b6a: 0x000a, 0x1b6b: 0x000a, 0x1b6c: 0x000a, 0x1b6d: 0x000a, 0x1b6e: 0x000a, 0x1b6f: 0x000a, + 0x1b70: 0x000a, 0x1b71: 0x000a, 0x1b72: 0x000a, 0x1b73: 0x000a, + // Block 0x6e, offset 0x1b80 + 0x1b80: 0x000a, 0x1b81: 0x000a, 0x1b82: 0x000a, 0x1b83: 0x000a, 0x1b84: 0x000a, 0x1b85: 0x000a, + 0x1b86: 0x000a, 0x1b87: 0x000a, 0x1b88: 0x000a, 0x1b89: 0x000a, 0x1b8a: 0x000a, 0x1b8b: 0x000a, + 0x1b8c: 0x000a, 0x1b8d: 0x000a, 0x1b8e: 0x000a, 0x1b8f: 0x000a, 0x1b90: 0x000a, 0x1b91: 0x000a, + 0x1b92: 0x000a, 0x1b93: 0x000a, 0x1b94: 0x000a, 0x1b95: 0x000a, + 0x1bb0: 0x000a, 0x1bb1: 0x000a, 0x1bb2: 0x000a, 0x1bb3: 0x000a, 0x1bb4: 0x000a, 0x1bb5: 0x000a, + 0x1bb6: 0x000a, 0x1bb7: 0x000a, 0x1bb8: 0x000a, 0x1bb9: 0x000a, 0x1bba: 0x000a, 0x1bbb: 0x000a, + // Block 0x6f, offset 0x1bc0 + 0x1bc0: 0x0009, 0x1bc1: 0x000a, 0x1bc2: 0x000a, 0x1bc3: 0x000a, 0x1bc4: 0x000a, + 0x1bc8: 0x003a, 0x1bc9: 0x002a, 0x1bca: 0x003a, 0x1bcb: 0x002a, + 0x1bcc: 0x003a, 0x1bcd: 0x002a, 0x1bce: 0x003a, 0x1bcf: 0x002a, 0x1bd0: 0x003a, 0x1bd1: 0x002a, + 0x1bd2: 0x000a, 0x1bd3: 0x000a, 0x1bd4: 0x003a, 0x1bd5: 0x002a, 0x1bd6: 0x003a, 0x1bd7: 0x002a, + 0x1bd8: 0x003a, 0x1bd9: 0x002a, 0x1bda: 0x003a, 0x1bdb: 0x002a, 0x1bdc: 0x000a, 0x1bdd: 0x000a, + 0x1bde: 0x000a, 0x1bdf: 0x000a, 0x1be0: 0x000a, + 0x1bea: 0x000c, 0x1beb: 0x000c, 0x1bec: 0x000c, 0x1bed: 0x000c, + 0x1bf0: 0x000a, + 0x1bf6: 0x000a, 0x1bf7: 0x000a, + 0x1bfd: 0x000a, 0x1bfe: 0x000a, 0x1bff: 0x000a, + // Block 0x70, offset 0x1c00 + 0x1c19: 0x000c, 0x1c1a: 0x000c, 0x1c1b: 0x000a, 0x1c1c: 0x000a, + 0x1c20: 0x000a, + // Block 0x71, offset 0x1c40 + 0x1c7b: 0x000a, + // Block 0x72, offset 0x1c80 + 0x1c80: 0x000a, 0x1c81: 0x000a, 0x1c82: 0x000a, 0x1c83: 0x000a, 0x1c84: 0x000a, 0x1c85: 0x000a, + 0x1c86: 0x000a, 0x1c87: 0x000a, 0x1c88: 0x000a, 0x1c89: 0x000a, 0x1c8a: 0x000a, 0x1c8b: 0x000a, + 0x1c8c: 0x000a, 0x1c8d: 0x000a, 0x1c8e: 0x000a, 0x1c8f: 0x000a, 0x1c90: 0x000a, 0x1c91: 0x000a, + 0x1c92: 0x000a, 0x1c93: 0x000a, 0x1c94: 0x000a, 0x1c95: 0x000a, 0x1c96: 0x000a, 0x1c97: 0x000a, + 0x1c98: 0x000a, 0x1c99: 0x000a, 0x1c9a: 0x000a, 0x1c9b: 0x000a, 0x1c9c: 0x000a, 0x1c9d: 0x000a, + 0x1c9e: 0x000a, 0x1c9f: 0x000a, 0x1ca0: 0x000a, 0x1ca1: 0x000a, 0x1ca2: 0x000a, 0x1ca3: 0x000a, + // Block 0x73, offset 0x1cc0 + 0x1cdd: 0x000a, + 0x1cde: 0x000a, + // Block 0x74, offset 0x1d00 + 0x1d10: 0x000a, 0x1d11: 0x000a, + 0x1d12: 0x000a, 0x1d13: 0x000a, 0x1d14: 0x000a, 0x1d15: 0x000a, 0x1d16: 0x000a, 0x1d17: 0x000a, + 0x1d18: 0x000a, 0x1d19: 0x000a, 0x1d1a: 0x000a, 0x1d1b: 0x000a, 0x1d1c: 0x000a, 0x1d1d: 0x000a, + 0x1d1e: 0x000a, 0x1d1f: 0x000a, + 0x1d3c: 0x000a, 0x1d3d: 0x000a, 0x1d3e: 0x000a, + // Block 0x75, offset 0x1d40 + 0x1d71: 0x000a, 0x1d72: 0x000a, 0x1d73: 0x000a, 0x1d74: 0x000a, 0x1d75: 0x000a, + 0x1d76: 0x000a, 0x1d77: 0x000a, 0x1d78: 0x000a, 0x1d79: 0x000a, 0x1d7a: 0x000a, 0x1d7b: 0x000a, + 0x1d7c: 0x000a, 0x1d7d: 0x000a, 0x1d7e: 0x000a, 0x1d7f: 0x000a, + // Block 0x76, offset 0x1d80 + 0x1d8c: 0x000a, 0x1d8d: 0x000a, 0x1d8e: 0x000a, 0x1d8f: 0x000a, + // Block 0x77, offset 0x1dc0 + 0x1df7: 0x000a, 0x1df8: 0x000a, 0x1df9: 0x000a, 0x1dfa: 0x000a, + // Block 0x78, offset 0x1e00 + 0x1e1e: 0x000a, 0x1e1f: 0x000a, + 0x1e3f: 0x000a, + // Block 0x79, offset 0x1e40 + 0x1e50: 0x000a, 0x1e51: 0x000a, + 0x1e52: 0x000a, 0x1e53: 0x000a, 0x1e54: 0x000a, 0x1e55: 0x000a, 0x1e56: 0x000a, 0x1e57: 0x000a, + 0x1e58: 0x000a, 0x1e59: 0x000a, 0x1e5a: 0x000a, 0x1e5b: 0x000a, 0x1e5c: 0x000a, 0x1e5d: 0x000a, + 0x1e5e: 0x000a, 0x1e5f: 0x000a, 0x1e60: 0x000a, 0x1e61: 0x000a, 0x1e62: 0x000a, 0x1e63: 0x000a, + 0x1e64: 0x000a, 0x1e65: 0x000a, 0x1e66: 0x000a, 0x1e67: 0x000a, 0x1e68: 0x000a, 0x1e69: 0x000a, + 0x1e6a: 0x000a, 0x1e6b: 0x000a, 0x1e6c: 0x000a, 0x1e6d: 0x000a, 0x1e6e: 0x000a, 0x1e6f: 0x000a, + 0x1e70: 0x000a, 0x1e71: 0x000a, 0x1e72: 0x000a, 0x1e73: 0x000a, 0x1e74: 0x000a, 0x1e75: 0x000a, + 0x1e76: 0x000a, 0x1e77: 0x000a, 0x1e78: 0x000a, 0x1e79: 0x000a, 0x1e7a: 0x000a, 0x1e7b: 0x000a, + 0x1e7c: 0x000a, 0x1e7d: 0x000a, 0x1e7e: 0x000a, 0x1e7f: 0x000a, + // Block 0x7a, offset 0x1e80 + 0x1e80: 0x000a, 0x1e81: 0x000a, 0x1e82: 0x000a, 0x1e83: 0x000a, 0x1e84: 0x000a, 0x1e85: 0x000a, + 0x1e86: 0x000a, + // Block 0x7b, offset 0x1ec0 + 0x1ecd: 0x000a, 0x1ece: 0x000a, 0x1ecf: 0x000a, + // Block 0x7c, offset 0x1f00 + 0x1f2f: 0x000c, + 0x1f30: 0x000c, 0x1f31: 0x000c, 0x1f32: 0x000c, 0x1f33: 0x000a, 0x1f34: 0x000c, 0x1f35: 0x000c, + 0x1f36: 0x000c, 0x1f37: 0x000c, 0x1f38: 0x000c, 0x1f39: 0x000c, 0x1f3a: 0x000c, 0x1f3b: 0x000c, + 0x1f3c: 0x000c, 0x1f3d: 0x000c, 0x1f3e: 0x000a, 0x1f3f: 0x000a, + // Block 0x7d, offset 0x1f40 + 0x1f5e: 0x000c, 0x1f5f: 0x000c, + // Block 0x7e, offset 0x1f80 + 0x1fb0: 0x000c, 0x1fb1: 0x000c, + // Block 0x7f, offset 0x1fc0 + 0x1fc0: 0x000a, 0x1fc1: 0x000a, 0x1fc2: 0x000a, 0x1fc3: 0x000a, 0x1fc4: 0x000a, 0x1fc5: 0x000a, + 0x1fc6: 0x000a, 0x1fc7: 0x000a, 0x1fc8: 0x000a, 0x1fc9: 0x000a, 0x1fca: 0x000a, 0x1fcb: 0x000a, + 0x1fcc: 0x000a, 0x1fcd: 0x000a, 0x1fce: 0x000a, 0x1fcf: 0x000a, 0x1fd0: 0x000a, 0x1fd1: 0x000a, + 0x1fd2: 0x000a, 0x1fd3: 0x000a, 0x1fd4: 0x000a, 0x1fd5: 0x000a, 0x1fd6: 0x000a, 0x1fd7: 0x000a, + 0x1fd8: 0x000a, 0x1fd9: 0x000a, 0x1fda: 0x000a, 0x1fdb: 0x000a, 0x1fdc: 0x000a, 0x1fdd: 0x000a, + 0x1fde: 0x000a, 0x1fdf: 0x000a, 0x1fe0: 0x000a, 0x1fe1: 0x000a, + // Block 0x80, offset 0x2000 + 0x2008: 0x000a, + // Block 0x81, offset 0x2040 + 0x2042: 0x000c, + 0x2046: 0x000c, 0x204b: 0x000c, + 0x2065: 0x000c, 0x2066: 0x000c, 0x2068: 0x000a, 0x2069: 0x000a, + 0x206a: 0x000a, 0x206b: 0x000a, + 0x2078: 0x0004, 0x2079: 0x0004, + // Block 0x82, offset 0x2080 + 0x20b4: 0x000a, 0x20b5: 0x000a, + 0x20b6: 0x000a, 0x20b7: 0x000a, + // Block 0x83, offset 0x20c0 + 0x20c4: 0x000c, 0x20c5: 0x000c, + 0x20e0: 0x000c, 0x20e1: 0x000c, 0x20e2: 0x000c, 0x20e3: 0x000c, + 0x20e4: 0x000c, 0x20e5: 0x000c, 0x20e6: 0x000c, 0x20e7: 0x000c, 0x20e8: 0x000c, 0x20e9: 0x000c, + 0x20ea: 0x000c, 0x20eb: 0x000c, 0x20ec: 0x000c, 0x20ed: 0x000c, 0x20ee: 0x000c, 0x20ef: 0x000c, + 0x20f0: 0x000c, 0x20f1: 0x000c, + 0x20ff: 0x000c, + // Block 0x84, offset 0x2100 + 0x2126: 0x000c, 0x2127: 0x000c, 0x2128: 0x000c, 0x2129: 0x000c, + 0x212a: 0x000c, 0x212b: 0x000c, 0x212c: 0x000c, 0x212d: 0x000c, + // Block 0x85, offset 0x2140 + 0x2147: 0x000c, 0x2148: 0x000c, 0x2149: 0x000c, 0x214a: 0x000c, 0x214b: 0x000c, + 0x214c: 0x000c, 0x214d: 0x000c, 0x214e: 0x000c, 0x214f: 0x000c, 0x2150: 0x000c, 0x2151: 0x000c, + // Block 0x86, offset 0x2180 + 0x2180: 0x000c, 0x2181: 0x000c, 0x2182: 0x000c, + 0x21b3: 0x000c, + 0x21b6: 0x000c, 0x21b7: 0x000c, 0x21b8: 0x000c, 0x21b9: 0x000c, + 0x21bc: 0x000c, + // Block 0x87, offset 0x21c0 + 0x21e5: 0x000c, + // Block 0x88, offset 0x2200 + 0x2229: 0x000c, + 0x222a: 0x000c, 0x222b: 0x000c, 0x222c: 0x000c, 0x222d: 0x000c, 0x222e: 0x000c, + 0x2231: 0x000c, 0x2232: 0x000c, 0x2235: 0x000c, + 0x2236: 0x000c, + // Block 0x89, offset 0x2240 + 0x2243: 0x000c, + 0x224c: 0x000c, + 0x227c: 0x000c, + // Block 0x8a, offset 0x2280 + 0x22b0: 0x000c, 0x22b2: 0x000c, 0x22b3: 0x000c, 0x22b4: 0x000c, + 0x22b7: 0x000c, 0x22b8: 0x000c, + 0x22be: 0x000c, 0x22bf: 0x000c, + // Block 0x8b, offset 0x22c0 + 0x22c1: 0x000c, + 0x22ec: 0x000c, 0x22ed: 0x000c, + 0x22f6: 0x000c, + // Block 0x8c, offset 0x2300 + 0x2325: 0x000c, 0x2328: 0x000c, + 0x232d: 0x000c, + // Block 0x8d, offset 0x2340 + 0x235d: 0x0001, + 0x235e: 0x000c, 0x235f: 0x0001, 0x2360: 0x0001, 0x2361: 0x0001, 0x2362: 0x0001, 0x2363: 0x0001, + 0x2364: 0x0001, 0x2365: 0x0001, 0x2366: 0x0001, 0x2367: 0x0001, 0x2368: 0x0001, 0x2369: 0x0003, + 0x236a: 0x0001, 0x236b: 0x0001, 0x236c: 0x0001, 0x236d: 0x0001, 0x236e: 0x0001, 0x236f: 0x0001, + 0x2370: 0x0001, 0x2371: 0x0001, 0x2372: 0x0001, 0x2373: 0x0001, 0x2374: 0x0001, 0x2375: 0x0001, + 0x2376: 0x0001, 0x2377: 0x0001, 0x2378: 0x0001, 0x2379: 0x0001, 0x237a: 0x0001, 0x237b: 0x0001, + 0x237c: 0x0001, 0x237d: 0x0001, 0x237e: 0x0001, 0x237f: 0x0001, + // Block 0x8e, offset 0x2380 + 0x2380: 0x0001, 0x2381: 0x0001, 0x2382: 0x0001, 0x2383: 0x0001, 0x2384: 0x0001, 0x2385: 0x0001, + 0x2386: 0x0001, 0x2387: 0x0001, 0x2388: 0x0001, 0x2389: 0x0001, 0x238a: 0x0001, 0x238b: 0x0001, + 0x238c: 0x0001, 0x238d: 0x0001, 0x238e: 0x0001, 0x238f: 0x0001, 0x2390: 0x000d, 0x2391: 0x000d, + 0x2392: 0x000d, 0x2393: 0x000d, 0x2394: 0x000d, 0x2395: 0x000d, 0x2396: 0x000d, 0x2397: 0x000d, + 0x2398: 0x000d, 0x2399: 0x000d, 0x239a: 0x000d, 0x239b: 0x000d, 0x239c: 0x000d, 0x239d: 0x000d, + 0x239e: 0x000d, 0x239f: 0x000d, 0x23a0: 0x000d, 0x23a1: 0x000d, 0x23a2: 0x000d, 0x23a3: 0x000d, + 0x23a4: 0x000d, 0x23a5: 0x000d, 0x23a6: 0x000d, 0x23a7: 0x000d, 0x23a8: 0x000d, 0x23a9: 0x000d, + 0x23aa: 0x000d, 0x23ab: 0x000d, 0x23ac: 0x000d, 0x23ad: 0x000d, 0x23ae: 0x000d, 0x23af: 0x000d, + 0x23b0: 0x000d, 0x23b1: 0x000d, 0x23b2: 0x000d, 0x23b3: 0x000d, 0x23b4: 0x000d, 0x23b5: 0x000d, + 0x23b6: 0x000d, 0x23b7: 0x000d, 0x23b8: 0x000d, 0x23b9: 0x000d, 0x23ba: 0x000d, 0x23bb: 0x000d, + 0x23bc: 0x000d, 0x23bd: 0x000d, 0x23be: 0x000d, 0x23bf: 0x000d, + // Block 0x8f, offset 0x23c0 + 0x23c0: 0x000d, 0x23c1: 0x000d, 0x23c2: 0x000d, 0x23c3: 0x000d, 0x23c4: 0x000d, 0x23c5: 0x000d, + 0x23c6: 0x000d, 0x23c7: 0x000d, 0x23c8: 0x000d, 0x23c9: 0x000d, 0x23ca: 0x000d, 0x23cb: 0x000d, + 0x23cc: 0x000d, 0x23cd: 0x000d, 0x23ce: 0x000d, 0x23cf: 0x000d, 0x23d0: 0x000d, 0x23d1: 0x000d, + 0x23d2: 0x000d, 0x23d3: 0x000d, 0x23d4: 0x000d, 0x23d5: 0x000d, 0x23d6: 0x000d, 0x23d7: 0x000d, + 0x23d8: 0x000d, 0x23d9: 0x000d, 0x23da: 0x000d, 0x23db: 0x000d, 0x23dc: 0x000d, 0x23dd: 0x000d, + 0x23de: 0x000d, 0x23df: 0x000d, 0x23e0: 0x000d, 0x23e1: 0x000d, 0x23e2: 0x000d, 0x23e3: 0x000d, + 0x23e4: 0x000d, 0x23e5: 0x000d, 0x23e6: 0x000d, 0x23e7: 0x000d, 0x23e8: 0x000d, 0x23e9: 0x000d, + 0x23ea: 0x000d, 0x23eb: 0x000d, 0x23ec: 0x000d, 0x23ed: 0x000d, 0x23ee: 0x000d, 0x23ef: 0x000d, + 0x23f0: 0x000d, 0x23f1: 0x000d, 0x23f2: 0x000d, 0x23f3: 0x000d, 0x23f4: 0x000d, 0x23f5: 0x000d, + 0x23f6: 0x000d, 0x23f7: 0x000d, 0x23f8: 0x000d, 0x23f9: 0x000d, 0x23fa: 0x000d, 0x23fb: 0x000d, + 0x23fc: 0x000d, 0x23fd: 0x000d, 0x23fe: 0x000a, 0x23ff: 0x000a, + // Block 0x90, offset 0x2400 + 0x2400: 0x000d, 0x2401: 0x000d, 0x2402: 0x000d, 0x2403: 0x000d, 0x2404: 0x000d, 0x2405: 0x000d, + 0x2406: 0x000d, 0x2407: 0x000d, 0x2408: 0x000d, 0x2409: 0x000d, 0x240a: 0x000d, 0x240b: 0x000d, + 0x240c: 0x000d, 0x240d: 0x000d, 0x240e: 0x000d, 0x240f: 0x000d, 0x2410: 0x000b, 0x2411: 0x000b, + 0x2412: 0x000b, 0x2413: 0x000b, 0x2414: 0x000b, 0x2415: 0x000b, 0x2416: 0x000b, 0x2417: 0x000b, + 0x2418: 0x000b, 0x2419: 0x000b, 0x241a: 0x000b, 0x241b: 0x000b, 0x241c: 0x000b, 0x241d: 0x000b, + 0x241e: 0x000b, 0x241f: 0x000b, 0x2420: 0x000b, 0x2421: 0x000b, 0x2422: 0x000b, 0x2423: 0x000b, + 0x2424: 0x000b, 0x2425: 0x000b, 0x2426: 0x000b, 0x2427: 0x000b, 0x2428: 0x000b, 0x2429: 0x000b, + 0x242a: 0x000b, 0x242b: 0x000b, 0x242c: 0x000b, 0x242d: 0x000b, 0x242e: 0x000b, 0x242f: 0x000b, + 0x2430: 0x000d, 0x2431: 0x000d, 0x2432: 0x000d, 0x2433: 0x000d, 0x2434: 0x000d, 0x2435: 0x000d, + 0x2436: 0x000d, 0x2437: 0x000d, 0x2438: 0x000d, 0x2439: 0x000d, 0x243a: 0x000d, 0x243b: 0x000d, + 0x243c: 0x000d, 0x243d: 0x000a, 0x243e: 0x000d, 0x243f: 0x000d, + // Block 0x91, offset 0x2440 + 0x2440: 0x000c, 0x2441: 0x000c, 0x2442: 0x000c, 0x2443: 0x000c, 0x2444: 0x000c, 0x2445: 0x000c, + 0x2446: 0x000c, 0x2447: 0x000c, 0x2448: 0x000c, 0x2449: 0x000c, 0x244a: 0x000c, 0x244b: 0x000c, + 0x244c: 0x000c, 0x244d: 0x000c, 0x244e: 0x000c, 0x244f: 0x000c, 0x2450: 0x000a, 0x2451: 0x000a, + 0x2452: 0x000a, 0x2453: 0x000a, 0x2454: 0x000a, 0x2455: 0x000a, 0x2456: 0x000a, 0x2457: 0x000a, + 0x2458: 0x000a, 0x2459: 0x000a, + 0x2460: 0x000c, 0x2461: 0x000c, 0x2462: 0x000c, 0x2463: 0x000c, + 0x2464: 0x000c, 0x2465: 0x000c, 0x2466: 0x000c, 0x2467: 0x000c, 0x2468: 0x000c, 0x2469: 0x000c, + 0x246a: 0x000c, 0x246b: 0x000c, 0x246c: 0x000c, 0x246d: 0x000c, 0x246e: 0x000c, 0x246f: 0x000c, + 0x2470: 0x000a, 0x2471: 0x000a, 0x2472: 0x000a, 0x2473: 0x000a, 0x2474: 0x000a, 0x2475: 0x000a, + 0x2476: 0x000a, 0x2477: 0x000a, 0x2478: 0x000a, 0x2479: 0x000a, 0x247a: 0x000a, 0x247b: 0x000a, + 0x247c: 0x000a, 0x247d: 0x000a, 0x247e: 0x000a, 0x247f: 0x000a, + // Block 0x92, offset 0x2480 + 0x2480: 0x000a, 0x2481: 0x000a, 0x2482: 0x000a, 0x2483: 0x000a, 0x2484: 0x000a, 0x2485: 0x000a, + 0x2486: 0x000a, 0x2487: 0x000a, 0x2488: 0x000a, 0x2489: 0x000a, 0x248a: 0x000a, 0x248b: 0x000a, + 0x248c: 0x000a, 0x248d: 0x000a, 0x248e: 0x000a, 0x248f: 0x000a, 0x2490: 0x0006, 0x2491: 0x000a, + 0x2492: 0x0006, 0x2494: 0x000a, 0x2495: 0x0006, 0x2496: 0x000a, 0x2497: 0x000a, + 0x2498: 0x000a, 0x2499: 0x009a, 0x249a: 0x008a, 0x249b: 0x007a, 0x249c: 0x006a, 0x249d: 0x009a, + 0x249e: 0x008a, 0x249f: 0x0004, 0x24a0: 0x000a, 0x24a1: 0x000a, 0x24a2: 0x0003, 0x24a3: 0x0003, + 0x24a4: 0x000a, 0x24a5: 0x000a, 0x24a6: 0x000a, 0x24a8: 0x000a, 0x24a9: 0x0004, + 0x24aa: 0x0004, 0x24ab: 0x000a, + 0x24b0: 0x000d, 0x24b1: 0x000d, 0x24b2: 0x000d, 0x24b3: 0x000d, 0x24b4: 0x000d, 0x24b5: 0x000d, + 0x24b6: 0x000d, 0x24b7: 0x000d, 0x24b8: 0x000d, 0x24b9: 0x000d, 0x24ba: 0x000d, 0x24bb: 0x000d, + 0x24bc: 0x000d, 0x24bd: 0x000d, 0x24be: 0x000d, 0x24bf: 0x000d, + // Block 0x93, offset 0x24c0 + 0x24c0: 0x000d, 0x24c1: 0x000d, 0x24c2: 0x000d, 0x24c3: 0x000d, 0x24c4: 0x000d, 0x24c5: 0x000d, + 0x24c6: 0x000d, 0x24c7: 0x000d, 0x24c8: 0x000d, 0x24c9: 0x000d, 0x24ca: 0x000d, 0x24cb: 0x000d, + 0x24cc: 0x000d, 0x24cd: 0x000d, 0x24ce: 0x000d, 0x24cf: 0x000d, 0x24d0: 0x000d, 0x24d1: 0x000d, + 0x24d2: 0x000d, 0x24d3: 0x000d, 0x24d4: 0x000d, 0x24d5: 0x000d, 0x24d6: 0x000d, 0x24d7: 0x000d, + 0x24d8: 0x000d, 0x24d9: 0x000d, 0x24da: 0x000d, 0x24db: 0x000d, 0x24dc: 0x000d, 0x24dd: 0x000d, + 0x24de: 0x000d, 0x24df: 0x000d, 0x24e0: 0x000d, 0x24e1: 0x000d, 0x24e2: 0x000d, 0x24e3: 0x000d, + 0x24e4: 0x000d, 0x24e5: 0x000d, 0x24e6: 0x000d, 0x24e7: 0x000d, 0x24e8: 0x000d, 0x24e9: 0x000d, + 0x24ea: 0x000d, 0x24eb: 0x000d, 0x24ec: 0x000d, 0x24ed: 0x000d, 0x24ee: 0x000d, 0x24ef: 0x000d, + 0x24f0: 0x000d, 0x24f1: 0x000d, 0x24f2: 0x000d, 0x24f3: 0x000d, 0x24f4: 0x000d, 0x24f5: 0x000d, + 0x24f6: 0x000d, 0x24f7: 0x000d, 0x24f8: 0x000d, 0x24f9: 0x000d, 0x24fa: 0x000d, 0x24fb: 0x000d, + 0x24fc: 0x000d, 0x24fd: 0x000d, 0x24fe: 0x000d, 0x24ff: 0x000b, + // Block 0x94, offset 0x2500 + 0x2501: 0x000a, 0x2502: 0x000a, 0x2503: 0x0004, 0x2504: 0x0004, 0x2505: 0x0004, + 0x2506: 0x000a, 0x2507: 0x000a, 0x2508: 0x003a, 0x2509: 0x002a, 0x250a: 0x000a, 0x250b: 0x0003, + 0x250c: 0x0006, 0x250d: 0x0003, 0x250e: 0x0006, 0x250f: 0x0006, 0x2510: 0x0002, 0x2511: 0x0002, + 0x2512: 0x0002, 0x2513: 0x0002, 0x2514: 0x0002, 0x2515: 0x0002, 0x2516: 0x0002, 0x2517: 0x0002, + 0x2518: 0x0002, 0x2519: 0x0002, 0x251a: 0x0006, 0x251b: 0x000a, 0x251c: 0x000a, 0x251d: 0x000a, + 0x251e: 0x000a, 0x251f: 0x000a, 0x2520: 0x000a, + 0x253b: 0x005a, + 0x253c: 0x000a, 0x253d: 0x004a, 0x253e: 0x000a, 0x253f: 0x000a, + // Block 0x95, offset 0x2540 + 0x2540: 0x000a, + 0x255b: 0x005a, 0x255c: 0x000a, 0x255d: 0x004a, + 0x255e: 0x000a, 0x255f: 0x00fa, 0x2560: 0x00ea, 0x2561: 0x000a, 0x2562: 0x003a, 0x2563: 0x002a, + 0x2564: 0x000a, 0x2565: 0x000a, + // Block 0x96, offset 0x2580 + 0x25a0: 0x0004, 0x25a1: 0x0004, 0x25a2: 0x000a, 0x25a3: 0x000a, + 0x25a4: 0x000a, 0x25a5: 0x0004, 0x25a6: 0x0004, 0x25a8: 0x000a, 0x25a9: 0x000a, + 0x25aa: 0x000a, 0x25ab: 0x000a, 0x25ac: 0x000a, 0x25ad: 0x000a, 0x25ae: 0x000a, + 0x25b0: 0x000b, 0x25b1: 0x000b, 0x25b2: 0x000b, 0x25b3: 0x000b, 0x25b4: 0x000b, 0x25b5: 0x000b, + 0x25b6: 0x000b, 0x25b7: 0x000b, 0x25b8: 0x000b, 0x25b9: 0x000a, 0x25ba: 0x000a, 0x25bb: 0x000a, + 0x25bc: 0x000a, 0x25bd: 0x000a, 0x25be: 0x000b, 0x25bf: 0x000b, + // Block 0x97, offset 0x25c0 + 0x25c1: 0x000a, + // Block 0x98, offset 0x2600 + 0x2600: 0x000a, 0x2601: 0x000a, 0x2602: 0x000a, 0x2603: 0x000a, 0x2604: 0x000a, 0x2605: 0x000a, + 0x2606: 0x000a, 0x2607: 0x000a, 0x2608: 0x000a, 0x2609: 0x000a, 0x260a: 0x000a, 0x260b: 0x000a, + 0x260c: 0x000a, 0x2610: 0x000a, 0x2611: 0x000a, + 0x2612: 0x000a, 0x2613: 0x000a, 0x2614: 0x000a, 0x2615: 0x000a, 0x2616: 0x000a, 0x2617: 0x000a, + 0x2618: 0x000a, 0x2619: 0x000a, 0x261a: 0x000a, 0x261b: 0x000a, + 0x2620: 0x000a, + // Block 0x99, offset 0x2640 + 0x267d: 0x000c, + // Block 0x9a, offset 0x2680 + 0x26a0: 0x000c, 0x26a1: 0x0002, 0x26a2: 0x0002, 0x26a3: 0x0002, + 0x26a4: 0x0002, 0x26a5: 0x0002, 0x26a6: 0x0002, 0x26a7: 0x0002, 0x26a8: 0x0002, 0x26a9: 0x0002, + 0x26aa: 0x0002, 0x26ab: 0x0002, 0x26ac: 0x0002, 0x26ad: 0x0002, 0x26ae: 0x0002, 0x26af: 0x0002, + 0x26b0: 0x0002, 0x26b1: 0x0002, 0x26b2: 0x0002, 0x26b3: 0x0002, 0x26b4: 0x0002, 0x26b5: 0x0002, + 0x26b6: 0x0002, 0x26b7: 0x0002, 0x26b8: 0x0002, 0x26b9: 0x0002, 0x26ba: 0x0002, 0x26bb: 0x0002, + // Block 0x9b, offset 0x26c0 + 0x26f6: 0x000c, 0x26f7: 0x000c, 0x26f8: 0x000c, 0x26f9: 0x000c, 0x26fa: 0x000c, + // Block 0x9c, offset 0x2700 + 0x2700: 0x0001, 0x2701: 0x0001, 0x2702: 0x0001, 0x2703: 0x0001, 0x2704: 0x0001, 0x2705: 0x0001, + 0x2706: 0x0001, 0x2707: 0x0001, 0x2708: 0x0001, 0x2709: 0x0001, 0x270a: 0x0001, 0x270b: 0x0001, + 0x270c: 0x0001, 0x270d: 0x0001, 0x270e: 0x0001, 0x270f: 0x0001, 0x2710: 0x0001, 0x2711: 0x0001, + 0x2712: 0x0001, 0x2713: 0x0001, 0x2714: 0x0001, 0x2715: 0x0001, 0x2716: 0x0001, 0x2717: 0x0001, + 0x2718: 0x0001, 0x2719: 0x0001, 0x271a: 0x0001, 0x271b: 0x0001, 0x271c: 0x0001, 0x271d: 0x0001, + 0x271e: 0x0001, 0x271f: 0x0001, 0x2720: 0x0001, 0x2721: 0x0001, 0x2722: 0x0001, 0x2723: 0x0001, + 0x2724: 0x0001, 0x2725: 0x0001, 0x2726: 0x0001, 0x2727: 0x0001, 0x2728: 0x0001, 0x2729: 0x0001, + 0x272a: 0x0001, 0x272b: 0x0001, 0x272c: 0x0001, 0x272d: 0x0001, 0x272e: 0x0001, 0x272f: 0x0001, + 0x2730: 0x0001, 0x2731: 0x0001, 0x2732: 0x0001, 0x2733: 0x0001, 0x2734: 0x0001, 0x2735: 0x0001, + 0x2736: 0x0001, 0x2737: 0x0001, 0x2738: 0x0001, 0x2739: 0x0001, 0x273a: 0x0001, 0x273b: 0x0001, + 0x273c: 0x0001, 0x273d: 0x0001, 0x273e: 0x0001, 0x273f: 0x0001, + // Block 0x9d, offset 0x2740 + 0x2740: 0x0001, 0x2741: 0x0001, 0x2742: 0x0001, 0x2743: 0x0001, 0x2744: 0x0001, 0x2745: 0x0001, + 0x2746: 0x0001, 0x2747: 0x0001, 0x2748: 0x0001, 0x2749: 0x0001, 0x274a: 0x0001, 0x274b: 0x0001, + 0x274c: 0x0001, 0x274d: 0x0001, 0x274e: 0x0001, 0x274f: 0x0001, 0x2750: 0x0001, 0x2751: 0x0001, + 0x2752: 0x0001, 0x2753: 0x0001, 0x2754: 0x0001, 0x2755: 0x0001, 0x2756: 0x0001, 0x2757: 0x0001, + 0x2758: 0x0001, 0x2759: 0x0001, 0x275a: 0x0001, 0x275b: 0x0001, 0x275c: 0x0001, 0x275d: 0x0001, + 0x275e: 0x0001, 0x275f: 0x000a, 0x2760: 0x0001, 0x2761: 0x0001, 0x2762: 0x0001, 0x2763: 0x0001, + 0x2764: 0x0001, 0x2765: 0x0001, 0x2766: 0x0001, 0x2767: 0x0001, 0x2768: 0x0001, 0x2769: 0x0001, + 0x276a: 0x0001, 0x276b: 0x0001, 0x276c: 0x0001, 0x276d: 0x0001, 0x276e: 0x0001, 0x276f: 0x0001, + 0x2770: 0x0001, 0x2771: 0x0001, 0x2772: 0x0001, 0x2773: 0x0001, 0x2774: 0x0001, 0x2775: 0x0001, + 0x2776: 0x0001, 0x2777: 0x0001, 0x2778: 0x0001, 0x2779: 0x0001, 0x277a: 0x0001, 0x277b: 0x0001, + 0x277c: 0x0001, 0x277d: 0x0001, 0x277e: 0x0001, 0x277f: 0x0001, + // Block 0x9e, offset 0x2780 + 0x2780: 0x0001, 0x2781: 0x000c, 0x2782: 0x000c, 0x2783: 0x000c, 0x2784: 0x0001, 0x2785: 0x000c, + 0x2786: 0x000c, 0x2787: 0x0001, 0x2788: 0x0001, 0x2789: 0x0001, 0x278a: 0x0001, 0x278b: 0x0001, + 0x278c: 0x000c, 0x278d: 0x000c, 0x278e: 0x000c, 0x278f: 0x000c, 0x2790: 0x0001, 0x2791: 0x0001, + 0x2792: 0x0001, 0x2793: 0x0001, 0x2794: 0x0001, 0x2795: 0x0001, 0x2796: 0x0001, 0x2797: 0x0001, + 0x2798: 0x0001, 0x2799: 0x0001, 0x279a: 0x0001, 0x279b: 0x0001, 0x279c: 0x0001, 0x279d: 0x0001, + 0x279e: 0x0001, 0x279f: 0x0001, 0x27a0: 0x0001, 0x27a1: 0x0001, 0x27a2: 0x0001, 0x27a3: 0x0001, + 0x27a4: 0x0001, 0x27a5: 0x0001, 0x27a6: 0x0001, 0x27a7: 0x0001, 0x27a8: 0x0001, 0x27a9: 0x0001, + 0x27aa: 0x0001, 0x27ab: 0x0001, 0x27ac: 0x0001, 0x27ad: 0x0001, 0x27ae: 0x0001, 0x27af: 0x0001, + 0x27b0: 0x0001, 0x27b1: 0x0001, 0x27b2: 0x0001, 0x27b3: 0x0001, 0x27b4: 0x0001, 0x27b5: 0x0001, + 0x27b6: 0x0001, 0x27b7: 0x0001, 0x27b8: 0x000c, 0x27b9: 0x000c, 0x27ba: 0x000c, 0x27bb: 0x0001, + 0x27bc: 0x0001, 0x27bd: 0x0001, 0x27be: 0x0001, 0x27bf: 0x000c, + // Block 0x9f, offset 0x27c0 + 0x27c0: 0x0001, 0x27c1: 0x0001, 0x27c2: 0x0001, 0x27c3: 0x0001, 0x27c4: 0x0001, 0x27c5: 0x0001, + 0x27c6: 0x0001, 0x27c7: 0x0001, 0x27c8: 0x0001, 0x27c9: 0x0001, 0x27ca: 0x0001, 0x27cb: 0x0001, + 0x27cc: 0x0001, 0x27cd: 0x0001, 0x27ce: 0x0001, 0x27cf: 0x0001, 0x27d0: 0x0001, 0x27d1: 0x0001, + 0x27d2: 0x0001, 0x27d3: 0x0001, 0x27d4: 0x0001, 0x27d5: 0x0001, 0x27d6: 0x0001, 0x27d7: 0x0001, + 0x27d8: 0x0001, 0x27d9: 0x0001, 0x27da: 0x0001, 0x27db: 0x0001, 0x27dc: 0x0001, 0x27dd: 0x0001, + 0x27de: 0x0001, 0x27df: 0x0001, 0x27e0: 0x0001, 0x27e1: 0x0001, 0x27e2: 0x0001, 0x27e3: 0x0001, + 0x27e4: 0x0001, 0x27e5: 0x000c, 0x27e6: 0x000c, 0x27e7: 0x0001, 0x27e8: 0x0001, 0x27e9: 0x0001, + 0x27ea: 0x0001, 0x27eb: 0x0001, 0x27ec: 0x0001, 0x27ed: 0x0001, 0x27ee: 0x0001, 0x27ef: 0x0001, + 0x27f0: 0x0001, 0x27f1: 0x0001, 0x27f2: 0x0001, 0x27f3: 0x0001, 0x27f4: 0x0001, 0x27f5: 0x0001, + 0x27f6: 0x0001, 0x27f7: 0x0001, 0x27f8: 0x0001, 0x27f9: 0x0001, 0x27fa: 0x0001, 0x27fb: 0x0001, + 0x27fc: 0x0001, 0x27fd: 0x0001, 0x27fe: 0x0001, 0x27ff: 0x0001, + // Block 0xa0, offset 0x2800 + 0x2800: 0x0001, 0x2801: 0x0001, 0x2802: 0x0001, 0x2803: 0x0001, 0x2804: 0x0001, 0x2805: 0x0001, + 0x2806: 0x0001, 0x2807: 0x0001, 0x2808: 0x0001, 0x2809: 0x0001, 0x280a: 0x0001, 0x280b: 0x0001, + 0x280c: 0x0001, 0x280d: 0x0001, 0x280e: 0x0001, 0x280f: 0x0001, 0x2810: 0x0001, 0x2811: 0x0001, + 0x2812: 0x0001, 0x2813: 0x0001, 0x2814: 0x0001, 0x2815: 0x0001, 0x2816: 0x0001, 0x2817: 0x0001, + 0x2818: 0x0001, 0x2819: 0x0001, 0x281a: 0x0001, 0x281b: 0x0001, 0x281c: 0x0001, 0x281d: 0x0001, + 0x281e: 0x0001, 0x281f: 0x0001, 0x2820: 0x0001, 0x2821: 0x0001, 0x2822: 0x0001, 0x2823: 0x0001, + 0x2824: 0x0001, 0x2825: 0x0001, 0x2826: 0x0001, 0x2827: 0x0001, 0x2828: 0x0001, 0x2829: 0x0001, + 0x282a: 0x0001, 0x282b: 0x0001, 0x282c: 0x0001, 0x282d: 0x0001, 0x282e: 0x0001, 0x282f: 0x0001, + 0x2830: 0x0001, 0x2831: 0x0001, 0x2832: 0x0001, 0x2833: 0x0001, 0x2834: 0x0001, 0x2835: 0x0001, + 0x2836: 0x0001, 0x2837: 0x0001, 0x2838: 0x0001, 0x2839: 0x000a, 0x283a: 0x000a, 0x283b: 0x000a, + 0x283c: 0x000a, 0x283d: 0x000a, 0x283e: 0x000a, 0x283f: 0x000a, + // Block 0xa1, offset 0x2840 + 0x2840: 0x000d, 0x2841: 0x000d, 0x2842: 0x000d, 0x2843: 0x000d, 0x2844: 0x000d, 0x2845: 0x000d, + 0x2846: 0x000d, 0x2847: 0x000d, 0x2848: 0x000d, 0x2849: 0x000d, 0x284a: 0x000d, 0x284b: 0x000d, + 0x284c: 0x000d, 0x284d: 0x000d, 0x284e: 0x000d, 0x284f: 0x000d, 0x2850: 0x000d, 0x2851: 0x000d, + 0x2852: 0x000d, 0x2853: 0x000d, 0x2854: 0x000d, 0x2855: 0x000d, 0x2856: 0x000d, 0x2857: 0x000d, + 0x2858: 0x000d, 0x2859: 0x000d, 0x285a: 0x000d, 0x285b: 0x000d, 0x285c: 0x000d, 0x285d: 0x000d, + 0x285e: 0x000d, 0x285f: 0x000d, 0x2860: 0x000d, 0x2861: 0x000d, 0x2862: 0x000d, 0x2863: 0x000d, + 0x2864: 0x000c, 0x2865: 0x000c, 0x2866: 0x000c, 0x2867: 0x000c, 0x2868: 0x000d, 0x2869: 0x000d, + 0x286a: 0x000d, 0x286b: 0x000d, 0x286c: 0x000d, 0x286d: 0x000d, 0x286e: 0x000d, 0x286f: 0x000d, + 0x2870: 0x0005, 0x2871: 0x0005, 0x2872: 0x0005, 0x2873: 0x0005, 0x2874: 0x0005, 0x2875: 0x0005, + 0x2876: 0x0005, 0x2877: 0x0005, 0x2878: 0x0005, 0x2879: 0x0005, 0x287a: 0x000d, 0x287b: 0x000d, + 0x287c: 0x000d, 0x287d: 0x000d, 0x287e: 0x000d, 0x287f: 0x000d, + // Block 0xa2, offset 0x2880 + 0x2880: 0x0001, 0x2881: 0x0001, 0x2882: 0x0001, 0x2883: 0x0001, 0x2884: 0x0001, 0x2885: 0x0001, + 0x2886: 0x0001, 0x2887: 0x0001, 0x2888: 0x0001, 0x2889: 0x0001, 0x288a: 0x0001, 0x288b: 0x0001, + 0x288c: 0x0001, 0x288d: 0x0001, 0x288e: 0x0001, 0x288f: 0x0001, 0x2890: 0x0001, 0x2891: 0x0001, + 0x2892: 0x0001, 0x2893: 0x0001, 0x2894: 0x0001, 0x2895: 0x0001, 0x2896: 0x0001, 0x2897: 0x0001, + 0x2898: 0x0001, 0x2899: 0x0001, 0x289a: 0x0001, 0x289b: 0x0001, 0x289c: 0x0001, 0x289d: 0x0001, + 0x289e: 0x0001, 0x289f: 0x0001, 0x28a0: 0x0005, 0x28a1: 0x0005, 0x28a2: 0x0005, 0x28a3: 0x0005, + 0x28a4: 0x0005, 0x28a5: 0x0005, 0x28a6: 0x0005, 0x28a7: 0x0005, 0x28a8: 0x0005, 0x28a9: 0x0005, + 0x28aa: 0x0005, 0x28ab: 0x0005, 0x28ac: 0x0005, 0x28ad: 0x0005, 0x28ae: 0x0005, 0x28af: 0x0005, + 0x28b0: 0x0005, 0x28b1: 0x0005, 0x28b2: 0x0005, 0x28b3: 0x0005, 0x28b4: 0x0005, 0x28b5: 0x0005, + 0x28b6: 0x0005, 0x28b7: 0x0005, 0x28b8: 0x0005, 0x28b9: 0x0005, 0x28ba: 0x0005, 0x28bb: 0x0005, + 0x28bc: 0x0005, 0x28bd: 0x0005, 0x28be: 0x0005, 0x28bf: 0x0001, + // Block 0xa3, offset 0x28c0 + 0x28c0: 0x0001, 0x28c1: 0x0001, 0x28c2: 0x0001, 0x28c3: 0x0001, 0x28c4: 0x0001, 0x28c5: 0x0001, + 0x28c6: 0x0001, 0x28c7: 0x0001, 0x28c8: 0x0001, 0x28c9: 0x0001, 0x28ca: 0x0001, 0x28cb: 0x0001, + 0x28cc: 0x0001, 0x28cd: 0x0001, 0x28ce: 0x0001, 0x28cf: 0x0001, 0x28d0: 0x0001, 0x28d1: 0x0001, + 0x28d2: 0x0001, 0x28d3: 0x0001, 0x28d4: 0x0001, 0x28d5: 0x0001, 0x28d6: 0x0001, 0x28d7: 0x0001, + 0x28d8: 0x0001, 0x28d9: 0x0001, 0x28da: 0x0001, 0x28db: 0x0001, 0x28dc: 0x0001, 0x28dd: 0x0001, + 0x28de: 0x0001, 0x28df: 0x0001, 0x28e0: 0x0001, 0x28e1: 0x0001, 0x28e2: 0x0001, 0x28e3: 0x0001, + 0x28e4: 0x0001, 0x28e5: 0x0001, 0x28e6: 0x0001, 0x28e7: 0x0001, 0x28e8: 0x0001, 0x28e9: 0x0001, + 0x28ea: 0x0001, 0x28eb: 0x0001, 0x28ec: 0x0001, 0x28ed: 0x0001, 0x28ee: 0x0001, 0x28ef: 0x0001, + 0x28f0: 0x000d, 0x28f1: 0x000d, 0x28f2: 0x000d, 0x28f3: 0x000d, 0x28f4: 0x000d, 0x28f5: 0x000d, + 0x28f6: 0x000d, 0x28f7: 0x000d, 0x28f8: 0x000d, 0x28f9: 0x000d, 0x28fa: 0x000d, 0x28fb: 0x000d, + 0x28fc: 0x000d, 0x28fd: 0x000d, 0x28fe: 0x000d, 0x28ff: 0x000d, + // Block 0xa4, offset 0x2900 + 0x2900: 0x000d, 0x2901: 0x000d, 0x2902: 0x000d, 0x2903: 0x000d, 0x2904: 0x000d, 0x2905: 0x000d, + 0x2906: 0x000c, 0x2907: 0x000c, 0x2908: 0x000c, 0x2909: 0x000c, 0x290a: 0x000c, 0x290b: 0x000c, + 0x290c: 0x000c, 0x290d: 0x000c, 0x290e: 0x000c, 0x290f: 0x000c, 0x2910: 0x000c, 0x2911: 0x000d, + 0x2912: 0x000d, 0x2913: 0x000d, 0x2914: 0x000d, 0x2915: 0x000d, 0x2916: 0x000d, 0x2917: 0x000d, + 0x2918: 0x000d, 0x2919: 0x000d, 0x291a: 0x000d, 0x291b: 0x000d, 0x291c: 0x000d, 0x291d: 0x000d, + 0x291e: 0x000d, 0x291f: 0x000d, 0x2920: 0x000d, 0x2921: 0x000d, 0x2922: 0x000d, 0x2923: 0x000d, + 0x2924: 0x000d, 0x2925: 0x000d, 0x2926: 0x000d, 0x2927: 0x000d, 0x2928: 0x000d, 0x2929: 0x000d, + 0x292a: 0x000d, 0x292b: 0x000d, 0x292c: 0x000d, 0x292d: 0x000d, 0x292e: 0x000d, 0x292f: 0x000d, + 0x2930: 0x0001, 0x2931: 0x0001, 0x2932: 0x0001, 0x2933: 0x0001, 0x2934: 0x0001, 0x2935: 0x0001, + 0x2936: 0x0001, 0x2937: 0x0001, 0x2938: 0x0001, 0x2939: 0x0001, 0x293a: 0x0001, 0x293b: 0x0001, + 0x293c: 0x0001, 0x293d: 0x0001, 0x293e: 0x0001, 0x293f: 0x0001, + // Block 0xa5, offset 0x2940 + 0x2941: 0x000c, + 0x2978: 0x000c, 0x2979: 0x000c, 0x297a: 0x000c, 0x297b: 0x000c, + 0x297c: 0x000c, 0x297d: 0x000c, 0x297e: 0x000c, 0x297f: 0x000c, + // Block 0xa6, offset 0x2980 + 0x2980: 0x000c, 0x2981: 0x000c, 0x2982: 0x000c, 0x2983: 0x000c, 0x2984: 0x000c, 0x2985: 0x000c, + 0x2986: 0x000c, + 0x2992: 0x000a, 0x2993: 0x000a, 0x2994: 0x000a, 0x2995: 0x000a, 0x2996: 0x000a, 0x2997: 0x000a, + 0x2998: 0x000a, 0x2999: 0x000a, 0x299a: 0x000a, 0x299b: 0x000a, 0x299c: 0x000a, 0x299d: 0x000a, + 0x299e: 0x000a, 0x299f: 0x000a, 0x29a0: 0x000a, 0x29a1: 0x000a, 0x29a2: 0x000a, 0x29a3: 0x000a, + 0x29a4: 0x000a, 0x29a5: 0x000a, + 0x29bf: 0x000c, + // Block 0xa7, offset 0x29c0 + 0x29c0: 0x000c, 0x29c1: 0x000c, + 0x29f3: 0x000c, 0x29f4: 0x000c, 0x29f5: 0x000c, + 0x29f6: 0x000c, 0x29f9: 0x000c, 0x29fa: 0x000c, + // Block 0xa8, offset 0x2a00 + 0x2a00: 0x000c, 0x2a01: 0x000c, 0x2a02: 0x000c, + 0x2a27: 0x000c, 0x2a28: 0x000c, 0x2a29: 0x000c, + 0x2a2a: 0x000c, 0x2a2b: 0x000c, 0x2a2d: 0x000c, 0x2a2e: 0x000c, 0x2a2f: 0x000c, + 0x2a30: 0x000c, 0x2a31: 0x000c, 0x2a32: 0x000c, 0x2a33: 0x000c, 0x2a34: 0x000c, + // Block 0xa9, offset 0x2a40 + 0x2a73: 0x000c, + // Block 0xaa, offset 0x2a80 + 0x2a80: 0x000c, 0x2a81: 0x000c, + 0x2ab6: 0x000c, 0x2ab7: 0x000c, 0x2ab8: 0x000c, 0x2ab9: 0x000c, 0x2aba: 0x000c, 0x2abb: 0x000c, + 0x2abc: 0x000c, 0x2abd: 0x000c, 0x2abe: 0x000c, + // Block 0xab, offset 0x2ac0 + 0x2ac9: 0x000c, 0x2aca: 0x000c, 0x2acb: 0x000c, + 0x2acc: 0x000c, + // Block 0xac, offset 0x2b00 + 0x2b2f: 0x000c, + 0x2b30: 0x000c, 0x2b31: 0x000c, 0x2b34: 0x000c, + 0x2b36: 0x000c, 0x2b37: 0x000c, + 0x2b3e: 0x000c, + // Block 0xad, offset 0x2b40 + 0x2b5f: 0x000c, 0x2b63: 0x000c, + 0x2b64: 0x000c, 0x2b65: 0x000c, 0x2b66: 0x000c, 0x2b67: 0x000c, 0x2b68: 0x000c, 0x2b69: 0x000c, + 0x2b6a: 0x000c, + // Block 0xae, offset 0x2b80 + 0x2b80: 0x000c, + 0x2ba6: 0x000c, 0x2ba7: 0x000c, 0x2ba8: 0x000c, 0x2ba9: 0x000c, + 0x2baa: 0x000c, 0x2bab: 0x000c, 0x2bac: 0x000c, + 0x2bb0: 0x000c, 0x2bb1: 0x000c, 0x2bb2: 0x000c, 0x2bb3: 0x000c, 0x2bb4: 0x000c, + // Block 0xaf, offset 0x2bc0 + 0x2bf8: 0x000c, 0x2bf9: 0x000c, 0x2bfa: 0x000c, 0x2bfb: 0x000c, + 0x2bfc: 0x000c, 0x2bfd: 0x000c, 0x2bfe: 0x000c, 0x2bff: 0x000c, + // Block 0xb0, offset 0x2c00 + 0x2c02: 0x000c, 0x2c03: 0x000c, 0x2c04: 0x000c, + 0x2c06: 0x000c, + 0x2c1e: 0x000c, + // Block 0xb1, offset 0x2c40 + 0x2c73: 0x000c, 0x2c74: 0x000c, 0x2c75: 0x000c, + 0x2c76: 0x000c, 0x2c77: 0x000c, 0x2c78: 0x000c, 0x2c7a: 0x000c, + 0x2c7f: 0x000c, + // Block 0xb2, offset 0x2c80 + 0x2c80: 0x000c, 0x2c82: 0x000c, 0x2c83: 0x000c, + // Block 0xb3, offset 0x2cc0 + 0x2cf2: 0x000c, 0x2cf3: 0x000c, 0x2cf4: 0x000c, 0x2cf5: 0x000c, + 0x2cfc: 0x000c, 0x2cfd: 0x000c, 0x2cff: 0x000c, + // Block 0xb4, offset 0x2d00 + 0x2d00: 0x000c, + 0x2d1c: 0x000c, 0x2d1d: 0x000c, + // Block 0xb5, offset 0x2d40 + 0x2d73: 0x000c, 0x2d74: 0x000c, 0x2d75: 0x000c, + 0x2d76: 0x000c, 0x2d77: 0x000c, 0x2d78: 0x000c, 0x2d79: 0x000c, 0x2d7a: 0x000c, + 0x2d7d: 0x000c, 0x2d7f: 0x000c, + // Block 0xb6, offset 0x2d80 + 0x2d80: 0x000c, + 0x2da0: 0x000a, 0x2da1: 0x000a, 0x2da2: 0x000a, 0x2da3: 0x000a, + 0x2da4: 0x000a, 0x2da5: 0x000a, 0x2da6: 0x000a, 0x2da7: 0x000a, 0x2da8: 0x000a, 0x2da9: 0x000a, + 0x2daa: 0x000a, 0x2dab: 0x000a, 0x2dac: 0x000a, + // Block 0xb7, offset 0x2dc0 + 0x2deb: 0x000c, 0x2ded: 0x000c, + 0x2df0: 0x000c, 0x2df1: 0x000c, 0x2df2: 0x000c, 0x2df3: 0x000c, 0x2df4: 0x000c, 0x2df5: 0x000c, + 0x2df7: 0x000c, + // Block 0xb8, offset 0x2e00 + 0x2e1d: 0x000c, + 0x2e1e: 0x000c, 0x2e1f: 0x000c, 0x2e22: 0x000c, 0x2e23: 0x000c, + 0x2e24: 0x000c, 0x2e25: 0x000c, 0x2e27: 0x000c, 0x2e28: 0x000c, 0x2e29: 0x000c, + 0x2e2a: 0x000c, 0x2e2b: 0x000c, + // Block 0xb9, offset 0x2e40 + 0x2e6f: 0x000c, + 0x2e70: 0x000c, 0x2e71: 0x000c, 0x2e72: 0x000c, 0x2e73: 0x000c, 0x2e74: 0x000c, 0x2e75: 0x000c, + 0x2e76: 0x000c, 0x2e77: 0x000c, 0x2e79: 0x000c, 0x2e7a: 0x000c, + // Block 0xba, offset 0x2e80 + 0x2e81: 0x000c, 0x2e82: 0x000c, 0x2e83: 0x000c, 0x2e84: 0x000c, 0x2e85: 0x000c, + 0x2e86: 0x000c, 0x2e89: 0x000c, 0x2e8a: 0x000c, + 0x2eb3: 0x000c, 0x2eb4: 0x000c, 0x2eb5: 0x000c, + 0x2eb6: 0x000c, 0x2eb7: 0x000c, 0x2eb8: 0x000c, 0x2ebb: 0x000c, + 0x2ebc: 0x000c, 0x2ebd: 0x000c, 0x2ebe: 0x000c, + // Block 0xbb, offset 0x2ec0 + 0x2ec7: 0x000c, + 0x2ed1: 0x000c, + 0x2ed2: 0x000c, 0x2ed3: 0x000c, 0x2ed4: 0x000c, 0x2ed5: 0x000c, 0x2ed6: 0x000c, + 0x2ed9: 0x000c, 0x2eda: 0x000c, 0x2edb: 0x000c, + // Block 0xbc, offset 0x2f00 + 0x2f0a: 0x000c, 0x2f0b: 0x000c, + 0x2f0c: 0x000c, 0x2f0d: 0x000c, 0x2f0e: 0x000c, 0x2f0f: 0x000c, 0x2f10: 0x000c, 0x2f11: 0x000c, + 0x2f12: 0x000c, 0x2f13: 0x000c, 0x2f14: 0x000c, 0x2f15: 0x000c, 0x2f16: 0x000c, + 0x2f18: 0x000c, 0x2f19: 0x000c, + // Block 0xbd, offset 0x2f40 + 0x2f70: 0x000c, 0x2f71: 0x000c, 0x2f72: 0x000c, 0x2f73: 0x000c, 0x2f74: 0x000c, 0x2f75: 0x000c, + 0x2f76: 0x000c, 0x2f78: 0x000c, 0x2f79: 0x000c, 0x2f7a: 0x000c, 0x2f7b: 0x000c, + 0x2f7c: 0x000c, 0x2f7d: 0x000c, + // Block 0xbe, offset 0x2f80 + 0x2f92: 0x000c, 0x2f93: 0x000c, 0x2f94: 0x000c, 0x2f95: 0x000c, 0x2f96: 0x000c, 0x2f97: 0x000c, + 0x2f98: 0x000c, 0x2f99: 0x000c, 0x2f9a: 0x000c, 0x2f9b: 0x000c, 0x2f9c: 0x000c, 0x2f9d: 0x000c, + 0x2f9e: 0x000c, 0x2f9f: 0x000c, 0x2fa0: 0x000c, 0x2fa1: 0x000c, 0x2fa2: 0x000c, 0x2fa3: 0x000c, + 0x2fa4: 0x000c, 0x2fa5: 0x000c, 0x2fa6: 0x000c, 0x2fa7: 0x000c, + 0x2faa: 0x000c, 0x2fab: 0x000c, 0x2fac: 0x000c, 0x2fad: 0x000c, 0x2fae: 0x000c, 0x2faf: 0x000c, + 0x2fb0: 0x000c, 0x2fb2: 0x000c, 0x2fb3: 0x000c, 0x2fb5: 0x000c, + 0x2fb6: 0x000c, + // Block 0xbf, offset 0x2fc0 + 0x2ff1: 0x000c, 0x2ff2: 0x000c, 0x2ff3: 0x000c, 0x2ff4: 0x000c, 0x2ff5: 0x000c, + 0x2ff6: 0x000c, 0x2ffa: 0x000c, + 0x2ffc: 0x000c, 0x2ffd: 0x000c, 0x2fff: 0x000c, + // Block 0xc0, offset 0x3000 + 0x3000: 0x000c, 0x3001: 0x000c, 0x3002: 0x000c, 0x3003: 0x000c, 0x3004: 0x000c, 0x3005: 0x000c, + 0x3007: 0x000c, + // Block 0xc1, offset 0x3040 + 0x3050: 0x000c, 0x3051: 0x000c, + 0x3055: 0x000c, 0x3057: 0x000c, + // Block 0xc2, offset 0x3080 + 0x30b3: 0x000c, 0x30b4: 0x000c, + // Block 0xc3, offset 0x30c0 + 0x30f0: 0x000c, 0x30f1: 0x000c, 0x30f2: 0x000c, 0x30f3: 0x000c, 0x30f4: 0x000c, + // Block 0xc4, offset 0x3100 + 0x3130: 0x000c, 0x3131: 0x000c, 0x3132: 0x000c, 0x3133: 0x000c, 0x3134: 0x000c, 0x3135: 0x000c, + 0x3136: 0x000c, + // Block 0xc5, offset 0x3140 + 0x314f: 0x000c, 0x3150: 0x000c, 0x3151: 0x000c, + 0x3152: 0x000c, + // Block 0xc6, offset 0x3180 + 0x319d: 0x000c, + 0x319e: 0x000c, 0x31a0: 0x000b, 0x31a1: 0x000b, 0x31a2: 0x000b, 0x31a3: 0x000b, + // Block 0xc7, offset 0x31c0 + 0x31e7: 0x000c, 0x31e8: 0x000c, 0x31e9: 0x000c, + 0x31f3: 0x000b, 0x31f4: 0x000b, 0x31f5: 0x000b, + 0x31f6: 0x000b, 0x31f7: 0x000b, 0x31f8: 0x000b, 0x31f9: 0x000b, 0x31fa: 0x000b, 0x31fb: 0x000c, + 0x31fc: 0x000c, 0x31fd: 0x000c, 0x31fe: 0x000c, 0x31ff: 0x000c, + // Block 0xc8, offset 0x3200 + 0x3200: 0x000c, 0x3201: 0x000c, 0x3202: 0x000c, 0x3205: 0x000c, + 0x3206: 0x000c, 0x3207: 0x000c, 0x3208: 0x000c, 0x3209: 0x000c, 0x320a: 0x000c, 0x320b: 0x000c, + 0x322a: 0x000c, 0x322b: 0x000c, 0x322c: 0x000c, 0x322d: 0x000c, + // Block 0xc9, offset 0x3240 + 0x3240: 0x000a, 0x3241: 0x000a, 0x3242: 0x000c, 0x3243: 0x000c, 0x3244: 0x000c, 0x3245: 0x000a, + // Block 0xca, offset 0x3280 + 0x3280: 0x000a, 0x3281: 0x000a, 0x3282: 0x000a, 0x3283: 0x000a, 0x3284: 0x000a, 0x3285: 0x000a, + 0x3286: 0x000a, 0x3287: 0x000a, 0x3288: 0x000a, 0x3289: 0x000a, 0x328a: 0x000a, 0x328b: 0x000a, + 0x328c: 0x000a, 0x328d: 0x000a, 0x328e: 0x000a, 0x328f: 0x000a, 0x3290: 0x000a, 0x3291: 0x000a, + 0x3292: 0x000a, 0x3293: 0x000a, 0x3294: 0x000a, 0x3295: 0x000a, 0x3296: 0x000a, + // Block 0xcb, offset 0x32c0 + 0x32db: 0x000a, + // Block 0xcc, offset 0x3300 + 0x3315: 0x000a, + // Block 0xcd, offset 0x3340 + 0x334f: 0x000a, + // Block 0xce, offset 0x3380 + 0x3389: 0x000a, + // Block 0xcf, offset 0x33c0 + 0x33c3: 0x000a, + 0x33ce: 0x0002, 0x33cf: 0x0002, 0x33d0: 0x0002, 0x33d1: 0x0002, + 0x33d2: 0x0002, 0x33d3: 0x0002, 0x33d4: 0x0002, 0x33d5: 0x0002, 0x33d6: 0x0002, 0x33d7: 0x0002, + 0x33d8: 0x0002, 0x33d9: 0x0002, 0x33da: 0x0002, 0x33db: 0x0002, 0x33dc: 0x0002, 0x33dd: 0x0002, + 0x33de: 0x0002, 0x33df: 0x0002, 0x33e0: 0x0002, 0x33e1: 0x0002, 0x33e2: 0x0002, 0x33e3: 0x0002, + 0x33e4: 0x0002, 0x33e5: 0x0002, 0x33e6: 0x0002, 0x33e7: 0x0002, 0x33e8: 0x0002, 0x33e9: 0x0002, + 0x33ea: 0x0002, 0x33eb: 0x0002, 0x33ec: 0x0002, 0x33ed: 0x0002, 0x33ee: 0x0002, 0x33ef: 0x0002, + 0x33f0: 0x0002, 0x33f1: 0x0002, 0x33f2: 0x0002, 0x33f3: 0x0002, 0x33f4: 0x0002, 0x33f5: 0x0002, + 0x33f6: 0x0002, 0x33f7: 0x0002, 0x33f8: 0x0002, 0x33f9: 0x0002, 0x33fa: 0x0002, 0x33fb: 0x0002, + 0x33fc: 0x0002, 0x33fd: 0x0002, 0x33fe: 0x0002, 0x33ff: 0x0002, + // Block 0xd0, offset 0x3400 + 0x3400: 0x000c, 0x3401: 0x000c, 0x3402: 0x000c, 0x3403: 0x000c, 0x3404: 0x000c, 0x3405: 0x000c, + 0x3406: 0x000c, 0x3407: 0x000c, 0x3408: 0x000c, 0x3409: 0x000c, 0x340a: 0x000c, 0x340b: 0x000c, + 0x340c: 0x000c, 0x340d: 0x000c, 0x340e: 0x000c, 0x340f: 0x000c, 0x3410: 0x000c, 0x3411: 0x000c, + 0x3412: 0x000c, 0x3413: 0x000c, 0x3414: 0x000c, 0x3415: 0x000c, 0x3416: 0x000c, 0x3417: 0x000c, + 0x3418: 0x000c, 0x3419: 0x000c, 0x341a: 0x000c, 0x341b: 0x000c, 0x341c: 0x000c, 0x341d: 0x000c, + 0x341e: 0x000c, 0x341f: 0x000c, 0x3420: 0x000c, 0x3421: 0x000c, 0x3422: 0x000c, 0x3423: 0x000c, + 0x3424: 0x000c, 0x3425: 0x000c, 0x3426: 0x000c, 0x3427: 0x000c, 0x3428: 0x000c, 0x3429: 0x000c, + 0x342a: 0x000c, 0x342b: 0x000c, 0x342c: 0x000c, 0x342d: 0x000c, 0x342e: 0x000c, 0x342f: 0x000c, + 0x3430: 0x000c, 0x3431: 0x000c, 0x3432: 0x000c, 0x3433: 0x000c, 0x3434: 0x000c, 0x3435: 0x000c, + 0x3436: 0x000c, 0x343b: 0x000c, + 0x343c: 0x000c, 0x343d: 0x000c, 0x343e: 0x000c, 0x343f: 0x000c, + // Block 0xd1, offset 0x3440 + 0x3440: 0x000c, 0x3441: 0x000c, 0x3442: 0x000c, 0x3443: 0x000c, 0x3444: 0x000c, 0x3445: 0x000c, + 0x3446: 0x000c, 0x3447: 0x000c, 0x3448: 0x000c, 0x3449: 0x000c, 0x344a: 0x000c, 0x344b: 0x000c, + 0x344c: 0x000c, 0x344d: 0x000c, 0x344e: 0x000c, 0x344f: 0x000c, 0x3450: 0x000c, 0x3451: 0x000c, + 0x3452: 0x000c, 0x3453: 0x000c, 0x3454: 0x000c, 0x3455: 0x000c, 0x3456: 0x000c, 0x3457: 0x000c, + 0x3458: 0x000c, 0x3459: 0x000c, 0x345a: 0x000c, 0x345b: 0x000c, 0x345c: 0x000c, 0x345d: 0x000c, + 0x345e: 0x000c, 0x345f: 0x000c, 0x3460: 0x000c, 0x3461: 0x000c, 0x3462: 0x000c, 0x3463: 0x000c, + 0x3464: 0x000c, 0x3465: 0x000c, 0x3466: 0x000c, 0x3467: 0x000c, 0x3468: 0x000c, 0x3469: 0x000c, + 0x346a: 0x000c, 0x346b: 0x000c, 0x346c: 0x000c, + 0x3475: 0x000c, + // Block 0xd2, offset 0x3480 + 0x3484: 0x000c, + 0x349b: 0x000c, 0x349c: 0x000c, 0x349d: 0x000c, + 0x349e: 0x000c, 0x349f: 0x000c, 0x34a1: 0x000c, 0x34a2: 0x000c, 0x34a3: 0x000c, + 0x34a4: 0x000c, 0x34a5: 0x000c, 0x34a6: 0x000c, 0x34a7: 0x000c, 0x34a8: 0x000c, 0x34a9: 0x000c, + 0x34aa: 0x000c, 0x34ab: 0x000c, 0x34ac: 0x000c, 0x34ad: 0x000c, 0x34ae: 0x000c, 0x34af: 0x000c, + // Block 0xd3, offset 0x34c0 + 0x34c0: 0x000c, 0x34c1: 0x000c, 0x34c2: 0x000c, 0x34c3: 0x000c, 0x34c4: 0x000c, 0x34c5: 0x000c, + 0x34c6: 0x000c, 0x34c8: 0x000c, 0x34c9: 0x000c, 0x34ca: 0x000c, 0x34cb: 0x000c, + 0x34cc: 0x000c, 0x34cd: 0x000c, 0x34ce: 0x000c, 0x34cf: 0x000c, 0x34d0: 0x000c, 0x34d1: 0x000c, + 0x34d2: 0x000c, 0x34d3: 0x000c, 0x34d4: 0x000c, 0x34d5: 0x000c, 0x34d6: 0x000c, 0x34d7: 0x000c, + 0x34d8: 0x000c, 0x34db: 0x000c, 0x34dc: 0x000c, 0x34dd: 0x000c, + 0x34de: 0x000c, 0x34df: 0x000c, 0x34e0: 0x000c, 0x34e1: 0x000c, 0x34e3: 0x000c, + 0x34e4: 0x000c, 0x34e6: 0x000c, 0x34e7: 0x000c, 0x34e8: 0x000c, 0x34e9: 0x000c, + 0x34ea: 0x000c, + // Block 0xd4, offset 0x3500 + 0x3500: 0x0001, 0x3501: 0x0001, 0x3502: 0x0001, 0x3503: 0x0001, 0x3504: 0x0001, 0x3505: 0x0001, + 0x3506: 0x0001, 0x3507: 0x0001, 0x3508: 0x0001, 0x3509: 0x0001, 0x350a: 0x0001, 0x350b: 0x0001, + 0x350c: 0x0001, 0x350d: 0x0001, 0x350e: 0x0001, 0x350f: 0x0001, 0x3510: 0x000c, 0x3511: 0x000c, + 0x3512: 0x000c, 0x3513: 0x000c, 0x3514: 0x000c, 0x3515: 0x000c, 0x3516: 0x000c, 0x3517: 0x0001, + 0x3518: 0x0001, 0x3519: 0x0001, 0x351a: 0x0001, 0x351b: 0x0001, 0x351c: 0x0001, 0x351d: 0x0001, + 0x351e: 0x0001, 0x351f: 0x0001, 0x3520: 0x0001, 0x3521: 0x0001, 0x3522: 0x0001, 0x3523: 0x0001, + 0x3524: 0x0001, 0x3525: 0x0001, 0x3526: 0x0001, 0x3527: 0x0001, 0x3528: 0x0001, 0x3529: 0x0001, + 0x352a: 0x0001, 0x352b: 0x0001, 0x352c: 0x0001, 0x352d: 0x0001, 0x352e: 0x0001, 0x352f: 0x0001, + 0x3530: 0x0001, 0x3531: 0x0001, 0x3532: 0x0001, 0x3533: 0x0001, 0x3534: 0x0001, 0x3535: 0x0001, + 0x3536: 0x0001, 0x3537: 0x0001, 0x3538: 0x0001, 0x3539: 0x0001, 0x353a: 0x0001, 0x353b: 0x0001, + 0x353c: 0x0001, 0x353d: 0x0001, 0x353e: 0x0001, 0x353f: 0x0001, + // Block 0xd5, offset 0x3540 + 0x3540: 0x0001, 0x3541: 0x0001, 0x3542: 0x0001, 0x3543: 0x0001, 0x3544: 0x000c, 0x3545: 0x000c, + 0x3546: 0x000c, 0x3547: 0x000c, 0x3548: 0x000c, 0x3549: 0x000c, 0x354a: 0x000c, 0x354b: 0x0001, + 0x354c: 0x0001, 0x354d: 0x0001, 0x354e: 0x0001, 0x354f: 0x0001, 0x3550: 0x0001, 0x3551: 0x0001, + 0x3552: 0x0001, 0x3553: 0x0001, 0x3554: 0x0001, 0x3555: 0x0001, 0x3556: 0x0001, 0x3557: 0x0001, + 0x3558: 0x0001, 0x3559: 0x0001, 0x355a: 0x0001, 0x355b: 0x0001, 0x355c: 0x0001, 0x355d: 0x0001, + 0x355e: 0x0001, 0x355f: 0x0001, 0x3560: 0x0001, 0x3561: 0x0001, 0x3562: 0x0001, 0x3563: 0x0001, + 0x3564: 0x0001, 0x3565: 0x0001, 0x3566: 0x0001, 0x3567: 0x0001, 0x3568: 0x0001, 0x3569: 0x0001, + 0x356a: 0x0001, 0x356b: 0x0001, 0x356c: 0x0001, 0x356d: 0x0001, 0x356e: 0x0001, 0x356f: 0x0001, + 0x3570: 0x0001, 0x3571: 0x0001, 0x3572: 0x0001, 0x3573: 0x0001, 0x3574: 0x0001, 0x3575: 0x0001, + 0x3576: 0x0001, 0x3577: 0x0001, 0x3578: 0x0001, 0x3579: 0x0001, 0x357a: 0x0001, 0x357b: 0x0001, + 0x357c: 0x0001, 0x357d: 0x0001, 0x357e: 0x0001, 0x357f: 0x0001, + // Block 0xd6, offset 0x3580 + 0x3580: 0x000d, 0x3581: 0x000d, 0x3582: 0x000d, 0x3583: 0x000d, 0x3584: 0x000d, 0x3585: 0x000d, + 0x3586: 0x000d, 0x3587: 0x000d, 0x3588: 0x000d, 0x3589: 0x000d, 0x358a: 0x000d, 0x358b: 0x000d, + 0x358c: 0x000d, 0x358d: 0x000d, 0x358e: 0x000d, 0x358f: 0x000d, 0x3590: 0x000d, 0x3591: 0x000d, + 0x3592: 0x000d, 0x3593: 0x000d, 0x3594: 0x000d, 0x3595: 0x000d, 0x3596: 0x000d, 0x3597: 0x000d, + 0x3598: 0x000d, 0x3599: 0x000d, 0x359a: 0x000d, 0x359b: 0x000d, 0x359c: 0x000d, 0x359d: 0x000d, + 0x359e: 0x000d, 0x359f: 0x000d, 0x35a0: 0x000d, 0x35a1: 0x000d, 0x35a2: 0x000d, 0x35a3: 0x000d, + 0x35a4: 0x000d, 0x35a5: 0x000d, 0x35a6: 0x000d, 0x35a7: 0x000d, 0x35a8: 0x000d, 0x35a9: 0x000d, + 0x35aa: 0x000d, 0x35ab: 0x000d, 0x35ac: 0x000d, 0x35ad: 0x000d, 0x35ae: 0x000d, 0x35af: 0x000d, + 0x35b0: 0x000a, 0x35b1: 0x000a, 0x35b2: 0x000d, 0x35b3: 0x000d, 0x35b4: 0x000d, 0x35b5: 0x000d, + 0x35b6: 0x000d, 0x35b7: 0x000d, 0x35b8: 0x000d, 0x35b9: 0x000d, 0x35ba: 0x000d, 0x35bb: 0x000d, + 0x35bc: 0x000d, 0x35bd: 0x000d, 0x35be: 0x000d, 0x35bf: 0x000d, + // Block 0xd7, offset 0x35c0 + 0x35c0: 0x000a, 0x35c1: 0x000a, 0x35c2: 0x000a, 0x35c3: 0x000a, 0x35c4: 0x000a, 0x35c5: 0x000a, + 0x35c6: 0x000a, 0x35c7: 0x000a, 0x35c8: 0x000a, 0x35c9: 0x000a, 0x35ca: 0x000a, 0x35cb: 0x000a, + 0x35cc: 0x000a, 0x35cd: 0x000a, 0x35ce: 0x000a, 0x35cf: 0x000a, 0x35d0: 0x000a, 0x35d1: 0x000a, + 0x35d2: 0x000a, 0x35d3: 0x000a, 0x35d4: 0x000a, 0x35d5: 0x000a, 0x35d6: 0x000a, 0x35d7: 0x000a, + 0x35d8: 0x000a, 0x35d9: 0x000a, 0x35da: 0x000a, 0x35db: 0x000a, 0x35dc: 0x000a, 0x35dd: 0x000a, + 0x35de: 0x000a, 0x35df: 0x000a, 0x35e0: 0x000a, 0x35e1: 0x000a, 0x35e2: 0x000a, 0x35e3: 0x000a, + 0x35e4: 0x000a, 0x35e5: 0x000a, 0x35e6: 0x000a, 0x35e7: 0x000a, 0x35e8: 0x000a, 0x35e9: 0x000a, + 0x35ea: 0x000a, 0x35eb: 0x000a, + 0x35f0: 0x000a, 0x35f1: 0x000a, 0x35f2: 0x000a, 0x35f3: 0x000a, 0x35f4: 0x000a, 0x35f5: 0x000a, + 0x35f6: 0x000a, 0x35f7: 0x000a, 0x35f8: 0x000a, 0x35f9: 0x000a, 0x35fa: 0x000a, 0x35fb: 0x000a, + 0x35fc: 0x000a, 0x35fd: 0x000a, 0x35fe: 0x000a, 0x35ff: 0x000a, + // Block 0xd8, offset 0x3600 + 0x3600: 0x000a, 0x3601: 0x000a, 0x3602: 0x000a, 0x3603: 0x000a, 0x3604: 0x000a, 0x3605: 0x000a, + 0x3606: 0x000a, 0x3607: 0x000a, 0x3608: 0x000a, 0x3609: 0x000a, 0x360a: 0x000a, 0x360b: 0x000a, + 0x360c: 0x000a, 0x360d: 0x000a, 0x360e: 0x000a, 0x360f: 0x000a, 0x3610: 0x000a, 0x3611: 0x000a, + 0x3612: 0x000a, 0x3613: 0x000a, + 0x3620: 0x000a, 0x3621: 0x000a, 0x3622: 0x000a, 0x3623: 0x000a, + 0x3624: 0x000a, 0x3625: 0x000a, 0x3626: 0x000a, 0x3627: 0x000a, 0x3628: 0x000a, 0x3629: 0x000a, + 0x362a: 0x000a, 0x362b: 0x000a, 0x362c: 0x000a, 0x362d: 0x000a, 0x362e: 0x000a, + 0x3631: 0x000a, 0x3632: 0x000a, 0x3633: 0x000a, 0x3634: 0x000a, 0x3635: 0x000a, + 0x3636: 0x000a, 0x3637: 0x000a, 0x3638: 0x000a, 0x3639: 0x000a, 0x363a: 0x000a, 0x363b: 0x000a, + 0x363c: 0x000a, 0x363d: 0x000a, 0x363e: 0x000a, 0x363f: 0x000a, + // Block 0xd9, offset 0x3640 + 0x3641: 0x000a, 0x3642: 0x000a, 0x3643: 0x000a, 0x3644: 0x000a, 0x3645: 0x000a, + 0x3646: 0x000a, 0x3647: 0x000a, 0x3648: 0x000a, 0x3649: 0x000a, 0x364a: 0x000a, 0x364b: 0x000a, + 0x364c: 0x000a, 0x364d: 0x000a, 0x364e: 0x000a, 0x364f: 0x000a, 0x3651: 0x000a, + 0x3652: 0x000a, 0x3653: 0x000a, 0x3654: 0x000a, 0x3655: 0x000a, 0x3656: 0x000a, 0x3657: 0x000a, + 0x3658: 0x000a, 0x3659: 0x000a, 0x365a: 0x000a, 0x365b: 0x000a, 0x365c: 0x000a, 0x365d: 0x000a, + 0x365e: 0x000a, 0x365f: 0x000a, 0x3660: 0x000a, 0x3661: 0x000a, 0x3662: 0x000a, 0x3663: 0x000a, + 0x3664: 0x000a, 0x3665: 0x000a, 0x3666: 0x000a, 0x3667: 0x000a, 0x3668: 0x000a, 0x3669: 0x000a, + 0x366a: 0x000a, 0x366b: 0x000a, 0x366c: 0x000a, 0x366d: 0x000a, 0x366e: 0x000a, 0x366f: 0x000a, + 0x3670: 0x000a, 0x3671: 0x000a, 0x3672: 0x000a, 0x3673: 0x000a, 0x3674: 0x000a, 0x3675: 0x000a, + // Block 0xda, offset 0x3680 + 0x3680: 0x0002, 0x3681: 0x0002, 0x3682: 0x0002, 0x3683: 0x0002, 0x3684: 0x0002, 0x3685: 0x0002, + 0x3686: 0x0002, 0x3687: 0x0002, 0x3688: 0x0002, 0x3689: 0x0002, 0x368a: 0x0002, 0x368b: 0x000a, + 0x368c: 0x000a, + 0x36af: 0x000a, + // Block 0xdb, offset 0x36c0 + 0x36ea: 0x000a, 0x36eb: 0x000a, + // Block 0xdc, offset 0x3700 + 0x3720: 0x000a, 0x3721: 0x000a, 0x3722: 0x000a, 0x3723: 0x000a, + 0x3724: 0x000a, 0x3725: 0x000a, + // Block 0xdd, offset 0x3740 + 0x3740: 0x000a, 0x3741: 0x000a, 0x3742: 0x000a, 0x3743: 0x000a, 0x3744: 0x000a, 0x3745: 0x000a, + 0x3746: 0x000a, 0x3747: 0x000a, 0x3748: 0x000a, 0x3749: 0x000a, 0x374a: 0x000a, 0x374b: 0x000a, + 0x374c: 0x000a, 0x374d: 0x000a, 0x374e: 0x000a, 0x374f: 0x000a, 0x3750: 0x000a, 0x3751: 0x000a, + 0x3752: 0x000a, 0x3753: 0x000a, 0x3754: 0x000a, + 0x3760: 0x000a, 0x3761: 0x000a, 0x3762: 0x000a, 0x3763: 0x000a, + 0x3764: 0x000a, 0x3765: 0x000a, 0x3766: 0x000a, 0x3767: 0x000a, 0x3768: 0x000a, 0x3769: 0x000a, + 0x376a: 0x000a, 0x376b: 0x000a, 0x376c: 0x000a, + 0x3770: 0x000a, 0x3771: 0x000a, 0x3772: 0x000a, 0x3773: 0x000a, 0x3774: 0x000a, 0x3775: 0x000a, + 0x3776: 0x000a, 0x3777: 0x000a, 0x3778: 0x000a, 0x3779: 0x000a, + // Block 0xde, offset 0x3780 + 0x3780: 0x000a, 0x3781: 0x000a, 0x3782: 0x000a, 0x3783: 0x000a, 0x3784: 0x000a, 0x3785: 0x000a, + 0x3786: 0x000a, 0x3787: 0x000a, 0x3788: 0x000a, 0x3789: 0x000a, 0x378a: 0x000a, 0x378b: 0x000a, + 0x378c: 0x000a, 0x378d: 0x000a, 0x378e: 0x000a, 0x378f: 0x000a, 0x3790: 0x000a, 0x3791: 0x000a, + 0x3792: 0x000a, 0x3793: 0x000a, 0x3794: 0x000a, 0x3795: 0x000a, 0x3796: 0x000a, 0x3797: 0x000a, + 0x3798: 0x000a, + // Block 0xdf, offset 0x37c0 + 0x37c0: 0x000a, 0x37c1: 0x000a, 0x37c2: 0x000a, 0x37c3: 0x000a, 0x37c4: 0x000a, 0x37c5: 0x000a, + 0x37c6: 0x000a, 0x37c7: 0x000a, 0x37c8: 0x000a, 0x37c9: 0x000a, 0x37ca: 0x000a, 0x37cb: 0x000a, + 0x37d0: 0x000a, 0x37d1: 0x000a, + 0x37d2: 0x000a, 0x37d3: 0x000a, 0x37d4: 0x000a, 0x37d5: 0x000a, 0x37d6: 0x000a, 0x37d7: 0x000a, + 0x37d8: 0x000a, 0x37d9: 0x000a, 0x37da: 0x000a, 0x37db: 0x000a, 0x37dc: 0x000a, 0x37dd: 0x000a, + 0x37de: 0x000a, 0x37df: 0x000a, 0x37e0: 0x000a, 0x37e1: 0x000a, 0x37e2: 0x000a, 0x37e3: 0x000a, + 0x37e4: 0x000a, 0x37e5: 0x000a, 0x37e6: 0x000a, 0x37e7: 0x000a, 0x37e8: 0x000a, 0x37e9: 0x000a, + 0x37ea: 0x000a, 0x37eb: 0x000a, 0x37ec: 0x000a, 0x37ed: 0x000a, 0x37ee: 0x000a, 0x37ef: 0x000a, + 0x37f0: 0x000a, 0x37f1: 0x000a, 0x37f2: 0x000a, 0x37f3: 0x000a, 0x37f4: 0x000a, 0x37f5: 0x000a, + 0x37f6: 0x000a, 0x37f7: 0x000a, 0x37f8: 0x000a, 0x37f9: 0x000a, 0x37fa: 0x000a, 0x37fb: 0x000a, + 0x37fc: 0x000a, 0x37fd: 0x000a, 0x37fe: 0x000a, 0x37ff: 0x000a, + // Block 0xe0, offset 0x3800 + 0x3800: 0x000a, 0x3801: 0x000a, 0x3802: 0x000a, 0x3803: 0x000a, 0x3804: 0x000a, 0x3805: 0x000a, + 0x3806: 0x000a, 0x3807: 0x000a, + 0x3810: 0x000a, 0x3811: 0x000a, + 0x3812: 0x000a, 0x3813: 0x000a, 0x3814: 0x000a, 0x3815: 0x000a, 0x3816: 0x000a, 0x3817: 0x000a, + 0x3818: 0x000a, 0x3819: 0x000a, + 0x3820: 0x000a, 0x3821: 0x000a, 0x3822: 0x000a, 0x3823: 0x000a, + 0x3824: 0x000a, 0x3825: 0x000a, 0x3826: 0x000a, 0x3827: 0x000a, 0x3828: 0x000a, 0x3829: 0x000a, + 0x382a: 0x000a, 0x382b: 0x000a, 0x382c: 0x000a, 0x382d: 0x000a, 0x382e: 0x000a, 0x382f: 0x000a, + 0x3830: 0x000a, 0x3831: 0x000a, 0x3832: 0x000a, 0x3833: 0x000a, 0x3834: 0x000a, 0x3835: 0x000a, + 0x3836: 0x000a, 0x3837: 0x000a, 0x3838: 0x000a, 0x3839: 0x000a, 0x383a: 0x000a, 0x383b: 0x000a, + 0x383c: 0x000a, 0x383d: 0x000a, 0x383e: 0x000a, 0x383f: 0x000a, + // Block 0xe1, offset 0x3840 + 0x3840: 0x000a, 0x3841: 0x000a, 0x3842: 0x000a, 0x3843: 0x000a, 0x3844: 0x000a, 0x3845: 0x000a, + 0x3846: 0x000a, 0x3847: 0x000a, + 0x3850: 0x000a, 0x3851: 0x000a, + 0x3852: 0x000a, 0x3853: 0x000a, 0x3854: 0x000a, 0x3855: 0x000a, 0x3856: 0x000a, 0x3857: 0x000a, + 0x3858: 0x000a, 0x3859: 0x000a, 0x385a: 0x000a, 0x385b: 0x000a, 0x385c: 0x000a, 0x385d: 0x000a, + 0x385e: 0x000a, 0x385f: 0x000a, 0x3860: 0x000a, 0x3861: 0x000a, 0x3862: 0x000a, 0x3863: 0x000a, + 0x3864: 0x000a, 0x3865: 0x000a, 0x3866: 0x000a, 0x3867: 0x000a, 0x3868: 0x000a, 0x3869: 0x000a, + 0x386a: 0x000a, 0x386b: 0x000a, 0x386c: 0x000a, 0x386d: 0x000a, + // Block 0xe2, offset 0x3880 + 0x3880: 0x000a, 0x3881: 0x000a, 0x3882: 0x000a, 0x3883: 0x000a, 0x3884: 0x000a, 0x3885: 0x000a, + 0x3886: 0x000a, 0x3887: 0x000a, 0x3888: 0x000a, 0x3889: 0x000a, 0x388a: 0x000a, 0x388b: 0x000a, + 0x3890: 0x000a, 0x3891: 0x000a, + 0x3892: 0x000a, 0x3893: 0x000a, 0x3894: 0x000a, 0x3895: 0x000a, 0x3896: 0x000a, 0x3897: 0x000a, + 0x3898: 0x000a, 0x3899: 0x000a, 0x389a: 0x000a, 0x389b: 0x000a, 0x389c: 0x000a, 0x389d: 0x000a, + 0x389e: 0x000a, 0x389f: 0x000a, 0x38a0: 0x000a, 0x38a1: 0x000a, 0x38a2: 0x000a, 0x38a3: 0x000a, + 0x38a4: 0x000a, 0x38a5: 0x000a, 0x38a6: 0x000a, 0x38a7: 0x000a, 0x38a8: 0x000a, 0x38a9: 0x000a, + 0x38aa: 0x000a, 0x38ab: 0x000a, 0x38ac: 0x000a, 0x38ad: 0x000a, 0x38ae: 0x000a, 0x38af: 0x000a, + 0x38b0: 0x000a, 0x38b1: 0x000a, 0x38b2: 0x000a, 0x38b3: 0x000a, 0x38b4: 0x000a, 0x38b5: 0x000a, + 0x38b6: 0x000a, 0x38b7: 0x000a, 0x38b8: 0x000a, 0x38b9: 0x000a, 0x38ba: 0x000a, 0x38bb: 0x000a, + 0x38bc: 0x000a, 0x38bd: 0x000a, 0x38be: 0x000a, + // Block 0xe3, offset 0x38c0 + 0x38c0: 0x000a, 0x38c1: 0x000a, 0x38c2: 0x000a, 0x38c3: 0x000a, 0x38c4: 0x000a, 0x38c5: 0x000a, + 0x38c6: 0x000a, 0x38c7: 0x000a, 0x38c8: 0x000a, 0x38c9: 0x000a, 0x38ca: 0x000a, 0x38cb: 0x000a, + 0x38cc: 0x000a, 0x38cd: 0x000a, 0x38ce: 0x000a, 0x38cf: 0x000a, 0x38d0: 0x000a, 0x38d1: 0x000a, + 0x38d2: 0x000a, 0x38d3: 0x000a, 0x38d4: 0x000a, 0x38d5: 0x000a, 0x38d6: 0x000a, 0x38d7: 0x000a, + 0x38d8: 0x000a, 0x38d9: 0x000a, 0x38da: 0x000a, 0x38db: 0x000a, 0x38dc: 0x000a, 0x38dd: 0x000a, + 0x38de: 0x000a, 0x38df: 0x000a, 0x38e0: 0x000a, 0x38e1: 0x000a, 0x38e2: 0x000a, 0x38e3: 0x000a, + 0x38e4: 0x000a, 0x38e5: 0x000a, 0x38e6: 0x000a, 0x38e7: 0x000a, 0x38e8: 0x000a, 0x38e9: 0x000a, + 0x38ea: 0x000a, 0x38eb: 0x000a, 0x38ec: 0x000a, 0x38ed: 0x000a, 0x38ee: 0x000a, 0x38ef: 0x000a, + 0x38f0: 0x000a, 0x38f3: 0x000a, 0x38f4: 0x000a, 0x38f5: 0x000a, + 0x38f6: 0x000a, 0x38fa: 0x000a, + 0x38fc: 0x000a, 0x38fd: 0x000a, 0x38fe: 0x000a, 0x38ff: 0x000a, + // Block 0xe4, offset 0x3900 + 0x3900: 0x000a, 0x3901: 0x000a, 0x3902: 0x000a, 0x3903: 0x000a, 0x3904: 0x000a, 0x3905: 0x000a, + 0x3906: 0x000a, 0x3907: 0x000a, 0x3908: 0x000a, 0x3909: 0x000a, 0x390a: 0x000a, 0x390b: 0x000a, + 0x390c: 0x000a, 0x390d: 0x000a, 0x390e: 0x000a, 0x390f: 0x000a, 0x3910: 0x000a, 0x3911: 0x000a, + 0x3912: 0x000a, 0x3913: 0x000a, 0x3914: 0x000a, 0x3915: 0x000a, 0x3916: 0x000a, 0x3917: 0x000a, + 0x3918: 0x000a, 0x3919: 0x000a, 0x391a: 0x000a, 0x391b: 0x000a, 0x391c: 0x000a, 0x391d: 0x000a, + 0x391e: 0x000a, 0x391f: 0x000a, 0x3920: 0x000a, 0x3921: 0x000a, 0x3922: 0x000a, + 0x3930: 0x000a, 0x3931: 0x000a, 0x3932: 0x000a, 0x3933: 0x000a, 0x3934: 0x000a, 0x3935: 0x000a, + 0x3936: 0x000a, 0x3937: 0x000a, 0x3938: 0x000a, 0x3939: 0x000a, + // Block 0xe5, offset 0x3940 + 0x3940: 0x000a, 0x3941: 0x000a, 0x3942: 0x000a, + 0x3950: 0x000a, 0x3951: 0x000a, + 0x3952: 0x000a, 0x3953: 0x000a, 0x3954: 0x000a, 0x3955: 0x000a, 0x3956: 0x000a, 0x3957: 0x000a, + 0x3958: 0x000a, 0x3959: 0x000a, 0x395a: 0x000a, 0x395b: 0x000a, 0x395c: 0x000a, 0x395d: 0x000a, + 0x395e: 0x000a, 0x395f: 0x000a, 0x3960: 0x000a, 0x3961: 0x000a, 0x3962: 0x000a, 0x3963: 0x000a, + 0x3964: 0x000a, 0x3965: 0x000a, 0x3966: 0x000a, 0x3967: 0x000a, 0x3968: 0x000a, 0x3969: 0x000a, + 0x396a: 0x000a, 0x396b: 0x000a, 0x396c: 0x000a, 0x396d: 0x000a, 0x396e: 0x000a, 0x396f: 0x000a, + 0x3970: 0x000a, 0x3971: 0x000a, 0x3972: 0x000a, 0x3973: 0x000a, 0x3974: 0x000a, 0x3975: 0x000a, + 0x3976: 0x000a, 0x3977: 0x000a, 0x3978: 0x000a, 0x3979: 0x000a, 0x397a: 0x000a, 0x397b: 0x000a, + 0x397c: 0x000a, 0x397d: 0x000a, 0x397e: 0x000a, 0x397f: 0x000a, + // Block 0xe6, offset 0x3980 + 0x39a0: 0x000a, 0x39a1: 0x000a, 0x39a2: 0x000a, 0x39a3: 0x000a, + 0x39a4: 0x000a, 0x39a5: 0x000a, 0x39a6: 0x000a, 0x39a7: 0x000a, 0x39a8: 0x000a, 0x39a9: 0x000a, + 0x39aa: 0x000a, 0x39ab: 0x000a, 0x39ac: 0x000a, 0x39ad: 0x000a, + // Block 0xe7, offset 0x39c0 + 0x39fe: 0x000b, 0x39ff: 0x000b, + // Block 0xe8, offset 0x3a00 + 0x3a00: 0x000b, 0x3a01: 0x000b, 0x3a02: 0x000b, 0x3a03: 0x000b, 0x3a04: 0x000b, 0x3a05: 0x000b, + 0x3a06: 0x000b, 0x3a07: 0x000b, 0x3a08: 0x000b, 0x3a09: 0x000b, 0x3a0a: 0x000b, 0x3a0b: 0x000b, + 0x3a0c: 0x000b, 0x3a0d: 0x000b, 0x3a0e: 0x000b, 0x3a0f: 0x000b, 0x3a10: 0x000b, 0x3a11: 0x000b, + 0x3a12: 0x000b, 0x3a13: 0x000b, 0x3a14: 0x000b, 0x3a15: 0x000b, 0x3a16: 0x000b, 0x3a17: 0x000b, + 0x3a18: 0x000b, 0x3a19: 0x000b, 0x3a1a: 0x000b, 0x3a1b: 0x000b, 0x3a1c: 0x000b, 0x3a1d: 0x000b, + 0x3a1e: 0x000b, 0x3a1f: 0x000b, 0x3a20: 0x000b, 0x3a21: 0x000b, 0x3a22: 0x000b, 0x3a23: 0x000b, + 0x3a24: 0x000b, 0x3a25: 0x000b, 0x3a26: 0x000b, 0x3a27: 0x000b, 0x3a28: 0x000b, 0x3a29: 0x000b, + 0x3a2a: 0x000b, 0x3a2b: 0x000b, 0x3a2c: 0x000b, 0x3a2d: 0x000b, 0x3a2e: 0x000b, 0x3a2f: 0x000b, + 0x3a30: 0x000b, 0x3a31: 0x000b, 0x3a32: 0x000b, 0x3a33: 0x000b, 0x3a34: 0x000b, 0x3a35: 0x000b, + 0x3a36: 0x000b, 0x3a37: 0x000b, 0x3a38: 0x000b, 0x3a39: 0x000b, 0x3a3a: 0x000b, 0x3a3b: 0x000b, + 0x3a3c: 0x000b, 0x3a3d: 0x000b, 0x3a3e: 0x000b, 0x3a3f: 0x000b, + // Block 0xe9, offset 0x3a40 + 0x3a40: 0x000c, 0x3a41: 0x000c, 0x3a42: 0x000c, 0x3a43: 0x000c, 0x3a44: 0x000c, 0x3a45: 0x000c, + 0x3a46: 0x000c, 0x3a47: 0x000c, 0x3a48: 0x000c, 0x3a49: 0x000c, 0x3a4a: 0x000c, 0x3a4b: 0x000c, + 0x3a4c: 0x000c, 0x3a4d: 0x000c, 0x3a4e: 0x000c, 0x3a4f: 0x000c, 0x3a50: 0x000c, 0x3a51: 0x000c, + 0x3a52: 0x000c, 0x3a53: 0x000c, 0x3a54: 0x000c, 0x3a55: 0x000c, 0x3a56: 0x000c, 0x3a57: 0x000c, + 0x3a58: 0x000c, 0x3a59: 0x000c, 0x3a5a: 0x000c, 0x3a5b: 0x000c, 0x3a5c: 0x000c, 0x3a5d: 0x000c, + 0x3a5e: 0x000c, 0x3a5f: 0x000c, 0x3a60: 0x000c, 0x3a61: 0x000c, 0x3a62: 0x000c, 0x3a63: 0x000c, + 0x3a64: 0x000c, 0x3a65: 0x000c, 0x3a66: 0x000c, 0x3a67: 0x000c, 0x3a68: 0x000c, 0x3a69: 0x000c, + 0x3a6a: 0x000c, 0x3a6b: 0x000c, 0x3a6c: 0x000c, 0x3a6d: 0x000c, 0x3a6e: 0x000c, 0x3a6f: 0x000c, + 0x3a70: 0x000b, 0x3a71: 0x000b, 0x3a72: 0x000b, 0x3a73: 0x000b, 0x3a74: 0x000b, 0x3a75: 0x000b, + 0x3a76: 0x000b, 0x3a77: 0x000b, 0x3a78: 0x000b, 0x3a79: 0x000b, 0x3a7a: 0x000b, 0x3a7b: 0x000b, + 0x3a7c: 0x000b, 0x3a7d: 0x000b, 0x3a7e: 0x000b, 0x3a7f: 0x000b, +} + +// bidiIndex: 24 blocks, 1536 entries, 1536 bytes +// Block 0 is the zero block. +var bidiIndex = [1536]uint8{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x01, 0xc3: 0x02, + 0xca: 0x03, 0xcb: 0x04, 0xcc: 0x05, 0xcd: 0x06, 0xce: 0x07, 0xcf: 0x08, + 0xd2: 0x09, 0xd6: 0x0a, 0xd7: 0x0b, + 0xd8: 0x0c, 0xd9: 0x0d, 0xda: 0x0e, 0xdb: 0x0f, 0xdc: 0x10, 0xdd: 0x11, 0xde: 0x12, 0xdf: 0x13, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, 0xe4: 0x06, + 0xea: 0x07, 0xef: 0x08, + 0xf0: 0x11, 0xf1: 0x12, 0xf2: 0x12, 0xf3: 0x14, 0xf4: 0x15, + // Block 0x4, offset 0x100 + 0x120: 0x14, 0x121: 0x15, 0x122: 0x16, 0x123: 0x17, 0x124: 0x18, 0x125: 0x19, 0x126: 0x1a, 0x127: 0x1b, + 0x128: 0x1c, 0x129: 0x1d, 0x12a: 0x1c, 0x12b: 0x1e, 0x12c: 0x1f, 0x12d: 0x20, 0x12e: 0x21, 0x12f: 0x22, + 0x130: 0x23, 0x131: 0x24, 0x132: 0x1a, 0x133: 0x25, 0x134: 0x26, 0x135: 0x27, 0x137: 0x28, + 0x138: 0x29, 0x139: 0x2a, 0x13a: 0x2b, 0x13b: 0x2c, 0x13c: 0x2d, 0x13d: 0x2e, 0x13e: 0x2f, 0x13f: 0x30, + // Block 0x5, offset 0x140 + 0x140: 0x31, 0x141: 0x32, 0x142: 0x33, + 0x14d: 0x34, 0x14e: 0x35, + 0x150: 0x36, + 0x15a: 0x37, 0x15c: 0x38, 0x15d: 0x39, 0x15e: 0x3a, 0x15f: 0x3b, + 0x160: 0x3c, 0x162: 0x3d, 0x164: 0x3e, 0x165: 0x3f, 0x167: 0x40, + 0x168: 0x41, 0x169: 0x42, 0x16a: 0x43, 0x16c: 0x44, 0x16d: 0x45, 0x16e: 0x46, 0x16f: 0x47, + 0x170: 0x48, 0x173: 0x49, 0x177: 0x4a, + 0x17e: 0x4b, 0x17f: 0x4c, + // Block 0x6, offset 0x180 + 0x180: 0x4d, 0x181: 0x4e, 0x182: 0x4f, 0x183: 0x50, 0x184: 0x51, 0x185: 0x52, 0x186: 0x53, 0x187: 0x54, + 0x188: 0x55, 0x189: 0x54, 0x18a: 0x54, 0x18b: 0x54, 0x18c: 0x56, 0x18d: 0x57, 0x18e: 0x58, 0x18f: 0x54, + 0x190: 0x59, 0x191: 0x5a, 0x192: 0x5b, 0x193: 0x5c, 0x194: 0x54, 0x195: 0x54, 0x196: 0x54, 0x197: 0x54, + 0x198: 0x54, 0x199: 0x54, 0x19a: 0x5d, 0x19b: 0x54, 0x19c: 0x54, 0x19d: 0x5e, 0x19e: 0x54, 0x19f: 0x5f, + 0x1a4: 0x54, 0x1a5: 0x54, 0x1a6: 0x60, 0x1a7: 0x61, + 0x1a8: 0x54, 0x1a9: 0x54, 0x1aa: 0x54, 0x1ab: 0x54, 0x1ac: 0x54, 0x1ad: 0x62, 0x1ae: 0x63, 0x1af: 0x64, + 0x1b3: 0x65, 0x1b5: 0x66, 0x1b7: 0x67, + 0x1b8: 0x68, 0x1b9: 0x69, 0x1ba: 0x6a, 0x1bb: 0x6b, 0x1bc: 0x54, 0x1bd: 0x54, 0x1be: 0x54, 0x1bf: 0x6c, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x6d, 0x1c2: 0x6e, 0x1c3: 0x6f, 0x1c7: 0x70, + 0x1c8: 0x71, 0x1c9: 0x72, 0x1ca: 0x73, 0x1cb: 0x74, 0x1cd: 0x75, 0x1cf: 0x76, + // Block 0x8, offset 0x200 + 0x237: 0x54, + // Block 0x9, offset 0x240 + 0x252: 0x77, 0x253: 0x78, + 0x258: 0x79, 0x259: 0x7a, 0x25a: 0x7b, 0x25b: 0x7c, 0x25c: 0x7d, 0x25e: 0x7e, + 0x260: 0x7f, 0x261: 0x80, 0x263: 0x81, 0x264: 0x82, 0x265: 0x83, 0x266: 0x84, 0x267: 0x85, + 0x268: 0x86, 0x269: 0x87, 0x26a: 0x88, 0x26b: 0x89, 0x26f: 0x8a, + // Block 0xa, offset 0x280 + 0x2ac: 0x8b, 0x2ad: 0x8c, 0x2ae: 0x0e, 0x2af: 0x0e, + 0x2b0: 0x0e, 0x2b1: 0x0e, 0x2b2: 0x0e, 0x2b3: 0x0e, 0x2b4: 0x8d, 0x2b5: 0x0e, 0x2b6: 0x0e, 0x2b7: 0x8e, + 0x2b8: 0x8f, 0x2b9: 0x90, 0x2ba: 0x0e, 0x2bb: 0x91, 0x2bc: 0x92, 0x2bd: 0x93, 0x2bf: 0x94, + // Block 0xb, offset 0x2c0 + 0x2c4: 0x95, 0x2c5: 0x54, 0x2c6: 0x96, 0x2c7: 0x97, + 0x2cb: 0x98, 0x2cd: 0x99, + 0x2e0: 0x9a, 0x2e1: 0x9a, 0x2e2: 0x9a, 0x2e3: 0x9a, 0x2e4: 0x9b, 0x2e5: 0x9a, 0x2e6: 0x9a, 0x2e7: 0x9a, + 0x2e8: 0x9c, 0x2e9: 0x9a, 0x2ea: 0x9a, 0x2eb: 0x9d, 0x2ec: 0x9e, 0x2ed: 0x9a, 0x2ee: 0x9a, 0x2ef: 0x9a, + 0x2f0: 0x9a, 0x2f1: 0x9a, 0x2f2: 0x9a, 0x2f3: 0x9a, 0x2f4: 0x9f, 0x2f5: 0x9a, 0x2f6: 0x9a, 0x2f7: 0x9a, + 0x2f8: 0x9a, 0x2f9: 0xa0, 0x2fa: 0x9a, 0x2fb: 0x9a, 0x2fc: 0xa1, 0x2fd: 0xa2, 0x2fe: 0x9a, 0x2ff: 0x9a, + // Block 0xc, offset 0x300 + 0x300: 0xa3, 0x301: 0xa4, 0x302: 0xa5, 0x304: 0xa6, 0x305: 0xa7, 0x306: 0xa8, 0x307: 0xa9, + 0x308: 0xaa, 0x30b: 0xab, 0x30c: 0x26, 0x30d: 0xac, + 0x310: 0xad, 0x311: 0xae, 0x312: 0xaf, 0x313: 0xb0, 0x316: 0xb1, 0x317: 0xb2, + 0x318: 0xb3, 0x319: 0xb4, 0x31a: 0xb5, 0x31c: 0xb6, + 0x320: 0xb7, + 0x328: 0xb8, 0x329: 0xb9, 0x32a: 0xba, + 0x330: 0xbb, 0x332: 0xbc, 0x334: 0xbd, 0x335: 0xbe, 0x336: 0xbf, + 0x33b: 0xc0, + // Block 0xd, offset 0x340 + 0x36b: 0xc1, 0x36c: 0xc2, + 0x37e: 0xc3, + // Block 0xe, offset 0x380 + 0x3b2: 0xc4, + // Block 0xf, offset 0x3c0 + 0x3c5: 0xc5, 0x3c6: 0xc6, + 0x3c8: 0x54, 0x3c9: 0xc7, 0x3cc: 0x54, 0x3cd: 0xc8, + 0x3db: 0xc9, 0x3dc: 0xca, 0x3dd: 0xcb, 0x3de: 0xcc, 0x3df: 0xcd, + 0x3e8: 0xce, 0x3e9: 0xcf, 0x3ea: 0xd0, + // Block 0x10, offset 0x400 + 0x400: 0xd1, + 0x420: 0x9a, 0x421: 0x9a, 0x422: 0x9a, 0x423: 0xd2, 0x424: 0x9a, 0x425: 0xd3, 0x426: 0x9a, 0x427: 0x9a, + 0x428: 0x9a, 0x429: 0x9a, 0x42a: 0x9a, 0x42b: 0x9a, 0x42c: 0x9a, 0x42d: 0x9a, 0x42e: 0x9a, 0x42f: 0x9a, + 0x430: 0x9a, 0x431: 0xa1, 0x432: 0x0e, 0x433: 0x9a, 0x434: 0x9a, 0x435: 0x9a, 0x436: 0x9a, 0x437: 0x9a, + 0x438: 0x0e, 0x439: 0x0e, 0x43a: 0x0e, 0x43b: 0xd4, 0x43c: 0x9a, 0x43d: 0x9a, 0x43e: 0x9a, 0x43f: 0x9a, + // Block 0x11, offset 0x440 + 0x440: 0xd5, 0x441: 0x54, 0x442: 0xd6, 0x443: 0xd7, 0x444: 0xd8, 0x445: 0xd9, + 0x449: 0xda, 0x44c: 0x54, 0x44d: 0x54, 0x44e: 0x54, 0x44f: 0x54, + 0x450: 0x54, 0x451: 0x54, 0x452: 0x54, 0x453: 0x54, 0x454: 0x54, 0x455: 0x54, 0x456: 0x54, 0x457: 0x54, + 0x458: 0x54, 0x459: 0x54, 0x45a: 0x54, 0x45b: 0xdb, 0x45c: 0x54, 0x45d: 0x6b, 0x45e: 0x54, 0x45f: 0xdc, + 0x460: 0xdd, 0x461: 0xde, 0x462: 0xdf, 0x464: 0xe0, 0x465: 0xe1, 0x466: 0xe2, 0x467: 0xe3, + 0x469: 0xe4, + 0x47f: 0xe5, + // Block 0x12, offset 0x480 + 0x4bf: 0xe5, + // Block 0x13, offset 0x4c0 + 0x4d0: 0x09, 0x4d1: 0x0a, 0x4d6: 0x0b, + 0x4db: 0x0c, 0x4dd: 0x0d, 0x4de: 0x0e, 0x4df: 0x0f, + 0x4ef: 0x10, + 0x4ff: 0x10, + // Block 0x14, offset 0x500 + 0x50f: 0x10, + 0x51f: 0x10, + 0x52f: 0x10, + 0x53f: 0x10, + // Block 0x15, offset 0x540 + 0x540: 0xe6, 0x541: 0xe6, 0x542: 0xe6, 0x543: 0xe6, 0x544: 0x05, 0x545: 0x05, 0x546: 0x05, 0x547: 0xe7, + 0x548: 0xe6, 0x549: 0xe6, 0x54a: 0xe6, 0x54b: 0xe6, 0x54c: 0xe6, 0x54d: 0xe6, 0x54e: 0xe6, 0x54f: 0xe6, + 0x550: 0xe6, 0x551: 0xe6, 0x552: 0xe6, 0x553: 0xe6, 0x554: 0xe6, 0x555: 0xe6, 0x556: 0xe6, 0x557: 0xe6, + 0x558: 0xe6, 0x559: 0xe6, 0x55a: 0xe6, 0x55b: 0xe6, 0x55c: 0xe6, 0x55d: 0xe6, 0x55e: 0xe6, 0x55f: 0xe6, + 0x560: 0xe6, 0x561: 0xe6, 0x562: 0xe6, 0x563: 0xe6, 0x564: 0xe6, 0x565: 0xe6, 0x566: 0xe6, 0x567: 0xe6, + 0x568: 0xe6, 0x569: 0xe6, 0x56a: 0xe6, 0x56b: 0xe6, 0x56c: 0xe6, 0x56d: 0xe6, 0x56e: 0xe6, 0x56f: 0xe6, + 0x570: 0xe6, 0x571: 0xe6, 0x572: 0xe6, 0x573: 0xe6, 0x574: 0xe6, 0x575: 0xe6, 0x576: 0xe6, 0x577: 0xe6, + 0x578: 0xe6, 0x579: 0xe6, 0x57a: 0xe6, 0x57b: 0xe6, 0x57c: 0xe6, 0x57d: 0xe6, 0x57e: 0xe6, 0x57f: 0xe6, + // Block 0x16, offset 0x580 + 0x58f: 0x10, + 0x59f: 0x10, + 0x5a0: 0x13, + 0x5af: 0x10, + 0x5bf: 0x10, + // Block 0x17, offset 0x5c0 + 0x5cf: 0x10, +} + +// Total table size 16568 bytes (16KiB); checksum: F50EF68C diff --git a/vendor/golang.org/x/text/unicode/norm/composition.go b/vendor/golang.org/x/text/unicode/norm/composition.go index bab4c5de02..e2087bce52 100644 --- a/vendor/golang.org/x/text/unicode/norm/composition.go +++ b/vendor/golang.org/x/text/unicode/norm/composition.go @@ -407,7 +407,7 @@ func decomposeHangul(buf []byte, r rune) int { // decomposeHangul algorithmically decomposes a Hangul rune into // its Jamo components. -// See http://unicode.org/reports/tr15/#Hangul for details on decomposing Hangul. +// See https://unicode.org/reports/tr15/#Hangul for details on decomposing Hangul. func (rb *reorderBuffer) decomposeHangul(r rune) { r -= hangulBase x := r % jamoTCount @@ -420,7 +420,7 @@ func (rb *reorderBuffer) decomposeHangul(r rune) { } // combineHangul algorithmically combines Jamo character components into Hangul. -// See http://unicode.org/reports/tr15/#Hangul for details on combining Hangul. +// See https://unicode.org/reports/tr15/#Hangul for details on combining Hangul. func (rb *reorderBuffer) combineHangul(s, i, k int) { b := rb.rune[:] bn := rb.nrune @@ -461,6 +461,10 @@ func (rb *reorderBuffer) combineHangul(s, i, k int) { // It should only be used to recompose a single segment, as it will not // handle alternations between Hangul and non-Hangul characters correctly. func (rb *reorderBuffer) compose() { + // Lazily load the map used by the combine func below, but do + // it outside of the loop. + recompMapOnce.Do(buildRecompMap) + // UAX #15, section X5 , including Corrigendum #5 // "In any character sequence beginning with starter S, a character C is // blocked from S if and only if there is some character B between S diff --git a/vendor/golang.org/x/text/unicode/norm/forminfo.go b/vendor/golang.org/x/text/unicode/norm/forminfo.go index e67e7655c5..526c7033ac 100644 --- a/vendor/golang.org/x/text/unicode/norm/forminfo.go +++ b/vendor/golang.org/x/text/unicode/norm/forminfo.go @@ -4,6 +4,8 @@ package norm +import "encoding/binary" + // This file contains Form-specific logic and wrappers for data in tables.go. // Rune info is stored in a separate trie per composing form. A composing form @@ -178,6 +180,17 @@ func (p Properties) TrailCCC() uint8 { return ccc[p.tccc] } +func buildRecompMap() { + recompMap = make(map[uint32]rune, len(recompMapPacked)/8) + var buf [8]byte + for i := 0; i < len(recompMapPacked); i += 8 { + copy(buf[:], recompMapPacked[i:i+8]) + key := binary.BigEndian.Uint32(buf[:4]) + val := binary.BigEndian.Uint32(buf[4:]) + recompMap[key] = rune(val) + } +} + // Recomposition // We use 32-bit keys instead of 64-bit for the two codepoint keys. // This clips off the bits of three entries, but we know this will not @@ -186,8 +199,14 @@ func (p Properties) TrailCCC() uint8 { // Note that the recomposition map for NFC and NFKC are identical. // combine returns the combined rune or 0 if it doesn't exist. +// +// The caller is responsible for calling +// recompMapOnce.Do(buildRecompMap) sometime before this is called. func combine(a, b rune) rune { key := uint32(uint16(a))<<16 + uint32(uint16(b)) + if recompMap == nil { + panic("caller error") // see func comment + } return recompMap[key] } diff --git a/vendor/golang.org/x/text/unicode/norm/iter.go b/vendor/golang.org/x/text/unicode/norm/iter.go index ce17f96c2e..417c6b2689 100644 --- a/vendor/golang.org/x/text/unicode/norm/iter.go +++ b/vendor/golang.org/x/text/unicode/norm/iter.go @@ -128,8 +128,9 @@ func (i *Iter) Next() []byte { func nextASCIIBytes(i *Iter) []byte { p := i.p + 1 if p >= i.rb.nsrc { + p0 := i.p i.setDone() - return i.rb.src.bytes[i.p:p] + return i.rb.src.bytes[p0:p] } if i.rb.src.bytes[p] < utf8.RuneSelf { p0 := i.p diff --git a/vendor/golang.org/x/text/unicode/norm/normalize.go b/vendor/golang.org/x/text/unicode/norm/normalize.go index e28ac641ac..95efcf26e8 100644 --- a/vendor/golang.org/x/text/unicode/norm/normalize.go +++ b/vendor/golang.org/x/text/unicode/norm/normalize.go @@ -29,8 +29,8 @@ import ( // proceed independently on both sides: // f(x) == append(f(x[0:n]), f(x[n:])...) // -// References: http://unicode.org/reports/tr15/ and -// http://unicode.org/notes/tn5/. +// References: https://unicode.org/reports/tr15/ and +// https://unicode.org/notes/tn5/. type Form int const ( diff --git a/vendor/golang.org/x/text/unicode/norm/readwriter.go b/vendor/golang.org/x/text/unicode/norm/readwriter.go index d926ee903e..b38096f5ca 100644 --- a/vendor/golang.org/x/text/unicode/norm/readwriter.go +++ b/vendor/golang.org/x/text/unicode/norm/readwriter.go @@ -60,8 +60,8 @@ func (w *normWriter) Close() error { } // Writer returns a new writer that implements Write(b) -// by writing f(b) to w. The returned writer may use an -// an internal buffer to maintain state across Write calls. +// by writing f(b) to w. The returned writer may use an +// internal buffer to maintain state across Write calls. // Calling its Close method writes any buffered data to w. func (f Form) Writer(w io.Writer) io.WriteCloser { wr := &normWriter{rb: reorderBuffer{}, w: w} diff --git a/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go index 44dd3978ca..26fbd55a12 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go @@ -1,9 +1,11 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. -// +build go1.10 +// +build go1.10,!go1.13 package norm +import "sync" + const ( // Version is the Unicode edition from which the tables are derived. Version = "10.0.0" @@ -6707,947 +6709,949 @@ var nfkcSparseValues = [869]valueRange{ } // recompMap: 7520 bytes (entries only) -var recompMap = map[uint32]rune{ - 0x00410300: 0x00C0, - 0x00410301: 0x00C1, - 0x00410302: 0x00C2, - 0x00410303: 0x00C3, - 0x00410308: 0x00C4, - 0x0041030A: 0x00C5, - 0x00430327: 0x00C7, - 0x00450300: 0x00C8, - 0x00450301: 0x00C9, - 0x00450302: 0x00CA, - 0x00450308: 0x00CB, - 0x00490300: 0x00CC, - 0x00490301: 0x00CD, - 0x00490302: 0x00CE, - 0x00490308: 0x00CF, - 0x004E0303: 0x00D1, - 0x004F0300: 0x00D2, - 0x004F0301: 0x00D3, - 0x004F0302: 0x00D4, - 0x004F0303: 0x00D5, - 0x004F0308: 0x00D6, - 0x00550300: 0x00D9, - 0x00550301: 0x00DA, - 0x00550302: 0x00DB, - 0x00550308: 0x00DC, - 0x00590301: 0x00DD, - 0x00610300: 0x00E0, - 0x00610301: 0x00E1, - 0x00610302: 0x00E2, - 0x00610303: 0x00E3, - 0x00610308: 0x00E4, - 0x0061030A: 0x00E5, - 0x00630327: 0x00E7, - 0x00650300: 0x00E8, - 0x00650301: 0x00E9, - 0x00650302: 0x00EA, - 0x00650308: 0x00EB, - 0x00690300: 0x00EC, - 0x00690301: 0x00ED, - 0x00690302: 0x00EE, - 0x00690308: 0x00EF, - 0x006E0303: 0x00F1, - 0x006F0300: 0x00F2, - 0x006F0301: 0x00F3, - 0x006F0302: 0x00F4, - 0x006F0303: 0x00F5, - 0x006F0308: 0x00F6, - 0x00750300: 0x00F9, - 0x00750301: 0x00FA, - 0x00750302: 0x00FB, - 0x00750308: 0x00FC, - 0x00790301: 0x00FD, - 0x00790308: 0x00FF, - 0x00410304: 0x0100, - 0x00610304: 0x0101, - 0x00410306: 0x0102, - 0x00610306: 0x0103, - 0x00410328: 0x0104, - 0x00610328: 0x0105, - 0x00430301: 0x0106, - 0x00630301: 0x0107, - 0x00430302: 0x0108, - 0x00630302: 0x0109, - 0x00430307: 0x010A, - 0x00630307: 0x010B, - 0x0043030C: 0x010C, - 0x0063030C: 0x010D, - 0x0044030C: 0x010E, - 0x0064030C: 0x010F, - 0x00450304: 0x0112, - 0x00650304: 0x0113, - 0x00450306: 0x0114, - 0x00650306: 0x0115, - 0x00450307: 0x0116, - 0x00650307: 0x0117, - 0x00450328: 0x0118, - 0x00650328: 0x0119, - 0x0045030C: 0x011A, - 0x0065030C: 0x011B, - 0x00470302: 0x011C, - 0x00670302: 0x011D, - 0x00470306: 0x011E, - 0x00670306: 0x011F, - 0x00470307: 0x0120, - 0x00670307: 0x0121, - 0x00470327: 0x0122, - 0x00670327: 0x0123, - 0x00480302: 0x0124, - 0x00680302: 0x0125, - 0x00490303: 0x0128, - 0x00690303: 0x0129, - 0x00490304: 0x012A, - 0x00690304: 0x012B, - 0x00490306: 0x012C, - 0x00690306: 0x012D, - 0x00490328: 0x012E, - 0x00690328: 0x012F, - 0x00490307: 0x0130, - 0x004A0302: 0x0134, - 0x006A0302: 0x0135, - 0x004B0327: 0x0136, - 0x006B0327: 0x0137, - 0x004C0301: 0x0139, - 0x006C0301: 0x013A, - 0x004C0327: 0x013B, - 0x006C0327: 0x013C, - 0x004C030C: 0x013D, - 0x006C030C: 0x013E, - 0x004E0301: 0x0143, - 0x006E0301: 0x0144, - 0x004E0327: 0x0145, - 0x006E0327: 0x0146, - 0x004E030C: 0x0147, - 0x006E030C: 0x0148, - 0x004F0304: 0x014C, - 0x006F0304: 0x014D, - 0x004F0306: 0x014E, - 0x006F0306: 0x014F, - 0x004F030B: 0x0150, - 0x006F030B: 0x0151, - 0x00520301: 0x0154, - 0x00720301: 0x0155, - 0x00520327: 0x0156, - 0x00720327: 0x0157, - 0x0052030C: 0x0158, - 0x0072030C: 0x0159, - 0x00530301: 0x015A, - 0x00730301: 0x015B, - 0x00530302: 0x015C, - 0x00730302: 0x015D, - 0x00530327: 0x015E, - 0x00730327: 0x015F, - 0x0053030C: 0x0160, - 0x0073030C: 0x0161, - 0x00540327: 0x0162, - 0x00740327: 0x0163, - 0x0054030C: 0x0164, - 0x0074030C: 0x0165, - 0x00550303: 0x0168, - 0x00750303: 0x0169, - 0x00550304: 0x016A, - 0x00750304: 0x016B, - 0x00550306: 0x016C, - 0x00750306: 0x016D, - 0x0055030A: 0x016E, - 0x0075030A: 0x016F, - 0x0055030B: 0x0170, - 0x0075030B: 0x0171, - 0x00550328: 0x0172, - 0x00750328: 0x0173, - 0x00570302: 0x0174, - 0x00770302: 0x0175, - 0x00590302: 0x0176, - 0x00790302: 0x0177, - 0x00590308: 0x0178, - 0x005A0301: 0x0179, - 0x007A0301: 0x017A, - 0x005A0307: 0x017B, - 0x007A0307: 0x017C, - 0x005A030C: 0x017D, - 0x007A030C: 0x017E, - 0x004F031B: 0x01A0, - 0x006F031B: 0x01A1, - 0x0055031B: 0x01AF, - 0x0075031B: 0x01B0, - 0x0041030C: 0x01CD, - 0x0061030C: 0x01CE, - 0x0049030C: 0x01CF, - 0x0069030C: 0x01D0, - 0x004F030C: 0x01D1, - 0x006F030C: 0x01D2, - 0x0055030C: 0x01D3, - 0x0075030C: 0x01D4, - 0x00DC0304: 0x01D5, - 0x00FC0304: 0x01D6, - 0x00DC0301: 0x01D7, - 0x00FC0301: 0x01D8, - 0x00DC030C: 0x01D9, - 0x00FC030C: 0x01DA, - 0x00DC0300: 0x01DB, - 0x00FC0300: 0x01DC, - 0x00C40304: 0x01DE, - 0x00E40304: 0x01DF, - 0x02260304: 0x01E0, - 0x02270304: 0x01E1, - 0x00C60304: 0x01E2, - 0x00E60304: 0x01E3, - 0x0047030C: 0x01E6, - 0x0067030C: 0x01E7, - 0x004B030C: 0x01E8, - 0x006B030C: 0x01E9, - 0x004F0328: 0x01EA, - 0x006F0328: 0x01EB, - 0x01EA0304: 0x01EC, - 0x01EB0304: 0x01ED, - 0x01B7030C: 0x01EE, - 0x0292030C: 0x01EF, - 0x006A030C: 0x01F0, - 0x00470301: 0x01F4, - 0x00670301: 0x01F5, - 0x004E0300: 0x01F8, - 0x006E0300: 0x01F9, - 0x00C50301: 0x01FA, - 0x00E50301: 0x01FB, - 0x00C60301: 0x01FC, - 0x00E60301: 0x01FD, - 0x00D80301: 0x01FE, - 0x00F80301: 0x01FF, - 0x0041030F: 0x0200, - 0x0061030F: 0x0201, - 0x00410311: 0x0202, - 0x00610311: 0x0203, - 0x0045030F: 0x0204, - 0x0065030F: 0x0205, - 0x00450311: 0x0206, - 0x00650311: 0x0207, - 0x0049030F: 0x0208, - 0x0069030F: 0x0209, - 0x00490311: 0x020A, - 0x00690311: 0x020B, - 0x004F030F: 0x020C, - 0x006F030F: 0x020D, - 0x004F0311: 0x020E, - 0x006F0311: 0x020F, - 0x0052030F: 0x0210, - 0x0072030F: 0x0211, - 0x00520311: 0x0212, - 0x00720311: 0x0213, - 0x0055030F: 0x0214, - 0x0075030F: 0x0215, - 0x00550311: 0x0216, - 0x00750311: 0x0217, - 0x00530326: 0x0218, - 0x00730326: 0x0219, - 0x00540326: 0x021A, - 0x00740326: 0x021B, - 0x0048030C: 0x021E, - 0x0068030C: 0x021F, - 0x00410307: 0x0226, - 0x00610307: 0x0227, - 0x00450327: 0x0228, - 0x00650327: 0x0229, - 0x00D60304: 0x022A, - 0x00F60304: 0x022B, - 0x00D50304: 0x022C, - 0x00F50304: 0x022D, - 0x004F0307: 0x022E, - 0x006F0307: 0x022F, - 0x022E0304: 0x0230, - 0x022F0304: 0x0231, - 0x00590304: 0x0232, - 0x00790304: 0x0233, - 0x00A80301: 0x0385, - 0x03910301: 0x0386, - 0x03950301: 0x0388, - 0x03970301: 0x0389, - 0x03990301: 0x038A, - 0x039F0301: 0x038C, - 0x03A50301: 0x038E, - 0x03A90301: 0x038F, - 0x03CA0301: 0x0390, - 0x03990308: 0x03AA, - 0x03A50308: 0x03AB, - 0x03B10301: 0x03AC, - 0x03B50301: 0x03AD, - 0x03B70301: 0x03AE, - 0x03B90301: 0x03AF, - 0x03CB0301: 0x03B0, - 0x03B90308: 0x03CA, - 0x03C50308: 0x03CB, - 0x03BF0301: 0x03CC, - 0x03C50301: 0x03CD, - 0x03C90301: 0x03CE, - 0x03D20301: 0x03D3, - 0x03D20308: 0x03D4, - 0x04150300: 0x0400, - 0x04150308: 0x0401, - 0x04130301: 0x0403, - 0x04060308: 0x0407, - 0x041A0301: 0x040C, - 0x04180300: 0x040D, - 0x04230306: 0x040E, - 0x04180306: 0x0419, - 0x04380306: 0x0439, - 0x04350300: 0x0450, - 0x04350308: 0x0451, - 0x04330301: 0x0453, - 0x04560308: 0x0457, - 0x043A0301: 0x045C, - 0x04380300: 0x045D, - 0x04430306: 0x045E, - 0x0474030F: 0x0476, - 0x0475030F: 0x0477, - 0x04160306: 0x04C1, - 0x04360306: 0x04C2, - 0x04100306: 0x04D0, - 0x04300306: 0x04D1, - 0x04100308: 0x04D2, - 0x04300308: 0x04D3, - 0x04150306: 0x04D6, - 0x04350306: 0x04D7, - 0x04D80308: 0x04DA, - 0x04D90308: 0x04DB, - 0x04160308: 0x04DC, - 0x04360308: 0x04DD, - 0x04170308: 0x04DE, - 0x04370308: 0x04DF, - 0x04180304: 0x04E2, - 0x04380304: 0x04E3, - 0x04180308: 0x04E4, - 0x04380308: 0x04E5, - 0x041E0308: 0x04E6, - 0x043E0308: 0x04E7, - 0x04E80308: 0x04EA, - 0x04E90308: 0x04EB, - 0x042D0308: 0x04EC, - 0x044D0308: 0x04ED, - 0x04230304: 0x04EE, - 0x04430304: 0x04EF, - 0x04230308: 0x04F0, - 0x04430308: 0x04F1, - 0x0423030B: 0x04F2, - 0x0443030B: 0x04F3, - 0x04270308: 0x04F4, - 0x04470308: 0x04F5, - 0x042B0308: 0x04F8, - 0x044B0308: 0x04F9, - 0x06270653: 0x0622, - 0x06270654: 0x0623, - 0x06480654: 0x0624, - 0x06270655: 0x0625, - 0x064A0654: 0x0626, - 0x06D50654: 0x06C0, - 0x06C10654: 0x06C2, - 0x06D20654: 0x06D3, - 0x0928093C: 0x0929, - 0x0930093C: 0x0931, - 0x0933093C: 0x0934, - 0x09C709BE: 0x09CB, - 0x09C709D7: 0x09CC, - 0x0B470B56: 0x0B48, - 0x0B470B3E: 0x0B4B, - 0x0B470B57: 0x0B4C, - 0x0B920BD7: 0x0B94, - 0x0BC60BBE: 0x0BCA, - 0x0BC70BBE: 0x0BCB, - 0x0BC60BD7: 0x0BCC, - 0x0C460C56: 0x0C48, - 0x0CBF0CD5: 0x0CC0, - 0x0CC60CD5: 0x0CC7, - 0x0CC60CD6: 0x0CC8, - 0x0CC60CC2: 0x0CCA, - 0x0CCA0CD5: 0x0CCB, - 0x0D460D3E: 0x0D4A, - 0x0D470D3E: 0x0D4B, - 0x0D460D57: 0x0D4C, - 0x0DD90DCA: 0x0DDA, - 0x0DD90DCF: 0x0DDC, - 0x0DDC0DCA: 0x0DDD, - 0x0DD90DDF: 0x0DDE, - 0x1025102E: 0x1026, - 0x1B051B35: 0x1B06, - 0x1B071B35: 0x1B08, - 0x1B091B35: 0x1B0A, - 0x1B0B1B35: 0x1B0C, - 0x1B0D1B35: 0x1B0E, - 0x1B111B35: 0x1B12, - 0x1B3A1B35: 0x1B3B, - 0x1B3C1B35: 0x1B3D, - 0x1B3E1B35: 0x1B40, - 0x1B3F1B35: 0x1B41, - 0x1B421B35: 0x1B43, - 0x00410325: 0x1E00, - 0x00610325: 0x1E01, - 0x00420307: 0x1E02, - 0x00620307: 0x1E03, - 0x00420323: 0x1E04, - 0x00620323: 0x1E05, - 0x00420331: 0x1E06, - 0x00620331: 0x1E07, - 0x00C70301: 0x1E08, - 0x00E70301: 0x1E09, - 0x00440307: 0x1E0A, - 0x00640307: 0x1E0B, - 0x00440323: 0x1E0C, - 0x00640323: 0x1E0D, - 0x00440331: 0x1E0E, - 0x00640331: 0x1E0F, - 0x00440327: 0x1E10, - 0x00640327: 0x1E11, - 0x0044032D: 0x1E12, - 0x0064032D: 0x1E13, - 0x01120300: 0x1E14, - 0x01130300: 0x1E15, - 0x01120301: 0x1E16, - 0x01130301: 0x1E17, - 0x0045032D: 0x1E18, - 0x0065032D: 0x1E19, - 0x00450330: 0x1E1A, - 0x00650330: 0x1E1B, - 0x02280306: 0x1E1C, - 0x02290306: 0x1E1D, - 0x00460307: 0x1E1E, - 0x00660307: 0x1E1F, - 0x00470304: 0x1E20, - 0x00670304: 0x1E21, - 0x00480307: 0x1E22, - 0x00680307: 0x1E23, - 0x00480323: 0x1E24, - 0x00680323: 0x1E25, - 0x00480308: 0x1E26, - 0x00680308: 0x1E27, - 0x00480327: 0x1E28, - 0x00680327: 0x1E29, - 0x0048032E: 0x1E2A, - 0x0068032E: 0x1E2B, - 0x00490330: 0x1E2C, - 0x00690330: 0x1E2D, - 0x00CF0301: 0x1E2E, - 0x00EF0301: 0x1E2F, - 0x004B0301: 0x1E30, - 0x006B0301: 0x1E31, - 0x004B0323: 0x1E32, - 0x006B0323: 0x1E33, - 0x004B0331: 0x1E34, - 0x006B0331: 0x1E35, - 0x004C0323: 0x1E36, - 0x006C0323: 0x1E37, - 0x1E360304: 0x1E38, - 0x1E370304: 0x1E39, - 0x004C0331: 0x1E3A, - 0x006C0331: 0x1E3B, - 0x004C032D: 0x1E3C, - 0x006C032D: 0x1E3D, - 0x004D0301: 0x1E3E, - 0x006D0301: 0x1E3F, - 0x004D0307: 0x1E40, - 0x006D0307: 0x1E41, - 0x004D0323: 0x1E42, - 0x006D0323: 0x1E43, - 0x004E0307: 0x1E44, - 0x006E0307: 0x1E45, - 0x004E0323: 0x1E46, - 0x006E0323: 0x1E47, - 0x004E0331: 0x1E48, - 0x006E0331: 0x1E49, - 0x004E032D: 0x1E4A, - 0x006E032D: 0x1E4B, - 0x00D50301: 0x1E4C, - 0x00F50301: 0x1E4D, - 0x00D50308: 0x1E4E, - 0x00F50308: 0x1E4F, - 0x014C0300: 0x1E50, - 0x014D0300: 0x1E51, - 0x014C0301: 0x1E52, - 0x014D0301: 0x1E53, - 0x00500301: 0x1E54, - 0x00700301: 0x1E55, - 0x00500307: 0x1E56, - 0x00700307: 0x1E57, - 0x00520307: 0x1E58, - 0x00720307: 0x1E59, - 0x00520323: 0x1E5A, - 0x00720323: 0x1E5B, - 0x1E5A0304: 0x1E5C, - 0x1E5B0304: 0x1E5D, - 0x00520331: 0x1E5E, - 0x00720331: 0x1E5F, - 0x00530307: 0x1E60, - 0x00730307: 0x1E61, - 0x00530323: 0x1E62, - 0x00730323: 0x1E63, - 0x015A0307: 0x1E64, - 0x015B0307: 0x1E65, - 0x01600307: 0x1E66, - 0x01610307: 0x1E67, - 0x1E620307: 0x1E68, - 0x1E630307: 0x1E69, - 0x00540307: 0x1E6A, - 0x00740307: 0x1E6B, - 0x00540323: 0x1E6C, - 0x00740323: 0x1E6D, - 0x00540331: 0x1E6E, - 0x00740331: 0x1E6F, - 0x0054032D: 0x1E70, - 0x0074032D: 0x1E71, - 0x00550324: 0x1E72, - 0x00750324: 0x1E73, - 0x00550330: 0x1E74, - 0x00750330: 0x1E75, - 0x0055032D: 0x1E76, - 0x0075032D: 0x1E77, - 0x01680301: 0x1E78, - 0x01690301: 0x1E79, - 0x016A0308: 0x1E7A, - 0x016B0308: 0x1E7B, - 0x00560303: 0x1E7C, - 0x00760303: 0x1E7D, - 0x00560323: 0x1E7E, - 0x00760323: 0x1E7F, - 0x00570300: 0x1E80, - 0x00770300: 0x1E81, - 0x00570301: 0x1E82, - 0x00770301: 0x1E83, - 0x00570308: 0x1E84, - 0x00770308: 0x1E85, - 0x00570307: 0x1E86, - 0x00770307: 0x1E87, - 0x00570323: 0x1E88, - 0x00770323: 0x1E89, - 0x00580307: 0x1E8A, - 0x00780307: 0x1E8B, - 0x00580308: 0x1E8C, - 0x00780308: 0x1E8D, - 0x00590307: 0x1E8E, - 0x00790307: 0x1E8F, - 0x005A0302: 0x1E90, - 0x007A0302: 0x1E91, - 0x005A0323: 0x1E92, - 0x007A0323: 0x1E93, - 0x005A0331: 0x1E94, - 0x007A0331: 0x1E95, - 0x00680331: 0x1E96, - 0x00740308: 0x1E97, - 0x0077030A: 0x1E98, - 0x0079030A: 0x1E99, - 0x017F0307: 0x1E9B, - 0x00410323: 0x1EA0, - 0x00610323: 0x1EA1, - 0x00410309: 0x1EA2, - 0x00610309: 0x1EA3, - 0x00C20301: 0x1EA4, - 0x00E20301: 0x1EA5, - 0x00C20300: 0x1EA6, - 0x00E20300: 0x1EA7, - 0x00C20309: 0x1EA8, - 0x00E20309: 0x1EA9, - 0x00C20303: 0x1EAA, - 0x00E20303: 0x1EAB, - 0x1EA00302: 0x1EAC, - 0x1EA10302: 0x1EAD, - 0x01020301: 0x1EAE, - 0x01030301: 0x1EAF, - 0x01020300: 0x1EB0, - 0x01030300: 0x1EB1, - 0x01020309: 0x1EB2, - 0x01030309: 0x1EB3, - 0x01020303: 0x1EB4, - 0x01030303: 0x1EB5, - 0x1EA00306: 0x1EB6, - 0x1EA10306: 0x1EB7, - 0x00450323: 0x1EB8, - 0x00650323: 0x1EB9, - 0x00450309: 0x1EBA, - 0x00650309: 0x1EBB, - 0x00450303: 0x1EBC, - 0x00650303: 0x1EBD, - 0x00CA0301: 0x1EBE, - 0x00EA0301: 0x1EBF, - 0x00CA0300: 0x1EC0, - 0x00EA0300: 0x1EC1, - 0x00CA0309: 0x1EC2, - 0x00EA0309: 0x1EC3, - 0x00CA0303: 0x1EC4, - 0x00EA0303: 0x1EC5, - 0x1EB80302: 0x1EC6, - 0x1EB90302: 0x1EC7, - 0x00490309: 0x1EC8, - 0x00690309: 0x1EC9, - 0x00490323: 0x1ECA, - 0x00690323: 0x1ECB, - 0x004F0323: 0x1ECC, - 0x006F0323: 0x1ECD, - 0x004F0309: 0x1ECE, - 0x006F0309: 0x1ECF, - 0x00D40301: 0x1ED0, - 0x00F40301: 0x1ED1, - 0x00D40300: 0x1ED2, - 0x00F40300: 0x1ED3, - 0x00D40309: 0x1ED4, - 0x00F40309: 0x1ED5, - 0x00D40303: 0x1ED6, - 0x00F40303: 0x1ED7, - 0x1ECC0302: 0x1ED8, - 0x1ECD0302: 0x1ED9, - 0x01A00301: 0x1EDA, - 0x01A10301: 0x1EDB, - 0x01A00300: 0x1EDC, - 0x01A10300: 0x1EDD, - 0x01A00309: 0x1EDE, - 0x01A10309: 0x1EDF, - 0x01A00303: 0x1EE0, - 0x01A10303: 0x1EE1, - 0x01A00323: 0x1EE2, - 0x01A10323: 0x1EE3, - 0x00550323: 0x1EE4, - 0x00750323: 0x1EE5, - 0x00550309: 0x1EE6, - 0x00750309: 0x1EE7, - 0x01AF0301: 0x1EE8, - 0x01B00301: 0x1EE9, - 0x01AF0300: 0x1EEA, - 0x01B00300: 0x1EEB, - 0x01AF0309: 0x1EEC, - 0x01B00309: 0x1EED, - 0x01AF0303: 0x1EEE, - 0x01B00303: 0x1EEF, - 0x01AF0323: 0x1EF0, - 0x01B00323: 0x1EF1, - 0x00590300: 0x1EF2, - 0x00790300: 0x1EF3, - 0x00590323: 0x1EF4, - 0x00790323: 0x1EF5, - 0x00590309: 0x1EF6, - 0x00790309: 0x1EF7, - 0x00590303: 0x1EF8, - 0x00790303: 0x1EF9, - 0x03B10313: 0x1F00, - 0x03B10314: 0x1F01, - 0x1F000300: 0x1F02, - 0x1F010300: 0x1F03, - 0x1F000301: 0x1F04, - 0x1F010301: 0x1F05, - 0x1F000342: 0x1F06, - 0x1F010342: 0x1F07, - 0x03910313: 0x1F08, - 0x03910314: 0x1F09, - 0x1F080300: 0x1F0A, - 0x1F090300: 0x1F0B, - 0x1F080301: 0x1F0C, - 0x1F090301: 0x1F0D, - 0x1F080342: 0x1F0E, - 0x1F090342: 0x1F0F, - 0x03B50313: 0x1F10, - 0x03B50314: 0x1F11, - 0x1F100300: 0x1F12, - 0x1F110300: 0x1F13, - 0x1F100301: 0x1F14, - 0x1F110301: 0x1F15, - 0x03950313: 0x1F18, - 0x03950314: 0x1F19, - 0x1F180300: 0x1F1A, - 0x1F190300: 0x1F1B, - 0x1F180301: 0x1F1C, - 0x1F190301: 0x1F1D, - 0x03B70313: 0x1F20, - 0x03B70314: 0x1F21, - 0x1F200300: 0x1F22, - 0x1F210300: 0x1F23, - 0x1F200301: 0x1F24, - 0x1F210301: 0x1F25, - 0x1F200342: 0x1F26, - 0x1F210342: 0x1F27, - 0x03970313: 0x1F28, - 0x03970314: 0x1F29, - 0x1F280300: 0x1F2A, - 0x1F290300: 0x1F2B, - 0x1F280301: 0x1F2C, - 0x1F290301: 0x1F2D, - 0x1F280342: 0x1F2E, - 0x1F290342: 0x1F2F, - 0x03B90313: 0x1F30, - 0x03B90314: 0x1F31, - 0x1F300300: 0x1F32, - 0x1F310300: 0x1F33, - 0x1F300301: 0x1F34, - 0x1F310301: 0x1F35, - 0x1F300342: 0x1F36, - 0x1F310342: 0x1F37, - 0x03990313: 0x1F38, - 0x03990314: 0x1F39, - 0x1F380300: 0x1F3A, - 0x1F390300: 0x1F3B, - 0x1F380301: 0x1F3C, - 0x1F390301: 0x1F3D, - 0x1F380342: 0x1F3E, - 0x1F390342: 0x1F3F, - 0x03BF0313: 0x1F40, - 0x03BF0314: 0x1F41, - 0x1F400300: 0x1F42, - 0x1F410300: 0x1F43, - 0x1F400301: 0x1F44, - 0x1F410301: 0x1F45, - 0x039F0313: 0x1F48, - 0x039F0314: 0x1F49, - 0x1F480300: 0x1F4A, - 0x1F490300: 0x1F4B, - 0x1F480301: 0x1F4C, - 0x1F490301: 0x1F4D, - 0x03C50313: 0x1F50, - 0x03C50314: 0x1F51, - 0x1F500300: 0x1F52, - 0x1F510300: 0x1F53, - 0x1F500301: 0x1F54, - 0x1F510301: 0x1F55, - 0x1F500342: 0x1F56, - 0x1F510342: 0x1F57, - 0x03A50314: 0x1F59, - 0x1F590300: 0x1F5B, - 0x1F590301: 0x1F5D, - 0x1F590342: 0x1F5F, - 0x03C90313: 0x1F60, - 0x03C90314: 0x1F61, - 0x1F600300: 0x1F62, - 0x1F610300: 0x1F63, - 0x1F600301: 0x1F64, - 0x1F610301: 0x1F65, - 0x1F600342: 0x1F66, - 0x1F610342: 0x1F67, - 0x03A90313: 0x1F68, - 0x03A90314: 0x1F69, - 0x1F680300: 0x1F6A, - 0x1F690300: 0x1F6B, - 0x1F680301: 0x1F6C, - 0x1F690301: 0x1F6D, - 0x1F680342: 0x1F6E, - 0x1F690342: 0x1F6F, - 0x03B10300: 0x1F70, - 0x03B50300: 0x1F72, - 0x03B70300: 0x1F74, - 0x03B90300: 0x1F76, - 0x03BF0300: 0x1F78, - 0x03C50300: 0x1F7A, - 0x03C90300: 0x1F7C, - 0x1F000345: 0x1F80, - 0x1F010345: 0x1F81, - 0x1F020345: 0x1F82, - 0x1F030345: 0x1F83, - 0x1F040345: 0x1F84, - 0x1F050345: 0x1F85, - 0x1F060345: 0x1F86, - 0x1F070345: 0x1F87, - 0x1F080345: 0x1F88, - 0x1F090345: 0x1F89, - 0x1F0A0345: 0x1F8A, - 0x1F0B0345: 0x1F8B, - 0x1F0C0345: 0x1F8C, - 0x1F0D0345: 0x1F8D, - 0x1F0E0345: 0x1F8E, - 0x1F0F0345: 0x1F8F, - 0x1F200345: 0x1F90, - 0x1F210345: 0x1F91, - 0x1F220345: 0x1F92, - 0x1F230345: 0x1F93, - 0x1F240345: 0x1F94, - 0x1F250345: 0x1F95, - 0x1F260345: 0x1F96, - 0x1F270345: 0x1F97, - 0x1F280345: 0x1F98, - 0x1F290345: 0x1F99, - 0x1F2A0345: 0x1F9A, - 0x1F2B0345: 0x1F9B, - 0x1F2C0345: 0x1F9C, - 0x1F2D0345: 0x1F9D, - 0x1F2E0345: 0x1F9E, - 0x1F2F0345: 0x1F9F, - 0x1F600345: 0x1FA0, - 0x1F610345: 0x1FA1, - 0x1F620345: 0x1FA2, - 0x1F630345: 0x1FA3, - 0x1F640345: 0x1FA4, - 0x1F650345: 0x1FA5, - 0x1F660345: 0x1FA6, - 0x1F670345: 0x1FA7, - 0x1F680345: 0x1FA8, - 0x1F690345: 0x1FA9, - 0x1F6A0345: 0x1FAA, - 0x1F6B0345: 0x1FAB, - 0x1F6C0345: 0x1FAC, - 0x1F6D0345: 0x1FAD, - 0x1F6E0345: 0x1FAE, - 0x1F6F0345: 0x1FAF, - 0x03B10306: 0x1FB0, - 0x03B10304: 0x1FB1, - 0x1F700345: 0x1FB2, - 0x03B10345: 0x1FB3, - 0x03AC0345: 0x1FB4, - 0x03B10342: 0x1FB6, - 0x1FB60345: 0x1FB7, - 0x03910306: 0x1FB8, - 0x03910304: 0x1FB9, - 0x03910300: 0x1FBA, - 0x03910345: 0x1FBC, - 0x00A80342: 0x1FC1, - 0x1F740345: 0x1FC2, - 0x03B70345: 0x1FC3, - 0x03AE0345: 0x1FC4, - 0x03B70342: 0x1FC6, - 0x1FC60345: 0x1FC7, - 0x03950300: 0x1FC8, - 0x03970300: 0x1FCA, - 0x03970345: 0x1FCC, - 0x1FBF0300: 0x1FCD, - 0x1FBF0301: 0x1FCE, - 0x1FBF0342: 0x1FCF, - 0x03B90306: 0x1FD0, - 0x03B90304: 0x1FD1, - 0x03CA0300: 0x1FD2, - 0x03B90342: 0x1FD6, - 0x03CA0342: 0x1FD7, - 0x03990306: 0x1FD8, - 0x03990304: 0x1FD9, - 0x03990300: 0x1FDA, - 0x1FFE0300: 0x1FDD, - 0x1FFE0301: 0x1FDE, - 0x1FFE0342: 0x1FDF, - 0x03C50306: 0x1FE0, - 0x03C50304: 0x1FE1, - 0x03CB0300: 0x1FE2, - 0x03C10313: 0x1FE4, - 0x03C10314: 0x1FE5, - 0x03C50342: 0x1FE6, - 0x03CB0342: 0x1FE7, - 0x03A50306: 0x1FE8, - 0x03A50304: 0x1FE9, - 0x03A50300: 0x1FEA, - 0x03A10314: 0x1FEC, - 0x00A80300: 0x1FED, - 0x1F7C0345: 0x1FF2, - 0x03C90345: 0x1FF3, - 0x03CE0345: 0x1FF4, - 0x03C90342: 0x1FF6, - 0x1FF60345: 0x1FF7, - 0x039F0300: 0x1FF8, - 0x03A90300: 0x1FFA, - 0x03A90345: 0x1FFC, - 0x21900338: 0x219A, - 0x21920338: 0x219B, - 0x21940338: 0x21AE, - 0x21D00338: 0x21CD, - 0x21D40338: 0x21CE, - 0x21D20338: 0x21CF, - 0x22030338: 0x2204, - 0x22080338: 0x2209, - 0x220B0338: 0x220C, - 0x22230338: 0x2224, - 0x22250338: 0x2226, - 0x223C0338: 0x2241, - 0x22430338: 0x2244, - 0x22450338: 0x2247, - 0x22480338: 0x2249, - 0x003D0338: 0x2260, - 0x22610338: 0x2262, - 0x224D0338: 0x226D, - 0x003C0338: 0x226E, - 0x003E0338: 0x226F, - 0x22640338: 0x2270, - 0x22650338: 0x2271, - 0x22720338: 0x2274, - 0x22730338: 0x2275, - 0x22760338: 0x2278, - 0x22770338: 0x2279, - 0x227A0338: 0x2280, - 0x227B0338: 0x2281, - 0x22820338: 0x2284, - 0x22830338: 0x2285, - 0x22860338: 0x2288, - 0x22870338: 0x2289, - 0x22A20338: 0x22AC, - 0x22A80338: 0x22AD, - 0x22A90338: 0x22AE, - 0x22AB0338: 0x22AF, - 0x227C0338: 0x22E0, - 0x227D0338: 0x22E1, - 0x22910338: 0x22E2, - 0x22920338: 0x22E3, - 0x22B20338: 0x22EA, - 0x22B30338: 0x22EB, - 0x22B40338: 0x22EC, - 0x22B50338: 0x22ED, - 0x304B3099: 0x304C, - 0x304D3099: 0x304E, - 0x304F3099: 0x3050, - 0x30513099: 0x3052, - 0x30533099: 0x3054, - 0x30553099: 0x3056, - 0x30573099: 0x3058, - 0x30593099: 0x305A, - 0x305B3099: 0x305C, - 0x305D3099: 0x305E, - 0x305F3099: 0x3060, - 0x30613099: 0x3062, - 0x30643099: 0x3065, - 0x30663099: 0x3067, - 0x30683099: 0x3069, - 0x306F3099: 0x3070, - 0x306F309A: 0x3071, - 0x30723099: 0x3073, - 0x3072309A: 0x3074, - 0x30753099: 0x3076, - 0x3075309A: 0x3077, - 0x30783099: 0x3079, - 0x3078309A: 0x307A, - 0x307B3099: 0x307C, - 0x307B309A: 0x307D, - 0x30463099: 0x3094, - 0x309D3099: 0x309E, - 0x30AB3099: 0x30AC, - 0x30AD3099: 0x30AE, - 0x30AF3099: 0x30B0, - 0x30B13099: 0x30B2, - 0x30B33099: 0x30B4, - 0x30B53099: 0x30B6, - 0x30B73099: 0x30B8, - 0x30B93099: 0x30BA, - 0x30BB3099: 0x30BC, - 0x30BD3099: 0x30BE, - 0x30BF3099: 0x30C0, - 0x30C13099: 0x30C2, - 0x30C43099: 0x30C5, - 0x30C63099: 0x30C7, - 0x30C83099: 0x30C9, - 0x30CF3099: 0x30D0, - 0x30CF309A: 0x30D1, - 0x30D23099: 0x30D3, - 0x30D2309A: 0x30D4, - 0x30D53099: 0x30D6, - 0x30D5309A: 0x30D7, - 0x30D83099: 0x30D9, - 0x30D8309A: 0x30DA, - 0x30DB3099: 0x30DC, - 0x30DB309A: 0x30DD, - 0x30A63099: 0x30F4, - 0x30EF3099: 0x30F7, - 0x30F03099: 0x30F8, - 0x30F13099: 0x30F9, - 0x30F23099: 0x30FA, - 0x30FD3099: 0x30FE, - 0x109910BA: 0x1109A, - 0x109B10BA: 0x1109C, - 0x10A510BA: 0x110AB, - 0x11311127: 0x1112E, - 0x11321127: 0x1112F, - 0x1347133E: 0x1134B, - 0x13471357: 0x1134C, - 0x14B914BA: 0x114BB, - 0x14B914B0: 0x114BC, - 0x14B914BD: 0x114BE, - 0x15B815AF: 0x115BA, - 0x15B915AF: 0x115BB, -} +var recompMap map[uint32]rune +var recompMapOnce sync.Once -// Total size of tables: 53KB (54226 bytes) +const recompMapPacked = "" + + "\x00A\x03\x00\x00\x00\x00\xc0" + // 0x00410300: 0x000000C0 + "\x00A\x03\x01\x00\x00\x00\xc1" + // 0x00410301: 0x000000C1 + "\x00A\x03\x02\x00\x00\x00\xc2" + // 0x00410302: 0x000000C2 + "\x00A\x03\x03\x00\x00\x00\xc3" + // 0x00410303: 0x000000C3 + "\x00A\x03\b\x00\x00\x00\xc4" + // 0x00410308: 0x000000C4 + "\x00A\x03\n\x00\x00\x00\xc5" + // 0x0041030A: 0x000000C5 + "\x00C\x03'\x00\x00\x00\xc7" + // 0x00430327: 0x000000C7 + "\x00E\x03\x00\x00\x00\x00\xc8" + // 0x00450300: 0x000000C8 + "\x00E\x03\x01\x00\x00\x00\xc9" + // 0x00450301: 0x000000C9 + "\x00E\x03\x02\x00\x00\x00\xca" + // 0x00450302: 0x000000CA + "\x00E\x03\b\x00\x00\x00\xcb" + // 0x00450308: 0x000000CB + "\x00I\x03\x00\x00\x00\x00\xcc" + // 0x00490300: 0x000000CC + "\x00I\x03\x01\x00\x00\x00\xcd" + // 0x00490301: 0x000000CD + "\x00I\x03\x02\x00\x00\x00\xce" + // 0x00490302: 0x000000CE + "\x00I\x03\b\x00\x00\x00\xcf" + // 0x00490308: 0x000000CF + "\x00N\x03\x03\x00\x00\x00\xd1" + // 0x004E0303: 0x000000D1 + "\x00O\x03\x00\x00\x00\x00\xd2" + // 0x004F0300: 0x000000D2 + "\x00O\x03\x01\x00\x00\x00\xd3" + // 0x004F0301: 0x000000D3 + "\x00O\x03\x02\x00\x00\x00\xd4" + // 0x004F0302: 0x000000D4 + "\x00O\x03\x03\x00\x00\x00\xd5" + // 0x004F0303: 0x000000D5 + "\x00O\x03\b\x00\x00\x00\xd6" + // 0x004F0308: 0x000000D6 + "\x00U\x03\x00\x00\x00\x00\xd9" + // 0x00550300: 0x000000D9 + "\x00U\x03\x01\x00\x00\x00\xda" + // 0x00550301: 0x000000DA + "\x00U\x03\x02\x00\x00\x00\xdb" + // 0x00550302: 0x000000DB + "\x00U\x03\b\x00\x00\x00\xdc" + // 0x00550308: 0x000000DC + "\x00Y\x03\x01\x00\x00\x00\xdd" + // 0x00590301: 0x000000DD + "\x00a\x03\x00\x00\x00\x00\xe0" + // 0x00610300: 0x000000E0 + "\x00a\x03\x01\x00\x00\x00\xe1" + // 0x00610301: 0x000000E1 + "\x00a\x03\x02\x00\x00\x00\xe2" + // 0x00610302: 0x000000E2 + "\x00a\x03\x03\x00\x00\x00\xe3" + // 0x00610303: 0x000000E3 + "\x00a\x03\b\x00\x00\x00\xe4" + // 0x00610308: 0x000000E4 + "\x00a\x03\n\x00\x00\x00\xe5" + // 0x0061030A: 0x000000E5 + "\x00c\x03'\x00\x00\x00\xe7" + // 0x00630327: 0x000000E7 + "\x00e\x03\x00\x00\x00\x00\xe8" + // 0x00650300: 0x000000E8 + "\x00e\x03\x01\x00\x00\x00\xe9" + // 0x00650301: 0x000000E9 + "\x00e\x03\x02\x00\x00\x00\xea" + // 0x00650302: 0x000000EA + "\x00e\x03\b\x00\x00\x00\xeb" + // 0x00650308: 0x000000EB + "\x00i\x03\x00\x00\x00\x00\xec" + // 0x00690300: 0x000000EC + "\x00i\x03\x01\x00\x00\x00\xed" + // 0x00690301: 0x000000ED + "\x00i\x03\x02\x00\x00\x00\xee" + // 0x00690302: 0x000000EE + "\x00i\x03\b\x00\x00\x00\xef" + // 0x00690308: 0x000000EF + "\x00n\x03\x03\x00\x00\x00\xf1" + // 0x006E0303: 0x000000F1 + "\x00o\x03\x00\x00\x00\x00\xf2" + // 0x006F0300: 0x000000F2 + "\x00o\x03\x01\x00\x00\x00\xf3" + // 0x006F0301: 0x000000F3 + "\x00o\x03\x02\x00\x00\x00\xf4" + // 0x006F0302: 0x000000F4 + "\x00o\x03\x03\x00\x00\x00\xf5" + // 0x006F0303: 0x000000F5 + "\x00o\x03\b\x00\x00\x00\xf6" + // 0x006F0308: 0x000000F6 + "\x00u\x03\x00\x00\x00\x00\xf9" + // 0x00750300: 0x000000F9 + "\x00u\x03\x01\x00\x00\x00\xfa" + // 0x00750301: 0x000000FA + "\x00u\x03\x02\x00\x00\x00\xfb" + // 0x00750302: 0x000000FB + "\x00u\x03\b\x00\x00\x00\xfc" + // 0x00750308: 0x000000FC + "\x00y\x03\x01\x00\x00\x00\xfd" + // 0x00790301: 0x000000FD + "\x00y\x03\b\x00\x00\x00\xff" + // 0x00790308: 0x000000FF + "\x00A\x03\x04\x00\x00\x01\x00" + // 0x00410304: 0x00000100 + "\x00a\x03\x04\x00\x00\x01\x01" + // 0x00610304: 0x00000101 + "\x00A\x03\x06\x00\x00\x01\x02" + // 0x00410306: 0x00000102 + "\x00a\x03\x06\x00\x00\x01\x03" + // 0x00610306: 0x00000103 + "\x00A\x03(\x00\x00\x01\x04" + // 0x00410328: 0x00000104 + "\x00a\x03(\x00\x00\x01\x05" + // 0x00610328: 0x00000105 + "\x00C\x03\x01\x00\x00\x01\x06" + // 0x00430301: 0x00000106 + "\x00c\x03\x01\x00\x00\x01\a" + // 0x00630301: 0x00000107 + "\x00C\x03\x02\x00\x00\x01\b" + // 0x00430302: 0x00000108 + "\x00c\x03\x02\x00\x00\x01\t" + // 0x00630302: 0x00000109 + "\x00C\x03\a\x00\x00\x01\n" + // 0x00430307: 0x0000010A + "\x00c\x03\a\x00\x00\x01\v" + // 0x00630307: 0x0000010B + "\x00C\x03\f\x00\x00\x01\f" + // 0x0043030C: 0x0000010C + "\x00c\x03\f\x00\x00\x01\r" + // 0x0063030C: 0x0000010D + "\x00D\x03\f\x00\x00\x01\x0e" + // 0x0044030C: 0x0000010E + "\x00d\x03\f\x00\x00\x01\x0f" + // 0x0064030C: 0x0000010F + "\x00E\x03\x04\x00\x00\x01\x12" + // 0x00450304: 0x00000112 + "\x00e\x03\x04\x00\x00\x01\x13" + // 0x00650304: 0x00000113 + "\x00E\x03\x06\x00\x00\x01\x14" + // 0x00450306: 0x00000114 + "\x00e\x03\x06\x00\x00\x01\x15" + // 0x00650306: 0x00000115 + "\x00E\x03\a\x00\x00\x01\x16" + // 0x00450307: 0x00000116 + "\x00e\x03\a\x00\x00\x01\x17" + // 0x00650307: 0x00000117 + "\x00E\x03(\x00\x00\x01\x18" + // 0x00450328: 0x00000118 + "\x00e\x03(\x00\x00\x01\x19" + // 0x00650328: 0x00000119 + "\x00E\x03\f\x00\x00\x01\x1a" + // 0x0045030C: 0x0000011A + "\x00e\x03\f\x00\x00\x01\x1b" + // 0x0065030C: 0x0000011B + "\x00G\x03\x02\x00\x00\x01\x1c" + // 0x00470302: 0x0000011C + "\x00g\x03\x02\x00\x00\x01\x1d" + // 0x00670302: 0x0000011D + "\x00G\x03\x06\x00\x00\x01\x1e" + // 0x00470306: 0x0000011E + "\x00g\x03\x06\x00\x00\x01\x1f" + // 0x00670306: 0x0000011F + "\x00G\x03\a\x00\x00\x01 " + // 0x00470307: 0x00000120 + "\x00g\x03\a\x00\x00\x01!" + // 0x00670307: 0x00000121 + "\x00G\x03'\x00\x00\x01\"" + // 0x00470327: 0x00000122 + "\x00g\x03'\x00\x00\x01#" + // 0x00670327: 0x00000123 + "\x00H\x03\x02\x00\x00\x01$" + // 0x00480302: 0x00000124 + "\x00h\x03\x02\x00\x00\x01%" + // 0x00680302: 0x00000125 + "\x00I\x03\x03\x00\x00\x01(" + // 0x00490303: 0x00000128 + "\x00i\x03\x03\x00\x00\x01)" + // 0x00690303: 0x00000129 + "\x00I\x03\x04\x00\x00\x01*" + // 0x00490304: 0x0000012A + "\x00i\x03\x04\x00\x00\x01+" + // 0x00690304: 0x0000012B + "\x00I\x03\x06\x00\x00\x01," + // 0x00490306: 0x0000012C + "\x00i\x03\x06\x00\x00\x01-" + // 0x00690306: 0x0000012D + "\x00I\x03(\x00\x00\x01." + // 0x00490328: 0x0000012E + "\x00i\x03(\x00\x00\x01/" + // 0x00690328: 0x0000012F + "\x00I\x03\a\x00\x00\x010" + // 0x00490307: 0x00000130 + "\x00J\x03\x02\x00\x00\x014" + // 0x004A0302: 0x00000134 + "\x00j\x03\x02\x00\x00\x015" + // 0x006A0302: 0x00000135 + "\x00K\x03'\x00\x00\x016" + // 0x004B0327: 0x00000136 + "\x00k\x03'\x00\x00\x017" + // 0x006B0327: 0x00000137 + "\x00L\x03\x01\x00\x00\x019" + // 0x004C0301: 0x00000139 + "\x00l\x03\x01\x00\x00\x01:" + // 0x006C0301: 0x0000013A + "\x00L\x03'\x00\x00\x01;" + // 0x004C0327: 0x0000013B + "\x00l\x03'\x00\x00\x01<" + // 0x006C0327: 0x0000013C + "\x00L\x03\f\x00\x00\x01=" + // 0x004C030C: 0x0000013D + "\x00l\x03\f\x00\x00\x01>" + // 0x006C030C: 0x0000013E + "\x00N\x03\x01\x00\x00\x01C" + // 0x004E0301: 0x00000143 + "\x00n\x03\x01\x00\x00\x01D" + // 0x006E0301: 0x00000144 + "\x00N\x03'\x00\x00\x01E" + // 0x004E0327: 0x00000145 + "\x00n\x03'\x00\x00\x01F" + // 0x006E0327: 0x00000146 + "\x00N\x03\f\x00\x00\x01G" + // 0x004E030C: 0x00000147 + "\x00n\x03\f\x00\x00\x01H" + // 0x006E030C: 0x00000148 + "\x00O\x03\x04\x00\x00\x01L" + // 0x004F0304: 0x0000014C + "\x00o\x03\x04\x00\x00\x01M" + // 0x006F0304: 0x0000014D + "\x00O\x03\x06\x00\x00\x01N" + // 0x004F0306: 0x0000014E + "\x00o\x03\x06\x00\x00\x01O" + // 0x006F0306: 0x0000014F + "\x00O\x03\v\x00\x00\x01P" + // 0x004F030B: 0x00000150 + "\x00o\x03\v\x00\x00\x01Q" + // 0x006F030B: 0x00000151 + "\x00R\x03\x01\x00\x00\x01T" + // 0x00520301: 0x00000154 + "\x00r\x03\x01\x00\x00\x01U" + // 0x00720301: 0x00000155 + "\x00R\x03'\x00\x00\x01V" + // 0x00520327: 0x00000156 + "\x00r\x03'\x00\x00\x01W" + // 0x00720327: 0x00000157 + "\x00R\x03\f\x00\x00\x01X" + // 0x0052030C: 0x00000158 + "\x00r\x03\f\x00\x00\x01Y" + // 0x0072030C: 0x00000159 + "\x00S\x03\x01\x00\x00\x01Z" + // 0x00530301: 0x0000015A + "\x00s\x03\x01\x00\x00\x01[" + // 0x00730301: 0x0000015B + "\x00S\x03\x02\x00\x00\x01\\" + // 0x00530302: 0x0000015C + "\x00s\x03\x02\x00\x00\x01]" + // 0x00730302: 0x0000015D + "\x00S\x03'\x00\x00\x01^" + // 0x00530327: 0x0000015E + "\x00s\x03'\x00\x00\x01_" + // 0x00730327: 0x0000015F + "\x00S\x03\f\x00\x00\x01`" + // 0x0053030C: 0x00000160 + "\x00s\x03\f\x00\x00\x01a" + // 0x0073030C: 0x00000161 + "\x00T\x03'\x00\x00\x01b" + // 0x00540327: 0x00000162 + "\x00t\x03'\x00\x00\x01c" + // 0x00740327: 0x00000163 + "\x00T\x03\f\x00\x00\x01d" + // 0x0054030C: 0x00000164 + "\x00t\x03\f\x00\x00\x01e" + // 0x0074030C: 0x00000165 + "\x00U\x03\x03\x00\x00\x01h" + // 0x00550303: 0x00000168 + "\x00u\x03\x03\x00\x00\x01i" + // 0x00750303: 0x00000169 + "\x00U\x03\x04\x00\x00\x01j" + // 0x00550304: 0x0000016A + "\x00u\x03\x04\x00\x00\x01k" + // 0x00750304: 0x0000016B + "\x00U\x03\x06\x00\x00\x01l" + // 0x00550306: 0x0000016C + "\x00u\x03\x06\x00\x00\x01m" + // 0x00750306: 0x0000016D + "\x00U\x03\n\x00\x00\x01n" + // 0x0055030A: 0x0000016E + "\x00u\x03\n\x00\x00\x01o" + // 0x0075030A: 0x0000016F + "\x00U\x03\v\x00\x00\x01p" + // 0x0055030B: 0x00000170 + "\x00u\x03\v\x00\x00\x01q" + // 0x0075030B: 0x00000171 + "\x00U\x03(\x00\x00\x01r" + // 0x00550328: 0x00000172 + "\x00u\x03(\x00\x00\x01s" + // 0x00750328: 0x00000173 + "\x00W\x03\x02\x00\x00\x01t" + // 0x00570302: 0x00000174 + "\x00w\x03\x02\x00\x00\x01u" + // 0x00770302: 0x00000175 + "\x00Y\x03\x02\x00\x00\x01v" + // 0x00590302: 0x00000176 + "\x00y\x03\x02\x00\x00\x01w" + // 0x00790302: 0x00000177 + "\x00Y\x03\b\x00\x00\x01x" + // 0x00590308: 0x00000178 + "\x00Z\x03\x01\x00\x00\x01y" + // 0x005A0301: 0x00000179 + "\x00z\x03\x01\x00\x00\x01z" + // 0x007A0301: 0x0000017A + "\x00Z\x03\a\x00\x00\x01{" + // 0x005A0307: 0x0000017B + "\x00z\x03\a\x00\x00\x01|" + // 0x007A0307: 0x0000017C + "\x00Z\x03\f\x00\x00\x01}" + // 0x005A030C: 0x0000017D + "\x00z\x03\f\x00\x00\x01~" + // 0x007A030C: 0x0000017E + "\x00O\x03\x1b\x00\x00\x01\xa0" + // 0x004F031B: 0x000001A0 + "\x00o\x03\x1b\x00\x00\x01\xa1" + // 0x006F031B: 0x000001A1 + "\x00U\x03\x1b\x00\x00\x01\xaf" + // 0x0055031B: 0x000001AF + "\x00u\x03\x1b\x00\x00\x01\xb0" + // 0x0075031B: 0x000001B0 + "\x00A\x03\f\x00\x00\x01\xcd" + // 0x0041030C: 0x000001CD + "\x00a\x03\f\x00\x00\x01\xce" + // 0x0061030C: 0x000001CE + "\x00I\x03\f\x00\x00\x01\xcf" + // 0x0049030C: 0x000001CF + "\x00i\x03\f\x00\x00\x01\xd0" + // 0x0069030C: 0x000001D0 + "\x00O\x03\f\x00\x00\x01\xd1" + // 0x004F030C: 0x000001D1 + "\x00o\x03\f\x00\x00\x01\xd2" + // 0x006F030C: 0x000001D2 + "\x00U\x03\f\x00\x00\x01\xd3" + // 0x0055030C: 0x000001D3 + "\x00u\x03\f\x00\x00\x01\xd4" + // 0x0075030C: 0x000001D4 + "\x00\xdc\x03\x04\x00\x00\x01\xd5" + // 0x00DC0304: 0x000001D5 + "\x00\xfc\x03\x04\x00\x00\x01\xd6" + // 0x00FC0304: 0x000001D6 + "\x00\xdc\x03\x01\x00\x00\x01\xd7" + // 0x00DC0301: 0x000001D7 + "\x00\xfc\x03\x01\x00\x00\x01\xd8" + // 0x00FC0301: 0x000001D8 + "\x00\xdc\x03\f\x00\x00\x01\xd9" + // 0x00DC030C: 0x000001D9 + "\x00\xfc\x03\f\x00\x00\x01\xda" + // 0x00FC030C: 0x000001DA + "\x00\xdc\x03\x00\x00\x00\x01\xdb" + // 0x00DC0300: 0x000001DB + "\x00\xfc\x03\x00\x00\x00\x01\xdc" + // 0x00FC0300: 0x000001DC + "\x00\xc4\x03\x04\x00\x00\x01\xde" + // 0x00C40304: 0x000001DE + "\x00\xe4\x03\x04\x00\x00\x01\xdf" + // 0x00E40304: 0x000001DF + "\x02&\x03\x04\x00\x00\x01\xe0" + // 0x02260304: 0x000001E0 + "\x02'\x03\x04\x00\x00\x01\xe1" + // 0x02270304: 0x000001E1 + "\x00\xc6\x03\x04\x00\x00\x01\xe2" + // 0x00C60304: 0x000001E2 + "\x00\xe6\x03\x04\x00\x00\x01\xe3" + // 0x00E60304: 0x000001E3 + "\x00G\x03\f\x00\x00\x01\xe6" + // 0x0047030C: 0x000001E6 + "\x00g\x03\f\x00\x00\x01\xe7" + // 0x0067030C: 0x000001E7 + "\x00K\x03\f\x00\x00\x01\xe8" + // 0x004B030C: 0x000001E8 + "\x00k\x03\f\x00\x00\x01\xe9" + // 0x006B030C: 0x000001E9 + "\x00O\x03(\x00\x00\x01\xea" + // 0x004F0328: 0x000001EA + "\x00o\x03(\x00\x00\x01\xeb" + // 0x006F0328: 0x000001EB + "\x01\xea\x03\x04\x00\x00\x01\xec" + // 0x01EA0304: 0x000001EC + "\x01\xeb\x03\x04\x00\x00\x01\xed" + // 0x01EB0304: 0x000001ED + "\x01\xb7\x03\f\x00\x00\x01\xee" + // 0x01B7030C: 0x000001EE + "\x02\x92\x03\f\x00\x00\x01\xef" + // 0x0292030C: 0x000001EF + "\x00j\x03\f\x00\x00\x01\xf0" + // 0x006A030C: 0x000001F0 + "\x00G\x03\x01\x00\x00\x01\xf4" + // 0x00470301: 0x000001F4 + "\x00g\x03\x01\x00\x00\x01\xf5" + // 0x00670301: 0x000001F5 + "\x00N\x03\x00\x00\x00\x01\xf8" + // 0x004E0300: 0x000001F8 + "\x00n\x03\x00\x00\x00\x01\xf9" + // 0x006E0300: 0x000001F9 + "\x00\xc5\x03\x01\x00\x00\x01\xfa" + // 0x00C50301: 0x000001FA + "\x00\xe5\x03\x01\x00\x00\x01\xfb" + // 0x00E50301: 0x000001FB + "\x00\xc6\x03\x01\x00\x00\x01\xfc" + // 0x00C60301: 0x000001FC + "\x00\xe6\x03\x01\x00\x00\x01\xfd" + // 0x00E60301: 0x000001FD + "\x00\xd8\x03\x01\x00\x00\x01\xfe" + // 0x00D80301: 0x000001FE + "\x00\xf8\x03\x01\x00\x00\x01\xff" + // 0x00F80301: 0x000001FF + "\x00A\x03\x0f\x00\x00\x02\x00" + // 0x0041030F: 0x00000200 + "\x00a\x03\x0f\x00\x00\x02\x01" + // 0x0061030F: 0x00000201 + "\x00A\x03\x11\x00\x00\x02\x02" + // 0x00410311: 0x00000202 + "\x00a\x03\x11\x00\x00\x02\x03" + // 0x00610311: 0x00000203 + "\x00E\x03\x0f\x00\x00\x02\x04" + // 0x0045030F: 0x00000204 + "\x00e\x03\x0f\x00\x00\x02\x05" + // 0x0065030F: 0x00000205 + "\x00E\x03\x11\x00\x00\x02\x06" + // 0x00450311: 0x00000206 + "\x00e\x03\x11\x00\x00\x02\a" + // 0x00650311: 0x00000207 + "\x00I\x03\x0f\x00\x00\x02\b" + // 0x0049030F: 0x00000208 + "\x00i\x03\x0f\x00\x00\x02\t" + // 0x0069030F: 0x00000209 + "\x00I\x03\x11\x00\x00\x02\n" + // 0x00490311: 0x0000020A + "\x00i\x03\x11\x00\x00\x02\v" + // 0x00690311: 0x0000020B + "\x00O\x03\x0f\x00\x00\x02\f" + // 0x004F030F: 0x0000020C + "\x00o\x03\x0f\x00\x00\x02\r" + // 0x006F030F: 0x0000020D + "\x00O\x03\x11\x00\x00\x02\x0e" + // 0x004F0311: 0x0000020E + "\x00o\x03\x11\x00\x00\x02\x0f" + // 0x006F0311: 0x0000020F + "\x00R\x03\x0f\x00\x00\x02\x10" + // 0x0052030F: 0x00000210 + "\x00r\x03\x0f\x00\x00\x02\x11" + // 0x0072030F: 0x00000211 + "\x00R\x03\x11\x00\x00\x02\x12" + // 0x00520311: 0x00000212 + "\x00r\x03\x11\x00\x00\x02\x13" + // 0x00720311: 0x00000213 + "\x00U\x03\x0f\x00\x00\x02\x14" + // 0x0055030F: 0x00000214 + "\x00u\x03\x0f\x00\x00\x02\x15" + // 0x0075030F: 0x00000215 + "\x00U\x03\x11\x00\x00\x02\x16" + // 0x00550311: 0x00000216 + "\x00u\x03\x11\x00\x00\x02\x17" + // 0x00750311: 0x00000217 + "\x00S\x03&\x00\x00\x02\x18" + // 0x00530326: 0x00000218 + "\x00s\x03&\x00\x00\x02\x19" + // 0x00730326: 0x00000219 + "\x00T\x03&\x00\x00\x02\x1a" + // 0x00540326: 0x0000021A + "\x00t\x03&\x00\x00\x02\x1b" + // 0x00740326: 0x0000021B + "\x00H\x03\f\x00\x00\x02\x1e" + // 0x0048030C: 0x0000021E + "\x00h\x03\f\x00\x00\x02\x1f" + // 0x0068030C: 0x0000021F + "\x00A\x03\a\x00\x00\x02&" + // 0x00410307: 0x00000226 + "\x00a\x03\a\x00\x00\x02'" + // 0x00610307: 0x00000227 + "\x00E\x03'\x00\x00\x02(" + // 0x00450327: 0x00000228 + "\x00e\x03'\x00\x00\x02)" + // 0x00650327: 0x00000229 + "\x00\xd6\x03\x04\x00\x00\x02*" + // 0x00D60304: 0x0000022A + "\x00\xf6\x03\x04\x00\x00\x02+" + // 0x00F60304: 0x0000022B + "\x00\xd5\x03\x04\x00\x00\x02," + // 0x00D50304: 0x0000022C + "\x00\xf5\x03\x04\x00\x00\x02-" + // 0x00F50304: 0x0000022D + "\x00O\x03\a\x00\x00\x02." + // 0x004F0307: 0x0000022E + "\x00o\x03\a\x00\x00\x02/" + // 0x006F0307: 0x0000022F + "\x02.\x03\x04\x00\x00\x020" + // 0x022E0304: 0x00000230 + "\x02/\x03\x04\x00\x00\x021" + // 0x022F0304: 0x00000231 + "\x00Y\x03\x04\x00\x00\x022" + // 0x00590304: 0x00000232 + "\x00y\x03\x04\x00\x00\x023" + // 0x00790304: 0x00000233 + "\x00\xa8\x03\x01\x00\x00\x03\x85" + // 0x00A80301: 0x00000385 + "\x03\x91\x03\x01\x00\x00\x03\x86" + // 0x03910301: 0x00000386 + "\x03\x95\x03\x01\x00\x00\x03\x88" + // 0x03950301: 0x00000388 + "\x03\x97\x03\x01\x00\x00\x03\x89" + // 0x03970301: 0x00000389 + "\x03\x99\x03\x01\x00\x00\x03\x8a" + // 0x03990301: 0x0000038A + "\x03\x9f\x03\x01\x00\x00\x03\x8c" + // 0x039F0301: 0x0000038C + "\x03\xa5\x03\x01\x00\x00\x03\x8e" + // 0x03A50301: 0x0000038E + "\x03\xa9\x03\x01\x00\x00\x03\x8f" + // 0x03A90301: 0x0000038F + "\x03\xca\x03\x01\x00\x00\x03\x90" + // 0x03CA0301: 0x00000390 + "\x03\x99\x03\b\x00\x00\x03\xaa" + // 0x03990308: 0x000003AA + "\x03\xa5\x03\b\x00\x00\x03\xab" + // 0x03A50308: 0x000003AB + "\x03\xb1\x03\x01\x00\x00\x03\xac" + // 0x03B10301: 0x000003AC + "\x03\xb5\x03\x01\x00\x00\x03\xad" + // 0x03B50301: 0x000003AD + "\x03\xb7\x03\x01\x00\x00\x03\xae" + // 0x03B70301: 0x000003AE + "\x03\xb9\x03\x01\x00\x00\x03\xaf" + // 0x03B90301: 0x000003AF + "\x03\xcb\x03\x01\x00\x00\x03\xb0" + // 0x03CB0301: 0x000003B0 + "\x03\xb9\x03\b\x00\x00\x03\xca" + // 0x03B90308: 0x000003CA + "\x03\xc5\x03\b\x00\x00\x03\xcb" + // 0x03C50308: 0x000003CB + "\x03\xbf\x03\x01\x00\x00\x03\xcc" + // 0x03BF0301: 0x000003CC + "\x03\xc5\x03\x01\x00\x00\x03\xcd" + // 0x03C50301: 0x000003CD + "\x03\xc9\x03\x01\x00\x00\x03\xce" + // 0x03C90301: 0x000003CE + "\x03\xd2\x03\x01\x00\x00\x03\xd3" + // 0x03D20301: 0x000003D3 + "\x03\xd2\x03\b\x00\x00\x03\xd4" + // 0x03D20308: 0x000003D4 + "\x04\x15\x03\x00\x00\x00\x04\x00" + // 0x04150300: 0x00000400 + "\x04\x15\x03\b\x00\x00\x04\x01" + // 0x04150308: 0x00000401 + "\x04\x13\x03\x01\x00\x00\x04\x03" + // 0x04130301: 0x00000403 + "\x04\x06\x03\b\x00\x00\x04\a" + // 0x04060308: 0x00000407 + "\x04\x1a\x03\x01\x00\x00\x04\f" + // 0x041A0301: 0x0000040C + "\x04\x18\x03\x00\x00\x00\x04\r" + // 0x04180300: 0x0000040D + "\x04#\x03\x06\x00\x00\x04\x0e" + // 0x04230306: 0x0000040E + "\x04\x18\x03\x06\x00\x00\x04\x19" + // 0x04180306: 0x00000419 + "\x048\x03\x06\x00\x00\x049" + // 0x04380306: 0x00000439 + "\x045\x03\x00\x00\x00\x04P" + // 0x04350300: 0x00000450 + "\x045\x03\b\x00\x00\x04Q" + // 0x04350308: 0x00000451 + "\x043\x03\x01\x00\x00\x04S" + // 0x04330301: 0x00000453 + "\x04V\x03\b\x00\x00\x04W" + // 0x04560308: 0x00000457 + "\x04:\x03\x01\x00\x00\x04\\" + // 0x043A0301: 0x0000045C + "\x048\x03\x00\x00\x00\x04]" + // 0x04380300: 0x0000045D + "\x04C\x03\x06\x00\x00\x04^" + // 0x04430306: 0x0000045E + "\x04t\x03\x0f\x00\x00\x04v" + // 0x0474030F: 0x00000476 + "\x04u\x03\x0f\x00\x00\x04w" + // 0x0475030F: 0x00000477 + "\x04\x16\x03\x06\x00\x00\x04\xc1" + // 0x04160306: 0x000004C1 + "\x046\x03\x06\x00\x00\x04\xc2" + // 0x04360306: 0x000004C2 + "\x04\x10\x03\x06\x00\x00\x04\xd0" + // 0x04100306: 0x000004D0 + "\x040\x03\x06\x00\x00\x04\xd1" + // 0x04300306: 0x000004D1 + "\x04\x10\x03\b\x00\x00\x04\xd2" + // 0x04100308: 0x000004D2 + "\x040\x03\b\x00\x00\x04\xd3" + // 0x04300308: 0x000004D3 + "\x04\x15\x03\x06\x00\x00\x04\xd6" + // 0x04150306: 0x000004D6 + "\x045\x03\x06\x00\x00\x04\xd7" + // 0x04350306: 0x000004D7 + "\x04\xd8\x03\b\x00\x00\x04\xda" + // 0x04D80308: 0x000004DA + "\x04\xd9\x03\b\x00\x00\x04\xdb" + // 0x04D90308: 0x000004DB + "\x04\x16\x03\b\x00\x00\x04\xdc" + // 0x04160308: 0x000004DC + "\x046\x03\b\x00\x00\x04\xdd" + // 0x04360308: 0x000004DD + "\x04\x17\x03\b\x00\x00\x04\xde" + // 0x04170308: 0x000004DE + "\x047\x03\b\x00\x00\x04\xdf" + // 0x04370308: 0x000004DF + "\x04\x18\x03\x04\x00\x00\x04\xe2" + // 0x04180304: 0x000004E2 + "\x048\x03\x04\x00\x00\x04\xe3" + // 0x04380304: 0x000004E3 + "\x04\x18\x03\b\x00\x00\x04\xe4" + // 0x04180308: 0x000004E4 + "\x048\x03\b\x00\x00\x04\xe5" + // 0x04380308: 0x000004E5 + "\x04\x1e\x03\b\x00\x00\x04\xe6" + // 0x041E0308: 0x000004E6 + "\x04>\x03\b\x00\x00\x04\xe7" + // 0x043E0308: 0x000004E7 + "\x04\xe8\x03\b\x00\x00\x04\xea" + // 0x04E80308: 0x000004EA + "\x04\xe9\x03\b\x00\x00\x04\xeb" + // 0x04E90308: 0x000004EB + "\x04-\x03\b\x00\x00\x04\xec" + // 0x042D0308: 0x000004EC + "\x04M\x03\b\x00\x00\x04\xed" + // 0x044D0308: 0x000004ED + "\x04#\x03\x04\x00\x00\x04\xee" + // 0x04230304: 0x000004EE + "\x04C\x03\x04\x00\x00\x04\xef" + // 0x04430304: 0x000004EF + "\x04#\x03\b\x00\x00\x04\xf0" + // 0x04230308: 0x000004F0 + "\x04C\x03\b\x00\x00\x04\xf1" + // 0x04430308: 0x000004F1 + "\x04#\x03\v\x00\x00\x04\xf2" + // 0x0423030B: 0x000004F2 + "\x04C\x03\v\x00\x00\x04\xf3" + // 0x0443030B: 0x000004F3 + "\x04'\x03\b\x00\x00\x04\xf4" + // 0x04270308: 0x000004F4 + "\x04G\x03\b\x00\x00\x04\xf5" + // 0x04470308: 0x000004F5 + "\x04+\x03\b\x00\x00\x04\xf8" + // 0x042B0308: 0x000004F8 + "\x04K\x03\b\x00\x00\x04\xf9" + // 0x044B0308: 0x000004F9 + "\x06'\x06S\x00\x00\x06\"" + // 0x06270653: 0x00000622 + "\x06'\x06T\x00\x00\x06#" + // 0x06270654: 0x00000623 + "\x06H\x06T\x00\x00\x06$" + // 0x06480654: 0x00000624 + "\x06'\x06U\x00\x00\x06%" + // 0x06270655: 0x00000625 + "\x06J\x06T\x00\x00\x06&" + // 0x064A0654: 0x00000626 + "\x06\xd5\x06T\x00\x00\x06\xc0" + // 0x06D50654: 0x000006C0 + "\x06\xc1\x06T\x00\x00\x06\xc2" + // 0x06C10654: 0x000006C2 + "\x06\xd2\x06T\x00\x00\x06\xd3" + // 0x06D20654: 0x000006D3 + "\t(\t<\x00\x00\t)" + // 0x0928093C: 0x00000929 + "\t0\t<\x00\x00\t1" + // 0x0930093C: 0x00000931 + "\t3\t<\x00\x00\t4" + // 0x0933093C: 0x00000934 + "\t\xc7\t\xbe\x00\x00\t\xcb" + // 0x09C709BE: 0x000009CB + "\t\xc7\t\xd7\x00\x00\t\xcc" + // 0x09C709D7: 0x000009CC + "\vG\vV\x00\x00\vH" + // 0x0B470B56: 0x00000B48 + "\vG\v>\x00\x00\vK" + // 0x0B470B3E: 0x00000B4B + "\vG\vW\x00\x00\vL" + // 0x0B470B57: 0x00000B4C + "\v\x92\v\xd7\x00\x00\v\x94" + // 0x0B920BD7: 0x00000B94 + "\v\xc6\v\xbe\x00\x00\v\xca" + // 0x0BC60BBE: 0x00000BCA + "\v\xc7\v\xbe\x00\x00\v\xcb" + // 0x0BC70BBE: 0x00000BCB + "\v\xc6\v\xd7\x00\x00\v\xcc" + // 0x0BC60BD7: 0x00000BCC + "\fF\fV\x00\x00\fH" + // 0x0C460C56: 0x00000C48 + "\f\xbf\f\xd5\x00\x00\f\xc0" + // 0x0CBF0CD5: 0x00000CC0 + "\f\xc6\f\xd5\x00\x00\f\xc7" + // 0x0CC60CD5: 0x00000CC7 + "\f\xc6\f\xd6\x00\x00\f\xc8" + // 0x0CC60CD6: 0x00000CC8 + "\f\xc6\f\xc2\x00\x00\f\xca" + // 0x0CC60CC2: 0x00000CCA + "\f\xca\f\xd5\x00\x00\f\xcb" + // 0x0CCA0CD5: 0x00000CCB + "\rF\r>\x00\x00\rJ" + // 0x0D460D3E: 0x00000D4A + "\rG\r>\x00\x00\rK" + // 0x0D470D3E: 0x00000D4B + "\rF\rW\x00\x00\rL" + // 0x0D460D57: 0x00000D4C + "\r\xd9\r\xca\x00\x00\r\xda" + // 0x0DD90DCA: 0x00000DDA + "\r\xd9\r\xcf\x00\x00\r\xdc" + // 0x0DD90DCF: 0x00000DDC + "\r\xdc\r\xca\x00\x00\r\xdd" + // 0x0DDC0DCA: 0x00000DDD + "\r\xd9\r\xdf\x00\x00\r\xde" + // 0x0DD90DDF: 0x00000DDE + "\x10%\x10.\x00\x00\x10&" + // 0x1025102E: 0x00001026 + "\x1b\x05\x1b5\x00\x00\x1b\x06" + // 0x1B051B35: 0x00001B06 + "\x1b\a\x1b5\x00\x00\x1b\b" + // 0x1B071B35: 0x00001B08 + "\x1b\t\x1b5\x00\x00\x1b\n" + // 0x1B091B35: 0x00001B0A + "\x1b\v\x1b5\x00\x00\x1b\f" + // 0x1B0B1B35: 0x00001B0C + "\x1b\r\x1b5\x00\x00\x1b\x0e" + // 0x1B0D1B35: 0x00001B0E + "\x1b\x11\x1b5\x00\x00\x1b\x12" + // 0x1B111B35: 0x00001B12 + "\x1b:\x1b5\x00\x00\x1b;" + // 0x1B3A1B35: 0x00001B3B + "\x1b<\x1b5\x00\x00\x1b=" + // 0x1B3C1B35: 0x00001B3D + "\x1b>\x1b5\x00\x00\x1b@" + // 0x1B3E1B35: 0x00001B40 + "\x1b?\x1b5\x00\x00\x1bA" + // 0x1B3F1B35: 0x00001B41 + "\x1bB\x1b5\x00\x00\x1bC" + // 0x1B421B35: 0x00001B43 + "\x00A\x03%\x00\x00\x1e\x00" + // 0x00410325: 0x00001E00 + "\x00a\x03%\x00\x00\x1e\x01" + // 0x00610325: 0x00001E01 + "\x00B\x03\a\x00\x00\x1e\x02" + // 0x00420307: 0x00001E02 + "\x00b\x03\a\x00\x00\x1e\x03" + // 0x00620307: 0x00001E03 + "\x00B\x03#\x00\x00\x1e\x04" + // 0x00420323: 0x00001E04 + "\x00b\x03#\x00\x00\x1e\x05" + // 0x00620323: 0x00001E05 + "\x00B\x031\x00\x00\x1e\x06" + // 0x00420331: 0x00001E06 + "\x00b\x031\x00\x00\x1e\a" + // 0x00620331: 0x00001E07 + "\x00\xc7\x03\x01\x00\x00\x1e\b" + // 0x00C70301: 0x00001E08 + "\x00\xe7\x03\x01\x00\x00\x1e\t" + // 0x00E70301: 0x00001E09 + "\x00D\x03\a\x00\x00\x1e\n" + // 0x00440307: 0x00001E0A + "\x00d\x03\a\x00\x00\x1e\v" + // 0x00640307: 0x00001E0B + "\x00D\x03#\x00\x00\x1e\f" + // 0x00440323: 0x00001E0C + "\x00d\x03#\x00\x00\x1e\r" + // 0x00640323: 0x00001E0D + "\x00D\x031\x00\x00\x1e\x0e" + // 0x00440331: 0x00001E0E + "\x00d\x031\x00\x00\x1e\x0f" + // 0x00640331: 0x00001E0F + "\x00D\x03'\x00\x00\x1e\x10" + // 0x00440327: 0x00001E10 + "\x00d\x03'\x00\x00\x1e\x11" + // 0x00640327: 0x00001E11 + "\x00D\x03-\x00\x00\x1e\x12" + // 0x0044032D: 0x00001E12 + "\x00d\x03-\x00\x00\x1e\x13" + // 0x0064032D: 0x00001E13 + "\x01\x12\x03\x00\x00\x00\x1e\x14" + // 0x01120300: 0x00001E14 + "\x01\x13\x03\x00\x00\x00\x1e\x15" + // 0x01130300: 0x00001E15 + "\x01\x12\x03\x01\x00\x00\x1e\x16" + // 0x01120301: 0x00001E16 + "\x01\x13\x03\x01\x00\x00\x1e\x17" + // 0x01130301: 0x00001E17 + "\x00E\x03-\x00\x00\x1e\x18" + // 0x0045032D: 0x00001E18 + "\x00e\x03-\x00\x00\x1e\x19" + // 0x0065032D: 0x00001E19 + "\x00E\x030\x00\x00\x1e\x1a" + // 0x00450330: 0x00001E1A + "\x00e\x030\x00\x00\x1e\x1b" + // 0x00650330: 0x00001E1B + "\x02(\x03\x06\x00\x00\x1e\x1c" + // 0x02280306: 0x00001E1C + "\x02)\x03\x06\x00\x00\x1e\x1d" + // 0x02290306: 0x00001E1D + "\x00F\x03\a\x00\x00\x1e\x1e" + // 0x00460307: 0x00001E1E + "\x00f\x03\a\x00\x00\x1e\x1f" + // 0x00660307: 0x00001E1F + "\x00G\x03\x04\x00\x00\x1e " + // 0x00470304: 0x00001E20 + "\x00g\x03\x04\x00\x00\x1e!" + // 0x00670304: 0x00001E21 + "\x00H\x03\a\x00\x00\x1e\"" + // 0x00480307: 0x00001E22 + "\x00h\x03\a\x00\x00\x1e#" + // 0x00680307: 0x00001E23 + "\x00H\x03#\x00\x00\x1e$" + // 0x00480323: 0x00001E24 + "\x00h\x03#\x00\x00\x1e%" + // 0x00680323: 0x00001E25 + "\x00H\x03\b\x00\x00\x1e&" + // 0x00480308: 0x00001E26 + "\x00h\x03\b\x00\x00\x1e'" + // 0x00680308: 0x00001E27 + "\x00H\x03'\x00\x00\x1e(" + // 0x00480327: 0x00001E28 + "\x00h\x03'\x00\x00\x1e)" + // 0x00680327: 0x00001E29 + "\x00H\x03.\x00\x00\x1e*" + // 0x0048032E: 0x00001E2A + "\x00h\x03.\x00\x00\x1e+" + // 0x0068032E: 0x00001E2B + "\x00I\x030\x00\x00\x1e," + // 0x00490330: 0x00001E2C + "\x00i\x030\x00\x00\x1e-" + // 0x00690330: 0x00001E2D + "\x00\xcf\x03\x01\x00\x00\x1e." + // 0x00CF0301: 0x00001E2E + "\x00\xef\x03\x01\x00\x00\x1e/" + // 0x00EF0301: 0x00001E2F + "\x00K\x03\x01\x00\x00\x1e0" + // 0x004B0301: 0x00001E30 + "\x00k\x03\x01\x00\x00\x1e1" + // 0x006B0301: 0x00001E31 + "\x00K\x03#\x00\x00\x1e2" + // 0x004B0323: 0x00001E32 + "\x00k\x03#\x00\x00\x1e3" + // 0x006B0323: 0x00001E33 + "\x00K\x031\x00\x00\x1e4" + // 0x004B0331: 0x00001E34 + "\x00k\x031\x00\x00\x1e5" + // 0x006B0331: 0x00001E35 + "\x00L\x03#\x00\x00\x1e6" + // 0x004C0323: 0x00001E36 + "\x00l\x03#\x00\x00\x1e7" + // 0x006C0323: 0x00001E37 + "\x1e6\x03\x04\x00\x00\x1e8" + // 0x1E360304: 0x00001E38 + "\x1e7\x03\x04\x00\x00\x1e9" + // 0x1E370304: 0x00001E39 + "\x00L\x031\x00\x00\x1e:" + // 0x004C0331: 0x00001E3A + "\x00l\x031\x00\x00\x1e;" + // 0x006C0331: 0x00001E3B + "\x00L\x03-\x00\x00\x1e<" + // 0x004C032D: 0x00001E3C + "\x00l\x03-\x00\x00\x1e=" + // 0x006C032D: 0x00001E3D + "\x00M\x03\x01\x00\x00\x1e>" + // 0x004D0301: 0x00001E3E + "\x00m\x03\x01\x00\x00\x1e?" + // 0x006D0301: 0x00001E3F + "\x00M\x03\a\x00\x00\x1e@" + // 0x004D0307: 0x00001E40 + "\x00m\x03\a\x00\x00\x1eA" + // 0x006D0307: 0x00001E41 + "\x00M\x03#\x00\x00\x1eB" + // 0x004D0323: 0x00001E42 + "\x00m\x03#\x00\x00\x1eC" + // 0x006D0323: 0x00001E43 + "\x00N\x03\a\x00\x00\x1eD" + // 0x004E0307: 0x00001E44 + "\x00n\x03\a\x00\x00\x1eE" + // 0x006E0307: 0x00001E45 + "\x00N\x03#\x00\x00\x1eF" + // 0x004E0323: 0x00001E46 + "\x00n\x03#\x00\x00\x1eG" + // 0x006E0323: 0x00001E47 + "\x00N\x031\x00\x00\x1eH" + // 0x004E0331: 0x00001E48 + "\x00n\x031\x00\x00\x1eI" + // 0x006E0331: 0x00001E49 + "\x00N\x03-\x00\x00\x1eJ" + // 0x004E032D: 0x00001E4A + "\x00n\x03-\x00\x00\x1eK" + // 0x006E032D: 0x00001E4B + "\x00\xd5\x03\x01\x00\x00\x1eL" + // 0x00D50301: 0x00001E4C + "\x00\xf5\x03\x01\x00\x00\x1eM" + // 0x00F50301: 0x00001E4D + "\x00\xd5\x03\b\x00\x00\x1eN" + // 0x00D50308: 0x00001E4E + "\x00\xf5\x03\b\x00\x00\x1eO" + // 0x00F50308: 0x00001E4F + "\x01L\x03\x00\x00\x00\x1eP" + // 0x014C0300: 0x00001E50 + "\x01M\x03\x00\x00\x00\x1eQ" + // 0x014D0300: 0x00001E51 + "\x01L\x03\x01\x00\x00\x1eR" + // 0x014C0301: 0x00001E52 + "\x01M\x03\x01\x00\x00\x1eS" + // 0x014D0301: 0x00001E53 + "\x00P\x03\x01\x00\x00\x1eT" + // 0x00500301: 0x00001E54 + "\x00p\x03\x01\x00\x00\x1eU" + // 0x00700301: 0x00001E55 + "\x00P\x03\a\x00\x00\x1eV" + // 0x00500307: 0x00001E56 + "\x00p\x03\a\x00\x00\x1eW" + // 0x00700307: 0x00001E57 + "\x00R\x03\a\x00\x00\x1eX" + // 0x00520307: 0x00001E58 + "\x00r\x03\a\x00\x00\x1eY" + // 0x00720307: 0x00001E59 + "\x00R\x03#\x00\x00\x1eZ" + // 0x00520323: 0x00001E5A + "\x00r\x03#\x00\x00\x1e[" + // 0x00720323: 0x00001E5B + "\x1eZ\x03\x04\x00\x00\x1e\\" + // 0x1E5A0304: 0x00001E5C + "\x1e[\x03\x04\x00\x00\x1e]" + // 0x1E5B0304: 0x00001E5D + "\x00R\x031\x00\x00\x1e^" + // 0x00520331: 0x00001E5E + "\x00r\x031\x00\x00\x1e_" + // 0x00720331: 0x00001E5F + "\x00S\x03\a\x00\x00\x1e`" + // 0x00530307: 0x00001E60 + "\x00s\x03\a\x00\x00\x1ea" + // 0x00730307: 0x00001E61 + "\x00S\x03#\x00\x00\x1eb" + // 0x00530323: 0x00001E62 + "\x00s\x03#\x00\x00\x1ec" + // 0x00730323: 0x00001E63 + "\x01Z\x03\a\x00\x00\x1ed" + // 0x015A0307: 0x00001E64 + "\x01[\x03\a\x00\x00\x1ee" + // 0x015B0307: 0x00001E65 + "\x01`\x03\a\x00\x00\x1ef" + // 0x01600307: 0x00001E66 + "\x01a\x03\a\x00\x00\x1eg" + // 0x01610307: 0x00001E67 + "\x1eb\x03\a\x00\x00\x1eh" + // 0x1E620307: 0x00001E68 + "\x1ec\x03\a\x00\x00\x1ei" + // 0x1E630307: 0x00001E69 + "\x00T\x03\a\x00\x00\x1ej" + // 0x00540307: 0x00001E6A + "\x00t\x03\a\x00\x00\x1ek" + // 0x00740307: 0x00001E6B + "\x00T\x03#\x00\x00\x1el" + // 0x00540323: 0x00001E6C + "\x00t\x03#\x00\x00\x1em" + // 0x00740323: 0x00001E6D + "\x00T\x031\x00\x00\x1en" + // 0x00540331: 0x00001E6E + "\x00t\x031\x00\x00\x1eo" + // 0x00740331: 0x00001E6F + "\x00T\x03-\x00\x00\x1ep" + // 0x0054032D: 0x00001E70 + "\x00t\x03-\x00\x00\x1eq" + // 0x0074032D: 0x00001E71 + "\x00U\x03$\x00\x00\x1er" + // 0x00550324: 0x00001E72 + "\x00u\x03$\x00\x00\x1es" + // 0x00750324: 0x00001E73 + "\x00U\x030\x00\x00\x1et" + // 0x00550330: 0x00001E74 + "\x00u\x030\x00\x00\x1eu" + // 0x00750330: 0x00001E75 + "\x00U\x03-\x00\x00\x1ev" + // 0x0055032D: 0x00001E76 + "\x00u\x03-\x00\x00\x1ew" + // 0x0075032D: 0x00001E77 + "\x01h\x03\x01\x00\x00\x1ex" + // 0x01680301: 0x00001E78 + "\x01i\x03\x01\x00\x00\x1ey" + // 0x01690301: 0x00001E79 + "\x01j\x03\b\x00\x00\x1ez" + // 0x016A0308: 0x00001E7A + "\x01k\x03\b\x00\x00\x1e{" + // 0x016B0308: 0x00001E7B + "\x00V\x03\x03\x00\x00\x1e|" + // 0x00560303: 0x00001E7C + "\x00v\x03\x03\x00\x00\x1e}" + // 0x00760303: 0x00001E7D + "\x00V\x03#\x00\x00\x1e~" + // 0x00560323: 0x00001E7E + "\x00v\x03#\x00\x00\x1e\u007f" + // 0x00760323: 0x00001E7F + "\x00W\x03\x00\x00\x00\x1e\x80" + // 0x00570300: 0x00001E80 + "\x00w\x03\x00\x00\x00\x1e\x81" + // 0x00770300: 0x00001E81 + "\x00W\x03\x01\x00\x00\x1e\x82" + // 0x00570301: 0x00001E82 + "\x00w\x03\x01\x00\x00\x1e\x83" + // 0x00770301: 0x00001E83 + "\x00W\x03\b\x00\x00\x1e\x84" + // 0x00570308: 0x00001E84 + "\x00w\x03\b\x00\x00\x1e\x85" + // 0x00770308: 0x00001E85 + "\x00W\x03\a\x00\x00\x1e\x86" + // 0x00570307: 0x00001E86 + "\x00w\x03\a\x00\x00\x1e\x87" + // 0x00770307: 0x00001E87 + "\x00W\x03#\x00\x00\x1e\x88" + // 0x00570323: 0x00001E88 + "\x00w\x03#\x00\x00\x1e\x89" + // 0x00770323: 0x00001E89 + "\x00X\x03\a\x00\x00\x1e\x8a" + // 0x00580307: 0x00001E8A + "\x00x\x03\a\x00\x00\x1e\x8b" + // 0x00780307: 0x00001E8B + "\x00X\x03\b\x00\x00\x1e\x8c" + // 0x00580308: 0x00001E8C + "\x00x\x03\b\x00\x00\x1e\x8d" + // 0x00780308: 0x00001E8D + "\x00Y\x03\a\x00\x00\x1e\x8e" + // 0x00590307: 0x00001E8E + "\x00y\x03\a\x00\x00\x1e\x8f" + // 0x00790307: 0x00001E8F + "\x00Z\x03\x02\x00\x00\x1e\x90" + // 0x005A0302: 0x00001E90 + "\x00z\x03\x02\x00\x00\x1e\x91" + // 0x007A0302: 0x00001E91 + "\x00Z\x03#\x00\x00\x1e\x92" + // 0x005A0323: 0x00001E92 + "\x00z\x03#\x00\x00\x1e\x93" + // 0x007A0323: 0x00001E93 + "\x00Z\x031\x00\x00\x1e\x94" + // 0x005A0331: 0x00001E94 + "\x00z\x031\x00\x00\x1e\x95" + // 0x007A0331: 0x00001E95 + "\x00h\x031\x00\x00\x1e\x96" + // 0x00680331: 0x00001E96 + "\x00t\x03\b\x00\x00\x1e\x97" + // 0x00740308: 0x00001E97 + "\x00w\x03\n\x00\x00\x1e\x98" + // 0x0077030A: 0x00001E98 + "\x00y\x03\n\x00\x00\x1e\x99" + // 0x0079030A: 0x00001E99 + "\x01\u007f\x03\a\x00\x00\x1e\x9b" + // 0x017F0307: 0x00001E9B + "\x00A\x03#\x00\x00\x1e\xa0" + // 0x00410323: 0x00001EA0 + "\x00a\x03#\x00\x00\x1e\xa1" + // 0x00610323: 0x00001EA1 + "\x00A\x03\t\x00\x00\x1e\xa2" + // 0x00410309: 0x00001EA2 + "\x00a\x03\t\x00\x00\x1e\xa3" + // 0x00610309: 0x00001EA3 + "\x00\xc2\x03\x01\x00\x00\x1e\xa4" + // 0x00C20301: 0x00001EA4 + "\x00\xe2\x03\x01\x00\x00\x1e\xa5" + // 0x00E20301: 0x00001EA5 + "\x00\xc2\x03\x00\x00\x00\x1e\xa6" + // 0x00C20300: 0x00001EA6 + "\x00\xe2\x03\x00\x00\x00\x1e\xa7" + // 0x00E20300: 0x00001EA7 + "\x00\xc2\x03\t\x00\x00\x1e\xa8" + // 0x00C20309: 0x00001EA8 + "\x00\xe2\x03\t\x00\x00\x1e\xa9" + // 0x00E20309: 0x00001EA9 + "\x00\xc2\x03\x03\x00\x00\x1e\xaa" + // 0x00C20303: 0x00001EAA + "\x00\xe2\x03\x03\x00\x00\x1e\xab" + // 0x00E20303: 0x00001EAB + "\x1e\xa0\x03\x02\x00\x00\x1e\xac" + // 0x1EA00302: 0x00001EAC + "\x1e\xa1\x03\x02\x00\x00\x1e\xad" + // 0x1EA10302: 0x00001EAD + "\x01\x02\x03\x01\x00\x00\x1e\xae" + // 0x01020301: 0x00001EAE + "\x01\x03\x03\x01\x00\x00\x1e\xaf" + // 0x01030301: 0x00001EAF + "\x01\x02\x03\x00\x00\x00\x1e\xb0" + // 0x01020300: 0x00001EB0 + "\x01\x03\x03\x00\x00\x00\x1e\xb1" + // 0x01030300: 0x00001EB1 + "\x01\x02\x03\t\x00\x00\x1e\xb2" + // 0x01020309: 0x00001EB2 + "\x01\x03\x03\t\x00\x00\x1e\xb3" + // 0x01030309: 0x00001EB3 + "\x01\x02\x03\x03\x00\x00\x1e\xb4" + // 0x01020303: 0x00001EB4 + "\x01\x03\x03\x03\x00\x00\x1e\xb5" + // 0x01030303: 0x00001EB5 + "\x1e\xa0\x03\x06\x00\x00\x1e\xb6" + // 0x1EA00306: 0x00001EB6 + "\x1e\xa1\x03\x06\x00\x00\x1e\xb7" + // 0x1EA10306: 0x00001EB7 + "\x00E\x03#\x00\x00\x1e\xb8" + // 0x00450323: 0x00001EB8 + "\x00e\x03#\x00\x00\x1e\xb9" + // 0x00650323: 0x00001EB9 + "\x00E\x03\t\x00\x00\x1e\xba" + // 0x00450309: 0x00001EBA + "\x00e\x03\t\x00\x00\x1e\xbb" + // 0x00650309: 0x00001EBB + "\x00E\x03\x03\x00\x00\x1e\xbc" + // 0x00450303: 0x00001EBC + "\x00e\x03\x03\x00\x00\x1e\xbd" + // 0x00650303: 0x00001EBD + "\x00\xca\x03\x01\x00\x00\x1e\xbe" + // 0x00CA0301: 0x00001EBE + "\x00\xea\x03\x01\x00\x00\x1e\xbf" + // 0x00EA0301: 0x00001EBF + "\x00\xca\x03\x00\x00\x00\x1e\xc0" + // 0x00CA0300: 0x00001EC0 + "\x00\xea\x03\x00\x00\x00\x1e\xc1" + // 0x00EA0300: 0x00001EC1 + "\x00\xca\x03\t\x00\x00\x1e\xc2" + // 0x00CA0309: 0x00001EC2 + "\x00\xea\x03\t\x00\x00\x1e\xc3" + // 0x00EA0309: 0x00001EC3 + "\x00\xca\x03\x03\x00\x00\x1e\xc4" + // 0x00CA0303: 0x00001EC4 + "\x00\xea\x03\x03\x00\x00\x1e\xc5" + // 0x00EA0303: 0x00001EC5 + "\x1e\xb8\x03\x02\x00\x00\x1e\xc6" + // 0x1EB80302: 0x00001EC6 + "\x1e\xb9\x03\x02\x00\x00\x1e\xc7" + // 0x1EB90302: 0x00001EC7 + "\x00I\x03\t\x00\x00\x1e\xc8" + // 0x00490309: 0x00001EC8 + "\x00i\x03\t\x00\x00\x1e\xc9" + // 0x00690309: 0x00001EC9 + "\x00I\x03#\x00\x00\x1e\xca" + // 0x00490323: 0x00001ECA + "\x00i\x03#\x00\x00\x1e\xcb" + // 0x00690323: 0x00001ECB + "\x00O\x03#\x00\x00\x1e\xcc" + // 0x004F0323: 0x00001ECC + "\x00o\x03#\x00\x00\x1e\xcd" + // 0x006F0323: 0x00001ECD + "\x00O\x03\t\x00\x00\x1e\xce" + // 0x004F0309: 0x00001ECE + "\x00o\x03\t\x00\x00\x1e\xcf" + // 0x006F0309: 0x00001ECF + "\x00\xd4\x03\x01\x00\x00\x1e\xd0" + // 0x00D40301: 0x00001ED0 + "\x00\xf4\x03\x01\x00\x00\x1e\xd1" + // 0x00F40301: 0x00001ED1 + "\x00\xd4\x03\x00\x00\x00\x1e\xd2" + // 0x00D40300: 0x00001ED2 + "\x00\xf4\x03\x00\x00\x00\x1e\xd3" + // 0x00F40300: 0x00001ED3 + "\x00\xd4\x03\t\x00\x00\x1e\xd4" + // 0x00D40309: 0x00001ED4 + "\x00\xf4\x03\t\x00\x00\x1e\xd5" + // 0x00F40309: 0x00001ED5 + "\x00\xd4\x03\x03\x00\x00\x1e\xd6" + // 0x00D40303: 0x00001ED6 + "\x00\xf4\x03\x03\x00\x00\x1e\xd7" + // 0x00F40303: 0x00001ED7 + "\x1e\xcc\x03\x02\x00\x00\x1e\xd8" + // 0x1ECC0302: 0x00001ED8 + "\x1e\xcd\x03\x02\x00\x00\x1e\xd9" + // 0x1ECD0302: 0x00001ED9 + "\x01\xa0\x03\x01\x00\x00\x1e\xda" + // 0x01A00301: 0x00001EDA + "\x01\xa1\x03\x01\x00\x00\x1e\xdb" + // 0x01A10301: 0x00001EDB + "\x01\xa0\x03\x00\x00\x00\x1e\xdc" + // 0x01A00300: 0x00001EDC + "\x01\xa1\x03\x00\x00\x00\x1e\xdd" + // 0x01A10300: 0x00001EDD + "\x01\xa0\x03\t\x00\x00\x1e\xde" + // 0x01A00309: 0x00001EDE + "\x01\xa1\x03\t\x00\x00\x1e\xdf" + // 0x01A10309: 0x00001EDF + "\x01\xa0\x03\x03\x00\x00\x1e\xe0" + // 0x01A00303: 0x00001EE0 + "\x01\xa1\x03\x03\x00\x00\x1e\xe1" + // 0x01A10303: 0x00001EE1 + "\x01\xa0\x03#\x00\x00\x1e\xe2" + // 0x01A00323: 0x00001EE2 + "\x01\xa1\x03#\x00\x00\x1e\xe3" + // 0x01A10323: 0x00001EE3 + "\x00U\x03#\x00\x00\x1e\xe4" + // 0x00550323: 0x00001EE4 + "\x00u\x03#\x00\x00\x1e\xe5" + // 0x00750323: 0x00001EE5 + "\x00U\x03\t\x00\x00\x1e\xe6" + // 0x00550309: 0x00001EE6 + "\x00u\x03\t\x00\x00\x1e\xe7" + // 0x00750309: 0x00001EE7 + "\x01\xaf\x03\x01\x00\x00\x1e\xe8" + // 0x01AF0301: 0x00001EE8 + "\x01\xb0\x03\x01\x00\x00\x1e\xe9" + // 0x01B00301: 0x00001EE9 + "\x01\xaf\x03\x00\x00\x00\x1e\xea" + // 0x01AF0300: 0x00001EEA + "\x01\xb0\x03\x00\x00\x00\x1e\xeb" + // 0x01B00300: 0x00001EEB + "\x01\xaf\x03\t\x00\x00\x1e\xec" + // 0x01AF0309: 0x00001EEC + "\x01\xb0\x03\t\x00\x00\x1e\xed" + // 0x01B00309: 0x00001EED + "\x01\xaf\x03\x03\x00\x00\x1e\xee" + // 0x01AF0303: 0x00001EEE + "\x01\xb0\x03\x03\x00\x00\x1e\xef" + // 0x01B00303: 0x00001EEF + "\x01\xaf\x03#\x00\x00\x1e\xf0" + // 0x01AF0323: 0x00001EF0 + "\x01\xb0\x03#\x00\x00\x1e\xf1" + // 0x01B00323: 0x00001EF1 + "\x00Y\x03\x00\x00\x00\x1e\xf2" + // 0x00590300: 0x00001EF2 + "\x00y\x03\x00\x00\x00\x1e\xf3" + // 0x00790300: 0x00001EF3 + "\x00Y\x03#\x00\x00\x1e\xf4" + // 0x00590323: 0x00001EF4 + "\x00y\x03#\x00\x00\x1e\xf5" + // 0x00790323: 0x00001EF5 + "\x00Y\x03\t\x00\x00\x1e\xf6" + // 0x00590309: 0x00001EF6 + "\x00y\x03\t\x00\x00\x1e\xf7" + // 0x00790309: 0x00001EF7 + "\x00Y\x03\x03\x00\x00\x1e\xf8" + // 0x00590303: 0x00001EF8 + "\x00y\x03\x03\x00\x00\x1e\xf9" + // 0x00790303: 0x00001EF9 + "\x03\xb1\x03\x13\x00\x00\x1f\x00" + // 0x03B10313: 0x00001F00 + "\x03\xb1\x03\x14\x00\x00\x1f\x01" + // 0x03B10314: 0x00001F01 + "\x1f\x00\x03\x00\x00\x00\x1f\x02" + // 0x1F000300: 0x00001F02 + "\x1f\x01\x03\x00\x00\x00\x1f\x03" + // 0x1F010300: 0x00001F03 + "\x1f\x00\x03\x01\x00\x00\x1f\x04" + // 0x1F000301: 0x00001F04 + "\x1f\x01\x03\x01\x00\x00\x1f\x05" + // 0x1F010301: 0x00001F05 + "\x1f\x00\x03B\x00\x00\x1f\x06" + // 0x1F000342: 0x00001F06 + "\x1f\x01\x03B\x00\x00\x1f\a" + // 0x1F010342: 0x00001F07 + "\x03\x91\x03\x13\x00\x00\x1f\b" + // 0x03910313: 0x00001F08 + "\x03\x91\x03\x14\x00\x00\x1f\t" + // 0x03910314: 0x00001F09 + "\x1f\b\x03\x00\x00\x00\x1f\n" + // 0x1F080300: 0x00001F0A + "\x1f\t\x03\x00\x00\x00\x1f\v" + // 0x1F090300: 0x00001F0B + "\x1f\b\x03\x01\x00\x00\x1f\f" + // 0x1F080301: 0x00001F0C + "\x1f\t\x03\x01\x00\x00\x1f\r" + // 0x1F090301: 0x00001F0D + "\x1f\b\x03B\x00\x00\x1f\x0e" + // 0x1F080342: 0x00001F0E + "\x1f\t\x03B\x00\x00\x1f\x0f" + // 0x1F090342: 0x00001F0F + "\x03\xb5\x03\x13\x00\x00\x1f\x10" + // 0x03B50313: 0x00001F10 + "\x03\xb5\x03\x14\x00\x00\x1f\x11" + // 0x03B50314: 0x00001F11 + "\x1f\x10\x03\x00\x00\x00\x1f\x12" + // 0x1F100300: 0x00001F12 + "\x1f\x11\x03\x00\x00\x00\x1f\x13" + // 0x1F110300: 0x00001F13 + "\x1f\x10\x03\x01\x00\x00\x1f\x14" + // 0x1F100301: 0x00001F14 + "\x1f\x11\x03\x01\x00\x00\x1f\x15" + // 0x1F110301: 0x00001F15 + "\x03\x95\x03\x13\x00\x00\x1f\x18" + // 0x03950313: 0x00001F18 + "\x03\x95\x03\x14\x00\x00\x1f\x19" + // 0x03950314: 0x00001F19 + "\x1f\x18\x03\x00\x00\x00\x1f\x1a" + // 0x1F180300: 0x00001F1A + "\x1f\x19\x03\x00\x00\x00\x1f\x1b" + // 0x1F190300: 0x00001F1B + "\x1f\x18\x03\x01\x00\x00\x1f\x1c" + // 0x1F180301: 0x00001F1C + "\x1f\x19\x03\x01\x00\x00\x1f\x1d" + // 0x1F190301: 0x00001F1D + "\x03\xb7\x03\x13\x00\x00\x1f " + // 0x03B70313: 0x00001F20 + "\x03\xb7\x03\x14\x00\x00\x1f!" + // 0x03B70314: 0x00001F21 + "\x1f \x03\x00\x00\x00\x1f\"" + // 0x1F200300: 0x00001F22 + "\x1f!\x03\x00\x00\x00\x1f#" + // 0x1F210300: 0x00001F23 + "\x1f \x03\x01\x00\x00\x1f$" + // 0x1F200301: 0x00001F24 + "\x1f!\x03\x01\x00\x00\x1f%" + // 0x1F210301: 0x00001F25 + "\x1f \x03B\x00\x00\x1f&" + // 0x1F200342: 0x00001F26 + "\x1f!\x03B\x00\x00\x1f'" + // 0x1F210342: 0x00001F27 + "\x03\x97\x03\x13\x00\x00\x1f(" + // 0x03970313: 0x00001F28 + "\x03\x97\x03\x14\x00\x00\x1f)" + // 0x03970314: 0x00001F29 + "\x1f(\x03\x00\x00\x00\x1f*" + // 0x1F280300: 0x00001F2A + "\x1f)\x03\x00\x00\x00\x1f+" + // 0x1F290300: 0x00001F2B + "\x1f(\x03\x01\x00\x00\x1f," + // 0x1F280301: 0x00001F2C + "\x1f)\x03\x01\x00\x00\x1f-" + // 0x1F290301: 0x00001F2D + "\x1f(\x03B\x00\x00\x1f." + // 0x1F280342: 0x00001F2E + "\x1f)\x03B\x00\x00\x1f/" + // 0x1F290342: 0x00001F2F + "\x03\xb9\x03\x13\x00\x00\x1f0" + // 0x03B90313: 0x00001F30 + "\x03\xb9\x03\x14\x00\x00\x1f1" + // 0x03B90314: 0x00001F31 + "\x1f0\x03\x00\x00\x00\x1f2" + // 0x1F300300: 0x00001F32 + "\x1f1\x03\x00\x00\x00\x1f3" + // 0x1F310300: 0x00001F33 + "\x1f0\x03\x01\x00\x00\x1f4" + // 0x1F300301: 0x00001F34 + "\x1f1\x03\x01\x00\x00\x1f5" + // 0x1F310301: 0x00001F35 + "\x1f0\x03B\x00\x00\x1f6" + // 0x1F300342: 0x00001F36 + "\x1f1\x03B\x00\x00\x1f7" + // 0x1F310342: 0x00001F37 + "\x03\x99\x03\x13\x00\x00\x1f8" + // 0x03990313: 0x00001F38 + "\x03\x99\x03\x14\x00\x00\x1f9" + // 0x03990314: 0x00001F39 + "\x1f8\x03\x00\x00\x00\x1f:" + // 0x1F380300: 0x00001F3A + "\x1f9\x03\x00\x00\x00\x1f;" + // 0x1F390300: 0x00001F3B + "\x1f8\x03\x01\x00\x00\x1f<" + // 0x1F380301: 0x00001F3C + "\x1f9\x03\x01\x00\x00\x1f=" + // 0x1F390301: 0x00001F3D + "\x1f8\x03B\x00\x00\x1f>" + // 0x1F380342: 0x00001F3E + "\x1f9\x03B\x00\x00\x1f?" + // 0x1F390342: 0x00001F3F + "\x03\xbf\x03\x13\x00\x00\x1f@" + // 0x03BF0313: 0x00001F40 + "\x03\xbf\x03\x14\x00\x00\x1fA" + // 0x03BF0314: 0x00001F41 + "\x1f@\x03\x00\x00\x00\x1fB" + // 0x1F400300: 0x00001F42 + "\x1fA\x03\x00\x00\x00\x1fC" + // 0x1F410300: 0x00001F43 + "\x1f@\x03\x01\x00\x00\x1fD" + // 0x1F400301: 0x00001F44 + "\x1fA\x03\x01\x00\x00\x1fE" + // 0x1F410301: 0x00001F45 + "\x03\x9f\x03\x13\x00\x00\x1fH" + // 0x039F0313: 0x00001F48 + "\x03\x9f\x03\x14\x00\x00\x1fI" + // 0x039F0314: 0x00001F49 + "\x1fH\x03\x00\x00\x00\x1fJ" + // 0x1F480300: 0x00001F4A + "\x1fI\x03\x00\x00\x00\x1fK" + // 0x1F490300: 0x00001F4B + "\x1fH\x03\x01\x00\x00\x1fL" + // 0x1F480301: 0x00001F4C + "\x1fI\x03\x01\x00\x00\x1fM" + // 0x1F490301: 0x00001F4D + "\x03\xc5\x03\x13\x00\x00\x1fP" + // 0x03C50313: 0x00001F50 + "\x03\xc5\x03\x14\x00\x00\x1fQ" + // 0x03C50314: 0x00001F51 + "\x1fP\x03\x00\x00\x00\x1fR" + // 0x1F500300: 0x00001F52 + "\x1fQ\x03\x00\x00\x00\x1fS" + // 0x1F510300: 0x00001F53 + "\x1fP\x03\x01\x00\x00\x1fT" + // 0x1F500301: 0x00001F54 + "\x1fQ\x03\x01\x00\x00\x1fU" + // 0x1F510301: 0x00001F55 + "\x1fP\x03B\x00\x00\x1fV" + // 0x1F500342: 0x00001F56 + "\x1fQ\x03B\x00\x00\x1fW" + // 0x1F510342: 0x00001F57 + "\x03\xa5\x03\x14\x00\x00\x1fY" + // 0x03A50314: 0x00001F59 + "\x1fY\x03\x00\x00\x00\x1f[" + // 0x1F590300: 0x00001F5B + "\x1fY\x03\x01\x00\x00\x1f]" + // 0x1F590301: 0x00001F5D + "\x1fY\x03B\x00\x00\x1f_" + // 0x1F590342: 0x00001F5F + "\x03\xc9\x03\x13\x00\x00\x1f`" + // 0x03C90313: 0x00001F60 + "\x03\xc9\x03\x14\x00\x00\x1fa" + // 0x03C90314: 0x00001F61 + "\x1f`\x03\x00\x00\x00\x1fb" + // 0x1F600300: 0x00001F62 + "\x1fa\x03\x00\x00\x00\x1fc" + // 0x1F610300: 0x00001F63 + "\x1f`\x03\x01\x00\x00\x1fd" + // 0x1F600301: 0x00001F64 + "\x1fa\x03\x01\x00\x00\x1fe" + // 0x1F610301: 0x00001F65 + "\x1f`\x03B\x00\x00\x1ff" + // 0x1F600342: 0x00001F66 + "\x1fa\x03B\x00\x00\x1fg" + // 0x1F610342: 0x00001F67 + "\x03\xa9\x03\x13\x00\x00\x1fh" + // 0x03A90313: 0x00001F68 + "\x03\xa9\x03\x14\x00\x00\x1fi" + // 0x03A90314: 0x00001F69 + "\x1fh\x03\x00\x00\x00\x1fj" + // 0x1F680300: 0x00001F6A + "\x1fi\x03\x00\x00\x00\x1fk" + // 0x1F690300: 0x00001F6B + "\x1fh\x03\x01\x00\x00\x1fl" + // 0x1F680301: 0x00001F6C + "\x1fi\x03\x01\x00\x00\x1fm" + // 0x1F690301: 0x00001F6D + "\x1fh\x03B\x00\x00\x1fn" + // 0x1F680342: 0x00001F6E + "\x1fi\x03B\x00\x00\x1fo" + // 0x1F690342: 0x00001F6F + "\x03\xb1\x03\x00\x00\x00\x1fp" + // 0x03B10300: 0x00001F70 + "\x03\xb5\x03\x00\x00\x00\x1fr" + // 0x03B50300: 0x00001F72 + "\x03\xb7\x03\x00\x00\x00\x1ft" + // 0x03B70300: 0x00001F74 + "\x03\xb9\x03\x00\x00\x00\x1fv" + // 0x03B90300: 0x00001F76 + "\x03\xbf\x03\x00\x00\x00\x1fx" + // 0x03BF0300: 0x00001F78 + "\x03\xc5\x03\x00\x00\x00\x1fz" + // 0x03C50300: 0x00001F7A + "\x03\xc9\x03\x00\x00\x00\x1f|" + // 0x03C90300: 0x00001F7C + "\x1f\x00\x03E\x00\x00\x1f\x80" + // 0x1F000345: 0x00001F80 + "\x1f\x01\x03E\x00\x00\x1f\x81" + // 0x1F010345: 0x00001F81 + "\x1f\x02\x03E\x00\x00\x1f\x82" + // 0x1F020345: 0x00001F82 + "\x1f\x03\x03E\x00\x00\x1f\x83" + // 0x1F030345: 0x00001F83 + "\x1f\x04\x03E\x00\x00\x1f\x84" + // 0x1F040345: 0x00001F84 + "\x1f\x05\x03E\x00\x00\x1f\x85" + // 0x1F050345: 0x00001F85 + "\x1f\x06\x03E\x00\x00\x1f\x86" + // 0x1F060345: 0x00001F86 + "\x1f\a\x03E\x00\x00\x1f\x87" + // 0x1F070345: 0x00001F87 + "\x1f\b\x03E\x00\x00\x1f\x88" + // 0x1F080345: 0x00001F88 + "\x1f\t\x03E\x00\x00\x1f\x89" + // 0x1F090345: 0x00001F89 + "\x1f\n\x03E\x00\x00\x1f\x8a" + // 0x1F0A0345: 0x00001F8A + "\x1f\v\x03E\x00\x00\x1f\x8b" + // 0x1F0B0345: 0x00001F8B + "\x1f\f\x03E\x00\x00\x1f\x8c" + // 0x1F0C0345: 0x00001F8C + "\x1f\r\x03E\x00\x00\x1f\x8d" + // 0x1F0D0345: 0x00001F8D + "\x1f\x0e\x03E\x00\x00\x1f\x8e" + // 0x1F0E0345: 0x00001F8E + "\x1f\x0f\x03E\x00\x00\x1f\x8f" + // 0x1F0F0345: 0x00001F8F + "\x1f \x03E\x00\x00\x1f\x90" + // 0x1F200345: 0x00001F90 + "\x1f!\x03E\x00\x00\x1f\x91" + // 0x1F210345: 0x00001F91 + "\x1f\"\x03E\x00\x00\x1f\x92" + // 0x1F220345: 0x00001F92 + "\x1f#\x03E\x00\x00\x1f\x93" + // 0x1F230345: 0x00001F93 + "\x1f$\x03E\x00\x00\x1f\x94" + // 0x1F240345: 0x00001F94 + "\x1f%\x03E\x00\x00\x1f\x95" + // 0x1F250345: 0x00001F95 + "\x1f&\x03E\x00\x00\x1f\x96" + // 0x1F260345: 0x00001F96 + "\x1f'\x03E\x00\x00\x1f\x97" + // 0x1F270345: 0x00001F97 + "\x1f(\x03E\x00\x00\x1f\x98" + // 0x1F280345: 0x00001F98 + "\x1f)\x03E\x00\x00\x1f\x99" + // 0x1F290345: 0x00001F99 + "\x1f*\x03E\x00\x00\x1f\x9a" + // 0x1F2A0345: 0x00001F9A + "\x1f+\x03E\x00\x00\x1f\x9b" + // 0x1F2B0345: 0x00001F9B + "\x1f,\x03E\x00\x00\x1f\x9c" + // 0x1F2C0345: 0x00001F9C + "\x1f-\x03E\x00\x00\x1f\x9d" + // 0x1F2D0345: 0x00001F9D + "\x1f.\x03E\x00\x00\x1f\x9e" + // 0x1F2E0345: 0x00001F9E + "\x1f/\x03E\x00\x00\x1f\x9f" + // 0x1F2F0345: 0x00001F9F + "\x1f`\x03E\x00\x00\x1f\xa0" + // 0x1F600345: 0x00001FA0 + "\x1fa\x03E\x00\x00\x1f\xa1" + // 0x1F610345: 0x00001FA1 + "\x1fb\x03E\x00\x00\x1f\xa2" + // 0x1F620345: 0x00001FA2 + "\x1fc\x03E\x00\x00\x1f\xa3" + // 0x1F630345: 0x00001FA3 + "\x1fd\x03E\x00\x00\x1f\xa4" + // 0x1F640345: 0x00001FA4 + "\x1fe\x03E\x00\x00\x1f\xa5" + // 0x1F650345: 0x00001FA5 + "\x1ff\x03E\x00\x00\x1f\xa6" + // 0x1F660345: 0x00001FA6 + "\x1fg\x03E\x00\x00\x1f\xa7" + // 0x1F670345: 0x00001FA7 + "\x1fh\x03E\x00\x00\x1f\xa8" + // 0x1F680345: 0x00001FA8 + "\x1fi\x03E\x00\x00\x1f\xa9" + // 0x1F690345: 0x00001FA9 + "\x1fj\x03E\x00\x00\x1f\xaa" + // 0x1F6A0345: 0x00001FAA + "\x1fk\x03E\x00\x00\x1f\xab" + // 0x1F6B0345: 0x00001FAB + "\x1fl\x03E\x00\x00\x1f\xac" + // 0x1F6C0345: 0x00001FAC + "\x1fm\x03E\x00\x00\x1f\xad" + // 0x1F6D0345: 0x00001FAD + "\x1fn\x03E\x00\x00\x1f\xae" + // 0x1F6E0345: 0x00001FAE + "\x1fo\x03E\x00\x00\x1f\xaf" + // 0x1F6F0345: 0x00001FAF + "\x03\xb1\x03\x06\x00\x00\x1f\xb0" + // 0x03B10306: 0x00001FB0 + "\x03\xb1\x03\x04\x00\x00\x1f\xb1" + // 0x03B10304: 0x00001FB1 + "\x1fp\x03E\x00\x00\x1f\xb2" + // 0x1F700345: 0x00001FB2 + "\x03\xb1\x03E\x00\x00\x1f\xb3" + // 0x03B10345: 0x00001FB3 + "\x03\xac\x03E\x00\x00\x1f\xb4" + // 0x03AC0345: 0x00001FB4 + "\x03\xb1\x03B\x00\x00\x1f\xb6" + // 0x03B10342: 0x00001FB6 + "\x1f\xb6\x03E\x00\x00\x1f\xb7" + // 0x1FB60345: 0x00001FB7 + "\x03\x91\x03\x06\x00\x00\x1f\xb8" + // 0x03910306: 0x00001FB8 + "\x03\x91\x03\x04\x00\x00\x1f\xb9" + // 0x03910304: 0x00001FB9 + "\x03\x91\x03\x00\x00\x00\x1f\xba" + // 0x03910300: 0x00001FBA + "\x03\x91\x03E\x00\x00\x1f\xbc" + // 0x03910345: 0x00001FBC + "\x00\xa8\x03B\x00\x00\x1f\xc1" + // 0x00A80342: 0x00001FC1 + "\x1ft\x03E\x00\x00\x1f\xc2" + // 0x1F740345: 0x00001FC2 + "\x03\xb7\x03E\x00\x00\x1f\xc3" + // 0x03B70345: 0x00001FC3 + "\x03\xae\x03E\x00\x00\x1f\xc4" + // 0x03AE0345: 0x00001FC4 + "\x03\xb7\x03B\x00\x00\x1f\xc6" + // 0x03B70342: 0x00001FC6 + "\x1f\xc6\x03E\x00\x00\x1f\xc7" + // 0x1FC60345: 0x00001FC7 + "\x03\x95\x03\x00\x00\x00\x1f\xc8" + // 0x03950300: 0x00001FC8 + "\x03\x97\x03\x00\x00\x00\x1f\xca" + // 0x03970300: 0x00001FCA + "\x03\x97\x03E\x00\x00\x1f\xcc" + // 0x03970345: 0x00001FCC + "\x1f\xbf\x03\x00\x00\x00\x1f\xcd" + // 0x1FBF0300: 0x00001FCD + "\x1f\xbf\x03\x01\x00\x00\x1f\xce" + // 0x1FBF0301: 0x00001FCE + "\x1f\xbf\x03B\x00\x00\x1f\xcf" + // 0x1FBF0342: 0x00001FCF + "\x03\xb9\x03\x06\x00\x00\x1f\xd0" + // 0x03B90306: 0x00001FD0 + "\x03\xb9\x03\x04\x00\x00\x1f\xd1" + // 0x03B90304: 0x00001FD1 + "\x03\xca\x03\x00\x00\x00\x1f\xd2" + // 0x03CA0300: 0x00001FD2 + "\x03\xb9\x03B\x00\x00\x1f\xd6" + // 0x03B90342: 0x00001FD6 + "\x03\xca\x03B\x00\x00\x1f\xd7" + // 0x03CA0342: 0x00001FD7 + "\x03\x99\x03\x06\x00\x00\x1f\xd8" + // 0x03990306: 0x00001FD8 + "\x03\x99\x03\x04\x00\x00\x1f\xd9" + // 0x03990304: 0x00001FD9 + "\x03\x99\x03\x00\x00\x00\x1f\xda" + // 0x03990300: 0x00001FDA + "\x1f\xfe\x03\x00\x00\x00\x1f\xdd" + // 0x1FFE0300: 0x00001FDD + "\x1f\xfe\x03\x01\x00\x00\x1f\xde" + // 0x1FFE0301: 0x00001FDE + "\x1f\xfe\x03B\x00\x00\x1f\xdf" + // 0x1FFE0342: 0x00001FDF + "\x03\xc5\x03\x06\x00\x00\x1f\xe0" + // 0x03C50306: 0x00001FE0 + "\x03\xc5\x03\x04\x00\x00\x1f\xe1" + // 0x03C50304: 0x00001FE1 + "\x03\xcb\x03\x00\x00\x00\x1f\xe2" + // 0x03CB0300: 0x00001FE2 + "\x03\xc1\x03\x13\x00\x00\x1f\xe4" + // 0x03C10313: 0x00001FE4 + "\x03\xc1\x03\x14\x00\x00\x1f\xe5" + // 0x03C10314: 0x00001FE5 + "\x03\xc5\x03B\x00\x00\x1f\xe6" + // 0x03C50342: 0x00001FE6 + "\x03\xcb\x03B\x00\x00\x1f\xe7" + // 0x03CB0342: 0x00001FE7 + "\x03\xa5\x03\x06\x00\x00\x1f\xe8" + // 0x03A50306: 0x00001FE8 + "\x03\xa5\x03\x04\x00\x00\x1f\xe9" + // 0x03A50304: 0x00001FE9 + "\x03\xa5\x03\x00\x00\x00\x1f\xea" + // 0x03A50300: 0x00001FEA + "\x03\xa1\x03\x14\x00\x00\x1f\xec" + // 0x03A10314: 0x00001FEC + "\x00\xa8\x03\x00\x00\x00\x1f\xed" + // 0x00A80300: 0x00001FED + "\x1f|\x03E\x00\x00\x1f\xf2" + // 0x1F7C0345: 0x00001FF2 + "\x03\xc9\x03E\x00\x00\x1f\xf3" + // 0x03C90345: 0x00001FF3 + "\x03\xce\x03E\x00\x00\x1f\xf4" + // 0x03CE0345: 0x00001FF4 + "\x03\xc9\x03B\x00\x00\x1f\xf6" + // 0x03C90342: 0x00001FF6 + "\x1f\xf6\x03E\x00\x00\x1f\xf7" + // 0x1FF60345: 0x00001FF7 + "\x03\x9f\x03\x00\x00\x00\x1f\xf8" + // 0x039F0300: 0x00001FF8 + "\x03\xa9\x03\x00\x00\x00\x1f\xfa" + // 0x03A90300: 0x00001FFA + "\x03\xa9\x03E\x00\x00\x1f\xfc" + // 0x03A90345: 0x00001FFC + "!\x90\x038\x00\x00!\x9a" + // 0x21900338: 0x0000219A + "!\x92\x038\x00\x00!\x9b" + // 0x21920338: 0x0000219B + "!\x94\x038\x00\x00!\xae" + // 0x21940338: 0x000021AE + "!\xd0\x038\x00\x00!\xcd" + // 0x21D00338: 0x000021CD + "!\xd4\x038\x00\x00!\xce" + // 0x21D40338: 0x000021CE + "!\xd2\x038\x00\x00!\xcf" + // 0x21D20338: 0x000021CF + "\"\x03\x038\x00\x00\"\x04" + // 0x22030338: 0x00002204 + "\"\b\x038\x00\x00\"\t" + // 0x22080338: 0x00002209 + "\"\v\x038\x00\x00\"\f" + // 0x220B0338: 0x0000220C + "\"#\x038\x00\x00\"$" + // 0x22230338: 0x00002224 + "\"%\x038\x00\x00\"&" + // 0x22250338: 0x00002226 + "\"<\x038\x00\x00\"A" + // 0x223C0338: 0x00002241 + "\"C\x038\x00\x00\"D" + // 0x22430338: 0x00002244 + "\"E\x038\x00\x00\"G" + // 0x22450338: 0x00002247 + "\"H\x038\x00\x00\"I" + // 0x22480338: 0x00002249 + "\x00=\x038\x00\x00\"`" + // 0x003D0338: 0x00002260 + "\"a\x038\x00\x00\"b" + // 0x22610338: 0x00002262 + "\"M\x038\x00\x00\"m" + // 0x224D0338: 0x0000226D + "\x00<\x038\x00\x00\"n" + // 0x003C0338: 0x0000226E + "\x00>\x038\x00\x00\"o" + // 0x003E0338: 0x0000226F + "\"d\x038\x00\x00\"p" + // 0x22640338: 0x00002270 + "\"e\x038\x00\x00\"q" + // 0x22650338: 0x00002271 + "\"r\x038\x00\x00\"t" + // 0x22720338: 0x00002274 + "\"s\x038\x00\x00\"u" + // 0x22730338: 0x00002275 + "\"v\x038\x00\x00\"x" + // 0x22760338: 0x00002278 + "\"w\x038\x00\x00\"y" + // 0x22770338: 0x00002279 + "\"z\x038\x00\x00\"\x80" + // 0x227A0338: 0x00002280 + "\"{\x038\x00\x00\"\x81" + // 0x227B0338: 0x00002281 + "\"\x82\x038\x00\x00\"\x84" + // 0x22820338: 0x00002284 + "\"\x83\x038\x00\x00\"\x85" + // 0x22830338: 0x00002285 + "\"\x86\x038\x00\x00\"\x88" + // 0x22860338: 0x00002288 + "\"\x87\x038\x00\x00\"\x89" + // 0x22870338: 0x00002289 + "\"\xa2\x038\x00\x00\"\xac" + // 0x22A20338: 0x000022AC + "\"\xa8\x038\x00\x00\"\xad" + // 0x22A80338: 0x000022AD + "\"\xa9\x038\x00\x00\"\xae" + // 0x22A90338: 0x000022AE + "\"\xab\x038\x00\x00\"\xaf" + // 0x22AB0338: 0x000022AF + "\"|\x038\x00\x00\"\xe0" + // 0x227C0338: 0x000022E0 + "\"}\x038\x00\x00\"\xe1" + // 0x227D0338: 0x000022E1 + "\"\x91\x038\x00\x00\"\xe2" + // 0x22910338: 0x000022E2 + "\"\x92\x038\x00\x00\"\xe3" + // 0x22920338: 0x000022E3 + "\"\xb2\x038\x00\x00\"\xea" + // 0x22B20338: 0x000022EA + "\"\xb3\x038\x00\x00\"\xeb" + // 0x22B30338: 0x000022EB + "\"\xb4\x038\x00\x00\"\xec" + // 0x22B40338: 0x000022EC + "\"\xb5\x038\x00\x00\"\xed" + // 0x22B50338: 0x000022ED + "0K0\x99\x00\x000L" + // 0x304B3099: 0x0000304C + "0M0\x99\x00\x000N" + // 0x304D3099: 0x0000304E + "0O0\x99\x00\x000P" + // 0x304F3099: 0x00003050 + "0Q0\x99\x00\x000R" + // 0x30513099: 0x00003052 + "0S0\x99\x00\x000T" + // 0x30533099: 0x00003054 + "0U0\x99\x00\x000V" + // 0x30553099: 0x00003056 + "0W0\x99\x00\x000X" + // 0x30573099: 0x00003058 + "0Y0\x99\x00\x000Z" + // 0x30593099: 0x0000305A + "0[0\x99\x00\x000\\" + // 0x305B3099: 0x0000305C + "0]0\x99\x00\x000^" + // 0x305D3099: 0x0000305E + "0_0\x99\x00\x000`" + // 0x305F3099: 0x00003060 + "0a0\x99\x00\x000b" + // 0x30613099: 0x00003062 + "0d0\x99\x00\x000e" + // 0x30643099: 0x00003065 + "0f0\x99\x00\x000g" + // 0x30663099: 0x00003067 + "0h0\x99\x00\x000i" + // 0x30683099: 0x00003069 + "0o0\x99\x00\x000p" + // 0x306F3099: 0x00003070 + "0o0\x9a\x00\x000q" + // 0x306F309A: 0x00003071 + "0r0\x99\x00\x000s" + // 0x30723099: 0x00003073 + "0r0\x9a\x00\x000t" + // 0x3072309A: 0x00003074 + "0u0\x99\x00\x000v" + // 0x30753099: 0x00003076 + "0u0\x9a\x00\x000w" + // 0x3075309A: 0x00003077 + "0x0\x99\x00\x000y" + // 0x30783099: 0x00003079 + "0x0\x9a\x00\x000z" + // 0x3078309A: 0x0000307A + "0{0\x99\x00\x000|" + // 0x307B3099: 0x0000307C + "0{0\x9a\x00\x000}" + // 0x307B309A: 0x0000307D + "0F0\x99\x00\x000\x94" + // 0x30463099: 0x00003094 + "0\x9d0\x99\x00\x000\x9e" + // 0x309D3099: 0x0000309E + "0\xab0\x99\x00\x000\xac" + // 0x30AB3099: 0x000030AC + "0\xad0\x99\x00\x000\xae" + // 0x30AD3099: 0x000030AE + "0\xaf0\x99\x00\x000\xb0" + // 0x30AF3099: 0x000030B0 + "0\xb10\x99\x00\x000\xb2" + // 0x30B13099: 0x000030B2 + "0\xb30\x99\x00\x000\xb4" + // 0x30B33099: 0x000030B4 + "0\xb50\x99\x00\x000\xb6" + // 0x30B53099: 0x000030B6 + "0\xb70\x99\x00\x000\xb8" + // 0x30B73099: 0x000030B8 + "0\xb90\x99\x00\x000\xba" + // 0x30B93099: 0x000030BA + "0\xbb0\x99\x00\x000\xbc" + // 0x30BB3099: 0x000030BC + "0\xbd0\x99\x00\x000\xbe" + // 0x30BD3099: 0x000030BE + "0\xbf0\x99\x00\x000\xc0" + // 0x30BF3099: 0x000030C0 + "0\xc10\x99\x00\x000\xc2" + // 0x30C13099: 0x000030C2 + "0\xc40\x99\x00\x000\xc5" + // 0x30C43099: 0x000030C5 + "0\xc60\x99\x00\x000\xc7" + // 0x30C63099: 0x000030C7 + "0\xc80\x99\x00\x000\xc9" + // 0x30C83099: 0x000030C9 + "0\xcf0\x99\x00\x000\xd0" + // 0x30CF3099: 0x000030D0 + "0\xcf0\x9a\x00\x000\xd1" + // 0x30CF309A: 0x000030D1 + "0\xd20\x99\x00\x000\xd3" + // 0x30D23099: 0x000030D3 + "0\xd20\x9a\x00\x000\xd4" + // 0x30D2309A: 0x000030D4 + "0\xd50\x99\x00\x000\xd6" + // 0x30D53099: 0x000030D6 + "0\xd50\x9a\x00\x000\xd7" + // 0x30D5309A: 0x000030D7 + "0\xd80\x99\x00\x000\xd9" + // 0x30D83099: 0x000030D9 + "0\xd80\x9a\x00\x000\xda" + // 0x30D8309A: 0x000030DA + "0\xdb0\x99\x00\x000\xdc" + // 0x30DB3099: 0x000030DC + "0\xdb0\x9a\x00\x000\xdd" + // 0x30DB309A: 0x000030DD + "0\xa60\x99\x00\x000\xf4" + // 0x30A63099: 0x000030F4 + "0\xef0\x99\x00\x000\xf7" + // 0x30EF3099: 0x000030F7 + "0\xf00\x99\x00\x000\xf8" + // 0x30F03099: 0x000030F8 + "0\xf10\x99\x00\x000\xf9" + // 0x30F13099: 0x000030F9 + "0\xf20\x99\x00\x000\xfa" + // 0x30F23099: 0x000030FA + "0\xfd0\x99\x00\x000\xfe" + // 0x30FD3099: 0x000030FE + "\x10\x99\x10\xba\x00\x01\x10\x9a" + // 0x109910BA: 0x0001109A + "\x10\x9b\x10\xba\x00\x01\x10\x9c" + // 0x109B10BA: 0x0001109C + "\x10\xa5\x10\xba\x00\x01\x10\xab" + // 0x10A510BA: 0x000110AB + "\x111\x11'\x00\x01\x11." + // 0x11311127: 0x0001112E + "\x112\x11'\x00\x01\x11/" + // 0x11321127: 0x0001112F + "\x13G\x13>\x00\x01\x13K" + // 0x1347133E: 0x0001134B + "\x13G\x13W\x00\x01\x13L" + // 0x13471357: 0x0001134C + "\x14\xb9\x14\xba\x00\x01\x14\xbb" + // 0x14B914BA: 0x000114BB + "\x14\xb9\x14\xb0\x00\x01\x14\xbc" + // 0x14B914B0: 0x000114BC + "\x14\xb9\x14\xbd\x00\x01\x14\xbe" + // 0x14B914BD: 0x000114BE + "\x15\xb8\x15\xaf\x00\x01\x15\xba" + // 0x15B815AF: 0x000115BA + "\x15\xb9\x15\xaf\x00\x01\x15\xbb" + // 0x15B915AF: 0x000115BB + "" + // Total size of tables: 53KB (54226 bytes) diff --git a/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go new file mode 100644 index 0000000000..7297cce32b --- /dev/null +++ b/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go @@ -0,0 +1,7693 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// +build go1.13 + +package norm + +import "sync" + +const ( + // Version is the Unicode edition from which the tables are derived. + Version = "11.0.0" + + // MaxTransformChunkSize indicates the maximum number of bytes that Transform + // may need to write atomically for any Form. Making a destination buffer at + // least this size ensures that Transform can always make progress and that + // the user does not need to grow the buffer on an ErrShortDst. + MaxTransformChunkSize = 35 + maxNonStarters*4 +) + +var ccc = [55]uint8{ + 0, 1, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, + 84, 91, 103, 107, 118, 122, 129, 130, + 132, 202, 214, 216, 218, 220, 222, 224, + 226, 228, 230, 232, 233, 234, 240, +} + +const ( + firstMulti = 0x186D + firstCCC = 0x2C9E + endMulti = 0x2F60 + firstLeadingCCC = 0x49AE + firstCCCZeroExcept = 0x4A78 + firstStarterWithNLead = 0x4A9F + lastDecomp = 0x4AA1 + maxDecomp = 0x8000 +) + +// decomps: 19105 bytes +var decomps = [...]byte{ + // Bytes 0 - 3f + 0x00, 0x41, 0x20, 0x41, 0x21, 0x41, 0x22, 0x41, + 0x23, 0x41, 0x24, 0x41, 0x25, 0x41, 0x26, 0x41, + 0x27, 0x41, 0x28, 0x41, 0x29, 0x41, 0x2A, 0x41, + 0x2B, 0x41, 0x2C, 0x41, 0x2D, 0x41, 0x2E, 0x41, + 0x2F, 0x41, 0x30, 0x41, 0x31, 0x41, 0x32, 0x41, + 0x33, 0x41, 0x34, 0x41, 0x35, 0x41, 0x36, 0x41, + 0x37, 0x41, 0x38, 0x41, 0x39, 0x41, 0x3A, 0x41, + 0x3B, 0x41, 0x3C, 0x41, 0x3D, 0x41, 0x3E, 0x41, + // Bytes 40 - 7f + 0x3F, 0x41, 0x40, 0x41, 0x41, 0x41, 0x42, 0x41, + 0x43, 0x41, 0x44, 0x41, 0x45, 0x41, 0x46, 0x41, + 0x47, 0x41, 0x48, 0x41, 0x49, 0x41, 0x4A, 0x41, + 0x4B, 0x41, 0x4C, 0x41, 0x4D, 0x41, 0x4E, 0x41, + 0x4F, 0x41, 0x50, 0x41, 0x51, 0x41, 0x52, 0x41, + 0x53, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, + 0x57, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x41, + 0x5B, 0x41, 0x5C, 0x41, 0x5D, 0x41, 0x5E, 0x41, + // Bytes 80 - bf + 0x5F, 0x41, 0x60, 0x41, 0x61, 0x41, 0x62, 0x41, + 0x63, 0x41, 0x64, 0x41, 0x65, 0x41, 0x66, 0x41, + 0x67, 0x41, 0x68, 0x41, 0x69, 0x41, 0x6A, 0x41, + 0x6B, 0x41, 0x6C, 0x41, 0x6D, 0x41, 0x6E, 0x41, + 0x6F, 0x41, 0x70, 0x41, 0x71, 0x41, 0x72, 0x41, + 0x73, 0x41, 0x74, 0x41, 0x75, 0x41, 0x76, 0x41, + 0x77, 0x41, 0x78, 0x41, 0x79, 0x41, 0x7A, 0x41, + 0x7B, 0x41, 0x7C, 0x41, 0x7D, 0x41, 0x7E, 0x42, + // Bytes c0 - ff + 0xC2, 0xA2, 0x42, 0xC2, 0xA3, 0x42, 0xC2, 0xA5, + 0x42, 0xC2, 0xA6, 0x42, 0xC2, 0xAC, 0x42, 0xC2, + 0xB7, 0x42, 0xC3, 0x86, 0x42, 0xC3, 0xB0, 0x42, + 0xC4, 0xA6, 0x42, 0xC4, 0xA7, 0x42, 0xC4, 0xB1, + 0x42, 0xC5, 0x8B, 0x42, 0xC5, 0x93, 0x42, 0xC6, + 0x8E, 0x42, 0xC6, 0x90, 0x42, 0xC6, 0xAB, 0x42, + 0xC8, 0xA2, 0x42, 0xC8, 0xB7, 0x42, 0xC9, 0x90, + 0x42, 0xC9, 0x91, 0x42, 0xC9, 0x92, 0x42, 0xC9, + // Bytes 100 - 13f + 0x94, 0x42, 0xC9, 0x95, 0x42, 0xC9, 0x99, 0x42, + 0xC9, 0x9B, 0x42, 0xC9, 0x9C, 0x42, 0xC9, 0x9F, + 0x42, 0xC9, 0xA1, 0x42, 0xC9, 0xA3, 0x42, 0xC9, + 0xA5, 0x42, 0xC9, 0xA6, 0x42, 0xC9, 0xA8, 0x42, + 0xC9, 0xA9, 0x42, 0xC9, 0xAA, 0x42, 0xC9, 0xAB, + 0x42, 0xC9, 0xAD, 0x42, 0xC9, 0xAF, 0x42, 0xC9, + 0xB0, 0x42, 0xC9, 0xB1, 0x42, 0xC9, 0xB2, 0x42, + 0xC9, 0xB3, 0x42, 0xC9, 0xB4, 0x42, 0xC9, 0xB5, + // Bytes 140 - 17f + 0x42, 0xC9, 0xB8, 0x42, 0xC9, 0xB9, 0x42, 0xC9, + 0xBB, 0x42, 0xCA, 0x81, 0x42, 0xCA, 0x82, 0x42, + 0xCA, 0x83, 0x42, 0xCA, 0x89, 0x42, 0xCA, 0x8A, + 0x42, 0xCA, 0x8B, 0x42, 0xCA, 0x8C, 0x42, 0xCA, + 0x90, 0x42, 0xCA, 0x91, 0x42, 0xCA, 0x92, 0x42, + 0xCA, 0x95, 0x42, 0xCA, 0x9D, 0x42, 0xCA, 0x9F, + 0x42, 0xCA, 0xB9, 0x42, 0xCE, 0x91, 0x42, 0xCE, + 0x92, 0x42, 0xCE, 0x93, 0x42, 0xCE, 0x94, 0x42, + // Bytes 180 - 1bf + 0xCE, 0x95, 0x42, 0xCE, 0x96, 0x42, 0xCE, 0x97, + 0x42, 0xCE, 0x98, 0x42, 0xCE, 0x99, 0x42, 0xCE, + 0x9A, 0x42, 0xCE, 0x9B, 0x42, 0xCE, 0x9C, 0x42, + 0xCE, 0x9D, 0x42, 0xCE, 0x9E, 0x42, 0xCE, 0x9F, + 0x42, 0xCE, 0xA0, 0x42, 0xCE, 0xA1, 0x42, 0xCE, + 0xA3, 0x42, 0xCE, 0xA4, 0x42, 0xCE, 0xA5, 0x42, + 0xCE, 0xA6, 0x42, 0xCE, 0xA7, 0x42, 0xCE, 0xA8, + 0x42, 0xCE, 0xA9, 0x42, 0xCE, 0xB1, 0x42, 0xCE, + // Bytes 1c0 - 1ff + 0xB2, 0x42, 0xCE, 0xB3, 0x42, 0xCE, 0xB4, 0x42, + 0xCE, 0xB5, 0x42, 0xCE, 0xB6, 0x42, 0xCE, 0xB7, + 0x42, 0xCE, 0xB8, 0x42, 0xCE, 0xB9, 0x42, 0xCE, + 0xBA, 0x42, 0xCE, 0xBB, 0x42, 0xCE, 0xBC, 0x42, + 0xCE, 0xBD, 0x42, 0xCE, 0xBE, 0x42, 0xCE, 0xBF, + 0x42, 0xCF, 0x80, 0x42, 0xCF, 0x81, 0x42, 0xCF, + 0x82, 0x42, 0xCF, 0x83, 0x42, 0xCF, 0x84, 0x42, + 0xCF, 0x85, 0x42, 0xCF, 0x86, 0x42, 0xCF, 0x87, + // Bytes 200 - 23f + 0x42, 0xCF, 0x88, 0x42, 0xCF, 0x89, 0x42, 0xCF, + 0x9C, 0x42, 0xCF, 0x9D, 0x42, 0xD0, 0xBD, 0x42, + 0xD1, 0x8A, 0x42, 0xD1, 0x8C, 0x42, 0xD7, 0x90, + 0x42, 0xD7, 0x91, 0x42, 0xD7, 0x92, 0x42, 0xD7, + 0x93, 0x42, 0xD7, 0x94, 0x42, 0xD7, 0x9B, 0x42, + 0xD7, 0x9C, 0x42, 0xD7, 0x9D, 0x42, 0xD7, 0xA2, + 0x42, 0xD7, 0xA8, 0x42, 0xD7, 0xAA, 0x42, 0xD8, + 0xA1, 0x42, 0xD8, 0xA7, 0x42, 0xD8, 0xA8, 0x42, + // Bytes 240 - 27f + 0xD8, 0xA9, 0x42, 0xD8, 0xAA, 0x42, 0xD8, 0xAB, + 0x42, 0xD8, 0xAC, 0x42, 0xD8, 0xAD, 0x42, 0xD8, + 0xAE, 0x42, 0xD8, 0xAF, 0x42, 0xD8, 0xB0, 0x42, + 0xD8, 0xB1, 0x42, 0xD8, 0xB2, 0x42, 0xD8, 0xB3, + 0x42, 0xD8, 0xB4, 0x42, 0xD8, 0xB5, 0x42, 0xD8, + 0xB6, 0x42, 0xD8, 0xB7, 0x42, 0xD8, 0xB8, 0x42, + 0xD8, 0xB9, 0x42, 0xD8, 0xBA, 0x42, 0xD9, 0x81, + 0x42, 0xD9, 0x82, 0x42, 0xD9, 0x83, 0x42, 0xD9, + // Bytes 280 - 2bf + 0x84, 0x42, 0xD9, 0x85, 0x42, 0xD9, 0x86, 0x42, + 0xD9, 0x87, 0x42, 0xD9, 0x88, 0x42, 0xD9, 0x89, + 0x42, 0xD9, 0x8A, 0x42, 0xD9, 0xAE, 0x42, 0xD9, + 0xAF, 0x42, 0xD9, 0xB1, 0x42, 0xD9, 0xB9, 0x42, + 0xD9, 0xBA, 0x42, 0xD9, 0xBB, 0x42, 0xD9, 0xBE, + 0x42, 0xD9, 0xBF, 0x42, 0xDA, 0x80, 0x42, 0xDA, + 0x83, 0x42, 0xDA, 0x84, 0x42, 0xDA, 0x86, 0x42, + 0xDA, 0x87, 0x42, 0xDA, 0x88, 0x42, 0xDA, 0x8C, + // Bytes 2c0 - 2ff + 0x42, 0xDA, 0x8D, 0x42, 0xDA, 0x8E, 0x42, 0xDA, + 0x91, 0x42, 0xDA, 0x98, 0x42, 0xDA, 0xA1, 0x42, + 0xDA, 0xA4, 0x42, 0xDA, 0xA6, 0x42, 0xDA, 0xA9, + 0x42, 0xDA, 0xAD, 0x42, 0xDA, 0xAF, 0x42, 0xDA, + 0xB1, 0x42, 0xDA, 0xB3, 0x42, 0xDA, 0xBA, 0x42, + 0xDA, 0xBB, 0x42, 0xDA, 0xBE, 0x42, 0xDB, 0x81, + 0x42, 0xDB, 0x85, 0x42, 0xDB, 0x86, 0x42, 0xDB, + 0x87, 0x42, 0xDB, 0x88, 0x42, 0xDB, 0x89, 0x42, + // Bytes 300 - 33f + 0xDB, 0x8B, 0x42, 0xDB, 0x8C, 0x42, 0xDB, 0x90, + 0x42, 0xDB, 0x92, 0x43, 0xE0, 0xBC, 0x8B, 0x43, + 0xE1, 0x83, 0x9C, 0x43, 0xE1, 0x84, 0x80, 0x43, + 0xE1, 0x84, 0x81, 0x43, 0xE1, 0x84, 0x82, 0x43, + 0xE1, 0x84, 0x83, 0x43, 0xE1, 0x84, 0x84, 0x43, + 0xE1, 0x84, 0x85, 0x43, 0xE1, 0x84, 0x86, 0x43, + 0xE1, 0x84, 0x87, 0x43, 0xE1, 0x84, 0x88, 0x43, + 0xE1, 0x84, 0x89, 0x43, 0xE1, 0x84, 0x8A, 0x43, + // Bytes 340 - 37f + 0xE1, 0x84, 0x8B, 0x43, 0xE1, 0x84, 0x8C, 0x43, + 0xE1, 0x84, 0x8D, 0x43, 0xE1, 0x84, 0x8E, 0x43, + 0xE1, 0x84, 0x8F, 0x43, 0xE1, 0x84, 0x90, 0x43, + 0xE1, 0x84, 0x91, 0x43, 0xE1, 0x84, 0x92, 0x43, + 0xE1, 0x84, 0x94, 0x43, 0xE1, 0x84, 0x95, 0x43, + 0xE1, 0x84, 0x9A, 0x43, 0xE1, 0x84, 0x9C, 0x43, + 0xE1, 0x84, 0x9D, 0x43, 0xE1, 0x84, 0x9E, 0x43, + 0xE1, 0x84, 0xA0, 0x43, 0xE1, 0x84, 0xA1, 0x43, + // Bytes 380 - 3bf + 0xE1, 0x84, 0xA2, 0x43, 0xE1, 0x84, 0xA3, 0x43, + 0xE1, 0x84, 0xA7, 0x43, 0xE1, 0x84, 0xA9, 0x43, + 0xE1, 0x84, 0xAB, 0x43, 0xE1, 0x84, 0xAC, 0x43, + 0xE1, 0x84, 0xAD, 0x43, 0xE1, 0x84, 0xAE, 0x43, + 0xE1, 0x84, 0xAF, 0x43, 0xE1, 0x84, 0xB2, 0x43, + 0xE1, 0x84, 0xB6, 0x43, 0xE1, 0x85, 0x80, 0x43, + 0xE1, 0x85, 0x87, 0x43, 0xE1, 0x85, 0x8C, 0x43, + 0xE1, 0x85, 0x97, 0x43, 0xE1, 0x85, 0x98, 0x43, + // Bytes 3c0 - 3ff + 0xE1, 0x85, 0x99, 0x43, 0xE1, 0x85, 0xA0, 0x43, + 0xE1, 0x86, 0x84, 0x43, 0xE1, 0x86, 0x85, 0x43, + 0xE1, 0x86, 0x88, 0x43, 0xE1, 0x86, 0x91, 0x43, + 0xE1, 0x86, 0x92, 0x43, 0xE1, 0x86, 0x94, 0x43, + 0xE1, 0x86, 0x9E, 0x43, 0xE1, 0x86, 0xA1, 0x43, + 0xE1, 0x87, 0x87, 0x43, 0xE1, 0x87, 0x88, 0x43, + 0xE1, 0x87, 0x8C, 0x43, 0xE1, 0x87, 0x8E, 0x43, + 0xE1, 0x87, 0x93, 0x43, 0xE1, 0x87, 0x97, 0x43, + // Bytes 400 - 43f + 0xE1, 0x87, 0x99, 0x43, 0xE1, 0x87, 0x9D, 0x43, + 0xE1, 0x87, 0x9F, 0x43, 0xE1, 0x87, 0xB1, 0x43, + 0xE1, 0x87, 0xB2, 0x43, 0xE1, 0xB4, 0x82, 0x43, + 0xE1, 0xB4, 0x96, 0x43, 0xE1, 0xB4, 0x97, 0x43, + 0xE1, 0xB4, 0x9C, 0x43, 0xE1, 0xB4, 0x9D, 0x43, + 0xE1, 0xB4, 0xA5, 0x43, 0xE1, 0xB5, 0xBB, 0x43, + 0xE1, 0xB6, 0x85, 0x43, 0xE2, 0x80, 0x82, 0x43, + 0xE2, 0x80, 0x83, 0x43, 0xE2, 0x80, 0x90, 0x43, + // Bytes 440 - 47f + 0xE2, 0x80, 0x93, 0x43, 0xE2, 0x80, 0x94, 0x43, + 0xE2, 0x82, 0xA9, 0x43, 0xE2, 0x86, 0x90, 0x43, + 0xE2, 0x86, 0x91, 0x43, 0xE2, 0x86, 0x92, 0x43, + 0xE2, 0x86, 0x93, 0x43, 0xE2, 0x88, 0x82, 0x43, + 0xE2, 0x88, 0x87, 0x43, 0xE2, 0x88, 0x91, 0x43, + 0xE2, 0x88, 0x92, 0x43, 0xE2, 0x94, 0x82, 0x43, + 0xE2, 0x96, 0xA0, 0x43, 0xE2, 0x97, 0x8B, 0x43, + 0xE2, 0xA6, 0x85, 0x43, 0xE2, 0xA6, 0x86, 0x43, + // Bytes 480 - 4bf + 0xE2, 0xB5, 0xA1, 0x43, 0xE3, 0x80, 0x81, 0x43, + 0xE3, 0x80, 0x82, 0x43, 0xE3, 0x80, 0x88, 0x43, + 0xE3, 0x80, 0x89, 0x43, 0xE3, 0x80, 0x8A, 0x43, + 0xE3, 0x80, 0x8B, 0x43, 0xE3, 0x80, 0x8C, 0x43, + 0xE3, 0x80, 0x8D, 0x43, 0xE3, 0x80, 0x8E, 0x43, + 0xE3, 0x80, 0x8F, 0x43, 0xE3, 0x80, 0x90, 0x43, + 0xE3, 0x80, 0x91, 0x43, 0xE3, 0x80, 0x92, 0x43, + 0xE3, 0x80, 0x94, 0x43, 0xE3, 0x80, 0x95, 0x43, + // Bytes 4c0 - 4ff + 0xE3, 0x80, 0x96, 0x43, 0xE3, 0x80, 0x97, 0x43, + 0xE3, 0x82, 0xA1, 0x43, 0xE3, 0x82, 0xA2, 0x43, + 0xE3, 0x82, 0xA3, 0x43, 0xE3, 0x82, 0xA4, 0x43, + 0xE3, 0x82, 0xA5, 0x43, 0xE3, 0x82, 0xA6, 0x43, + 0xE3, 0x82, 0xA7, 0x43, 0xE3, 0x82, 0xA8, 0x43, + 0xE3, 0x82, 0xA9, 0x43, 0xE3, 0x82, 0xAA, 0x43, + 0xE3, 0x82, 0xAB, 0x43, 0xE3, 0x82, 0xAD, 0x43, + 0xE3, 0x82, 0xAF, 0x43, 0xE3, 0x82, 0xB1, 0x43, + // Bytes 500 - 53f + 0xE3, 0x82, 0xB3, 0x43, 0xE3, 0x82, 0xB5, 0x43, + 0xE3, 0x82, 0xB7, 0x43, 0xE3, 0x82, 0xB9, 0x43, + 0xE3, 0x82, 0xBB, 0x43, 0xE3, 0x82, 0xBD, 0x43, + 0xE3, 0x82, 0xBF, 0x43, 0xE3, 0x83, 0x81, 0x43, + 0xE3, 0x83, 0x83, 0x43, 0xE3, 0x83, 0x84, 0x43, + 0xE3, 0x83, 0x86, 0x43, 0xE3, 0x83, 0x88, 0x43, + 0xE3, 0x83, 0x8A, 0x43, 0xE3, 0x83, 0x8B, 0x43, + 0xE3, 0x83, 0x8C, 0x43, 0xE3, 0x83, 0x8D, 0x43, + // Bytes 540 - 57f + 0xE3, 0x83, 0x8E, 0x43, 0xE3, 0x83, 0x8F, 0x43, + 0xE3, 0x83, 0x92, 0x43, 0xE3, 0x83, 0x95, 0x43, + 0xE3, 0x83, 0x98, 0x43, 0xE3, 0x83, 0x9B, 0x43, + 0xE3, 0x83, 0x9E, 0x43, 0xE3, 0x83, 0x9F, 0x43, + 0xE3, 0x83, 0xA0, 0x43, 0xE3, 0x83, 0xA1, 0x43, + 0xE3, 0x83, 0xA2, 0x43, 0xE3, 0x83, 0xA3, 0x43, + 0xE3, 0x83, 0xA4, 0x43, 0xE3, 0x83, 0xA5, 0x43, + 0xE3, 0x83, 0xA6, 0x43, 0xE3, 0x83, 0xA7, 0x43, + // Bytes 580 - 5bf + 0xE3, 0x83, 0xA8, 0x43, 0xE3, 0x83, 0xA9, 0x43, + 0xE3, 0x83, 0xAA, 0x43, 0xE3, 0x83, 0xAB, 0x43, + 0xE3, 0x83, 0xAC, 0x43, 0xE3, 0x83, 0xAD, 0x43, + 0xE3, 0x83, 0xAF, 0x43, 0xE3, 0x83, 0xB0, 0x43, + 0xE3, 0x83, 0xB1, 0x43, 0xE3, 0x83, 0xB2, 0x43, + 0xE3, 0x83, 0xB3, 0x43, 0xE3, 0x83, 0xBB, 0x43, + 0xE3, 0x83, 0xBC, 0x43, 0xE3, 0x92, 0x9E, 0x43, + 0xE3, 0x92, 0xB9, 0x43, 0xE3, 0x92, 0xBB, 0x43, + // Bytes 5c0 - 5ff + 0xE3, 0x93, 0x9F, 0x43, 0xE3, 0x94, 0x95, 0x43, + 0xE3, 0x9B, 0xAE, 0x43, 0xE3, 0x9B, 0xBC, 0x43, + 0xE3, 0x9E, 0x81, 0x43, 0xE3, 0xA0, 0xAF, 0x43, + 0xE3, 0xA1, 0xA2, 0x43, 0xE3, 0xA1, 0xBC, 0x43, + 0xE3, 0xA3, 0x87, 0x43, 0xE3, 0xA3, 0xA3, 0x43, + 0xE3, 0xA4, 0x9C, 0x43, 0xE3, 0xA4, 0xBA, 0x43, + 0xE3, 0xA8, 0xAE, 0x43, 0xE3, 0xA9, 0xAC, 0x43, + 0xE3, 0xAB, 0xA4, 0x43, 0xE3, 0xAC, 0x88, 0x43, + // Bytes 600 - 63f + 0xE3, 0xAC, 0x99, 0x43, 0xE3, 0xAD, 0x89, 0x43, + 0xE3, 0xAE, 0x9D, 0x43, 0xE3, 0xB0, 0x98, 0x43, + 0xE3, 0xB1, 0x8E, 0x43, 0xE3, 0xB4, 0xB3, 0x43, + 0xE3, 0xB6, 0x96, 0x43, 0xE3, 0xBA, 0xAC, 0x43, + 0xE3, 0xBA, 0xB8, 0x43, 0xE3, 0xBC, 0x9B, 0x43, + 0xE3, 0xBF, 0xBC, 0x43, 0xE4, 0x80, 0x88, 0x43, + 0xE4, 0x80, 0x98, 0x43, 0xE4, 0x80, 0xB9, 0x43, + 0xE4, 0x81, 0x86, 0x43, 0xE4, 0x82, 0x96, 0x43, + // Bytes 640 - 67f + 0xE4, 0x83, 0xA3, 0x43, 0xE4, 0x84, 0xAF, 0x43, + 0xE4, 0x88, 0x82, 0x43, 0xE4, 0x88, 0xA7, 0x43, + 0xE4, 0x8A, 0xA0, 0x43, 0xE4, 0x8C, 0x81, 0x43, + 0xE4, 0x8C, 0xB4, 0x43, 0xE4, 0x8D, 0x99, 0x43, + 0xE4, 0x8F, 0x95, 0x43, 0xE4, 0x8F, 0x99, 0x43, + 0xE4, 0x90, 0x8B, 0x43, 0xE4, 0x91, 0xAB, 0x43, + 0xE4, 0x94, 0xAB, 0x43, 0xE4, 0x95, 0x9D, 0x43, + 0xE4, 0x95, 0xA1, 0x43, 0xE4, 0x95, 0xAB, 0x43, + // Bytes 680 - 6bf + 0xE4, 0x97, 0x97, 0x43, 0xE4, 0x97, 0xB9, 0x43, + 0xE4, 0x98, 0xB5, 0x43, 0xE4, 0x9A, 0xBE, 0x43, + 0xE4, 0x9B, 0x87, 0x43, 0xE4, 0xA6, 0x95, 0x43, + 0xE4, 0xA7, 0xA6, 0x43, 0xE4, 0xA9, 0xAE, 0x43, + 0xE4, 0xA9, 0xB6, 0x43, 0xE4, 0xAA, 0xB2, 0x43, + 0xE4, 0xAC, 0xB3, 0x43, 0xE4, 0xAF, 0x8E, 0x43, + 0xE4, 0xB3, 0x8E, 0x43, 0xE4, 0xB3, 0xAD, 0x43, + 0xE4, 0xB3, 0xB8, 0x43, 0xE4, 0xB5, 0x96, 0x43, + // Bytes 6c0 - 6ff + 0xE4, 0xB8, 0x80, 0x43, 0xE4, 0xB8, 0x81, 0x43, + 0xE4, 0xB8, 0x83, 0x43, 0xE4, 0xB8, 0x89, 0x43, + 0xE4, 0xB8, 0x8A, 0x43, 0xE4, 0xB8, 0x8B, 0x43, + 0xE4, 0xB8, 0x8D, 0x43, 0xE4, 0xB8, 0x99, 0x43, + 0xE4, 0xB8, 0xA6, 0x43, 0xE4, 0xB8, 0xA8, 0x43, + 0xE4, 0xB8, 0xAD, 0x43, 0xE4, 0xB8, 0xB2, 0x43, + 0xE4, 0xB8, 0xB6, 0x43, 0xE4, 0xB8, 0xB8, 0x43, + 0xE4, 0xB8, 0xB9, 0x43, 0xE4, 0xB8, 0xBD, 0x43, + // Bytes 700 - 73f + 0xE4, 0xB8, 0xBF, 0x43, 0xE4, 0xB9, 0x81, 0x43, + 0xE4, 0xB9, 0x99, 0x43, 0xE4, 0xB9, 0x9D, 0x43, + 0xE4, 0xBA, 0x82, 0x43, 0xE4, 0xBA, 0x85, 0x43, + 0xE4, 0xBA, 0x86, 0x43, 0xE4, 0xBA, 0x8C, 0x43, + 0xE4, 0xBA, 0x94, 0x43, 0xE4, 0xBA, 0xA0, 0x43, + 0xE4, 0xBA, 0xA4, 0x43, 0xE4, 0xBA, 0xAE, 0x43, + 0xE4, 0xBA, 0xBA, 0x43, 0xE4, 0xBB, 0x80, 0x43, + 0xE4, 0xBB, 0x8C, 0x43, 0xE4, 0xBB, 0xA4, 0x43, + // Bytes 740 - 77f + 0xE4, 0xBC, 0x81, 0x43, 0xE4, 0xBC, 0x91, 0x43, + 0xE4, 0xBD, 0xA0, 0x43, 0xE4, 0xBE, 0x80, 0x43, + 0xE4, 0xBE, 0x86, 0x43, 0xE4, 0xBE, 0x8B, 0x43, + 0xE4, 0xBE, 0xAE, 0x43, 0xE4, 0xBE, 0xBB, 0x43, + 0xE4, 0xBE, 0xBF, 0x43, 0xE5, 0x80, 0x82, 0x43, + 0xE5, 0x80, 0xAB, 0x43, 0xE5, 0x81, 0xBA, 0x43, + 0xE5, 0x82, 0x99, 0x43, 0xE5, 0x83, 0x8F, 0x43, + 0xE5, 0x83, 0x9A, 0x43, 0xE5, 0x83, 0xA7, 0x43, + // Bytes 780 - 7bf + 0xE5, 0x84, 0xAA, 0x43, 0xE5, 0x84, 0xBF, 0x43, + 0xE5, 0x85, 0x80, 0x43, 0xE5, 0x85, 0x85, 0x43, + 0xE5, 0x85, 0x8D, 0x43, 0xE5, 0x85, 0x94, 0x43, + 0xE5, 0x85, 0xA4, 0x43, 0xE5, 0x85, 0xA5, 0x43, + 0xE5, 0x85, 0xA7, 0x43, 0xE5, 0x85, 0xA8, 0x43, + 0xE5, 0x85, 0xA9, 0x43, 0xE5, 0x85, 0xAB, 0x43, + 0xE5, 0x85, 0xAD, 0x43, 0xE5, 0x85, 0xB7, 0x43, + 0xE5, 0x86, 0x80, 0x43, 0xE5, 0x86, 0x82, 0x43, + // Bytes 7c0 - 7ff + 0xE5, 0x86, 0x8D, 0x43, 0xE5, 0x86, 0x92, 0x43, + 0xE5, 0x86, 0x95, 0x43, 0xE5, 0x86, 0x96, 0x43, + 0xE5, 0x86, 0x97, 0x43, 0xE5, 0x86, 0x99, 0x43, + 0xE5, 0x86, 0xA4, 0x43, 0xE5, 0x86, 0xAB, 0x43, + 0xE5, 0x86, 0xAC, 0x43, 0xE5, 0x86, 0xB5, 0x43, + 0xE5, 0x86, 0xB7, 0x43, 0xE5, 0x87, 0x89, 0x43, + 0xE5, 0x87, 0x8C, 0x43, 0xE5, 0x87, 0x9C, 0x43, + 0xE5, 0x87, 0x9E, 0x43, 0xE5, 0x87, 0xA0, 0x43, + // Bytes 800 - 83f + 0xE5, 0x87, 0xB5, 0x43, 0xE5, 0x88, 0x80, 0x43, + 0xE5, 0x88, 0x83, 0x43, 0xE5, 0x88, 0x87, 0x43, + 0xE5, 0x88, 0x97, 0x43, 0xE5, 0x88, 0x9D, 0x43, + 0xE5, 0x88, 0xA9, 0x43, 0xE5, 0x88, 0xBA, 0x43, + 0xE5, 0x88, 0xBB, 0x43, 0xE5, 0x89, 0x86, 0x43, + 0xE5, 0x89, 0x8D, 0x43, 0xE5, 0x89, 0xB2, 0x43, + 0xE5, 0x89, 0xB7, 0x43, 0xE5, 0x8A, 0x89, 0x43, + 0xE5, 0x8A, 0x9B, 0x43, 0xE5, 0x8A, 0xA3, 0x43, + // Bytes 840 - 87f + 0xE5, 0x8A, 0xB3, 0x43, 0xE5, 0x8A, 0xB4, 0x43, + 0xE5, 0x8B, 0x87, 0x43, 0xE5, 0x8B, 0x89, 0x43, + 0xE5, 0x8B, 0x92, 0x43, 0xE5, 0x8B, 0x9E, 0x43, + 0xE5, 0x8B, 0xA4, 0x43, 0xE5, 0x8B, 0xB5, 0x43, + 0xE5, 0x8B, 0xB9, 0x43, 0xE5, 0x8B, 0xBA, 0x43, + 0xE5, 0x8C, 0x85, 0x43, 0xE5, 0x8C, 0x86, 0x43, + 0xE5, 0x8C, 0x95, 0x43, 0xE5, 0x8C, 0x97, 0x43, + 0xE5, 0x8C, 0x9A, 0x43, 0xE5, 0x8C, 0xB8, 0x43, + // Bytes 880 - 8bf + 0xE5, 0x8C, 0xBB, 0x43, 0xE5, 0x8C, 0xBF, 0x43, + 0xE5, 0x8D, 0x81, 0x43, 0xE5, 0x8D, 0x84, 0x43, + 0xE5, 0x8D, 0x85, 0x43, 0xE5, 0x8D, 0x89, 0x43, + 0xE5, 0x8D, 0x91, 0x43, 0xE5, 0x8D, 0x94, 0x43, + 0xE5, 0x8D, 0x9A, 0x43, 0xE5, 0x8D, 0x9C, 0x43, + 0xE5, 0x8D, 0xA9, 0x43, 0xE5, 0x8D, 0xB0, 0x43, + 0xE5, 0x8D, 0xB3, 0x43, 0xE5, 0x8D, 0xB5, 0x43, + 0xE5, 0x8D, 0xBD, 0x43, 0xE5, 0x8D, 0xBF, 0x43, + // Bytes 8c0 - 8ff + 0xE5, 0x8E, 0x82, 0x43, 0xE5, 0x8E, 0xB6, 0x43, + 0xE5, 0x8F, 0x83, 0x43, 0xE5, 0x8F, 0x88, 0x43, + 0xE5, 0x8F, 0x8A, 0x43, 0xE5, 0x8F, 0x8C, 0x43, + 0xE5, 0x8F, 0x9F, 0x43, 0xE5, 0x8F, 0xA3, 0x43, + 0xE5, 0x8F, 0xA5, 0x43, 0xE5, 0x8F, 0xAB, 0x43, + 0xE5, 0x8F, 0xAF, 0x43, 0xE5, 0x8F, 0xB1, 0x43, + 0xE5, 0x8F, 0xB3, 0x43, 0xE5, 0x90, 0x86, 0x43, + 0xE5, 0x90, 0x88, 0x43, 0xE5, 0x90, 0x8D, 0x43, + // Bytes 900 - 93f + 0xE5, 0x90, 0x8F, 0x43, 0xE5, 0x90, 0x9D, 0x43, + 0xE5, 0x90, 0xB8, 0x43, 0xE5, 0x90, 0xB9, 0x43, + 0xE5, 0x91, 0x82, 0x43, 0xE5, 0x91, 0x88, 0x43, + 0xE5, 0x91, 0xA8, 0x43, 0xE5, 0x92, 0x9E, 0x43, + 0xE5, 0x92, 0xA2, 0x43, 0xE5, 0x92, 0xBD, 0x43, + 0xE5, 0x93, 0xB6, 0x43, 0xE5, 0x94, 0x90, 0x43, + 0xE5, 0x95, 0x8F, 0x43, 0xE5, 0x95, 0x93, 0x43, + 0xE5, 0x95, 0x95, 0x43, 0xE5, 0x95, 0xA3, 0x43, + // Bytes 940 - 97f + 0xE5, 0x96, 0x84, 0x43, 0xE5, 0x96, 0x87, 0x43, + 0xE5, 0x96, 0x99, 0x43, 0xE5, 0x96, 0x9D, 0x43, + 0xE5, 0x96, 0xAB, 0x43, 0xE5, 0x96, 0xB3, 0x43, + 0xE5, 0x96, 0xB6, 0x43, 0xE5, 0x97, 0x80, 0x43, + 0xE5, 0x97, 0x82, 0x43, 0xE5, 0x97, 0xA2, 0x43, + 0xE5, 0x98, 0x86, 0x43, 0xE5, 0x99, 0x91, 0x43, + 0xE5, 0x99, 0xA8, 0x43, 0xE5, 0x99, 0xB4, 0x43, + 0xE5, 0x9B, 0x97, 0x43, 0xE5, 0x9B, 0x9B, 0x43, + // Bytes 980 - 9bf + 0xE5, 0x9B, 0xB9, 0x43, 0xE5, 0x9C, 0x96, 0x43, + 0xE5, 0x9C, 0x97, 0x43, 0xE5, 0x9C, 0x9F, 0x43, + 0xE5, 0x9C, 0xB0, 0x43, 0xE5, 0x9E, 0x8B, 0x43, + 0xE5, 0x9F, 0x8E, 0x43, 0xE5, 0x9F, 0xB4, 0x43, + 0xE5, 0xA0, 0x8D, 0x43, 0xE5, 0xA0, 0xB1, 0x43, + 0xE5, 0xA0, 0xB2, 0x43, 0xE5, 0xA1, 0x80, 0x43, + 0xE5, 0xA1, 0x9A, 0x43, 0xE5, 0xA1, 0x9E, 0x43, + 0xE5, 0xA2, 0xA8, 0x43, 0xE5, 0xA2, 0xAC, 0x43, + // Bytes 9c0 - 9ff + 0xE5, 0xA2, 0xB3, 0x43, 0xE5, 0xA3, 0x98, 0x43, + 0xE5, 0xA3, 0x9F, 0x43, 0xE5, 0xA3, 0xAB, 0x43, + 0xE5, 0xA3, 0xAE, 0x43, 0xE5, 0xA3, 0xB0, 0x43, + 0xE5, 0xA3, 0xB2, 0x43, 0xE5, 0xA3, 0xB7, 0x43, + 0xE5, 0xA4, 0x82, 0x43, 0xE5, 0xA4, 0x86, 0x43, + 0xE5, 0xA4, 0x8A, 0x43, 0xE5, 0xA4, 0x95, 0x43, + 0xE5, 0xA4, 0x9A, 0x43, 0xE5, 0xA4, 0x9C, 0x43, + 0xE5, 0xA4, 0xA2, 0x43, 0xE5, 0xA4, 0xA7, 0x43, + // Bytes a00 - a3f + 0xE5, 0xA4, 0xA9, 0x43, 0xE5, 0xA5, 0x84, 0x43, + 0xE5, 0xA5, 0x88, 0x43, 0xE5, 0xA5, 0x91, 0x43, + 0xE5, 0xA5, 0x94, 0x43, 0xE5, 0xA5, 0xA2, 0x43, + 0xE5, 0xA5, 0xB3, 0x43, 0xE5, 0xA7, 0x98, 0x43, + 0xE5, 0xA7, 0xAC, 0x43, 0xE5, 0xA8, 0x9B, 0x43, + 0xE5, 0xA8, 0xA7, 0x43, 0xE5, 0xA9, 0xA2, 0x43, + 0xE5, 0xA9, 0xA6, 0x43, 0xE5, 0xAA, 0xB5, 0x43, + 0xE5, 0xAC, 0x88, 0x43, 0xE5, 0xAC, 0xA8, 0x43, + // Bytes a40 - a7f + 0xE5, 0xAC, 0xBE, 0x43, 0xE5, 0xAD, 0x90, 0x43, + 0xE5, 0xAD, 0x97, 0x43, 0xE5, 0xAD, 0xA6, 0x43, + 0xE5, 0xAE, 0x80, 0x43, 0xE5, 0xAE, 0x85, 0x43, + 0xE5, 0xAE, 0x97, 0x43, 0xE5, 0xAF, 0x83, 0x43, + 0xE5, 0xAF, 0x98, 0x43, 0xE5, 0xAF, 0xA7, 0x43, + 0xE5, 0xAF, 0xAE, 0x43, 0xE5, 0xAF, 0xB3, 0x43, + 0xE5, 0xAF, 0xB8, 0x43, 0xE5, 0xAF, 0xBF, 0x43, + 0xE5, 0xB0, 0x86, 0x43, 0xE5, 0xB0, 0x8F, 0x43, + // Bytes a80 - abf + 0xE5, 0xB0, 0xA2, 0x43, 0xE5, 0xB0, 0xB8, 0x43, + 0xE5, 0xB0, 0xBF, 0x43, 0xE5, 0xB1, 0xA0, 0x43, + 0xE5, 0xB1, 0xA2, 0x43, 0xE5, 0xB1, 0xA4, 0x43, + 0xE5, 0xB1, 0xA5, 0x43, 0xE5, 0xB1, 0xAE, 0x43, + 0xE5, 0xB1, 0xB1, 0x43, 0xE5, 0xB2, 0x8D, 0x43, + 0xE5, 0xB3, 0x80, 0x43, 0xE5, 0xB4, 0x99, 0x43, + 0xE5, 0xB5, 0x83, 0x43, 0xE5, 0xB5, 0x90, 0x43, + 0xE5, 0xB5, 0xAB, 0x43, 0xE5, 0xB5, 0xAE, 0x43, + // Bytes ac0 - aff + 0xE5, 0xB5, 0xBC, 0x43, 0xE5, 0xB6, 0xB2, 0x43, + 0xE5, 0xB6, 0xBA, 0x43, 0xE5, 0xB7, 0x9B, 0x43, + 0xE5, 0xB7, 0xA1, 0x43, 0xE5, 0xB7, 0xA2, 0x43, + 0xE5, 0xB7, 0xA5, 0x43, 0xE5, 0xB7, 0xA6, 0x43, + 0xE5, 0xB7, 0xB1, 0x43, 0xE5, 0xB7, 0xBD, 0x43, + 0xE5, 0xB7, 0xBE, 0x43, 0xE5, 0xB8, 0xA8, 0x43, + 0xE5, 0xB8, 0xBD, 0x43, 0xE5, 0xB9, 0xA9, 0x43, + 0xE5, 0xB9, 0xB2, 0x43, 0xE5, 0xB9, 0xB4, 0x43, + // Bytes b00 - b3f + 0xE5, 0xB9, 0xBA, 0x43, 0xE5, 0xB9, 0xBC, 0x43, + 0xE5, 0xB9, 0xBF, 0x43, 0xE5, 0xBA, 0xA6, 0x43, + 0xE5, 0xBA, 0xB0, 0x43, 0xE5, 0xBA, 0xB3, 0x43, + 0xE5, 0xBA, 0xB6, 0x43, 0xE5, 0xBB, 0x89, 0x43, + 0xE5, 0xBB, 0x8A, 0x43, 0xE5, 0xBB, 0x92, 0x43, + 0xE5, 0xBB, 0x93, 0x43, 0xE5, 0xBB, 0x99, 0x43, + 0xE5, 0xBB, 0xAC, 0x43, 0xE5, 0xBB, 0xB4, 0x43, + 0xE5, 0xBB, 0xBE, 0x43, 0xE5, 0xBC, 0x84, 0x43, + // Bytes b40 - b7f + 0xE5, 0xBC, 0x8B, 0x43, 0xE5, 0xBC, 0x93, 0x43, + 0xE5, 0xBC, 0xA2, 0x43, 0xE5, 0xBD, 0x90, 0x43, + 0xE5, 0xBD, 0x93, 0x43, 0xE5, 0xBD, 0xA1, 0x43, + 0xE5, 0xBD, 0xA2, 0x43, 0xE5, 0xBD, 0xA9, 0x43, + 0xE5, 0xBD, 0xAB, 0x43, 0xE5, 0xBD, 0xB3, 0x43, + 0xE5, 0xBE, 0x8B, 0x43, 0xE5, 0xBE, 0x8C, 0x43, + 0xE5, 0xBE, 0x97, 0x43, 0xE5, 0xBE, 0x9A, 0x43, + 0xE5, 0xBE, 0xA9, 0x43, 0xE5, 0xBE, 0xAD, 0x43, + // Bytes b80 - bbf + 0xE5, 0xBF, 0x83, 0x43, 0xE5, 0xBF, 0x8D, 0x43, + 0xE5, 0xBF, 0x97, 0x43, 0xE5, 0xBF, 0xB5, 0x43, + 0xE5, 0xBF, 0xB9, 0x43, 0xE6, 0x80, 0x92, 0x43, + 0xE6, 0x80, 0x9C, 0x43, 0xE6, 0x81, 0xB5, 0x43, + 0xE6, 0x82, 0x81, 0x43, 0xE6, 0x82, 0x94, 0x43, + 0xE6, 0x83, 0x87, 0x43, 0xE6, 0x83, 0x98, 0x43, + 0xE6, 0x83, 0xA1, 0x43, 0xE6, 0x84, 0x88, 0x43, + 0xE6, 0x85, 0x84, 0x43, 0xE6, 0x85, 0x88, 0x43, + // Bytes bc0 - bff + 0xE6, 0x85, 0x8C, 0x43, 0xE6, 0x85, 0x8E, 0x43, + 0xE6, 0x85, 0xA0, 0x43, 0xE6, 0x85, 0xA8, 0x43, + 0xE6, 0x85, 0xBA, 0x43, 0xE6, 0x86, 0x8E, 0x43, + 0xE6, 0x86, 0x90, 0x43, 0xE6, 0x86, 0xA4, 0x43, + 0xE6, 0x86, 0xAF, 0x43, 0xE6, 0x86, 0xB2, 0x43, + 0xE6, 0x87, 0x9E, 0x43, 0xE6, 0x87, 0xB2, 0x43, + 0xE6, 0x87, 0xB6, 0x43, 0xE6, 0x88, 0x80, 0x43, + 0xE6, 0x88, 0x88, 0x43, 0xE6, 0x88, 0x90, 0x43, + // Bytes c00 - c3f + 0xE6, 0x88, 0x9B, 0x43, 0xE6, 0x88, 0xAE, 0x43, + 0xE6, 0x88, 0xB4, 0x43, 0xE6, 0x88, 0xB6, 0x43, + 0xE6, 0x89, 0x8B, 0x43, 0xE6, 0x89, 0x93, 0x43, + 0xE6, 0x89, 0x9D, 0x43, 0xE6, 0x8A, 0x95, 0x43, + 0xE6, 0x8A, 0xB1, 0x43, 0xE6, 0x8B, 0x89, 0x43, + 0xE6, 0x8B, 0x8F, 0x43, 0xE6, 0x8B, 0x93, 0x43, + 0xE6, 0x8B, 0x94, 0x43, 0xE6, 0x8B, 0xBC, 0x43, + 0xE6, 0x8B, 0xBE, 0x43, 0xE6, 0x8C, 0x87, 0x43, + // Bytes c40 - c7f + 0xE6, 0x8C, 0xBD, 0x43, 0xE6, 0x8D, 0x90, 0x43, + 0xE6, 0x8D, 0x95, 0x43, 0xE6, 0x8D, 0xA8, 0x43, + 0xE6, 0x8D, 0xBB, 0x43, 0xE6, 0x8E, 0x83, 0x43, + 0xE6, 0x8E, 0xA0, 0x43, 0xE6, 0x8E, 0xA9, 0x43, + 0xE6, 0x8F, 0x84, 0x43, 0xE6, 0x8F, 0x85, 0x43, + 0xE6, 0x8F, 0xA4, 0x43, 0xE6, 0x90, 0x9C, 0x43, + 0xE6, 0x90, 0xA2, 0x43, 0xE6, 0x91, 0x92, 0x43, + 0xE6, 0x91, 0xA9, 0x43, 0xE6, 0x91, 0xB7, 0x43, + // Bytes c80 - cbf + 0xE6, 0x91, 0xBE, 0x43, 0xE6, 0x92, 0x9A, 0x43, + 0xE6, 0x92, 0x9D, 0x43, 0xE6, 0x93, 0x84, 0x43, + 0xE6, 0x94, 0xAF, 0x43, 0xE6, 0x94, 0xB4, 0x43, + 0xE6, 0x95, 0x8F, 0x43, 0xE6, 0x95, 0x96, 0x43, + 0xE6, 0x95, 0xAC, 0x43, 0xE6, 0x95, 0xB8, 0x43, + 0xE6, 0x96, 0x87, 0x43, 0xE6, 0x96, 0x97, 0x43, + 0xE6, 0x96, 0x99, 0x43, 0xE6, 0x96, 0xA4, 0x43, + 0xE6, 0x96, 0xB0, 0x43, 0xE6, 0x96, 0xB9, 0x43, + // Bytes cc0 - cff + 0xE6, 0x97, 0x85, 0x43, 0xE6, 0x97, 0xA0, 0x43, + 0xE6, 0x97, 0xA2, 0x43, 0xE6, 0x97, 0xA3, 0x43, + 0xE6, 0x97, 0xA5, 0x43, 0xE6, 0x98, 0x93, 0x43, + 0xE6, 0x98, 0xA0, 0x43, 0xE6, 0x99, 0x89, 0x43, + 0xE6, 0x99, 0xB4, 0x43, 0xE6, 0x9A, 0x88, 0x43, + 0xE6, 0x9A, 0x91, 0x43, 0xE6, 0x9A, 0x9C, 0x43, + 0xE6, 0x9A, 0xB4, 0x43, 0xE6, 0x9B, 0x86, 0x43, + 0xE6, 0x9B, 0xB0, 0x43, 0xE6, 0x9B, 0xB4, 0x43, + // Bytes d00 - d3f + 0xE6, 0x9B, 0xB8, 0x43, 0xE6, 0x9C, 0x80, 0x43, + 0xE6, 0x9C, 0x88, 0x43, 0xE6, 0x9C, 0x89, 0x43, + 0xE6, 0x9C, 0x97, 0x43, 0xE6, 0x9C, 0x9B, 0x43, + 0xE6, 0x9C, 0xA1, 0x43, 0xE6, 0x9C, 0xA8, 0x43, + 0xE6, 0x9D, 0x8E, 0x43, 0xE6, 0x9D, 0x93, 0x43, + 0xE6, 0x9D, 0x96, 0x43, 0xE6, 0x9D, 0x9E, 0x43, + 0xE6, 0x9D, 0xBB, 0x43, 0xE6, 0x9E, 0x85, 0x43, + 0xE6, 0x9E, 0x97, 0x43, 0xE6, 0x9F, 0xB3, 0x43, + // Bytes d40 - d7f + 0xE6, 0x9F, 0xBA, 0x43, 0xE6, 0xA0, 0x97, 0x43, + 0xE6, 0xA0, 0x9F, 0x43, 0xE6, 0xA0, 0xAA, 0x43, + 0xE6, 0xA1, 0x92, 0x43, 0xE6, 0xA2, 0x81, 0x43, + 0xE6, 0xA2, 0x85, 0x43, 0xE6, 0xA2, 0x8E, 0x43, + 0xE6, 0xA2, 0xA8, 0x43, 0xE6, 0xA4, 0x94, 0x43, + 0xE6, 0xA5, 0x82, 0x43, 0xE6, 0xA6, 0xA3, 0x43, + 0xE6, 0xA7, 0xAA, 0x43, 0xE6, 0xA8, 0x82, 0x43, + 0xE6, 0xA8, 0x93, 0x43, 0xE6, 0xAA, 0xA8, 0x43, + // Bytes d80 - dbf + 0xE6, 0xAB, 0x93, 0x43, 0xE6, 0xAB, 0x9B, 0x43, + 0xE6, 0xAC, 0x84, 0x43, 0xE6, 0xAC, 0xA0, 0x43, + 0xE6, 0xAC, 0xA1, 0x43, 0xE6, 0xAD, 0x94, 0x43, + 0xE6, 0xAD, 0xA2, 0x43, 0xE6, 0xAD, 0xA3, 0x43, + 0xE6, 0xAD, 0xB2, 0x43, 0xE6, 0xAD, 0xB7, 0x43, + 0xE6, 0xAD, 0xB9, 0x43, 0xE6, 0xAE, 0x9F, 0x43, + 0xE6, 0xAE, 0xAE, 0x43, 0xE6, 0xAE, 0xB3, 0x43, + 0xE6, 0xAE, 0xBA, 0x43, 0xE6, 0xAE, 0xBB, 0x43, + // Bytes dc0 - dff + 0xE6, 0xAF, 0x8B, 0x43, 0xE6, 0xAF, 0x8D, 0x43, + 0xE6, 0xAF, 0x94, 0x43, 0xE6, 0xAF, 0x9B, 0x43, + 0xE6, 0xB0, 0x8F, 0x43, 0xE6, 0xB0, 0x94, 0x43, + 0xE6, 0xB0, 0xB4, 0x43, 0xE6, 0xB1, 0x8E, 0x43, + 0xE6, 0xB1, 0xA7, 0x43, 0xE6, 0xB2, 0x88, 0x43, + 0xE6, 0xB2, 0xBF, 0x43, 0xE6, 0xB3, 0x8C, 0x43, + 0xE6, 0xB3, 0x8D, 0x43, 0xE6, 0xB3, 0xA5, 0x43, + 0xE6, 0xB3, 0xA8, 0x43, 0xE6, 0xB4, 0x96, 0x43, + // Bytes e00 - e3f + 0xE6, 0xB4, 0x9B, 0x43, 0xE6, 0xB4, 0x9E, 0x43, + 0xE6, 0xB4, 0xB4, 0x43, 0xE6, 0xB4, 0xBE, 0x43, + 0xE6, 0xB5, 0x81, 0x43, 0xE6, 0xB5, 0xA9, 0x43, + 0xE6, 0xB5, 0xAA, 0x43, 0xE6, 0xB5, 0xB7, 0x43, + 0xE6, 0xB5, 0xB8, 0x43, 0xE6, 0xB6, 0x85, 0x43, + 0xE6, 0xB7, 0x8B, 0x43, 0xE6, 0xB7, 0x9A, 0x43, + 0xE6, 0xB7, 0xAA, 0x43, 0xE6, 0xB7, 0xB9, 0x43, + 0xE6, 0xB8, 0x9A, 0x43, 0xE6, 0xB8, 0xAF, 0x43, + // Bytes e40 - e7f + 0xE6, 0xB9, 0xAE, 0x43, 0xE6, 0xBA, 0x80, 0x43, + 0xE6, 0xBA, 0x9C, 0x43, 0xE6, 0xBA, 0xBA, 0x43, + 0xE6, 0xBB, 0x87, 0x43, 0xE6, 0xBB, 0x8B, 0x43, + 0xE6, 0xBB, 0x91, 0x43, 0xE6, 0xBB, 0x9B, 0x43, + 0xE6, 0xBC, 0x8F, 0x43, 0xE6, 0xBC, 0x94, 0x43, + 0xE6, 0xBC, 0xA2, 0x43, 0xE6, 0xBC, 0xA3, 0x43, + 0xE6, 0xBD, 0xAE, 0x43, 0xE6, 0xBF, 0x86, 0x43, + 0xE6, 0xBF, 0xAB, 0x43, 0xE6, 0xBF, 0xBE, 0x43, + // Bytes e80 - ebf + 0xE7, 0x80, 0x9B, 0x43, 0xE7, 0x80, 0x9E, 0x43, + 0xE7, 0x80, 0xB9, 0x43, 0xE7, 0x81, 0x8A, 0x43, + 0xE7, 0x81, 0xAB, 0x43, 0xE7, 0x81, 0xB0, 0x43, + 0xE7, 0x81, 0xB7, 0x43, 0xE7, 0x81, 0xBD, 0x43, + 0xE7, 0x82, 0x99, 0x43, 0xE7, 0x82, 0xAD, 0x43, + 0xE7, 0x83, 0x88, 0x43, 0xE7, 0x83, 0x99, 0x43, + 0xE7, 0x84, 0xA1, 0x43, 0xE7, 0x85, 0x85, 0x43, + 0xE7, 0x85, 0x89, 0x43, 0xE7, 0x85, 0xAE, 0x43, + // Bytes ec0 - eff + 0xE7, 0x86, 0x9C, 0x43, 0xE7, 0x87, 0x8E, 0x43, + 0xE7, 0x87, 0x90, 0x43, 0xE7, 0x88, 0x90, 0x43, + 0xE7, 0x88, 0x9B, 0x43, 0xE7, 0x88, 0xA8, 0x43, + 0xE7, 0x88, 0xAA, 0x43, 0xE7, 0x88, 0xAB, 0x43, + 0xE7, 0x88, 0xB5, 0x43, 0xE7, 0x88, 0xB6, 0x43, + 0xE7, 0x88, 0xBB, 0x43, 0xE7, 0x88, 0xBF, 0x43, + 0xE7, 0x89, 0x87, 0x43, 0xE7, 0x89, 0x90, 0x43, + 0xE7, 0x89, 0x99, 0x43, 0xE7, 0x89, 0x9B, 0x43, + // Bytes f00 - f3f + 0xE7, 0x89, 0xA2, 0x43, 0xE7, 0x89, 0xB9, 0x43, + 0xE7, 0x8A, 0x80, 0x43, 0xE7, 0x8A, 0x95, 0x43, + 0xE7, 0x8A, 0xAC, 0x43, 0xE7, 0x8A, 0xAF, 0x43, + 0xE7, 0x8B, 0x80, 0x43, 0xE7, 0x8B, 0xBC, 0x43, + 0xE7, 0x8C, 0xAA, 0x43, 0xE7, 0x8D, 0xB5, 0x43, + 0xE7, 0x8D, 0xBA, 0x43, 0xE7, 0x8E, 0x84, 0x43, + 0xE7, 0x8E, 0x87, 0x43, 0xE7, 0x8E, 0x89, 0x43, + 0xE7, 0x8E, 0x8B, 0x43, 0xE7, 0x8E, 0xA5, 0x43, + // Bytes f40 - f7f + 0xE7, 0x8E, 0xB2, 0x43, 0xE7, 0x8F, 0x9E, 0x43, + 0xE7, 0x90, 0x86, 0x43, 0xE7, 0x90, 0x89, 0x43, + 0xE7, 0x90, 0xA2, 0x43, 0xE7, 0x91, 0x87, 0x43, + 0xE7, 0x91, 0x9C, 0x43, 0xE7, 0x91, 0xA9, 0x43, + 0xE7, 0x91, 0xB1, 0x43, 0xE7, 0x92, 0x85, 0x43, + 0xE7, 0x92, 0x89, 0x43, 0xE7, 0x92, 0x98, 0x43, + 0xE7, 0x93, 0x8A, 0x43, 0xE7, 0x93, 0x9C, 0x43, + 0xE7, 0x93, 0xA6, 0x43, 0xE7, 0x94, 0x86, 0x43, + // Bytes f80 - fbf + 0xE7, 0x94, 0x98, 0x43, 0xE7, 0x94, 0x9F, 0x43, + 0xE7, 0x94, 0xA4, 0x43, 0xE7, 0x94, 0xA8, 0x43, + 0xE7, 0x94, 0xB0, 0x43, 0xE7, 0x94, 0xB2, 0x43, + 0xE7, 0x94, 0xB3, 0x43, 0xE7, 0x94, 0xB7, 0x43, + 0xE7, 0x94, 0xBB, 0x43, 0xE7, 0x94, 0xBE, 0x43, + 0xE7, 0x95, 0x99, 0x43, 0xE7, 0x95, 0xA5, 0x43, + 0xE7, 0x95, 0xB0, 0x43, 0xE7, 0x96, 0x8B, 0x43, + 0xE7, 0x96, 0x92, 0x43, 0xE7, 0x97, 0xA2, 0x43, + // Bytes fc0 - fff + 0xE7, 0x98, 0x90, 0x43, 0xE7, 0x98, 0x9D, 0x43, + 0xE7, 0x98, 0x9F, 0x43, 0xE7, 0x99, 0x82, 0x43, + 0xE7, 0x99, 0xA9, 0x43, 0xE7, 0x99, 0xB6, 0x43, + 0xE7, 0x99, 0xBD, 0x43, 0xE7, 0x9A, 0xAE, 0x43, + 0xE7, 0x9A, 0xBF, 0x43, 0xE7, 0x9B, 0x8A, 0x43, + 0xE7, 0x9B, 0x9B, 0x43, 0xE7, 0x9B, 0xA3, 0x43, + 0xE7, 0x9B, 0xA7, 0x43, 0xE7, 0x9B, 0xAE, 0x43, + 0xE7, 0x9B, 0xB4, 0x43, 0xE7, 0x9C, 0x81, 0x43, + // Bytes 1000 - 103f + 0xE7, 0x9C, 0x9E, 0x43, 0xE7, 0x9C, 0x9F, 0x43, + 0xE7, 0x9D, 0x80, 0x43, 0xE7, 0x9D, 0x8A, 0x43, + 0xE7, 0x9E, 0x8B, 0x43, 0xE7, 0x9E, 0xA7, 0x43, + 0xE7, 0x9F, 0x9B, 0x43, 0xE7, 0x9F, 0xA2, 0x43, + 0xE7, 0x9F, 0xB3, 0x43, 0xE7, 0xA1, 0x8E, 0x43, + 0xE7, 0xA1, 0xAB, 0x43, 0xE7, 0xA2, 0x8C, 0x43, + 0xE7, 0xA2, 0x91, 0x43, 0xE7, 0xA3, 0x8A, 0x43, + 0xE7, 0xA3, 0x8C, 0x43, 0xE7, 0xA3, 0xBB, 0x43, + // Bytes 1040 - 107f + 0xE7, 0xA4, 0xAA, 0x43, 0xE7, 0xA4, 0xBA, 0x43, + 0xE7, 0xA4, 0xBC, 0x43, 0xE7, 0xA4, 0xBE, 0x43, + 0xE7, 0xA5, 0x88, 0x43, 0xE7, 0xA5, 0x89, 0x43, + 0xE7, 0xA5, 0x90, 0x43, 0xE7, 0xA5, 0x96, 0x43, + 0xE7, 0xA5, 0x9D, 0x43, 0xE7, 0xA5, 0x9E, 0x43, + 0xE7, 0xA5, 0xA5, 0x43, 0xE7, 0xA5, 0xBF, 0x43, + 0xE7, 0xA6, 0x81, 0x43, 0xE7, 0xA6, 0x8D, 0x43, + 0xE7, 0xA6, 0x8E, 0x43, 0xE7, 0xA6, 0x8F, 0x43, + // Bytes 1080 - 10bf + 0xE7, 0xA6, 0xAE, 0x43, 0xE7, 0xA6, 0xB8, 0x43, + 0xE7, 0xA6, 0xBE, 0x43, 0xE7, 0xA7, 0x8A, 0x43, + 0xE7, 0xA7, 0x98, 0x43, 0xE7, 0xA7, 0xAB, 0x43, + 0xE7, 0xA8, 0x9C, 0x43, 0xE7, 0xA9, 0x80, 0x43, + 0xE7, 0xA9, 0x8A, 0x43, 0xE7, 0xA9, 0x8F, 0x43, + 0xE7, 0xA9, 0xB4, 0x43, 0xE7, 0xA9, 0xBA, 0x43, + 0xE7, 0xAA, 0x81, 0x43, 0xE7, 0xAA, 0xB1, 0x43, + 0xE7, 0xAB, 0x8B, 0x43, 0xE7, 0xAB, 0xAE, 0x43, + // Bytes 10c0 - 10ff + 0xE7, 0xAB, 0xB9, 0x43, 0xE7, 0xAC, 0xA0, 0x43, + 0xE7, 0xAE, 0x8F, 0x43, 0xE7, 0xAF, 0x80, 0x43, + 0xE7, 0xAF, 0x86, 0x43, 0xE7, 0xAF, 0x89, 0x43, + 0xE7, 0xB0, 0xBE, 0x43, 0xE7, 0xB1, 0xA0, 0x43, + 0xE7, 0xB1, 0xB3, 0x43, 0xE7, 0xB1, 0xBB, 0x43, + 0xE7, 0xB2, 0x92, 0x43, 0xE7, 0xB2, 0xBE, 0x43, + 0xE7, 0xB3, 0x92, 0x43, 0xE7, 0xB3, 0x96, 0x43, + 0xE7, 0xB3, 0xA3, 0x43, 0xE7, 0xB3, 0xA7, 0x43, + // Bytes 1100 - 113f + 0xE7, 0xB3, 0xA8, 0x43, 0xE7, 0xB3, 0xB8, 0x43, + 0xE7, 0xB4, 0x80, 0x43, 0xE7, 0xB4, 0x90, 0x43, + 0xE7, 0xB4, 0xA2, 0x43, 0xE7, 0xB4, 0xAF, 0x43, + 0xE7, 0xB5, 0x82, 0x43, 0xE7, 0xB5, 0x9B, 0x43, + 0xE7, 0xB5, 0xA3, 0x43, 0xE7, 0xB6, 0xA0, 0x43, + 0xE7, 0xB6, 0xBE, 0x43, 0xE7, 0xB7, 0x87, 0x43, + 0xE7, 0xB7, 0xB4, 0x43, 0xE7, 0xB8, 0x82, 0x43, + 0xE7, 0xB8, 0x89, 0x43, 0xE7, 0xB8, 0xB7, 0x43, + // Bytes 1140 - 117f + 0xE7, 0xB9, 0x81, 0x43, 0xE7, 0xB9, 0x85, 0x43, + 0xE7, 0xBC, 0xB6, 0x43, 0xE7, 0xBC, 0xBE, 0x43, + 0xE7, 0xBD, 0x91, 0x43, 0xE7, 0xBD, 0xB2, 0x43, + 0xE7, 0xBD, 0xB9, 0x43, 0xE7, 0xBD, 0xBA, 0x43, + 0xE7, 0xBE, 0x85, 0x43, 0xE7, 0xBE, 0x8A, 0x43, + 0xE7, 0xBE, 0x95, 0x43, 0xE7, 0xBE, 0x9A, 0x43, + 0xE7, 0xBE, 0xBD, 0x43, 0xE7, 0xBF, 0xBA, 0x43, + 0xE8, 0x80, 0x81, 0x43, 0xE8, 0x80, 0x85, 0x43, + // Bytes 1180 - 11bf + 0xE8, 0x80, 0x8C, 0x43, 0xE8, 0x80, 0x92, 0x43, + 0xE8, 0x80, 0xB3, 0x43, 0xE8, 0x81, 0x86, 0x43, + 0xE8, 0x81, 0xA0, 0x43, 0xE8, 0x81, 0xAF, 0x43, + 0xE8, 0x81, 0xB0, 0x43, 0xE8, 0x81, 0xBE, 0x43, + 0xE8, 0x81, 0xBF, 0x43, 0xE8, 0x82, 0x89, 0x43, + 0xE8, 0x82, 0x8B, 0x43, 0xE8, 0x82, 0xAD, 0x43, + 0xE8, 0x82, 0xB2, 0x43, 0xE8, 0x84, 0x83, 0x43, + 0xE8, 0x84, 0xBE, 0x43, 0xE8, 0x87, 0x98, 0x43, + // Bytes 11c0 - 11ff + 0xE8, 0x87, 0xA3, 0x43, 0xE8, 0x87, 0xA8, 0x43, + 0xE8, 0x87, 0xAA, 0x43, 0xE8, 0x87, 0xAD, 0x43, + 0xE8, 0x87, 0xB3, 0x43, 0xE8, 0x87, 0xBC, 0x43, + 0xE8, 0x88, 0x81, 0x43, 0xE8, 0x88, 0x84, 0x43, + 0xE8, 0x88, 0x8C, 0x43, 0xE8, 0x88, 0x98, 0x43, + 0xE8, 0x88, 0x9B, 0x43, 0xE8, 0x88, 0x9F, 0x43, + 0xE8, 0x89, 0xAE, 0x43, 0xE8, 0x89, 0xAF, 0x43, + 0xE8, 0x89, 0xB2, 0x43, 0xE8, 0x89, 0xB8, 0x43, + // Bytes 1200 - 123f + 0xE8, 0x89, 0xB9, 0x43, 0xE8, 0x8A, 0x8B, 0x43, + 0xE8, 0x8A, 0x91, 0x43, 0xE8, 0x8A, 0x9D, 0x43, + 0xE8, 0x8A, 0xB1, 0x43, 0xE8, 0x8A, 0xB3, 0x43, + 0xE8, 0x8A, 0xBD, 0x43, 0xE8, 0x8B, 0xA5, 0x43, + 0xE8, 0x8B, 0xA6, 0x43, 0xE8, 0x8C, 0x9D, 0x43, + 0xE8, 0x8C, 0xA3, 0x43, 0xE8, 0x8C, 0xB6, 0x43, + 0xE8, 0x8D, 0x92, 0x43, 0xE8, 0x8D, 0x93, 0x43, + 0xE8, 0x8D, 0xA3, 0x43, 0xE8, 0x8E, 0xAD, 0x43, + // Bytes 1240 - 127f + 0xE8, 0x8E, 0xBD, 0x43, 0xE8, 0x8F, 0x89, 0x43, + 0xE8, 0x8F, 0x8A, 0x43, 0xE8, 0x8F, 0x8C, 0x43, + 0xE8, 0x8F, 0x9C, 0x43, 0xE8, 0x8F, 0xA7, 0x43, + 0xE8, 0x8F, 0xAF, 0x43, 0xE8, 0x8F, 0xB1, 0x43, + 0xE8, 0x90, 0xBD, 0x43, 0xE8, 0x91, 0x89, 0x43, + 0xE8, 0x91, 0x97, 0x43, 0xE8, 0x93, 0xAE, 0x43, + 0xE8, 0x93, 0xB1, 0x43, 0xE8, 0x93, 0xB3, 0x43, + 0xE8, 0x93, 0xBC, 0x43, 0xE8, 0x94, 0x96, 0x43, + // Bytes 1280 - 12bf + 0xE8, 0x95, 0xA4, 0x43, 0xE8, 0x97, 0x8D, 0x43, + 0xE8, 0x97, 0xBA, 0x43, 0xE8, 0x98, 0x86, 0x43, + 0xE8, 0x98, 0x92, 0x43, 0xE8, 0x98, 0xAD, 0x43, + 0xE8, 0x98, 0xBF, 0x43, 0xE8, 0x99, 0x8D, 0x43, + 0xE8, 0x99, 0x90, 0x43, 0xE8, 0x99, 0x9C, 0x43, + 0xE8, 0x99, 0xA7, 0x43, 0xE8, 0x99, 0xA9, 0x43, + 0xE8, 0x99, 0xAB, 0x43, 0xE8, 0x9A, 0x88, 0x43, + 0xE8, 0x9A, 0xA9, 0x43, 0xE8, 0x9B, 0xA2, 0x43, + // Bytes 12c0 - 12ff + 0xE8, 0x9C, 0x8E, 0x43, 0xE8, 0x9C, 0xA8, 0x43, + 0xE8, 0x9D, 0xAB, 0x43, 0xE8, 0x9D, 0xB9, 0x43, + 0xE8, 0x9E, 0x86, 0x43, 0xE8, 0x9E, 0xBA, 0x43, + 0xE8, 0x9F, 0xA1, 0x43, 0xE8, 0xA0, 0x81, 0x43, + 0xE8, 0xA0, 0x9F, 0x43, 0xE8, 0xA1, 0x80, 0x43, + 0xE8, 0xA1, 0x8C, 0x43, 0xE8, 0xA1, 0xA0, 0x43, + 0xE8, 0xA1, 0xA3, 0x43, 0xE8, 0xA3, 0x82, 0x43, + 0xE8, 0xA3, 0x8F, 0x43, 0xE8, 0xA3, 0x97, 0x43, + // Bytes 1300 - 133f + 0xE8, 0xA3, 0x9E, 0x43, 0xE8, 0xA3, 0xA1, 0x43, + 0xE8, 0xA3, 0xB8, 0x43, 0xE8, 0xA3, 0xBA, 0x43, + 0xE8, 0xA4, 0x90, 0x43, 0xE8, 0xA5, 0x81, 0x43, + 0xE8, 0xA5, 0xA4, 0x43, 0xE8, 0xA5, 0xBE, 0x43, + 0xE8, 0xA6, 0x86, 0x43, 0xE8, 0xA6, 0x8B, 0x43, + 0xE8, 0xA6, 0x96, 0x43, 0xE8, 0xA7, 0x92, 0x43, + 0xE8, 0xA7, 0xA3, 0x43, 0xE8, 0xA8, 0x80, 0x43, + 0xE8, 0xAA, 0xA0, 0x43, 0xE8, 0xAA, 0xAA, 0x43, + // Bytes 1340 - 137f + 0xE8, 0xAA, 0xBF, 0x43, 0xE8, 0xAB, 0x8B, 0x43, + 0xE8, 0xAB, 0x92, 0x43, 0xE8, 0xAB, 0x96, 0x43, + 0xE8, 0xAB, 0xAD, 0x43, 0xE8, 0xAB, 0xB8, 0x43, + 0xE8, 0xAB, 0xBE, 0x43, 0xE8, 0xAC, 0x81, 0x43, + 0xE8, 0xAC, 0xB9, 0x43, 0xE8, 0xAD, 0x98, 0x43, + 0xE8, 0xAE, 0x80, 0x43, 0xE8, 0xAE, 0x8A, 0x43, + 0xE8, 0xB0, 0xB7, 0x43, 0xE8, 0xB1, 0x86, 0x43, + 0xE8, 0xB1, 0x88, 0x43, 0xE8, 0xB1, 0x95, 0x43, + // Bytes 1380 - 13bf + 0xE8, 0xB1, 0xB8, 0x43, 0xE8, 0xB2, 0x9D, 0x43, + 0xE8, 0xB2, 0xA1, 0x43, 0xE8, 0xB2, 0xA9, 0x43, + 0xE8, 0xB2, 0xAB, 0x43, 0xE8, 0xB3, 0x81, 0x43, + 0xE8, 0xB3, 0x82, 0x43, 0xE8, 0xB3, 0x87, 0x43, + 0xE8, 0xB3, 0x88, 0x43, 0xE8, 0xB3, 0x93, 0x43, + 0xE8, 0xB4, 0x88, 0x43, 0xE8, 0xB4, 0x9B, 0x43, + 0xE8, 0xB5, 0xA4, 0x43, 0xE8, 0xB5, 0xB0, 0x43, + 0xE8, 0xB5, 0xB7, 0x43, 0xE8, 0xB6, 0xB3, 0x43, + // Bytes 13c0 - 13ff + 0xE8, 0xB6, 0xBC, 0x43, 0xE8, 0xB7, 0x8B, 0x43, + 0xE8, 0xB7, 0xAF, 0x43, 0xE8, 0xB7, 0xB0, 0x43, + 0xE8, 0xBA, 0xAB, 0x43, 0xE8, 0xBB, 0x8A, 0x43, + 0xE8, 0xBB, 0x94, 0x43, 0xE8, 0xBC, 0xA6, 0x43, + 0xE8, 0xBC, 0xAA, 0x43, 0xE8, 0xBC, 0xB8, 0x43, + 0xE8, 0xBC, 0xBB, 0x43, 0xE8, 0xBD, 0xA2, 0x43, + 0xE8, 0xBE, 0x9B, 0x43, 0xE8, 0xBE, 0x9E, 0x43, + 0xE8, 0xBE, 0xB0, 0x43, 0xE8, 0xBE, 0xB5, 0x43, + // Bytes 1400 - 143f + 0xE8, 0xBE, 0xB6, 0x43, 0xE9, 0x80, 0xA3, 0x43, + 0xE9, 0x80, 0xB8, 0x43, 0xE9, 0x81, 0x8A, 0x43, + 0xE9, 0x81, 0xA9, 0x43, 0xE9, 0x81, 0xB2, 0x43, + 0xE9, 0x81, 0xBC, 0x43, 0xE9, 0x82, 0x8F, 0x43, + 0xE9, 0x82, 0x91, 0x43, 0xE9, 0x82, 0x94, 0x43, + 0xE9, 0x83, 0x8E, 0x43, 0xE9, 0x83, 0x9E, 0x43, + 0xE9, 0x83, 0xB1, 0x43, 0xE9, 0x83, 0xBD, 0x43, + 0xE9, 0x84, 0x91, 0x43, 0xE9, 0x84, 0x9B, 0x43, + // Bytes 1440 - 147f + 0xE9, 0x85, 0x89, 0x43, 0xE9, 0x85, 0x8D, 0x43, + 0xE9, 0x85, 0xAA, 0x43, 0xE9, 0x86, 0x99, 0x43, + 0xE9, 0x86, 0xB4, 0x43, 0xE9, 0x87, 0x86, 0x43, + 0xE9, 0x87, 0x8C, 0x43, 0xE9, 0x87, 0x8F, 0x43, + 0xE9, 0x87, 0x91, 0x43, 0xE9, 0x88, 0xB4, 0x43, + 0xE9, 0x88, 0xB8, 0x43, 0xE9, 0x89, 0xB6, 0x43, + 0xE9, 0x89, 0xBC, 0x43, 0xE9, 0x8B, 0x97, 0x43, + 0xE9, 0x8B, 0x98, 0x43, 0xE9, 0x8C, 0x84, 0x43, + // Bytes 1480 - 14bf + 0xE9, 0x8D, 0x8A, 0x43, 0xE9, 0x8F, 0xB9, 0x43, + 0xE9, 0x90, 0x95, 0x43, 0xE9, 0x95, 0xB7, 0x43, + 0xE9, 0x96, 0x80, 0x43, 0xE9, 0x96, 0x8B, 0x43, + 0xE9, 0x96, 0xAD, 0x43, 0xE9, 0x96, 0xB7, 0x43, + 0xE9, 0x98, 0x9C, 0x43, 0xE9, 0x98, 0xAE, 0x43, + 0xE9, 0x99, 0x8B, 0x43, 0xE9, 0x99, 0x8D, 0x43, + 0xE9, 0x99, 0xB5, 0x43, 0xE9, 0x99, 0xB8, 0x43, + 0xE9, 0x99, 0xBC, 0x43, 0xE9, 0x9A, 0x86, 0x43, + // Bytes 14c0 - 14ff + 0xE9, 0x9A, 0xA3, 0x43, 0xE9, 0x9A, 0xB6, 0x43, + 0xE9, 0x9A, 0xB7, 0x43, 0xE9, 0x9A, 0xB8, 0x43, + 0xE9, 0x9A, 0xB9, 0x43, 0xE9, 0x9B, 0x83, 0x43, + 0xE9, 0x9B, 0xA2, 0x43, 0xE9, 0x9B, 0xA3, 0x43, + 0xE9, 0x9B, 0xA8, 0x43, 0xE9, 0x9B, 0xB6, 0x43, + 0xE9, 0x9B, 0xB7, 0x43, 0xE9, 0x9C, 0xA3, 0x43, + 0xE9, 0x9C, 0xB2, 0x43, 0xE9, 0x9D, 0x88, 0x43, + 0xE9, 0x9D, 0x91, 0x43, 0xE9, 0x9D, 0x96, 0x43, + // Bytes 1500 - 153f + 0xE9, 0x9D, 0x9E, 0x43, 0xE9, 0x9D, 0xA2, 0x43, + 0xE9, 0x9D, 0xA9, 0x43, 0xE9, 0x9F, 0x8B, 0x43, + 0xE9, 0x9F, 0x9B, 0x43, 0xE9, 0x9F, 0xA0, 0x43, + 0xE9, 0x9F, 0xAD, 0x43, 0xE9, 0x9F, 0xB3, 0x43, + 0xE9, 0x9F, 0xBF, 0x43, 0xE9, 0xA0, 0x81, 0x43, + 0xE9, 0xA0, 0x85, 0x43, 0xE9, 0xA0, 0x8B, 0x43, + 0xE9, 0xA0, 0x98, 0x43, 0xE9, 0xA0, 0xA9, 0x43, + 0xE9, 0xA0, 0xBB, 0x43, 0xE9, 0xA1, 0x9E, 0x43, + // Bytes 1540 - 157f + 0xE9, 0xA2, 0xA8, 0x43, 0xE9, 0xA3, 0x9B, 0x43, + 0xE9, 0xA3, 0x9F, 0x43, 0xE9, 0xA3, 0xA2, 0x43, + 0xE9, 0xA3, 0xAF, 0x43, 0xE9, 0xA3, 0xBC, 0x43, + 0xE9, 0xA4, 0xA8, 0x43, 0xE9, 0xA4, 0xA9, 0x43, + 0xE9, 0xA6, 0x96, 0x43, 0xE9, 0xA6, 0x99, 0x43, + 0xE9, 0xA6, 0xA7, 0x43, 0xE9, 0xA6, 0xAC, 0x43, + 0xE9, 0xA7, 0x82, 0x43, 0xE9, 0xA7, 0xB1, 0x43, + 0xE9, 0xA7, 0xBE, 0x43, 0xE9, 0xA9, 0xAA, 0x43, + // Bytes 1580 - 15bf + 0xE9, 0xAA, 0xA8, 0x43, 0xE9, 0xAB, 0x98, 0x43, + 0xE9, 0xAB, 0x9F, 0x43, 0xE9, 0xAC, 0x92, 0x43, + 0xE9, 0xAC, 0xA5, 0x43, 0xE9, 0xAC, 0xAF, 0x43, + 0xE9, 0xAC, 0xB2, 0x43, 0xE9, 0xAC, 0xBC, 0x43, + 0xE9, 0xAD, 0x9A, 0x43, 0xE9, 0xAD, 0xAF, 0x43, + 0xE9, 0xB1, 0x80, 0x43, 0xE9, 0xB1, 0x97, 0x43, + 0xE9, 0xB3, 0xA5, 0x43, 0xE9, 0xB3, 0xBD, 0x43, + 0xE9, 0xB5, 0xA7, 0x43, 0xE9, 0xB6, 0xB4, 0x43, + // Bytes 15c0 - 15ff + 0xE9, 0xB7, 0xBA, 0x43, 0xE9, 0xB8, 0x9E, 0x43, + 0xE9, 0xB9, 0xB5, 0x43, 0xE9, 0xB9, 0xBF, 0x43, + 0xE9, 0xBA, 0x97, 0x43, 0xE9, 0xBA, 0x9F, 0x43, + 0xE9, 0xBA, 0xA5, 0x43, 0xE9, 0xBA, 0xBB, 0x43, + 0xE9, 0xBB, 0x83, 0x43, 0xE9, 0xBB, 0x8D, 0x43, + 0xE9, 0xBB, 0x8E, 0x43, 0xE9, 0xBB, 0x91, 0x43, + 0xE9, 0xBB, 0xB9, 0x43, 0xE9, 0xBB, 0xBD, 0x43, + 0xE9, 0xBB, 0xBE, 0x43, 0xE9, 0xBC, 0x85, 0x43, + // Bytes 1600 - 163f + 0xE9, 0xBC, 0x8E, 0x43, 0xE9, 0xBC, 0x8F, 0x43, + 0xE9, 0xBC, 0x93, 0x43, 0xE9, 0xBC, 0x96, 0x43, + 0xE9, 0xBC, 0xA0, 0x43, 0xE9, 0xBC, 0xBB, 0x43, + 0xE9, 0xBD, 0x83, 0x43, 0xE9, 0xBD, 0x8A, 0x43, + 0xE9, 0xBD, 0x92, 0x43, 0xE9, 0xBE, 0x8D, 0x43, + 0xE9, 0xBE, 0x8E, 0x43, 0xE9, 0xBE, 0x9C, 0x43, + 0xE9, 0xBE, 0x9F, 0x43, 0xE9, 0xBE, 0xA0, 0x43, + 0xEA, 0x9C, 0xA7, 0x43, 0xEA, 0x9D, 0xAF, 0x43, + // Bytes 1640 - 167f + 0xEA, 0xAC, 0xB7, 0x43, 0xEA, 0xAD, 0x92, 0x44, + 0xF0, 0xA0, 0x84, 0xA2, 0x44, 0xF0, 0xA0, 0x94, + 0x9C, 0x44, 0xF0, 0xA0, 0x94, 0xA5, 0x44, 0xF0, + 0xA0, 0x95, 0x8B, 0x44, 0xF0, 0xA0, 0x98, 0xBA, + 0x44, 0xF0, 0xA0, 0xA0, 0x84, 0x44, 0xF0, 0xA0, + 0xA3, 0x9E, 0x44, 0xF0, 0xA0, 0xA8, 0xAC, 0x44, + 0xF0, 0xA0, 0xAD, 0xA3, 0x44, 0xF0, 0xA1, 0x93, + 0xA4, 0x44, 0xF0, 0xA1, 0x9A, 0xA8, 0x44, 0xF0, + // Bytes 1680 - 16bf + 0xA1, 0x9B, 0xAA, 0x44, 0xF0, 0xA1, 0xA7, 0x88, + 0x44, 0xF0, 0xA1, 0xAC, 0x98, 0x44, 0xF0, 0xA1, + 0xB4, 0x8B, 0x44, 0xF0, 0xA1, 0xB7, 0xA4, 0x44, + 0xF0, 0xA1, 0xB7, 0xA6, 0x44, 0xF0, 0xA2, 0x86, + 0x83, 0x44, 0xF0, 0xA2, 0x86, 0x9F, 0x44, 0xF0, + 0xA2, 0x8C, 0xB1, 0x44, 0xF0, 0xA2, 0x9B, 0x94, + 0x44, 0xF0, 0xA2, 0xA1, 0x84, 0x44, 0xF0, 0xA2, + 0xA1, 0x8A, 0x44, 0xF0, 0xA2, 0xAC, 0x8C, 0x44, + // Bytes 16c0 - 16ff + 0xF0, 0xA2, 0xAF, 0xB1, 0x44, 0xF0, 0xA3, 0x80, + 0x8A, 0x44, 0xF0, 0xA3, 0x8A, 0xB8, 0x44, 0xF0, + 0xA3, 0x8D, 0x9F, 0x44, 0xF0, 0xA3, 0x8E, 0x93, + 0x44, 0xF0, 0xA3, 0x8E, 0x9C, 0x44, 0xF0, 0xA3, + 0x8F, 0x83, 0x44, 0xF0, 0xA3, 0x8F, 0x95, 0x44, + 0xF0, 0xA3, 0x91, 0xAD, 0x44, 0xF0, 0xA3, 0x9A, + 0xA3, 0x44, 0xF0, 0xA3, 0xA2, 0xA7, 0x44, 0xF0, + 0xA3, 0xAA, 0x8D, 0x44, 0xF0, 0xA3, 0xAB, 0xBA, + // Bytes 1700 - 173f + 0x44, 0xF0, 0xA3, 0xB2, 0xBC, 0x44, 0xF0, 0xA3, + 0xB4, 0x9E, 0x44, 0xF0, 0xA3, 0xBB, 0x91, 0x44, + 0xF0, 0xA3, 0xBD, 0x9E, 0x44, 0xF0, 0xA3, 0xBE, + 0x8E, 0x44, 0xF0, 0xA4, 0x89, 0xA3, 0x44, 0xF0, + 0xA4, 0x8B, 0xAE, 0x44, 0xF0, 0xA4, 0x8E, 0xAB, + 0x44, 0xF0, 0xA4, 0x98, 0x88, 0x44, 0xF0, 0xA4, + 0x9C, 0xB5, 0x44, 0xF0, 0xA4, 0xA0, 0x94, 0x44, + 0xF0, 0xA4, 0xB0, 0xB6, 0x44, 0xF0, 0xA4, 0xB2, + // Bytes 1740 - 177f + 0x92, 0x44, 0xF0, 0xA4, 0xBE, 0xA1, 0x44, 0xF0, + 0xA4, 0xBE, 0xB8, 0x44, 0xF0, 0xA5, 0x81, 0x84, + 0x44, 0xF0, 0xA5, 0x83, 0xB2, 0x44, 0xF0, 0xA5, + 0x83, 0xB3, 0x44, 0xF0, 0xA5, 0x84, 0x99, 0x44, + 0xF0, 0xA5, 0x84, 0xB3, 0x44, 0xF0, 0xA5, 0x89, + 0x89, 0x44, 0xF0, 0xA5, 0x90, 0x9D, 0x44, 0xF0, + 0xA5, 0x98, 0xA6, 0x44, 0xF0, 0xA5, 0x9A, 0x9A, + 0x44, 0xF0, 0xA5, 0x9B, 0x85, 0x44, 0xF0, 0xA5, + // Bytes 1780 - 17bf + 0xA5, 0xBC, 0x44, 0xF0, 0xA5, 0xAA, 0xA7, 0x44, + 0xF0, 0xA5, 0xAE, 0xAB, 0x44, 0xF0, 0xA5, 0xB2, + 0x80, 0x44, 0xF0, 0xA5, 0xB3, 0x90, 0x44, 0xF0, + 0xA5, 0xBE, 0x86, 0x44, 0xF0, 0xA6, 0x87, 0x9A, + 0x44, 0xF0, 0xA6, 0x88, 0xA8, 0x44, 0xF0, 0xA6, + 0x89, 0x87, 0x44, 0xF0, 0xA6, 0x8B, 0x99, 0x44, + 0xF0, 0xA6, 0x8C, 0xBE, 0x44, 0xF0, 0xA6, 0x93, + 0x9A, 0x44, 0xF0, 0xA6, 0x94, 0xA3, 0x44, 0xF0, + // Bytes 17c0 - 17ff + 0xA6, 0x96, 0xA8, 0x44, 0xF0, 0xA6, 0x9E, 0xA7, + 0x44, 0xF0, 0xA6, 0x9E, 0xB5, 0x44, 0xF0, 0xA6, + 0xAC, 0xBC, 0x44, 0xF0, 0xA6, 0xB0, 0xB6, 0x44, + 0xF0, 0xA6, 0xB3, 0x95, 0x44, 0xF0, 0xA6, 0xB5, + 0xAB, 0x44, 0xF0, 0xA6, 0xBC, 0xAC, 0x44, 0xF0, + 0xA6, 0xBE, 0xB1, 0x44, 0xF0, 0xA7, 0x83, 0x92, + 0x44, 0xF0, 0xA7, 0x8F, 0x8A, 0x44, 0xF0, 0xA7, + 0x99, 0xA7, 0x44, 0xF0, 0xA7, 0xA2, 0xAE, 0x44, + // Bytes 1800 - 183f + 0xF0, 0xA7, 0xA5, 0xA6, 0x44, 0xF0, 0xA7, 0xB2, + 0xA8, 0x44, 0xF0, 0xA7, 0xBB, 0x93, 0x44, 0xF0, + 0xA7, 0xBC, 0xAF, 0x44, 0xF0, 0xA8, 0x97, 0x92, + 0x44, 0xF0, 0xA8, 0x97, 0xAD, 0x44, 0xF0, 0xA8, + 0x9C, 0xAE, 0x44, 0xF0, 0xA8, 0xAF, 0xBA, 0x44, + 0xF0, 0xA8, 0xB5, 0xB7, 0x44, 0xF0, 0xA9, 0x85, + 0x85, 0x44, 0xF0, 0xA9, 0x87, 0x9F, 0x44, 0xF0, + 0xA9, 0x88, 0x9A, 0x44, 0xF0, 0xA9, 0x90, 0x8A, + // Bytes 1840 - 187f + 0x44, 0xF0, 0xA9, 0x92, 0x96, 0x44, 0xF0, 0xA9, + 0x96, 0xB6, 0x44, 0xF0, 0xA9, 0xAC, 0xB0, 0x44, + 0xF0, 0xAA, 0x83, 0x8E, 0x44, 0xF0, 0xAA, 0x84, + 0x85, 0x44, 0xF0, 0xAA, 0x88, 0x8E, 0x44, 0xF0, + 0xAA, 0x8A, 0x91, 0x44, 0xF0, 0xAA, 0x8E, 0x92, + 0x44, 0xF0, 0xAA, 0x98, 0x80, 0x42, 0x21, 0x21, + 0x42, 0x21, 0x3F, 0x42, 0x2E, 0x2E, 0x42, 0x30, + 0x2C, 0x42, 0x30, 0x2E, 0x42, 0x31, 0x2C, 0x42, + // Bytes 1880 - 18bf + 0x31, 0x2E, 0x42, 0x31, 0x30, 0x42, 0x31, 0x31, + 0x42, 0x31, 0x32, 0x42, 0x31, 0x33, 0x42, 0x31, + 0x34, 0x42, 0x31, 0x35, 0x42, 0x31, 0x36, 0x42, + 0x31, 0x37, 0x42, 0x31, 0x38, 0x42, 0x31, 0x39, + 0x42, 0x32, 0x2C, 0x42, 0x32, 0x2E, 0x42, 0x32, + 0x30, 0x42, 0x32, 0x31, 0x42, 0x32, 0x32, 0x42, + 0x32, 0x33, 0x42, 0x32, 0x34, 0x42, 0x32, 0x35, + 0x42, 0x32, 0x36, 0x42, 0x32, 0x37, 0x42, 0x32, + // Bytes 18c0 - 18ff + 0x38, 0x42, 0x32, 0x39, 0x42, 0x33, 0x2C, 0x42, + 0x33, 0x2E, 0x42, 0x33, 0x30, 0x42, 0x33, 0x31, + 0x42, 0x33, 0x32, 0x42, 0x33, 0x33, 0x42, 0x33, + 0x34, 0x42, 0x33, 0x35, 0x42, 0x33, 0x36, 0x42, + 0x33, 0x37, 0x42, 0x33, 0x38, 0x42, 0x33, 0x39, + 0x42, 0x34, 0x2C, 0x42, 0x34, 0x2E, 0x42, 0x34, + 0x30, 0x42, 0x34, 0x31, 0x42, 0x34, 0x32, 0x42, + 0x34, 0x33, 0x42, 0x34, 0x34, 0x42, 0x34, 0x35, + // Bytes 1900 - 193f + 0x42, 0x34, 0x36, 0x42, 0x34, 0x37, 0x42, 0x34, + 0x38, 0x42, 0x34, 0x39, 0x42, 0x35, 0x2C, 0x42, + 0x35, 0x2E, 0x42, 0x35, 0x30, 0x42, 0x36, 0x2C, + 0x42, 0x36, 0x2E, 0x42, 0x37, 0x2C, 0x42, 0x37, + 0x2E, 0x42, 0x38, 0x2C, 0x42, 0x38, 0x2E, 0x42, + 0x39, 0x2C, 0x42, 0x39, 0x2E, 0x42, 0x3D, 0x3D, + 0x42, 0x3F, 0x21, 0x42, 0x3F, 0x3F, 0x42, 0x41, + 0x55, 0x42, 0x42, 0x71, 0x42, 0x43, 0x44, 0x42, + // Bytes 1940 - 197f + 0x44, 0x4A, 0x42, 0x44, 0x5A, 0x42, 0x44, 0x7A, + 0x42, 0x47, 0x42, 0x42, 0x47, 0x79, 0x42, 0x48, + 0x50, 0x42, 0x48, 0x56, 0x42, 0x48, 0x67, 0x42, + 0x48, 0x7A, 0x42, 0x49, 0x49, 0x42, 0x49, 0x4A, + 0x42, 0x49, 0x55, 0x42, 0x49, 0x56, 0x42, 0x49, + 0x58, 0x42, 0x4B, 0x42, 0x42, 0x4B, 0x4B, 0x42, + 0x4B, 0x4D, 0x42, 0x4C, 0x4A, 0x42, 0x4C, 0x6A, + 0x42, 0x4D, 0x42, 0x42, 0x4D, 0x43, 0x42, 0x4D, + // Bytes 1980 - 19bf + 0x44, 0x42, 0x4D, 0x56, 0x42, 0x4D, 0x57, 0x42, + 0x4E, 0x4A, 0x42, 0x4E, 0x6A, 0x42, 0x4E, 0x6F, + 0x42, 0x50, 0x48, 0x42, 0x50, 0x52, 0x42, 0x50, + 0x61, 0x42, 0x52, 0x73, 0x42, 0x53, 0x44, 0x42, + 0x53, 0x4D, 0x42, 0x53, 0x53, 0x42, 0x53, 0x76, + 0x42, 0x54, 0x4D, 0x42, 0x56, 0x49, 0x42, 0x57, + 0x43, 0x42, 0x57, 0x5A, 0x42, 0x57, 0x62, 0x42, + 0x58, 0x49, 0x42, 0x63, 0x63, 0x42, 0x63, 0x64, + // Bytes 19c0 - 19ff + 0x42, 0x63, 0x6D, 0x42, 0x64, 0x42, 0x42, 0x64, + 0x61, 0x42, 0x64, 0x6C, 0x42, 0x64, 0x6D, 0x42, + 0x64, 0x7A, 0x42, 0x65, 0x56, 0x42, 0x66, 0x66, + 0x42, 0x66, 0x69, 0x42, 0x66, 0x6C, 0x42, 0x66, + 0x6D, 0x42, 0x68, 0x61, 0x42, 0x69, 0x69, 0x42, + 0x69, 0x6A, 0x42, 0x69, 0x6E, 0x42, 0x69, 0x76, + 0x42, 0x69, 0x78, 0x42, 0x6B, 0x41, 0x42, 0x6B, + 0x56, 0x42, 0x6B, 0x57, 0x42, 0x6B, 0x67, 0x42, + // Bytes 1a00 - 1a3f + 0x6B, 0x6C, 0x42, 0x6B, 0x6D, 0x42, 0x6B, 0x74, + 0x42, 0x6C, 0x6A, 0x42, 0x6C, 0x6D, 0x42, 0x6C, + 0x6E, 0x42, 0x6C, 0x78, 0x42, 0x6D, 0x32, 0x42, + 0x6D, 0x33, 0x42, 0x6D, 0x41, 0x42, 0x6D, 0x56, + 0x42, 0x6D, 0x57, 0x42, 0x6D, 0x62, 0x42, 0x6D, + 0x67, 0x42, 0x6D, 0x6C, 0x42, 0x6D, 0x6D, 0x42, + 0x6D, 0x73, 0x42, 0x6E, 0x41, 0x42, 0x6E, 0x46, + 0x42, 0x6E, 0x56, 0x42, 0x6E, 0x57, 0x42, 0x6E, + // Bytes 1a40 - 1a7f + 0x6A, 0x42, 0x6E, 0x6D, 0x42, 0x6E, 0x73, 0x42, + 0x6F, 0x56, 0x42, 0x70, 0x41, 0x42, 0x70, 0x46, + 0x42, 0x70, 0x56, 0x42, 0x70, 0x57, 0x42, 0x70, + 0x63, 0x42, 0x70, 0x73, 0x42, 0x73, 0x72, 0x42, + 0x73, 0x74, 0x42, 0x76, 0x69, 0x42, 0x78, 0x69, + 0x43, 0x28, 0x31, 0x29, 0x43, 0x28, 0x32, 0x29, + 0x43, 0x28, 0x33, 0x29, 0x43, 0x28, 0x34, 0x29, + 0x43, 0x28, 0x35, 0x29, 0x43, 0x28, 0x36, 0x29, + // Bytes 1a80 - 1abf + 0x43, 0x28, 0x37, 0x29, 0x43, 0x28, 0x38, 0x29, + 0x43, 0x28, 0x39, 0x29, 0x43, 0x28, 0x41, 0x29, + 0x43, 0x28, 0x42, 0x29, 0x43, 0x28, 0x43, 0x29, + 0x43, 0x28, 0x44, 0x29, 0x43, 0x28, 0x45, 0x29, + 0x43, 0x28, 0x46, 0x29, 0x43, 0x28, 0x47, 0x29, + 0x43, 0x28, 0x48, 0x29, 0x43, 0x28, 0x49, 0x29, + 0x43, 0x28, 0x4A, 0x29, 0x43, 0x28, 0x4B, 0x29, + 0x43, 0x28, 0x4C, 0x29, 0x43, 0x28, 0x4D, 0x29, + // Bytes 1ac0 - 1aff + 0x43, 0x28, 0x4E, 0x29, 0x43, 0x28, 0x4F, 0x29, + 0x43, 0x28, 0x50, 0x29, 0x43, 0x28, 0x51, 0x29, + 0x43, 0x28, 0x52, 0x29, 0x43, 0x28, 0x53, 0x29, + 0x43, 0x28, 0x54, 0x29, 0x43, 0x28, 0x55, 0x29, + 0x43, 0x28, 0x56, 0x29, 0x43, 0x28, 0x57, 0x29, + 0x43, 0x28, 0x58, 0x29, 0x43, 0x28, 0x59, 0x29, + 0x43, 0x28, 0x5A, 0x29, 0x43, 0x28, 0x61, 0x29, + 0x43, 0x28, 0x62, 0x29, 0x43, 0x28, 0x63, 0x29, + // Bytes 1b00 - 1b3f + 0x43, 0x28, 0x64, 0x29, 0x43, 0x28, 0x65, 0x29, + 0x43, 0x28, 0x66, 0x29, 0x43, 0x28, 0x67, 0x29, + 0x43, 0x28, 0x68, 0x29, 0x43, 0x28, 0x69, 0x29, + 0x43, 0x28, 0x6A, 0x29, 0x43, 0x28, 0x6B, 0x29, + 0x43, 0x28, 0x6C, 0x29, 0x43, 0x28, 0x6D, 0x29, + 0x43, 0x28, 0x6E, 0x29, 0x43, 0x28, 0x6F, 0x29, + 0x43, 0x28, 0x70, 0x29, 0x43, 0x28, 0x71, 0x29, + 0x43, 0x28, 0x72, 0x29, 0x43, 0x28, 0x73, 0x29, + // Bytes 1b40 - 1b7f + 0x43, 0x28, 0x74, 0x29, 0x43, 0x28, 0x75, 0x29, + 0x43, 0x28, 0x76, 0x29, 0x43, 0x28, 0x77, 0x29, + 0x43, 0x28, 0x78, 0x29, 0x43, 0x28, 0x79, 0x29, + 0x43, 0x28, 0x7A, 0x29, 0x43, 0x2E, 0x2E, 0x2E, + 0x43, 0x31, 0x30, 0x2E, 0x43, 0x31, 0x31, 0x2E, + 0x43, 0x31, 0x32, 0x2E, 0x43, 0x31, 0x33, 0x2E, + 0x43, 0x31, 0x34, 0x2E, 0x43, 0x31, 0x35, 0x2E, + 0x43, 0x31, 0x36, 0x2E, 0x43, 0x31, 0x37, 0x2E, + // Bytes 1b80 - 1bbf + 0x43, 0x31, 0x38, 0x2E, 0x43, 0x31, 0x39, 0x2E, + 0x43, 0x32, 0x30, 0x2E, 0x43, 0x3A, 0x3A, 0x3D, + 0x43, 0x3D, 0x3D, 0x3D, 0x43, 0x43, 0x6F, 0x2E, + 0x43, 0x46, 0x41, 0x58, 0x43, 0x47, 0x48, 0x7A, + 0x43, 0x47, 0x50, 0x61, 0x43, 0x49, 0x49, 0x49, + 0x43, 0x4C, 0x54, 0x44, 0x43, 0x4C, 0xC2, 0xB7, + 0x43, 0x4D, 0x48, 0x7A, 0x43, 0x4D, 0x50, 0x61, + 0x43, 0x4D, 0xCE, 0xA9, 0x43, 0x50, 0x50, 0x4D, + // Bytes 1bc0 - 1bff + 0x43, 0x50, 0x50, 0x56, 0x43, 0x50, 0x54, 0x45, + 0x43, 0x54, 0x45, 0x4C, 0x43, 0x54, 0x48, 0x7A, + 0x43, 0x56, 0x49, 0x49, 0x43, 0x58, 0x49, 0x49, + 0x43, 0x61, 0x2F, 0x63, 0x43, 0x61, 0x2F, 0x73, + 0x43, 0x61, 0xCA, 0xBE, 0x43, 0x62, 0x61, 0x72, + 0x43, 0x63, 0x2F, 0x6F, 0x43, 0x63, 0x2F, 0x75, + 0x43, 0x63, 0x61, 0x6C, 0x43, 0x63, 0x6D, 0x32, + 0x43, 0x63, 0x6D, 0x33, 0x43, 0x64, 0x6D, 0x32, + // Bytes 1c00 - 1c3f + 0x43, 0x64, 0x6D, 0x33, 0x43, 0x65, 0x72, 0x67, + 0x43, 0x66, 0x66, 0x69, 0x43, 0x66, 0x66, 0x6C, + 0x43, 0x67, 0x61, 0x6C, 0x43, 0x68, 0x50, 0x61, + 0x43, 0x69, 0x69, 0x69, 0x43, 0x6B, 0x48, 0x7A, + 0x43, 0x6B, 0x50, 0x61, 0x43, 0x6B, 0x6D, 0x32, + 0x43, 0x6B, 0x6D, 0x33, 0x43, 0x6B, 0xCE, 0xA9, + 0x43, 0x6C, 0x6F, 0x67, 0x43, 0x6C, 0xC2, 0xB7, + 0x43, 0x6D, 0x69, 0x6C, 0x43, 0x6D, 0x6D, 0x32, + // Bytes 1c40 - 1c7f + 0x43, 0x6D, 0x6D, 0x33, 0x43, 0x6D, 0x6F, 0x6C, + 0x43, 0x72, 0x61, 0x64, 0x43, 0x76, 0x69, 0x69, + 0x43, 0x78, 0x69, 0x69, 0x43, 0xC2, 0xB0, 0x43, + 0x43, 0xC2, 0xB0, 0x46, 0x43, 0xCA, 0xBC, 0x6E, + 0x43, 0xCE, 0xBC, 0x41, 0x43, 0xCE, 0xBC, 0x46, + 0x43, 0xCE, 0xBC, 0x56, 0x43, 0xCE, 0xBC, 0x57, + 0x43, 0xCE, 0xBC, 0x67, 0x43, 0xCE, 0xBC, 0x6C, + 0x43, 0xCE, 0xBC, 0x6D, 0x43, 0xCE, 0xBC, 0x73, + // Bytes 1c80 - 1cbf + 0x44, 0x28, 0x31, 0x30, 0x29, 0x44, 0x28, 0x31, + 0x31, 0x29, 0x44, 0x28, 0x31, 0x32, 0x29, 0x44, + 0x28, 0x31, 0x33, 0x29, 0x44, 0x28, 0x31, 0x34, + 0x29, 0x44, 0x28, 0x31, 0x35, 0x29, 0x44, 0x28, + 0x31, 0x36, 0x29, 0x44, 0x28, 0x31, 0x37, 0x29, + 0x44, 0x28, 0x31, 0x38, 0x29, 0x44, 0x28, 0x31, + 0x39, 0x29, 0x44, 0x28, 0x32, 0x30, 0x29, 0x44, + 0x30, 0xE7, 0x82, 0xB9, 0x44, 0x31, 0xE2, 0x81, + // Bytes 1cc0 - 1cff + 0x84, 0x44, 0x31, 0xE6, 0x97, 0xA5, 0x44, 0x31, + 0xE6, 0x9C, 0x88, 0x44, 0x31, 0xE7, 0x82, 0xB9, + 0x44, 0x32, 0xE6, 0x97, 0xA5, 0x44, 0x32, 0xE6, + 0x9C, 0x88, 0x44, 0x32, 0xE7, 0x82, 0xB9, 0x44, + 0x33, 0xE6, 0x97, 0xA5, 0x44, 0x33, 0xE6, 0x9C, + 0x88, 0x44, 0x33, 0xE7, 0x82, 0xB9, 0x44, 0x34, + 0xE6, 0x97, 0xA5, 0x44, 0x34, 0xE6, 0x9C, 0x88, + 0x44, 0x34, 0xE7, 0x82, 0xB9, 0x44, 0x35, 0xE6, + // Bytes 1d00 - 1d3f + 0x97, 0xA5, 0x44, 0x35, 0xE6, 0x9C, 0x88, 0x44, + 0x35, 0xE7, 0x82, 0xB9, 0x44, 0x36, 0xE6, 0x97, + 0xA5, 0x44, 0x36, 0xE6, 0x9C, 0x88, 0x44, 0x36, + 0xE7, 0x82, 0xB9, 0x44, 0x37, 0xE6, 0x97, 0xA5, + 0x44, 0x37, 0xE6, 0x9C, 0x88, 0x44, 0x37, 0xE7, + 0x82, 0xB9, 0x44, 0x38, 0xE6, 0x97, 0xA5, 0x44, + 0x38, 0xE6, 0x9C, 0x88, 0x44, 0x38, 0xE7, 0x82, + 0xB9, 0x44, 0x39, 0xE6, 0x97, 0xA5, 0x44, 0x39, + // Bytes 1d40 - 1d7f + 0xE6, 0x9C, 0x88, 0x44, 0x39, 0xE7, 0x82, 0xB9, + 0x44, 0x56, 0x49, 0x49, 0x49, 0x44, 0x61, 0x2E, + 0x6D, 0x2E, 0x44, 0x6B, 0x63, 0x61, 0x6C, 0x44, + 0x70, 0x2E, 0x6D, 0x2E, 0x44, 0x76, 0x69, 0x69, + 0x69, 0x44, 0xD5, 0xA5, 0xD6, 0x82, 0x44, 0xD5, + 0xB4, 0xD5, 0xA5, 0x44, 0xD5, 0xB4, 0xD5, 0xAB, + 0x44, 0xD5, 0xB4, 0xD5, 0xAD, 0x44, 0xD5, 0xB4, + 0xD5, 0xB6, 0x44, 0xD5, 0xBE, 0xD5, 0xB6, 0x44, + // Bytes 1d80 - 1dbf + 0xD7, 0x90, 0xD7, 0x9C, 0x44, 0xD8, 0xA7, 0xD9, + 0xB4, 0x44, 0xD8, 0xA8, 0xD8, 0xAC, 0x44, 0xD8, + 0xA8, 0xD8, 0xAD, 0x44, 0xD8, 0xA8, 0xD8, 0xAE, + 0x44, 0xD8, 0xA8, 0xD8, 0xB1, 0x44, 0xD8, 0xA8, + 0xD8, 0xB2, 0x44, 0xD8, 0xA8, 0xD9, 0x85, 0x44, + 0xD8, 0xA8, 0xD9, 0x86, 0x44, 0xD8, 0xA8, 0xD9, + 0x87, 0x44, 0xD8, 0xA8, 0xD9, 0x89, 0x44, 0xD8, + 0xA8, 0xD9, 0x8A, 0x44, 0xD8, 0xAA, 0xD8, 0xAC, + // Bytes 1dc0 - 1dff + 0x44, 0xD8, 0xAA, 0xD8, 0xAD, 0x44, 0xD8, 0xAA, + 0xD8, 0xAE, 0x44, 0xD8, 0xAA, 0xD8, 0xB1, 0x44, + 0xD8, 0xAA, 0xD8, 0xB2, 0x44, 0xD8, 0xAA, 0xD9, + 0x85, 0x44, 0xD8, 0xAA, 0xD9, 0x86, 0x44, 0xD8, + 0xAA, 0xD9, 0x87, 0x44, 0xD8, 0xAA, 0xD9, 0x89, + 0x44, 0xD8, 0xAA, 0xD9, 0x8A, 0x44, 0xD8, 0xAB, + 0xD8, 0xAC, 0x44, 0xD8, 0xAB, 0xD8, 0xB1, 0x44, + 0xD8, 0xAB, 0xD8, 0xB2, 0x44, 0xD8, 0xAB, 0xD9, + // Bytes 1e00 - 1e3f + 0x85, 0x44, 0xD8, 0xAB, 0xD9, 0x86, 0x44, 0xD8, + 0xAB, 0xD9, 0x87, 0x44, 0xD8, 0xAB, 0xD9, 0x89, + 0x44, 0xD8, 0xAB, 0xD9, 0x8A, 0x44, 0xD8, 0xAC, + 0xD8, 0xAD, 0x44, 0xD8, 0xAC, 0xD9, 0x85, 0x44, + 0xD8, 0xAC, 0xD9, 0x89, 0x44, 0xD8, 0xAC, 0xD9, + 0x8A, 0x44, 0xD8, 0xAD, 0xD8, 0xAC, 0x44, 0xD8, + 0xAD, 0xD9, 0x85, 0x44, 0xD8, 0xAD, 0xD9, 0x89, + 0x44, 0xD8, 0xAD, 0xD9, 0x8A, 0x44, 0xD8, 0xAE, + // Bytes 1e40 - 1e7f + 0xD8, 0xAC, 0x44, 0xD8, 0xAE, 0xD8, 0xAD, 0x44, + 0xD8, 0xAE, 0xD9, 0x85, 0x44, 0xD8, 0xAE, 0xD9, + 0x89, 0x44, 0xD8, 0xAE, 0xD9, 0x8A, 0x44, 0xD8, + 0xB3, 0xD8, 0xAC, 0x44, 0xD8, 0xB3, 0xD8, 0xAD, + 0x44, 0xD8, 0xB3, 0xD8, 0xAE, 0x44, 0xD8, 0xB3, + 0xD8, 0xB1, 0x44, 0xD8, 0xB3, 0xD9, 0x85, 0x44, + 0xD8, 0xB3, 0xD9, 0x87, 0x44, 0xD8, 0xB3, 0xD9, + 0x89, 0x44, 0xD8, 0xB3, 0xD9, 0x8A, 0x44, 0xD8, + // Bytes 1e80 - 1ebf + 0xB4, 0xD8, 0xAC, 0x44, 0xD8, 0xB4, 0xD8, 0xAD, + 0x44, 0xD8, 0xB4, 0xD8, 0xAE, 0x44, 0xD8, 0xB4, + 0xD8, 0xB1, 0x44, 0xD8, 0xB4, 0xD9, 0x85, 0x44, + 0xD8, 0xB4, 0xD9, 0x87, 0x44, 0xD8, 0xB4, 0xD9, + 0x89, 0x44, 0xD8, 0xB4, 0xD9, 0x8A, 0x44, 0xD8, + 0xB5, 0xD8, 0xAD, 0x44, 0xD8, 0xB5, 0xD8, 0xAE, + 0x44, 0xD8, 0xB5, 0xD8, 0xB1, 0x44, 0xD8, 0xB5, + 0xD9, 0x85, 0x44, 0xD8, 0xB5, 0xD9, 0x89, 0x44, + // Bytes 1ec0 - 1eff + 0xD8, 0xB5, 0xD9, 0x8A, 0x44, 0xD8, 0xB6, 0xD8, + 0xAC, 0x44, 0xD8, 0xB6, 0xD8, 0xAD, 0x44, 0xD8, + 0xB6, 0xD8, 0xAE, 0x44, 0xD8, 0xB6, 0xD8, 0xB1, + 0x44, 0xD8, 0xB6, 0xD9, 0x85, 0x44, 0xD8, 0xB6, + 0xD9, 0x89, 0x44, 0xD8, 0xB6, 0xD9, 0x8A, 0x44, + 0xD8, 0xB7, 0xD8, 0xAD, 0x44, 0xD8, 0xB7, 0xD9, + 0x85, 0x44, 0xD8, 0xB7, 0xD9, 0x89, 0x44, 0xD8, + 0xB7, 0xD9, 0x8A, 0x44, 0xD8, 0xB8, 0xD9, 0x85, + // Bytes 1f00 - 1f3f + 0x44, 0xD8, 0xB9, 0xD8, 0xAC, 0x44, 0xD8, 0xB9, + 0xD9, 0x85, 0x44, 0xD8, 0xB9, 0xD9, 0x89, 0x44, + 0xD8, 0xB9, 0xD9, 0x8A, 0x44, 0xD8, 0xBA, 0xD8, + 0xAC, 0x44, 0xD8, 0xBA, 0xD9, 0x85, 0x44, 0xD8, + 0xBA, 0xD9, 0x89, 0x44, 0xD8, 0xBA, 0xD9, 0x8A, + 0x44, 0xD9, 0x81, 0xD8, 0xAC, 0x44, 0xD9, 0x81, + 0xD8, 0xAD, 0x44, 0xD9, 0x81, 0xD8, 0xAE, 0x44, + 0xD9, 0x81, 0xD9, 0x85, 0x44, 0xD9, 0x81, 0xD9, + // Bytes 1f40 - 1f7f + 0x89, 0x44, 0xD9, 0x81, 0xD9, 0x8A, 0x44, 0xD9, + 0x82, 0xD8, 0xAD, 0x44, 0xD9, 0x82, 0xD9, 0x85, + 0x44, 0xD9, 0x82, 0xD9, 0x89, 0x44, 0xD9, 0x82, + 0xD9, 0x8A, 0x44, 0xD9, 0x83, 0xD8, 0xA7, 0x44, + 0xD9, 0x83, 0xD8, 0xAC, 0x44, 0xD9, 0x83, 0xD8, + 0xAD, 0x44, 0xD9, 0x83, 0xD8, 0xAE, 0x44, 0xD9, + 0x83, 0xD9, 0x84, 0x44, 0xD9, 0x83, 0xD9, 0x85, + 0x44, 0xD9, 0x83, 0xD9, 0x89, 0x44, 0xD9, 0x83, + // Bytes 1f80 - 1fbf + 0xD9, 0x8A, 0x44, 0xD9, 0x84, 0xD8, 0xA7, 0x44, + 0xD9, 0x84, 0xD8, 0xAC, 0x44, 0xD9, 0x84, 0xD8, + 0xAD, 0x44, 0xD9, 0x84, 0xD8, 0xAE, 0x44, 0xD9, + 0x84, 0xD9, 0x85, 0x44, 0xD9, 0x84, 0xD9, 0x87, + 0x44, 0xD9, 0x84, 0xD9, 0x89, 0x44, 0xD9, 0x84, + 0xD9, 0x8A, 0x44, 0xD9, 0x85, 0xD8, 0xA7, 0x44, + 0xD9, 0x85, 0xD8, 0xAC, 0x44, 0xD9, 0x85, 0xD8, + 0xAD, 0x44, 0xD9, 0x85, 0xD8, 0xAE, 0x44, 0xD9, + // Bytes 1fc0 - 1fff + 0x85, 0xD9, 0x85, 0x44, 0xD9, 0x85, 0xD9, 0x89, + 0x44, 0xD9, 0x85, 0xD9, 0x8A, 0x44, 0xD9, 0x86, + 0xD8, 0xAC, 0x44, 0xD9, 0x86, 0xD8, 0xAD, 0x44, + 0xD9, 0x86, 0xD8, 0xAE, 0x44, 0xD9, 0x86, 0xD8, + 0xB1, 0x44, 0xD9, 0x86, 0xD8, 0xB2, 0x44, 0xD9, + 0x86, 0xD9, 0x85, 0x44, 0xD9, 0x86, 0xD9, 0x86, + 0x44, 0xD9, 0x86, 0xD9, 0x87, 0x44, 0xD9, 0x86, + 0xD9, 0x89, 0x44, 0xD9, 0x86, 0xD9, 0x8A, 0x44, + // Bytes 2000 - 203f + 0xD9, 0x87, 0xD8, 0xAC, 0x44, 0xD9, 0x87, 0xD9, + 0x85, 0x44, 0xD9, 0x87, 0xD9, 0x89, 0x44, 0xD9, + 0x87, 0xD9, 0x8A, 0x44, 0xD9, 0x88, 0xD9, 0xB4, + 0x44, 0xD9, 0x8A, 0xD8, 0xAC, 0x44, 0xD9, 0x8A, + 0xD8, 0xAD, 0x44, 0xD9, 0x8A, 0xD8, 0xAE, 0x44, + 0xD9, 0x8A, 0xD8, 0xB1, 0x44, 0xD9, 0x8A, 0xD8, + 0xB2, 0x44, 0xD9, 0x8A, 0xD9, 0x85, 0x44, 0xD9, + 0x8A, 0xD9, 0x86, 0x44, 0xD9, 0x8A, 0xD9, 0x87, + // Bytes 2040 - 207f + 0x44, 0xD9, 0x8A, 0xD9, 0x89, 0x44, 0xD9, 0x8A, + 0xD9, 0x8A, 0x44, 0xD9, 0x8A, 0xD9, 0xB4, 0x44, + 0xDB, 0x87, 0xD9, 0xB4, 0x45, 0x28, 0xE1, 0x84, + 0x80, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x82, 0x29, + 0x45, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x45, 0x28, + 0xE1, 0x84, 0x85, 0x29, 0x45, 0x28, 0xE1, 0x84, + 0x86, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x87, 0x29, + 0x45, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x45, 0x28, + // Bytes 2080 - 20bf + 0xE1, 0x84, 0x8B, 0x29, 0x45, 0x28, 0xE1, 0x84, + 0x8C, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x8E, 0x29, + 0x45, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x45, 0x28, + 0xE1, 0x84, 0x90, 0x29, 0x45, 0x28, 0xE1, 0x84, + 0x91, 0x29, 0x45, 0x28, 0xE1, 0x84, 0x92, 0x29, + 0x45, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x45, 0x28, + 0xE4, 0xB8, 0x83, 0x29, 0x45, 0x28, 0xE4, 0xB8, + 0x89, 0x29, 0x45, 0x28, 0xE4, 0xB9, 0x9D, 0x29, + // Bytes 20c0 - 20ff + 0x45, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x45, 0x28, + 0xE4, 0xBA, 0x94, 0x29, 0x45, 0x28, 0xE4, 0xBB, + 0xA3, 0x29, 0x45, 0x28, 0xE4, 0xBC, 0x81, 0x29, + 0x45, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x45, 0x28, + 0xE5, 0x85, 0xAB, 0x29, 0x45, 0x28, 0xE5, 0x85, + 0xAD, 0x29, 0x45, 0x28, 0xE5, 0x8A, 0xB4, 0x29, + 0x45, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x45, 0x28, + 0xE5, 0x8D, 0x94, 0x29, 0x45, 0x28, 0xE5, 0x90, + // Bytes 2100 - 213f + 0x8D, 0x29, 0x45, 0x28, 0xE5, 0x91, 0xBC, 0x29, + 0x45, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x45, 0x28, + 0xE5, 0x9C, 0x9F, 0x29, 0x45, 0x28, 0xE5, 0xAD, + 0xA6, 0x29, 0x45, 0x28, 0xE6, 0x97, 0xA5, 0x29, + 0x45, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x45, 0x28, + 0xE6, 0x9C, 0x89, 0x29, 0x45, 0x28, 0xE6, 0x9C, + 0xA8, 0x29, 0x45, 0x28, 0xE6, 0xA0, 0xAA, 0x29, + 0x45, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x45, 0x28, + // Bytes 2140 - 217f + 0xE7, 0x81, 0xAB, 0x29, 0x45, 0x28, 0xE7, 0x89, + 0xB9, 0x29, 0x45, 0x28, 0xE7, 0x9B, 0xA3, 0x29, + 0x45, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x45, 0x28, + 0xE7, 0xA5, 0x9D, 0x29, 0x45, 0x28, 0xE7, 0xA5, + 0xAD, 0x29, 0x45, 0x28, 0xE8, 0x87, 0xAA, 0x29, + 0x45, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x45, 0x28, + 0xE8, 0xB2, 0xA1, 0x29, 0x45, 0x28, 0xE8, 0xB3, + 0x87, 0x29, 0x45, 0x28, 0xE9, 0x87, 0x91, 0x29, + // Bytes 2180 - 21bf + 0x45, 0x30, 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, + 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x31, 0x30, 0xE6, + 0x9C, 0x88, 0x45, 0x31, 0x30, 0xE7, 0x82, 0xB9, + 0x45, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x45, 0x31, + 0x31, 0xE6, 0x9C, 0x88, 0x45, 0x31, 0x31, 0xE7, + 0x82, 0xB9, 0x45, 0x31, 0x32, 0xE6, 0x97, 0xA5, + 0x45, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x45, 0x31, + 0x32, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x33, 0xE6, + // Bytes 21c0 - 21ff + 0x97, 0xA5, 0x45, 0x31, 0x33, 0xE7, 0x82, 0xB9, + 0x45, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x31, + 0x34, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x35, 0xE6, + 0x97, 0xA5, 0x45, 0x31, 0x35, 0xE7, 0x82, 0xB9, + 0x45, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x45, 0x31, + 0x36, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x37, 0xE6, + 0x97, 0xA5, 0x45, 0x31, 0x37, 0xE7, 0x82, 0xB9, + 0x45, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x31, + // Bytes 2200 - 223f + 0x38, 0xE7, 0x82, 0xB9, 0x45, 0x31, 0x39, 0xE6, + 0x97, 0xA5, 0x45, 0x31, 0x39, 0xE7, 0x82, 0xB9, + 0x45, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x45, 0x31, + 0xE2, 0x81, 0x84, 0x33, 0x45, 0x31, 0xE2, 0x81, + 0x84, 0x34, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x35, + 0x45, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x45, 0x31, + 0xE2, 0x81, 0x84, 0x37, 0x45, 0x31, 0xE2, 0x81, + 0x84, 0x38, 0x45, 0x31, 0xE2, 0x81, 0x84, 0x39, + // Bytes 2240 - 227f + 0x45, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x32, + 0x30, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x31, 0xE6, + 0x97, 0xA5, 0x45, 0x32, 0x31, 0xE7, 0x82, 0xB9, + 0x45, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x45, 0x32, + 0x32, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x33, 0xE6, + 0x97, 0xA5, 0x45, 0x32, 0x33, 0xE7, 0x82, 0xB9, + 0x45, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x45, 0x32, + 0x34, 0xE7, 0x82, 0xB9, 0x45, 0x32, 0x35, 0xE6, + // Bytes 2280 - 22bf + 0x97, 0xA5, 0x45, 0x32, 0x36, 0xE6, 0x97, 0xA5, + 0x45, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x45, 0x32, + 0x38, 0xE6, 0x97, 0xA5, 0x45, 0x32, 0x39, 0xE6, + 0x97, 0xA5, 0x45, 0x32, 0xE2, 0x81, 0x84, 0x33, + 0x45, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, + 0x30, 0xE6, 0x97, 0xA5, 0x45, 0x33, 0x31, 0xE6, + 0x97, 0xA5, 0x45, 0x33, 0xE2, 0x81, 0x84, 0x34, + 0x45, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x45, 0x33, + // Bytes 22c0 - 22ff + 0xE2, 0x81, 0x84, 0x38, 0x45, 0x34, 0xE2, 0x81, + 0x84, 0x35, 0x45, 0x35, 0xE2, 0x81, 0x84, 0x36, + 0x45, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x45, 0x37, + 0xE2, 0x81, 0x84, 0x38, 0x45, 0x41, 0xE2, 0x88, + 0x95, 0x6D, 0x45, 0x56, 0xE2, 0x88, 0x95, 0x6D, + 0x45, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x46, 0x31, + 0xE2, 0x81, 0x84, 0x31, 0x30, 0x46, 0x43, 0xE2, + 0x88, 0x95, 0x6B, 0x67, 0x46, 0x6D, 0xE2, 0x88, + // Bytes 2300 - 233f + 0x95, 0x73, 0x32, 0x46, 0xD8, 0xA8, 0xD8, 0xAD, + 0xD9, 0x8A, 0x46, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9, + 0x8A, 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85, + 0x46, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0x46, + 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, + 0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, 0xD8, 0xAA, + 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, + 0xAE, 0xD9, 0x85, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, + // Bytes 2340 - 237f + 0xD9, 0x89, 0x46, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, + 0x8A, 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC, + 0x46, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0x46, + 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0x46, 0xD8, + 0xAA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAA, + 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD8, + 0xAD, 0xD9, 0x89, 0x46, 0xD8, 0xAC, 0xD8, 0xAD, + 0xD9, 0x8A, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, + // Bytes 2380 - 23bf + 0xAD, 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89, + 0x46, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0x46, + 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD8, + 0xAD, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, 0xAD, + 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB3, 0xD8, + 0xAC, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, 0xD8, 0xAC, + 0xD9, 0x89, 0x46, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, + 0xAC, 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89, + // Bytes 23c0 - 23ff + 0x46, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0x46, + 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0x46, 0xD8, + 0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, 0xB3, + 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, + 0xAC, 0xD9, 0x8A, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, + 0xD9, 0x85, 0x46, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, + 0x8A, 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, + 0x46, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0x46, + // Bytes 2400 - 243f + 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0x46, 0xD8, + 0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD8, 0xB5, + 0xD9, 0x84, 0xD9, 0x89, 0x46, 0xD8, 0xB5, 0xD9, + 0x84, 0xDB, 0x92, 0x46, 0xD8, 0xB5, 0xD9, 0x85, + 0xD9, 0x85, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, + 0x89, 0x46, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A, + 0x46, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0x46, + 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD8, + // Bytes 2440 - 247f + 0xB7, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD8, 0xB7, + 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD8, 0xB9, 0xD8, + 0xAC, 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, + 0xD9, 0x85, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, + 0x89, 0x46, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A, + 0x46, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0x46, + 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0x46, 0xD8, + 0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x81, + // Bytes 2480 - 24bf + 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x81, 0xD9, + 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x82, 0xD9, 0x84, + 0xDB, 0x92, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD8, + 0xAD, 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85, + 0x46, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0x46, + 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, + 0x83, 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x84, + 0xD8, 0xAC, 0xD8, 0xAC, 0x46, 0xD9, 0x84, 0xD8, + // Bytes 24c0 - 24ff + 0xAC, 0xD9, 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAC, + 0xD9, 0x8A, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, + 0x85, 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89, + 0x46, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, + 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0x46, 0xD9, + 0x84, 0xD9, 0x85, 0xD8, 0xAD, 0x46, 0xD9, 0x84, + 0xD9, 0x85, 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD8, + 0xAC, 0xD8, 0xAD, 0x46, 0xD9, 0x85, 0xD8, 0xAC, + // Bytes 2500 - 253f + 0xD8, 0xAE, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, + 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A, + 0x46, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0x46, + 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, + 0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x85, + 0xD8, 0xAE, 0xD8, 0xAC, 0x46, 0xD9, 0x85, 0xD8, + 0xAE, 0xD9, 0x85, 0x46, 0xD9, 0x85, 0xD8, 0xAE, + 0xD9, 0x8A, 0x46, 0xD9, 0x85, 0xD9, 0x85, 0xD9, + // Bytes 2540 - 257f + 0x8A, 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, + 0x46, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0x46, + 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0x46, 0xD9, + 0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x86, + 0xD8, 0xAD, 0xD9, 0x85, 0x46, 0xD9, 0x86, 0xD8, + 0xAD, 0xD9, 0x89, 0x46, 0xD9, 0x86, 0xD8, 0xAD, + 0xD9, 0x8A, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, + 0x89, 0x46, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A, + // Bytes 2580 - 25bf + 0x46, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0x46, + 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0x46, 0xD9, + 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, + 0xD8, 0xAD, 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, + 0x85, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x85, + 0xD9, 0x8A, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, + 0xA7, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC, + 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0x46, + // Bytes 25c0 - 25ff + 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0x46, 0xD9, + 0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0x46, 0xD9, 0x8A, + 0xD9, 0x94, 0xD8, 0xB2, 0x46, 0xD9, 0x8A, 0xD9, + 0x94, 0xD9, 0x85, 0x46, 0xD9, 0x8A, 0xD9, 0x94, + 0xD9, 0x86, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, + 0x87, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, + 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0x46, + 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0x46, 0xD9, + // Bytes 2600 - 263f + 0x8A, 0xD9, 0x94, 0xDB, 0x86, 0x46, 0xD9, 0x8A, + 0xD9, 0x94, 0xDB, 0x87, 0x46, 0xD9, 0x8A, 0xD9, + 0x94, 0xDB, 0x88, 0x46, 0xD9, 0x8A, 0xD9, 0x94, + 0xDB, 0x90, 0x46, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, + 0x95, 0x46, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2, + 0x46, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0x46, + 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0x46, 0xE0, + 0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0x46, 0xE0, 0xBD, + // Bytes 2640 - 267f + 0x80, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, 0xBD, 0x82, + 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x8C, 0xE0, + 0xBE, 0xB7, 0x46, 0xE0, 0xBD, 0x91, 0xE0, 0xBE, + 0xB7, 0x46, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7, + 0x46, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0x46, + 0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0x46, 0xE0, + 0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, + 0x9C, 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA1, + // Bytes 2680 - 26bf + 0xE0, 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xA6, 0xE0, + 0xBE, 0xB7, 0x46, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE, + 0xB7, 0x46, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, + 0x46, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x46, + 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x46, 0xE2, + 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x46, 0xE3, 0x81, + 0xBB, 0xE3, 0x81, 0x8B, 0x46, 0xE3, 0x82, 0x88, + 0xE3, 0x82, 0x8A, 0x46, 0xE3, 0x82, 0xAD, 0xE3, + // Bytes 26c0 - 26ff + 0x83, 0xAD, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x82, + 0xB3, 0x46, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88, + 0x46, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0x46, + 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0x46, 0xE3, + 0x83, 0x9B, 0xE3, 0x83, 0xB3, 0x46, 0xE3, 0x83, + 0x9F, 0xE3, 0x83, 0xAA, 0x46, 0xE3, 0x83, 0xAA, + 0xE3, 0x83, 0xA9, 0x46, 0xE3, 0x83, 0xAC, 0xE3, + 0x83, 0xA0, 0x46, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD, + // Bytes 2700 - 273f + 0xA3, 0x46, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90, + 0x46, 0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0x46, + 0xE6, 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0x47, 0x72, + 0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x47, 0xE3, + 0x80, 0x94, 0x53, 0xE3, 0x80, 0x95, 0x48, 0x28, + 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x48, + 0x28, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29, + 0x48, 0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, + // Bytes 2740 - 277f + 0x29, 0x48, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85, + 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x86, 0xE1, + 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x87, + 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, + 0x89, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, + 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, + 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x48, + 0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29, + // Bytes 2780 - 27bf + 0x48, 0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, + 0x29, 0x48, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85, + 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x90, 0xE1, + 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, 0x91, + 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x28, 0xE1, 0x84, + 0x92, 0xE1, 0x85, 0xA1, 0x29, 0x48, 0x72, 0x61, + 0x64, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x48, 0xD8, + 0xA7, 0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0x48, + // Bytes 27c0 - 27ff + 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87, + 0x48, 0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9, + 0x84, 0x48, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, + 0xD9, 0x84, 0x48, 0xD8, 0xB5, 0xD9, 0x84, 0xD8, + 0xB9, 0xD9, 0x85, 0x48, 0xD8, 0xB9, 0xD9, 0x84, + 0xD9, 0x8A, 0xD9, 0x87, 0x48, 0xD9, 0x85, 0xD8, + 0xAD, 0xD9, 0x85, 0xD8, 0xAF, 0x48, 0xD9, 0x88, + 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x49, 0xE2, + // Bytes 2800 - 283f + 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, + 0x49, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, + 0x80, 0xB5, 0x49, 0xE2, 0x88, 0xAB, 0xE2, 0x88, + 0xAB, 0xE2, 0x88, 0xAB, 0x49, 0xE2, 0x88, 0xAE, + 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0x49, 0xE3, + 0x80, 0x94, 0xE4, 0xB8, 0x89, 0xE3, 0x80, 0x95, + 0x49, 0xE3, 0x80, 0x94, 0xE4, 0xBA, 0x8C, 0xE3, + 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE5, 0x8B, + // Bytes 2840 - 287f + 0x9D, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, + 0xE5, 0xAE, 0x89, 0xE3, 0x80, 0x95, 0x49, 0xE3, + 0x80, 0x94, 0xE6, 0x89, 0x93, 0xE3, 0x80, 0x95, + 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x95, 0x97, 0xE3, + 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, 0xE6, 0x9C, + 0xAC, 0xE3, 0x80, 0x95, 0x49, 0xE3, 0x80, 0x94, + 0xE7, 0x82, 0xB9, 0xE3, 0x80, 0x95, 0x49, 0xE3, + 0x80, 0x94, 0xE7, 0x9B, 0x97, 0xE3, 0x80, 0x95, + // Bytes 2880 - 28bf + 0x49, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0xAB, 0x49, 0xE3, 0x82, 0xA4, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x81, 0x49, 0xE3, 0x82, 0xA6, + 0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xB3, 0x49, 0xE3, + 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, + 0x49, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0xA0, 0x49, 0xE3, 0x82, 0xAB, 0xE3, 0x82, + 0xA4, 0xE3, 0x83, 0xAA, 0x49, 0xE3, 0x82, 0xB1, + // Bytes 28c0 - 28ff + 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0x49, 0xE3, + 0x82, 0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A, + 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, + 0x83, 0x81, 0x49, 0xE3, 0x82, 0xBB, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x88, 0x49, 0xE3, 0x83, 0x86, + 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB7, 0x49, 0xE3, + 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, + 0x49, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3, + // Bytes 2900 - 293f + 0x83, 0x88, 0x49, 0xE3, 0x83, 0x8F, 0xE3, 0x82, + 0xA4, 0xE3, 0x83, 0x84, 0x49, 0xE3, 0x83, 0x92, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0x49, 0xE3, + 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3, + 0x49, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3, + 0x83, 0xB3, 0x49, 0xE3, 0x83, 0x98, 0xE3, 0x82, + 0x9A, 0xE3, 0x82, 0xBD, 0x49, 0xE3, 0x83, 0x98, + 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x84, 0x49, 0xE3, + // Bytes 2940 - 297f + 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, + 0x49, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0xB3, 0x49, 0xE3, 0x83, 0x9E, 0xE3, 0x82, + 0xA4, 0xE3, 0x83, 0xAB, 0x49, 0xE3, 0x83, 0x9E, + 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x8F, 0x49, 0xE3, + 0x83, 0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF, + 0x49, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0xAB, 0x49, 0xE3, 0x83, 0xA6, 0xE3, 0x82, + // Bytes 2980 - 29bf + 0xA2, 0xE3, 0x83, 0xB3, 0x49, 0xE3, 0x83, 0xAF, + 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x4C, 0xE2, + 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, + 0xE2, 0x80, 0xB2, 0x4C, 0xE2, 0x88, 0xAB, 0xE2, + 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, + 0x4C, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3, + 0x83, 0x95, 0xE3, 0x82, 0xA1, 0x4C, 0xE3, 0x82, + 0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, + // Bytes 29c0 - 29ff + 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0x4C, + 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x9E, 0x4C, 0xE3, 0x82, 0xAB, + 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, + 0x88, 0x4C, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD, + 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0x4C, 0xE3, + 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B, + // Bytes 2a00 - 2a3f + 0xE3, 0x83, 0xBC, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, + 0x83, 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, + 0x4C, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, + 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0x4C, 0xE3, 0x82, + 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3, + 0x83, 0x8D, 0x4C, 0xE3, 0x82, 0xB5, 0xE3, 0x82, + 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, + 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, + // Bytes 2a40 - 2a7f + 0xBC, 0xE3, 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x8F, + 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0x84, 0x4C, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, + 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, + 0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC, + 0xE3, 0x83, 0x88, 0x4C, 0xE3, 0x83, 0x98, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF, + 0x4C, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, + // Bytes 2a80 - 2abf + 0x83, 0x8B, 0xE3, 0x83, 0x92, 0x4C, 0xE3, 0x83, + 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3, + 0x82, 0xB9, 0x4C, 0xE3, 0x83, 0x9B, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0x4C, + 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82, + 0xAF, 0xE3, 0x83, 0xAD, 0x4C, 0xE3, 0x83, 0x9F, + 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, + 0xB3, 0x4C, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, + // Bytes 2ac0 - 2aff + 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x4C, 0xE3, + 0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, + 0xE3, 0x83, 0xAB, 0x4C, 0xE3, 0x83, 0xAB, 0xE3, + 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, + 0x4C, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, + 0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x4E, 0x28, 0xE1, + 0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92, + 0xE1, 0x85, 0xAE, 0x29, 0x4F, 0xD8, 0xAC, 0xD9, + // Bytes 2b00 - 2b3f + 0x84, 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7, + 0xD9, 0x84, 0xD9, 0x87, 0x4F, 0xE3, 0x82, 0xA2, + 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, + 0xBC, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xA2, + 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, + 0x9A, 0xE3, 0x82, 0xA2, 0x4F, 0xE3, 0x82, 0xAD, + 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, + 0x83, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x82, 0xB5, + // Bytes 2b40 - 2b7f + 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83, + 0xBC, 0xE3, 0x83, 0xA0, 0x4F, 0xE3, 0x83, 0x8F, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0xAC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x98, + 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83, + 0xBC, 0xE3, 0x83, 0xAB, 0x4F, 0xE3, 0x83, 0x9B, + 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x88, 0x4F, 0xE3, 0x83, 0x9E, + // Bytes 2b80 - 2bbf + 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83, + 0xA7, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xA1, + 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0x88, 0xE3, 0x83, 0xB3, 0x4F, 0xE3, 0x83, 0xAB, + 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0xAB, 0x51, 0x28, 0xE1, 0x84, + 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1, + 0x85, 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x52, 0xE3, + // Bytes 2bc0 - 2bff + 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, + 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xBC, 0x52, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, + 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, + 0xA9, 0xE3, 0x83, 0xA0, 0x52, 0xE3, 0x82, 0xAD, + 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83, + 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0x52, + 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, + // Bytes 2c00 - 2c3f + 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3, + 0x83, 0xB3, 0x52, 0xE3, 0x82, 0xAF, 0xE3, 0x83, + 0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3, + 0x82, 0xA4, 0xE3, 0x83, 0xAD, 0x52, 0xE3, 0x83, + 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, + 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, + 0x52, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, + 0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88, + // Bytes 2c40 - 2c7f + 0xE3, 0x83, 0xAB, 0x52, 0xE3, 0x83, 0x95, 0xE3, + 0x82, 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7, + 0xE3, 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0x52, 0xE3, + 0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F, + 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + 0xAB, 0x52, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3, + 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82, + 0x99, 0xE3, 0x83, 0xB3, 0x61, 0xD8, 0xB5, 0xD9, + // Bytes 2c80 - 2cbf + 0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84, + 0xD9, 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9, + 0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88, + 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0x06, 0xE0, + 0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0x01, 0x06, 0xE0, + 0xA7, 0x87, 0xE0, 0xA7, 0x97, 0x01, 0x06, 0xE0, + 0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0x01, 0x06, 0xE0, + 0xAD, 0x87, 0xE0, 0xAD, 0x96, 0x01, 0x06, 0xE0, + // Bytes 2cc0 - 2cff + 0xAD, 0x87, 0xE0, 0xAD, 0x97, 0x01, 0x06, 0xE0, + 0xAE, 0x92, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0, + 0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0, + 0xAF, 0x86, 0xE0, 0xAF, 0x97, 0x01, 0x06, 0xE0, + 0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0x01, 0x06, 0xE0, + 0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0, + 0xB3, 0x86, 0xE0, 0xB3, 0x95, 0x01, 0x06, 0xE0, + 0xB3, 0x86, 0xE0, 0xB3, 0x96, 0x01, 0x06, 0xE0, + // Bytes 2d00 - 2d3f + 0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0, + 0xB5, 0x86, 0xE0, 0xB5, 0x97, 0x01, 0x06, 0xE0, + 0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0x01, 0x06, 0xE0, + 0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0x01, 0x06, 0xE1, + 0x80, 0xA5, 0xE1, 0x80, 0xAE, 0x01, 0x06, 0xE1, + 0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0x87, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + // Bytes 2d40 - 2d7f + 0xAC, 0x8B, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0x8D, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0x91, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0xBA, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0xBC, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAC, 0xBF, 0xE1, 0xAC, 0xB5, 0x01, 0x06, 0xE1, + 0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x01, 0x08, 0xF0, + // Bytes 2d80 - 2dbf + 0x91, 0x84, 0xB1, 0xF0, 0x91, 0x84, 0xA7, 0x01, + 0x08, 0xF0, 0x91, 0x84, 0xB2, 0xF0, 0x91, 0x84, + 0xA7, 0x01, 0x08, 0xF0, 0x91, 0x8D, 0x87, 0xF0, + 0x91, 0x8C, 0xBE, 0x01, 0x08, 0xF0, 0x91, 0x8D, + 0x87, 0xF0, 0x91, 0x8D, 0x97, 0x01, 0x08, 0xF0, + 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, 0xB0, 0x01, + 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, 0x91, 0x92, + 0xBA, 0x01, 0x08, 0xF0, 0x91, 0x92, 0xB9, 0xF0, + // Bytes 2dc0 - 2dff + 0x91, 0x92, 0xBD, 0x01, 0x08, 0xF0, 0x91, 0x96, + 0xB8, 0xF0, 0x91, 0x96, 0xAF, 0x01, 0x08, 0xF0, + 0x91, 0x96, 0xB9, 0xF0, 0x91, 0x96, 0xAF, 0x01, + 0x09, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0, + 0xB3, 0x95, 0x02, 0x09, 0xE0, 0xB7, 0x99, 0xE0, + 0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0x12, 0x44, 0x44, + 0x5A, 0xCC, 0x8C, 0xC9, 0x44, 0x44, 0x7A, 0xCC, + 0x8C, 0xC9, 0x44, 0x64, 0x7A, 0xCC, 0x8C, 0xC9, + // Bytes 2e00 - 2e3f + 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, + 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xC9, + 0x46, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xB5, + 0x46, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x01, + // Bytes 2e40 - 2e7f + 0x46, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0x01, + 0x46, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x01, + // Bytes 2e80 - 2ebf + 0x46, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x01, + 0x46, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x01, + 0x49, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, + 0x82, 0x99, 0x0D, 0x4C, 0xE1, 0x84, 0x8C, 0xE1, + 0x85, 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4, + 0x01, 0x4C, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, + 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D, 0x4C, + 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, + // Bytes 2ec0 - 2eff + 0x9B, 0xE3, 0x82, 0x9A, 0x0D, 0x4C, 0xE3, 0x83, + 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, + 0x82, 0x99, 0x0D, 0x4F, 0xE1, 0x84, 0x8E, 0xE1, + 0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80, + 0xE1, 0x85, 0xA9, 0x01, 0x4F, 0xE3, 0x82, 0xA4, + 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82, + 0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3, 0x82, + 0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, + // Bytes 2f00 - 2f3f + 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D, 0x4F, 0xE3, + 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, + 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D, 0x4F, + 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83, + 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D, + 0x52, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3, + 0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, + 0xE3, 0x82, 0x99, 0x0D, 0x52, 0xE3, 0x83, 0x95, + // Bytes 2f40 - 2f7f + 0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83, + 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D, + 0x86, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0x01, + 0x86, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0x01, + 0x03, 0x3C, 0xCC, 0xB8, 0x05, 0x03, 0x3D, 0xCC, + 0xB8, 0x05, 0x03, 0x3E, 0xCC, 0xB8, 0x05, 0x03, + 0x41, 0xCC, 0x80, 0xC9, 0x03, 0x41, 0xCC, 0x81, + 0xC9, 0x03, 0x41, 0xCC, 0x83, 0xC9, 0x03, 0x41, + // Bytes 2f80 - 2fbf + 0xCC, 0x84, 0xC9, 0x03, 0x41, 0xCC, 0x89, 0xC9, + 0x03, 0x41, 0xCC, 0x8C, 0xC9, 0x03, 0x41, 0xCC, + 0x8F, 0xC9, 0x03, 0x41, 0xCC, 0x91, 0xC9, 0x03, + 0x41, 0xCC, 0xA5, 0xB5, 0x03, 0x41, 0xCC, 0xA8, + 0xA5, 0x03, 0x42, 0xCC, 0x87, 0xC9, 0x03, 0x42, + 0xCC, 0xA3, 0xB5, 0x03, 0x42, 0xCC, 0xB1, 0xB5, + 0x03, 0x43, 0xCC, 0x81, 0xC9, 0x03, 0x43, 0xCC, + 0x82, 0xC9, 0x03, 0x43, 0xCC, 0x87, 0xC9, 0x03, + // Bytes 2fc0 - 2fff + 0x43, 0xCC, 0x8C, 0xC9, 0x03, 0x44, 0xCC, 0x87, + 0xC9, 0x03, 0x44, 0xCC, 0x8C, 0xC9, 0x03, 0x44, + 0xCC, 0xA3, 0xB5, 0x03, 0x44, 0xCC, 0xA7, 0xA5, + 0x03, 0x44, 0xCC, 0xAD, 0xB5, 0x03, 0x44, 0xCC, + 0xB1, 0xB5, 0x03, 0x45, 0xCC, 0x80, 0xC9, 0x03, + 0x45, 0xCC, 0x81, 0xC9, 0x03, 0x45, 0xCC, 0x83, + 0xC9, 0x03, 0x45, 0xCC, 0x86, 0xC9, 0x03, 0x45, + 0xCC, 0x87, 0xC9, 0x03, 0x45, 0xCC, 0x88, 0xC9, + // Bytes 3000 - 303f + 0x03, 0x45, 0xCC, 0x89, 0xC9, 0x03, 0x45, 0xCC, + 0x8C, 0xC9, 0x03, 0x45, 0xCC, 0x8F, 0xC9, 0x03, + 0x45, 0xCC, 0x91, 0xC9, 0x03, 0x45, 0xCC, 0xA8, + 0xA5, 0x03, 0x45, 0xCC, 0xAD, 0xB5, 0x03, 0x45, + 0xCC, 0xB0, 0xB5, 0x03, 0x46, 0xCC, 0x87, 0xC9, + 0x03, 0x47, 0xCC, 0x81, 0xC9, 0x03, 0x47, 0xCC, + 0x82, 0xC9, 0x03, 0x47, 0xCC, 0x84, 0xC9, 0x03, + 0x47, 0xCC, 0x86, 0xC9, 0x03, 0x47, 0xCC, 0x87, + // Bytes 3040 - 307f + 0xC9, 0x03, 0x47, 0xCC, 0x8C, 0xC9, 0x03, 0x47, + 0xCC, 0xA7, 0xA5, 0x03, 0x48, 0xCC, 0x82, 0xC9, + 0x03, 0x48, 0xCC, 0x87, 0xC9, 0x03, 0x48, 0xCC, + 0x88, 0xC9, 0x03, 0x48, 0xCC, 0x8C, 0xC9, 0x03, + 0x48, 0xCC, 0xA3, 0xB5, 0x03, 0x48, 0xCC, 0xA7, + 0xA5, 0x03, 0x48, 0xCC, 0xAE, 0xB5, 0x03, 0x49, + 0xCC, 0x80, 0xC9, 0x03, 0x49, 0xCC, 0x81, 0xC9, + 0x03, 0x49, 0xCC, 0x82, 0xC9, 0x03, 0x49, 0xCC, + // Bytes 3080 - 30bf + 0x83, 0xC9, 0x03, 0x49, 0xCC, 0x84, 0xC9, 0x03, + 0x49, 0xCC, 0x86, 0xC9, 0x03, 0x49, 0xCC, 0x87, + 0xC9, 0x03, 0x49, 0xCC, 0x89, 0xC9, 0x03, 0x49, + 0xCC, 0x8C, 0xC9, 0x03, 0x49, 0xCC, 0x8F, 0xC9, + 0x03, 0x49, 0xCC, 0x91, 0xC9, 0x03, 0x49, 0xCC, + 0xA3, 0xB5, 0x03, 0x49, 0xCC, 0xA8, 0xA5, 0x03, + 0x49, 0xCC, 0xB0, 0xB5, 0x03, 0x4A, 0xCC, 0x82, + 0xC9, 0x03, 0x4B, 0xCC, 0x81, 0xC9, 0x03, 0x4B, + // Bytes 30c0 - 30ff + 0xCC, 0x8C, 0xC9, 0x03, 0x4B, 0xCC, 0xA3, 0xB5, + 0x03, 0x4B, 0xCC, 0xA7, 0xA5, 0x03, 0x4B, 0xCC, + 0xB1, 0xB5, 0x03, 0x4C, 0xCC, 0x81, 0xC9, 0x03, + 0x4C, 0xCC, 0x8C, 0xC9, 0x03, 0x4C, 0xCC, 0xA7, + 0xA5, 0x03, 0x4C, 0xCC, 0xAD, 0xB5, 0x03, 0x4C, + 0xCC, 0xB1, 0xB5, 0x03, 0x4D, 0xCC, 0x81, 0xC9, + 0x03, 0x4D, 0xCC, 0x87, 0xC9, 0x03, 0x4D, 0xCC, + 0xA3, 0xB5, 0x03, 0x4E, 0xCC, 0x80, 0xC9, 0x03, + // Bytes 3100 - 313f + 0x4E, 0xCC, 0x81, 0xC9, 0x03, 0x4E, 0xCC, 0x83, + 0xC9, 0x03, 0x4E, 0xCC, 0x87, 0xC9, 0x03, 0x4E, + 0xCC, 0x8C, 0xC9, 0x03, 0x4E, 0xCC, 0xA3, 0xB5, + 0x03, 0x4E, 0xCC, 0xA7, 0xA5, 0x03, 0x4E, 0xCC, + 0xAD, 0xB5, 0x03, 0x4E, 0xCC, 0xB1, 0xB5, 0x03, + 0x4F, 0xCC, 0x80, 0xC9, 0x03, 0x4F, 0xCC, 0x81, + 0xC9, 0x03, 0x4F, 0xCC, 0x86, 0xC9, 0x03, 0x4F, + 0xCC, 0x89, 0xC9, 0x03, 0x4F, 0xCC, 0x8B, 0xC9, + // Bytes 3140 - 317f + 0x03, 0x4F, 0xCC, 0x8C, 0xC9, 0x03, 0x4F, 0xCC, + 0x8F, 0xC9, 0x03, 0x4F, 0xCC, 0x91, 0xC9, 0x03, + 0x50, 0xCC, 0x81, 0xC9, 0x03, 0x50, 0xCC, 0x87, + 0xC9, 0x03, 0x52, 0xCC, 0x81, 0xC9, 0x03, 0x52, + 0xCC, 0x87, 0xC9, 0x03, 0x52, 0xCC, 0x8C, 0xC9, + 0x03, 0x52, 0xCC, 0x8F, 0xC9, 0x03, 0x52, 0xCC, + 0x91, 0xC9, 0x03, 0x52, 0xCC, 0xA7, 0xA5, 0x03, + 0x52, 0xCC, 0xB1, 0xB5, 0x03, 0x53, 0xCC, 0x82, + // Bytes 3180 - 31bf + 0xC9, 0x03, 0x53, 0xCC, 0x87, 0xC9, 0x03, 0x53, + 0xCC, 0xA6, 0xB5, 0x03, 0x53, 0xCC, 0xA7, 0xA5, + 0x03, 0x54, 0xCC, 0x87, 0xC9, 0x03, 0x54, 0xCC, + 0x8C, 0xC9, 0x03, 0x54, 0xCC, 0xA3, 0xB5, 0x03, + 0x54, 0xCC, 0xA6, 0xB5, 0x03, 0x54, 0xCC, 0xA7, + 0xA5, 0x03, 0x54, 0xCC, 0xAD, 0xB5, 0x03, 0x54, + 0xCC, 0xB1, 0xB5, 0x03, 0x55, 0xCC, 0x80, 0xC9, + 0x03, 0x55, 0xCC, 0x81, 0xC9, 0x03, 0x55, 0xCC, + // Bytes 31c0 - 31ff + 0x82, 0xC9, 0x03, 0x55, 0xCC, 0x86, 0xC9, 0x03, + 0x55, 0xCC, 0x89, 0xC9, 0x03, 0x55, 0xCC, 0x8A, + 0xC9, 0x03, 0x55, 0xCC, 0x8B, 0xC9, 0x03, 0x55, + 0xCC, 0x8C, 0xC9, 0x03, 0x55, 0xCC, 0x8F, 0xC9, + 0x03, 0x55, 0xCC, 0x91, 0xC9, 0x03, 0x55, 0xCC, + 0xA3, 0xB5, 0x03, 0x55, 0xCC, 0xA4, 0xB5, 0x03, + 0x55, 0xCC, 0xA8, 0xA5, 0x03, 0x55, 0xCC, 0xAD, + 0xB5, 0x03, 0x55, 0xCC, 0xB0, 0xB5, 0x03, 0x56, + // Bytes 3200 - 323f + 0xCC, 0x83, 0xC9, 0x03, 0x56, 0xCC, 0xA3, 0xB5, + 0x03, 0x57, 0xCC, 0x80, 0xC9, 0x03, 0x57, 0xCC, + 0x81, 0xC9, 0x03, 0x57, 0xCC, 0x82, 0xC9, 0x03, + 0x57, 0xCC, 0x87, 0xC9, 0x03, 0x57, 0xCC, 0x88, + 0xC9, 0x03, 0x57, 0xCC, 0xA3, 0xB5, 0x03, 0x58, + 0xCC, 0x87, 0xC9, 0x03, 0x58, 0xCC, 0x88, 0xC9, + 0x03, 0x59, 0xCC, 0x80, 0xC9, 0x03, 0x59, 0xCC, + 0x81, 0xC9, 0x03, 0x59, 0xCC, 0x82, 0xC9, 0x03, + // Bytes 3240 - 327f + 0x59, 0xCC, 0x83, 0xC9, 0x03, 0x59, 0xCC, 0x84, + 0xC9, 0x03, 0x59, 0xCC, 0x87, 0xC9, 0x03, 0x59, + 0xCC, 0x88, 0xC9, 0x03, 0x59, 0xCC, 0x89, 0xC9, + 0x03, 0x59, 0xCC, 0xA3, 0xB5, 0x03, 0x5A, 0xCC, + 0x81, 0xC9, 0x03, 0x5A, 0xCC, 0x82, 0xC9, 0x03, + 0x5A, 0xCC, 0x87, 0xC9, 0x03, 0x5A, 0xCC, 0x8C, + 0xC9, 0x03, 0x5A, 0xCC, 0xA3, 0xB5, 0x03, 0x5A, + 0xCC, 0xB1, 0xB5, 0x03, 0x61, 0xCC, 0x80, 0xC9, + // Bytes 3280 - 32bf + 0x03, 0x61, 0xCC, 0x81, 0xC9, 0x03, 0x61, 0xCC, + 0x83, 0xC9, 0x03, 0x61, 0xCC, 0x84, 0xC9, 0x03, + 0x61, 0xCC, 0x89, 0xC9, 0x03, 0x61, 0xCC, 0x8C, + 0xC9, 0x03, 0x61, 0xCC, 0x8F, 0xC9, 0x03, 0x61, + 0xCC, 0x91, 0xC9, 0x03, 0x61, 0xCC, 0xA5, 0xB5, + 0x03, 0x61, 0xCC, 0xA8, 0xA5, 0x03, 0x62, 0xCC, + 0x87, 0xC9, 0x03, 0x62, 0xCC, 0xA3, 0xB5, 0x03, + 0x62, 0xCC, 0xB1, 0xB5, 0x03, 0x63, 0xCC, 0x81, + // Bytes 32c0 - 32ff + 0xC9, 0x03, 0x63, 0xCC, 0x82, 0xC9, 0x03, 0x63, + 0xCC, 0x87, 0xC9, 0x03, 0x63, 0xCC, 0x8C, 0xC9, + 0x03, 0x64, 0xCC, 0x87, 0xC9, 0x03, 0x64, 0xCC, + 0x8C, 0xC9, 0x03, 0x64, 0xCC, 0xA3, 0xB5, 0x03, + 0x64, 0xCC, 0xA7, 0xA5, 0x03, 0x64, 0xCC, 0xAD, + 0xB5, 0x03, 0x64, 0xCC, 0xB1, 0xB5, 0x03, 0x65, + 0xCC, 0x80, 0xC9, 0x03, 0x65, 0xCC, 0x81, 0xC9, + 0x03, 0x65, 0xCC, 0x83, 0xC9, 0x03, 0x65, 0xCC, + // Bytes 3300 - 333f + 0x86, 0xC9, 0x03, 0x65, 0xCC, 0x87, 0xC9, 0x03, + 0x65, 0xCC, 0x88, 0xC9, 0x03, 0x65, 0xCC, 0x89, + 0xC9, 0x03, 0x65, 0xCC, 0x8C, 0xC9, 0x03, 0x65, + 0xCC, 0x8F, 0xC9, 0x03, 0x65, 0xCC, 0x91, 0xC9, + 0x03, 0x65, 0xCC, 0xA8, 0xA5, 0x03, 0x65, 0xCC, + 0xAD, 0xB5, 0x03, 0x65, 0xCC, 0xB0, 0xB5, 0x03, + 0x66, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC, 0x81, + 0xC9, 0x03, 0x67, 0xCC, 0x82, 0xC9, 0x03, 0x67, + // Bytes 3340 - 337f + 0xCC, 0x84, 0xC9, 0x03, 0x67, 0xCC, 0x86, 0xC9, + 0x03, 0x67, 0xCC, 0x87, 0xC9, 0x03, 0x67, 0xCC, + 0x8C, 0xC9, 0x03, 0x67, 0xCC, 0xA7, 0xA5, 0x03, + 0x68, 0xCC, 0x82, 0xC9, 0x03, 0x68, 0xCC, 0x87, + 0xC9, 0x03, 0x68, 0xCC, 0x88, 0xC9, 0x03, 0x68, + 0xCC, 0x8C, 0xC9, 0x03, 0x68, 0xCC, 0xA3, 0xB5, + 0x03, 0x68, 0xCC, 0xA7, 0xA5, 0x03, 0x68, 0xCC, + 0xAE, 0xB5, 0x03, 0x68, 0xCC, 0xB1, 0xB5, 0x03, + // Bytes 3380 - 33bf + 0x69, 0xCC, 0x80, 0xC9, 0x03, 0x69, 0xCC, 0x81, + 0xC9, 0x03, 0x69, 0xCC, 0x82, 0xC9, 0x03, 0x69, + 0xCC, 0x83, 0xC9, 0x03, 0x69, 0xCC, 0x84, 0xC9, + 0x03, 0x69, 0xCC, 0x86, 0xC9, 0x03, 0x69, 0xCC, + 0x89, 0xC9, 0x03, 0x69, 0xCC, 0x8C, 0xC9, 0x03, + 0x69, 0xCC, 0x8F, 0xC9, 0x03, 0x69, 0xCC, 0x91, + 0xC9, 0x03, 0x69, 0xCC, 0xA3, 0xB5, 0x03, 0x69, + 0xCC, 0xA8, 0xA5, 0x03, 0x69, 0xCC, 0xB0, 0xB5, + // Bytes 33c0 - 33ff + 0x03, 0x6A, 0xCC, 0x82, 0xC9, 0x03, 0x6A, 0xCC, + 0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0x81, 0xC9, 0x03, + 0x6B, 0xCC, 0x8C, 0xC9, 0x03, 0x6B, 0xCC, 0xA3, + 0xB5, 0x03, 0x6B, 0xCC, 0xA7, 0xA5, 0x03, 0x6B, + 0xCC, 0xB1, 0xB5, 0x03, 0x6C, 0xCC, 0x81, 0xC9, + 0x03, 0x6C, 0xCC, 0x8C, 0xC9, 0x03, 0x6C, 0xCC, + 0xA7, 0xA5, 0x03, 0x6C, 0xCC, 0xAD, 0xB5, 0x03, + 0x6C, 0xCC, 0xB1, 0xB5, 0x03, 0x6D, 0xCC, 0x81, + // Bytes 3400 - 343f + 0xC9, 0x03, 0x6D, 0xCC, 0x87, 0xC9, 0x03, 0x6D, + 0xCC, 0xA3, 0xB5, 0x03, 0x6E, 0xCC, 0x80, 0xC9, + 0x03, 0x6E, 0xCC, 0x81, 0xC9, 0x03, 0x6E, 0xCC, + 0x83, 0xC9, 0x03, 0x6E, 0xCC, 0x87, 0xC9, 0x03, + 0x6E, 0xCC, 0x8C, 0xC9, 0x03, 0x6E, 0xCC, 0xA3, + 0xB5, 0x03, 0x6E, 0xCC, 0xA7, 0xA5, 0x03, 0x6E, + 0xCC, 0xAD, 0xB5, 0x03, 0x6E, 0xCC, 0xB1, 0xB5, + 0x03, 0x6F, 0xCC, 0x80, 0xC9, 0x03, 0x6F, 0xCC, + // Bytes 3440 - 347f + 0x81, 0xC9, 0x03, 0x6F, 0xCC, 0x86, 0xC9, 0x03, + 0x6F, 0xCC, 0x89, 0xC9, 0x03, 0x6F, 0xCC, 0x8B, + 0xC9, 0x03, 0x6F, 0xCC, 0x8C, 0xC9, 0x03, 0x6F, + 0xCC, 0x8F, 0xC9, 0x03, 0x6F, 0xCC, 0x91, 0xC9, + 0x03, 0x70, 0xCC, 0x81, 0xC9, 0x03, 0x70, 0xCC, + 0x87, 0xC9, 0x03, 0x72, 0xCC, 0x81, 0xC9, 0x03, + 0x72, 0xCC, 0x87, 0xC9, 0x03, 0x72, 0xCC, 0x8C, + 0xC9, 0x03, 0x72, 0xCC, 0x8F, 0xC9, 0x03, 0x72, + // Bytes 3480 - 34bf + 0xCC, 0x91, 0xC9, 0x03, 0x72, 0xCC, 0xA7, 0xA5, + 0x03, 0x72, 0xCC, 0xB1, 0xB5, 0x03, 0x73, 0xCC, + 0x82, 0xC9, 0x03, 0x73, 0xCC, 0x87, 0xC9, 0x03, + 0x73, 0xCC, 0xA6, 0xB5, 0x03, 0x73, 0xCC, 0xA7, + 0xA5, 0x03, 0x74, 0xCC, 0x87, 0xC9, 0x03, 0x74, + 0xCC, 0x88, 0xC9, 0x03, 0x74, 0xCC, 0x8C, 0xC9, + 0x03, 0x74, 0xCC, 0xA3, 0xB5, 0x03, 0x74, 0xCC, + 0xA6, 0xB5, 0x03, 0x74, 0xCC, 0xA7, 0xA5, 0x03, + // Bytes 34c0 - 34ff + 0x74, 0xCC, 0xAD, 0xB5, 0x03, 0x74, 0xCC, 0xB1, + 0xB5, 0x03, 0x75, 0xCC, 0x80, 0xC9, 0x03, 0x75, + 0xCC, 0x81, 0xC9, 0x03, 0x75, 0xCC, 0x82, 0xC9, + 0x03, 0x75, 0xCC, 0x86, 0xC9, 0x03, 0x75, 0xCC, + 0x89, 0xC9, 0x03, 0x75, 0xCC, 0x8A, 0xC9, 0x03, + 0x75, 0xCC, 0x8B, 0xC9, 0x03, 0x75, 0xCC, 0x8C, + 0xC9, 0x03, 0x75, 0xCC, 0x8F, 0xC9, 0x03, 0x75, + 0xCC, 0x91, 0xC9, 0x03, 0x75, 0xCC, 0xA3, 0xB5, + // Bytes 3500 - 353f + 0x03, 0x75, 0xCC, 0xA4, 0xB5, 0x03, 0x75, 0xCC, + 0xA8, 0xA5, 0x03, 0x75, 0xCC, 0xAD, 0xB5, 0x03, + 0x75, 0xCC, 0xB0, 0xB5, 0x03, 0x76, 0xCC, 0x83, + 0xC9, 0x03, 0x76, 0xCC, 0xA3, 0xB5, 0x03, 0x77, + 0xCC, 0x80, 0xC9, 0x03, 0x77, 0xCC, 0x81, 0xC9, + 0x03, 0x77, 0xCC, 0x82, 0xC9, 0x03, 0x77, 0xCC, + 0x87, 0xC9, 0x03, 0x77, 0xCC, 0x88, 0xC9, 0x03, + 0x77, 0xCC, 0x8A, 0xC9, 0x03, 0x77, 0xCC, 0xA3, + // Bytes 3540 - 357f + 0xB5, 0x03, 0x78, 0xCC, 0x87, 0xC9, 0x03, 0x78, + 0xCC, 0x88, 0xC9, 0x03, 0x79, 0xCC, 0x80, 0xC9, + 0x03, 0x79, 0xCC, 0x81, 0xC9, 0x03, 0x79, 0xCC, + 0x82, 0xC9, 0x03, 0x79, 0xCC, 0x83, 0xC9, 0x03, + 0x79, 0xCC, 0x84, 0xC9, 0x03, 0x79, 0xCC, 0x87, + 0xC9, 0x03, 0x79, 0xCC, 0x88, 0xC9, 0x03, 0x79, + 0xCC, 0x89, 0xC9, 0x03, 0x79, 0xCC, 0x8A, 0xC9, + 0x03, 0x79, 0xCC, 0xA3, 0xB5, 0x03, 0x7A, 0xCC, + // Bytes 3580 - 35bf + 0x81, 0xC9, 0x03, 0x7A, 0xCC, 0x82, 0xC9, 0x03, + 0x7A, 0xCC, 0x87, 0xC9, 0x03, 0x7A, 0xCC, 0x8C, + 0xC9, 0x03, 0x7A, 0xCC, 0xA3, 0xB5, 0x03, 0x7A, + 0xCC, 0xB1, 0xB5, 0x04, 0xC2, 0xA8, 0xCC, 0x80, + 0xCA, 0x04, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x04, + 0xC2, 0xA8, 0xCD, 0x82, 0xCA, 0x04, 0xC3, 0x86, + 0xCC, 0x81, 0xC9, 0x04, 0xC3, 0x86, 0xCC, 0x84, + 0xC9, 0x04, 0xC3, 0x98, 0xCC, 0x81, 0xC9, 0x04, + // Bytes 35c0 - 35ff + 0xC3, 0xA6, 0xCC, 0x81, 0xC9, 0x04, 0xC3, 0xA6, + 0xCC, 0x84, 0xC9, 0x04, 0xC3, 0xB8, 0xCC, 0x81, + 0xC9, 0x04, 0xC5, 0xBF, 0xCC, 0x87, 0xC9, 0x04, + 0xC6, 0xB7, 0xCC, 0x8C, 0xC9, 0x04, 0xCA, 0x92, + 0xCC, 0x8C, 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x80, + 0xC9, 0x04, 0xCE, 0x91, 0xCC, 0x81, 0xC9, 0x04, + 0xCE, 0x91, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0x91, + 0xCC, 0x86, 0xC9, 0x04, 0xCE, 0x91, 0xCD, 0x85, + // Bytes 3600 - 363f + 0xD9, 0x04, 0xCE, 0x95, 0xCC, 0x80, 0xC9, 0x04, + 0xCE, 0x95, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x97, + 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x97, 0xCC, 0x81, + 0xC9, 0x04, 0xCE, 0x97, 0xCD, 0x85, 0xD9, 0x04, + 0xCE, 0x99, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x99, + 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x84, + 0xC9, 0x04, 0xCE, 0x99, 0xCC, 0x86, 0xC9, 0x04, + 0xCE, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0x9F, + // Bytes 3640 - 367f + 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0x9F, 0xCC, 0x81, + 0xC9, 0x04, 0xCE, 0xA1, 0xCC, 0x94, 0xC9, 0x04, + 0xCE, 0xA5, 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA5, + 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x84, + 0xC9, 0x04, 0xCE, 0xA5, 0xCC, 0x86, 0xC9, 0x04, + 0xCE, 0xA5, 0xCC, 0x88, 0xC9, 0x04, 0xCE, 0xA9, + 0xCC, 0x80, 0xC9, 0x04, 0xCE, 0xA9, 0xCC, 0x81, + 0xC9, 0x04, 0xCE, 0xA9, 0xCD, 0x85, 0xD9, 0x04, + // Bytes 3680 - 36bf + 0xCE, 0xB1, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB1, + 0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB1, 0xCD, 0x85, + 0xD9, 0x04, 0xCE, 0xB5, 0xCC, 0x80, 0xC9, 0x04, + 0xCE, 0xB5, 0xCC, 0x81, 0xC9, 0x04, 0xCE, 0xB7, + 0xCD, 0x85, 0xD9, 0x04, 0xCE, 0xB9, 0xCC, 0x80, + 0xC9, 0x04, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x04, + 0xCE, 0xB9, 0xCC, 0x84, 0xC9, 0x04, 0xCE, 0xB9, + 0xCC, 0x86, 0xC9, 0x04, 0xCE, 0xB9, 0xCD, 0x82, + // Bytes 36c0 - 36ff + 0xC9, 0x04, 0xCE, 0xBF, 0xCC, 0x80, 0xC9, 0x04, + 0xCE, 0xBF, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x81, + 0xCC, 0x93, 0xC9, 0x04, 0xCF, 0x81, 0xCC, 0x94, + 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x80, 0xC9, 0x04, + 0xCF, 0x85, 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x85, + 0xCC, 0x84, 0xC9, 0x04, 0xCF, 0x85, 0xCC, 0x86, + 0xC9, 0x04, 0xCF, 0x85, 0xCD, 0x82, 0xC9, 0x04, + 0xCF, 0x89, 0xCD, 0x85, 0xD9, 0x04, 0xCF, 0x92, + // Bytes 3700 - 373f + 0xCC, 0x81, 0xC9, 0x04, 0xCF, 0x92, 0xCC, 0x88, + 0xC9, 0x04, 0xD0, 0x86, 0xCC, 0x88, 0xC9, 0x04, + 0xD0, 0x90, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x90, + 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x93, 0xCC, 0x81, + 0xC9, 0x04, 0xD0, 0x95, 0xCC, 0x80, 0xC9, 0x04, + 0xD0, 0x95, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0x95, + 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x86, + 0xC9, 0x04, 0xD0, 0x96, 0xCC, 0x88, 0xC9, 0x04, + // Bytes 3740 - 377f + 0xD0, 0x97, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x98, + 0xCC, 0x80, 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x84, + 0xC9, 0x04, 0xD0, 0x98, 0xCC, 0x86, 0xC9, 0x04, + 0xD0, 0x98, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0x9A, + 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0x9E, 0xCC, 0x88, + 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x84, 0xC9, 0x04, + 0xD0, 0xA3, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xA3, + 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xA3, 0xCC, 0x8B, + // Bytes 3780 - 37bf + 0xC9, 0x04, 0xD0, 0xA7, 0xCC, 0x88, 0xC9, 0x04, + 0xD0, 0xAB, 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xAD, + 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x86, + 0xC9, 0x04, 0xD0, 0xB0, 0xCC, 0x88, 0xC9, 0x04, + 0xD0, 0xB3, 0xCC, 0x81, 0xC9, 0x04, 0xD0, 0xB5, + 0xCC, 0x80, 0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x86, + 0xC9, 0x04, 0xD0, 0xB5, 0xCC, 0x88, 0xC9, 0x04, + 0xD0, 0xB6, 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB6, + // Bytes 37c0 - 37ff + 0xCC, 0x88, 0xC9, 0x04, 0xD0, 0xB7, 0xCC, 0x88, + 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x80, 0xC9, 0x04, + 0xD0, 0xB8, 0xCC, 0x84, 0xC9, 0x04, 0xD0, 0xB8, + 0xCC, 0x86, 0xC9, 0x04, 0xD0, 0xB8, 0xCC, 0x88, + 0xC9, 0x04, 0xD0, 0xBA, 0xCC, 0x81, 0xC9, 0x04, + 0xD0, 0xBE, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x83, + 0xCC, 0x84, 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x86, + 0xC9, 0x04, 0xD1, 0x83, 0xCC, 0x88, 0xC9, 0x04, + // Bytes 3800 - 383f + 0xD1, 0x83, 0xCC, 0x8B, 0xC9, 0x04, 0xD1, 0x87, + 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0x8B, 0xCC, 0x88, + 0xC9, 0x04, 0xD1, 0x8D, 0xCC, 0x88, 0xC9, 0x04, + 0xD1, 0x96, 0xCC, 0x88, 0xC9, 0x04, 0xD1, 0xB4, + 0xCC, 0x8F, 0xC9, 0x04, 0xD1, 0xB5, 0xCC, 0x8F, + 0xC9, 0x04, 0xD3, 0x98, 0xCC, 0x88, 0xC9, 0x04, + 0xD3, 0x99, 0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA8, + 0xCC, 0x88, 0xC9, 0x04, 0xD3, 0xA9, 0xCC, 0x88, + // Bytes 3840 - 387f + 0xC9, 0x04, 0xD8, 0xA7, 0xD9, 0x93, 0xC9, 0x04, + 0xD8, 0xA7, 0xD9, 0x94, 0xC9, 0x04, 0xD8, 0xA7, + 0xD9, 0x95, 0xB5, 0x04, 0xD9, 0x88, 0xD9, 0x94, + 0xC9, 0x04, 0xD9, 0x8A, 0xD9, 0x94, 0xC9, 0x04, + 0xDB, 0x81, 0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x92, + 0xD9, 0x94, 0xC9, 0x04, 0xDB, 0x95, 0xD9, 0x94, + 0xC9, 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xCA, + 0x05, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, + // Bytes 3880 - 38bf + 0x41, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x41, + 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x41, 0xCC, + 0x86, 0xCC, 0x80, 0xCA, 0x05, 0x41, 0xCC, 0x86, + 0xCC, 0x81, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC, + 0x83, 0xCA, 0x05, 0x41, 0xCC, 0x86, 0xCC, 0x89, + 0xCA, 0x05, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xCA, + 0x05, 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, + 0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x41, + // Bytes 38c0 - 38ff + 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x41, 0xCC, + 0xA3, 0xCC, 0x86, 0xCA, 0x05, 0x43, 0xCC, 0xA7, + 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, + 0x80, 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x81, + 0xCA, 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xCA, + 0x05, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, + 0x45, 0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x45, + 0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05, 0x45, 0xCC, + // Bytes 3900 - 393f + 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x45, 0xCC, 0xA7, + 0xCC, 0x86, 0xCA, 0x05, 0x49, 0xCC, 0x88, 0xCC, + 0x81, 0xCA, 0x05, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, + 0xCA, 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xCA, + 0x05, 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, + 0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x4F, + 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x4F, 0xCC, + 0x83, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x83, + // Bytes 3940 - 397f + 0xCC, 0x84, 0xCA, 0x05, 0x4F, 0xCC, 0x83, 0xCC, + 0x88, 0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x80, + 0xCA, 0x05, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xCA, + 0x05, 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05, + 0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x4F, + 0xCC, 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x4F, 0xCC, + 0x9B, 0xCC, 0x81, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, + 0xCC, 0x83, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, + // Bytes 3980 - 39bf + 0x89, 0xCA, 0x05, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, + 0xB6, 0x05, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, + 0x05, 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05, + 0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x53, + 0xCC, 0x81, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC, + 0x8C, 0xCC, 0x87, 0xCA, 0x05, 0x53, 0xCC, 0xA3, + 0xCC, 0x87, 0xCA, 0x05, 0x55, 0xCC, 0x83, 0xCC, + 0x81, 0xCA, 0x05, 0x55, 0xCC, 0x84, 0xCC, 0x88, + // Bytes 39c0 - 39ff + 0xCA, 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xCA, + 0x05, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, + 0x55, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x55, + 0xCC, 0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x55, 0xCC, + 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x55, 0xCC, 0x9B, + 0xCC, 0x81, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, + 0x83, 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0x89, + 0xCA, 0x05, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6, + // Bytes 3a00 - 3a3f + 0x05, 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05, + 0x61, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x61, + 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x61, 0xCC, + 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x61, 0xCC, 0x86, + 0xCC, 0x80, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, + 0x81, 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x83, + 0xCA, 0x05, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xCA, + 0x05, 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05, + // Bytes 3a40 - 3a7f + 0x61, 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x61, + 0xCC, 0x8A, 0xCC, 0x81, 0xCA, 0x05, 0x61, 0xCC, + 0xA3, 0xCC, 0x82, 0xCA, 0x05, 0x61, 0xCC, 0xA3, + 0xCC, 0x86, 0xCA, 0x05, 0x63, 0xCC, 0xA7, 0xCC, + 0x81, 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x80, + 0xCA, 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xCA, + 0x05, 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, + 0x65, 0xCC, 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x65, + // Bytes 3a80 - 3abf + 0xCC, 0x84, 0xCC, 0x80, 0xCA, 0x05, 0x65, 0xCC, + 0x84, 0xCC, 0x81, 0xCA, 0x05, 0x65, 0xCC, 0xA3, + 0xCC, 0x82, 0xCA, 0x05, 0x65, 0xCC, 0xA7, 0xCC, + 0x86, 0xCA, 0x05, 0x69, 0xCC, 0x88, 0xCC, 0x81, + 0xCA, 0x05, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xCA, + 0x05, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xCA, 0x05, + 0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xCA, 0x05, 0x6F, + 0xCC, 0x82, 0xCC, 0x83, 0xCA, 0x05, 0x6F, 0xCC, + // Bytes 3ac0 - 3aff + 0x82, 0xCC, 0x89, 0xCA, 0x05, 0x6F, 0xCC, 0x83, + 0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC, + 0x84, 0xCA, 0x05, 0x6F, 0xCC, 0x83, 0xCC, 0x88, + 0xCA, 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xCA, + 0x05, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xCA, 0x05, + 0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xCA, 0x05, 0x6F, + 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x6F, 0xCC, + 0x9B, 0xCC, 0x80, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, + // Bytes 3b00 - 3b3f + 0xCC, 0x81, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, + 0x83, 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0x89, + 0xCA, 0x05, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6, + 0x05, 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xCA, 0x05, + 0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xCA, 0x05, 0x72, + 0xCC, 0xA3, 0xCC, 0x84, 0xCA, 0x05, 0x73, 0xCC, + 0x81, 0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0x8C, + 0xCC, 0x87, 0xCA, 0x05, 0x73, 0xCC, 0xA3, 0xCC, + // Bytes 3b40 - 3b7f + 0x87, 0xCA, 0x05, 0x75, 0xCC, 0x83, 0xCC, 0x81, + 0xCA, 0x05, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xCA, + 0x05, 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xCA, 0x05, + 0x75, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x05, 0x75, + 0xCC, 0x88, 0xCC, 0x84, 0xCA, 0x05, 0x75, 0xCC, + 0x88, 0xCC, 0x8C, 0xCA, 0x05, 0x75, 0xCC, 0x9B, + 0xCC, 0x80, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, + 0x81, 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x83, + // Bytes 3b80 - 3bbf + 0xCA, 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xCA, + 0x05, 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xB6, 0x05, + 0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0xCA, 0x05, 0xE1, + 0xBE, 0xBF, 0xCC, 0x81, 0xCA, 0x05, 0xE1, 0xBE, + 0xBF, 0xCD, 0x82, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, + 0xCC, 0x80, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCC, + 0x81, 0xCA, 0x05, 0xE1, 0xBF, 0xBE, 0xCD, 0x82, + 0xCA, 0x05, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0x05, + // Bytes 3bc0 - 3bff + 0x05, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x86, 0x94, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x87, 0x90, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, + 0x92, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x87, 0x94, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x83, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x88, 0x88, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0x05, 0x05, + // Bytes 3c00 - 3c3f + 0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x88, 0xBC, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, + 0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x85, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x88, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x89, 0x8D, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + // Bytes 3c40 - 3c7f + 0x89, 0xB2, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, + 0xB3, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB6, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xB7, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x89, 0xBA, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x8A, 0x82, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, + // Bytes 3c80 - 3cbf + 0x83, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x86, + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x87, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0x91, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0x05, + 0x05, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0x05, 0x05, + 0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0x05, 0x05, 0xE2, + 0x8A, 0xA9, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, + 0xAB, 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB2, + // Bytes 3cc0 - 3cff + 0xCC, 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB3, 0xCC, + 0xB8, 0x05, 0x05, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8, + 0x05, 0x05, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0x05, + 0x06, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + // Bytes 3d00 - 3d3f + 0x06, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xCA, + 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + // Bytes 3d40 - 3d7f + 0x06, 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xCA, + 0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xCA, + // Bytes 3d80 - 3dbf + 0x06, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + // Bytes 3dc0 - 3dff + 0x06, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xDA, + // Bytes 3e00 - 3e3f + 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + // Bytes 3e40 - 3e7f + 0x06, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xCA, + 0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xCA, + // Bytes 3e80 - 3ebf + 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xCA, + 0x06, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xCA, + 0x06, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xDA, + 0x06, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xDA, + // Bytes 3ec0 - 3eff + 0x06, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xDA, + 0x06, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xDA, + 0x06, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xDA, + 0x06, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0x09, + 0x06, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0x09, + 0x06, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0x09, + 0x06, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0x85, + 0x06, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0x11, + // Bytes 3f00 - 3f3f + 0x06, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 3f40 - 3f7f + 0x06, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 3f80 - 3fbf + 0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0x0D, + // Bytes 3fc0 - 3fff + 0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 4000 - 403f + 0x06, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 4040 - 407f + 0x06, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 4080 - 40bf + 0x06, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0x0D, + 0x06, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0x0D, + // Bytes 40c0 - 40ff + 0x06, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0x0D, + 0x06, 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0x0D, + 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x93, 0xCC, + 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, + 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD, + // Bytes 4100 - 413f + 0x85, 0xDB, 0x08, 0xCE, 0x91, 0xCC, 0x94, 0xCD, + 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, + 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, 0x94, 0xCC, + 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0x97, 0xCC, + 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + // Bytes 4140 - 417f + 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, + 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, + 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, + // Bytes 4180 - 41bf + 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, + 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, + 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB1, 0xCC, + 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, + // Bytes 41c0 - 41ff + 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, + 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, + 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCE, + 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xDB, + 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, + 0x85, 0xDB, 0x08, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, + 0x82, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, + // Bytes 4200 - 423f + 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF, + 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xDB, + 0x08, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, + 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, 0x94, 0xCC, + 0x80, 0xCD, 0x85, 0xDB, 0x08, 0xCF, 0x89, 0xCC, + 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xDB, 0x08, 0xCF, + 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xDB, + 0x08, 0xF0, 0x91, 0x82, 0x99, 0xF0, 0x91, 0x82, + // Bytes 4240 - 427f + 0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82, 0x9B, 0xF0, + 0x91, 0x82, 0xBA, 0x09, 0x08, 0xF0, 0x91, 0x82, + 0xA5, 0xF0, 0x91, 0x82, 0xBA, 0x09, 0x42, 0xC2, + 0xB4, 0x01, 0x43, 0x20, 0xCC, 0x81, 0xC9, 0x43, + 0x20, 0xCC, 0x83, 0xC9, 0x43, 0x20, 0xCC, 0x84, + 0xC9, 0x43, 0x20, 0xCC, 0x85, 0xC9, 0x43, 0x20, + 0xCC, 0x86, 0xC9, 0x43, 0x20, 0xCC, 0x87, 0xC9, + 0x43, 0x20, 0xCC, 0x88, 0xC9, 0x43, 0x20, 0xCC, + // Bytes 4280 - 42bf + 0x8A, 0xC9, 0x43, 0x20, 0xCC, 0x8B, 0xC9, 0x43, + 0x20, 0xCC, 0x93, 0xC9, 0x43, 0x20, 0xCC, 0x94, + 0xC9, 0x43, 0x20, 0xCC, 0xA7, 0xA5, 0x43, 0x20, + 0xCC, 0xA8, 0xA5, 0x43, 0x20, 0xCC, 0xB3, 0xB5, + 0x43, 0x20, 0xCD, 0x82, 0xC9, 0x43, 0x20, 0xCD, + 0x85, 0xD9, 0x43, 0x20, 0xD9, 0x8B, 0x59, 0x43, + 0x20, 0xD9, 0x8C, 0x5D, 0x43, 0x20, 0xD9, 0x8D, + 0x61, 0x43, 0x20, 0xD9, 0x8E, 0x65, 0x43, 0x20, + // Bytes 42c0 - 42ff + 0xD9, 0x8F, 0x69, 0x43, 0x20, 0xD9, 0x90, 0x6D, + 0x43, 0x20, 0xD9, 0x91, 0x71, 0x43, 0x20, 0xD9, + 0x92, 0x75, 0x43, 0x41, 0xCC, 0x8A, 0xC9, 0x43, + 0x73, 0xCC, 0x87, 0xC9, 0x44, 0x20, 0xE3, 0x82, + 0x99, 0x0D, 0x44, 0x20, 0xE3, 0x82, 0x9A, 0x0D, + 0x44, 0xC2, 0xA8, 0xCC, 0x81, 0xCA, 0x44, 0xCE, + 0x91, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0x95, 0xCC, + 0x81, 0xC9, 0x44, 0xCE, 0x97, 0xCC, 0x81, 0xC9, + // Bytes 4300 - 433f + 0x44, 0xCE, 0x99, 0xCC, 0x81, 0xC9, 0x44, 0xCE, + 0x9F, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC, + 0x81, 0xC9, 0x44, 0xCE, 0xA5, 0xCC, 0x88, 0xC9, + 0x44, 0xCE, 0xA9, 0xCC, 0x81, 0xC9, 0x44, 0xCE, + 0xB1, 0xCC, 0x81, 0xC9, 0x44, 0xCE, 0xB5, 0xCC, + 0x81, 0xC9, 0x44, 0xCE, 0xB7, 0xCC, 0x81, 0xC9, + 0x44, 0xCE, 0xB9, 0xCC, 0x81, 0xC9, 0x44, 0xCE, + 0xBF, 0xCC, 0x81, 0xC9, 0x44, 0xCF, 0x85, 0xCC, + // Bytes 4340 - 437f + 0x81, 0xC9, 0x44, 0xCF, 0x89, 0xCC, 0x81, 0xC9, + 0x44, 0xD7, 0x90, 0xD6, 0xB7, 0x31, 0x44, 0xD7, + 0x90, 0xD6, 0xB8, 0x35, 0x44, 0xD7, 0x90, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0x91, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0x91, 0xD6, 0xBF, 0x49, 0x44, 0xD7, + 0x92, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x93, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0x94, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0x95, 0xD6, 0xB9, 0x39, 0x44, 0xD7, + // Bytes 4380 - 43bf + 0x95, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x96, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0x98, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0x99, 0xD6, 0xB4, 0x25, 0x44, 0xD7, + 0x99, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9A, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0x9B, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0x9B, 0xD6, 0xBF, 0x49, 0x44, 0xD7, + 0x9C, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0x9E, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0xA0, 0xD6, 0xBC, 0x41, + // Bytes 43c0 - 43ff + 0x44, 0xD7, 0xA1, 0xD6, 0xBC, 0x41, 0x44, 0xD7, + 0xA3, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0xA4, 0xD6, 0xBF, 0x49, + 0x44, 0xD7, 0xA6, 0xD6, 0xBC, 0x41, 0x44, 0xD7, + 0xA7, 0xD6, 0xBC, 0x41, 0x44, 0xD7, 0xA8, 0xD6, + 0xBC, 0x41, 0x44, 0xD7, 0xA9, 0xD6, 0xBC, 0x41, + 0x44, 0xD7, 0xA9, 0xD7, 0x81, 0x4D, 0x44, 0xD7, + 0xA9, 0xD7, 0x82, 0x51, 0x44, 0xD7, 0xAA, 0xD6, + // Bytes 4400 - 443f + 0xBC, 0x41, 0x44, 0xD7, 0xB2, 0xD6, 0xB7, 0x31, + 0x44, 0xD8, 0xA7, 0xD9, 0x8B, 0x59, 0x44, 0xD8, + 0xA7, 0xD9, 0x93, 0xC9, 0x44, 0xD8, 0xA7, 0xD9, + 0x94, 0xC9, 0x44, 0xD8, 0xA7, 0xD9, 0x95, 0xB5, + 0x44, 0xD8, 0xB0, 0xD9, 0xB0, 0x79, 0x44, 0xD8, + 0xB1, 0xD9, 0xB0, 0x79, 0x44, 0xD9, 0x80, 0xD9, + 0x8B, 0x59, 0x44, 0xD9, 0x80, 0xD9, 0x8E, 0x65, + 0x44, 0xD9, 0x80, 0xD9, 0x8F, 0x69, 0x44, 0xD9, + // Bytes 4440 - 447f + 0x80, 0xD9, 0x90, 0x6D, 0x44, 0xD9, 0x80, 0xD9, + 0x91, 0x71, 0x44, 0xD9, 0x80, 0xD9, 0x92, 0x75, + 0x44, 0xD9, 0x87, 0xD9, 0xB0, 0x79, 0x44, 0xD9, + 0x88, 0xD9, 0x94, 0xC9, 0x44, 0xD9, 0x89, 0xD9, + 0xB0, 0x79, 0x44, 0xD9, 0x8A, 0xD9, 0x94, 0xC9, + 0x44, 0xDB, 0x92, 0xD9, 0x94, 0xC9, 0x44, 0xDB, + 0x95, 0xD9, 0x94, 0xC9, 0x45, 0x20, 0xCC, 0x88, + 0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCC, + // Bytes 4480 - 44bf + 0x81, 0xCA, 0x45, 0x20, 0xCC, 0x88, 0xCD, 0x82, + 0xCA, 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xCA, + 0x45, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x45, + 0x20, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x45, 0x20, + 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x45, 0x20, 0xCC, + 0x94, 0xCC, 0x81, 0xCA, 0x45, 0x20, 0xCC, 0x94, + 0xCD, 0x82, 0xCA, 0x45, 0x20, 0xD9, 0x8C, 0xD9, + 0x91, 0x72, 0x45, 0x20, 0xD9, 0x8D, 0xD9, 0x91, + // Bytes 44c0 - 44ff + 0x72, 0x45, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x72, + 0x45, 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x72, 0x45, + 0x20, 0xD9, 0x90, 0xD9, 0x91, 0x72, 0x45, 0x20, + 0xD9, 0x91, 0xD9, 0xB0, 0x7A, 0x45, 0xE2, 0xAB, + 0x9D, 0xCC, 0xB8, 0x05, 0x46, 0xCE, 0xB9, 0xCC, + 0x88, 0xCC, 0x81, 0xCA, 0x46, 0xCF, 0x85, 0xCC, + 0x88, 0xCC, 0x81, 0xCA, 0x46, 0xD7, 0xA9, 0xD6, + 0xBC, 0xD7, 0x81, 0x4E, 0x46, 0xD7, 0xA9, 0xD6, + // Bytes 4500 - 453f + 0xBC, 0xD7, 0x82, 0x52, 0x46, 0xD9, 0x80, 0xD9, + 0x8E, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9, + 0x8F, 0xD9, 0x91, 0x72, 0x46, 0xD9, 0x80, 0xD9, + 0x90, 0xD9, 0x91, 0x72, 0x46, 0xE0, 0xA4, 0x95, + 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x96, + 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x97, + 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0x9C, + 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA1, + // Bytes 4540 - 457f + 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xA2, + 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAB, + 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA4, 0xAF, + 0xE0, 0xA4, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA1, + 0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xA2, + 0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA6, 0xAF, + 0xE0, 0xA6, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x96, + 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x97, + // Bytes 4580 - 45bf + 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0x9C, + 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xAB, + 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB2, + 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xA8, 0xB8, + 0xE0, 0xA8, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA1, + 0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xAC, 0xA2, + 0xE0, 0xAC, 0xBC, 0x09, 0x46, 0xE0, 0xBE, 0xB2, + 0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE0, 0xBE, 0xB3, + // Bytes 45c0 - 45ff + 0xE0, 0xBE, 0x80, 0x9D, 0x46, 0xE3, 0x83, 0x86, + 0xE3, 0x82, 0x99, 0x0D, 0x48, 0xF0, 0x9D, 0x85, + 0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, 0x48, 0xF0, + 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xAD, + 0x48, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, + 0xA5, 0xAD, 0x48, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, + 0x9D, 0x85, 0xA5, 0xAD, 0x49, 0xE0, 0xBE, 0xB2, + 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x49, + // Bytes 4600 - 463f + 0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, + 0x80, 0x9E, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, + 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE, + 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, + 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0, + 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, + 0x9D, 0x85, 0xB0, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, + 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, + // Bytes 4640 - 467f + 0xB1, 0xAE, 0x4C, 0xF0, 0x9D, 0x85, 0x98, 0xF0, + 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xAE, + 0x4C, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, + 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xAE, 0x4C, 0xF0, + 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, + 0x9D, 0x85, 0xAF, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, + 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, + 0xAE, 0xAE, 0x4C, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, + // Bytes 4680 - 46bf + 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xAE, + 0x83, 0x41, 0xCC, 0x82, 0xC9, 0x83, 0x41, 0xCC, + 0x86, 0xC9, 0x83, 0x41, 0xCC, 0x87, 0xC9, 0x83, + 0x41, 0xCC, 0x88, 0xC9, 0x83, 0x41, 0xCC, 0x8A, + 0xC9, 0x83, 0x41, 0xCC, 0xA3, 0xB5, 0x83, 0x43, + 0xCC, 0xA7, 0xA5, 0x83, 0x45, 0xCC, 0x82, 0xC9, + 0x83, 0x45, 0xCC, 0x84, 0xC9, 0x83, 0x45, 0xCC, + 0xA3, 0xB5, 0x83, 0x45, 0xCC, 0xA7, 0xA5, 0x83, + // Bytes 46c0 - 46ff + 0x49, 0xCC, 0x88, 0xC9, 0x83, 0x4C, 0xCC, 0xA3, + 0xB5, 0x83, 0x4F, 0xCC, 0x82, 0xC9, 0x83, 0x4F, + 0xCC, 0x83, 0xC9, 0x83, 0x4F, 0xCC, 0x84, 0xC9, + 0x83, 0x4F, 0xCC, 0x87, 0xC9, 0x83, 0x4F, 0xCC, + 0x88, 0xC9, 0x83, 0x4F, 0xCC, 0x9B, 0xAD, 0x83, + 0x4F, 0xCC, 0xA3, 0xB5, 0x83, 0x4F, 0xCC, 0xA8, + 0xA5, 0x83, 0x52, 0xCC, 0xA3, 0xB5, 0x83, 0x53, + 0xCC, 0x81, 0xC9, 0x83, 0x53, 0xCC, 0x8C, 0xC9, + // Bytes 4700 - 473f + 0x83, 0x53, 0xCC, 0xA3, 0xB5, 0x83, 0x55, 0xCC, + 0x83, 0xC9, 0x83, 0x55, 0xCC, 0x84, 0xC9, 0x83, + 0x55, 0xCC, 0x88, 0xC9, 0x83, 0x55, 0xCC, 0x9B, + 0xAD, 0x83, 0x61, 0xCC, 0x82, 0xC9, 0x83, 0x61, + 0xCC, 0x86, 0xC9, 0x83, 0x61, 0xCC, 0x87, 0xC9, + 0x83, 0x61, 0xCC, 0x88, 0xC9, 0x83, 0x61, 0xCC, + 0x8A, 0xC9, 0x83, 0x61, 0xCC, 0xA3, 0xB5, 0x83, + 0x63, 0xCC, 0xA7, 0xA5, 0x83, 0x65, 0xCC, 0x82, + // Bytes 4740 - 477f + 0xC9, 0x83, 0x65, 0xCC, 0x84, 0xC9, 0x83, 0x65, + 0xCC, 0xA3, 0xB5, 0x83, 0x65, 0xCC, 0xA7, 0xA5, + 0x83, 0x69, 0xCC, 0x88, 0xC9, 0x83, 0x6C, 0xCC, + 0xA3, 0xB5, 0x83, 0x6F, 0xCC, 0x82, 0xC9, 0x83, + 0x6F, 0xCC, 0x83, 0xC9, 0x83, 0x6F, 0xCC, 0x84, + 0xC9, 0x83, 0x6F, 0xCC, 0x87, 0xC9, 0x83, 0x6F, + 0xCC, 0x88, 0xC9, 0x83, 0x6F, 0xCC, 0x9B, 0xAD, + 0x83, 0x6F, 0xCC, 0xA3, 0xB5, 0x83, 0x6F, 0xCC, + // Bytes 4780 - 47bf + 0xA8, 0xA5, 0x83, 0x72, 0xCC, 0xA3, 0xB5, 0x83, + 0x73, 0xCC, 0x81, 0xC9, 0x83, 0x73, 0xCC, 0x8C, + 0xC9, 0x83, 0x73, 0xCC, 0xA3, 0xB5, 0x83, 0x75, + 0xCC, 0x83, 0xC9, 0x83, 0x75, 0xCC, 0x84, 0xC9, + 0x83, 0x75, 0xCC, 0x88, 0xC9, 0x83, 0x75, 0xCC, + 0x9B, 0xAD, 0x84, 0xCE, 0x91, 0xCC, 0x93, 0xC9, + 0x84, 0xCE, 0x91, 0xCC, 0x94, 0xC9, 0x84, 0xCE, + 0x95, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x95, 0xCC, + // Bytes 47c0 - 47ff + 0x94, 0xC9, 0x84, 0xCE, 0x97, 0xCC, 0x93, 0xC9, + 0x84, 0xCE, 0x97, 0xCC, 0x94, 0xC9, 0x84, 0xCE, + 0x99, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0x99, 0xCC, + 0x94, 0xC9, 0x84, 0xCE, 0x9F, 0xCC, 0x93, 0xC9, + 0x84, 0xCE, 0x9F, 0xCC, 0x94, 0xC9, 0x84, 0xCE, + 0xA5, 0xCC, 0x94, 0xC9, 0x84, 0xCE, 0xA9, 0xCC, + 0x93, 0xC9, 0x84, 0xCE, 0xA9, 0xCC, 0x94, 0xC9, + 0x84, 0xCE, 0xB1, 0xCC, 0x80, 0xC9, 0x84, 0xCE, + // Bytes 4800 - 483f + 0xB1, 0xCC, 0x81, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, + 0x93, 0xC9, 0x84, 0xCE, 0xB1, 0xCC, 0x94, 0xC9, + 0x84, 0xCE, 0xB1, 0xCD, 0x82, 0xC9, 0x84, 0xCE, + 0xB5, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB5, 0xCC, + 0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, 0x80, 0xC9, + 0x84, 0xCE, 0xB7, 0xCC, 0x81, 0xC9, 0x84, 0xCE, + 0xB7, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB7, 0xCC, + 0x94, 0xC9, 0x84, 0xCE, 0xB7, 0xCD, 0x82, 0xC9, + // Bytes 4840 - 487f + 0x84, 0xCE, 0xB9, 0xCC, 0x88, 0xC9, 0x84, 0xCE, + 0xB9, 0xCC, 0x93, 0xC9, 0x84, 0xCE, 0xB9, 0xCC, + 0x94, 0xC9, 0x84, 0xCE, 0xBF, 0xCC, 0x93, 0xC9, + 0x84, 0xCE, 0xBF, 0xCC, 0x94, 0xC9, 0x84, 0xCF, + 0x85, 0xCC, 0x88, 0xC9, 0x84, 0xCF, 0x85, 0xCC, + 0x93, 0xC9, 0x84, 0xCF, 0x85, 0xCC, 0x94, 0xC9, + 0x84, 0xCF, 0x89, 0xCC, 0x80, 0xC9, 0x84, 0xCF, + 0x89, 0xCC, 0x81, 0xC9, 0x84, 0xCF, 0x89, 0xCC, + // Bytes 4880 - 48bf + 0x93, 0xC9, 0x84, 0xCF, 0x89, 0xCC, 0x94, 0xC9, + 0x84, 0xCF, 0x89, 0xCD, 0x82, 0xC9, 0x86, 0xCE, + 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE, + 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE, + // Bytes 48c0 - 48ff + 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE, + 0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE, + 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + // Bytes 4900 - 493f + 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE, + 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE, + 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE, + 0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + // Bytes 4940 - 497f + 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCE, + 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCE, + 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCE, + 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCE, + 0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x86, 0xCF, + // Bytes 4980 - 49bf + 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCA, 0x86, 0xCF, + 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCA, 0x86, 0xCF, + 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCA, 0x86, 0xCF, + 0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCA, 0x86, 0xCF, + 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCA, 0x86, 0xCF, + 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCA, 0x42, 0xCC, + 0x80, 0xC9, 0x32, 0x42, 0xCC, 0x81, 0xC9, 0x32, + 0x42, 0xCC, 0x93, 0xC9, 0x32, 0x43, 0xE1, 0x85, + // Bytes 49c0 - 49ff + 0xA1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA2, 0x01, + 0x00, 0x43, 0xE1, 0x85, 0xA3, 0x01, 0x00, 0x43, + 0xE1, 0x85, 0xA4, 0x01, 0x00, 0x43, 0xE1, 0x85, + 0xA5, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xA6, 0x01, + 0x00, 0x43, 0xE1, 0x85, 0xA7, 0x01, 0x00, 0x43, + 0xE1, 0x85, 0xA8, 0x01, 0x00, 0x43, 0xE1, 0x85, + 0xA9, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAA, 0x01, + 0x00, 0x43, 0xE1, 0x85, 0xAB, 0x01, 0x00, 0x43, + // Bytes 4a00 - 4a3f + 0xE1, 0x85, 0xAC, 0x01, 0x00, 0x43, 0xE1, 0x85, + 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xAE, 0x01, + 0x00, 0x43, 0xE1, 0x85, 0xAF, 0x01, 0x00, 0x43, + 0xE1, 0x85, 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x85, + 0xB1, 0x01, 0x00, 0x43, 0xE1, 0x85, 0xB2, 0x01, + 0x00, 0x43, 0xE1, 0x85, 0xB3, 0x01, 0x00, 0x43, + 0xE1, 0x85, 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x85, + 0xB5, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xAA, 0x01, + // Bytes 4a40 - 4a7f + 0x00, 0x43, 0xE1, 0x86, 0xAC, 0x01, 0x00, 0x43, + 0xE1, 0x86, 0xAD, 0x01, 0x00, 0x43, 0xE1, 0x86, + 0xB0, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB1, 0x01, + 0x00, 0x43, 0xE1, 0x86, 0xB2, 0x01, 0x00, 0x43, + 0xE1, 0x86, 0xB3, 0x01, 0x00, 0x43, 0xE1, 0x86, + 0xB4, 0x01, 0x00, 0x43, 0xE1, 0x86, 0xB5, 0x01, + 0x00, 0x44, 0xCC, 0x88, 0xCC, 0x81, 0xCA, 0x32, + 0x43, 0xE3, 0x82, 0x99, 0x0D, 0x03, 0x43, 0xE3, + // Bytes 4a80 - 4abf + 0x82, 0x9A, 0x0D, 0x03, 0x46, 0xE0, 0xBD, 0xB1, + 0xE0, 0xBD, 0xB2, 0x9E, 0x26, 0x46, 0xE0, 0xBD, + 0xB1, 0xE0, 0xBD, 0xB4, 0xA2, 0x26, 0x46, 0xE0, + 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0x9E, 0x26, 0x00, + 0x01, +} + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfcTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfcTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfcValues[c0] + } + i := nfcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfcTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfcTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfcValues[c0] + } + i := nfcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// nfcTrie. Total size: 10586 bytes (10.34 KiB). Checksum: dd926e82067bee11. +type nfcTrie struct{} + +func newNfcTrie(i int) *nfcTrie { + return &nfcTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *nfcTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 46: + return uint16(nfcValues[n<<6+uint32(b)]) + default: + n -= 46 + return uint16(nfcSparse.lookup(n, b)) + } +} + +// nfcValues: 48 blocks, 3072 entries, 6144 bytes +// The third block is the zero block. +var nfcValues = [3072]uint16{ + // Block 0x0, offset 0x0 + 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000, + // Block 0x1, offset 0x40 + 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000, + 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000, + 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000, + 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000, + 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000, + 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000, + 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000, + 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000, + 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000, + 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c, + 0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb, + 0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104, + 0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd, + 0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235, + 0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285, + 0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3, + 0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750, + 0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f, + 0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3, + 0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569, + // Block 0x4, offset 0x100 + 0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8, + 0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6, + 0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5, + 0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302, + 0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339, + 0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352, + 0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e, + 0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6, + 0x130: 0x308c, 0x134: 0x30b4, 0x135: 0x33c0, + 0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc, + 0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8, + // Block 0x5, offset 0x140 + 0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118, + 0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f, + 0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c, + 0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483, + 0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d, + 0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba, + 0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796, + 0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2, + 0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528, + 0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267, + 0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0xa000, + // Block 0x6, offset 0x180 + 0x184: 0x8100, 0x185: 0x8100, + 0x186: 0x8100, + 0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140, + 0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8, + 0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50, + 0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5, + 0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf, + 0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd, + 0x1b0: 0x33c5, 0x1b4: 0x3028, 0x1b5: 0x3334, + 0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46, + 0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316, + 0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac, + 0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479, + 0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6, + 0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5, + 0x1de: 0x305a, 0x1df: 0x3366, + 0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b, + 0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769, + 0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f, + // Block 0x8, offset 0x200 + 0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132, + 0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932, + 0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932, + 0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d, + 0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d, + 0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d, + 0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d, + 0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d, + 0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101, + 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d, + 0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132, + // Block 0x9, offset 0x240 + 0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936, + 0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132, + 0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132, + 0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132, + 0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135, + 0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132, + 0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132, + 0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132, + 0x274: 0x0170, + 0x27a: 0x8100, + 0x27e: 0x0037, + // Block 0xa, offset 0x280 + 0x284: 0x8100, 0x285: 0x35a1, + 0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625, + 0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000, + 0x295: 0xa000, 0x297: 0xa000, + 0x299: 0xa000, + 0x29f: 0xa000, 0x2a1: 0xa000, + 0x2a5: 0xa000, 0x2a9: 0xa000, + 0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9, + 0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000, + 0x2b7: 0xa000, 0x2b9: 0xa000, + 0x2bf: 0xa000, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x3721, 0x2c1: 0x372d, 0x2c3: 0x371b, + 0x2c6: 0xa000, 0x2c7: 0x3709, + 0x2cc: 0x375d, 0x2cd: 0x3745, 0x2ce: 0x376f, 0x2d0: 0xa000, + 0x2d3: 0xa000, 0x2d5: 0xa000, 0x2d6: 0xa000, 0x2d7: 0xa000, + 0x2d8: 0xa000, 0x2d9: 0x3751, 0x2da: 0xa000, + 0x2de: 0xa000, 0x2e3: 0xa000, + 0x2e7: 0xa000, + 0x2eb: 0xa000, 0x2ed: 0xa000, + 0x2f0: 0xa000, 0x2f3: 0xa000, 0x2f5: 0xa000, + 0x2f6: 0xa000, 0x2f7: 0xa000, 0x2f8: 0xa000, 0x2f9: 0x37d5, 0x2fa: 0xa000, + 0x2fe: 0xa000, + // Block 0xc, offset 0x300 + 0x301: 0x3733, 0x302: 0x37b7, + 0x310: 0x370f, 0x311: 0x3793, + 0x312: 0x3715, 0x313: 0x3799, 0x316: 0x3727, 0x317: 0x37ab, + 0x318: 0xa000, 0x319: 0xa000, 0x31a: 0x3829, 0x31b: 0x382f, 0x31c: 0x3739, 0x31d: 0x37bd, + 0x31e: 0x373f, 0x31f: 0x37c3, 0x322: 0x374b, 0x323: 0x37cf, + 0x324: 0x3757, 0x325: 0x37db, 0x326: 0x3763, 0x327: 0x37e7, 0x328: 0xa000, 0x329: 0xa000, + 0x32a: 0x3835, 0x32b: 0x383b, 0x32c: 0x378d, 0x32d: 0x3811, 0x32e: 0x3769, 0x32f: 0x37ed, + 0x330: 0x3775, 0x331: 0x37f9, 0x332: 0x377b, 0x333: 0x37ff, 0x334: 0x3781, 0x335: 0x3805, + 0x338: 0x3787, 0x339: 0x380b, + // Block 0xd, offset 0x340 + 0x351: 0x812d, + 0x352: 0x8132, 0x353: 0x8132, 0x354: 0x8132, 0x355: 0x8132, 0x356: 0x812d, 0x357: 0x8132, + 0x358: 0x8132, 0x359: 0x8132, 0x35a: 0x812e, 0x35b: 0x812d, 0x35c: 0x8132, 0x35d: 0x8132, + 0x35e: 0x8132, 0x35f: 0x8132, 0x360: 0x8132, 0x361: 0x8132, 0x362: 0x812d, 0x363: 0x812d, + 0x364: 0x812d, 0x365: 0x812d, 0x366: 0x812d, 0x367: 0x812d, 0x368: 0x8132, 0x369: 0x8132, + 0x36a: 0x812d, 0x36b: 0x8132, 0x36c: 0x8132, 0x36d: 0x812e, 0x36e: 0x8131, 0x36f: 0x8132, + 0x370: 0x8105, 0x371: 0x8106, 0x372: 0x8107, 0x373: 0x8108, 0x374: 0x8109, 0x375: 0x810a, + 0x376: 0x810b, 0x377: 0x810c, 0x378: 0x810d, 0x379: 0x810e, 0x37a: 0x810e, 0x37b: 0x810f, + 0x37c: 0x8110, 0x37d: 0x8111, 0x37f: 0x8112, + // Block 0xe, offset 0x380 + 0x388: 0xa000, 0x38a: 0xa000, 0x38b: 0x8116, + 0x38c: 0x8117, 0x38d: 0x8118, 0x38e: 0x8119, 0x38f: 0x811a, 0x390: 0x811b, 0x391: 0x811c, + 0x392: 0x811d, 0x393: 0x9932, 0x394: 0x9932, 0x395: 0x992d, 0x396: 0x812d, 0x397: 0x8132, + 0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x8132, 0x39b: 0x8132, 0x39c: 0x812d, 0x39d: 0x8132, + 0x39e: 0x8132, 0x39f: 0x812d, + 0x3b0: 0x811e, + // Block 0xf, offset 0x3c0 + 0x3d3: 0x812d, 0x3d4: 0x8132, 0x3d5: 0x8132, 0x3d6: 0x8132, 0x3d7: 0x8132, + 0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x8132, 0x3dd: 0x8132, + 0x3de: 0x8132, 0x3df: 0x8132, 0x3e0: 0x8132, 0x3e1: 0x8132, 0x3e3: 0x812d, + 0x3e4: 0x8132, 0x3e5: 0x8132, 0x3e6: 0x812d, 0x3e7: 0x8132, 0x3e8: 0x8132, 0x3e9: 0x812d, + 0x3ea: 0x8132, 0x3eb: 0x8132, 0x3ec: 0x8132, 0x3ed: 0x812d, 0x3ee: 0x812d, 0x3ef: 0x812d, + 0x3f0: 0x8116, 0x3f1: 0x8117, 0x3f2: 0x8118, 0x3f3: 0x8132, 0x3f4: 0x8132, 0x3f5: 0x8132, + 0x3f6: 0x812d, 0x3f7: 0x8132, 0x3f8: 0x8132, 0x3f9: 0x812d, 0x3fa: 0x812d, 0x3fb: 0x8132, + 0x3fc: 0x8132, 0x3fd: 0x8132, 0x3fe: 0x8132, 0x3ff: 0x8132, + // Block 0x10, offset 0x400 + 0x405: 0xa000, + 0x406: 0x2d26, 0x407: 0xa000, 0x408: 0x2d2e, 0x409: 0xa000, 0x40a: 0x2d36, 0x40b: 0xa000, + 0x40c: 0x2d3e, 0x40d: 0xa000, 0x40e: 0x2d46, 0x411: 0xa000, + 0x412: 0x2d4e, + 0x434: 0x8102, 0x435: 0x9900, + 0x43a: 0xa000, 0x43b: 0x2d56, + 0x43c: 0xa000, 0x43d: 0x2d5e, 0x43e: 0xa000, 0x43f: 0xa000, + // Block 0x11, offset 0x440 + 0x440: 0x8132, 0x441: 0x8132, 0x442: 0x812d, 0x443: 0x8132, 0x444: 0x8132, 0x445: 0x8132, + 0x446: 0x8132, 0x447: 0x8132, 0x448: 0x8132, 0x449: 0x8132, 0x44a: 0x812d, 0x44b: 0x8132, + 0x44c: 0x8132, 0x44d: 0x8135, 0x44e: 0x812a, 0x44f: 0x812d, 0x450: 0x8129, 0x451: 0x8132, + 0x452: 0x8132, 0x453: 0x8132, 0x454: 0x8132, 0x455: 0x8132, 0x456: 0x8132, 0x457: 0x8132, + 0x458: 0x8132, 0x459: 0x8132, 0x45a: 0x8132, 0x45b: 0x8132, 0x45c: 0x8132, 0x45d: 0x8132, + 0x45e: 0x8132, 0x45f: 0x8132, 0x460: 0x8132, 0x461: 0x8132, 0x462: 0x8132, 0x463: 0x8132, + 0x464: 0x8132, 0x465: 0x8132, 0x466: 0x8132, 0x467: 0x8132, 0x468: 0x8132, 0x469: 0x8132, + 0x46a: 0x8132, 0x46b: 0x8132, 0x46c: 0x8132, 0x46d: 0x8132, 0x46e: 0x8132, 0x46f: 0x8132, + 0x470: 0x8132, 0x471: 0x8132, 0x472: 0x8132, 0x473: 0x8132, 0x474: 0x8132, 0x475: 0x8132, + 0x476: 0x8133, 0x477: 0x8131, 0x478: 0x8131, 0x479: 0x812d, 0x47b: 0x8132, + 0x47c: 0x8134, 0x47d: 0x812d, 0x47e: 0x8132, 0x47f: 0x812d, + // Block 0x12, offset 0x480 + 0x480: 0x2f97, 0x481: 0x32a3, 0x482: 0x2fa1, 0x483: 0x32ad, 0x484: 0x2fa6, 0x485: 0x32b2, + 0x486: 0x2fab, 0x487: 0x32b7, 0x488: 0x38cc, 0x489: 0x3a5b, 0x48a: 0x2fc4, 0x48b: 0x32d0, + 0x48c: 0x2fce, 0x48d: 0x32da, 0x48e: 0x2fdd, 0x48f: 0x32e9, 0x490: 0x2fd3, 0x491: 0x32df, + 0x492: 0x2fd8, 0x493: 0x32e4, 0x494: 0x38ef, 0x495: 0x3a7e, 0x496: 0x38f6, 0x497: 0x3a85, + 0x498: 0x3019, 0x499: 0x3325, 0x49a: 0x301e, 0x49b: 0x332a, 0x49c: 0x3904, 0x49d: 0x3a93, + 0x49e: 0x3023, 0x49f: 0x332f, 0x4a0: 0x3032, 0x4a1: 0x333e, 0x4a2: 0x3050, 0x4a3: 0x335c, + 0x4a4: 0x305f, 0x4a5: 0x336b, 0x4a6: 0x3055, 0x4a7: 0x3361, 0x4a8: 0x3064, 0x4a9: 0x3370, + 0x4aa: 0x3069, 0x4ab: 0x3375, 0x4ac: 0x30af, 0x4ad: 0x33bb, 0x4ae: 0x390b, 0x4af: 0x3a9a, + 0x4b0: 0x30b9, 0x4b1: 0x33ca, 0x4b2: 0x30c3, 0x4b3: 0x33d4, 0x4b4: 0x30cd, 0x4b5: 0x33de, + 0x4b6: 0x46c4, 0x4b7: 0x4755, 0x4b8: 0x3912, 0x4b9: 0x3aa1, 0x4ba: 0x30e6, 0x4bb: 0x33f7, + 0x4bc: 0x30e1, 0x4bd: 0x33f2, 0x4be: 0x30eb, 0x4bf: 0x33fc, + // Block 0x13, offset 0x4c0 + 0x4c0: 0x30f0, 0x4c1: 0x3401, 0x4c2: 0x30f5, 0x4c3: 0x3406, 0x4c4: 0x3109, 0x4c5: 0x341a, + 0x4c6: 0x3113, 0x4c7: 0x3424, 0x4c8: 0x3122, 0x4c9: 0x3433, 0x4ca: 0x311d, 0x4cb: 0x342e, + 0x4cc: 0x3935, 0x4cd: 0x3ac4, 0x4ce: 0x3943, 0x4cf: 0x3ad2, 0x4d0: 0x394a, 0x4d1: 0x3ad9, + 0x4d2: 0x3951, 0x4d3: 0x3ae0, 0x4d4: 0x314f, 0x4d5: 0x3460, 0x4d6: 0x3154, 0x4d7: 0x3465, + 0x4d8: 0x315e, 0x4d9: 0x346f, 0x4da: 0x46f1, 0x4db: 0x4782, 0x4dc: 0x3997, 0x4dd: 0x3b26, + 0x4de: 0x3177, 0x4df: 0x3488, 0x4e0: 0x3181, 0x4e1: 0x3492, 0x4e2: 0x4700, 0x4e3: 0x4791, + 0x4e4: 0x399e, 0x4e5: 0x3b2d, 0x4e6: 0x39a5, 0x4e7: 0x3b34, 0x4e8: 0x39ac, 0x4e9: 0x3b3b, + 0x4ea: 0x3190, 0x4eb: 0x34a1, 0x4ec: 0x319a, 0x4ed: 0x34b0, 0x4ee: 0x31ae, 0x4ef: 0x34c4, + 0x4f0: 0x31a9, 0x4f1: 0x34bf, 0x4f2: 0x31ea, 0x4f3: 0x3500, 0x4f4: 0x31f9, 0x4f5: 0x350f, + 0x4f6: 0x31f4, 0x4f7: 0x350a, 0x4f8: 0x39b3, 0x4f9: 0x3b42, 0x4fa: 0x39ba, 0x4fb: 0x3b49, + 0x4fc: 0x31fe, 0x4fd: 0x3514, 0x4fe: 0x3203, 0x4ff: 0x3519, + // Block 0x14, offset 0x500 + 0x500: 0x3208, 0x501: 0x351e, 0x502: 0x320d, 0x503: 0x3523, 0x504: 0x321c, 0x505: 0x3532, + 0x506: 0x3217, 0x507: 0x352d, 0x508: 0x3221, 0x509: 0x353c, 0x50a: 0x3226, 0x50b: 0x3541, + 0x50c: 0x322b, 0x50d: 0x3546, 0x50e: 0x3249, 0x50f: 0x3564, 0x510: 0x3262, 0x511: 0x3582, + 0x512: 0x3271, 0x513: 0x3591, 0x514: 0x3276, 0x515: 0x3596, 0x516: 0x337a, 0x517: 0x34a6, + 0x518: 0x3537, 0x519: 0x3573, 0x51b: 0x35d1, + 0x520: 0x46a1, 0x521: 0x4732, 0x522: 0x2f83, 0x523: 0x328f, + 0x524: 0x3878, 0x525: 0x3a07, 0x526: 0x3871, 0x527: 0x3a00, 0x528: 0x3886, 0x529: 0x3a15, + 0x52a: 0x387f, 0x52b: 0x3a0e, 0x52c: 0x38be, 0x52d: 0x3a4d, 0x52e: 0x3894, 0x52f: 0x3a23, + 0x530: 0x388d, 0x531: 0x3a1c, 0x532: 0x38a2, 0x533: 0x3a31, 0x534: 0x389b, 0x535: 0x3a2a, + 0x536: 0x38c5, 0x537: 0x3a54, 0x538: 0x46b5, 0x539: 0x4746, 0x53a: 0x3000, 0x53b: 0x330c, + 0x53c: 0x2fec, 0x53d: 0x32f8, 0x53e: 0x38da, 0x53f: 0x3a69, + // Block 0x15, offset 0x540 + 0x540: 0x38d3, 0x541: 0x3a62, 0x542: 0x38e8, 0x543: 0x3a77, 0x544: 0x38e1, 0x545: 0x3a70, + 0x546: 0x38fd, 0x547: 0x3a8c, 0x548: 0x3091, 0x549: 0x339d, 0x54a: 0x30a5, 0x54b: 0x33b1, + 0x54c: 0x46e7, 0x54d: 0x4778, 0x54e: 0x3136, 0x54f: 0x3447, 0x550: 0x3920, 0x551: 0x3aaf, + 0x552: 0x3919, 0x553: 0x3aa8, 0x554: 0x392e, 0x555: 0x3abd, 0x556: 0x3927, 0x557: 0x3ab6, + 0x558: 0x3989, 0x559: 0x3b18, 0x55a: 0x396d, 0x55b: 0x3afc, 0x55c: 0x3966, 0x55d: 0x3af5, + 0x55e: 0x397b, 0x55f: 0x3b0a, 0x560: 0x3974, 0x561: 0x3b03, 0x562: 0x3982, 0x563: 0x3b11, + 0x564: 0x31e5, 0x565: 0x34fb, 0x566: 0x31c7, 0x567: 0x34dd, 0x568: 0x39e4, 0x569: 0x3b73, + 0x56a: 0x39dd, 0x56b: 0x3b6c, 0x56c: 0x39f2, 0x56d: 0x3b81, 0x56e: 0x39eb, 0x56f: 0x3b7a, + 0x570: 0x39f9, 0x571: 0x3b88, 0x572: 0x3230, 0x573: 0x354b, 0x574: 0x3258, 0x575: 0x3578, + 0x576: 0x3253, 0x577: 0x356e, 0x578: 0x323f, 0x579: 0x355a, + // Block 0x16, offset 0x580 + 0x580: 0x4804, 0x581: 0x480a, 0x582: 0x491e, 0x583: 0x4936, 0x584: 0x4926, 0x585: 0x493e, + 0x586: 0x492e, 0x587: 0x4946, 0x588: 0x47aa, 0x589: 0x47b0, 0x58a: 0x488e, 0x58b: 0x48a6, + 0x58c: 0x4896, 0x58d: 0x48ae, 0x58e: 0x489e, 0x58f: 0x48b6, 0x590: 0x4816, 0x591: 0x481c, + 0x592: 0x3db8, 0x593: 0x3dc8, 0x594: 0x3dc0, 0x595: 0x3dd0, + 0x598: 0x47b6, 0x599: 0x47bc, 0x59a: 0x3ce8, 0x59b: 0x3cf8, 0x59c: 0x3cf0, 0x59d: 0x3d00, + 0x5a0: 0x482e, 0x5a1: 0x4834, 0x5a2: 0x494e, 0x5a3: 0x4966, + 0x5a4: 0x4956, 0x5a5: 0x496e, 0x5a6: 0x495e, 0x5a7: 0x4976, 0x5a8: 0x47c2, 0x5a9: 0x47c8, + 0x5aa: 0x48be, 0x5ab: 0x48d6, 0x5ac: 0x48c6, 0x5ad: 0x48de, 0x5ae: 0x48ce, 0x5af: 0x48e6, + 0x5b0: 0x4846, 0x5b1: 0x484c, 0x5b2: 0x3e18, 0x5b3: 0x3e30, 0x5b4: 0x3e20, 0x5b5: 0x3e38, + 0x5b6: 0x3e28, 0x5b7: 0x3e40, 0x5b8: 0x47ce, 0x5b9: 0x47d4, 0x5ba: 0x3d18, 0x5bb: 0x3d30, + 0x5bc: 0x3d20, 0x5bd: 0x3d38, 0x5be: 0x3d28, 0x5bf: 0x3d40, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x4852, 0x5c1: 0x4858, 0x5c2: 0x3e48, 0x5c3: 0x3e58, 0x5c4: 0x3e50, 0x5c5: 0x3e60, + 0x5c8: 0x47da, 0x5c9: 0x47e0, 0x5ca: 0x3d48, 0x5cb: 0x3d58, + 0x5cc: 0x3d50, 0x5cd: 0x3d60, 0x5d0: 0x4864, 0x5d1: 0x486a, + 0x5d2: 0x3e80, 0x5d3: 0x3e98, 0x5d4: 0x3e88, 0x5d5: 0x3ea0, 0x5d6: 0x3e90, 0x5d7: 0x3ea8, + 0x5d9: 0x47e6, 0x5db: 0x3d68, 0x5dd: 0x3d70, + 0x5df: 0x3d78, 0x5e0: 0x487c, 0x5e1: 0x4882, 0x5e2: 0x497e, 0x5e3: 0x4996, + 0x5e4: 0x4986, 0x5e5: 0x499e, 0x5e6: 0x498e, 0x5e7: 0x49a6, 0x5e8: 0x47ec, 0x5e9: 0x47f2, + 0x5ea: 0x48ee, 0x5eb: 0x4906, 0x5ec: 0x48f6, 0x5ed: 0x490e, 0x5ee: 0x48fe, 0x5ef: 0x4916, + 0x5f0: 0x47f8, 0x5f1: 0x431e, 0x5f2: 0x3691, 0x5f3: 0x4324, 0x5f4: 0x4822, 0x5f5: 0x432a, + 0x5f6: 0x36a3, 0x5f7: 0x4330, 0x5f8: 0x36c1, 0x5f9: 0x4336, 0x5fa: 0x36d9, 0x5fb: 0x433c, + 0x5fc: 0x4870, 0x5fd: 0x4342, + // Block 0x18, offset 0x600 + 0x600: 0x3da0, 0x601: 0x3da8, 0x602: 0x4184, 0x603: 0x41a2, 0x604: 0x418e, 0x605: 0x41ac, + 0x606: 0x4198, 0x607: 0x41b6, 0x608: 0x3cd8, 0x609: 0x3ce0, 0x60a: 0x40d0, 0x60b: 0x40ee, + 0x60c: 0x40da, 0x60d: 0x40f8, 0x60e: 0x40e4, 0x60f: 0x4102, 0x610: 0x3de8, 0x611: 0x3df0, + 0x612: 0x41c0, 0x613: 0x41de, 0x614: 0x41ca, 0x615: 0x41e8, 0x616: 0x41d4, 0x617: 0x41f2, + 0x618: 0x3d08, 0x619: 0x3d10, 0x61a: 0x410c, 0x61b: 0x412a, 0x61c: 0x4116, 0x61d: 0x4134, + 0x61e: 0x4120, 0x61f: 0x413e, 0x620: 0x3ec0, 0x621: 0x3ec8, 0x622: 0x41fc, 0x623: 0x421a, + 0x624: 0x4206, 0x625: 0x4224, 0x626: 0x4210, 0x627: 0x422e, 0x628: 0x3d80, 0x629: 0x3d88, + 0x62a: 0x4148, 0x62b: 0x4166, 0x62c: 0x4152, 0x62d: 0x4170, 0x62e: 0x415c, 0x62f: 0x417a, + 0x630: 0x3685, 0x631: 0x367f, 0x632: 0x3d90, 0x633: 0x368b, 0x634: 0x3d98, + 0x636: 0x4810, 0x637: 0x3db0, 0x638: 0x35f5, 0x639: 0x35ef, 0x63a: 0x35e3, 0x63b: 0x42ee, + 0x63c: 0x35fb, 0x63d: 0x8100, 0x63e: 0x01d3, 0x63f: 0xa100, + // Block 0x19, offset 0x640 + 0x640: 0x8100, 0x641: 0x35a7, 0x642: 0x3dd8, 0x643: 0x369d, 0x644: 0x3de0, + 0x646: 0x483a, 0x647: 0x3df8, 0x648: 0x3601, 0x649: 0x42f4, 0x64a: 0x360d, 0x64b: 0x42fa, + 0x64c: 0x3619, 0x64d: 0x3b8f, 0x64e: 0x3b96, 0x64f: 0x3b9d, 0x650: 0x36b5, 0x651: 0x36af, + 0x652: 0x3e00, 0x653: 0x44e4, 0x656: 0x36bb, 0x657: 0x3e10, + 0x658: 0x3631, 0x659: 0x362b, 0x65a: 0x361f, 0x65b: 0x4300, 0x65d: 0x3ba4, + 0x65e: 0x3bab, 0x65f: 0x3bb2, 0x660: 0x36eb, 0x661: 0x36e5, 0x662: 0x3e68, 0x663: 0x44ec, + 0x664: 0x36cd, 0x665: 0x36d3, 0x666: 0x36f1, 0x667: 0x3e78, 0x668: 0x3661, 0x669: 0x365b, + 0x66a: 0x364f, 0x66b: 0x430c, 0x66c: 0x3649, 0x66d: 0x359b, 0x66e: 0x42e8, 0x66f: 0x0081, + 0x672: 0x3eb0, 0x673: 0x36f7, 0x674: 0x3eb8, + 0x676: 0x4888, 0x677: 0x3ed0, 0x678: 0x363d, 0x679: 0x4306, 0x67a: 0x366d, 0x67b: 0x4318, + 0x67c: 0x3679, 0x67d: 0x4256, 0x67e: 0xa100, + // Block 0x1a, offset 0x680 + 0x681: 0x3c06, 0x683: 0xa000, 0x684: 0x3c0d, 0x685: 0xa000, + 0x687: 0x3c14, 0x688: 0xa000, 0x689: 0x3c1b, + 0x68d: 0xa000, + 0x6a0: 0x2f65, 0x6a1: 0xa000, 0x6a2: 0x3c29, + 0x6a4: 0xa000, 0x6a5: 0xa000, + 0x6ad: 0x3c22, 0x6ae: 0x2f60, 0x6af: 0x2f6a, + 0x6b0: 0x3c30, 0x6b1: 0x3c37, 0x6b2: 0xa000, 0x6b3: 0xa000, 0x6b4: 0x3c3e, 0x6b5: 0x3c45, + 0x6b6: 0xa000, 0x6b7: 0xa000, 0x6b8: 0x3c4c, 0x6b9: 0x3c53, 0x6ba: 0xa000, 0x6bb: 0xa000, + 0x6bc: 0xa000, 0x6bd: 0xa000, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x3c5a, 0x6c1: 0x3c61, 0x6c2: 0xa000, 0x6c3: 0xa000, 0x6c4: 0x3c76, 0x6c5: 0x3c7d, + 0x6c6: 0xa000, 0x6c7: 0xa000, 0x6c8: 0x3c84, 0x6c9: 0x3c8b, + 0x6d1: 0xa000, + 0x6d2: 0xa000, + 0x6e2: 0xa000, + 0x6e8: 0xa000, 0x6e9: 0xa000, + 0x6eb: 0xa000, 0x6ec: 0x3ca0, 0x6ed: 0x3ca7, 0x6ee: 0x3cae, 0x6ef: 0x3cb5, + 0x6f2: 0xa000, 0x6f3: 0xa000, 0x6f4: 0xa000, 0x6f5: 0xa000, + // Block 0x1c, offset 0x700 + 0x706: 0xa000, 0x70b: 0xa000, + 0x70c: 0x3f08, 0x70d: 0xa000, 0x70e: 0x3f10, 0x70f: 0xa000, 0x710: 0x3f18, 0x711: 0xa000, + 0x712: 0x3f20, 0x713: 0xa000, 0x714: 0x3f28, 0x715: 0xa000, 0x716: 0x3f30, 0x717: 0xa000, + 0x718: 0x3f38, 0x719: 0xa000, 0x71a: 0x3f40, 0x71b: 0xa000, 0x71c: 0x3f48, 0x71d: 0xa000, + 0x71e: 0x3f50, 0x71f: 0xa000, 0x720: 0x3f58, 0x721: 0xa000, 0x722: 0x3f60, + 0x724: 0xa000, 0x725: 0x3f68, 0x726: 0xa000, 0x727: 0x3f70, 0x728: 0xa000, 0x729: 0x3f78, + 0x72f: 0xa000, + 0x730: 0x3f80, 0x731: 0x3f88, 0x732: 0xa000, 0x733: 0x3f90, 0x734: 0x3f98, 0x735: 0xa000, + 0x736: 0x3fa0, 0x737: 0x3fa8, 0x738: 0xa000, 0x739: 0x3fb0, 0x73a: 0x3fb8, 0x73b: 0xa000, + 0x73c: 0x3fc0, 0x73d: 0x3fc8, + // Block 0x1d, offset 0x740 + 0x754: 0x3f00, + 0x759: 0x9903, 0x75a: 0x9903, 0x75b: 0x8100, 0x75c: 0x8100, 0x75d: 0xa000, + 0x75e: 0x3fd0, + 0x766: 0xa000, + 0x76b: 0xa000, 0x76c: 0x3fe0, 0x76d: 0xa000, 0x76e: 0x3fe8, 0x76f: 0xa000, + 0x770: 0x3ff0, 0x771: 0xa000, 0x772: 0x3ff8, 0x773: 0xa000, 0x774: 0x4000, 0x775: 0xa000, + 0x776: 0x4008, 0x777: 0xa000, 0x778: 0x4010, 0x779: 0xa000, 0x77a: 0x4018, 0x77b: 0xa000, + 0x77c: 0x4020, 0x77d: 0xa000, 0x77e: 0x4028, 0x77f: 0xa000, + // Block 0x1e, offset 0x780 + 0x780: 0x4030, 0x781: 0xa000, 0x782: 0x4038, 0x784: 0xa000, 0x785: 0x4040, + 0x786: 0xa000, 0x787: 0x4048, 0x788: 0xa000, 0x789: 0x4050, + 0x78f: 0xa000, 0x790: 0x4058, 0x791: 0x4060, + 0x792: 0xa000, 0x793: 0x4068, 0x794: 0x4070, 0x795: 0xa000, 0x796: 0x4078, 0x797: 0x4080, + 0x798: 0xa000, 0x799: 0x4088, 0x79a: 0x4090, 0x79b: 0xa000, 0x79c: 0x4098, 0x79d: 0x40a0, + 0x7af: 0xa000, + 0x7b0: 0xa000, 0x7b1: 0xa000, 0x7b2: 0xa000, 0x7b4: 0x3fd8, + 0x7b7: 0x40a8, 0x7b8: 0x40b0, 0x7b9: 0x40b8, 0x7ba: 0x40c0, + 0x7bd: 0xa000, 0x7be: 0x40c8, + // Block 0x1f, offset 0x7c0 + 0x7c0: 0x1377, 0x7c1: 0x0cfb, 0x7c2: 0x13d3, 0x7c3: 0x139f, 0x7c4: 0x0e57, 0x7c5: 0x06eb, + 0x7c6: 0x08df, 0x7c7: 0x162b, 0x7c8: 0x162b, 0x7c9: 0x0a0b, 0x7ca: 0x145f, 0x7cb: 0x0943, + 0x7cc: 0x0a07, 0x7cd: 0x0bef, 0x7ce: 0x0fcf, 0x7cf: 0x115f, 0x7d0: 0x1297, 0x7d1: 0x12d3, + 0x7d2: 0x1307, 0x7d3: 0x141b, 0x7d4: 0x0d73, 0x7d5: 0x0dff, 0x7d6: 0x0eab, 0x7d7: 0x0f43, + 0x7d8: 0x125f, 0x7d9: 0x1447, 0x7da: 0x1573, 0x7db: 0x070f, 0x7dc: 0x08b3, 0x7dd: 0x0d87, + 0x7de: 0x0ecf, 0x7df: 0x1293, 0x7e0: 0x15c3, 0x7e1: 0x0ab3, 0x7e2: 0x0e77, 0x7e3: 0x1283, + 0x7e4: 0x1317, 0x7e5: 0x0c23, 0x7e6: 0x11bb, 0x7e7: 0x12df, 0x7e8: 0x0b1f, 0x7e9: 0x0d0f, + 0x7ea: 0x0e17, 0x7eb: 0x0f1b, 0x7ec: 0x1427, 0x7ed: 0x074f, 0x7ee: 0x07e7, 0x7ef: 0x0853, + 0x7f0: 0x0c8b, 0x7f1: 0x0d7f, 0x7f2: 0x0ecb, 0x7f3: 0x0fef, 0x7f4: 0x1177, 0x7f5: 0x128b, + 0x7f6: 0x12a3, 0x7f7: 0x13c7, 0x7f8: 0x14ef, 0x7f9: 0x15a3, 0x7fa: 0x15bf, 0x7fb: 0x102b, + 0x7fc: 0x106b, 0x7fd: 0x1123, 0x7fe: 0x1243, 0x7ff: 0x147b, + // Block 0x20, offset 0x800 + 0x800: 0x15cb, 0x801: 0x134b, 0x802: 0x09c7, 0x803: 0x0b3b, 0x804: 0x10db, 0x805: 0x119b, + 0x806: 0x0eff, 0x807: 0x1033, 0x808: 0x1397, 0x809: 0x14e7, 0x80a: 0x09c3, 0x80b: 0x0a8f, + 0x80c: 0x0d77, 0x80d: 0x0e2b, 0x80e: 0x0e5f, 0x80f: 0x1113, 0x810: 0x113b, 0x811: 0x14a7, + 0x812: 0x084f, 0x813: 0x11a7, 0x814: 0x07f3, 0x815: 0x07ef, 0x816: 0x1097, 0x817: 0x1127, + 0x818: 0x125b, 0x819: 0x14af, 0x81a: 0x1367, 0x81b: 0x0c27, 0x81c: 0x0d73, 0x81d: 0x1357, + 0x81e: 0x06f7, 0x81f: 0x0a63, 0x820: 0x0b93, 0x821: 0x0f2f, 0x822: 0x0faf, 0x823: 0x0873, + 0x824: 0x103b, 0x825: 0x075f, 0x826: 0x0b77, 0x827: 0x06d7, 0x828: 0x0deb, 0x829: 0x0ca3, + 0x82a: 0x110f, 0x82b: 0x08c7, 0x82c: 0x09b3, 0x82d: 0x0ffb, 0x82e: 0x1263, 0x82f: 0x133b, + 0x830: 0x0db7, 0x831: 0x13f7, 0x832: 0x0de3, 0x833: 0x0c37, 0x834: 0x121b, 0x835: 0x0c57, + 0x836: 0x0fab, 0x837: 0x072b, 0x838: 0x07a7, 0x839: 0x07eb, 0x83a: 0x0d53, 0x83b: 0x10fb, + 0x83c: 0x11f3, 0x83d: 0x1347, 0x83e: 0x145b, 0x83f: 0x085b, + // Block 0x21, offset 0x840 + 0x840: 0x090f, 0x841: 0x0a17, 0x842: 0x0b2f, 0x843: 0x0cbf, 0x844: 0x0e7b, 0x845: 0x103f, + 0x846: 0x1497, 0x847: 0x157b, 0x848: 0x15cf, 0x849: 0x15e7, 0x84a: 0x0837, 0x84b: 0x0cf3, + 0x84c: 0x0da3, 0x84d: 0x13eb, 0x84e: 0x0afb, 0x84f: 0x0bd7, 0x850: 0x0bf3, 0x851: 0x0c83, + 0x852: 0x0e6b, 0x853: 0x0eb7, 0x854: 0x0f67, 0x855: 0x108b, 0x856: 0x112f, 0x857: 0x1193, + 0x858: 0x13db, 0x859: 0x126b, 0x85a: 0x1403, 0x85b: 0x147f, 0x85c: 0x080f, 0x85d: 0x083b, + 0x85e: 0x0923, 0x85f: 0x0ea7, 0x860: 0x12f3, 0x861: 0x133b, 0x862: 0x0b1b, 0x863: 0x0b8b, + 0x864: 0x0c4f, 0x865: 0x0daf, 0x866: 0x10d7, 0x867: 0x0f23, 0x868: 0x073b, 0x869: 0x097f, + 0x86a: 0x0a63, 0x86b: 0x0ac7, 0x86c: 0x0b97, 0x86d: 0x0f3f, 0x86e: 0x0f5b, 0x86f: 0x116b, + 0x870: 0x118b, 0x871: 0x1463, 0x872: 0x14e3, 0x873: 0x14f3, 0x874: 0x152f, 0x875: 0x0753, + 0x876: 0x107f, 0x877: 0x144f, 0x878: 0x14cb, 0x879: 0x0baf, 0x87a: 0x0717, 0x87b: 0x0777, + 0x87c: 0x0a67, 0x87d: 0x0a87, 0x87e: 0x0caf, 0x87f: 0x0d73, + // Block 0x22, offset 0x880 + 0x880: 0x0ec3, 0x881: 0x0fcb, 0x882: 0x1277, 0x883: 0x1417, 0x884: 0x1623, 0x885: 0x0ce3, + 0x886: 0x14a3, 0x887: 0x0833, 0x888: 0x0d2f, 0x889: 0x0d3b, 0x88a: 0x0e0f, 0x88b: 0x0e47, + 0x88c: 0x0f4b, 0x88d: 0x0fa7, 0x88e: 0x1027, 0x88f: 0x110b, 0x890: 0x153b, 0x891: 0x07af, + 0x892: 0x0c03, 0x893: 0x14b3, 0x894: 0x0767, 0x895: 0x0aab, 0x896: 0x0e2f, 0x897: 0x13df, + 0x898: 0x0b67, 0x899: 0x0bb7, 0x89a: 0x0d43, 0x89b: 0x0f2f, 0x89c: 0x14bb, 0x89d: 0x0817, + 0x89e: 0x08ff, 0x89f: 0x0a97, 0x8a0: 0x0cd3, 0x8a1: 0x0d1f, 0x8a2: 0x0d5f, 0x8a3: 0x0df3, + 0x8a4: 0x0f47, 0x8a5: 0x0fbb, 0x8a6: 0x1157, 0x8a7: 0x12f7, 0x8a8: 0x1303, 0x8a9: 0x1457, + 0x8aa: 0x14d7, 0x8ab: 0x0883, 0x8ac: 0x0e4b, 0x8ad: 0x0903, 0x8ae: 0x0ec7, 0x8af: 0x0f6b, + 0x8b0: 0x1287, 0x8b1: 0x14bf, 0x8b2: 0x15ab, 0x8b3: 0x15d3, 0x8b4: 0x0d37, 0x8b5: 0x0e27, + 0x8b6: 0x11c3, 0x8b7: 0x10b7, 0x8b8: 0x10c3, 0x8b9: 0x10e7, 0x8ba: 0x0f17, 0x8bb: 0x0e9f, + 0x8bc: 0x1363, 0x8bd: 0x0733, 0x8be: 0x122b, 0x8bf: 0x081b, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x080b, 0x8c1: 0x0b0b, 0x8c2: 0x0c2b, 0x8c3: 0x10f3, 0x8c4: 0x0a53, 0x8c5: 0x0e03, + 0x8c6: 0x0cef, 0x8c7: 0x13e7, 0x8c8: 0x12e7, 0x8c9: 0x14ab, 0x8ca: 0x1323, 0x8cb: 0x0b27, + 0x8cc: 0x0787, 0x8cd: 0x095b, 0x8d0: 0x09af, + 0x8d2: 0x0cdf, 0x8d5: 0x07f7, 0x8d6: 0x0f1f, 0x8d7: 0x0fe3, + 0x8d8: 0x1047, 0x8d9: 0x1063, 0x8da: 0x1067, 0x8db: 0x107b, 0x8dc: 0x14fb, 0x8dd: 0x10eb, + 0x8de: 0x116f, 0x8e0: 0x128f, 0x8e2: 0x1353, + 0x8e5: 0x1407, 0x8e6: 0x1433, + 0x8ea: 0x154f, 0x8eb: 0x1553, 0x8ec: 0x1557, 0x8ed: 0x15bb, 0x8ee: 0x142b, 0x8ef: 0x14c7, + 0x8f0: 0x0757, 0x8f1: 0x077b, 0x8f2: 0x078f, 0x8f3: 0x084b, 0x8f4: 0x0857, 0x8f5: 0x0897, + 0x8f6: 0x094b, 0x8f7: 0x0967, 0x8f8: 0x096f, 0x8f9: 0x09ab, 0x8fa: 0x09b7, 0x8fb: 0x0a93, + 0x8fc: 0x0a9b, 0x8fd: 0x0ba3, 0x8fe: 0x0bcb, 0x8ff: 0x0bd3, + // Block 0x24, offset 0x900 + 0x900: 0x0beb, 0x901: 0x0c97, 0x902: 0x0cc7, 0x903: 0x0ce7, 0x904: 0x0d57, 0x905: 0x0e1b, + 0x906: 0x0e37, 0x907: 0x0e67, 0x908: 0x0ebb, 0x909: 0x0edb, 0x90a: 0x0f4f, 0x90b: 0x102f, + 0x90c: 0x104b, 0x90d: 0x1053, 0x90e: 0x104f, 0x90f: 0x1057, 0x910: 0x105b, 0x911: 0x105f, + 0x912: 0x1073, 0x913: 0x1077, 0x914: 0x109b, 0x915: 0x10af, 0x916: 0x10cb, 0x917: 0x112f, + 0x918: 0x1137, 0x919: 0x113f, 0x91a: 0x1153, 0x91b: 0x117b, 0x91c: 0x11cb, 0x91d: 0x11ff, + 0x91e: 0x11ff, 0x91f: 0x1267, 0x920: 0x130f, 0x921: 0x1327, 0x922: 0x135b, 0x923: 0x135f, + 0x924: 0x13a3, 0x925: 0x13a7, 0x926: 0x13ff, 0x927: 0x1407, 0x928: 0x14db, 0x929: 0x151f, + 0x92a: 0x1537, 0x92b: 0x0b9b, 0x92c: 0x171e, 0x92d: 0x11e3, + 0x930: 0x06df, 0x931: 0x07e3, 0x932: 0x07a3, 0x933: 0x074b, 0x934: 0x078b, 0x935: 0x07b7, + 0x936: 0x0847, 0x937: 0x0863, 0x938: 0x094b, 0x939: 0x0937, 0x93a: 0x0947, 0x93b: 0x0963, + 0x93c: 0x09af, 0x93d: 0x09bf, 0x93e: 0x0a03, 0x93f: 0x0a0f, + // Block 0x25, offset 0x940 + 0x940: 0x0a2b, 0x941: 0x0a3b, 0x942: 0x0b23, 0x943: 0x0b2b, 0x944: 0x0b5b, 0x945: 0x0b7b, + 0x946: 0x0bab, 0x947: 0x0bc3, 0x948: 0x0bb3, 0x949: 0x0bd3, 0x94a: 0x0bc7, 0x94b: 0x0beb, + 0x94c: 0x0c07, 0x94d: 0x0c5f, 0x94e: 0x0c6b, 0x94f: 0x0c73, 0x950: 0x0c9b, 0x951: 0x0cdf, + 0x952: 0x0d0f, 0x953: 0x0d13, 0x954: 0x0d27, 0x955: 0x0da7, 0x956: 0x0db7, 0x957: 0x0e0f, + 0x958: 0x0e5b, 0x959: 0x0e53, 0x95a: 0x0e67, 0x95b: 0x0e83, 0x95c: 0x0ebb, 0x95d: 0x1013, + 0x95e: 0x0edf, 0x95f: 0x0f13, 0x960: 0x0f1f, 0x961: 0x0f5f, 0x962: 0x0f7b, 0x963: 0x0f9f, + 0x964: 0x0fc3, 0x965: 0x0fc7, 0x966: 0x0fe3, 0x967: 0x0fe7, 0x968: 0x0ff7, 0x969: 0x100b, + 0x96a: 0x1007, 0x96b: 0x1037, 0x96c: 0x10b3, 0x96d: 0x10cb, 0x96e: 0x10e3, 0x96f: 0x111b, + 0x970: 0x112f, 0x971: 0x114b, 0x972: 0x117b, 0x973: 0x122f, 0x974: 0x1257, 0x975: 0x12cb, + 0x976: 0x1313, 0x977: 0x131f, 0x978: 0x1327, 0x979: 0x133f, 0x97a: 0x1353, 0x97b: 0x1343, + 0x97c: 0x135b, 0x97d: 0x1357, 0x97e: 0x134f, 0x97f: 0x135f, + // Block 0x26, offset 0x980 + 0x980: 0x136b, 0x981: 0x13a7, 0x982: 0x13e3, 0x983: 0x1413, 0x984: 0x144b, 0x985: 0x146b, + 0x986: 0x14b7, 0x987: 0x14db, 0x988: 0x14fb, 0x989: 0x150f, 0x98a: 0x151f, 0x98b: 0x152b, + 0x98c: 0x1537, 0x98d: 0x158b, 0x98e: 0x162b, 0x98f: 0x16b5, 0x990: 0x16b0, 0x991: 0x16e2, + 0x992: 0x0607, 0x993: 0x062f, 0x994: 0x0633, 0x995: 0x1764, 0x996: 0x1791, 0x997: 0x1809, + 0x998: 0x1617, 0x999: 0x1627, + // Block 0x27, offset 0x9c0 + 0x9c0: 0x06fb, 0x9c1: 0x06f3, 0x9c2: 0x0703, 0x9c3: 0x1647, 0x9c4: 0x0747, 0x9c5: 0x0757, + 0x9c6: 0x075b, 0x9c7: 0x0763, 0x9c8: 0x076b, 0x9c9: 0x076f, 0x9ca: 0x077b, 0x9cb: 0x0773, + 0x9cc: 0x05b3, 0x9cd: 0x165b, 0x9ce: 0x078f, 0x9cf: 0x0793, 0x9d0: 0x0797, 0x9d1: 0x07b3, + 0x9d2: 0x164c, 0x9d3: 0x05b7, 0x9d4: 0x079f, 0x9d5: 0x07bf, 0x9d6: 0x1656, 0x9d7: 0x07cf, + 0x9d8: 0x07d7, 0x9d9: 0x0737, 0x9da: 0x07df, 0x9db: 0x07e3, 0x9dc: 0x1831, 0x9dd: 0x07ff, + 0x9de: 0x0807, 0x9df: 0x05bf, 0x9e0: 0x081f, 0x9e1: 0x0823, 0x9e2: 0x082b, 0x9e3: 0x082f, + 0x9e4: 0x05c3, 0x9e5: 0x0847, 0x9e6: 0x084b, 0x9e7: 0x0857, 0x9e8: 0x0863, 0x9e9: 0x0867, + 0x9ea: 0x086b, 0x9eb: 0x0873, 0x9ec: 0x0893, 0x9ed: 0x0897, 0x9ee: 0x089f, 0x9ef: 0x08af, + 0x9f0: 0x08b7, 0x9f1: 0x08bb, 0x9f2: 0x08bb, 0x9f3: 0x08bb, 0x9f4: 0x166a, 0x9f5: 0x0e93, + 0x9f6: 0x08cf, 0x9f7: 0x08d7, 0x9f8: 0x166f, 0x9f9: 0x08e3, 0x9fa: 0x08eb, 0x9fb: 0x08f3, + 0x9fc: 0x091b, 0x9fd: 0x0907, 0x9fe: 0x0913, 0x9ff: 0x0917, + // Block 0x28, offset 0xa00 + 0xa00: 0x091f, 0xa01: 0x0927, 0xa02: 0x092b, 0xa03: 0x0933, 0xa04: 0x093b, 0xa05: 0x093f, + 0xa06: 0x093f, 0xa07: 0x0947, 0xa08: 0x094f, 0xa09: 0x0953, 0xa0a: 0x095f, 0xa0b: 0x0983, + 0xa0c: 0x0967, 0xa0d: 0x0987, 0xa0e: 0x096b, 0xa0f: 0x0973, 0xa10: 0x080b, 0xa11: 0x09cf, + 0xa12: 0x0997, 0xa13: 0x099b, 0xa14: 0x099f, 0xa15: 0x0993, 0xa16: 0x09a7, 0xa17: 0x09a3, + 0xa18: 0x09bb, 0xa19: 0x1674, 0xa1a: 0x09d7, 0xa1b: 0x09db, 0xa1c: 0x09e3, 0xa1d: 0x09ef, + 0xa1e: 0x09f7, 0xa1f: 0x0a13, 0xa20: 0x1679, 0xa21: 0x167e, 0xa22: 0x0a1f, 0xa23: 0x0a23, + 0xa24: 0x0a27, 0xa25: 0x0a1b, 0xa26: 0x0a2f, 0xa27: 0x05c7, 0xa28: 0x05cb, 0xa29: 0x0a37, + 0xa2a: 0x0a3f, 0xa2b: 0x0a3f, 0xa2c: 0x1683, 0xa2d: 0x0a5b, 0xa2e: 0x0a5f, 0xa2f: 0x0a63, + 0xa30: 0x0a6b, 0xa31: 0x1688, 0xa32: 0x0a73, 0xa33: 0x0a77, 0xa34: 0x0b4f, 0xa35: 0x0a7f, + 0xa36: 0x05cf, 0xa37: 0x0a8b, 0xa38: 0x0a9b, 0xa39: 0x0aa7, 0xa3a: 0x0aa3, 0xa3b: 0x1692, + 0xa3c: 0x0aaf, 0xa3d: 0x1697, 0xa3e: 0x0abb, 0xa3f: 0x0ab7, + // Block 0x29, offset 0xa40 + 0xa40: 0x0abf, 0xa41: 0x0acf, 0xa42: 0x0ad3, 0xa43: 0x05d3, 0xa44: 0x0ae3, 0xa45: 0x0aeb, + 0xa46: 0x0aef, 0xa47: 0x0af3, 0xa48: 0x05d7, 0xa49: 0x169c, 0xa4a: 0x05db, 0xa4b: 0x0b0f, + 0xa4c: 0x0b13, 0xa4d: 0x0b17, 0xa4e: 0x0b1f, 0xa4f: 0x1863, 0xa50: 0x0b37, 0xa51: 0x16a6, + 0xa52: 0x16a6, 0xa53: 0x11d7, 0xa54: 0x0b47, 0xa55: 0x0b47, 0xa56: 0x05df, 0xa57: 0x16c9, + 0xa58: 0x179b, 0xa59: 0x0b57, 0xa5a: 0x0b5f, 0xa5b: 0x05e3, 0xa5c: 0x0b73, 0xa5d: 0x0b83, + 0xa5e: 0x0b87, 0xa5f: 0x0b8f, 0xa60: 0x0b9f, 0xa61: 0x05eb, 0xa62: 0x05e7, 0xa63: 0x0ba3, + 0xa64: 0x16ab, 0xa65: 0x0ba7, 0xa66: 0x0bbb, 0xa67: 0x0bbf, 0xa68: 0x0bc3, 0xa69: 0x0bbf, + 0xa6a: 0x0bcf, 0xa6b: 0x0bd3, 0xa6c: 0x0be3, 0xa6d: 0x0bdb, 0xa6e: 0x0bdf, 0xa6f: 0x0be7, + 0xa70: 0x0beb, 0xa71: 0x0bef, 0xa72: 0x0bfb, 0xa73: 0x0bff, 0xa74: 0x0c17, 0xa75: 0x0c1f, + 0xa76: 0x0c2f, 0xa77: 0x0c43, 0xa78: 0x16ba, 0xa79: 0x0c3f, 0xa7a: 0x0c33, 0xa7b: 0x0c4b, + 0xa7c: 0x0c53, 0xa7d: 0x0c67, 0xa7e: 0x16bf, 0xa7f: 0x0c6f, + // Block 0x2a, offset 0xa80 + 0xa80: 0x0c63, 0xa81: 0x0c5b, 0xa82: 0x05ef, 0xa83: 0x0c77, 0xa84: 0x0c7f, 0xa85: 0x0c87, + 0xa86: 0x0c7b, 0xa87: 0x05f3, 0xa88: 0x0c97, 0xa89: 0x0c9f, 0xa8a: 0x16c4, 0xa8b: 0x0ccb, + 0xa8c: 0x0cff, 0xa8d: 0x0cdb, 0xa8e: 0x05ff, 0xa8f: 0x0ce7, 0xa90: 0x05fb, 0xa91: 0x05f7, + 0xa92: 0x07c3, 0xa93: 0x07c7, 0xa94: 0x0d03, 0xa95: 0x0ceb, 0xa96: 0x11ab, 0xa97: 0x0663, + 0xa98: 0x0d0f, 0xa99: 0x0d13, 0xa9a: 0x0d17, 0xa9b: 0x0d2b, 0xa9c: 0x0d23, 0xa9d: 0x16dd, + 0xa9e: 0x0603, 0xa9f: 0x0d3f, 0xaa0: 0x0d33, 0xaa1: 0x0d4f, 0xaa2: 0x0d57, 0xaa3: 0x16e7, + 0xaa4: 0x0d5b, 0xaa5: 0x0d47, 0xaa6: 0x0d63, 0xaa7: 0x0607, 0xaa8: 0x0d67, 0xaa9: 0x0d6b, + 0xaaa: 0x0d6f, 0xaab: 0x0d7b, 0xaac: 0x16ec, 0xaad: 0x0d83, 0xaae: 0x060b, 0xaaf: 0x0d8f, + 0xab0: 0x16f1, 0xab1: 0x0d93, 0xab2: 0x060f, 0xab3: 0x0d9f, 0xab4: 0x0dab, 0xab5: 0x0db7, + 0xab6: 0x0dbb, 0xab7: 0x16f6, 0xab8: 0x168d, 0xab9: 0x16fb, 0xaba: 0x0ddb, 0xabb: 0x1700, + 0xabc: 0x0de7, 0xabd: 0x0def, 0xabe: 0x0ddf, 0xabf: 0x0dfb, + // Block 0x2b, offset 0xac0 + 0xac0: 0x0e0b, 0xac1: 0x0e1b, 0xac2: 0x0e0f, 0xac3: 0x0e13, 0xac4: 0x0e1f, 0xac5: 0x0e23, + 0xac6: 0x1705, 0xac7: 0x0e07, 0xac8: 0x0e3b, 0xac9: 0x0e3f, 0xaca: 0x0613, 0xacb: 0x0e53, + 0xacc: 0x0e4f, 0xacd: 0x170a, 0xace: 0x0e33, 0xacf: 0x0e6f, 0xad0: 0x170f, 0xad1: 0x1714, + 0xad2: 0x0e73, 0xad3: 0x0e87, 0xad4: 0x0e83, 0xad5: 0x0e7f, 0xad6: 0x0617, 0xad7: 0x0e8b, + 0xad8: 0x0e9b, 0xad9: 0x0e97, 0xada: 0x0ea3, 0xadb: 0x1651, 0xadc: 0x0eb3, 0xadd: 0x1719, + 0xade: 0x0ebf, 0xadf: 0x1723, 0xae0: 0x0ed3, 0xae1: 0x0edf, 0xae2: 0x0ef3, 0xae3: 0x1728, + 0xae4: 0x0f07, 0xae5: 0x0f0b, 0xae6: 0x172d, 0xae7: 0x1732, 0xae8: 0x0f27, 0xae9: 0x0f37, + 0xaea: 0x061b, 0xaeb: 0x0f3b, 0xaec: 0x061f, 0xaed: 0x061f, 0xaee: 0x0f53, 0xaef: 0x0f57, + 0xaf0: 0x0f5f, 0xaf1: 0x0f63, 0xaf2: 0x0f6f, 0xaf3: 0x0623, 0xaf4: 0x0f87, 0xaf5: 0x1737, + 0xaf6: 0x0fa3, 0xaf7: 0x173c, 0xaf8: 0x0faf, 0xaf9: 0x16a1, 0xafa: 0x0fbf, 0xafb: 0x1741, + 0xafc: 0x1746, 0xafd: 0x174b, 0xafe: 0x0627, 0xaff: 0x062b, + // Block 0x2c, offset 0xb00 + 0xb00: 0x0ff7, 0xb01: 0x1755, 0xb02: 0x1750, 0xb03: 0x175a, 0xb04: 0x175f, 0xb05: 0x0fff, + 0xb06: 0x1003, 0xb07: 0x1003, 0xb08: 0x100b, 0xb09: 0x0633, 0xb0a: 0x100f, 0xb0b: 0x0637, + 0xb0c: 0x063b, 0xb0d: 0x1769, 0xb0e: 0x1023, 0xb0f: 0x102b, 0xb10: 0x1037, 0xb11: 0x063f, + 0xb12: 0x176e, 0xb13: 0x105b, 0xb14: 0x1773, 0xb15: 0x1778, 0xb16: 0x107b, 0xb17: 0x1093, + 0xb18: 0x0643, 0xb19: 0x109b, 0xb1a: 0x109f, 0xb1b: 0x10a3, 0xb1c: 0x177d, 0xb1d: 0x1782, + 0xb1e: 0x1782, 0xb1f: 0x10bb, 0xb20: 0x0647, 0xb21: 0x1787, 0xb22: 0x10cf, 0xb23: 0x10d3, + 0xb24: 0x064b, 0xb25: 0x178c, 0xb26: 0x10ef, 0xb27: 0x064f, 0xb28: 0x10ff, 0xb29: 0x10f7, + 0xb2a: 0x1107, 0xb2b: 0x1796, 0xb2c: 0x111f, 0xb2d: 0x0653, 0xb2e: 0x112b, 0xb2f: 0x1133, + 0xb30: 0x1143, 0xb31: 0x0657, 0xb32: 0x17a0, 0xb33: 0x17a5, 0xb34: 0x065b, 0xb35: 0x17aa, + 0xb36: 0x115b, 0xb37: 0x17af, 0xb38: 0x1167, 0xb39: 0x1173, 0xb3a: 0x117b, 0xb3b: 0x17b4, + 0xb3c: 0x17b9, 0xb3d: 0x118f, 0xb3e: 0x17be, 0xb3f: 0x1197, + // Block 0x2d, offset 0xb40 + 0xb40: 0x16ce, 0xb41: 0x065f, 0xb42: 0x11af, 0xb43: 0x11b3, 0xb44: 0x0667, 0xb45: 0x11b7, + 0xb46: 0x0a33, 0xb47: 0x17c3, 0xb48: 0x17c8, 0xb49: 0x16d3, 0xb4a: 0x16d8, 0xb4b: 0x11d7, + 0xb4c: 0x11db, 0xb4d: 0x13f3, 0xb4e: 0x066b, 0xb4f: 0x1207, 0xb50: 0x1203, 0xb51: 0x120b, + 0xb52: 0x083f, 0xb53: 0x120f, 0xb54: 0x1213, 0xb55: 0x1217, 0xb56: 0x121f, 0xb57: 0x17cd, + 0xb58: 0x121b, 0xb59: 0x1223, 0xb5a: 0x1237, 0xb5b: 0x123b, 0xb5c: 0x1227, 0xb5d: 0x123f, + 0xb5e: 0x1253, 0xb5f: 0x1267, 0xb60: 0x1233, 0xb61: 0x1247, 0xb62: 0x124b, 0xb63: 0x124f, + 0xb64: 0x17d2, 0xb65: 0x17dc, 0xb66: 0x17d7, 0xb67: 0x066f, 0xb68: 0x126f, 0xb69: 0x1273, + 0xb6a: 0x127b, 0xb6b: 0x17f0, 0xb6c: 0x127f, 0xb6d: 0x17e1, 0xb6e: 0x0673, 0xb6f: 0x0677, + 0xb70: 0x17e6, 0xb71: 0x17eb, 0xb72: 0x067b, 0xb73: 0x129f, 0xb74: 0x12a3, 0xb75: 0x12a7, + 0xb76: 0x12ab, 0xb77: 0x12b7, 0xb78: 0x12b3, 0xb79: 0x12bf, 0xb7a: 0x12bb, 0xb7b: 0x12cb, + 0xb7c: 0x12c3, 0xb7d: 0x12c7, 0xb7e: 0x12cf, 0xb7f: 0x067f, + // Block 0x2e, offset 0xb80 + 0xb80: 0x12d7, 0xb81: 0x12db, 0xb82: 0x0683, 0xb83: 0x12eb, 0xb84: 0x12ef, 0xb85: 0x17f5, + 0xb86: 0x12fb, 0xb87: 0x12ff, 0xb88: 0x0687, 0xb89: 0x130b, 0xb8a: 0x05bb, 0xb8b: 0x17fa, + 0xb8c: 0x17ff, 0xb8d: 0x068b, 0xb8e: 0x068f, 0xb8f: 0x1337, 0xb90: 0x134f, 0xb91: 0x136b, + 0xb92: 0x137b, 0xb93: 0x1804, 0xb94: 0x138f, 0xb95: 0x1393, 0xb96: 0x13ab, 0xb97: 0x13b7, + 0xb98: 0x180e, 0xb99: 0x1660, 0xb9a: 0x13c3, 0xb9b: 0x13bf, 0xb9c: 0x13cb, 0xb9d: 0x1665, + 0xb9e: 0x13d7, 0xb9f: 0x13e3, 0xba0: 0x1813, 0xba1: 0x1818, 0xba2: 0x1423, 0xba3: 0x142f, + 0xba4: 0x1437, 0xba5: 0x181d, 0xba6: 0x143b, 0xba7: 0x1467, 0xba8: 0x1473, 0xba9: 0x1477, + 0xbaa: 0x146f, 0xbab: 0x1483, 0xbac: 0x1487, 0xbad: 0x1822, 0xbae: 0x1493, 0xbaf: 0x0693, + 0xbb0: 0x149b, 0xbb1: 0x1827, 0xbb2: 0x0697, 0xbb3: 0x14d3, 0xbb4: 0x0ac3, 0xbb5: 0x14eb, + 0xbb6: 0x182c, 0xbb7: 0x1836, 0xbb8: 0x069b, 0xbb9: 0x069f, 0xbba: 0x1513, 0xbbb: 0x183b, + 0xbbc: 0x06a3, 0xbbd: 0x1840, 0xbbe: 0x152b, 0xbbf: 0x152b, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x1533, 0xbc1: 0x1845, 0xbc2: 0x154b, 0xbc3: 0x06a7, 0xbc4: 0x155b, 0xbc5: 0x1567, + 0xbc6: 0x156f, 0xbc7: 0x1577, 0xbc8: 0x06ab, 0xbc9: 0x184a, 0xbca: 0x158b, 0xbcb: 0x15a7, + 0xbcc: 0x15b3, 0xbcd: 0x06af, 0xbce: 0x06b3, 0xbcf: 0x15b7, 0xbd0: 0x184f, 0xbd1: 0x06b7, + 0xbd2: 0x1854, 0xbd3: 0x1859, 0xbd4: 0x185e, 0xbd5: 0x15db, 0xbd6: 0x06bb, 0xbd7: 0x15ef, + 0xbd8: 0x15f7, 0xbd9: 0x15fb, 0xbda: 0x1603, 0xbdb: 0x160b, 0xbdc: 0x1613, 0xbdd: 0x1868, +} + +// nfcIndex: 22 blocks, 1408 entries, 1408 bytes +// Block 0 is the zero block. +var nfcIndex = [1408]uint8{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x2e, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x2f, 0xc7: 0x04, + 0xc8: 0x05, 0xca: 0x30, 0xcb: 0x31, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x32, + 0xd0: 0x09, 0xd1: 0x33, 0xd2: 0x34, 0xd3: 0x0a, 0xd6: 0x0b, 0xd7: 0x35, + 0xd8: 0x36, 0xd9: 0x0c, 0xdb: 0x37, 0xdc: 0x38, 0xdd: 0x39, 0xdf: 0x3a, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a, + 0xf0: 0x13, + // Block 0x4, offset 0x100 + 0x120: 0x3b, 0x121: 0x3c, 0x123: 0x0d, 0x124: 0x3d, 0x125: 0x3e, 0x126: 0x3f, 0x127: 0x40, + 0x128: 0x41, 0x129: 0x42, 0x12a: 0x43, 0x12b: 0x44, 0x12c: 0x3f, 0x12d: 0x45, 0x12e: 0x46, 0x12f: 0x47, + 0x131: 0x48, 0x132: 0x49, 0x133: 0x4a, 0x134: 0x4b, 0x135: 0x4c, 0x137: 0x4d, + 0x138: 0x4e, 0x139: 0x4f, 0x13a: 0x50, 0x13b: 0x51, 0x13c: 0x52, 0x13d: 0x53, 0x13e: 0x54, 0x13f: 0x55, + // Block 0x5, offset 0x140 + 0x140: 0x56, 0x142: 0x57, 0x144: 0x58, 0x145: 0x59, 0x146: 0x5a, 0x147: 0x5b, + 0x14d: 0x5c, + 0x15c: 0x5d, 0x15f: 0x5e, + 0x162: 0x5f, 0x164: 0x60, + 0x168: 0x61, 0x169: 0x62, 0x16a: 0x63, 0x16c: 0x0e, 0x16d: 0x64, 0x16e: 0x65, 0x16f: 0x66, + 0x170: 0x67, 0x173: 0x68, 0x177: 0x0f, + 0x178: 0x10, 0x179: 0x11, 0x17a: 0x12, 0x17b: 0x13, 0x17c: 0x14, 0x17d: 0x15, 0x17e: 0x16, 0x17f: 0x17, + // Block 0x6, offset 0x180 + 0x180: 0x69, 0x183: 0x6a, 0x184: 0x6b, 0x186: 0x6c, 0x187: 0x6d, + 0x188: 0x6e, 0x189: 0x18, 0x18a: 0x19, 0x18b: 0x6f, 0x18c: 0x70, + 0x1ab: 0x71, + 0x1b3: 0x72, 0x1b5: 0x73, 0x1b7: 0x74, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x75, 0x1c1: 0x1a, 0x1c2: 0x1b, 0x1c3: 0x1c, 0x1c4: 0x76, 0x1c5: 0x77, + 0x1c9: 0x78, 0x1cc: 0x79, 0x1cd: 0x7a, + // Block 0x8, offset 0x200 + 0x219: 0x7b, 0x21a: 0x7c, 0x21b: 0x7d, + 0x220: 0x7e, 0x223: 0x7f, 0x224: 0x80, 0x225: 0x81, 0x226: 0x82, 0x227: 0x83, + 0x22a: 0x84, 0x22b: 0x85, 0x22f: 0x86, + 0x230: 0x87, 0x231: 0x88, 0x232: 0x89, 0x233: 0x8a, 0x234: 0x8b, 0x235: 0x8c, 0x236: 0x8d, 0x237: 0x87, + 0x238: 0x88, 0x239: 0x89, 0x23a: 0x8a, 0x23b: 0x8b, 0x23c: 0x8c, 0x23d: 0x8d, 0x23e: 0x87, 0x23f: 0x88, + // Block 0x9, offset 0x240 + 0x240: 0x89, 0x241: 0x8a, 0x242: 0x8b, 0x243: 0x8c, 0x244: 0x8d, 0x245: 0x87, 0x246: 0x88, 0x247: 0x89, + 0x248: 0x8a, 0x249: 0x8b, 0x24a: 0x8c, 0x24b: 0x8d, 0x24c: 0x87, 0x24d: 0x88, 0x24e: 0x89, 0x24f: 0x8a, + 0x250: 0x8b, 0x251: 0x8c, 0x252: 0x8d, 0x253: 0x87, 0x254: 0x88, 0x255: 0x89, 0x256: 0x8a, 0x257: 0x8b, + 0x258: 0x8c, 0x259: 0x8d, 0x25a: 0x87, 0x25b: 0x88, 0x25c: 0x89, 0x25d: 0x8a, 0x25e: 0x8b, 0x25f: 0x8c, + 0x260: 0x8d, 0x261: 0x87, 0x262: 0x88, 0x263: 0x89, 0x264: 0x8a, 0x265: 0x8b, 0x266: 0x8c, 0x267: 0x8d, + 0x268: 0x87, 0x269: 0x88, 0x26a: 0x89, 0x26b: 0x8a, 0x26c: 0x8b, 0x26d: 0x8c, 0x26e: 0x8d, 0x26f: 0x87, + 0x270: 0x88, 0x271: 0x89, 0x272: 0x8a, 0x273: 0x8b, 0x274: 0x8c, 0x275: 0x8d, 0x276: 0x87, 0x277: 0x88, + 0x278: 0x89, 0x279: 0x8a, 0x27a: 0x8b, 0x27b: 0x8c, 0x27c: 0x8d, 0x27d: 0x87, 0x27e: 0x88, 0x27f: 0x89, + // Block 0xa, offset 0x280 + 0x280: 0x8a, 0x281: 0x8b, 0x282: 0x8c, 0x283: 0x8d, 0x284: 0x87, 0x285: 0x88, 0x286: 0x89, 0x287: 0x8a, + 0x288: 0x8b, 0x289: 0x8c, 0x28a: 0x8d, 0x28b: 0x87, 0x28c: 0x88, 0x28d: 0x89, 0x28e: 0x8a, 0x28f: 0x8b, + 0x290: 0x8c, 0x291: 0x8d, 0x292: 0x87, 0x293: 0x88, 0x294: 0x89, 0x295: 0x8a, 0x296: 0x8b, 0x297: 0x8c, + 0x298: 0x8d, 0x299: 0x87, 0x29a: 0x88, 0x29b: 0x89, 0x29c: 0x8a, 0x29d: 0x8b, 0x29e: 0x8c, 0x29f: 0x8d, + 0x2a0: 0x87, 0x2a1: 0x88, 0x2a2: 0x89, 0x2a3: 0x8a, 0x2a4: 0x8b, 0x2a5: 0x8c, 0x2a6: 0x8d, 0x2a7: 0x87, + 0x2a8: 0x88, 0x2a9: 0x89, 0x2aa: 0x8a, 0x2ab: 0x8b, 0x2ac: 0x8c, 0x2ad: 0x8d, 0x2ae: 0x87, 0x2af: 0x88, + 0x2b0: 0x89, 0x2b1: 0x8a, 0x2b2: 0x8b, 0x2b3: 0x8c, 0x2b4: 0x8d, 0x2b5: 0x87, 0x2b6: 0x88, 0x2b7: 0x89, + 0x2b8: 0x8a, 0x2b9: 0x8b, 0x2ba: 0x8c, 0x2bb: 0x8d, 0x2bc: 0x87, 0x2bd: 0x88, 0x2be: 0x89, 0x2bf: 0x8a, + // Block 0xb, offset 0x2c0 + 0x2c0: 0x8b, 0x2c1: 0x8c, 0x2c2: 0x8d, 0x2c3: 0x87, 0x2c4: 0x88, 0x2c5: 0x89, 0x2c6: 0x8a, 0x2c7: 0x8b, + 0x2c8: 0x8c, 0x2c9: 0x8d, 0x2ca: 0x87, 0x2cb: 0x88, 0x2cc: 0x89, 0x2cd: 0x8a, 0x2ce: 0x8b, 0x2cf: 0x8c, + 0x2d0: 0x8d, 0x2d1: 0x87, 0x2d2: 0x88, 0x2d3: 0x89, 0x2d4: 0x8a, 0x2d5: 0x8b, 0x2d6: 0x8c, 0x2d7: 0x8d, + 0x2d8: 0x87, 0x2d9: 0x88, 0x2da: 0x89, 0x2db: 0x8a, 0x2dc: 0x8b, 0x2dd: 0x8c, 0x2de: 0x8e, + // Block 0xc, offset 0x300 + 0x324: 0x1d, 0x325: 0x1e, 0x326: 0x1f, 0x327: 0x20, + 0x328: 0x21, 0x329: 0x22, 0x32a: 0x23, 0x32b: 0x24, 0x32c: 0x8f, 0x32d: 0x90, 0x32e: 0x91, + 0x331: 0x92, 0x332: 0x93, 0x333: 0x94, 0x334: 0x95, + 0x338: 0x96, 0x339: 0x97, 0x33a: 0x98, 0x33b: 0x99, 0x33e: 0x9a, 0x33f: 0x9b, + // Block 0xd, offset 0x340 + 0x347: 0x9c, + 0x34b: 0x9d, 0x34d: 0x9e, + 0x368: 0x9f, 0x36b: 0xa0, + 0x374: 0xa1, + 0x37d: 0xa2, + // Block 0xe, offset 0x380 + 0x381: 0xa3, 0x382: 0xa4, 0x384: 0xa5, 0x385: 0x82, 0x387: 0xa6, + 0x388: 0xa7, 0x38b: 0xa8, 0x38c: 0xa9, 0x38d: 0xaa, + 0x391: 0xab, 0x392: 0xac, 0x393: 0xad, 0x396: 0xae, 0x397: 0xaf, + 0x398: 0x73, 0x39a: 0xb0, 0x39c: 0xb1, + 0x3a0: 0xb2, + 0x3a8: 0xb3, 0x3a9: 0xb4, 0x3aa: 0xb5, + 0x3b0: 0x73, 0x3b5: 0xb6, 0x3b6: 0xb7, + // Block 0xf, offset 0x3c0 + 0x3eb: 0xb8, 0x3ec: 0xb9, + // Block 0x10, offset 0x400 + 0x432: 0xba, + // Block 0x11, offset 0x440 + 0x445: 0xbb, 0x446: 0xbc, 0x447: 0xbd, + 0x449: 0xbe, + // Block 0x12, offset 0x480 + 0x480: 0xbf, + 0x4a3: 0xc0, 0x4a5: 0xc1, + // Block 0x13, offset 0x4c0 + 0x4c8: 0xc2, + // Block 0x14, offset 0x500 + 0x520: 0x25, 0x521: 0x26, 0x522: 0x27, 0x523: 0x28, 0x524: 0x29, 0x525: 0x2a, 0x526: 0x2b, 0x527: 0x2c, + 0x528: 0x2d, + // Block 0x15, offset 0x540 + 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d, + 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, + 0x56f: 0x12, +} + +// nfcSparseOffset: 149 entries, 298 bytes +var nfcSparseOffset = []uint16{0x0, 0x5, 0x9, 0xb, 0xd, 0x18, 0x28, 0x2a, 0x2f, 0x3a, 0x49, 0x56, 0x5e, 0x63, 0x68, 0x6a, 0x72, 0x79, 0x7c, 0x84, 0x88, 0x8c, 0x8e, 0x90, 0x99, 0x9d, 0xa4, 0xa9, 0xac, 0xb6, 0xb9, 0xc0, 0xc8, 0xcb, 0xcd, 0xcf, 0xd1, 0xd6, 0xe7, 0xf3, 0xf5, 0xfb, 0xfd, 0xff, 0x101, 0x103, 0x105, 0x107, 0x10a, 0x10d, 0x10f, 0x112, 0x115, 0x119, 0x11e, 0x127, 0x129, 0x12c, 0x12e, 0x139, 0x13d, 0x14b, 0x14e, 0x154, 0x15a, 0x165, 0x169, 0x16b, 0x16d, 0x16f, 0x171, 0x173, 0x179, 0x17d, 0x17f, 0x181, 0x189, 0x18d, 0x190, 0x192, 0x194, 0x196, 0x199, 0x19b, 0x19d, 0x19f, 0x1a1, 0x1a7, 0x1aa, 0x1ac, 0x1b3, 0x1b9, 0x1bf, 0x1c7, 0x1cd, 0x1d3, 0x1d9, 0x1dd, 0x1eb, 0x1f4, 0x1f7, 0x1fa, 0x1fc, 0x1ff, 0x201, 0x205, 0x20a, 0x20c, 0x20e, 0x213, 0x219, 0x21b, 0x21d, 0x21f, 0x225, 0x228, 0x22a, 0x230, 0x233, 0x23b, 0x242, 0x245, 0x248, 0x24a, 0x24d, 0x255, 0x259, 0x260, 0x263, 0x269, 0x26b, 0x26e, 0x270, 0x273, 0x275, 0x277, 0x279, 0x27c, 0x27e, 0x280, 0x282, 0x284, 0x291, 0x29b, 0x29d, 0x29f, 0x2a5, 0x2a7, 0x2aa} + +// nfcSparseValues: 684 entries, 2736 bytes +var nfcSparseValues = [684]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0000, lo: 0x04}, + {value: 0xa100, lo: 0xa8, hi: 0xa8}, + {value: 0x8100, lo: 0xaf, hi: 0xaf}, + {value: 0x8100, lo: 0xb4, hi: 0xb4}, + {value: 0x8100, lo: 0xb8, hi: 0xb8}, + // Block 0x1, offset 0x5 + {value: 0x0091, lo: 0x03}, + {value: 0x46e2, lo: 0xa0, hi: 0xa1}, + {value: 0x4714, lo: 0xaf, hi: 0xb0}, + {value: 0xa000, lo: 0xb7, hi: 0xb7}, + // Block 0x2, offset 0x9 + {value: 0x0000, lo: 0x01}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + // Block 0x3, offset 0xb + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x98, hi: 0x9d}, + // Block 0x4, offset 0xd + {value: 0x0006, lo: 0x0a}, + {value: 0xa000, lo: 0x81, hi: 0x81}, + {value: 0xa000, lo: 0x85, hi: 0x85}, + {value: 0xa000, lo: 0x89, hi: 0x89}, + {value: 0x4840, lo: 0x8a, hi: 0x8a}, + {value: 0x485e, lo: 0x8b, hi: 0x8b}, + {value: 0x36c7, lo: 0x8c, hi: 0x8c}, + {value: 0x36df, lo: 0x8d, hi: 0x8d}, + {value: 0x4876, lo: 0x8e, hi: 0x8e}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x36fd, lo: 0x93, hi: 0x94}, + // Block 0x5, offset 0x18 + {value: 0x0000, lo: 0x0f}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0xa000, lo: 0x8d, hi: 0x8d}, + {value: 0x37a5, lo: 0x90, hi: 0x90}, + {value: 0x37b1, lo: 0x91, hi: 0x91}, + {value: 0x379f, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x96, hi: 0x96}, + {value: 0x3817, lo: 0x97, hi: 0x97}, + {value: 0x37e1, lo: 0x9c, hi: 0x9c}, + {value: 0x37c9, lo: 0x9d, hi: 0x9d}, + {value: 0x37f3, lo: 0x9e, hi: 0x9e}, + {value: 0xa000, lo: 0xb4, hi: 0xb5}, + {value: 0x381d, lo: 0xb6, hi: 0xb6}, + {value: 0x3823, lo: 0xb7, hi: 0xb7}, + // Block 0x6, offset 0x28 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x83, hi: 0x87}, + // Block 0x7, offset 0x2a + {value: 0x0001, lo: 0x04}, + {value: 0x8113, lo: 0x81, hi: 0x82}, + {value: 0x8132, lo: 0x84, hi: 0x84}, + {value: 0x812d, lo: 0x85, hi: 0x85}, + {value: 0x810d, lo: 0x87, hi: 0x87}, + // Block 0x8, offset 0x2f + {value: 0x0000, lo: 0x0a}, + {value: 0x8132, lo: 0x90, hi: 0x97}, + {value: 0x8119, lo: 0x98, hi: 0x98}, + {value: 0x811a, lo: 0x99, hi: 0x99}, + {value: 0x811b, lo: 0x9a, hi: 0x9a}, + {value: 0x3841, lo: 0xa2, hi: 0xa2}, + {value: 0x3847, lo: 0xa3, hi: 0xa3}, + {value: 0x3853, lo: 0xa4, hi: 0xa4}, + {value: 0x384d, lo: 0xa5, hi: 0xa5}, + {value: 0x3859, lo: 0xa6, hi: 0xa6}, + {value: 0xa000, lo: 0xa7, hi: 0xa7}, + // Block 0x9, offset 0x3a + {value: 0x0000, lo: 0x0e}, + {value: 0x386b, lo: 0x80, hi: 0x80}, + {value: 0xa000, lo: 0x81, hi: 0x81}, + {value: 0x385f, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x3865, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x95, hi: 0x95}, + {value: 0x8132, lo: 0x96, hi: 0x9c}, + {value: 0x8132, lo: 0x9f, hi: 0xa2}, + {value: 0x812d, lo: 0xa3, hi: 0xa3}, + {value: 0x8132, lo: 0xa4, hi: 0xa4}, + {value: 0x8132, lo: 0xa7, hi: 0xa8}, + {value: 0x812d, lo: 0xaa, hi: 0xaa}, + {value: 0x8132, lo: 0xab, hi: 0xac}, + {value: 0x812d, lo: 0xad, hi: 0xad}, + // Block 0xa, offset 0x49 + {value: 0x0000, lo: 0x0c}, + {value: 0x811f, lo: 0x91, hi: 0x91}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + {value: 0x812d, lo: 0xb1, hi: 0xb1}, + {value: 0x8132, lo: 0xb2, hi: 0xb3}, + {value: 0x812d, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb5, hi: 0xb6}, + {value: 0x812d, lo: 0xb7, hi: 0xb9}, + {value: 0x8132, lo: 0xba, hi: 0xba}, + {value: 0x812d, lo: 0xbb, hi: 0xbc}, + {value: 0x8132, lo: 0xbd, hi: 0xbd}, + {value: 0x812d, lo: 0xbe, hi: 0xbe}, + {value: 0x8132, lo: 0xbf, hi: 0xbf}, + // Block 0xb, offset 0x56 + {value: 0x0005, lo: 0x07}, + {value: 0x8132, lo: 0x80, hi: 0x80}, + {value: 0x8132, lo: 0x81, hi: 0x81}, + {value: 0x812d, lo: 0x82, hi: 0x83}, + {value: 0x812d, lo: 0x84, hi: 0x85}, + {value: 0x812d, lo: 0x86, hi: 0x87}, + {value: 0x812d, lo: 0x88, hi: 0x89}, + {value: 0x8132, lo: 0x8a, hi: 0x8a}, + // Block 0xc, offset 0x5e + {value: 0x0000, lo: 0x04}, + {value: 0x8132, lo: 0xab, hi: 0xb1}, + {value: 0x812d, lo: 0xb2, hi: 0xb2}, + {value: 0x8132, lo: 0xb3, hi: 0xb3}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + // Block 0xd, offset 0x63 + {value: 0x0000, lo: 0x04}, + {value: 0x8132, lo: 0x96, hi: 0x99}, + {value: 0x8132, lo: 0x9b, hi: 0xa3}, + {value: 0x8132, lo: 0xa5, hi: 0xa7}, + {value: 0x8132, lo: 0xa9, hi: 0xad}, + // Block 0xe, offset 0x68 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x99, hi: 0x9b}, + // Block 0xf, offset 0x6a + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0xa8, hi: 0xa8}, + {value: 0x3ed8, lo: 0xa9, hi: 0xa9}, + {value: 0xa000, lo: 0xb0, hi: 0xb0}, + {value: 0x3ee0, lo: 0xb1, hi: 0xb1}, + {value: 0xa000, lo: 0xb3, hi: 0xb3}, + {value: 0x3ee8, lo: 0xb4, hi: 0xb4}, + {value: 0x9902, lo: 0xbc, hi: 0xbc}, + // Block 0x10, offset 0x72 + {value: 0x0008, lo: 0x06}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x8132, lo: 0x91, hi: 0x91}, + {value: 0x812d, lo: 0x92, hi: 0x92}, + {value: 0x8132, lo: 0x93, hi: 0x93}, + {value: 0x8132, lo: 0x94, hi: 0x94}, + {value: 0x451c, lo: 0x98, hi: 0x9f}, + // Block 0x11, offset 0x79 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x12, offset 0x7c + {value: 0x0008, lo: 0x07}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2c9e, lo: 0x8b, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x455c, lo: 0x9c, hi: 0x9d}, + {value: 0x456c, lo: 0x9f, hi: 0x9f}, + {value: 0x8132, lo: 0xbe, hi: 0xbe}, + // Block 0x13, offset 0x84 + {value: 0x0000, lo: 0x03}, + {value: 0x4594, lo: 0xb3, hi: 0xb3}, + {value: 0x459c, lo: 0xb6, hi: 0xb6}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + // Block 0x14, offset 0x88 + {value: 0x0008, lo: 0x03}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x4574, lo: 0x99, hi: 0x9b}, + {value: 0x458c, lo: 0x9e, hi: 0x9e}, + // Block 0x15, offset 0x8c + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + // Block 0x16, offset 0x8e + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + // Block 0x17, offset 0x90 + {value: 0x0000, lo: 0x08}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2cb6, lo: 0x88, hi: 0x88}, + {value: 0x2cae, lo: 0x8b, hi: 0x8b}, + {value: 0x2cbe, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x96, hi: 0x97}, + {value: 0x45a4, lo: 0x9c, hi: 0x9c}, + {value: 0x45ac, lo: 0x9d, hi: 0x9d}, + // Block 0x18, offset 0x99 + {value: 0x0000, lo: 0x03}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x2cc6, lo: 0x94, hi: 0x94}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x19, offset 0x9d + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2cce, lo: 0x8a, hi: 0x8a}, + {value: 0x2cde, lo: 0x8b, hi: 0x8b}, + {value: 0x2cd6, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x1a, offset 0xa4 + {value: 0x1801, lo: 0x04}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x3ef0, lo: 0x88, hi: 0x88}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x8120, lo: 0x95, hi: 0x96}, + // Block 0x1b, offset 0xa9 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + {value: 0xa000, lo: 0xbf, hi: 0xbf}, + // Block 0x1c, offset 0xac + {value: 0x0000, lo: 0x09}, + {value: 0x2ce6, lo: 0x80, hi: 0x80}, + {value: 0x9900, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x2cee, lo: 0x87, hi: 0x87}, + {value: 0x2cf6, lo: 0x88, hi: 0x88}, + {value: 0x2f50, lo: 0x8a, hi: 0x8a}, + {value: 0x2dd8, lo: 0x8b, hi: 0x8b}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x95, hi: 0x96}, + // Block 0x1d, offset 0xb6 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xbb, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x1e, offset 0xb9 + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2cfe, lo: 0x8a, hi: 0x8a}, + {value: 0x2d0e, lo: 0x8b, hi: 0x8b}, + {value: 0x2d06, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x1f, offset 0xc0 + {value: 0x6bea, lo: 0x07}, + {value: 0x9904, lo: 0x8a, hi: 0x8a}, + {value: 0x9900, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x3ef8, lo: 0x9a, hi: 0x9a}, + {value: 0x2f58, lo: 0x9c, hi: 0x9c}, + {value: 0x2de3, lo: 0x9d, hi: 0x9d}, + {value: 0x2d16, lo: 0x9e, hi: 0x9f}, + // Block 0x20, offset 0xc8 + {value: 0x0000, lo: 0x02}, + {value: 0x8122, lo: 0xb8, hi: 0xb9}, + {value: 0x8104, lo: 0xba, hi: 0xba}, + // Block 0x21, offset 0xcb + {value: 0x0000, lo: 0x01}, + {value: 0x8123, lo: 0x88, hi: 0x8b}, + // Block 0x22, offset 0xcd + {value: 0x0000, lo: 0x01}, + {value: 0x8124, lo: 0xb8, hi: 0xb9}, + // Block 0x23, offset 0xcf + {value: 0x0000, lo: 0x01}, + {value: 0x8125, lo: 0x88, hi: 0x8b}, + // Block 0x24, offset 0xd1 + {value: 0x0000, lo: 0x04}, + {value: 0x812d, lo: 0x98, hi: 0x99}, + {value: 0x812d, lo: 0xb5, hi: 0xb5}, + {value: 0x812d, lo: 0xb7, hi: 0xb7}, + {value: 0x812b, lo: 0xb9, hi: 0xb9}, + // Block 0x25, offset 0xd6 + {value: 0x0000, lo: 0x10}, + {value: 0x2644, lo: 0x83, hi: 0x83}, + {value: 0x264b, lo: 0x8d, hi: 0x8d}, + {value: 0x2652, lo: 0x92, hi: 0x92}, + {value: 0x2659, lo: 0x97, hi: 0x97}, + {value: 0x2660, lo: 0x9c, hi: 0x9c}, + {value: 0x263d, lo: 0xa9, hi: 0xa9}, + {value: 0x8126, lo: 0xb1, hi: 0xb1}, + {value: 0x8127, lo: 0xb2, hi: 0xb2}, + {value: 0x4a84, lo: 0xb3, hi: 0xb3}, + {value: 0x8128, lo: 0xb4, hi: 0xb4}, + {value: 0x4a8d, lo: 0xb5, hi: 0xb5}, + {value: 0x45b4, lo: 0xb6, hi: 0xb6}, + {value: 0x8200, lo: 0xb7, hi: 0xb7}, + {value: 0x45bc, lo: 0xb8, hi: 0xb8}, + {value: 0x8200, lo: 0xb9, hi: 0xb9}, + {value: 0x8127, lo: 0xba, hi: 0xbd}, + // Block 0x26, offset 0xe7 + {value: 0x0000, lo: 0x0b}, + {value: 0x8127, lo: 0x80, hi: 0x80}, + {value: 0x4a96, lo: 0x81, hi: 0x81}, + {value: 0x8132, lo: 0x82, hi: 0x83}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0x86, hi: 0x87}, + {value: 0x266e, lo: 0x93, hi: 0x93}, + {value: 0x2675, lo: 0x9d, hi: 0x9d}, + {value: 0x267c, lo: 0xa2, hi: 0xa2}, + {value: 0x2683, lo: 0xa7, hi: 0xa7}, + {value: 0x268a, lo: 0xac, hi: 0xac}, + {value: 0x2667, lo: 0xb9, hi: 0xb9}, + // Block 0x27, offset 0xf3 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x86, hi: 0x86}, + // Block 0x28, offset 0xf5 + {value: 0x0000, lo: 0x05}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x2d1e, lo: 0xa6, hi: 0xa6}, + {value: 0x9900, lo: 0xae, hi: 0xae}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + {value: 0x8104, lo: 0xb9, hi: 0xba}, + // Block 0x29, offset 0xfb + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x8d, hi: 0x8d}, + // Block 0x2a, offset 0xfd + {value: 0x0000, lo: 0x01}, + {value: 0xa000, lo: 0x80, hi: 0x92}, + // Block 0x2b, offset 0xff + {value: 0x0000, lo: 0x01}, + {value: 0xb900, lo: 0xa1, hi: 0xb5}, + // Block 0x2c, offset 0x101 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0xa8, hi: 0xbf}, + // Block 0x2d, offset 0x103 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0x80, hi: 0x82}, + // Block 0x2e, offset 0x105 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x9d, hi: 0x9f}, + // Block 0x2f, offset 0x107 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x94, hi: 0x94}, + {value: 0x8104, lo: 0xb4, hi: 0xb4}, + // Block 0x30, offset 0x10a + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x92, hi: 0x92}, + {value: 0x8132, lo: 0x9d, hi: 0x9d}, + // Block 0x31, offset 0x10d + {value: 0x0000, lo: 0x01}, + {value: 0x8131, lo: 0xa9, hi: 0xa9}, + // Block 0x32, offset 0x10f + {value: 0x0004, lo: 0x02}, + {value: 0x812e, lo: 0xb9, hi: 0xba}, + {value: 0x812d, lo: 0xbb, hi: 0xbb}, + // Block 0x33, offset 0x112 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x97, hi: 0x97}, + {value: 0x812d, lo: 0x98, hi: 0x98}, + // Block 0x34, offset 0x115 + {value: 0x0000, lo: 0x03}, + {value: 0x8104, lo: 0xa0, hi: 0xa0}, + {value: 0x8132, lo: 0xb5, hi: 0xbc}, + {value: 0x812d, lo: 0xbf, hi: 0xbf}, + // Block 0x35, offset 0x119 + {value: 0x0000, lo: 0x04}, + {value: 0x8132, lo: 0xb0, hi: 0xb4}, + {value: 0x812d, lo: 0xb5, hi: 0xba}, + {value: 0x8132, lo: 0xbb, hi: 0xbc}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + // Block 0x36, offset 0x11e + {value: 0x0000, lo: 0x08}, + {value: 0x2d66, lo: 0x80, hi: 0x80}, + {value: 0x2d6e, lo: 0x81, hi: 0x81}, + {value: 0xa000, lo: 0x82, hi: 0x82}, + {value: 0x2d76, lo: 0x83, hi: 0x83}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0xab, hi: 0xab}, + {value: 0x812d, lo: 0xac, hi: 0xac}, + {value: 0x8132, lo: 0xad, hi: 0xb3}, + // Block 0x37, offset 0x127 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xaa, hi: 0xab}, + // Block 0x38, offset 0x129 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xa6, hi: 0xa6}, + {value: 0x8104, lo: 0xb2, hi: 0xb3}, + // Block 0x39, offset 0x12c + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + // Block 0x3a, offset 0x12e + {value: 0x0000, lo: 0x0a}, + {value: 0x8132, lo: 0x90, hi: 0x92}, + {value: 0x8101, lo: 0x94, hi: 0x94}, + {value: 0x812d, lo: 0x95, hi: 0x99}, + {value: 0x8132, lo: 0x9a, hi: 0x9b}, + {value: 0x812d, lo: 0x9c, hi: 0x9f}, + {value: 0x8132, lo: 0xa0, hi: 0xa0}, + {value: 0x8101, lo: 0xa2, hi: 0xa8}, + {value: 0x812d, lo: 0xad, hi: 0xad}, + {value: 0x8132, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb8, hi: 0xb9}, + // Block 0x3b, offset 0x139 + {value: 0x0004, lo: 0x03}, + {value: 0x0433, lo: 0x80, hi: 0x81}, + {value: 0x8100, lo: 0x97, hi: 0x97}, + {value: 0x8100, lo: 0xbe, hi: 0xbe}, + // Block 0x3c, offset 0x13d + {value: 0x0000, lo: 0x0d}, + {value: 0x8132, lo: 0x90, hi: 0x91}, + {value: 0x8101, lo: 0x92, hi: 0x93}, + {value: 0x8132, lo: 0x94, hi: 0x97}, + {value: 0x8101, lo: 0x98, hi: 0x9a}, + {value: 0x8132, lo: 0x9b, hi: 0x9c}, + {value: 0x8132, lo: 0xa1, hi: 0xa1}, + {value: 0x8101, lo: 0xa5, hi: 0xa6}, + {value: 0x8132, lo: 0xa7, hi: 0xa7}, + {value: 0x812d, lo: 0xa8, hi: 0xa8}, + {value: 0x8132, lo: 0xa9, hi: 0xa9}, + {value: 0x8101, lo: 0xaa, hi: 0xab}, + {value: 0x812d, lo: 0xac, hi: 0xaf}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + // Block 0x3d, offset 0x14b + {value: 0x427b, lo: 0x02}, + {value: 0x01b8, lo: 0xa6, hi: 0xa6}, + {value: 0x0057, lo: 0xaa, hi: 0xab}, + // Block 0x3e, offset 0x14e + {value: 0x0007, lo: 0x05}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + {value: 0x3bb9, lo: 0x9a, hi: 0x9b}, + {value: 0x3bc7, lo: 0xae, hi: 0xae}, + // Block 0x3f, offset 0x154 + {value: 0x000e, lo: 0x05}, + {value: 0x3bce, lo: 0x8d, hi: 0x8e}, + {value: 0x3bd5, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + // Block 0x40, offset 0x15a + {value: 0x6408, lo: 0x0a}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0x3be3, lo: 0x84, hi: 0x84}, + {value: 0xa000, lo: 0x88, hi: 0x88}, + {value: 0x3bea, lo: 0x89, hi: 0x89}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0x3bf1, lo: 0x8c, hi: 0x8c}, + {value: 0xa000, lo: 0xa3, hi: 0xa3}, + {value: 0x3bf8, lo: 0xa4, hi: 0xa5}, + {value: 0x3bff, lo: 0xa6, hi: 0xa6}, + {value: 0xa000, lo: 0xbc, hi: 0xbc}, + // Block 0x41, offset 0x165 + {value: 0x0007, lo: 0x03}, + {value: 0x3c68, lo: 0xa0, hi: 0xa1}, + {value: 0x3c92, lo: 0xa2, hi: 0xa3}, + {value: 0x3cbc, lo: 0xaa, hi: 0xad}, + // Block 0x42, offset 0x169 + {value: 0x0004, lo: 0x01}, + {value: 0x048b, lo: 0xa9, hi: 0xaa}, + // Block 0x43, offset 0x16b + {value: 0x0000, lo: 0x01}, + {value: 0x44dd, lo: 0x9c, hi: 0x9c}, + // Block 0x44, offset 0x16d + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xaf, hi: 0xb1}, + // Block 0x45, offset 0x16f + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x46, offset 0x171 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xa0, hi: 0xbf}, + // Block 0x47, offset 0x173 + {value: 0x0000, lo: 0x05}, + {value: 0x812c, lo: 0xaa, hi: 0xaa}, + {value: 0x8131, lo: 0xab, hi: 0xab}, + {value: 0x8133, lo: 0xac, hi: 0xac}, + {value: 0x812e, lo: 0xad, hi: 0xad}, + {value: 0x812f, lo: 0xae, hi: 0xaf}, + // Block 0x48, offset 0x179 + {value: 0x0000, lo: 0x03}, + {value: 0x4a9f, lo: 0xb3, hi: 0xb3}, + {value: 0x4a9f, lo: 0xb5, hi: 0xb6}, + {value: 0x4a9f, lo: 0xba, hi: 0xbf}, + // Block 0x49, offset 0x17d + {value: 0x0000, lo: 0x01}, + {value: 0x4a9f, lo: 0x8f, hi: 0xa3}, + // Block 0x4a, offset 0x17f + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0xae, hi: 0xbe}, + // Block 0x4b, offset 0x181 + {value: 0x0000, lo: 0x07}, + {value: 0x8100, lo: 0x84, hi: 0x84}, + {value: 0x8100, lo: 0x87, hi: 0x87}, + {value: 0x8100, lo: 0x90, hi: 0x90}, + {value: 0x8100, lo: 0x9e, hi: 0x9e}, + {value: 0x8100, lo: 0xa1, hi: 0xa1}, + {value: 0x8100, lo: 0xb2, hi: 0xb2}, + {value: 0x8100, lo: 0xbb, hi: 0xbb}, + // Block 0x4c, offset 0x189 + {value: 0x0000, lo: 0x03}, + {value: 0x8100, lo: 0x80, hi: 0x80}, + {value: 0x8100, lo: 0x8b, hi: 0x8b}, + {value: 0x8100, lo: 0x8e, hi: 0x8e}, + // Block 0x4d, offset 0x18d + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0xaf, hi: 0xaf}, + {value: 0x8132, lo: 0xb4, hi: 0xbd}, + // Block 0x4e, offset 0x190 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x9e, hi: 0x9f}, + // Block 0x4f, offset 0x192 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb0, hi: 0xb1}, + // Block 0x50, offset 0x194 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x86, hi: 0x86}, + // Block 0x51, offset 0x196 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0xa0, hi: 0xb1}, + // Block 0x52, offset 0x199 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xab, hi: 0xad}, + // Block 0x53, offset 0x19b + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x93, hi: 0x93}, + // Block 0x54, offset 0x19d + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xb3, hi: 0xb3}, + // Block 0x55, offset 0x19f + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x80, hi: 0x80}, + // Block 0x56, offset 0x1a1 + {value: 0x0000, lo: 0x05}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + {value: 0x8132, lo: 0xb2, hi: 0xb3}, + {value: 0x812d, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb7, hi: 0xb8}, + {value: 0x8132, lo: 0xbe, hi: 0xbf}, + // Block 0x57, offset 0x1a7 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x81, hi: 0x81}, + {value: 0x8104, lo: 0xb6, hi: 0xb6}, + // Block 0x58, offset 0x1aa + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xad, hi: 0xad}, + // Block 0x59, offset 0x1ac + {value: 0x0000, lo: 0x06}, + {value: 0xe500, lo: 0x80, hi: 0x80}, + {value: 0xc600, lo: 0x81, hi: 0x9b}, + {value: 0xe500, lo: 0x9c, hi: 0x9c}, + {value: 0xc600, lo: 0x9d, hi: 0xb7}, + {value: 0xe500, lo: 0xb8, hi: 0xb8}, + {value: 0xc600, lo: 0xb9, hi: 0xbf}, + // Block 0x5a, offset 0x1b3 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x93}, + {value: 0xe500, lo: 0x94, hi: 0x94}, + {value: 0xc600, lo: 0x95, hi: 0xaf}, + {value: 0xe500, lo: 0xb0, hi: 0xb0}, + {value: 0xc600, lo: 0xb1, hi: 0xbf}, + // Block 0x5b, offset 0x1b9 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8b}, + {value: 0xe500, lo: 0x8c, hi: 0x8c}, + {value: 0xc600, lo: 0x8d, hi: 0xa7}, + {value: 0xe500, lo: 0xa8, hi: 0xa8}, + {value: 0xc600, lo: 0xa9, hi: 0xbf}, + // Block 0x5c, offset 0x1bf + {value: 0x0000, lo: 0x07}, + {value: 0xc600, lo: 0x80, hi: 0x83}, + {value: 0xe500, lo: 0x84, hi: 0x84}, + {value: 0xc600, lo: 0x85, hi: 0x9f}, + {value: 0xe500, lo: 0xa0, hi: 0xa0}, + {value: 0xc600, lo: 0xa1, hi: 0xbb}, + {value: 0xe500, lo: 0xbc, hi: 0xbc}, + {value: 0xc600, lo: 0xbd, hi: 0xbf}, + // Block 0x5d, offset 0x1c7 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x97}, + {value: 0xe500, lo: 0x98, hi: 0x98}, + {value: 0xc600, lo: 0x99, hi: 0xb3}, + {value: 0xe500, lo: 0xb4, hi: 0xb4}, + {value: 0xc600, lo: 0xb5, hi: 0xbf}, + // Block 0x5e, offset 0x1cd + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8f}, + {value: 0xe500, lo: 0x90, hi: 0x90}, + {value: 0xc600, lo: 0x91, hi: 0xab}, + {value: 0xe500, lo: 0xac, hi: 0xac}, + {value: 0xc600, lo: 0xad, hi: 0xbf}, + // Block 0x5f, offset 0x1d3 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + {value: 0xe500, lo: 0xa4, hi: 0xa4}, + {value: 0xc600, lo: 0xa5, hi: 0xbf}, + // Block 0x60, offset 0x1d9 + {value: 0x0000, lo: 0x03}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + // Block 0x61, offset 0x1dd + {value: 0x0006, lo: 0x0d}, + {value: 0x4390, lo: 0x9d, hi: 0x9d}, + {value: 0x8115, lo: 0x9e, hi: 0x9e}, + {value: 0x4402, lo: 0x9f, hi: 0x9f}, + {value: 0x43f0, lo: 0xaa, hi: 0xab}, + {value: 0x44f4, lo: 0xac, hi: 0xac}, + {value: 0x44fc, lo: 0xad, hi: 0xad}, + {value: 0x4348, lo: 0xae, hi: 0xb1}, + {value: 0x4366, lo: 0xb2, hi: 0xb4}, + {value: 0x437e, lo: 0xb5, hi: 0xb6}, + {value: 0x438a, lo: 0xb8, hi: 0xb8}, + {value: 0x4396, lo: 0xb9, hi: 0xbb}, + {value: 0x43ae, lo: 0xbc, hi: 0xbc}, + {value: 0x43b4, lo: 0xbe, hi: 0xbe}, + // Block 0x62, offset 0x1eb + {value: 0x0006, lo: 0x08}, + {value: 0x43ba, lo: 0x80, hi: 0x81}, + {value: 0x43c6, lo: 0x83, hi: 0x84}, + {value: 0x43d8, lo: 0x86, hi: 0x89}, + {value: 0x43fc, lo: 0x8a, hi: 0x8a}, + {value: 0x4378, lo: 0x8b, hi: 0x8b}, + {value: 0x4360, lo: 0x8c, hi: 0x8c}, + {value: 0x43a8, lo: 0x8d, hi: 0x8d}, + {value: 0x43d2, lo: 0x8e, hi: 0x8e}, + // Block 0x63, offset 0x1f4 + {value: 0x0000, lo: 0x02}, + {value: 0x8100, lo: 0xa4, hi: 0xa5}, + {value: 0x8100, lo: 0xb0, hi: 0xb1}, + // Block 0x64, offset 0x1f7 + {value: 0x0000, lo: 0x02}, + {value: 0x8100, lo: 0x9b, hi: 0x9d}, + {value: 0x8200, lo: 0x9e, hi: 0xa3}, + // Block 0x65, offset 0x1fa + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x90, hi: 0x90}, + // Block 0x66, offset 0x1fc + {value: 0x0000, lo: 0x02}, + {value: 0x8100, lo: 0x99, hi: 0x99}, + {value: 0x8200, lo: 0xb2, hi: 0xb4}, + // Block 0x67, offset 0x1ff + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0xbc, hi: 0xbd}, + // Block 0x68, offset 0x201 + {value: 0x0000, lo: 0x03}, + {value: 0x8132, lo: 0xa0, hi: 0xa6}, + {value: 0x812d, lo: 0xa7, hi: 0xad}, + {value: 0x8132, lo: 0xae, hi: 0xaf}, + // Block 0x69, offset 0x205 + {value: 0x0000, lo: 0x04}, + {value: 0x8100, lo: 0x89, hi: 0x8c}, + {value: 0x8100, lo: 0xb0, hi: 0xb2}, + {value: 0x8100, lo: 0xb4, hi: 0xb4}, + {value: 0x8100, lo: 0xb6, hi: 0xbf}, + // Block 0x6a, offset 0x20a + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x81, hi: 0x8c}, + // Block 0x6b, offset 0x20c + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0xb5, hi: 0xba}, + // Block 0x6c, offset 0x20e + {value: 0x0000, lo: 0x04}, + {value: 0x4a9f, lo: 0x9e, hi: 0x9f}, + {value: 0x4a9f, lo: 0xa3, hi: 0xa3}, + {value: 0x4a9f, lo: 0xa5, hi: 0xa6}, + {value: 0x4a9f, lo: 0xaa, hi: 0xaf}, + // Block 0x6d, offset 0x213 + {value: 0x0000, lo: 0x05}, + {value: 0x4a9f, lo: 0x82, hi: 0x87}, + {value: 0x4a9f, lo: 0x8a, hi: 0x8f}, + {value: 0x4a9f, lo: 0x92, hi: 0x97}, + {value: 0x4a9f, lo: 0x9a, hi: 0x9c}, + {value: 0x8100, lo: 0xa3, hi: 0xa3}, + // Block 0x6e, offset 0x219 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + // Block 0x6f, offset 0x21b + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xa0, hi: 0xa0}, + // Block 0x70, offset 0x21d + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb6, hi: 0xba}, + // Block 0x71, offset 0x21f + {value: 0x002c, lo: 0x05}, + {value: 0x812d, lo: 0x8d, hi: 0x8d}, + {value: 0x8132, lo: 0x8f, hi: 0x8f}, + {value: 0x8132, lo: 0xb8, hi: 0xb8}, + {value: 0x8101, lo: 0xb9, hi: 0xba}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x72, offset 0x225 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0xa5, hi: 0xa5}, + {value: 0x812d, lo: 0xa6, hi: 0xa6}, + // Block 0x73, offset 0x228 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xa4, hi: 0xa7}, + // Block 0x74, offset 0x22a + {value: 0x0000, lo: 0x05}, + {value: 0x812d, lo: 0x86, hi: 0x87}, + {value: 0x8132, lo: 0x88, hi: 0x8a}, + {value: 0x812d, lo: 0x8b, hi: 0x8b}, + {value: 0x8132, lo: 0x8c, hi: 0x8c}, + {value: 0x812d, lo: 0x8d, hi: 0x90}, + // Block 0x75, offset 0x230 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x86, hi: 0x86}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x76, offset 0x233 + {value: 0x17fe, lo: 0x07}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x4238, lo: 0x9a, hi: 0x9a}, + {value: 0xa000, lo: 0x9b, hi: 0x9b}, + {value: 0x4242, lo: 0x9c, hi: 0x9c}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x424c, lo: 0xab, hi: 0xab}, + {value: 0x8104, lo: 0xb9, hi: 0xba}, + // Block 0x77, offset 0x23b + {value: 0x0000, lo: 0x06}, + {value: 0x8132, lo: 0x80, hi: 0x82}, + {value: 0x9900, lo: 0xa7, hi: 0xa7}, + {value: 0x2d7e, lo: 0xae, hi: 0xae}, + {value: 0x2d88, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb1, hi: 0xb2}, + {value: 0x8104, lo: 0xb3, hi: 0xb4}, + // Block 0x78, offset 0x242 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x80, hi: 0x80}, + {value: 0x8102, lo: 0x8a, hi: 0x8a}, + // Block 0x79, offset 0x245 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xb5, hi: 0xb5}, + {value: 0x8102, lo: 0xb6, hi: 0xb6}, + // Block 0x7a, offset 0x248 + {value: 0x0002, lo: 0x01}, + {value: 0x8102, lo: 0xa9, hi: 0xaa}, + // Block 0x7b, offset 0x24a + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xbb, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x7c, offset 0x24d + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2d92, lo: 0x8b, hi: 0x8b}, + {value: 0x2d9c, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x8132, lo: 0xa6, hi: 0xac}, + {value: 0x8132, lo: 0xb0, hi: 0xb4}, + // Block 0x7d, offset 0x255 + {value: 0x0000, lo: 0x03}, + {value: 0x8104, lo: 0x82, hi: 0x82}, + {value: 0x8102, lo: 0x86, hi: 0x86}, + {value: 0x8132, lo: 0x9e, hi: 0x9e}, + // Block 0x7e, offset 0x259 + {value: 0x6b5a, lo: 0x06}, + {value: 0x9900, lo: 0xb0, hi: 0xb0}, + {value: 0xa000, lo: 0xb9, hi: 0xb9}, + {value: 0x9900, lo: 0xba, hi: 0xba}, + {value: 0x2db0, lo: 0xbb, hi: 0xbb}, + {value: 0x2da6, lo: 0xbc, hi: 0xbd}, + {value: 0x2dba, lo: 0xbe, hi: 0xbe}, + // Block 0x7f, offset 0x260 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x82, hi: 0x82}, + {value: 0x8102, lo: 0x83, hi: 0x83}, + // Block 0x80, offset 0x263 + {value: 0x0000, lo: 0x05}, + {value: 0x9900, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb8, hi: 0xb9}, + {value: 0x2dc4, lo: 0xba, hi: 0xba}, + {value: 0x2dce, lo: 0xbb, hi: 0xbb}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x81, offset 0x269 + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0x80, hi: 0x80}, + // Block 0x82, offset 0x26b + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xb6, hi: 0xb6}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + // Block 0x83, offset 0x26e + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xab, hi: 0xab}, + // Block 0x84, offset 0x270 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xb9, hi: 0xb9}, + {value: 0x8102, lo: 0xba, hi: 0xba}, + // Block 0x85, offset 0x273 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xb4, hi: 0xb4}, + // Block 0x86, offset 0x275 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x87, hi: 0x87}, + // Block 0x87, offset 0x277 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x99, hi: 0x99}, + // Block 0x88, offset 0x279 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0x82, hi: 0x82}, + {value: 0x8104, lo: 0x84, hi: 0x85}, + // Block 0x89, offset 0x27c + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x97, hi: 0x97}, + // Block 0x8a, offset 0x27e + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0xb0, hi: 0xb4}, + // Block 0x8b, offset 0x280 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb0, hi: 0xb6}, + // Block 0x8c, offset 0x282 + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0x9e, hi: 0x9e}, + // Block 0x8d, offset 0x284 + {value: 0x0000, lo: 0x0c}, + {value: 0x45cc, lo: 0x9e, hi: 0x9e}, + {value: 0x45d6, lo: 0x9f, hi: 0x9f}, + {value: 0x460a, lo: 0xa0, hi: 0xa0}, + {value: 0x4618, lo: 0xa1, hi: 0xa1}, + {value: 0x4626, lo: 0xa2, hi: 0xa2}, + {value: 0x4634, lo: 0xa3, hi: 0xa3}, + {value: 0x4642, lo: 0xa4, hi: 0xa4}, + {value: 0x812b, lo: 0xa5, hi: 0xa6}, + {value: 0x8101, lo: 0xa7, hi: 0xa9}, + {value: 0x8130, lo: 0xad, hi: 0xad}, + {value: 0x812b, lo: 0xae, hi: 0xb2}, + {value: 0x812d, lo: 0xbb, hi: 0xbf}, + // Block 0x8e, offset 0x291 + {value: 0x0000, lo: 0x09}, + {value: 0x812d, lo: 0x80, hi: 0x82}, + {value: 0x8132, lo: 0x85, hi: 0x89}, + {value: 0x812d, lo: 0x8a, hi: 0x8b}, + {value: 0x8132, lo: 0xaa, hi: 0xad}, + {value: 0x45e0, lo: 0xbb, hi: 0xbb}, + {value: 0x45ea, lo: 0xbc, hi: 0xbc}, + {value: 0x4650, lo: 0xbd, hi: 0xbd}, + {value: 0x466c, lo: 0xbe, hi: 0xbe}, + {value: 0x465e, lo: 0xbf, hi: 0xbf}, + // Block 0x8f, offset 0x29b + {value: 0x0000, lo: 0x01}, + {value: 0x467a, lo: 0x80, hi: 0x80}, + // Block 0x90, offset 0x29d + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x82, hi: 0x84}, + // Block 0x91, offset 0x29f + {value: 0x0000, lo: 0x05}, + {value: 0x8132, lo: 0x80, hi: 0x86}, + {value: 0x8132, lo: 0x88, hi: 0x98}, + {value: 0x8132, lo: 0x9b, hi: 0xa1}, + {value: 0x8132, lo: 0xa3, hi: 0xa4}, + {value: 0x8132, lo: 0xa6, hi: 0xaa}, + // Block 0x92, offset 0x2a5 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x90, hi: 0x96}, + // Block 0x93, offset 0x2a7 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x84, hi: 0x89}, + {value: 0x8102, lo: 0x8a, hi: 0x8a}, + // Block 0x94, offset 0x2aa + {value: 0x0000, lo: 0x01}, + {value: 0x8100, lo: 0x93, hi: 0x93}, +} + +// lookup returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfkcTrie) lookup(s []byte) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfkcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfkcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfkcTrie) lookupUnsafe(s []byte) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfkcValues[c0] + } + i := nfkcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// lookupString returns the trie value for the first UTF-8 encoding in s and +// the width in bytes of this encoding. The size will be 0 if s does not +// hold enough bytes to complete the encoding. len(s) must be greater than 0. +func (t *nfkcTrie) lookupString(s string) (v uint16, sz int) { + c0 := s[0] + switch { + case c0 < 0x80: // is ASCII + return nfkcValues[c0], 1 + case c0 < 0xC2: + return 0, 1 // Illegal UTF-8: not a starter, not ASCII. + case c0 < 0xE0: // 2-byte UTF-8 + if len(s) < 2 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c1), 2 + case c0 < 0xF0: // 3-byte UTF-8 + if len(s) < 3 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c2), 3 + case c0 < 0xF8: // 4-byte UTF-8 + if len(s) < 4 { + return 0, 0 + } + i := nfkcIndex[c0] + c1 := s[1] + if c1 < 0x80 || 0xC0 <= c1 { + return 0, 1 // Illegal UTF-8: not a continuation byte. + } + o := uint32(i)<<6 + uint32(c1) + i = nfkcIndex[o] + c2 := s[2] + if c2 < 0x80 || 0xC0 <= c2 { + return 0, 2 // Illegal UTF-8: not a continuation byte. + } + o = uint32(i)<<6 + uint32(c2) + i = nfkcIndex[o] + c3 := s[3] + if c3 < 0x80 || 0xC0 <= c3 { + return 0, 3 // Illegal UTF-8: not a continuation byte. + } + return t.lookupValue(uint32(i), c3), 4 + } + // Illegal rune + return 0, 1 +} + +// lookupStringUnsafe returns the trie value for the first UTF-8 encoding in s. +// s must start with a full and valid UTF-8 encoded rune. +func (t *nfkcTrie) lookupStringUnsafe(s string) uint16 { + c0 := s[0] + if c0 < 0x80 { // is ASCII + return nfkcValues[c0] + } + i := nfkcIndex[c0] + if c0 < 0xE0 { // 2-byte UTF-8 + return t.lookupValue(uint32(i), s[1]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[1])] + if c0 < 0xF0 { // 3-byte UTF-8 + return t.lookupValue(uint32(i), s[2]) + } + i = nfkcIndex[uint32(i)<<6+uint32(s[2])] + if c0 < 0xF8 { // 4-byte UTF-8 + return t.lookupValue(uint32(i), s[3]) + } + return 0 +} + +// nfkcTrie. Total size: 17248 bytes (16.84 KiB). Checksum: 4fb368372b6b1b27. +type nfkcTrie struct{} + +func newNfkcTrie(i int) *nfkcTrie { + return &nfkcTrie{} +} + +// lookupValue determines the type of block n and looks up the value for b. +func (t *nfkcTrie) lookupValue(n uint32, b byte) uint16 { + switch { + case n < 92: + return uint16(nfkcValues[n<<6+uint32(b)]) + default: + n -= 92 + return uint16(nfkcSparse.lookup(n, b)) + } +} + +// nfkcValues: 94 blocks, 6016 entries, 12032 bytes +// The third block is the zero block. +var nfkcValues = [6016]uint16{ + // Block 0x0, offset 0x0 + 0x3c: 0xa000, 0x3d: 0xa000, 0x3e: 0xa000, + // Block 0x1, offset 0x40 + 0x41: 0xa000, 0x42: 0xa000, 0x43: 0xa000, 0x44: 0xa000, 0x45: 0xa000, + 0x46: 0xa000, 0x47: 0xa000, 0x48: 0xa000, 0x49: 0xa000, 0x4a: 0xa000, 0x4b: 0xa000, + 0x4c: 0xa000, 0x4d: 0xa000, 0x4e: 0xa000, 0x4f: 0xa000, 0x50: 0xa000, + 0x52: 0xa000, 0x53: 0xa000, 0x54: 0xa000, 0x55: 0xa000, 0x56: 0xa000, 0x57: 0xa000, + 0x58: 0xa000, 0x59: 0xa000, 0x5a: 0xa000, + 0x61: 0xa000, 0x62: 0xa000, 0x63: 0xa000, + 0x64: 0xa000, 0x65: 0xa000, 0x66: 0xa000, 0x67: 0xa000, 0x68: 0xa000, 0x69: 0xa000, + 0x6a: 0xa000, 0x6b: 0xa000, 0x6c: 0xa000, 0x6d: 0xa000, 0x6e: 0xa000, 0x6f: 0xa000, + 0x70: 0xa000, 0x72: 0xa000, 0x73: 0xa000, 0x74: 0xa000, 0x75: 0xa000, + 0x76: 0xa000, 0x77: 0xa000, 0x78: 0xa000, 0x79: 0xa000, 0x7a: 0xa000, + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc0: 0x2f6f, 0xc1: 0x2f74, 0xc2: 0x4688, 0xc3: 0x2f79, 0xc4: 0x4697, 0xc5: 0x469c, + 0xc6: 0xa000, 0xc7: 0x46a6, 0xc8: 0x2fe2, 0xc9: 0x2fe7, 0xca: 0x46ab, 0xcb: 0x2ffb, + 0xcc: 0x306e, 0xcd: 0x3073, 0xce: 0x3078, 0xcf: 0x46bf, 0xd1: 0x3104, + 0xd2: 0x3127, 0xd3: 0x312c, 0xd4: 0x46c9, 0xd5: 0x46ce, 0xd6: 0x46dd, + 0xd8: 0xa000, 0xd9: 0x31b3, 0xda: 0x31b8, 0xdb: 0x31bd, 0xdc: 0x470f, 0xdd: 0x3235, + 0xe0: 0x327b, 0xe1: 0x3280, 0xe2: 0x4719, 0xe3: 0x3285, + 0xe4: 0x4728, 0xe5: 0x472d, 0xe6: 0xa000, 0xe7: 0x4737, 0xe8: 0x32ee, 0xe9: 0x32f3, + 0xea: 0x473c, 0xeb: 0x3307, 0xec: 0x337f, 0xed: 0x3384, 0xee: 0x3389, 0xef: 0x4750, + 0xf1: 0x3415, 0xf2: 0x3438, 0xf3: 0x343d, 0xf4: 0x475a, 0xf5: 0x475f, + 0xf6: 0x476e, 0xf8: 0xa000, 0xf9: 0x34c9, 0xfa: 0x34ce, 0xfb: 0x34d3, + 0xfc: 0x47a0, 0xfd: 0x3550, 0xff: 0x3569, + // Block 0x4, offset 0x100 + 0x100: 0x2f7e, 0x101: 0x328a, 0x102: 0x468d, 0x103: 0x471e, 0x104: 0x2f9c, 0x105: 0x32a8, + 0x106: 0x2fb0, 0x107: 0x32bc, 0x108: 0x2fb5, 0x109: 0x32c1, 0x10a: 0x2fba, 0x10b: 0x32c6, + 0x10c: 0x2fbf, 0x10d: 0x32cb, 0x10e: 0x2fc9, 0x10f: 0x32d5, + 0x112: 0x46b0, 0x113: 0x4741, 0x114: 0x2ff1, 0x115: 0x32fd, 0x116: 0x2ff6, 0x117: 0x3302, + 0x118: 0x3014, 0x119: 0x3320, 0x11a: 0x3005, 0x11b: 0x3311, 0x11c: 0x302d, 0x11d: 0x3339, + 0x11e: 0x3037, 0x11f: 0x3343, 0x120: 0x303c, 0x121: 0x3348, 0x122: 0x3046, 0x123: 0x3352, + 0x124: 0x304b, 0x125: 0x3357, 0x128: 0x307d, 0x129: 0x338e, + 0x12a: 0x3082, 0x12b: 0x3393, 0x12c: 0x3087, 0x12d: 0x3398, 0x12e: 0x30aa, 0x12f: 0x33b6, + 0x130: 0x308c, 0x132: 0x195d, 0x133: 0x19e7, 0x134: 0x30b4, 0x135: 0x33c0, + 0x136: 0x30c8, 0x137: 0x33d9, 0x139: 0x30d2, 0x13a: 0x33e3, 0x13b: 0x30dc, + 0x13c: 0x33ed, 0x13d: 0x30d7, 0x13e: 0x33e8, 0x13f: 0x1bac, + // Block 0x5, offset 0x140 + 0x140: 0x1c34, 0x143: 0x30ff, 0x144: 0x3410, 0x145: 0x3118, + 0x146: 0x3429, 0x147: 0x310e, 0x148: 0x341f, 0x149: 0x1c5c, + 0x14c: 0x46d3, 0x14d: 0x4764, 0x14e: 0x3131, 0x14f: 0x3442, 0x150: 0x313b, 0x151: 0x344c, + 0x154: 0x3159, 0x155: 0x346a, 0x156: 0x3172, 0x157: 0x3483, + 0x158: 0x3163, 0x159: 0x3474, 0x15a: 0x46f6, 0x15b: 0x4787, 0x15c: 0x317c, 0x15d: 0x348d, + 0x15e: 0x318b, 0x15f: 0x349c, 0x160: 0x46fb, 0x161: 0x478c, 0x162: 0x31a4, 0x163: 0x34ba, + 0x164: 0x3195, 0x165: 0x34ab, 0x168: 0x4705, 0x169: 0x4796, + 0x16a: 0x470a, 0x16b: 0x479b, 0x16c: 0x31c2, 0x16d: 0x34d8, 0x16e: 0x31cc, 0x16f: 0x34e2, + 0x170: 0x31d1, 0x171: 0x34e7, 0x172: 0x31ef, 0x173: 0x3505, 0x174: 0x3212, 0x175: 0x3528, + 0x176: 0x323a, 0x177: 0x3555, 0x178: 0x324e, 0x179: 0x325d, 0x17a: 0x357d, 0x17b: 0x3267, + 0x17c: 0x3587, 0x17d: 0x326c, 0x17e: 0x358c, 0x17f: 0x00a7, + // Block 0x6, offset 0x180 + 0x184: 0x2dee, 0x185: 0x2df4, + 0x186: 0x2dfa, 0x187: 0x1972, 0x188: 0x1975, 0x189: 0x1a08, 0x18a: 0x1987, 0x18b: 0x198a, + 0x18c: 0x1a3e, 0x18d: 0x2f88, 0x18e: 0x3294, 0x18f: 0x3096, 0x190: 0x33a2, 0x191: 0x3140, + 0x192: 0x3451, 0x193: 0x31d6, 0x194: 0x34ec, 0x195: 0x39cf, 0x196: 0x3b5e, 0x197: 0x39c8, + 0x198: 0x3b57, 0x199: 0x39d6, 0x19a: 0x3b65, 0x19b: 0x39c1, 0x19c: 0x3b50, + 0x19e: 0x38b0, 0x19f: 0x3a3f, 0x1a0: 0x38a9, 0x1a1: 0x3a38, 0x1a2: 0x35b3, 0x1a3: 0x35c5, + 0x1a6: 0x3041, 0x1a7: 0x334d, 0x1a8: 0x30be, 0x1a9: 0x33cf, + 0x1aa: 0x46ec, 0x1ab: 0x477d, 0x1ac: 0x3990, 0x1ad: 0x3b1f, 0x1ae: 0x35d7, 0x1af: 0x35dd, + 0x1b0: 0x33c5, 0x1b1: 0x1942, 0x1b2: 0x1945, 0x1b3: 0x19cf, 0x1b4: 0x3028, 0x1b5: 0x3334, + 0x1b8: 0x30fa, 0x1b9: 0x340b, 0x1ba: 0x38b7, 0x1bb: 0x3a46, + 0x1bc: 0x35ad, 0x1bd: 0x35bf, 0x1be: 0x35b9, 0x1bf: 0x35cb, + // Block 0x7, offset 0x1c0 + 0x1c0: 0x2f8d, 0x1c1: 0x3299, 0x1c2: 0x2f92, 0x1c3: 0x329e, 0x1c4: 0x300a, 0x1c5: 0x3316, + 0x1c6: 0x300f, 0x1c7: 0x331b, 0x1c8: 0x309b, 0x1c9: 0x33a7, 0x1ca: 0x30a0, 0x1cb: 0x33ac, + 0x1cc: 0x3145, 0x1cd: 0x3456, 0x1ce: 0x314a, 0x1cf: 0x345b, 0x1d0: 0x3168, 0x1d1: 0x3479, + 0x1d2: 0x316d, 0x1d3: 0x347e, 0x1d4: 0x31db, 0x1d5: 0x34f1, 0x1d6: 0x31e0, 0x1d7: 0x34f6, + 0x1d8: 0x3186, 0x1d9: 0x3497, 0x1da: 0x319f, 0x1db: 0x34b5, + 0x1de: 0x305a, 0x1df: 0x3366, + 0x1e6: 0x4692, 0x1e7: 0x4723, 0x1e8: 0x46ba, 0x1e9: 0x474b, + 0x1ea: 0x395f, 0x1eb: 0x3aee, 0x1ec: 0x393c, 0x1ed: 0x3acb, 0x1ee: 0x46d8, 0x1ef: 0x4769, + 0x1f0: 0x3958, 0x1f1: 0x3ae7, 0x1f2: 0x3244, 0x1f3: 0x355f, + // Block 0x8, offset 0x200 + 0x200: 0x9932, 0x201: 0x9932, 0x202: 0x9932, 0x203: 0x9932, 0x204: 0x9932, 0x205: 0x8132, + 0x206: 0x9932, 0x207: 0x9932, 0x208: 0x9932, 0x209: 0x9932, 0x20a: 0x9932, 0x20b: 0x9932, + 0x20c: 0x9932, 0x20d: 0x8132, 0x20e: 0x8132, 0x20f: 0x9932, 0x210: 0x8132, 0x211: 0x9932, + 0x212: 0x8132, 0x213: 0x9932, 0x214: 0x9932, 0x215: 0x8133, 0x216: 0x812d, 0x217: 0x812d, + 0x218: 0x812d, 0x219: 0x812d, 0x21a: 0x8133, 0x21b: 0x992b, 0x21c: 0x812d, 0x21d: 0x812d, + 0x21e: 0x812d, 0x21f: 0x812d, 0x220: 0x812d, 0x221: 0x8129, 0x222: 0x8129, 0x223: 0x992d, + 0x224: 0x992d, 0x225: 0x992d, 0x226: 0x992d, 0x227: 0x9929, 0x228: 0x9929, 0x229: 0x812d, + 0x22a: 0x812d, 0x22b: 0x812d, 0x22c: 0x812d, 0x22d: 0x992d, 0x22e: 0x992d, 0x22f: 0x812d, + 0x230: 0x992d, 0x231: 0x992d, 0x232: 0x812d, 0x233: 0x812d, 0x234: 0x8101, 0x235: 0x8101, + 0x236: 0x8101, 0x237: 0x8101, 0x238: 0x9901, 0x239: 0x812d, 0x23a: 0x812d, 0x23b: 0x812d, + 0x23c: 0x812d, 0x23d: 0x8132, 0x23e: 0x8132, 0x23f: 0x8132, + // Block 0x9, offset 0x240 + 0x240: 0x49ae, 0x241: 0x49b3, 0x242: 0x9932, 0x243: 0x49b8, 0x244: 0x4a71, 0x245: 0x9936, + 0x246: 0x8132, 0x247: 0x812d, 0x248: 0x812d, 0x249: 0x812d, 0x24a: 0x8132, 0x24b: 0x8132, + 0x24c: 0x8132, 0x24d: 0x812d, 0x24e: 0x812d, 0x250: 0x8132, 0x251: 0x8132, + 0x252: 0x8132, 0x253: 0x812d, 0x254: 0x812d, 0x255: 0x812d, 0x256: 0x812d, 0x257: 0x8132, + 0x258: 0x8133, 0x259: 0x812d, 0x25a: 0x812d, 0x25b: 0x8132, 0x25c: 0x8134, 0x25d: 0x8135, + 0x25e: 0x8135, 0x25f: 0x8134, 0x260: 0x8135, 0x261: 0x8135, 0x262: 0x8134, 0x263: 0x8132, + 0x264: 0x8132, 0x265: 0x8132, 0x266: 0x8132, 0x267: 0x8132, 0x268: 0x8132, 0x269: 0x8132, + 0x26a: 0x8132, 0x26b: 0x8132, 0x26c: 0x8132, 0x26d: 0x8132, 0x26e: 0x8132, 0x26f: 0x8132, + 0x274: 0x0170, + 0x27a: 0x42a5, + 0x27e: 0x0037, + // Block 0xa, offset 0x280 + 0x284: 0x425a, 0x285: 0x447b, + 0x286: 0x35e9, 0x287: 0x00ce, 0x288: 0x3607, 0x289: 0x3613, 0x28a: 0x3625, + 0x28c: 0x3643, 0x28e: 0x3655, 0x28f: 0x3673, 0x290: 0x3e08, 0x291: 0xa000, + 0x295: 0xa000, 0x297: 0xa000, + 0x299: 0xa000, + 0x29f: 0xa000, 0x2a1: 0xa000, + 0x2a5: 0xa000, 0x2a9: 0xa000, + 0x2aa: 0x3637, 0x2ab: 0x3667, 0x2ac: 0x47fe, 0x2ad: 0x3697, 0x2ae: 0x4828, 0x2af: 0x36a9, + 0x2b0: 0x3e70, 0x2b1: 0xa000, 0x2b5: 0xa000, + 0x2b7: 0xa000, 0x2b9: 0xa000, + 0x2bf: 0xa000, + // Block 0xb, offset 0x2c0 + 0x2c1: 0xa000, 0x2c5: 0xa000, + 0x2c9: 0xa000, 0x2ca: 0x4840, 0x2cb: 0x485e, + 0x2cc: 0x36c7, 0x2cd: 0x36df, 0x2ce: 0x4876, 0x2d0: 0x01be, 0x2d1: 0x01d0, + 0x2d2: 0x01ac, 0x2d3: 0x430c, 0x2d4: 0x4312, 0x2d5: 0x01fa, 0x2d6: 0x01e8, + 0x2f0: 0x01d6, 0x2f1: 0x01eb, 0x2f2: 0x01ee, 0x2f4: 0x0188, 0x2f5: 0x01c7, + 0x2f9: 0x01a6, + // Block 0xc, offset 0x300 + 0x300: 0x3721, 0x301: 0x372d, 0x303: 0x371b, + 0x306: 0xa000, 0x307: 0x3709, + 0x30c: 0x375d, 0x30d: 0x3745, 0x30e: 0x376f, 0x310: 0xa000, + 0x313: 0xa000, 0x315: 0xa000, 0x316: 0xa000, 0x317: 0xa000, + 0x318: 0xa000, 0x319: 0x3751, 0x31a: 0xa000, + 0x31e: 0xa000, 0x323: 0xa000, + 0x327: 0xa000, + 0x32b: 0xa000, 0x32d: 0xa000, + 0x330: 0xa000, 0x333: 0xa000, 0x335: 0xa000, + 0x336: 0xa000, 0x337: 0xa000, 0x338: 0xa000, 0x339: 0x37d5, 0x33a: 0xa000, + 0x33e: 0xa000, + // Block 0xd, offset 0x340 + 0x341: 0x3733, 0x342: 0x37b7, + 0x350: 0x370f, 0x351: 0x3793, + 0x352: 0x3715, 0x353: 0x3799, 0x356: 0x3727, 0x357: 0x37ab, + 0x358: 0xa000, 0x359: 0xa000, 0x35a: 0x3829, 0x35b: 0x382f, 0x35c: 0x3739, 0x35d: 0x37bd, + 0x35e: 0x373f, 0x35f: 0x37c3, 0x362: 0x374b, 0x363: 0x37cf, + 0x364: 0x3757, 0x365: 0x37db, 0x366: 0x3763, 0x367: 0x37e7, 0x368: 0xa000, 0x369: 0xa000, + 0x36a: 0x3835, 0x36b: 0x383b, 0x36c: 0x378d, 0x36d: 0x3811, 0x36e: 0x3769, 0x36f: 0x37ed, + 0x370: 0x3775, 0x371: 0x37f9, 0x372: 0x377b, 0x373: 0x37ff, 0x374: 0x3781, 0x375: 0x3805, + 0x378: 0x3787, 0x379: 0x380b, + // Block 0xe, offset 0x380 + 0x387: 0x1d61, + 0x391: 0x812d, + 0x392: 0x8132, 0x393: 0x8132, 0x394: 0x8132, 0x395: 0x8132, 0x396: 0x812d, 0x397: 0x8132, + 0x398: 0x8132, 0x399: 0x8132, 0x39a: 0x812e, 0x39b: 0x812d, 0x39c: 0x8132, 0x39d: 0x8132, + 0x39e: 0x8132, 0x39f: 0x8132, 0x3a0: 0x8132, 0x3a1: 0x8132, 0x3a2: 0x812d, 0x3a3: 0x812d, + 0x3a4: 0x812d, 0x3a5: 0x812d, 0x3a6: 0x812d, 0x3a7: 0x812d, 0x3a8: 0x8132, 0x3a9: 0x8132, + 0x3aa: 0x812d, 0x3ab: 0x8132, 0x3ac: 0x8132, 0x3ad: 0x812e, 0x3ae: 0x8131, 0x3af: 0x8132, + 0x3b0: 0x8105, 0x3b1: 0x8106, 0x3b2: 0x8107, 0x3b3: 0x8108, 0x3b4: 0x8109, 0x3b5: 0x810a, + 0x3b6: 0x810b, 0x3b7: 0x810c, 0x3b8: 0x810d, 0x3b9: 0x810e, 0x3ba: 0x810e, 0x3bb: 0x810f, + 0x3bc: 0x8110, 0x3bd: 0x8111, 0x3bf: 0x8112, + // Block 0xf, offset 0x3c0 + 0x3c8: 0xa000, 0x3ca: 0xa000, 0x3cb: 0x8116, + 0x3cc: 0x8117, 0x3cd: 0x8118, 0x3ce: 0x8119, 0x3cf: 0x811a, 0x3d0: 0x811b, 0x3d1: 0x811c, + 0x3d2: 0x811d, 0x3d3: 0x9932, 0x3d4: 0x9932, 0x3d5: 0x992d, 0x3d6: 0x812d, 0x3d7: 0x8132, + 0x3d8: 0x8132, 0x3d9: 0x8132, 0x3da: 0x8132, 0x3db: 0x8132, 0x3dc: 0x812d, 0x3dd: 0x8132, + 0x3de: 0x8132, 0x3df: 0x812d, + 0x3f0: 0x811e, 0x3f5: 0x1d84, + 0x3f6: 0x2013, 0x3f7: 0x204f, 0x3f8: 0x204a, + // Block 0x10, offset 0x400 + 0x413: 0x812d, 0x414: 0x8132, 0x415: 0x8132, 0x416: 0x8132, 0x417: 0x8132, + 0x418: 0x8132, 0x419: 0x8132, 0x41a: 0x8132, 0x41b: 0x8132, 0x41c: 0x8132, 0x41d: 0x8132, + 0x41e: 0x8132, 0x41f: 0x8132, 0x420: 0x8132, 0x421: 0x8132, 0x423: 0x812d, + 0x424: 0x8132, 0x425: 0x8132, 0x426: 0x812d, 0x427: 0x8132, 0x428: 0x8132, 0x429: 0x812d, + 0x42a: 0x8132, 0x42b: 0x8132, 0x42c: 0x8132, 0x42d: 0x812d, 0x42e: 0x812d, 0x42f: 0x812d, + 0x430: 0x8116, 0x431: 0x8117, 0x432: 0x8118, 0x433: 0x8132, 0x434: 0x8132, 0x435: 0x8132, + 0x436: 0x812d, 0x437: 0x8132, 0x438: 0x8132, 0x439: 0x812d, 0x43a: 0x812d, 0x43b: 0x8132, + 0x43c: 0x8132, 0x43d: 0x8132, 0x43e: 0x8132, 0x43f: 0x8132, + // Block 0x11, offset 0x440 + 0x445: 0xa000, + 0x446: 0x2d26, 0x447: 0xa000, 0x448: 0x2d2e, 0x449: 0xa000, 0x44a: 0x2d36, 0x44b: 0xa000, + 0x44c: 0x2d3e, 0x44d: 0xa000, 0x44e: 0x2d46, 0x451: 0xa000, + 0x452: 0x2d4e, + 0x474: 0x8102, 0x475: 0x9900, + 0x47a: 0xa000, 0x47b: 0x2d56, + 0x47c: 0xa000, 0x47d: 0x2d5e, 0x47e: 0xa000, 0x47f: 0xa000, + // Block 0x12, offset 0x480 + 0x480: 0x0069, 0x481: 0x006b, 0x482: 0x006f, 0x483: 0x0083, 0x484: 0x00f5, 0x485: 0x00f8, + 0x486: 0x0413, 0x487: 0x0085, 0x488: 0x0089, 0x489: 0x008b, 0x48a: 0x0104, 0x48b: 0x0107, + 0x48c: 0x010a, 0x48d: 0x008f, 0x48f: 0x0097, 0x490: 0x009b, 0x491: 0x00e0, + 0x492: 0x009f, 0x493: 0x00fe, 0x494: 0x0417, 0x495: 0x041b, 0x496: 0x00a1, 0x497: 0x00a9, + 0x498: 0x00ab, 0x499: 0x0423, 0x49a: 0x012b, 0x49b: 0x00ad, 0x49c: 0x0427, 0x49d: 0x01be, + 0x49e: 0x01c1, 0x49f: 0x01c4, 0x4a0: 0x01fa, 0x4a1: 0x01fd, 0x4a2: 0x0093, 0x4a3: 0x00a5, + 0x4a4: 0x00ab, 0x4a5: 0x00ad, 0x4a6: 0x01be, 0x4a7: 0x01c1, 0x4a8: 0x01eb, 0x4a9: 0x01fa, + 0x4aa: 0x01fd, + 0x4b8: 0x020c, + // Block 0x13, offset 0x4c0 + 0x4db: 0x00fb, 0x4dc: 0x0087, 0x4dd: 0x0101, + 0x4de: 0x00d4, 0x4df: 0x010a, 0x4e0: 0x008d, 0x4e1: 0x010d, 0x4e2: 0x0110, 0x4e3: 0x0116, + 0x4e4: 0x011c, 0x4e5: 0x011f, 0x4e6: 0x0122, 0x4e7: 0x042b, 0x4e8: 0x016a, 0x4e9: 0x0128, + 0x4ea: 0x042f, 0x4eb: 0x016d, 0x4ec: 0x0131, 0x4ed: 0x012e, 0x4ee: 0x0134, 0x4ef: 0x0137, + 0x4f0: 0x013a, 0x4f1: 0x013d, 0x4f2: 0x0140, 0x4f3: 0x014c, 0x4f4: 0x014f, 0x4f5: 0x00ec, + 0x4f6: 0x0152, 0x4f7: 0x0155, 0x4f8: 0x041f, 0x4f9: 0x0158, 0x4fa: 0x015b, 0x4fb: 0x00b5, + 0x4fc: 0x015e, 0x4fd: 0x0161, 0x4fe: 0x0164, 0x4ff: 0x01d0, + // Block 0x14, offset 0x500 + 0x500: 0x8132, 0x501: 0x8132, 0x502: 0x812d, 0x503: 0x8132, 0x504: 0x8132, 0x505: 0x8132, + 0x506: 0x8132, 0x507: 0x8132, 0x508: 0x8132, 0x509: 0x8132, 0x50a: 0x812d, 0x50b: 0x8132, + 0x50c: 0x8132, 0x50d: 0x8135, 0x50e: 0x812a, 0x50f: 0x812d, 0x510: 0x8129, 0x511: 0x8132, + 0x512: 0x8132, 0x513: 0x8132, 0x514: 0x8132, 0x515: 0x8132, 0x516: 0x8132, 0x517: 0x8132, + 0x518: 0x8132, 0x519: 0x8132, 0x51a: 0x8132, 0x51b: 0x8132, 0x51c: 0x8132, 0x51d: 0x8132, + 0x51e: 0x8132, 0x51f: 0x8132, 0x520: 0x8132, 0x521: 0x8132, 0x522: 0x8132, 0x523: 0x8132, + 0x524: 0x8132, 0x525: 0x8132, 0x526: 0x8132, 0x527: 0x8132, 0x528: 0x8132, 0x529: 0x8132, + 0x52a: 0x8132, 0x52b: 0x8132, 0x52c: 0x8132, 0x52d: 0x8132, 0x52e: 0x8132, 0x52f: 0x8132, + 0x530: 0x8132, 0x531: 0x8132, 0x532: 0x8132, 0x533: 0x8132, 0x534: 0x8132, 0x535: 0x8132, + 0x536: 0x8133, 0x537: 0x8131, 0x538: 0x8131, 0x539: 0x812d, 0x53b: 0x8132, + 0x53c: 0x8134, 0x53d: 0x812d, 0x53e: 0x8132, 0x53f: 0x812d, + // Block 0x15, offset 0x540 + 0x540: 0x2f97, 0x541: 0x32a3, 0x542: 0x2fa1, 0x543: 0x32ad, 0x544: 0x2fa6, 0x545: 0x32b2, + 0x546: 0x2fab, 0x547: 0x32b7, 0x548: 0x38cc, 0x549: 0x3a5b, 0x54a: 0x2fc4, 0x54b: 0x32d0, + 0x54c: 0x2fce, 0x54d: 0x32da, 0x54e: 0x2fdd, 0x54f: 0x32e9, 0x550: 0x2fd3, 0x551: 0x32df, + 0x552: 0x2fd8, 0x553: 0x32e4, 0x554: 0x38ef, 0x555: 0x3a7e, 0x556: 0x38f6, 0x557: 0x3a85, + 0x558: 0x3019, 0x559: 0x3325, 0x55a: 0x301e, 0x55b: 0x332a, 0x55c: 0x3904, 0x55d: 0x3a93, + 0x55e: 0x3023, 0x55f: 0x332f, 0x560: 0x3032, 0x561: 0x333e, 0x562: 0x3050, 0x563: 0x335c, + 0x564: 0x305f, 0x565: 0x336b, 0x566: 0x3055, 0x567: 0x3361, 0x568: 0x3064, 0x569: 0x3370, + 0x56a: 0x3069, 0x56b: 0x3375, 0x56c: 0x30af, 0x56d: 0x33bb, 0x56e: 0x390b, 0x56f: 0x3a9a, + 0x570: 0x30b9, 0x571: 0x33ca, 0x572: 0x30c3, 0x573: 0x33d4, 0x574: 0x30cd, 0x575: 0x33de, + 0x576: 0x46c4, 0x577: 0x4755, 0x578: 0x3912, 0x579: 0x3aa1, 0x57a: 0x30e6, 0x57b: 0x33f7, + 0x57c: 0x30e1, 0x57d: 0x33f2, 0x57e: 0x30eb, 0x57f: 0x33fc, + // Block 0x16, offset 0x580 + 0x580: 0x30f0, 0x581: 0x3401, 0x582: 0x30f5, 0x583: 0x3406, 0x584: 0x3109, 0x585: 0x341a, + 0x586: 0x3113, 0x587: 0x3424, 0x588: 0x3122, 0x589: 0x3433, 0x58a: 0x311d, 0x58b: 0x342e, + 0x58c: 0x3935, 0x58d: 0x3ac4, 0x58e: 0x3943, 0x58f: 0x3ad2, 0x590: 0x394a, 0x591: 0x3ad9, + 0x592: 0x3951, 0x593: 0x3ae0, 0x594: 0x314f, 0x595: 0x3460, 0x596: 0x3154, 0x597: 0x3465, + 0x598: 0x315e, 0x599: 0x346f, 0x59a: 0x46f1, 0x59b: 0x4782, 0x59c: 0x3997, 0x59d: 0x3b26, + 0x59e: 0x3177, 0x59f: 0x3488, 0x5a0: 0x3181, 0x5a1: 0x3492, 0x5a2: 0x4700, 0x5a3: 0x4791, + 0x5a4: 0x399e, 0x5a5: 0x3b2d, 0x5a6: 0x39a5, 0x5a7: 0x3b34, 0x5a8: 0x39ac, 0x5a9: 0x3b3b, + 0x5aa: 0x3190, 0x5ab: 0x34a1, 0x5ac: 0x319a, 0x5ad: 0x34b0, 0x5ae: 0x31ae, 0x5af: 0x34c4, + 0x5b0: 0x31a9, 0x5b1: 0x34bf, 0x5b2: 0x31ea, 0x5b3: 0x3500, 0x5b4: 0x31f9, 0x5b5: 0x350f, + 0x5b6: 0x31f4, 0x5b7: 0x350a, 0x5b8: 0x39b3, 0x5b9: 0x3b42, 0x5ba: 0x39ba, 0x5bb: 0x3b49, + 0x5bc: 0x31fe, 0x5bd: 0x3514, 0x5be: 0x3203, 0x5bf: 0x3519, + // Block 0x17, offset 0x5c0 + 0x5c0: 0x3208, 0x5c1: 0x351e, 0x5c2: 0x320d, 0x5c3: 0x3523, 0x5c4: 0x321c, 0x5c5: 0x3532, + 0x5c6: 0x3217, 0x5c7: 0x352d, 0x5c8: 0x3221, 0x5c9: 0x353c, 0x5ca: 0x3226, 0x5cb: 0x3541, + 0x5cc: 0x322b, 0x5cd: 0x3546, 0x5ce: 0x3249, 0x5cf: 0x3564, 0x5d0: 0x3262, 0x5d1: 0x3582, + 0x5d2: 0x3271, 0x5d3: 0x3591, 0x5d4: 0x3276, 0x5d5: 0x3596, 0x5d6: 0x337a, 0x5d7: 0x34a6, + 0x5d8: 0x3537, 0x5d9: 0x3573, 0x5da: 0x1be0, 0x5db: 0x42d7, + 0x5e0: 0x46a1, 0x5e1: 0x4732, 0x5e2: 0x2f83, 0x5e3: 0x328f, + 0x5e4: 0x3878, 0x5e5: 0x3a07, 0x5e6: 0x3871, 0x5e7: 0x3a00, 0x5e8: 0x3886, 0x5e9: 0x3a15, + 0x5ea: 0x387f, 0x5eb: 0x3a0e, 0x5ec: 0x38be, 0x5ed: 0x3a4d, 0x5ee: 0x3894, 0x5ef: 0x3a23, + 0x5f0: 0x388d, 0x5f1: 0x3a1c, 0x5f2: 0x38a2, 0x5f3: 0x3a31, 0x5f4: 0x389b, 0x5f5: 0x3a2a, + 0x5f6: 0x38c5, 0x5f7: 0x3a54, 0x5f8: 0x46b5, 0x5f9: 0x4746, 0x5fa: 0x3000, 0x5fb: 0x330c, + 0x5fc: 0x2fec, 0x5fd: 0x32f8, 0x5fe: 0x38da, 0x5ff: 0x3a69, + // Block 0x18, offset 0x600 + 0x600: 0x38d3, 0x601: 0x3a62, 0x602: 0x38e8, 0x603: 0x3a77, 0x604: 0x38e1, 0x605: 0x3a70, + 0x606: 0x38fd, 0x607: 0x3a8c, 0x608: 0x3091, 0x609: 0x339d, 0x60a: 0x30a5, 0x60b: 0x33b1, + 0x60c: 0x46e7, 0x60d: 0x4778, 0x60e: 0x3136, 0x60f: 0x3447, 0x610: 0x3920, 0x611: 0x3aaf, + 0x612: 0x3919, 0x613: 0x3aa8, 0x614: 0x392e, 0x615: 0x3abd, 0x616: 0x3927, 0x617: 0x3ab6, + 0x618: 0x3989, 0x619: 0x3b18, 0x61a: 0x396d, 0x61b: 0x3afc, 0x61c: 0x3966, 0x61d: 0x3af5, + 0x61e: 0x397b, 0x61f: 0x3b0a, 0x620: 0x3974, 0x621: 0x3b03, 0x622: 0x3982, 0x623: 0x3b11, + 0x624: 0x31e5, 0x625: 0x34fb, 0x626: 0x31c7, 0x627: 0x34dd, 0x628: 0x39e4, 0x629: 0x3b73, + 0x62a: 0x39dd, 0x62b: 0x3b6c, 0x62c: 0x39f2, 0x62d: 0x3b81, 0x62e: 0x39eb, 0x62f: 0x3b7a, + 0x630: 0x39f9, 0x631: 0x3b88, 0x632: 0x3230, 0x633: 0x354b, 0x634: 0x3258, 0x635: 0x3578, + 0x636: 0x3253, 0x637: 0x356e, 0x638: 0x323f, 0x639: 0x355a, + // Block 0x19, offset 0x640 + 0x640: 0x4804, 0x641: 0x480a, 0x642: 0x491e, 0x643: 0x4936, 0x644: 0x4926, 0x645: 0x493e, + 0x646: 0x492e, 0x647: 0x4946, 0x648: 0x47aa, 0x649: 0x47b0, 0x64a: 0x488e, 0x64b: 0x48a6, + 0x64c: 0x4896, 0x64d: 0x48ae, 0x64e: 0x489e, 0x64f: 0x48b6, 0x650: 0x4816, 0x651: 0x481c, + 0x652: 0x3db8, 0x653: 0x3dc8, 0x654: 0x3dc0, 0x655: 0x3dd0, + 0x658: 0x47b6, 0x659: 0x47bc, 0x65a: 0x3ce8, 0x65b: 0x3cf8, 0x65c: 0x3cf0, 0x65d: 0x3d00, + 0x660: 0x482e, 0x661: 0x4834, 0x662: 0x494e, 0x663: 0x4966, + 0x664: 0x4956, 0x665: 0x496e, 0x666: 0x495e, 0x667: 0x4976, 0x668: 0x47c2, 0x669: 0x47c8, + 0x66a: 0x48be, 0x66b: 0x48d6, 0x66c: 0x48c6, 0x66d: 0x48de, 0x66e: 0x48ce, 0x66f: 0x48e6, + 0x670: 0x4846, 0x671: 0x484c, 0x672: 0x3e18, 0x673: 0x3e30, 0x674: 0x3e20, 0x675: 0x3e38, + 0x676: 0x3e28, 0x677: 0x3e40, 0x678: 0x47ce, 0x679: 0x47d4, 0x67a: 0x3d18, 0x67b: 0x3d30, + 0x67c: 0x3d20, 0x67d: 0x3d38, 0x67e: 0x3d28, 0x67f: 0x3d40, + // Block 0x1a, offset 0x680 + 0x680: 0x4852, 0x681: 0x4858, 0x682: 0x3e48, 0x683: 0x3e58, 0x684: 0x3e50, 0x685: 0x3e60, + 0x688: 0x47da, 0x689: 0x47e0, 0x68a: 0x3d48, 0x68b: 0x3d58, + 0x68c: 0x3d50, 0x68d: 0x3d60, 0x690: 0x4864, 0x691: 0x486a, + 0x692: 0x3e80, 0x693: 0x3e98, 0x694: 0x3e88, 0x695: 0x3ea0, 0x696: 0x3e90, 0x697: 0x3ea8, + 0x699: 0x47e6, 0x69b: 0x3d68, 0x69d: 0x3d70, + 0x69f: 0x3d78, 0x6a0: 0x487c, 0x6a1: 0x4882, 0x6a2: 0x497e, 0x6a3: 0x4996, + 0x6a4: 0x4986, 0x6a5: 0x499e, 0x6a6: 0x498e, 0x6a7: 0x49a6, 0x6a8: 0x47ec, 0x6a9: 0x47f2, + 0x6aa: 0x48ee, 0x6ab: 0x4906, 0x6ac: 0x48f6, 0x6ad: 0x490e, 0x6ae: 0x48fe, 0x6af: 0x4916, + 0x6b0: 0x47f8, 0x6b1: 0x431e, 0x6b2: 0x3691, 0x6b3: 0x4324, 0x6b4: 0x4822, 0x6b5: 0x432a, + 0x6b6: 0x36a3, 0x6b7: 0x4330, 0x6b8: 0x36c1, 0x6b9: 0x4336, 0x6ba: 0x36d9, 0x6bb: 0x433c, + 0x6bc: 0x4870, 0x6bd: 0x4342, + // Block 0x1b, offset 0x6c0 + 0x6c0: 0x3da0, 0x6c1: 0x3da8, 0x6c2: 0x4184, 0x6c3: 0x41a2, 0x6c4: 0x418e, 0x6c5: 0x41ac, + 0x6c6: 0x4198, 0x6c7: 0x41b6, 0x6c8: 0x3cd8, 0x6c9: 0x3ce0, 0x6ca: 0x40d0, 0x6cb: 0x40ee, + 0x6cc: 0x40da, 0x6cd: 0x40f8, 0x6ce: 0x40e4, 0x6cf: 0x4102, 0x6d0: 0x3de8, 0x6d1: 0x3df0, + 0x6d2: 0x41c0, 0x6d3: 0x41de, 0x6d4: 0x41ca, 0x6d5: 0x41e8, 0x6d6: 0x41d4, 0x6d7: 0x41f2, + 0x6d8: 0x3d08, 0x6d9: 0x3d10, 0x6da: 0x410c, 0x6db: 0x412a, 0x6dc: 0x4116, 0x6dd: 0x4134, + 0x6de: 0x4120, 0x6df: 0x413e, 0x6e0: 0x3ec0, 0x6e1: 0x3ec8, 0x6e2: 0x41fc, 0x6e3: 0x421a, + 0x6e4: 0x4206, 0x6e5: 0x4224, 0x6e6: 0x4210, 0x6e7: 0x422e, 0x6e8: 0x3d80, 0x6e9: 0x3d88, + 0x6ea: 0x4148, 0x6eb: 0x4166, 0x6ec: 0x4152, 0x6ed: 0x4170, 0x6ee: 0x415c, 0x6ef: 0x417a, + 0x6f0: 0x3685, 0x6f1: 0x367f, 0x6f2: 0x3d90, 0x6f3: 0x368b, 0x6f4: 0x3d98, + 0x6f6: 0x4810, 0x6f7: 0x3db0, 0x6f8: 0x35f5, 0x6f9: 0x35ef, 0x6fa: 0x35e3, 0x6fb: 0x42ee, + 0x6fc: 0x35fb, 0x6fd: 0x4287, 0x6fe: 0x01d3, 0x6ff: 0x4287, + // Block 0x1c, offset 0x700 + 0x700: 0x42a0, 0x701: 0x4482, 0x702: 0x3dd8, 0x703: 0x369d, 0x704: 0x3de0, + 0x706: 0x483a, 0x707: 0x3df8, 0x708: 0x3601, 0x709: 0x42f4, 0x70a: 0x360d, 0x70b: 0x42fa, + 0x70c: 0x3619, 0x70d: 0x4489, 0x70e: 0x4490, 0x70f: 0x4497, 0x710: 0x36b5, 0x711: 0x36af, + 0x712: 0x3e00, 0x713: 0x44e4, 0x716: 0x36bb, 0x717: 0x3e10, + 0x718: 0x3631, 0x719: 0x362b, 0x71a: 0x361f, 0x71b: 0x4300, 0x71d: 0x449e, + 0x71e: 0x44a5, 0x71f: 0x44ac, 0x720: 0x36eb, 0x721: 0x36e5, 0x722: 0x3e68, 0x723: 0x44ec, + 0x724: 0x36cd, 0x725: 0x36d3, 0x726: 0x36f1, 0x727: 0x3e78, 0x728: 0x3661, 0x729: 0x365b, + 0x72a: 0x364f, 0x72b: 0x430c, 0x72c: 0x3649, 0x72d: 0x4474, 0x72e: 0x447b, 0x72f: 0x0081, + 0x732: 0x3eb0, 0x733: 0x36f7, 0x734: 0x3eb8, + 0x736: 0x4888, 0x737: 0x3ed0, 0x738: 0x363d, 0x739: 0x4306, 0x73a: 0x366d, 0x73b: 0x4318, + 0x73c: 0x3679, 0x73d: 0x425a, 0x73e: 0x428c, + // Block 0x1d, offset 0x740 + 0x740: 0x1bd8, 0x741: 0x1bdc, 0x742: 0x0047, 0x743: 0x1c54, 0x745: 0x1be8, + 0x746: 0x1bec, 0x747: 0x00e9, 0x749: 0x1c58, 0x74a: 0x008f, 0x74b: 0x0051, + 0x74c: 0x0051, 0x74d: 0x0051, 0x74e: 0x0091, 0x74f: 0x00da, 0x750: 0x0053, 0x751: 0x0053, + 0x752: 0x0059, 0x753: 0x0099, 0x755: 0x005d, 0x756: 0x198d, + 0x759: 0x0061, 0x75a: 0x0063, 0x75b: 0x0065, 0x75c: 0x0065, 0x75d: 0x0065, + 0x760: 0x199f, 0x761: 0x1bc8, 0x762: 0x19a8, + 0x764: 0x0075, 0x766: 0x01b8, 0x768: 0x0075, + 0x76a: 0x0057, 0x76b: 0x42d2, 0x76c: 0x0045, 0x76d: 0x0047, 0x76f: 0x008b, + 0x770: 0x004b, 0x771: 0x004d, 0x773: 0x005b, 0x774: 0x009f, 0x775: 0x0215, + 0x776: 0x0218, 0x777: 0x021b, 0x778: 0x021e, 0x779: 0x0093, 0x77b: 0x1b98, + 0x77c: 0x01e8, 0x77d: 0x01c1, 0x77e: 0x0179, 0x77f: 0x01a0, + // Block 0x1e, offset 0x780 + 0x780: 0x0463, 0x785: 0x0049, + 0x786: 0x0089, 0x787: 0x008b, 0x788: 0x0093, 0x789: 0x0095, + 0x790: 0x222e, 0x791: 0x223a, + 0x792: 0x22ee, 0x793: 0x2216, 0x794: 0x229a, 0x795: 0x2222, 0x796: 0x22a0, 0x797: 0x22b8, + 0x798: 0x22c4, 0x799: 0x2228, 0x79a: 0x22ca, 0x79b: 0x2234, 0x79c: 0x22be, 0x79d: 0x22d0, + 0x79e: 0x22d6, 0x79f: 0x1cbc, 0x7a0: 0x0053, 0x7a1: 0x195a, 0x7a2: 0x1ba4, 0x7a3: 0x1963, + 0x7a4: 0x006d, 0x7a5: 0x19ab, 0x7a6: 0x1bd0, 0x7a7: 0x1d48, 0x7a8: 0x1966, 0x7a9: 0x0071, + 0x7aa: 0x19b7, 0x7ab: 0x1bd4, 0x7ac: 0x0059, 0x7ad: 0x0047, 0x7ae: 0x0049, 0x7af: 0x005b, + 0x7b0: 0x0093, 0x7b1: 0x19e4, 0x7b2: 0x1c18, 0x7b3: 0x19ed, 0x7b4: 0x00ad, 0x7b5: 0x1a62, + 0x7b6: 0x1c4c, 0x7b7: 0x1d5c, 0x7b8: 0x19f0, 0x7b9: 0x00b1, 0x7ba: 0x1a65, 0x7bb: 0x1c50, + 0x7bc: 0x0099, 0x7bd: 0x0087, 0x7be: 0x0089, 0x7bf: 0x009b, + // Block 0x1f, offset 0x7c0 + 0x7c1: 0x3c06, 0x7c3: 0xa000, 0x7c4: 0x3c0d, 0x7c5: 0xa000, + 0x7c7: 0x3c14, 0x7c8: 0xa000, 0x7c9: 0x3c1b, + 0x7cd: 0xa000, + 0x7e0: 0x2f65, 0x7e1: 0xa000, 0x7e2: 0x3c29, + 0x7e4: 0xa000, 0x7e5: 0xa000, + 0x7ed: 0x3c22, 0x7ee: 0x2f60, 0x7ef: 0x2f6a, + 0x7f0: 0x3c30, 0x7f1: 0x3c37, 0x7f2: 0xa000, 0x7f3: 0xa000, 0x7f4: 0x3c3e, 0x7f5: 0x3c45, + 0x7f6: 0xa000, 0x7f7: 0xa000, 0x7f8: 0x3c4c, 0x7f9: 0x3c53, 0x7fa: 0xa000, 0x7fb: 0xa000, + 0x7fc: 0xa000, 0x7fd: 0xa000, + // Block 0x20, offset 0x800 + 0x800: 0x3c5a, 0x801: 0x3c61, 0x802: 0xa000, 0x803: 0xa000, 0x804: 0x3c76, 0x805: 0x3c7d, + 0x806: 0xa000, 0x807: 0xa000, 0x808: 0x3c84, 0x809: 0x3c8b, + 0x811: 0xa000, + 0x812: 0xa000, + 0x822: 0xa000, + 0x828: 0xa000, 0x829: 0xa000, + 0x82b: 0xa000, 0x82c: 0x3ca0, 0x82d: 0x3ca7, 0x82e: 0x3cae, 0x82f: 0x3cb5, + 0x832: 0xa000, 0x833: 0xa000, 0x834: 0xa000, 0x835: 0xa000, + // Block 0x21, offset 0x840 + 0x860: 0x0023, 0x861: 0x0025, 0x862: 0x0027, 0x863: 0x0029, + 0x864: 0x002b, 0x865: 0x002d, 0x866: 0x002f, 0x867: 0x0031, 0x868: 0x0033, 0x869: 0x1882, + 0x86a: 0x1885, 0x86b: 0x1888, 0x86c: 0x188b, 0x86d: 0x188e, 0x86e: 0x1891, 0x86f: 0x1894, + 0x870: 0x1897, 0x871: 0x189a, 0x872: 0x189d, 0x873: 0x18a6, 0x874: 0x1a68, 0x875: 0x1a6c, + 0x876: 0x1a70, 0x877: 0x1a74, 0x878: 0x1a78, 0x879: 0x1a7c, 0x87a: 0x1a80, 0x87b: 0x1a84, + 0x87c: 0x1a88, 0x87d: 0x1c80, 0x87e: 0x1c85, 0x87f: 0x1c8a, + // Block 0x22, offset 0x880 + 0x880: 0x1c8f, 0x881: 0x1c94, 0x882: 0x1c99, 0x883: 0x1c9e, 0x884: 0x1ca3, 0x885: 0x1ca8, + 0x886: 0x1cad, 0x887: 0x1cb2, 0x888: 0x187f, 0x889: 0x18a3, 0x88a: 0x18c7, 0x88b: 0x18eb, + 0x88c: 0x190f, 0x88d: 0x1918, 0x88e: 0x191e, 0x88f: 0x1924, 0x890: 0x192a, 0x891: 0x1b60, + 0x892: 0x1b64, 0x893: 0x1b68, 0x894: 0x1b6c, 0x895: 0x1b70, 0x896: 0x1b74, 0x897: 0x1b78, + 0x898: 0x1b7c, 0x899: 0x1b80, 0x89a: 0x1b84, 0x89b: 0x1b88, 0x89c: 0x1af4, 0x89d: 0x1af8, + 0x89e: 0x1afc, 0x89f: 0x1b00, 0x8a0: 0x1b04, 0x8a1: 0x1b08, 0x8a2: 0x1b0c, 0x8a3: 0x1b10, + 0x8a4: 0x1b14, 0x8a5: 0x1b18, 0x8a6: 0x1b1c, 0x8a7: 0x1b20, 0x8a8: 0x1b24, 0x8a9: 0x1b28, + 0x8aa: 0x1b2c, 0x8ab: 0x1b30, 0x8ac: 0x1b34, 0x8ad: 0x1b38, 0x8ae: 0x1b3c, 0x8af: 0x1b40, + 0x8b0: 0x1b44, 0x8b1: 0x1b48, 0x8b2: 0x1b4c, 0x8b3: 0x1b50, 0x8b4: 0x1b54, 0x8b5: 0x1b58, + 0x8b6: 0x0043, 0x8b7: 0x0045, 0x8b8: 0x0047, 0x8b9: 0x0049, 0x8ba: 0x004b, 0x8bb: 0x004d, + 0x8bc: 0x004f, 0x8bd: 0x0051, 0x8be: 0x0053, 0x8bf: 0x0055, + // Block 0x23, offset 0x8c0 + 0x8c0: 0x06bf, 0x8c1: 0x06e3, 0x8c2: 0x06ef, 0x8c3: 0x06ff, 0x8c4: 0x0707, 0x8c5: 0x0713, + 0x8c6: 0x071b, 0x8c7: 0x0723, 0x8c8: 0x072f, 0x8c9: 0x0783, 0x8ca: 0x079b, 0x8cb: 0x07ab, + 0x8cc: 0x07bb, 0x8cd: 0x07cb, 0x8ce: 0x07db, 0x8cf: 0x07fb, 0x8d0: 0x07ff, 0x8d1: 0x0803, + 0x8d2: 0x0837, 0x8d3: 0x085f, 0x8d4: 0x086f, 0x8d5: 0x0877, 0x8d6: 0x087b, 0x8d7: 0x0887, + 0x8d8: 0x08a3, 0x8d9: 0x08a7, 0x8da: 0x08bf, 0x8db: 0x08c3, 0x8dc: 0x08cb, 0x8dd: 0x08db, + 0x8de: 0x0977, 0x8df: 0x098b, 0x8e0: 0x09cb, 0x8e1: 0x09df, 0x8e2: 0x09e7, 0x8e3: 0x09eb, + 0x8e4: 0x09fb, 0x8e5: 0x0a17, 0x8e6: 0x0a43, 0x8e7: 0x0a4f, 0x8e8: 0x0a6f, 0x8e9: 0x0a7b, + 0x8ea: 0x0a7f, 0x8eb: 0x0a83, 0x8ec: 0x0a9b, 0x8ed: 0x0a9f, 0x8ee: 0x0acb, 0x8ef: 0x0ad7, + 0x8f0: 0x0adf, 0x8f1: 0x0ae7, 0x8f2: 0x0af7, 0x8f3: 0x0aff, 0x8f4: 0x0b07, 0x8f5: 0x0b33, + 0x8f6: 0x0b37, 0x8f7: 0x0b3f, 0x8f8: 0x0b43, 0x8f9: 0x0b4b, 0x8fa: 0x0b53, 0x8fb: 0x0b63, + 0x8fc: 0x0b7f, 0x8fd: 0x0bf7, 0x8fe: 0x0c0b, 0x8ff: 0x0c0f, + // Block 0x24, offset 0x900 + 0x900: 0x0c8f, 0x901: 0x0c93, 0x902: 0x0ca7, 0x903: 0x0cab, 0x904: 0x0cb3, 0x905: 0x0cbb, + 0x906: 0x0cc3, 0x907: 0x0ccf, 0x908: 0x0cf7, 0x909: 0x0d07, 0x90a: 0x0d1b, 0x90b: 0x0d8b, + 0x90c: 0x0d97, 0x90d: 0x0da7, 0x90e: 0x0db3, 0x90f: 0x0dbf, 0x910: 0x0dc7, 0x911: 0x0dcb, + 0x912: 0x0dcf, 0x913: 0x0dd3, 0x914: 0x0dd7, 0x915: 0x0e8f, 0x916: 0x0ed7, 0x917: 0x0ee3, + 0x918: 0x0ee7, 0x919: 0x0eeb, 0x91a: 0x0eef, 0x91b: 0x0ef7, 0x91c: 0x0efb, 0x91d: 0x0f0f, + 0x91e: 0x0f2b, 0x91f: 0x0f33, 0x920: 0x0f73, 0x921: 0x0f77, 0x922: 0x0f7f, 0x923: 0x0f83, + 0x924: 0x0f8b, 0x925: 0x0f8f, 0x926: 0x0fb3, 0x927: 0x0fb7, 0x928: 0x0fd3, 0x929: 0x0fd7, + 0x92a: 0x0fdb, 0x92b: 0x0fdf, 0x92c: 0x0ff3, 0x92d: 0x1017, 0x92e: 0x101b, 0x92f: 0x101f, + 0x930: 0x1043, 0x931: 0x1083, 0x932: 0x1087, 0x933: 0x10a7, 0x934: 0x10b7, 0x935: 0x10bf, + 0x936: 0x10df, 0x937: 0x1103, 0x938: 0x1147, 0x939: 0x114f, 0x93a: 0x1163, 0x93b: 0x116f, + 0x93c: 0x1177, 0x93d: 0x117f, 0x93e: 0x1183, 0x93f: 0x1187, + // Block 0x25, offset 0x940 + 0x940: 0x119f, 0x941: 0x11a3, 0x942: 0x11bf, 0x943: 0x11c7, 0x944: 0x11cf, 0x945: 0x11d3, + 0x946: 0x11df, 0x947: 0x11e7, 0x948: 0x11eb, 0x949: 0x11ef, 0x94a: 0x11f7, 0x94b: 0x11fb, + 0x94c: 0x129b, 0x94d: 0x12af, 0x94e: 0x12e3, 0x94f: 0x12e7, 0x950: 0x12ef, 0x951: 0x131b, + 0x952: 0x1323, 0x953: 0x132b, 0x954: 0x1333, 0x955: 0x136f, 0x956: 0x1373, 0x957: 0x137b, + 0x958: 0x137f, 0x959: 0x1383, 0x95a: 0x13af, 0x95b: 0x13b3, 0x95c: 0x13bb, 0x95d: 0x13cf, + 0x95e: 0x13d3, 0x95f: 0x13ef, 0x960: 0x13f7, 0x961: 0x13fb, 0x962: 0x141f, 0x963: 0x143f, + 0x964: 0x1453, 0x965: 0x1457, 0x966: 0x145f, 0x967: 0x148b, 0x968: 0x148f, 0x969: 0x149f, + 0x96a: 0x14c3, 0x96b: 0x14cf, 0x96c: 0x14df, 0x96d: 0x14f7, 0x96e: 0x14ff, 0x96f: 0x1503, + 0x970: 0x1507, 0x971: 0x150b, 0x972: 0x1517, 0x973: 0x151b, 0x974: 0x1523, 0x975: 0x153f, + 0x976: 0x1543, 0x977: 0x1547, 0x978: 0x155f, 0x979: 0x1563, 0x97a: 0x156b, 0x97b: 0x157f, + 0x97c: 0x1583, 0x97d: 0x1587, 0x97e: 0x158f, 0x97f: 0x1593, + // Block 0x26, offset 0x980 + 0x986: 0xa000, 0x98b: 0xa000, + 0x98c: 0x3f08, 0x98d: 0xa000, 0x98e: 0x3f10, 0x98f: 0xa000, 0x990: 0x3f18, 0x991: 0xa000, + 0x992: 0x3f20, 0x993: 0xa000, 0x994: 0x3f28, 0x995: 0xa000, 0x996: 0x3f30, 0x997: 0xa000, + 0x998: 0x3f38, 0x999: 0xa000, 0x99a: 0x3f40, 0x99b: 0xa000, 0x99c: 0x3f48, 0x99d: 0xa000, + 0x99e: 0x3f50, 0x99f: 0xa000, 0x9a0: 0x3f58, 0x9a1: 0xa000, 0x9a2: 0x3f60, + 0x9a4: 0xa000, 0x9a5: 0x3f68, 0x9a6: 0xa000, 0x9a7: 0x3f70, 0x9a8: 0xa000, 0x9a9: 0x3f78, + 0x9af: 0xa000, + 0x9b0: 0x3f80, 0x9b1: 0x3f88, 0x9b2: 0xa000, 0x9b3: 0x3f90, 0x9b4: 0x3f98, 0x9b5: 0xa000, + 0x9b6: 0x3fa0, 0x9b7: 0x3fa8, 0x9b8: 0xa000, 0x9b9: 0x3fb0, 0x9ba: 0x3fb8, 0x9bb: 0xa000, + 0x9bc: 0x3fc0, 0x9bd: 0x3fc8, + // Block 0x27, offset 0x9c0 + 0x9d4: 0x3f00, + 0x9d9: 0x9903, 0x9da: 0x9903, 0x9db: 0x42dc, 0x9dc: 0x42e2, 0x9dd: 0xa000, + 0x9de: 0x3fd0, 0x9df: 0x26b4, + 0x9e6: 0xa000, + 0x9eb: 0xa000, 0x9ec: 0x3fe0, 0x9ed: 0xa000, 0x9ee: 0x3fe8, 0x9ef: 0xa000, + 0x9f0: 0x3ff0, 0x9f1: 0xa000, 0x9f2: 0x3ff8, 0x9f3: 0xa000, 0x9f4: 0x4000, 0x9f5: 0xa000, + 0x9f6: 0x4008, 0x9f7: 0xa000, 0x9f8: 0x4010, 0x9f9: 0xa000, 0x9fa: 0x4018, 0x9fb: 0xa000, + 0x9fc: 0x4020, 0x9fd: 0xa000, 0x9fe: 0x4028, 0x9ff: 0xa000, + // Block 0x28, offset 0xa00 + 0xa00: 0x4030, 0xa01: 0xa000, 0xa02: 0x4038, 0xa04: 0xa000, 0xa05: 0x4040, + 0xa06: 0xa000, 0xa07: 0x4048, 0xa08: 0xa000, 0xa09: 0x4050, + 0xa0f: 0xa000, 0xa10: 0x4058, 0xa11: 0x4060, + 0xa12: 0xa000, 0xa13: 0x4068, 0xa14: 0x4070, 0xa15: 0xa000, 0xa16: 0x4078, 0xa17: 0x4080, + 0xa18: 0xa000, 0xa19: 0x4088, 0xa1a: 0x4090, 0xa1b: 0xa000, 0xa1c: 0x4098, 0xa1d: 0x40a0, + 0xa2f: 0xa000, + 0xa30: 0xa000, 0xa31: 0xa000, 0xa32: 0xa000, 0xa34: 0x3fd8, + 0xa37: 0x40a8, 0xa38: 0x40b0, 0xa39: 0x40b8, 0xa3a: 0x40c0, + 0xa3d: 0xa000, 0xa3e: 0x40c8, 0xa3f: 0x26c9, + // Block 0x29, offset 0xa40 + 0xa40: 0x0367, 0xa41: 0x032b, 0xa42: 0x032f, 0xa43: 0x0333, 0xa44: 0x037b, 0xa45: 0x0337, + 0xa46: 0x033b, 0xa47: 0x033f, 0xa48: 0x0343, 0xa49: 0x0347, 0xa4a: 0x034b, 0xa4b: 0x034f, + 0xa4c: 0x0353, 0xa4d: 0x0357, 0xa4e: 0x035b, 0xa4f: 0x49bd, 0xa50: 0x49c3, 0xa51: 0x49c9, + 0xa52: 0x49cf, 0xa53: 0x49d5, 0xa54: 0x49db, 0xa55: 0x49e1, 0xa56: 0x49e7, 0xa57: 0x49ed, + 0xa58: 0x49f3, 0xa59: 0x49f9, 0xa5a: 0x49ff, 0xa5b: 0x4a05, 0xa5c: 0x4a0b, 0xa5d: 0x4a11, + 0xa5e: 0x4a17, 0xa5f: 0x4a1d, 0xa60: 0x4a23, 0xa61: 0x4a29, 0xa62: 0x4a2f, 0xa63: 0x4a35, + 0xa64: 0x03c3, 0xa65: 0x035f, 0xa66: 0x0363, 0xa67: 0x03e7, 0xa68: 0x03eb, 0xa69: 0x03ef, + 0xa6a: 0x03f3, 0xa6b: 0x03f7, 0xa6c: 0x03fb, 0xa6d: 0x03ff, 0xa6e: 0x036b, 0xa6f: 0x0403, + 0xa70: 0x0407, 0xa71: 0x036f, 0xa72: 0x0373, 0xa73: 0x0377, 0xa74: 0x037f, 0xa75: 0x0383, + 0xa76: 0x0387, 0xa77: 0x038b, 0xa78: 0x038f, 0xa79: 0x0393, 0xa7a: 0x0397, 0xa7b: 0x039b, + 0xa7c: 0x039f, 0xa7d: 0x03a3, 0xa7e: 0x03a7, 0xa7f: 0x03ab, + // Block 0x2a, offset 0xa80 + 0xa80: 0x03af, 0xa81: 0x03b3, 0xa82: 0x040b, 0xa83: 0x040f, 0xa84: 0x03b7, 0xa85: 0x03bb, + 0xa86: 0x03bf, 0xa87: 0x03c7, 0xa88: 0x03cb, 0xa89: 0x03cf, 0xa8a: 0x03d3, 0xa8b: 0x03d7, + 0xa8c: 0x03db, 0xa8d: 0x03df, 0xa8e: 0x03e3, + 0xa92: 0x06bf, 0xa93: 0x071b, 0xa94: 0x06cb, 0xa95: 0x097b, 0xa96: 0x06cf, 0xa97: 0x06e7, + 0xa98: 0x06d3, 0xa99: 0x0f93, 0xa9a: 0x0707, 0xa9b: 0x06db, 0xa9c: 0x06c3, 0xa9d: 0x09ff, + 0xa9e: 0x098f, 0xa9f: 0x072f, + // Block 0x2b, offset 0xac0 + 0xac0: 0x2054, 0xac1: 0x205a, 0xac2: 0x2060, 0xac3: 0x2066, 0xac4: 0x206c, 0xac5: 0x2072, + 0xac6: 0x2078, 0xac7: 0x207e, 0xac8: 0x2084, 0xac9: 0x208a, 0xaca: 0x2090, 0xacb: 0x2096, + 0xacc: 0x209c, 0xacd: 0x20a2, 0xace: 0x2726, 0xacf: 0x272f, 0xad0: 0x2738, 0xad1: 0x2741, + 0xad2: 0x274a, 0xad3: 0x2753, 0xad4: 0x275c, 0xad5: 0x2765, 0xad6: 0x276e, 0xad7: 0x2780, + 0xad8: 0x2789, 0xad9: 0x2792, 0xada: 0x279b, 0xadb: 0x27a4, 0xadc: 0x2777, 0xadd: 0x2bac, + 0xade: 0x2aed, 0xae0: 0x20a8, 0xae1: 0x20c0, 0xae2: 0x20b4, 0xae3: 0x2108, + 0xae4: 0x20c6, 0xae5: 0x20e4, 0xae6: 0x20ae, 0xae7: 0x20de, 0xae8: 0x20ba, 0xae9: 0x20f0, + 0xaea: 0x2120, 0xaeb: 0x213e, 0xaec: 0x2138, 0xaed: 0x212c, 0xaee: 0x217a, 0xaef: 0x210e, + 0xaf0: 0x211a, 0xaf1: 0x2132, 0xaf2: 0x2126, 0xaf3: 0x2150, 0xaf4: 0x20fc, 0xaf5: 0x2144, + 0xaf6: 0x216e, 0xaf7: 0x2156, 0xaf8: 0x20ea, 0xaf9: 0x20cc, 0xafa: 0x2102, 0xafb: 0x2114, + 0xafc: 0x214a, 0xafd: 0x20d2, 0xafe: 0x2174, 0xaff: 0x20f6, + // Block 0x2c, offset 0xb00 + 0xb00: 0x215c, 0xb01: 0x20d8, 0xb02: 0x2162, 0xb03: 0x2168, 0xb04: 0x092f, 0xb05: 0x0b03, + 0xb06: 0x0ca7, 0xb07: 0x10c7, + 0xb10: 0x1bc4, 0xb11: 0x18a9, + 0xb12: 0x18ac, 0xb13: 0x18af, 0xb14: 0x18b2, 0xb15: 0x18b5, 0xb16: 0x18b8, 0xb17: 0x18bb, + 0xb18: 0x18be, 0xb19: 0x18c1, 0xb1a: 0x18ca, 0xb1b: 0x18cd, 0xb1c: 0x18d0, 0xb1d: 0x18d3, + 0xb1e: 0x18d6, 0xb1f: 0x18d9, 0xb20: 0x0313, 0xb21: 0x031b, 0xb22: 0x031f, 0xb23: 0x0327, + 0xb24: 0x032b, 0xb25: 0x032f, 0xb26: 0x0337, 0xb27: 0x033f, 0xb28: 0x0343, 0xb29: 0x034b, + 0xb2a: 0x034f, 0xb2b: 0x0353, 0xb2c: 0x0357, 0xb2d: 0x035b, 0xb2e: 0x2e18, 0xb2f: 0x2e20, + 0xb30: 0x2e28, 0xb31: 0x2e30, 0xb32: 0x2e38, 0xb33: 0x2e40, 0xb34: 0x2e48, 0xb35: 0x2e50, + 0xb36: 0x2e60, 0xb37: 0x2e68, 0xb38: 0x2e70, 0xb39: 0x2e78, 0xb3a: 0x2e80, 0xb3b: 0x2e88, + 0xb3c: 0x2ed3, 0xb3d: 0x2e9b, 0xb3e: 0x2e58, + // Block 0x2d, offset 0xb40 + 0xb40: 0x06bf, 0xb41: 0x071b, 0xb42: 0x06cb, 0xb43: 0x097b, 0xb44: 0x071f, 0xb45: 0x07af, + 0xb46: 0x06c7, 0xb47: 0x07ab, 0xb48: 0x070b, 0xb49: 0x0887, 0xb4a: 0x0d07, 0xb4b: 0x0e8f, + 0xb4c: 0x0dd7, 0xb4d: 0x0d1b, 0xb4e: 0x145f, 0xb4f: 0x098b, 0xb50: 0x0ccf, 0xb51: 0x0d4b, + 0xb52: 0x0d0b, 0xb53: 0x104b, 0xb54: 0x08fb, 0xb55: 0x0f03, 0xb56: 0x1387, 0xb57: 0x105f, + 0xb58: 0x0843, 0xb59: 0x108f, 0xb5a: 0x0f9b, 0xb5b: 0x0a17, 0xb5c: 0x140f, 0xb5d: 0x077f, + 0xb5e: 0x08ab, 0xb5f: 0x0df7, 0xb60: 0x1527, 0xb61: 0x0743, 0xb62: 0x07d3, 0xb63: 0x0d9b, + 0xb64: 0x06cf, 0xb65: 0x06e7, 0xb66: 0x06d3, 0xb67: 0x0adb, 0xb68: 0x08ef, 0xb69: 0x087f, + 0xb6a: 0x0a57, 0xb6b: 0x0a4b, 0xb6c: 0x0feb, 0xb6d: 0x073f, 0xb6e: 0x139b, 0xb6f: 0x089b, + 0xb70: 0x09f3, 0xb71: 0x18dc, 0xb72: 0x18df, 0xb73: 0x18e2, 0xb74: 0x18e5, 0xb75: 0x18ee, + 0xb76: 0x18f1, 0xb77: 0x18f4, 0xb78: 0x18f7, 0xb79: 0x18fa, 0xb7a: 0x18fd, 0xb7b: 0x1900, + 0xb7c: 0x1903, 0xb7d: 0x1906, 0xb7e: 0x1909, 0xb7f: 0x1912, + // Block 0x2e, offset 0xb80 + 0xb80: 0x1cc6, 0xb81: 0x1cd5, 0xb82: 0x1ce4, 0xb83: 0x1cf3, 0xb84: 0x1d02, 0xb85: 0x1d11, + 0xb86: 0x1d20, 0xb87: 0x1d2f, 0xb88: 0x1d3e, 0xb89: 0x218c, 0xb8a: 0x219e, 0xb8b: 0x21b0, + 0xb8c: 0x1954, 0xb8d: 0x1c04, 0xb8e: 0x19d2, 0xb8f: 0x1ba8, 0xb90: 0x04cb, 0xb91: 0x04d3, + 0xb92: 0x04db, 0xb93: 0x04e3, 0xb94: 0x04eb, 0xb95: 0x04ef, 0xb96: 0x04f3, 0xb97: 0x04f7, + 0xb98: 0x04fb, 0xb99: 0x04ff, 0xb9a: 0x0503, 0xb9b: 0x0507, 0xb9c: 0x050b, 0xb9d: 0x050f, + 0xb9e: 0x0513, 0xb9f: 0x0517, 0xba0: 0x051b, 0xba1: 0x0523, 0xba2: 0x0527, 0xba3: 0x052b, + 0xba4: 0x052f, 0xba5: 0x0533, 0xba6: 0x0537, 0xba7: 0x053b, 0xba8: 0x053f, 0xba9: 0x0543, + 0xbaa: 0x0547, 0xbab: 0x054b, 0xbac: 0x054f, 0xbad: 0x0553, 0xbae: 0x0557, 0xbaf: 0x055b, + 0xbb0: 0x055f, 0xbb1: 0x0563, 0xbb2: 0x0567, 0xbb3: 0x056f, 0xbb4: 0x0577, 0xbb5: 0x057f, + 0xbb6: 0x0583, 0xbb7: 0x0587, 0xbb8: 0x058b, 0xbb9: 0x058f, 0xbba: 0x0593, 0xbbb: 0x0597, + 0xbbc: 0x059b, 0xbbd: 0x059f, 0xbbe: 0x05a3, + // Block 0x2f, offset 0xbc0 + 0xbc0: 0x2b0c, 0xbc1: 0x29a8, 0xbc2: 0x2b1c, 0xbc3: 0x2880, 0xbc4: 0x2ee4, 0xbc5: 0x288a, + 0xbc6: 0x2894, 0xbc7: 0x2f28, 0xbc8: 0x29b5, 0xbc9: 0x289e, 0xbca: 0x28a8, 0xbcb: 0x28b2, + 0xbcc: 0x29dc, 0xbcd: 0x29e9, 0xbce: 0x29c2, 0xbcf: 0x29cf, 0xbd0: 0x2ea9, 0xbd1: 0x29f6, + 0xbd2: 0x2a03, 0xbd3: 0x2bbe, 0xbd4: 0x26bb, 0xbd5: 0x2bd1, 0xbd6: 0x2be4, 0xbd7: 0x2b2c, + 0xbd8: 0x2a10, 0xbd9: 0x2bf7, 0xbda: 0x2c0a, 0xbdb: 0x2a1d, 0xbdc: 0x28bc, 0xbdd: 0x28c6, + 0xbde: 0x2eb7, 0xbdf: 0x2a2a, 0xbe0: 0x2b3c, 0xbe1: 0x2ef5, 0xbe2: 0x28d0, 0xbe3: 0x28da, + 0xbe4: 0x2a37, 0xbe5: 0x28e4, 0xbe6: 0x28ee, 0xbe7: 0x26d0, 0xbe8: 0x26d7, 0xbe9: 0x28f8, + 0xbea: 0x2902, 0xbeb: 0x2c1d, 0xbec: 0x2a44, 0xbed: 0x2b4c, 0xbee: 0x2c30, 0xbef: 0x2a51, + 0xbf0: 0x2916, 0xbf1: 0x290c, 0xbf2: 0x2f3c, 0xbf3: 0x2a5e, 0xbf4: 0x2c43, 0xbf5: 0x2920, + 0xbf6: 0x2b5c, 0xbf7: 0x292a, 0xbf8: 0x2a78, 0xbf9: 0x2934, 0xbfa: 0x2a85, 0xbfb: 0x2f06, + 0xbfc: 0x2a6b, 0xbfd: 0x2b6c, 0xbfe: 0x2a92, 0xbff: 0x26de, + // Block 0x30, offset 0xc00 + 0xc00: 0x2f17, 0xc01: 0x293e, 0xc02: 0x2948, 0xc03: 0x2a9f, 0xc04: 0x2952, 0xc05: 0x295c, + 0xc06: 0x2966, 0xc07: 0x2b7c, 0xc08: 0x2aac, 0xc09: 0x26e5, 0xc0a: 0x2c56, 0xc0b: 0x2e90, + 0xc0c: 0x2b8c, 0xc0d: 0x2ab9, 0xc0e: 0x2ec5, 0xc0f: 0x2970, 0xc10: 0x297a, 0xc11: 0x2ac6, + 0xc12: 0x26ec, 0xc13: 0x2ad3, 0xc14: 0x2b9c, 0xc15: 0x26f3, 0xc16: 0x2c69, 0xc17: 0x2984, + 0xc18: 0x1cb7, 0xc19: 0x1ccb, 0xc1a: 0x1cda, 0xc1b: 0x1ce9, 0xc1c: 0x1cf8, 0xc1d: 0x1d07, + 0xc1e: 0x1d16, 0xc1f: 0x1d25, 0xc20: 0x1d34, 0xc21: 0x1d43, 0xc22: 0x2192, 0xc23: 0x21a4, + 0xc24: 0x21b6, 0xc25: 0x21c2, 0xc26: 0x21ce, 0xc27: 0x21da, 0xc28: 0x21e6, 0xc29: 0x21f2, + 0xc2a: 0x21fe, 0xc2b: 0x220a, 0xc2c: 0x2246, 0xc2d: 0x2252, 0xc2e: 0x225e, 0xc2f: 0x226a, + 0xc30: 0x2276, 0xc31: 0x1c14, 0xc32: 0x19c6, 0xc33: 0x1936, 0xc34: 0x1be4, 0xc35: 0x1a47, + 0xc36: 0x1a56, 0xc37: 0x19cc, 0xc38: 0x1bfc, 0xc39: 0x1c00, 0xc3a: 0x1960, 0xc3b: 0x2701, + 0xc3c: 0x270f, 0xc3d: 0x26fa, 0xc3e: 0x2708, 0xc3f: 0x2ae0, + // Block 0x31, offset 0xc40 + 0xc40: 0x1a4a, 0xc41: 0x1a32, 0xc42: 0x1c60, 0xc43: 0x1a1a, 0xc44: 0x19f3, 0xc45: 0x1969, + 0xc46: 0x1978, 0xc47: 0x1948, 0xc48: 0x1bf0, 0xc49: 0x1d52, 0xc4a: 0x1a4d, 0xc4b: 0x1a35, + 0xc4c: 0x1c64, 0xc4d: 0x1c70, 0xc4e: 0x1a26, 0xc4f: 0x19fc, 0xc50: 0x1957, 0xc51: 0x1c1c, + 0xc52: 0x1bb0, 0xc53: 0x1b9c, 0xc54: 0x1bcc, 0xc55: 0x1c74, 0xc56: 0x1a29, 0xc57: 0x19c9, + 0xc58: 0x19ff, 0xc59: 0x19de, 0xc5a: 0x1a41, 0xc5b: 0x1c78, 0xc5c: 0x1a2c, 0xc5d: 0x19c0, + 0xc5e: 0x1a02, 0xc5f: 0x1c3c, 0xc60: 0x1bf4, 0xc61: 0x1a14, 0xc62: 0x1c24, 0xc63: 0x1c40, + 0xc64: 0x1bf8, 0xc65: 0x1a17, 0xc66: 0x1c28, 0xc67: 0x22e8, 0xc68: 0x22fc, 0xc69: 0x1996, + 0xc6a: 0x1c20, 0xc6b: 0x1bb4, 0xc6c: 0x1ba0, 0xc6d: 0x1c48, 0xc6e: 0x2716, 0xc6f: 0x27ad, + 0xc70: 0x1a59, 0xc71: 0x1a44, 0xc72: 0x1c7c, 0xc73: 0x1a2f, 0xc74: 0x1a50, 0xc75: 0x1a38, + 0xc76: 0x1c68, 0xc77: 0x1a1d, 0xc78: 0x19f6, 0xc79: 0x1981, 0xc7a: 0x1a53, 0xc7b: 0x1a3b, + 0xc7c: 0x1c6c, 0xc7d: 0x1a20, 0xc7e: 0x19f9, 0xc7f: 0x1984, + // Block 0x32, offset 0xc80 + 0xc80: 0x1c2c, 0xc81: 0x1bb8, 0xc82: 0x1d4d, 0xc83: 0x1939, 0xc84: 0x19ba, 0xc85: 0x19bd, + 0xc86: 0x22f5, 0xc87: 0x1b94, 0xc88: 0x19c3, 0xc89: 0x194b, 0xc8a: 0x19e1, 0xc8b: 0x194e, + 0xc8c: 0x19ea, 0xc8d: 0x196c, 0xc8e: 0x196f, 0xc8f: 0x1a05, 0xc90: 0x1a0b, 0xc91: 0x1a0e, + 0xc92: 0x1c30, 0xc93: 0x1a11, 0xc94: 0x1a23, 0xc95: 0x1c38, 0xc96: 0x1c44, 0xc97: 0x1990, + 0xc98: 0x1d57, 0xc99: 0x1bbc, 0xc9a: 0x1993, 0xc9b: 0x1a5c, 0xc9c: 0x19a5, 0xc9d: 0x19b4, + 0xc9e: 0x22e2, 0xc9f: 0x22dc, 0xca0: 0x1cc1, 0xca1: 0x1cd0, 0xca2: 0x1cdf, 0xca3: 0x1cee, + 0xca4: 0x1cfd, 0xca5: 0x1d0c, 0xca6: 0x1d1b, 0xca7: 0x1d2a, 0xca8: 0x1d39, 0xca9: 0x2186, + 0xcaa: 0x2198, 0xcab: 0x21aa, 0xcac: 0x21bc, 0xcad: 0x21c8, 0xcae: 0x21d4, 0xcaf: 0x21e0, + 0xcb0: 0x21ec, 0xcb1: 0x21f8, 0xcb2: 0x2204, 0xcb3: 0x2240, 0xcb4: 0x224c, 0xcb5: 0x2258, + 0xcb6: 0x2264, 0xcb7: 0x2270, 0xcb8: 0x227c, 0xcb9: 0x2282, 0xcba: 0x2288, 0xcbb: 0x228e, + 0xcbc: 0x2294, 0xcbd: 0x22a6, 0xcbe: 0x22ac, 0xcbf: 0x1c10, + // Block 0x33, offset 0xcc0 + 0xcc0: 0x1377, 0xcc1: 0x0cfb, 0xcc2: 0x13d3, 0xcc3: 0x139f, 0xcc4: 0x0e57, 0xcc5: 0x06eb, + 0xcc6: 0x08df, 0xcc7: 0x162b, 0xcc8: 0x162b, 0xcc9: 0x0a0b, 0xcca: 0x145f, 0xccb: 0x0943, + 0xccc: 0x0a07, 0xccd: 0x0bef, 0xcce: 0x0fcf, 0xccf: 0x115f, 0xcd0: 0x1297, 0xcd1: 0x12d3, + 0xcd2: 0x1307, 0xcd3: 0x141b, 0xcd4: 0x0d73, 0xcd5: 0x0dff, 0xcd6: 0x0eab, 0xcd7: 0x0f43, + 0xcd8: 0x125f, 0xcd9: 0x1447, 0xcda: 0x1573, 0xcdb: 0x070f, 0xcdc: 0x08b3, 0xcdd: 0x0d87, + 0xcde: 0x0ecf, 0xcdf: 0x1293, 0xce0: 0x15c3, 0xce1: 0x0ab3, 0xce2: 0x0e77, 0xce3: 0x1283, + 0xce4: 0x1317, 0xce5: 0x0c23, 0xce6: 0x11bb, 0xce7: 0x12df, 0xce8: 0x0b1f, 0xce9: 0x0d0f, + 0xcea: 0x0e17, 0xceb: 0x0f1b, 0xcec: 0x1427, 0xced: 0x074f, 0xcee: 0x07e7, 0xcef: 0x0853, + 0xcf0: 0x0c8b, 0xcf1: 0x0d7f, 0xcf2: 0x0ecb, 0xcf3: 0x0fef, 0xcf4: 0x1177, 0xcf5: 0x128b, + 0xcf6: 0x12a3, 0xcf7: 0x13c7, 0xcf8: 0x14ef, 0xcf9: 0x15a3, 0xcfa: 0x15bf, 0xcfb: 0x102b, + 0xcfc: 0x106b, 0xcfd: 0x1123, 0xcfe: 0x1243, 0xcff: 0x147b, + // Block 0x34, offset 0xd00 + 0xd00: 0x15cb, 0xd01: 0x134b, 0xd02: 0x09c7, 0xd03: 0x0b3b, 0xd04: 0x10db, 0xd05: 0x119b, + 0xd06: 0x0eff, 0xd07: 0x1033, 0xd08: 0x1397, 0xd09: 0x14e7, 0xd0a: 0x09c3, 0xd0b: 0x0a8f, + 0xd0c: 0x0d77, 0xd0d: 0x0e2b, 0xd0e: 0x0e5f, 0xd0f: 0x1113, 0xd10: 0x113b, 0xd11: 0x14a7, + 0xd12: 0x084f, 0xd13: 0x11a7, 0xd14: 0x07f3, 0xd15: 0x07ef, 0xd16: 0x1097, 0xd17: 0x1127, + 0xd18: 0x125b, 0xd19: 0x14af, 0xd1a: 0x1367, 0xd1b: 0x0c27, 0xd1c: 0x0d73, 0xd1d: 0x1357, + 0xd1e: 0x06f7, 0xd1f: 0x0a63, 0xd20: 0x0b93, 0xd21: 0x0f2f, 0xd22: 0x0faf, 0xd23: 0x0873, + 0xd24: 0x103b, 0xd25: 0x075f, 0xd26: 0x0b77, 0xd27: 0x06d7, 0xd28: 0x0deb, 0xd29: 0x0ca3, + 0xd2a: 0x110f, 0xd2b: 0x08c7, 0xd2c: 0x09b3, 0xd2d: 0x0ffb, 0xd2e: 0x1263, 0xd2f: 0x133b, + 0xd30: 0x0db7, 0xd31: 0x13f7, 0xd32: 0x0de3, 0xd33: 0x0c37, 0xd34: 0x121b, 0xd35: 0x0c57, + 0xd36: 0x0fab, 0xd37: 0x072b, 0xd38: 0x07a7, 0xd39: 0x07eb, 0xd3a: 0x0d53, 0xd3b: 0x10fb, + 0xd3c: 0x11f3, 0xd3d: 0x1347, 0xd3e: 0x145b, 0xd3f: 0x085b, + // Block 0x35, offset 0xd40 + 0xd40: 0x090f, 0xd41: 0x0a17, 0xd42: 0x0b2f, 0xd43: 0x0cbf, 0xd44: 0x0e7b, 0xd45: 0x103f, + 0xd46: 0x1497, 0xd47: 0x157b, 0xd48: 0x15cf, 0xd49: 0x15e7, 0xd4a: 0x0837, 0xd4b: 0x0cf3, + 0xd4c: 0x0da3, 0xd4d: 0x13eb, 0xd4e: 0x0afb, 0xd4f: 0x0bd7, 0xd50: 0x0bf3, 0xd51: 0x0c83, + 0xd52: 0x0e6b, 0xd53: 0x0eb7, 0xd54: 0x0f67, 0xd55: 0x108b, 0xd56: 0x112f, 0xd57: 0x1193, + 0xd58: 0x13db, 0xd59: 0x126b, 0xd5a: 0x1403, 0xd5b: 0x147f, 0xd5c: 0x080f, 0xd5d: 0x083b, + 0xd5e: 0x0923, 0xd5f: 0x0ea7, 0xd60: 0x12f3, 0xd61: 0x133b, 0xd62: 0x0b1b, 0xd63: 0x0b8b, + 0xd64: 0x0c4f, 0xd65: 0x0daf, 0xd66: 0x10d7, 0xd67: 0x0f23, 0xd68: 0x073b, 0xd69: 0x097f, + 0xd6a: 0x0a63, 0xd6b: 0x0ac7, 0xd6c: 0x0b97, 0xd6d: 0x0f3f, 0xd6e: 0x0f5b, 0xd6f: 0x116b, + 0xd70: 0x118b, 0xd71: 0x1463, 0xd72: 0x14e3, 0xd73: 0x14f3, 0xd74: 0x152f, 0xd75: 0x0753, + 0xd76: 0x107f, 0xd77: 0x144f, 0xd78: 0x14cb, 0xd79: 0x0baf, 0xd7a: 0x0717, 0xd7b: 0x0777, + 0xd7c: 0x0a67, 0xd7d: 0x0a87, 0xd7e: 0x0caf, 0xd7f: 0x0d73, + // Block 0x36, offset 0xd80 + 0xd80: 0x0ec3, 0xd81: 0x0fcb, 0xd82: 0x1277, 0xd83: 0x1417, 0xd84: 0x1623, 0xd85: 0x0ce3, + 0xd86: 0x14a3, 0xd87: 0x0833, 0xd88: 0x0d2f, 0xd89: 0x0d3b, 0xd8a: 0x0e0f, 0xd8b: 0x0e47, + 0xd8c: 0x0f4b, 0xd8d: 0x0fa7, 0xd8e: 0x1027, 0xd8f: 0x110b, 0xd90: 0x153b, 0xd91: 0x07af, + 0xd92: 0x0c03, 0xd93: 0x14b3, 0xd94: 0x0767, 0xd95: 0x0aab, 0xd96: 0x0e2f, 0xd97: 0x13df, + 0xd98: 0x0b67, 0xd99: 0x0bb7, 0xd9a: 0x0d43, 0xd9b: 0x0f2f, 0xd9c: 0x14bb, 0xd9d: 0x0817, + 0xd9e: 0x08ff, 0xd9f: 0x0a97, 0xda0: 0x0cd3, 0xda1: 0x0d1f, 0xda2: 0x0d5f, 0xda3: 0x0df3, + 0xda4: 0x0f47, 0xda5: 0x0fbb, 0xda6: 0x1157, 0xda7: 0x12f7, 0xda8: 0x1303, 0xda9: 0x1457, + 0xdaa: 0x14d7, 0xdab: 0x0883, 0xdac: 0x0e4b, 0xdad: 0x0903, 0xdae: 0x0ec7, 0xdaf: 0x0f6b, + 0xdb0: 0x1287, 0xdb1: 0x14bf, 0xdb2: 0x15ab, 0xdb3: 0x15d3, 0xdb4: 0x0d37, 0xdb5: 0x0e27, + 0xdb6: 0x11c3, 0xdb7: 0x10b7, 0xdb8: 0x10c3, 0xdb9: 0x10e7, 0xdba: 0x0f17, 0xdbb: 0x0e9f, + 0xdbc: 0x1363, 0xdbd: 0x0733, 0xdbe: 0x122b, 0xdbf: 0x081b, + // Block 0x37, offset 0xdc0 + 0xdc0: 0x080b, 0xdc1: 0x0b0b, 0xdc2: 0x0c2b, 0xdc3: 0x10f3, 0xdc4: 0x0a53, 0xdc5: 0x0e03, + 0xdc6: 0x0cef, 0xdc7: 0x13e7, 0xdc8: 0x12e7, 0xdc9: 0x14ab, 0xdca: 0x1323, 0xdcb: 0x0b27, + 0xdcc: 0x0787, 0xdcd: 0x095b, 0xdd0: 0x09af, + 0xdd2: 0x0cdf, 0xdd5: 0x07f7, 0xdd6: 0x0f1f, 0xdd7: 0x0fe3, + 0xdd8: 0x1047, 0xdd9: 0x1063, 0xdda: 0x1067, 0xddb: 0x107b, 0xddc: 0x14fb, 0xddd: 0x10eb, + 0xdde: 0x116f, 0xde0: 0x128f, 0xde2: 0x1353, + 0xde5: 0x1407, 0xde6: 0x1433, + 0xdea: 0x154f, 0xdeb: 0x1553, 0xdec: 0x1557, 0xded: 0x15bb, 0xdee: 0x142b, 0xdef: 0x14c7, + 0xdf0: 0x0757, 0xdf1: 0x077b, 0xdf2: 0x078f, 0xdf3: 0x084b, 0xdf4: 0x0857, 0xdf5: 0x0897, + 0xdf6: 0x094b, 0xdf7: 0x0967, 0xdf8: 0x096f, 0xdf9: 0x09ab, 0xdfa: 0x09b7, 0xdfb: 0x0a93, + 0xdfc: 0x0a9b, 0xdfd: 0x0ba3, 0xdfe: 0x0bcb, 0xdff: 0x0bd3, + // Block 0x38, offset 0xe00 + 0xe00: 0x0beb, 0xe01: 0x0c97, 0xe02: 0x0cc7, 0xe03: 0x0ce7, 0xe04: 0x0d57, 0xe05: 0x0e1b, + 0xe06: 0x0e37, 0xe07: 0x0e67, 0xe08: 0x0ebb, 0xe09: 0x0edb, 0xe0a: 0x0f4f, 0xe0b: 0x102f, + 0xe0c: 0x104b, 0xe0d: 0x1053, 0xe0e: 0x104f, 0xe0f: 0x1057, 0xe10: 0x105b, 0xe11: 0x105f, + 0xe12: 0x1073, 0xe13: 0x1077, 0xe14: 0x109b, 0xe15: 0x10af, 0xe16: 0x10cb, 0xe17: 0x112f, + 0xe18: 0x1137, 0xe19: 0x113f, 0xe1a: 0x1153, 0xe1b: 0x117b, 0xe1c: 0x11cb, 0xe1d: 0x11ff, + 0xe1e: 0x11ff, 0xe1f: 0x1267, 0xe20: 0x130f, 0xe21: 0x1327, 0xe22: 0x135b, 0xe23: 0x135f, + 0xe24: 0x13a3, 0xe25: 0x13a7, 0xe26: 0x13ff, 0xe27: 0x1407, 0xe28: 0x14db, 0xe29: 0x151f, + 0xe2a: 0x1537, 0xe2b: 0x0b9b, 0xe2c: 0x171e, 0xe2d: 0x11e3, + 0xe30: 0x06df, 0xe31: 0x07e3, 0xe32: 0x07a3, 0xe33: 0x074b, 0xe34: 0x078b, 0xe35: 0x07b7, + 0xe36: 0x0847, 0xe37: 0x0863, 0xe38: 0x094b, 0xe39: 0x0937, 0xe3a: 0x0947, 0xe3b: 0x0963, + 0xe3c: 0x09af, 0xe3d: 0x09bf, 0xe3e: 0x0a03, 0xe3f: 0x0a0f, + // Block 0x39, offset 0xe40 + 0xe40: 0x0a2b, 0xe41: 0x0a3b, 0xe42: 0x0b23, 0xe43: 0x0b2b, 0xe44: 0x0b5b, 0xe45: 0x0b7b, + 0xe46: 0x0bab, 0xe47: 0x0bc3, 0xe48: 0x0bb3, 0xe49: 0x0bd3, 0xe4a: 0x0bc7, 0xe4b: 0x0beb, + 0xe4c: 0x0c07, 0xe4d: 0x0c5f, 0xe4e: 0x0c6b, 0xe4f: 0x0c73, 0xe50: 0x0c9b, 0xe51: 0x0cdf, + 0xe52: 0x0d0f, 0xe53: 0x0d13, 0xe54: 0x0d27, 0xe55: 0x0da7, 0xe56: 0x0db7, 0xe57: 0x0e0f, + 0xe58: 0x0e5b, 0xe59: 0x0e53, 0xe5a: 0x0e67, 0xe5b: 0x0e83, 0xe5c: 0x0ebb, 0xe5d: 0x1013, + 0xe5e: 0x0edf, 0xe5f: 0x0f13, 0xe60: 0x0f1f, 0xe61: 0x0f5f, 0xe62: 0x0f7b, 0xe63: 0x0f9f, + 0xe64: 0x0fc3, 0xe65: 0x0fc7, 0xe66: 0x0fe3, 0xe67: 0x0fe7, 0xe68: 0x0ff7, 0xe69: 0x100b, + 0xe6a: 0x1007, 0xe6b: 0x1037, 0xe6c: 0x10b3, 0xe6d: 0x10cb, 0xe6e: 0x10e3, 0xe6f: 0x111b, + 0xe70: 0x112f, 0xe71: 0x114b, 0xe72: 0x117b, 0xe73: 0x122f, 0xe74: 0x1257, 0xe75: 0x12cb, + 0xe76: 0x1313, 0xe77: 0x131f, 0xe78: 0x1327, 0xe79: 0x133f, 0xe7a: 0x1353, 0xe7b: 0x1343, + 0xe7c: 0x135b, 0xe7d: 0x1357, 0xe7e: 0x134f, 0xe7f: 0x135f, + // Block 0x3a, offset 0xe80 + 0xe80: 0x136b, 0xe81: 0x13a7, 0xe82: 0x13e3, 0xe83: 0x1413, 0xe84: 0x144b, 0xe85: 0x146b, + 0xe86: 0x14b7, 0xe87: 0x14db, 0xe88: 0x14fb, 0xe89: 0x150f, 0xe8a: 0x151f, 0xe8b: 0x152b, + 0xe8c: 0x1537, 0xe8d: 0x158b, 0xe8e: 0x162b, 0xe8f: 0x16b5, 0xe90: 0x16b0, 0xe91: 0x16e2, + 0xe92: 0x0607, 0xe93: 0x062f, 0xe94: 0x0633, 0xe95: 0x1764, 0xe96: 0x1791, 0xe97: 0x1809, + 0xe98: 0x1617, 0xe99: 0x1627, + // Block 0x3b, offset 0xec0 + 0xec0: 0x19d5, 0xec1: 0x19d8, 0xec2: 0x19db, 0xec3: 0x1c08, 0xec4: 0x1c0c, 0xec5: 0x1a5f, + 0xec6: 0x1a5f, + 0xed3: 0x1d75, 0xed4: 0x1d66, 0xed5: 0x1d6b, 0xed6: 0x1d7a, 0xed7: 0x1d70, + 0xedd: 0x4390, + 0xede: 0x8115, 0xedf: 0x4402, 0xee0: 0x022d, 0xee1: 0x0215, 0xee2: 0x021e, 0xee3: 0x0221, + 0xee4: 0x0224, 0xee5: 0x0227, 0xee6: 0x022a, 0xee7: 0x0230, 0xee8: 0x0233, 0xee9: 0x0017, + 0xeea: 0x43f0, 0xeeb: 0x43f6, 0xeec: 0x44f4, 0xeed: 0x44fc, 0xeee: 0x4348, 0xeef: 0x434e, + 0xef0: 0x4354, 0xef1: 0x435a, 0xef2: 0x4366, 0xef3: 0x436c, 0xef4: 0x4372, 0xef5: 0x437e, + 0xef6: 0x4384, 0xef8: 0x438a, 0xef9: 0x4396, 0xefa: 0x439c, 0xefb: 0x43a2, + 0xefc: 0x43ae, 0xefe: 0x43b4, + // Block 0x3c, offset 0xf00 + 0xf00: 0x43ba, 0xf01: 0x43c0, 0xf03: 0x43c6, 0xf04: 0x43cc, + 0xf06: 0x43d8, 0xf07: 0x43de, 0xf08: 0x43e4, 0xf09: 0x43ea, 0xf0a: 0x43fc, 0xf0b: 0x4378, + 0xf0c: 0x4360, 0xf0d: 0x43a8, 0xf0e: 0x43d2, 0xf0f: 0x1d7f, 0xf10: 0x0299, 0xf11: 0x0299, + 0xf12: 0x02a2, 0xf13: 0x02a2, 0xf14: 0x02a2, 0xf15: 0x02a2, 0xf16: 0x02a5, 0xf17: 0x02a5, + 0xf18: 0x02a5, 0xf19: 0x02a5, 0xf1a: 0x02ab, 0xf1b: 0x02ab, 0xf1c: 0x02ab, 0xf1d: 0x02ab, + 0xf1e: 0x029f, 0xf1f: 0x029f, 0xf20: 0x029f, 0xf21: 0x029f, 0xf22: 0x02a8, 0xf23: 0x02a8, + 0xf24: 0x02a8, 0xf25: 0x02a8, 0xf26: 0x029c, 0xf27: 0x029c, 0xf28: 0x029c, 0xf29: 0x029c, + 0xf2a: 0x02cf, 0xf2b: 0x02cf, 0xf2c: 0x02cf, 0xf2d: 0x02cf, 0xf2e: 0x02d2, 0xf2f: 0x02d2, + 0xf30: 0x02d2, 0xf31: 0x02d2, 0xf32: 0x02b1, 0xf33: 0x02b1, 0xf34: 0x02b1, 0xf35: 0x02b1, + 0xf36: 0x02ae, 0xf37: 0x02ae, 0xf38: 0x02ae, 0xf39: 0x02ae, 0xf3a: 0x02b4, 0xf3b: 0x02b4, + 0xf3c: 0x02b4, 0xf3d: 0x02b4, 0xf3e: 0x02b7, 0xf3f: 0x02b7, + // Block 0x3d, offset 0xf40 + 0xf40: 0x02b7, 0xf41: 0x02b7, 0xf42: 0x02c0, 0xf43: 0x02c0, 0xf44: 0x02bd, 0xf45: 0x02bd, + 0xf46: 0x02c3, 0xf47: 0x02c3, 0xf48: 0x02ba, 0xf49: 0x02ba, 0xf4a: 0x02c9, 0xf4b: 0x02c9, + 0xf4c: 0x02c6, 0xf4d: 0x02c6, 0xf4e: 0x02d5, 0xf4f: 0x02d5, 0xf50: 0x02d5, 0xf51: 0x02d5, + 0xf52: 0x02db, 0xf53: 0x02db, 0xf54: 0x02db, 0xf55: 0x02db, 0xf56: 0x02e1, 0xf57: 0x02e1, + 0xf58: 0x02e1, 0xf59: 0x02e1, 0xf5a: 0x02de, 0xf5b: 0x02de, 0xf5c: 0x02de, 0xf5d: 0x02de, + 0xf5e: 0x02e4, 0xf5f: 0x02e4, 0xf60: 0x02e7, 0xf61: 0x02e7, 0xf62: 0x02e7, 0xf63: 0x02e7, + 0xf64: 0x446e, 0xf65: 0x446e, 0xf66: 0x02ed, 0xf67: 0x02ed, 0xf68: 0x02ed, 0xf69: 0x02ed, + 0xf6a: 0x02ea, 0xf6b: 0x02ea, 0xf6c: 0x02ea, 0xf6d: 0x02ea, 0xf6e: 0x0308, 0xf6f: 0x0308, + 0xf70: 0x4468, 0xf71: 0x4468, + // Block 0x3e, offset 0xf80 + 0xf93: 0x02d8, 0xf94: 0x02d8, 0xf95: 0x02d8, 0xf96: 0x02d8, 0xf97: 0x02f6, + 0xf98: 0x02f6, 0xf99: 0x02f3, 0xf9a: 0x02f3, 0xf9b: 0x02f9, 0xf9c: 0x02f9, 0xf9d: 0x204f, + 0xf9e: 0x02ff, 0xf9f: 0x02ff, 0xfa0: 0x02f0, 0xfa1: 0x02f0, 0xfa2: 0x02fc, 0xfa3: 0x02fc, + 0xfa4: 0x0305, 0xfa5: 0x0305, 0xfa6: 0x0305, 0xfa7: 0x0305, 0xfa8: 0x028d, 0xfa9: 0x028d, + 0xfaa: 0x25aa, 0xfab: 0x25aa, 0xfac: 0x261a, 0xfad: 0x261a, 0xfae: 0x25e9, 0xfaf: 0x25e9, + 0xfb0: 0x2605, 0xfb1: 0x2605, 0xfb2: 0x25fe, 0xfb3: 0x25fe, 0xfb4: 0x260c, 0xfb5: 0x260c, + 0xfb6: 0x2613, 0xfb7: 0x2613, 0xfb8: 0x2613, 0xfb9: 0x25f0, 0xfba: 0x25f0, 0xfbb: 0x25f0, + 0xfbc: 0x0302, 0xfbd: 0x0302, 0xfbe: 0x0302, 0xfbf: 0x0302, + // Block 0x3f, offset 0xfc0 + 0xfc0: 0x25b1, 0xfc1: 0x25b8, 0xfc2: 0x25d4, 0xfc3: 0x25f0, 0xfc4: 0x25f7, 0xfc5: 0x1d89, + 0xfc6: 0x1d8e, 0xfc7: 0x1d93, 0xfc8: 0x1da2, 0xfc9: 0x1db1, 0xfca: 0x1db6, 0xfcb: 0x1dbb, + 0xfcc: 0x1dc0, 0xfcd: 0x1dc5, 0xfce: 0x1dd4, 0xfcf: 0x1de3, 0xfd0: 0x1de8, 0xfd1: 0x1ded, + 0xfd2: 0x1dfc, 0xfd3: 0x1e0b, 0xfd4: 0x1e10, 0xfd5: 0x1e15, 0xfd6: 0x1e1a, 0xfd7: 0x1e29, + 0xfd8: 0x1e2e, 0xfd9: 0x1e3d, 0xfda: 0x1e42, 0xfdb: 0x1e47, 0xfdc: 0x1e56, 0xfdd: 0x1e5b, + 0xfde: 0x1e60, 0xfdf: 0x1e6a, 0xfe0: 0x1ea6, 0xfe1: 0x1eb5, 0xfe2: 0x1ec4, 0xfe3: 0x1ec9, + 0xfe4: 0x1ece, 0xfe5: 0x1ed8, 0xfe6: 0x1ee7, 0xfe7: 0x1eec, 0xfe8: 0x1efb, 0xfe9: 0x1f00, + 0xfea: 0x1f05, 0xfeb: 0x1f14, 0xfec: 0x1f19, 0xfed: 0x1f28, 0xfee: 0x1f2d, 0xfef: 0x1f32, + 0xff0: 0x1f37, 0xff1: 0x1f3c, 0xff2: 0x1f41, 0xff3: 0x1f46, 0xff4: 0x1f4b, 0xff5: 0x1f50, + 0xff6: 0x1f55, 0xff7: 0x1f5a, 0xff8: 0x1f5f, 0xff9: 0x1f64, 0xffa: 0x1f69, 0xffb: 0x1f6e, + 0xffc: 0x1f73, 0xffd: 0x1f78, 0xffe: 0x1f7d, 0xfff: 0x1f87, + // Block 0x40, offset 0x1000 + 0x1000: 0x1f8c, 0x1001: 0x1f91, 0x1002: 0x1f96, 0x1003: 0x1fa0, 0x1004: 0x1fa5, 0x1005: 0x1faf, + 0x1006: 0x1fb4, 0x1007: 0x1fb9, 0x1008: 0x1fbe, 0x1009: 0x1fc3, 0x100a: 0x1fc8, 0x100b: 0x1fcd, + 0x100c: 0x1fd2, 0x100d: 0x1fd7, 0x100e: 0x1fe6, 0x100f: 0x1ff5, 0x1010: 0x1ffa, 0x1011: 0x1fff, + 0x1012: 0x2004, 0x1013: 0x2009, 0x1014: 0x200e, 0x1015: 0x2018, 0x1016: 0x201d, 0x1017: 0x2022, + 0x1018: 0x2031, 0x1019: 0x2040, 0x101a: 0x2045, 0x101b: 0x4420, 0x101c: 0x4426, 0x101d: 0x445c, + 0x101e: 0x44b3, 0x101f: 0x44ba, 0x1020: 0x44c1, 0x1021: 0x44c8, 0x1022: 0x44cf, 0x1023: 0x44d6, + 0x1024: 0x25c6, 0x1025: 0x25cd, 0x1026: 0x25d4, 0x1027: 0x25db, 0x1028: 0x25f0, 0x1029: 0x25f7, + 0x102a: 0x1d98, 0x102b: 0x1d9d, 0x102c: 0x1da2, 0x102d: 0x1da7, 0x102e: 0x1db1, 0x102f: 0x1db6, + 0x1030: 0x1dca, 0x1031: 0x1dcf, 0x1032: 0x1dd4, 0x1033: 0x1dd9, 0x1034: 0x1de3, 0x1035: 0x1de8, + 0x1036: 0x1df2, 0x1037: 0x1df7, 0x1038: 0x1dfc, 0x1039: 0x1e01, 0x103a: 0x1e0b, 0x103b: 0x1e10, + 0x103c: 0x1f3c, 0x103d: 0x1f41, 0x103e: 0x1f50, 0x103f: 0x1f55, + // Block 0x41, offset 0x1040 + 0x1040: 0x1f5a, 0x1041: 0x1f6e, 0x1042: 0x1f73, 0x1043: 0x1f78, 0x1044: 0x1f7d, 0x1045: 0x1f96, + 0x1046: 0x1fa0, 0x1047: 0x1fa5, 0x1048: 0x1faa, 0x1049: 0x1fbe, 0x104a: 0x1fdc, 0x104b: 0x1fe1, + 0x104c: 0x1fe6, 0x104d: 0x1feb, 0x104e: 0x1ff5, 0x104f: 0x1ffa, 0x1050: 0x445c, 0x1051: 0x2027, + 0x1052: 0x202c, 0x1053: 0x2031, 0x1054: 0x2036, 0x1055: 0x2040, 0x1056: 0x2045, 0x1057: 0x25b1, + 0x1058: 0x25b8, 0x1059: 0x25bf, 0x105a: 0x25d4, 0x105b: 0x25e2, 0x105c: 0x1d89, 0x105d: 0x1d8e, + 0x105e: 0x1d93, 0x105f: 0x1da2, 0x1060: 0x1dac, 0x1061: 0x1dbb, 0x1062: 0x1dc0, 0x1063: 0x1dc5, + 0x1064: 0x1dd4, 0x1065: 0x1dde, 0x1066: 0x1dfc, 0x1067: 0x1e15, 0x1068: 0x1e1a, 0x1069: 0x1e29, + 0x106a: 0x1e2e, 0x106b: 0x1e3d, 0x106c: 0x1e47, 0x106d: 0x1e56, 0x106e: 0x1e5b, 0x106f: 0x1e60, + 0x1070: 0x1e6a, 0x1071: 0x1ea6, 0x1072: 0x1eab, 0x1073: 0x1eb5, 0x1074: 0x1ec4, 0x1075: 0x1ec9, + 0x1076: 0x1ece, 0x1077: 0x1ed8, 0x1078: 0x1ee7, 0x1079: 0x1efb, 0x107a: 0x1f00, 0x107b: 0x1f05, + 0x107c: 0x1f14, 0x107d: 0x1f19, 0x107e: 0x1f28, 0x107f: 0x1f2d, + // Block 0x42, offset 0x1080 + 0x1080: 0x1f32, 0x1081: 0x1f37, 0x1082: 0x1f46, 0x1083: 0x1f4b, 0x1084: 0x1f5f, 0x1085: 0x1f64, + 0x1086: 0x1f69, 0x1087: 0x1f6e, 0x1088: 0x1f73, 0x1089: 0x1f87, 0x108a: 0x1f8c, 0x108b: 0x1f91, + 0x108c: 0x1f96, 0x108d: 0x1f9b, 0x108e: 0x1faf, 0x108f: 0x1fb4, 0x1090: 0x1fb9, 0x1091: 0x1fbe, + 0x1092: 0x1fcd, 0x1093: 0x1fd2, 0x1094: 0x1fd7, 0x1095: 0x1fe6, 0x1096: 0x1ff0, 0x1097: 0x1fff, + 0x1098: 0x2004, 0x1099: 0x4450, 0x109a: 0x2018, 0x109b: 0x201d, 0x109c: 0x2022, 0x109d: 0x2031, + 0x109e: 0x203b, 0x109f: 0x25d4, 0x10a0: 0x25e2, 0x10a1: 0x1da2, 0x10a2: 0x1dac, 0x10a3: 0x1dd4, + 0x10a4: 0x1dde, 0x10a5: 0x1dfc, 0x10a6: 0x1e06, 0x10a7: 0x1e6a, 0x10a8: 0x1e6f, 0x10a9: 0x1e92, + 0x10aa: 0x1e97, 0x10ab: 0x1f6e, 0x10ac: 0x1f73, 0x10ad: 0x1f96, 0x10ae: 0x1fe6, 0x10af: 0x1ff0, + 0x10b0: 0x2031, 0x10b1: 0x203b, 0x10b2: 0x4504, 0x10b3: 0x450c, 0x10b4: 0x4514, 0x10b5: 0x1ef1, + 0x10b6: 0x1ef6, 0x10b7: 0x1f0a, 0x10b8: 0x1f0f, 0x10b9: 0x1f1e, 0x10ba: 0x1f23, 0x10bb: 0x1e74, + 0x10bc: 0x1e79, 0x10bd: 0x1e9c, 0x10be: 0x1ea1, 0x10bf: 0x1e33, + // Block 0x43, offset 0x10c0 + 0x10c0: 0x1e38, 0x10c1: 0x1e1f, 0x10c2: 0x1e24, 0x10c3: 0x1e4c, 0x10c4: 0x1e51, 0x10c5: 0x1eba, + 0x10c6: 0x1ebf, 0x10c7: 0x1edd, 0x10c8: 0x1ee2, 0x10c9: 0x1e7e, 0x10ca: 0x1e83, 0x10cb: 0x1e88, + 0x10cc: 0x1e92, 0x10cd: 0x1e8d, 0x10ce: 0x1e65, 0x10cf: 0x1eb0, 0x10d0: 0x1ed3, 0x10d1: 0x1ef1, + 0x10d2: 0x1ef6, 0x10d3: 0x1f0a, 0x10d4: 0x1f0f, 0x10d5: 0x1f1e, 0x10d6: 0x1f23, 0x10d7: 0x1e74, + 0x10d8: 0x1e79, 0x10d9: 0x1e9c, 0x10da: 0x1ea1, 0x10db: 0x1e33, 0x10dc: 0x1e38, 0x10dd: 0x1e1f, + 0x10de: 0x1e24, 0x10df: 0x1e4c, 0x10e0: 0x1e51, 0x10e1: 0x1eba, 0x10e2: 0x1ebf, 0x10e3: 0x1edd, + 0x10e4: 0x1ee2, 0x10e5: 0x1e7e, 0x10e6: 0x1e83, 0x10e7: 0x1e88, 0x10e8: 0x1e92, 0x10e9: 0x1e8d, + 0x10ea: 0x1e65, 0x10eb: 0x1eb0, 0x10ec: 0x1ed3, 0x10ed: 0x1e7e, 0x10ee: 0x1e83, 0x10ef: 0x1e88, + 0x10f0: 0x1e92, 0x10f1: 0x1e6f, 0x10f2: 0x1e97, 0x10f3: 0x1eec, 0x10f4: 0x1e56, 0x10f5: 0x1e5b, + 0x10f6: 0x1e60, 0x10f7: 0x1e7e, 0x10f8: 0x1e83, 0x10f9: 0x1e88, 0x10fa: 0x1eec, 0x10fb: 0x1efb, + 0x10fc: 0x4408, 0x10fd: 0x4408, + // Block 0x44, offset 0x1100 + 0x1110: 0x2311, 0x1111: 0x2326, + 0x1112: 0x2326, 0x1113: 0x232d, 0x1114: 0x2334, 0x1115: 0x2349, 0x1116: 0x2350, 0x1117: 0x2357, + 0x1118: 0x237a, 0x1119: 0x237a, 0x111a: 0x239d, 0x111b: 0x2396, 0x111c: 0x23b2, 0x111d: 0x23a4, + 0x111e: 0x23ab, 0x111f: 0x23ce, 0x1120: 0x23ce, 0x1121: 0x23c7, 0x1122: 0x23d5, 0x1123: 0x23d5, + 0x1124: 0x23ff, 0x1125: 0x23ff, 0x1126: 0x241b, 0x1127: 0x23e3, 0x1128: 0x23e3, 0x1129: 0x23dc, + 0x112a: 0x23f1, 0x112b: 0x23f1, 0x112c: 0x23f8, 0x112d: 0x23f8, 0x112e: 0x2422, 0x112f: 0x2430, + 0x1130: 0x2430, 0x1131: 0x2437, 0x1132: 0x2437, 0x1133: 0x243e, 0x1134: 0x2445, 0x1135: 0x244c, + 0x1136: 0x2453, 0x1137: 0x2453, 0x1138: 0x245a, 0x1139: 0x2468, 0x113a: 0x2476, 0x113b: 0x246f, + 0x113c: 0x247d, 0x113d: 0x247d, 0x113e: 0x2492, 0x113f: 0x2499, + // Block 0x45, offset 0x1140 + 0x1140: 0x24ca, 0x1141: 0x24d8, 0x1142: 0x24d1, 0x1143: 0x24b5, 0x1144: 0x24b5, 0x1145: 0x24df, + 0x1146: 0x24df, 0x1147: 0x24e6, 0x1148: 0x24e6, 0x1149: 0x2510, 0x114a: 0x2517, 0x114b: 0x251e, + 0x114c: 0x24f4, 0x114d: 0x2502, 0x114e: 0x2525, 0x114f: 0x252c, + 0x1152: 0x24fb, 0x1153: 0x2580, 0x1154: 0x2587, 0x1155: 0x255d, 0x1156: 0x2564, 0x1157: 0x2548, + 0x1158: 0x2548, 0x1159: 0x254f, 0x115a: 0x2579, 0x115b: 0x2572, 0x115c: 0x259c, 0x115d: 0x259c, + 0x115e: 0x230a, 0x115f: 0x231f, 0x1160: 0x2318, 0x1161: 0x2342, 0x1162: 0x233b, 0x1163: 0x2365, + 0x1164: 0x235e, 0x1165: 0x2388, 0x1166: 0x236c, 0x1167: 0x2381, 0x1168: 0x23b9, 0x1169: 0x2406, + 0x116a: 0x23ea, 0x116b: 0x2429, 0x116c: 0x24c3, 0x116d: 0x24ed, 0x116e: 0x2595, 0x116f: 0x258e, + 0x1170: 0x25a3, 0x1171: 0x253a, 0x1172: 0x24a0, 0x1173: 0x256b, 0x1174: 0x2492, 0x1175: 0x24ca, + 0x1176: 0x2461, 0x1177: 0x24ae, 0x1178: 0x2541, 0x1179: 0x2533, 0x117a: 0x24bc, 0x117b: 0x24a7, + 0x117c: 0x24bc, 0x117d: 0x2541, 0x117e: 0x2373, 0x117f: 0x238f, + // Block 0x46, offset 0x1180 + 0x1180: 0x2509, 0x1181: 0x2484, 0x1182: 0x2303, 0x1183: 0x24a7, 0x1184: 0x244c, 0x1185: 0x241b, + 0x1186: 0x23c0, 0x1187: 0x2556, + 0x11b0: 0x2414, 0x11b1: 0x248b, 0x11b2: 0x27bf, 0x11b3: 0x27b6, 0x11b4: 0x27ec, 0x11b5: 0x27da, + 0x11b6: 0x27c8, 0x11b7: 0x27e3, 0x11b8: 0x27f5, 0x11b9: 0x240d, 0x11ba: 0x2c7c, 0x11bb: 0x2afc, + 0x11bc: 0x27d1, + // Block 0x47, offset 0x11c0 + 0x11d0: 0x0019, 0x11d1: 0x0483, + 0x11d2: 0x0487, 0x11d3: 0x0035, 0x11d4: 0x0037, 0x11d5: 0x0003, 0x11d6: 0x003f, 0x11d7: 0x04bf, + 0x11d8: 0x04c3, 0x11d9: 0x1b5c, + 0x11e0: 0x8132, 0x11e1: 0x8132, 0x11e2: 0x8132, 0x11e3: 0x8132, + 0x11e4: 0x8132, 0x11e5: 0x8132, 0x11e6: 0x8132, 0x11e7: 0x812d, 0x11e8: 0x812d, 0x11e9: 0x812d, + 0x11ea: 0x812d, 0x11eb: 0x812d, 0x11ec: 0x812d, 0x11ed: 0x812d, 0x11ee: 0x8132, 0x11ef: 0x8132, + 0x11f0: 0x1873, 0x11f1: 0x0443, 0x11f2: 0x043f, 0x11f3: 0x007f, 0x11f4: 0x007f, 0x11f5: 0x0011, + 0x11f6: 0x0013, 0x11f7: 0x00b7, 0x11f8: 0x00bb, 0x11f9: 0x04b7, 0x11fa: 0x04bb, 0x11fb: 0x04ab, + 0x11fc: 0x04af, 0x11fd: 0x0493, 0x11fe: 0x0497, 0x11ff: 0x048b, + // Block 0x48, offset 0x1200 + 0x1200: 0x048f, 0x1201: 0x049b, 0x1202: 0x049f, 0x1203: 0x04a3, 0x1204: 0x04a7, + 0x1207: 0x0077, 0x1208: 0x007b, 0x1209: 0x4269, 0x120a: 0x4269, 0x120b: 0x4269, + 0x120c: 0x4269, 0x120d: 0x007f, 0x120e: 0x007f, 0x120f: 0x007f, 0x1210: 0x0019, 0x1211: 0x0483, + 0x1212: 0x001d, 0x1214: 0x0037, 0x1215: 0x0035, 0x1216: 0x003f, 0x1217: 0x0003, + 0x1218: 0x0443, 0x1219: 0x0011, 0x121a: 0x0013, 0x121b: 0x00b7, 0x121c: 0x00bb, 0x121d: 0x04b7, + 0x121e: 0x04bb, 0x121f: 0x0007, 0x1220: 0x000d, 0x1221: 0x0015, 0x1222: 0x0017, 0x1223: 0x001b, + 0x1224: 0x0039, 0x1225: 0x003d, 0x1226: 0x003b, 0x1228: 0x0079, 0x1229: 0x0009, + 0x122a: 0x000b, 0x122b: 0x0041, + 0x1230: 0x42aa, 0x1231: 0x442c, 0x1232: 0x42af, 0x1234: 0x42b4, + 0x1236: 0x42b9, 0x1237: 0x4432, 0x1238: 0x42be, 0x1239: 0x4438, 0x123a: 0x42c3, 0x123b: 0x443e, + 0x123c: 0x42c8, 0x123d: 0x4444, 0x123e: 0x42cd, 0x123f: 0x444a, + // Block 0x49, offset 0x1240 + 0x1240: 0x0236, 0x1241: 0x440e, 0x1242: 0x440e, 0x1243: 0x4414, 0x1244: 0x4414, 0x1245: 0x4456, + 0x1246: 0x4456, 0x1247: 0x441a, 0x1248: 0x441a, 0x1249: 0x4462, 0x124a: 0x4462, 0x124b: 0x4462, + 0x124c: 0x4462, 0x124d: 0x0239, 0x124e: 0x0239, 0x124f: 0x023c, 0x1250: 0x023c, 0x1251: 0x023c, + 0x1252: 0x023c, 0x1253: 0x023f, 0x1254: 0x023f, 0x1255: 0x0242, 0x1256: 0x0242, 0x1257: 0x0242, + 0x1258: 0x0242, 0x1259: 0x0245, 0x125a: 0x0245, 0x125b: 0x0245, 0x125c: 0x0245, 0x125d: 0x0248, + 0x125e: 0x0248, 0x125f: 0x0248, 0x1260: 0x0248, 0x1261: 0x024b, 0x1262: 0x024b, 0x1263: 0x024b, + 0x1264: 0x024b, 0x1265: 0x024e, 0x1266: 0x024e, 0x1267: 0x024e, 0x1268: 0x024e, 0x1269: 0x0251, + 0x126a: 0x0251, 0x126b: 0x0254, 0x126c: 0x0254, 0x126d: 0x0257, 0x126e: 0x0257, 0x126f: 0x025a, + 0x1270: 0x025a, 0x1271: 0x025d, 0x1272: 0x025d, 0x1273: 0x025d, 0x1274: 0x025d, 0x1275: 0x0260, + 0x1276: 0x0260, 0x1277: 0x0260, 0x1278: 0x0260, 0x1279: 0x0263, 0x127a: 0x0263, 0x127b: 0x0263, + 0x127c: 0x0263, 0x127d: 0x0266, 0x127e: 0x0266, 0x127f: 0x0266, + // Block 0x4a, offset 0x1280 + 0x1280: 0x0266, 0x1281: 0x0269, 0x1282: 0x0269, 0x1283: 0x0269, 0x1284: 0x0269, 0x1285: 0x026c, + 0x1286: 0x026c, 0x1287: 0x026c, 0x1288: 0x026c, 0x1289: 0x026f, 0x128a: 0x026f, 0x128b: 0x026f, + 0x128c: 0x026f, 0x128d: 0x0272, 0x128e: 0x0272, 0x128f: 0x0272, 0x1290: 0x0272, 0x1291: 0x0275, + 0x1292: 0x0275, 0x1293: 0x0275, 0x1294: 0x0275, 0x1295: 0x0278, 0x1296: 0x0278, 0x1297: 0x0278, + 0x1298: 0x0278, 0x1299: 0x027b, 0x129a: 0x027b, 0x129b: 0x027b, 0x129c: 0x027b, 0x129d: 0x027e, + 0x129e: 0x027e, 0x129f: 0x027e, 0x12a0: 0x027e, 0x12a1: 0x0281, 0x12a2: 0x0281, 0x12a3: 0x0281, + 0x12a4: 0x0281, 0x12a5: 0x0284, 0x12a6: 0x0284, 0x12a7: 0x0284, 0x12a8: 0x0284, 0x12a9: 0x0287, + 0x12aa: 0x0287, 0x12ab: 0x0287, 0x12ac: 0x0287, 0x12ad: 0x028a, 0x12ae: 0x028a, 0x12af: 0x028d, + 0x12b0: 0x028d, 0x12b1: 0x0290, 0x12b2: 0x0290, 0x12b3: 0x0290, 0x12b4: 0x0290, 0x12b5: 0x2e00, + 0x12b6: 0x2e00, 0x12b7: 0x2e08, 0x12b8: 0x2e08, 0x12b9: 0x2e10, 0x12ba: 0x2e10, 0x12bb: 0x1f82, + 0x12bc: 0x1f82, + // Block 0x4b, offset 0x12c0 + 0x12c0: 0x0081, 0x12c1: 0x0083, 0x12c2: 0x0085, 0x12c3: 0x0087, 0x12c4: 0x0089, 0x12c5: 0x008b, + 0x12c6: 0x008d, 0x12c7: 0x008f, 0x12c8: 0x0091, 0x12c9: 0x0093, 0x12ca: 0x0095, 0x12cb: 0x0097, + 0x12cc: 0x0099, 0x12cd: 0x009b, 0x12ce: 0x009d, 0x12cf: 0x009f, 0x12d0: 0x00a1, 0x12d1: 0x00a3, + 0x12d2: 0x00a5, 0x12d3: 0x00a7, 0x12d4: 0x00a9, 0x12d5: 0x00ab, 0x12d6: 0x00ad, 0x12d7: 0x00af, + 0x12d8: 0x00b1, 0x12d9: 0x00b3, 0x12da: 0x00b5, 0x12db: 0x00b7, 0x12dc: 0x00b9, 0x12dd: 0x00bb, + 0x12de: 0x00bd, 0x12df: 0x0477, 0x12e0: 0x047b, 0x12e1: 0x0487, 0x12e2: 0x049b, 0x12e3: 0x049f, + 0x12e4: 0x0483, 0x12e5: 0x05ab, 0x12e6: 0x05a3, 0x12e7: 0x04c7, 0x12e8: 0x04cf, 0x12e9: 0x04d7, + 0x12ea: 0x04df, 0x12eb: 0x04e7, 0x12ec: 0x056b, 0x12ed: 0x0573, 0x12ee: 0x057b, 0x12ef: 0x051f, + 0x12f0: 0x05af, 0x12f1: 0x04cb, 0x12f2: 0x04d3, 0x12f3: 0x04db, 0x12f4: 0x04e3, 0x12f5: 0x04eb, + 0x12f6: 0x04ef, 0x12f7: 0x04f3, 0x12f8: 0x04f7, 0x12f9: 0x04fb, 0x12fa: 0x04ff, 0x12fb: 0x0503, + 0x12fc: 0x0507, 0x12fd: 0x050b, 0x12fe: 0x050f, 0x12ff: 0x0513, + // Block 0x4c, offset 0x1300 + 0x1300: 0x0517, 0x1301: 0x051b, 0x1302: 0x0523, 0x1303: 0x0527, 0x1304: 0x052b, 0x1305: 0x052f, + 0x1306: 0x0533, 0x1307: 0x0537, 0x1308: 0x053b, 0x1309: 0x053f, 0x130a: 0x0543, 0x130b: 0x0547, + 0x130c: 0x054b, 0x130d: 0x054f, 0x130e: 0x0553, 0x130f: 0x0557, 0x1310: 0x055b, 0x1311: 0x055f, + 0x1312: 0x0563, 0x1313: 0x0567, 0x1314: 0x056f, 0x1315: 0x0577, 0x1316: 0x057f, 0x1317: 0x0583, + 0x1318: 0x0587, 0x1319: 0x058b, 0x131a: 0x058f, 0x131b: 0x0593, 0x131c: 0x0597, 0x131d: 0x05a7, + 0x131e: 0x4a78, 0x131f: 0x4a7e, 0x1320: 0x03c3, 0x1321: 0x0313, 0x1322: 0x0317, 0x1323: 0x4a3b, + 0x1324: 0x031b, 0x1325: 0x4a41, 0x1326: 0x4a47, 0x1327: 0x031f, 0x1328: 0x0323, 0x1329: 0x0327, + 0x132a: 0x4a4d, 0x132b: 0x4a53, 0x132c: 0x4a59, 0x132d: 0x4a5f, 0x132e: 0x4a65, 0x132f: 0x4a6b, + 0x1330: 0x0367, 0x1331: 0x032b, 0x1332: 0x032f, 0x1333: 0x0333, 0x1334: 0x037b, 0x1335: 0x0337, + 0x1336: 0x033b, 0x1337: 0x033f, 0x1338: 0x0343, 0x1339: 0x0347, 0x133a: 0x034b, 0x133b: 0x034f, + 0x133c: 0x0353, 0x133d: 0x0357, 0x133e: 0x035b, + // Block 0x4d, offset 0x1340 + 0x1342: 0x49bd, 0x1343: 0x49c3, 0x1344: 0x49c9, 0x1345: 0x49cf, + 0x1346: 0x49d5, 0x1347: 0x49db, 0x134a: 0x49e1, 0x134b: 0x49e7, + 0x134c: 0x49ed, 0x134d: 0x49f3, 0x134e: 0x49f9, 0x134f: 0x49ff, + 0x1352: 0x4a05, 0x1353: 0x4a0b, 0x1354: 0x4a11, 0x1355: 0x4a17, 0x1356: 0x4a1d, 0x1357: 0x4a23, + 0x135a: 0x4a29, 0x135b: 0x4a2f, 0x135c: 0x4a35, + 0x1360: 0x00bf, 0x1361: 0x00c2, 0x1362: 0x00cb, 0x1363: 0x4264, + 0x1364: 0x00c8, 0x1365: 0x00c5, 0x1366: 0x0447, 0x1368: 0x046b, 0x1369: 0x044b, + 0x136a: 0x044f, 0x136b: 0x0453, 0x136c: 0x0457, 0x136d: 0x046f, 0x136e: 0x0473, + // Block 0x4e, offset 0x1380 + 0x1380: 0x0063, 0x1381: 0x0065, 0x1382: 0x0067, 0x1383: 0x0069, 0x1384: 0x006b, 0x1385: 0x006d, + 0x1386: 0x006f, 0x1387: 0x0071, 0x1388: 0x0073, 0x1389: 0x0075, 0x138a: 0x0083, 0x138b: 0x0085, + 0x138c: 0x0087, 0x138d: 0x0089, 0x138e: 0x008b, 0x138f: 0x008d, 0x1390: 0x008f, 0x1391: 0x0091, + 0x1392: 0x0093, 0x1393: 0x0095, 0x1394: 0x0097, 0x1395: 0x0099, 0x1396: 0x009b, 0x1397: 0x009d, + 0x1398: 0x009f, 0x1399: 0x00a1, 0x139a: 0x00a3, 0x139b: 0x00a5, 0x139c: 0x00a7, 0x139d: 0x00a9, + 0x139e: 0x00ab, 0x139f: 0x00ad, 0x13a0: 0x00af, 0x13a1: 0x00b1, 0x13a2: 0x00b3, 0x13a3: 0x00b5, + 0x13a4: 0x00dd, 0x13a5: 0x00f2, 0x13a8: 0x0173, 0x13a9: 0x0176, + 0x13aa: 0x0179, 0x13ab: 0x017c, 0x13ac: 0x017f, 0x13ad: 0x0182, 0x13ae: 0x0185, 0x13af: 0x0188, + 0x13b0: 0x018b, 0x13b1: 0x018e, 0x13b2: 0x0191, 0x13b3: 0x0194, 0x13b4: 0x0197, 0x13b5: 0x019a, + 0x13b6: 0x019d, 0x13b7: 0x01a0, 0x13b8: 0x01a3, 0x13b9: 0x0188, 0x13ba: 0x01a6, 0x13bb: 0x01a9, + 0x13bc: 0x01ac, 0x13bd: 0x01af, 0x13be: 0x01b2, 0x13bf: 0x01b5, + // Block 0x4f, offset 0x13c0 + 0x13c0: 0x01fd, 0x13c1: 0x0200, 0x13c2: 0x0203, 0x13c3: 0x045b, 0x13c4: 0x01c7, 0x13c5: 0x01d0, + 0x13c6: 0x01d6, 0x13c7: 0x01fa, 0x13c8: 0x01eb, 0x13c9: 0x01e8, 0x13ca: 0x0206, 0x13cb: 0x0209, + 0x13ce: 0x0021, 0x13cf: 0x0023, 0x13d0: 0x0025, 0x13d1: 0x0027, + 0x13d2: 0x0029, 0x13d3: 0x002b, 0x13d4: 0x002d, 0x13d5: 0x002f, 0x13d6: 0x0031, 0x13d7: 0x0033, + 0x13d8: 0x0021, 0x13d9: 0x0023, 0x13da: 0x0025, 0x13db: 0x0027, 0x13dc: 0x0029, 0x13dd: 0x002b, + 0x13de: 0x002d, 0x13df: 0x002f, 0x13e0: 0x0031, 0x13e1: 0x0033, 0x13e2: 0x0021, 0x13e3: 0x0023, + 0x13e4: 0x0025, 0x13e5: 0x0027, 0x13e6: 0x0029, 0x13e7: 0x002b, 0x13e8: 0x002d, 0x13e9: 0x002f, + 0x13ea: 0x0031, 0x13eb: 0x0033, 0x13ec: 0x0021, 0x13ed: 0x0023, 0x13ee: 0x0025, 0x13ef: 0x0027, + 0x13f0: 0x0029, 0x13f1: 0x002b, 0x13f2: 0x002d, 0x13f3: 0x002f, 0x13f4: 0x0031, 0x13f5: 0x0033, + 0x13f6: 0x0021, 0x13f7: 0x0023, 0x13f8: 0x0025, 0x13f9: 0x0027, 0x13fa: 0x0029, 0x13fb: 0x002b, + 0x13fc: 0x002d, 0x13fd: 0x002f, 0x13fe: 0x0031, 0x13ff: 0x0033, + // Block 0x50, offset 0x1400 + 0x1400: 0x0239, 0x1401: 0x023c, 0x1402: 0x0248, 0x1403: 0x0251, 0x1405: 0x028a, + 0x1406: 0x025a, 0x1407: 0x024b, 0x1408: 0x0269, 0x1409: 0x0290, 0x140a: 0x027b, 0x140b: 0x027e, + 0x140c: 0x0281, 0x140d: 0x0284, 0x140e: 0x025d, 0x140f: 0x026f, 0x1410: 0x0275, 0x1411: 0x0263, + 0x1412: 0x0278, 0x1413: 0x0257, 0x1414: 0x0260, 0x1415: 0x0242, 0x1416: 0x0245, 0x1417: 0x024e, + 0x1418: 0x0254, 0x1419: 0x0266, 0x141a: 0x026c, 0x141b: 0x0272, 0x141c: 0x0293, 0x141d: 0x02e4, + 0x141e: 0x02cc, 0x141f: 0x0296, 0x1421: 0x023c, 0x1422: 0x0248, + 0x1424: 0x0287, 0x1427: 0x024b, 0x1429: 0x0290, + 0x142a: 0x027b, 0x142b: 0x027e, 0x142c: 0x0281, 0x142d: 0x0284, 0x142e: 0x025d, 0x142f: 0x026f, + 0x1430: 0x0275, 0x1431: 0x0263, 0x1432: 0x0278, 0x1434: 0x0260, 0x1435: 0x0242, + 0x1436: 0x0245, 0x1437: 0x024e, 0x1439: 0x0266, 0x143b: 0x0272, + // Block 0x51, offset 0x1440 + 0x1442: 0x0248, + 0x1447: 0x024b, 0x1449: 0x0290, 0x144b: 0x027e, + 0x144d: 0x0284, 0x144e: 0x025d, 0x144f: 0x026f, 0x1451: 0x0263, + 0x1452: 0x0278, 0x1454: 0x0260, 0x1457: 0x024e, + 0x1459: 0x0266, 0x145b: 0x0272, 0x145d: 0x02e4, + 0x145f: 0x0296, 0x1461: 0x023c, 0x1462: 0x0248, + 0x1464: 0x0287, 0x1467: 0x024b, 0x1468: 0x0269, 0x1469: 0x0290, + 0x146a: 0x027b, 0x146c: 0x0281, 0x146d: 0x0284, 0x146e: 0x025d, 0x146f: 0x026f, + 0x1470: 0x0275, 0x1471: 0x0263, 0x1472: 0x0278, 0x1474: 0x0260, 0x1475: 0x0242, + 0x1476: 0x0245, 0x1477: 0x024e, 0x1479: 0x0266, 0x147a: 0x026c, 0x147b: 0x0272, + 0x147c: 0x0293, 0x147e: 0x02cc, + // Block 0x52, offset 0x1480 + 0x1480: 0x0239, 0x1481: 0x023c, 0x1482: 0x0248, 0x1483: 0x0251, 0x1484: 0x0287, 0x1485: 0x028a, + 0x1486: 0x025a, 0x1487: 0x024b, 0x1488: 0x0269, 0x1489: 0x0290, 0x148b: 0x027e, + 0x148c: 0x0281, 0x148d: 0x0284, 0x148e: 0x025d, 0x148f: 0x026f, 0x1490: 0x0275, 0x1491: 0x0263, + 0x1492: 0x0278, 0x1493: 0x0257, 0x1494: 0x0260, 0x1495: 0x0242, 0x1496: 0x0245, 0x1497: 0x024e, + 0x1498: 0x0254, 0x1499: 0x0266, 0x149a: 0x026c, 0x149b: 0x0272, + 0x14a1: 0x023c, 0x14a2: 0x0248, 0x14a3: 0x0251, + 0x14a5: 0x028a, 0x14a6: 0x025a, 0x14a7: 0x024b, 0x14a8: 0x0269, 0x14a9: 0x0290, + 0x14ab: 0x027e, 0x14ac: 0x0281, 0x14ad: 0x0284, 0x14ae: 0x025d, 0x14af: 0x026f, + 0x14b0: 0x0275, 0x14b1: 0x0263, 0x14b2: 0x0278, 0x14b3: 0x0257, 0x14b4: 0x0260, 0x14b5: 0x0242, + 0x14b6: 0x0245, 0x14b7: 0x024e, 0x14b8: 0x0254, 0x14b9: 0x0266, 0x14ba: 0x026c, 0x14bb: 0x0272, + // Block 0x53, offset 0x14c0 + 0x14c0: 0x1879, 0x14c1: 0x1876, 0x14c2: 0x187c, 0x14c3: 0x18a0, 0x14c4: 0x18c4, 0x14c5: 0x18e8, + 0x14c6: 0x190c, 0x14c7: 0x1915, 0x14c8: 0x191b, 0x14c9: 0x1921, 0x14ca: 0x1927, + 0x14d0: 0x1a8c, 0x14d1: 0x1a90, + 0x14d2: 0x1a94, 0x14d3: 0x1a98, 0x14d4: 0x1a9c, 0x14d5: 0x1aa0, 0x14d6: 0x1aa4, 0x14d7: 0x1aa8, + 0x14d8: 0x1aac, 0x14d9: 0x1ab0, 0x14da: 0x1ab4, 0x14db: 0x1ab8, 0x14dc: 0x1abc, 0x14dd: 0x1ac0, + 0x14de: 0x1ac4, 0x14df: 0x1ac8, 0x14e0: 0x1acc, 0x14e1: 0x1ad0, 0x14e2: 0x1ad4, 0x14e3: 0x1ad8, + 0x14e4: 0x1adc, 0x14e5: 0x1ae0, 0x14e6: 0x1ae4, 0x14e7: 0x1ae8, 0x14e8: 0x1aec, 0x14e9: 0x1af0, + 0x14ea: 0x271e, 0x14eb: 0x0047, 0x14ec: 0x0065, 0x14ed: 0x193c, 0x14ee: 0x19b1, + 0x14f0: 0x0043, 0x14f1: 0x0045, 0x14f2: 0x0047, 0x14f3: 0x0049, 0x14f4: 0x004b, 0x14f5: 0x004d, + 0x14f6: 0x004f, 0x14f7: 0x0051, 0x14f8: 0x0053, 0x14f9: 0x0055, 0x14fa: 0x0057, 0x14fb: 0x0059, + 0x14fc: 0x005b, 0x14fd: 0x005d, 0x14fe: 0x005f, 0x14ff: 0x0061, + // Block 0x54, offset 0x1500 + 0x1500: 0x26ad, 0x1501: 0x26c2, 0x1502: 0x0503, + 0x1510: 0x0c0f, 0x1511: 0x0a47, + 0x1512: 0x08d3, 0x1513: 0x45c4, 0x1514: 0x071b, 0x1515: 0x09ef, 0x1516: 0x132f, 0x1517: 0x09ff, + 0x1518: 0x0727, 0x1519: 0x0cd7, 0x151a: 0x0eaf, 0x151b: 0x0caf, 0x151c: 0x0827, 0x151d: 0x0b6b, + 0x151e: 0x07bf, 0x151f: 0x0cb7, 0x1520: 0x0813, 0x1521: 0x1117, 0x1522: 0x0f83, 0x1523: 0x138b, + 0x1524: 0x09d3, 0x1525: 0x090b, 0x1526: 0x0e63, 0x1527: 0x0c1b, 0x1528: 0x0c47, 0x1529: 0x06bf, + 0x152a: 0x06cb, 0x152b: 0x140b, 0x152c: 0x0adb, 0x152d: 0x06e7, 0x152e: 0x08ef, 0x152f: 0x0c3b, + 0x1530: 0x13b3, 0x1531: 0x0c13, 0x1532: 0x106f, 0x1533: 0x10ab, 0x1534: 0x08f7, 0x1535: 0x0e43, + 0x1536: 0x0d0b, 0x1537: 0x0d07, 0x1538: 0x0f97, 0x1539: 0x082b, 0x153a: 0x0957, 0x153b: 0x1443, + // Block 0x55, offset 0x1540 + 0x1540: 0x06fb, 0x1541: 0x06f3, 0x1542: 0x0703, 0x1543: 0x1647, 0x1544: 0x0747, 0x1545: 0x0757, + 0x1546: 0x075b, 0x1547: 0x0763, 0x1548: 0x076b, 0x1549: 0x076f, 0x154a: 0x077b, 0x154b: 0x0773, + 0x154c: 0x05b3, 0x154d: 0x165b, 0x154e: 0x078f, 0x154f: 0x0793, 0x1550: 0x0797, 0x1551: 0x07b3, + 0x1552: 0x164c, 0x1553: 0x05b7, 0x1554: 0x079f, 0x1555: 0x07bf, 0x1556: 0x1656, 0x1557: 0x07cf, + 0x1558: 0x07d7, 0x1559: 0x0737, 0x155a: 0x07df, 0x155b: 0x07e3, 0x155c: 0x1831, 0x155d: 0x07ff, + 0x155e: 0x0807, 0x155f: 0x05bf, 0x1560: 0x081f, 0x1561: 0x0823, 0x1562: 0x082b, 0x1563: 0x082f, + 0x1564: 0x05c3, 0x1565: 0x0847, 0x1566: 0x084b, 0x1567: 0x0857, 0x1568: 0x0863, 0x1569: 0x0867, + 0x156a: 0x086b, 0x156b: 0x0873, 0x156c: 0x0893, 0x156d: 0x0897, 0x156e: 0x089f, 0x156f: 0x08af, + 0x1570: 0x08b7, 0x1571: 0x08bb, 0x1572: 0x08bb, 0x1573: 0x08bb, 0x1574: 0x166a, 0x1575: 0x0e93, + 0x1576: 0x08cf, 0x1577: 0x08d7, 0x1578: 0x166f, 0x1579: 0x08e3, 0x157a: 0x08eb, 0x157b: 0x08f3, + 0x157c: 0x091b, 0x157d: 0x0907, 0x157e: 0x0913, 0x157f: 0x0917, + // Block 0x56, offset 0x1580 + 0x1580: 0x091f, 0x1581: 0x0927, 0x1582: 0x092b, 0x1583: 0x0933, 0x1584: 0x093b, 0x1585: 0x093f, + 0x1586: 0x093f, 0x1587: 0x0947, 0x1588: 0x094f, 0x1589: 0x0953, 0x158a: 0x095f, 0x158b: 0x0983, + 0x158c: 0x0967, 0x158d: 0x0987, 0x158e: 0x096b, 0x158f: 0x0973, 0x1590: 0x080b, 0x1591: 0x09cf, + 0x1592: 0x0997, 0x1593: 0x099b, 0x1594: 0x099f, 0x1595: 0x0993, 0x1596: 0x09a7, 0x1597: 0x09a3, + 0x1598: 0x09bb, 0x1599: 0x1674, 0x159a: 0x09d7, 0x159b: 0x09db, 0x159c: 0x09e3, 0x159d: 0x09ef, + 0x159e: 0x09f7, 0x159f: 0x0a13, 0x15a0: 0x1679, 0x15a1: 0x167e, 0x15a2: 0x0a1f, 0x15a3: 0x0a23, + 0x15a4: 0x0a27, 0x15a5: 0x0a1b, 0x15a6: 0x0a2f, 0x15a7: 0x05c7, 0x15a8: 0x05cb, 0x15a9: 0x0a37, + 0x15aa: 0x0a3f, 0x15ab: 0x0a3f, 0x15ac: 0x1683, 0x15ad: 0x0a5b, 0x15ae: 0x0a5f, 0x15af: 0x0a63, + 0x15b0: 0x0a6b, 0x15b1: 0x1688, 0x15b2: 0x0a73, 0x15b3: 0x0a77, 0x15b4: 0x0b4f, 0x15b5: 0x0a7f, + 0x15b6: 0x05cf, 0x15b7: 0x0a8b, 0x15b8: 0x0a9b, 0x15b9: 0x0aa7, 0x15ba: 0x0aa3, 0x15bb: 0x1692, + 0x15bc: 0x0aaf, 0x15bd: 0x1697, 0x15be: 0x0abb, 0x15bf: 0x0ab7, + // Block 0x57, offset 0x15c0 + 0x15c0: 0x0abf, 0x15c1: 0x0acf, 0x15c2: 0x0ad3, 0x15c3: 0x05d3, 0x15c4: 0x0ae3, 0x15c5: 0x0aeb, + 0x15c6: 0x0aef, 0x15c7: 0x0af3, 0x15c8: 0x05d7, 0x15c9: 0x169c, 0x15ca: 0x05db, 0x15cb: 0x0b0f, + 0x15cc: 0x0b13, 0x15cd: 0x0b17, 0x15ce: 0x0b1f, 0x15cf: 0x1863, 0x15d0: 0x0b37, 0x15d1: 0x16a6, + 0x15d2: 0x16a6, 0x15d3: 0x11d7, 0x15d4: 0x0b47, 0x15d5: 0x0b47, 0x15d6: 0x05df, 0x15d7: 0x16c9, + 0x15d8: 0x179b, 0x15d9: 0x0b57, 0x15da: 0x0b5f, 0x15db: 0x05e3, 0x15dc: 0x0b73, 0x15dd: 0x0b83, + 0x15de: 0x0b87, 0x15df: 0x0b8f, 0x15e0: 0x0b9f, 0x15e1: 0x05eb, 0x15e2: 0x05e7, 0x15e3: 0x0ba3, + 0x15e4: 0x16ab, 0x15e5: 0x0ba7, 0x15e6: 0x0bbb, 0x15e7: 0x0bbf, 0x15e8: 0x0bc3, 0x15e9: 0x0bbf, + 0x15ea: 0x0bcf, 0x15eb: 0x0bd3, 0x15ec: 0x0be3, 0x15ed: 0x0bdb, 0x15ee: 0x0bdf, 0x15ef: 0x0be7, + 0x15f0: 0x0beb, 0x15f1: 0x0bef, 0x15f2: 0x0bfb, 0x15f3: 0x0bff, 0x15f4: 0x0c17, 0x15f5: 0x0c1f, + 0x15f6: 0x0c2f, 0x15f7: 0x0c43, 0x15f8: 0x16ba, 0x15f9: 0x0c3f, 0x15fa: 0x0c33, 0x15fb: 0x0c4b, + 0x15fc: 0x0c53, 0x15fd: 0x0c67, 0x15fe: 0x16bf, 0x15ff: 0x0c6f, + // Block 0x58, offset 0x1600 + 0x1600: 0x0c63, 0x1601: 0x0c5b, 0x1602: 0x05ef, 0x1603: 0x0c77, 0x1604: 0x0c7f, 0x1605: 0x0c87, + 0x1606: 0x0c7b, 0x1607: 0x05f3, 0x1608: 0x0c97, 0x1609: 0x0c9f, 0x160a: 0x16c4, 0x160b: 0x0ccb, + 0x160c: 0x0cff, 0x160d: 0x0cdb, 0x160e: 0x05ff, 0x160f: 0x0ce7, 0x1610: 0x05fb, 0x1611: 0x05f7, + 0x1612: 0x07c3, 0x1613: 0x07c7, 0x1614: 0x0d03, 0x1615: 0x0ceb, 0x1616: 0x11ab, 0x1617: 0x0663, + 0x1618: 0x0d0f, 0x1619: 0x0d13, 0x161a: 0x0d17, 0x161b: 0x0d2b, 0x161c: 0x0d23, 0x161d: 0x16dd, + 0x161e: 0x0603, 0x161f: 0x0d3f, 0x1620: 0x0d33, 0x1621: 0x0d4f, 0x1622: 0x0d57, 0x1623: 0x16e7, + 0x1624: 0x0d5b, 0x1625: 0x0d47, 0x1626: 0x0d63, 0x1627: 0x0607, 0x1628: 0x0d67, 0x1629: 0x0d6b, + 0x162a: 0x0d6f, 0x162b: 0x0d7b, 0x162c: 0x16ec, 0x162d: 0x0d83, 0x162e: 0x060b, 0x162f: 0x0d8f, + 0x1630: 0x16f1, 0x1631: 0x0d93, 0x1632: 0x060f, 0x1633: 0x0d9f, 0x1634: 0x0dab, 0x1635: 0x0db7, + 0x1636: 0x0dbb, 0x1637: 0x16f6, 0x1638: 0x168d, 0x1639: 0x16fb, 0x163a: 0x0ddb, 0x163b: 0x1700, + 0x163c: 0x0de7, 0x163d: 0x0def, 0x163e: 0x0ddf, 0x163f: 0x0dfb, + // Block 0x59, offset 0x1640 + 0x1640: 0x0e0b, 0x1641: 0x0e1b, 0x1642: 0x0e0f, 0x1643: 0x0e13, 0x1644: 0x0e1f, 0x1645: 0x0e23, + 0x1646: 0x1705, 0x1647: 0x0e07, 0x1648: 0x0e3b, 0x1649: 0x0e3f, 0x164a: 0x0613, 0x164b: 0x0e53, + 0x164c: 0x0e4f, 0x164d: 0x170a, 0x164e: 0x0e33, 0x164f: 0x0e6f, 0x1650: 0x170f, 0x1651: 0x1714, + 0x1652: 0x0e73, 0x1653: 0x0e87, 0x1654: 0x0e83, 0x1655: 0x0e7f, 0x1656: 0x0617, 0x1657: 0x0e8b, + 0x1658: 0x0e9b, 0x1659: 0x0e97, 0x165a: 0x0ea3, 0x165b: 0x1651, 0x165c: 0x0eb3, 0x165d: 0x1719, + 0x165e: 0x0ebf, 0x165f: 0x1723, 0x1660: 0x0ed3, 0x1661: 0x0edf, 0x1662: 0x0ef3, 0x1663: 0x1728, + 0x1664: 0x0f07, 0x1665: 0x0f0b, 0x1666: 0x172d, 0x1667: 0x1732, 0x1668: 0x0f27, 0x1669: 0x0f37, + 0x166a: 0x061b, 0x166b: 0x0f3b, 0x166c: 0x061f, 0x166d: 0x061f, 0x166e: 0x0f53, 0x166f: 0x0f57, + 0x1670: 0x0f5f, 0x1671: 0x0f63, 0x1672: 0x0f6f, 0x1673: 0x0623, 0x1674: 0x0f87, 0x1675: 0x1737, + 0x1676: 0x0fa3, 0x1677: 0x173c, 0x1678: 0x0faf, 0x1679: 0x16a1, 0x167a: 0x0fbf, 0x167b: 0x1741, + 0x167c: 0x1746, 0x167d: 0x174b, 0x167e: 0x0627, 0x167f: 0x062b, + // Block 0x5a, offset 0x1680 + 0x1680: 0x0ff7, 0x1681: 0x1755, 0x1682: 0x1750, 0x1683: 0x175a, 0x1684: 0x175f, 0x1685: 0x0fff, + 0x1686: 0x1003, 0x1687: 0x1003, 0x1688: 0x100b, 0x1689: 0x0633, 0x168a: 0x100f, 0x168b: 0x0637, + 0x168c: 0x063b, 0x168d: 0x1769, 0x168e: 0x1023, 0x168f: 0x102b, 0x1690: 0x1037, 0x1691: 0x063f, + 0x1692: 0x176e, 0x1693: 0x105b, 0x1694: 0x1773, 0x1695: 0x1778, 0x1696: 0x107b, 0x1697: 0x1093, + 0x1698: 0x0643, 0x1699: 0x109b, 0x169a: 0x109f, 0x169b: 0x10a3, 0x169c: 0x177d, 0x169d: 0x1782, + 0x169e: 0x1782, 0x169f: 0x10bb, 0x16a0: 0x0647, 0x16a1: 0x1787, 0x16a2: 0x10cf, 0x16a3: 0x10d3, + 0x16a4: 0x064b, 0x16a5: 0x178c, 0x16a6: 0x10ef, 0x16a7: 0x064f, 0x16a8: 0x10ff, 0x16a9: 0x10f7, + 0x16aa: 0x1107, 0x16ab: 0x1796, 0x16ac: 0x111f, 0x16ad: 0x0653, 0x16ae: 0x112b, 0x16af: 0x1133, + 0x16b0: 0x1143, 0x16b1: 0x0657, 0x16b2: 0x17a0, 0x16b3: 0x17a5, 0x16b4: 0x065b, 0x16b5: 0x17aa, + 0x16b6: 0x115b, 0x16b7: 0x17af, 0x16b8: 0x1167, 0x16b9: 0x1173, 0x16ba: 0x117b, 0x16bb: 0x17b4, + 0x16bc: 0x17b9, 0x16bd: 0x118f, 0x16be: 0x17be, 0x16bf: 0x1197, + // Block 0x5b, offset 0x16c0 + 0x16c0: 0x16ce, 0x16c1: 0x065f, 0x16c2: 0x11af, 0x16c3: 0x11b3, 0x16c4: 0x0667, 0x16c5: 0x11b7, + 0x16c6: 0x0a33, 0x16c7: 0x17c3, 0x16c8: 0x17c8, 0x16c9: 0x16d3, 0x16ca: 0x16d8, 0x16cb: 0x11d7, + 0x16cc: 0x11db, 0x16cd: 0x13f3, 0x16ce: 0x066b, 0x16cf: 0x1207, 0x16d0: 0x1203, 0x16d1: 0x120b, + 0x16d2: 0x083f, 0x16d3: 0x120f, 0x16d4: 0x1213, 0x16d5: 0x1217, 0x16d6: 0x121f, 0x16d7: 0x17cd, + 0x16d8: 0x121b, 0x16d9: 0x1223, 0x16da: 0x1237, 0x16db: 0x123b, 0x16dc: 0x1227, 0x16dd: 0x123f, + 0x16de: 0x1253, 0x16df: 0x1267, 0x16e0: 0x1233, 0x16e1: 0x1247, 0x16e2: 0x124b, 0x16e3: 0x124f, + 0x16e4: 0x17d2, 0x16e5: 0x17dc, 0x16e6: 0x17d7, 0x16e7: 0x066f, 0x16e8: 0x126f, 0x16e9: 0x1273, + 0x16ea: 0x127b, 0x16eb: 0x17f0, 0x16ec: 0x127f, 0x16ed: 0x17e1, 0x16ee: 0x0673, 0x16ef: 0x0677, + 0x16f0: 0x17e6, 0x16f1: 0x17eb, 0x16f2: 0x067b, 0x16f3: 0x129f, 0x16f4: 0x12a3, 0x16f5: 0x12a7, + 0x16f6: 0x12ab, 0x16f7: 0x12b7, 0x16f8: 0x12b3, 0x16f9: 0x12bf, 0x16fa: 0x12bb, 0x16fb: 0x12cb, + 0x16fc: 0x12c3, 0x16fd: 0x12c7, 0x16fe: 0x12cf, 0x16ff: 0x067f, + // Block 0x5c, offset 0x1700 + 0x1700: 0x12d7, 0x1701: 0x12db, 0x1702: 0x0683, 0x1703: 0x12eb, 0x1704: 0x12ef, 0x1705: 0x17f5, + 0x1706: 0x12fb, 0x1707: 0x12ff, 0x1708: 0x0687, 0x1709: 0x130b, 0x170a: 0x05bb, 0x170b: 0x17fa, + 0x170c: 0x17ff, 0x170d: 0x068b, 0x170e: 0x068f, 0x170f: 0x1337, 0x1710: 0x134f, 0x1711: 0x136b, + 0x1712: 0x137b, 0x1713: 0x1804, 0x1714: 0x138f, 0x1715: 0x1393, 0x1716: 0x13ab, 0x1717: 0x13b7, + 0x1718: 0x180e, 0x1719: 0x1660, 0x171a: 0x13c3, 0x171b: 0x13bf, 0x171c: 0x13cb, 0x171d: 0x1665, + 0x171e: 0x13d7, 0x171f: 0x13e3, 0x1720: 0x1813, 0x1721: 0x1818, 0x1722: 0x1423, 0x1723: 0x142f, + 0x1724: 0x1437, 0x1725: 0x181d, 0x1726: 0x143b, 0x1727: 0x1467, 0x1728: 0x1473, 0x1729: 0x1477, + 0x172a: 0x146f, 0x172b: 0x1483, 0x172c: 0x1487, 0x172d: 0x1822, 0x172e: 0x1493, 0x172f: 0x0693, + 0x1730: 0x149b, 0x1731: 0x1827, 0x1732: 0x0697, 0x1733: 0x14d3, 0x1734: 0x0ac3, 0x1735: 0x14eb, + 0x1736: 0x182c, 0x1737: 0x1836, 0x1738: 0x069b, 0x1739: 0x069f, 0x173a: 0x1513, 0x173b: 0x183b, + 0x173c: 0x06a3, 0x173d: 0x1840, 0x173e: 0x152b, 0x173f: 0x152b, + // Block 0x5d, offset 0x1740 + 0x1740: 0x1533, 0x1741: 0x1845, 0x1742: 0x154b, 0x1743: 0x06a7, 0x1744: 0x155b, 0x1745: 0x1567, + 0x1746: 0x156f, 0x1747: 0x1577, 0x1748: 0x06ab, 0x1749: 0x184a, 0x174a: 0x158b, 0x174b: 0x15a7, + 0x174c: 0x15b3, 0x174d: 0x06af, 0x174e: 0x06b3, 0x174f: 0x15b7, 0x1750: 0x184f, 0x1751: 0x06b7, + 0x1752: 0x1854, 0x1753: 0x1859, 0x1754: 0x185e, 0x1755: 0x15db, 0x1756: 0x06bb, 0x1757: 0x15ef, + 0x1758: 0x15f7, 0x1759: 0x15fb, 0x175a: 0x1603, 0x175b: 0x160b, 0x175c: 0x1613, 0x175d: 0x1868, +} + +// nfkcIndex: 22 blocks, 1408 entries, 1408 bytes +// Block 0 is the zero block. +var nfkcIndex = [1408]uint8{ + // Block 0x0, offset 0x0 + // Block 0x1, offset 0x40 + // Block 0x2, offset 0x80 + // Block 0x3, offset 0xc0 + 0xc2: 0x5c, 0xc3: 0x01, 0xc4: 0x02, 0xc5: 0x03, 0xc6: 0x5d, 0xc7: 0x04, + 0xc8: 0x05, 0xca: 0x5e, 0xcb: 0x5f, 0xcc: 0x06, 0xcd: 0x07, 0xce: 0x08, 0xcf: 0x09, + 0xd0: 0x0a, 0xd1: 0x60, 0xd2: 0x61, 0xd3: 0x0b, 0xd6: 0x0c, 0xd7: 0x62, + 0xd8: 0x63, 0xd9: 0x0d, 0xdb: 0x64, 0xdc: 0x65, 0xdd: 0x66, 0xdf: 0x67, + 0xe0: 0x02, 0xe1: 0x03, 0xe2: 0x04, 0xe3: 0x05, + 0xea: 0x06, 0xeb: 0x07, 0xec: 0x08, 0xed: 0x09, 0xef: 0x0a, + 0xf0: 0x13, + // Block 0x4, offset 0x100 + 0x120: 0x68, 0x121: 0x69, 0x123: 0x0e, 0x124: 0x6a, 0x125: 0x6b, 0x126: 0x6c, 0x127: 0x6d, + 0x128: 0x6e, 0x129: 0x6f, 0x12a: 0x70, 0x12b: 0x71, 0x12c: 0x6c, 0x12d: 0x72, 0x12e: 0x73, 0x12f: 0x74, + 0x131: 0x75, 0x132: 0x76, 0x133: 0x77, 0x134: 0x78, 0x135: 0x79, 0x137: 0x7a, + 0x138: 0x7b, 0x139: 0x7c, 0x13a: 0x7d, 0x13b: 0x7e, 0x13c: 0x7f, 0x13d: 0x80, 0x13e: 0x81, 0x13f: 0x82, + // Block 0x5, offset 0x140 + 0x140: 0x83, 0x142: 0x84, 0x143: 0x85, 0x144: 0x86, 0x145: 0x87, 0x146: 0x88, 0x147: 0x89, + 0x14d: 0x8a, + 0x15c: 0x8b, 0x15f: 0x8c, + 0x162: 0x8d, 0x164: 0x8e, + 0x168: 0x8f, 0x169: 0x90, 0x16a: 0x91, 0x16c: 0x0f, 0x16d: 0x92, 0x16e: 0x93, 0x16f: 0x94, + 0x170: 0x95, 0x173: 0x96, 0x174: 0x97, 0x175: 0x10, 0x176: 0x11, 0x177: 0x12, + 0x178: 0x13, 0x179: 0x14, 0x17a: 0x15, 0x17b: 0x16, 0x17c: 0x17, 0x17d: 0x18, 0x17e: 0x19, 0x17f: 0x1a, + // Block 0x6, offset 0x180 + 0x180: 0x98, 0x181: 0x99, 0x182: 0x9a, 0x183: 0x9b, 0x184: 0x1b, 0x185: 0x1c, 0x186: 0x9c, 0x187: 0x9d, + 0x188: 0x9e, 0x189: 0x1d, 0x18a: 0x1e, 0x18b: 0x9f, 0x18c: 0xa0, + 0x191: 0x1f, 0x192: 0x20, 0x193: 0xa1, + 0x1a8: 0xa2, 0x1a9: 0xa3, 0x1ab: 0xa4, + 0x1b1: 0xa5, 0x1b3: 0xa6, 0x1b5: 0xa7, 0x1b7: 0xa8, + 0x1ba: 0xa9, 0x1bb: 0xaa, 0x1bc: 0x21, 0x1bd: 0x22, 0x1be: 0x23, 0x1bf: 0xab, + // Block 0x7, offset 0x1c0 + 0x1c0: 0xac, 0x1c1: 0x24, 0x1c2: 0x25, 0x1c3: 0x26, 0x1c4: 0xad, 0x1c5: 0x27, 0x1c6: 0x28, + 0x1c8: 0x29, 0x1c9: 0x2a, 0x1ca: 0x2b, 0x1cb: 0x2c, 0x1cc: 0x2d, 0x1cd: 0x2e, 0x1ce: 0x2f, 0x1cf: 0x30, + // Block 0x8, offset 0x200 + 0x219: 0xae, 0x21a: 0xaf, 0x21b: 0xb0, 0x21d: 0xb1, 0x21f: 0xb2, + 0x220: 0xb3, 0x223: 0xb4, 0x224: 0xb5, 0x225: 0xb6, 0x226: 0xb7, 0x227: 0xb8, + 0x22a: 0xb9, 0x22b: 0xba, 0x22d: 0xbb, 0x22f: 0xbc, + 0x230: 0xbd, 0x231: 0xbe, 0x232: 0xbf, 0x233: 0xc0, 0x234: 0xc1, 0x235: 0xc2, 0x236: 0xc3, 0x237: 0xbd, + 0x238: 0xbe, 0x239: 0xbf, 0x23a: 0xc0, 0x23b: 0xc1, 0x23c: 0xc2, 0x23d: 0xc3, 0x23e: 0xbd, 0x23f: 0xbe, + // Block 0x9, offset 0x240 + 0x240: 0xbf, 0x241: 0xc0, 0x242: 0xc1, 0x243: 0xc2, 0x244: 0xc3, 0x245: 0xbd, 0x246: 0xbe, 0x247: 0xbf, + 0x248: 0xc0, 0x249: 0xc1, 0x24a: 0xc2, 0x24b: 0xc3, 0x24c: 0xbd, 0x24d: 0xbe, 0x24e: 0xbf, 0x24f: 0xc0, + 0x250: 0xc1, 0x251: 0xc2, 0x252: 0xc3, 0x253: 0xbd, 0x254: 0xbe, 0x255: 0xbf, 0x256: 0xc0, 0x257: 0xc1, + 0x258: 0xc2, 0x259: 0xc3, 0x25a: 0xbd, 0x25b: 0xbe, 0x25c: 0xbf, 0x25d: 0xc0, 0x25e: 0xc1, 0x25f: 0xc2, + 0x260: 0xc3, 0x261: 0xbd, 0x262: 0xbe, 0x263: 0xbf, 0x264: 0xc0, 0x265: 0xc1, 0x266: 0xc2, 0x267: 0xc3, + 0x268: 0xbd, 0x269: 0xbe, 0x26a: 0xbf, 0x26b: 0xc0, 0x26c: 0xc1, 0x26d: 0xc2, 0x26e: 0xc3, 0x26f: 0xbd, + 0x270: 0xbe, 0x271: 0xbf, 0x272: 0xc0, 0x273: 0xc1, 0x274: 0xc2, 0x275: 0xc3, 0x276: 0xbd, 0x277: 0xbe, + 0x278: 0xbf, 0x279: 0xc0, 0x27a: 0xc1, 0x27b: 0xc2, 0x27c: 0xc3, 0x27d: 0xbd, 0x27e: 0xbe, 0x27f: 0xbf, + // Block 0xa, offset 0x280 + 0x280: 0xc0, 0x281: 0xc1, 0x282: 0xc2, 0x283: 0xc3, 0x284: 0xbd, 0x285: 0xbe, 0x286: 0xbf, 0x287: 0xc0, + 0x288: 0xc1, 0x289: 0xc2, 0x28a: 0xc3, 0x28b: 0xbd, 0x28c: 0xbe, 0x28d: 0xbf, 0x28e: 0xc0, 0x28f: 0xc1, + 0x290: 0xc2, 0x291: 0xc3, 0x292: 0xbd, 0x293: 0xbe, 0x294: 0xbf, 0x295: 0xc0, 0x296: 0xc1, 0x297: 0xc2, + 0x298: 0xc3, 0x299: 0xbd, 0x29a: 0xbe, 0x29b: 0xbf, 0x29c: 0xc0, 0x29d: 0xc1, 0x29e: 0xc2, 0x29f: 0xc3, + 0x2a0: 0xbd, 0x2a1: 0xbe, 0x2a2: 0xbf, 0x2a3: 0xc0, 0x2a4: 0xc1, 0x2a5: 0xc2, 0x2a6: 0xc3, 0x2a7: 0xbd, + 0x2a8: 0xbe, 0x2a9: 0xbf, 0x2aa: 0xc0, 0x2ab: 0xc1, 0x2ac: 0xc2, 0x2ad: 0xc3, 0x2ae: 0xbd, 0x2af: 0xbe, + 0x2b0: 0xbf, 0x2b1: 0xc0, 0x2b2: 0xc1, 0x2b3: 0xc2, 0x2b4: 0xc3, 0x2b5: 0xbd, 0x2b6: 0xbe, 0x2b7: 0xbf, + 0x2b8: 0xc0, 0x2b9: 0xc1, 0x2ba: 0xc2, 0x2bb: 0xc3, 0x2bc: 0xbd, 0x2bd: 0xbe, 0x2be: 0xbf, 0x2bf: 0xc0, + // Block 0xb, offset 0x2c0 + 0x2c0: 0xc1, 0x2c1: 0xc2, 0x2c2: 0xc3, 0x2c3: 0xbd, 0x2c4: 0xbe, 0x2c5: 0xbf, 0x2c6: 0xc0, 0x2c7: 0xc1, + 0x2c8: 0xc2, 0x2c9: 0xc3, 0x2ca: 0xbd, 0x2cb: 0xbe, 0x2cc: 0xbf, 0x2cd: 0xc0, 0x2ce: 0xc1, 0x2cf: 0xc2, + 0x2d0: 0xc3, 0x2d1: 0xbd, 0x2d2: 0xbe, 0x2d3: 0xbf, 0x2d4: 0xc0, 0x2d5: 0xc1, 0x2d6: 0xc2, 0x2d7: 0xc3, + 0x2d8: 0xbd, 0x2d9: 0xbe, 0x2da: 0xbf, 0x2db: 0xc0, 0x2dc: 0xc1, 0x2dd: 0xc2, 0x2de: 0xc4, + // Block 0xc, offset 0x300 + 0x324: 0x31, 0x325: 0x32, 0x326: 0x33, 0x327: 0x34, + 0x328: 0x35, 0x329: 0x36, 0x32a: 0x37, 0x32b: 0x38, 0x32c: 0x39, 0x32d: 0x3a, 0x32e: 0x3b, 0x32f: 0x3c, + 0x330: 0x3d, 0x331: 0x3e, 0x332: 0x3f, 0x333: 0x40, 0x334: 0x41, 0x335: 0x42, 0x336: 0x43, 0x337: 0x44, + 0x338: 0x45, 0x339: 0x46, 0x33a: 0x47, 0x33b: 0x48, 0x33c: 0xc5, 0x33d: 0x49, 0x33e: 0x4a, 0x33f: 0x4b, + // Block 0xd, offset 0x340 + 0x347: 0xc6, + 0x34b: 0xc7, 0x34d: 0xc8, + 0x368: 0xc9, 0x36b: 0xca, + 0x374: 0xcb, + 0x37d: 0xcc, + // Block 0xe, offset 0x380 + 0x381: 0xcd, 0x382: 0xce, 0x384: 0xcf, 0x385: 0xb7, 0x387: 0xd0, + 0x388: 0xd1, 0x38b: 0xd2, 0x38c: 0xd3, 0x38d: 0xd4, + 0x391: 0xd5, 0x392: 0xd6, 0x393: 0xd7, 0x396: 0xd8, 0x397: 0xd9, + 0x398: 0xda, 0x39a: 0xdb, 0x39c: 0xdc, + 0x3a0: 0xdd, + 0x3a8: 0xde, 0x3a9: 0xdf, 0x3aa: 0xe0, + 0x3b0: 0xda, 0x3b5: 0xe1, 0x3b6: 0xe2, + // Block 0xf, offset 0x3c0 + 0x3eb: 0xe3, 0x3ec: 0xe4, + // Block 0x10, offset 0x400 + 0x432: 0xe5, + // Block 0x11, offset 0x440 + 0x445: 0xe6, 0x446: 0xe7, 0x447: 0xe8, + 0x449: 0xe9, + 0x450: 0xea, 0x451: 0xeb, 0x452: 0xec, 0x453: 0xed, 0x454: 0xee, 0x455: 0xef, 0x456: 0xf0, 0x457: 0xf1, + 0x458: 0xf2, 0x459: 0xf3, 0x45a: 0x4c, 0x45b: 0xf4, 0x45c: 0xf5, 0x45d: 0xf6, 0x45e: 0xf7, 0x45f: 0x4d, + // Block 0x12, offset 0x480 + 0x480: 0xf8, + 0x4a3: 0xf9, 0x4a5: 0xfa, + 0x4b8: 0x4e, 0x4b9: 0x4f, 0x4ba: 0x50, + // Block 0x13, offset 0x4c0 + 0x4c4: 0x51, 0x4c5: 0xfb, 0x4c6: 0xfc, + 0x4c8: 0x52, 0x4c9: 0xfd, + // Block 0x14, offset 0x500 + 0x520: 0x53, 0x521: 0x54, 0x522: 0x55, 0x523: 0x56, 0x524: 0x57, 0x525: 0x58, 0x526: 0x59, 0x527: 0x5a, + 0x528: 0x5b, + // Block 0x15, offset 0x540 + 0x550: 0x0b, 0x551: 0x0c, 0x556: 0x0d, + 0x55b: 0x0e, 0x55d: 0x0f, 0x55e: 0x10, 0x55f: 0x11, + 0x56f: 0x12, +} + +// nfkcSparseOffset: 162 entries, 324 bytes +var nfkcSparseOffset = []uint16{0x0, 0xe, 0x12, 0x1b, 0x25, 0x35, 0x37, 0x3c, 0x47, 0x56, 0x63, 0x6b, 0x70, 0x75, 0x77, 0x7f, 0x86, 0x89, 0x91, 0x95, 0x99, 0x9b, 0x9d, 0xa6, 0xaa, 0xb1, 0xb6, 0xb9, 0xc3, 0xc6, 0xcd, 0xd5, 0xd9, 0xdb, 0xde, 0xe2, 0xe8, 0xf9, 0x105, 0x107, 0x10d, 0x10f, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11b, 0x11e, 0x121, 0x123, 0x126, 0x129, 0x12d, 0x132, 0x13b, 0x13d, 0x140, 0x142, 0x14d, 0x158, 0x166, 0x174, 0x184, 0x192, 0x199, 0x19f, 0x1ae, 0x1b2, 0x1b4, 0x1b8, 0x1ba, 0x1bd, 0x1bf, 0x1c2, 0x1c4, 0x1c7, 0x1c9, 0x1cb, 0x1cd, 0x1d9, 0x1e3, 0x1ed, 0x1f0, 0x1f4, 0x1f6, 0x1f8, 0x1fa, 0x1fc, 0x1ff, 0x201, 0x203, 0x205, 0x207, 0x20d, 0x210, 0x214, 0x216, 0x21d, 0x223, 0x229, 0x231, 0x237, 0x23d, 0x243, 0x247, 0x249, 0x24b, 0x24d, 0x24f, 0x255, 0x258, 0x25a, 0x260, 0x263, 0x26b, 0x272, 0x275, 0x278, 0x27a, 0x27d, 0x285, 0x289, 0x290, 0x293, 0x299, 0x29b, 0x29d, 0x2a0, 0x2a2, 0x2a5, 0x2a7, 0x2a9, 0x2ab, 0x2ae, 0x2b0, 0x2b2, 0x2b4, 0x2b6, 0x2c3, 0x2cd, 0x2cf, 0x2d1, 0x2d5, 0x2da, 0x2e6, 0x2eb, 0x2f4, 0x2fa, 0x2ff, 0x303, 0x308, 0x30c, 0x31c, 0x32a, 0x338, 0x346, 0x34c, 0x34e, 0x351, 0x35b, 0x35d} + +// nfkcSparseValues: 871 entries, 3484 bytes +var nfkcSparseValues = [871]valueRange{ + // Block 0x0, offset 0x0 + {value: 0x0002, lo: 0x0d}, + {value: 0x0001, lo: 0xa0, hi: 0xa0}, + {value: 0x4278, lo: 0xa8, hi: 0xa8}, + {value: 0x0083, lo: 0xaa, hi: 0xaa}, + {value: 0x4264, lo: 0xaf, hi: 0xaf}, + {value: 0x0025, lo: 0xb2, hi: 0xb3}, + {value: 0x425a, lo: 0xb4, hi: 0xb4}, + {value: 0x01dc, lo: 0xb5, hi: 0xb5}, + {value: 0x4291, lo: 0xb8, hi: 0xb8}, + {value: 0x0023, lo: 0xb9, hi: 0xb9}, + {value: 0x009f, lo: 0xba, hi: 0xba}, + {value: 0x221c, lo: 0xbc, hi: 0xbc}, + {value: 0x2210, lo: 0xbd, hi: 0xbd}, + {value: 0x22b2, lo: 0xbe, hi: 0xbe}, + // Block 0x1, offset 0xe + {value: 0x0091, lo: 0x03}, + {value: 0x46e2, lo: 0xa0, hi: 0xa1}, + {value: 0x4714, lo: 0xaf, hi: 0xb0}, + {value: 0xa000, lo: 0xb7, hi: 0xb7}, + // Block 0x2, offset 0x12 + {value: 0x0003, lo: 0x08}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x0091, lo: 0xb0, hi: 0xb0}, + {value: 0x0119, lo: 0xb1, hi: 0xb1}, + {value: 0x0095, lo: 0xb2, hi: 0xb2}, + {value: 0x00a5, lo: 0xb3, hi: 0xb3}, + {value: 0x0143, lo: 0xb4, hi: 0xb6}, + {value: 0x00af, lo: 0xb7, hi: 0xb7}, + {value: 0x00b3, lo: 0xb8, hi: 0xb8}, + // Block 0x3, offset 0x1b + {value: 0x000a, lo: 0x09}, + {value: 0x426e, lo: 0x98, hi: 0x98}, + {value: 0x4273, lo: 0x99, hi: 0x9a}, + {value: 0x4296, lo: 0x9b, hi: 0x9b}, + {value: 0x425f, lo: 0x9c, hi: 0x9c}, + {value: 0x4282, lo: 0x9d, hi: 0x9d}, + {value: 0x0113, lo: 0xa0, hi: 0xa0}, + {value: 0x0099, lo: 0xa1, hi: 0xa1}, + {value: 0x00a7, lo: 0xa2, hi: 0xa3}, + {value: 0x0167, lo: 0xa4, hi: 0xa4}, + // Block 0x4, offset 0x25 + {value: 0x0000, lo: 0x0f}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0xa000, lo: 0x8d, hi: 0x8d}, + {value: 0x37a5, lo: 0x90, hi: 0x90}, + {value: 0x37b1, lo: 0x91, hi: 0x91}, + {value: 0x379f, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x96, hi: 0x96}, + {value: 0x3817, lo: 0x97, hi: 0x97}, + {value: 0x37e1, lo: 0x9c, hi: 0x9c}, + {value: 0x37c9, lo: 0x9d, hi: 0x9d}, + {value: 0x37f3, lo: 0x9e, hi: 0x9e}, + {value: 0xa000, lo: 0xb4, hi: 0xb5}, + {value: 0x381d, lo: 0xb6, hi: 0xb6}, + {value: 0x3823, lo: 0xb7, hi: 0xb7}, + // Block 0x5, offset 0x35 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x83, hi: 0x87}, + // Block 0x6, offset 0x37 + {value: 0x0001, lo: 0x04}, + {value: 0x8113, lo: 0x81, hi: 0x82}, + {value: 0x8132, lo: 0x84, hi: 0x84}, + {value: 0x812d, lo: 0x85, hi: 0x85}, + {value: 0x810d, lo: 0x87, hi: 0x87}, + // Block 0x7, offset 0x3c + {value: 0x0000, lo: 0x0a}, + {value: 0x8132, lo: 0x90, hi: 0x97}, + {value: 0x8119, lo: 0x98, hi: 0x98}, + {value: 0x811a, lo: 0x99, hi: 0x99}, + {value: 0x811b, lo: 0x9a, hi: 0x9a}, + {value: 0x3841, lo: 0xa2, hi: 0xa2}, + {value: 0x3847, lo: 0xa3, hi: 0xa3}, + {value: 0x3853, lo: 0xa4, hi: 0xa4}, + {value: 0x384d, lo: 0xa5, hi: 0xa5}, + {value: 0x3859, lo: 0xa6, hi: 0xa6}, + {value: 0xa000, lo: 0xa7, hi: 0xa7}, + // Block 0x8, offset 0x47 + {value: 0x0000, lo: 0x0e}, + {value: 0x386b, lo: 0x80, hi: 0x80}, + {value: 0xa000, lo: 0x81, hi: 0x81}, + {value: 0x385f, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x3865, lo: 0x93, hi: 0x93}, + {value: 0xa000, lo: 0x95, hi: 0x95}, + {value: 0x8132, lo: 0x96, hi: 0x9c}, + {value: 0x8132, lo: 0x9f, hi: 0xa2}, + {value: 0x812d, lo: 0xa3, hi: 0xa3}, + {value: 0x8132, lo: 0xa4, hi: 0xa4}, + {value: 0x8132, lo: 0xa7, hi: 0xa8}, + {value: 0x812d, lo: 0xaa, hi: 0xaa}, + {value: 0x8132, lo: 0xab, hi: 0xac}, + {value: 0x812d, lo: 0xad, hi: 0xad}, + // Block 0x9, offset 0x56 + {value: 0x0000, lo: 0x0c}, + {value: 0x811f, lo: 0x91, hi: 0x91}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + {value: 0x812d, lo: 0xb1, hi: 0xb1}, + {value: 0x8132, lo: 0xb2, hi: 0xb3}, + {value: 0x812d, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb5, hi: 0xb6}, + {value: 0x812d, lo: 0xb7, hi: 0xb9}, + {value: 0x8132, lo: 0xba, hi: 0xba}, + {value: 0x812d, lo: 0xbb, hi: 0xbc}, + {value: 0x8132, lo: 0xbd, hi: 0xbd}, + {value: 0x812d, lo: 0xbe, hi: 0xbe}, + {value: 0x8132, lo: 0xbf, hi: 0xbf}, + // Block 0xa, offset 0x63 + {value: 0x0005, lo: 0x07}, + {value: 0x8132, lo: 0x80, hi: 0x80}, + {value: 0x8132, lo: 0x81, hi: 0x81}, + {value: 0x812d, lo: 0x82, hi: 0x83}, + {value: 0x812d, lo: 0x84, hi: 0x85}, + {value: 0x812d, lo: 0x86, hi: 0x87}, + {value: 0x812d, lo: 0x88, hi: 0x89}, + {value: 0x8132, lo: 0x8a, hi: 0x8a}, + // Block 0xb, offset 0x6b + {value: 0x0000, lo: 0x04}, + {value: 0x8132, lo: 0xab, hi: 0xb1}, + {value: 0x812d, lo: 0xb2, hi: 0xb2}, + {value: 0x8132, lo: 0xb3, hi: 0xb3}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + // Block 0xc, offset 0x70 + {value: 0x0000, lo: 0x04}, + {value: 0x8132, lo: 0x96, hi: 0x99}, + {value: 0x8132, lo: 0x9b, hi: 0xa3}, + {value: 0x8132, lo: 0xa5, hi: 0xa7}, + {value: 0x8132, lo: 0xa9, hi: 0xad}, + // Block 0xd, offset 0x75 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x99, hi: 0x9b}, + // Block 0xe, offset 0x77 + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0xa8, hi: 0xa8}, + {value: 0x3ed8, lo: 0xa9, hi: 0xa9}, + {value: 0xa000, lo: 0xb0, hi: 0xb0}, + {value: 0x3ee0, lo: 0xb1, hi: 0xb1}, + {value: 0xa000, lo: 0xb3, hi: 0xb3}, + {value: 0x3ee8, lo: 0xb4, hi: 0xb4}, + {value: 0x9902, lo: 0xbc, hi: 0xbc}, + // Block 0xf, offset 0x7f + {value: 0x0008, lo: 0x06}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x8132, lo: 0x91, hi: 0x91}, + {value: 0x812d, lo: 0x92, hi: 0x92}, + {value: 0x8132, lo: 0x93, hi: 0x93}, + {value: 0x8132, lo: 0x94, hi: 0x94}, + {value: 0x451c, lo: 0x98, hi: 0x9f}, + // Block 0x10, offset 0x86 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x11, offset 0x89 + {value: 0x0008, lo: 0x07}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2c9e, lo: 0x8b, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x455c, lo: 0x9c, hi: 0x9d}, + {value: 0x456c, lo: 0x9f, hi: 0x9f}, + {value: 0x8132, lo: 0xbe, hi: 0xbe}, + // Block 0x12, offset 0x91 + {value: 0x0000, lo: 0x03}, + {value: 0x4594, lo: 0xb3, hi: 0xb3}, + {value: 0x459c, lo: 0xb6, hi: 0xb6}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + // Block 0x13, offset 0x95 + {value: 0x0008, lo: 0x03}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x4574, lo: 0x99, hi: 0x9b}, + {value: 0x458c, lo: 0x9e, hi: 0x9e}, + // Block 0x14, offset 0x99 + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + // Block 0x15, offset 0x9b + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + // Block 0x16, offset 0x9d + {value: 0x0000, lo: 0x08}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2cb6, lo: 0x88, hi: 0x88}, + {value: 0x2cae, lo: 0x8b, hi: 0x8b}, + {value: 0x2cbe, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x96, hi: 0x97}, + {value: 0x45a4, lo: 0x9c, hi: 0x9c}, + {value: 0x45ac, lo: 0x9d, hi: 0x9d}, + // Block 0x17, offset 0xa6 + {value: 0x0000, lo: 0x03}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0x2cc6, lo: 0x94, hi: 0x94}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x18, offset 0xaa + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2cce, lo: 0x8a, hi: 0x8a}, + {value: 0x2cde, lo: 0x8b, hi: 0x8b}, + {value: 0x2cd6, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x19, offset 0xb1 + {value: 0x1801, lo: 0x04}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x3ef0, lo: 0x88, hi: 0x88}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x8120, lo: 0x95, hi: 0x96}, + // Block 0x1a, offset 0xb6 + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xbc, hi: 0xbc}, + {value: 0xa000, lo: 0xbf, hi: 0xbf}, + // Block 0x1b, offset 0xb9 + {value: 0x0000, lo: 0x09}, + {value: 0x2ce6, lo: 0x80, hi: 0x80}, + {value: 0x9900, lo: 0x82, hi: 0x82}, + {value: 0xa000, lo: 0x86, hi: 0x86}, + {value: 0x2cee, lo: 0x87, hi: 0x87}, + {value: 0x2cf6, lo: 0x88, hi: 0x88}, + {value: 0x2f50, lo: 0x8a, hi: 0x8a}, + {value: 0x2dd8, lo: 0x8b, hi: 0x8b}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x95, hi: 0x96}, + // Block 0x1c, offset 0xc3 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xbb, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x1d, offset 0xc6 + {value: 0x0000, lo: 0x06}, + {value: 0xa000, lo: 0x86, hi: 0x87}, + {value: 0x2cfe, lo: 0x8a, hi: 0x8a}, + {value: 0x2d0e, lo: 0x8b, hi: 0x8b}, + {value: 0x2d06, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + // Block 0x1e, offset 0xcd + {value: 0x6bea, lo: 0x07}, + {value: 0x9904, lo: 0x8a, hi: 0x8a}, + {value: 0x9900, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x3ef8, lo: 0x9a, hi: 0x9a}, + {value: 0x2f58, lo: 0x9c, hi: 0x9c}, + {value: 0x2de3, lo: 0x9d, hi: 0x9d}, + {value: 0x2d16, lo: 0x9e, hi: 0x9f}, + // Block 0x1f, offset 0xd5 + {value: 0x0000, lo: 0x03}, + {value: 0x2621, lo: 0xb3, hi: 0xb3}, + {value: 0x8122, lo: 0xb8, hi: 0xb9}, + {value: 0x8104, lo: 0xba, hi: 0xba}, + // Block 0x20, offset 0xd9 + {value: 0x0000, lo: 0x01}, + {value: 0x8123, lo: 0x88, hi: 0x8b}, + // Block 0x21, offset 0xdb + {value: 0x0000, lo: 0x02}, + {value: 0x2636, lo: 0xb3, hi: 0xb3}, + {value: 0x8124, lo: 0xb8, hi: 0xb9}, + // Block 0x22, offset 0xde + {value: 0x0000, lo: 0x03}, + {value: 0x8125, lo: 0x88, hi: 0x8b}, + {value: 0x2628, lo: 0x9c, hi: 0x9c}, + {value: 0x262f, lo: 0x9d, hi: 0x9d}, + // Block 0x23, offset 0xe2 + {value: 0x0000, lo: 0x05}, + {value: 0x030b, lo: 0x8c, hi: 0x8c}, + {value: 0x812d, lo: 0x98, hi: 0x99}, + {value: 0x812d, lo: 0xb5, hi: 0xb5}, + {value: 0x812d, lo: 0xb7, hi: 0xb7}, + {value: 0x812b, lo: 0xb9, hi: 0xb9}, + // Block 0x24, offset 0xe8 + {value: 0x0000, lo: 0x10}, + {value: 0x2644, lo: 0x83, hi: 0x83}, + {value: 0x264b, lo: 0x8d, hi: 0x8d}, + {value: 0x2652, lo: 0x92, hi: 0x92}, + {value: 0x2659, lo: 0x97, hi: 0x97}, + {value: 0x2660, lo: 0x9c, hi: 0x9c}, + {value: 0x263d, lo: 0xa9, hi: 0xa9}, + {value: 0x8126, lo: 0xb1, hi: 0xb1}, + {value: 0x8127, lo: 0xb2, hi: 0xb2}, + {value: 0x4a84, lo: 0xb3, hi: 0xb3}, + {value: 0x8128, lo: 0xb4, hi: 0xb4}, + {value: 0x4a8d, lo: 0xb5, hi: 0xb5}, + {value: 0x45b4, lo: 0xb6, hi: 0xb6}, + {value: 0x45f4, lo: 0xb7, hi: 0xb7}, + {value: 0x45bc, lo: 0xb8, hi: 0xb8}, + {value: 0x45ff, lo: 0xb9, hi: 0xb9}, + {value: 0x8127, lo: 0xba, hi: 0xbd}, + // Block 0x25, offset 0xf9 + {value: 0x0000, lo: 0x0b}, + {value: 0x8127, lo: 0x80, hi: 0x80}, + {value: 0x4a96, lo: 0x81, hi: 0x81}, + {value: 0x8132, lo: 0x82, hi: 0x83}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0x86, hi: 0x87}, + {value: 0x266e, lo: 0x93, hi: 0x93}, + {value: 0x2675, lo: 0x9d, hi: 0x9d}, + {value: 0x267c, lo: 0xa2, hi: 0xa2}, + {value: 0x2683, lo: 0xa7, hi: 0xa7}, + {value: 0x268a, lo: 0xac, hi: 0xac}, + {value: 0x2667, lo: 0xb9, hi: 0xb9}, + // Block 0x26, offset 0x105 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x86, hi: 0x86}, + // Block 0x27, offset 0x107 + {value: 0x0000, lo: 0x05}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x2d1e, lo: 0xa6, hi: 0xa6}, + {value: 0x9900, lo: 0xae, hi: 0xae}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + {value: 0x8104, lo: 0xb9, hi: 0xba}, + // Block 0x28, offset 0x10d + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x8d, hi: 0x8d}, + // Block 0x29, offset 0x10f + {value: 0x0000, lo: 0x01}, + {value: 0x030f, lo: 0xbc, hi: 0xbc}, + // Block 0x2a, offset 0x111 + {value: 0x0000, lo: 0x01}, + {value: 0xa000, lo: 0x80, hi: 0x92}, + // Block 0x2b, offset 0x113 + {value: 0x0000, lo: 0x01}, + {value: 0xb900, lo: 0xa1, hi: 0xb5}, + // Block 0x2c, offset 0x115 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0xa8, hi: 0xbf}, + // Block 0x2d, offset 0x117 + {value: 0x0000, lo: 0x01}, + {value: 0x9900, lo: 0x80, hi: 0x82}, + // Block 0x2e, offset 0x119 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x9d, hi: 0x9f}, + // Block 0x2f, offset 0x11b + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x94, hi: 0x94}, + {value: 0x8104, lo: 0xb4, hi: 0xb4}, + // Block 0x30, offset 0x11e + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x92, hi: 0x92}, + {value: 0x8132, lo: 0x9d, hi: 0x9d}, + // Block 0x31, offset 0x121 + {value: 0x0000, lo: 0x01}, + {value: 0x8131, lo: 0xa9, hi: 0xa9}, + // Block 0x32, offset 0x123 + {value: 0x0004, lo: 0x02}, + {value: 0x812e, lo: 0xb9, hi: 0xba}, + {value: 0x812d, lo: 0xbb, hi: 0xbb}, + // Block 0x33, offset 0x126 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x97, hi: 0x97}, + {value: 0x812d, lo: 0x98, hi: 0x98}, + // Block 0x34, offset 0x129 + {value: 0x0000, lo: 0x03}, + {value: 0x8104, lo: 0xa0, hi: 0xa0}, + {value: 0x8132, lo: 0xb5, hi: 0xbc}, + {value: 0x812d, lo: 0xbf, hi: 0xbf}, + // Block 0x35, offset 0x12d + {value: 0x0000, lo: 0x04}, + {value: 0x8132, lo: 0xb0, hi: 0xb4}, + {value: 0x812d, lo: 0xb5, hi: 0xba}, + {value: 0x8132, lo: 0xbb, hi: 0xbc}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + // Block 0x36, offset 0x132 + {value: 0x0000, lo: 0x08}, + {value: 0x2d66, lo: 0x80, hi: 0x80}, + {value: 0x2d6e, lo: 0x81, hi: 0x81}, + {value: 0xa000, lo: 0x82, hi: 0x82}, + {value: 0x2d76, lo: 0x83, hi: 0x83}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0xab, hi: 0xab}, + {value: 0x812d, lo: 0xac, hi: 0xac}, + {value: 0x8132, lo: 0xad, hi: 0xb3}, + // Block 0x37, offset 0x13b + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xaa, hi: 0xab}, + // Block 0x38, offset 0x13d + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xa6, hi: 0xa6}, + {value: 0x8104, lo: 0xb2, hi: 0xb3}, + // Block 0x39, offset 0x140 + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + // Block 0x3a, offset 0x142 + {value: 0x0000, lo: 0x0a}, + {value: 0x8132, lo: 0x90, hi: 0x92}, + {value: 0x8101, lo: 0x94, hi: 0x94}, + {value: 0x812d, lo: 0x95, hi: 0x99}, + {value: 0x8132, lo: 0x9a, hi: 0x9b}, + {value: 0x812d, lo: 0x9c, hi: 0x9f}, + {value: 0x8132, lo: 0xa0, hi: 0xa0}, + {value: 0x8101, lo: 0xa2, hi: 0xa8}, + {value: 0x812d, lo: 0xad, hi: 0xad}, + {value: 0x8132, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb8, hi: 0xb9}, + // Block 0x3b, offset 0x14d + {value: 0x0002, lo: 0x0a}, + {value: 0x0043, lo: 0xac, hi: 0xac}, + {value: 0x00d1, lo: 0xad, hi: 0xad}, + {value: 0x0045, lo: 0xae, hi: 0xae}, + {value: 0x0049, lo: 0xb0, hi: 0xb1}, + {value: 0x00e6, lo: 0xb2, hi: 0xb2}, + {value: 0x004f, lo: 0xb3, hi: 0xba}, + {value: 0x005f, lo: 0xbc, hi: 0xbc}, + {value: 0x00ef, lo: 0xbd, hi: 0xbd}, + {value: 0x0061, lo: 0xbe, hi: 0xbe}, + {value: 0x0065, lo: 0xbf, hi: 0xbf}, + // Block 0x3c, offset 0x158 + {value: 0x0000, lo: 0x0d}, + {value: 0x0001, lo: 0x80, hi: 0x8a}, + {value: 0x043b, lo: 0x91, hi: 0x91}, + {value: 0x429b, lo: 0x97, hi: 0x97}, + {value: 0x001d, lo: 0xa4, hi: 0xa4}, + {value: 0x1873, lo: 0xa5, hi: 0xa5}, + {value: 0x1b5c, lo: 0xa6, hi: 0xa6}, + {value: 0x0001, lo: 0xaf, hi: 0xaf}, + {value: 0x2691, lo: 0xb3, hi: 0xb3}, + {value: 0x27fe, lo: 0xb4, hi: 0xb4}, + {value: 0x2698, lo: 0xb6, hi: 0xb6}, + {value: 0x2808, lo: 0xb7, hi: 0xb7}, + {value: 0x186d, lo: 0xbc, hi: 0xbc}, + {value: 0x4269, lo: 0xbe, hi: 0xbe}, + // Block 0x3d, offset 0x166 + {value: 0x0002, lo: 0x0d}, + {value: 0x1933, lo: 0x87, hi: 0x87}, + {value: 0x1930, lo: 0x88, hi: 0x88}, + {value: 0x1870, lo: 0x89, hi: 0x89}, + {value: 0x298e, lo: 0x97, hi: 0x97}, + {value: 0x0001, lo: 0x9f, hi: 0x9f}, + {value: 0x0021, lo: 0xb0, hi: 0xb0}, + {value: 0x0093, lo: 0xb1, hi: 0xb1}, + {value: 0x0029, lo: 0xb4, hi: 0xb9}, + {value: 0x0017, lo: 0xba, hi: 0xba}, + {value: 0x0467, lo: 0xbb, hi: 0xbb}, + {value: 0x003b, lo: 0xbc, hi: 0xbc}, + {value: 0x0011, lo: 0xbd, hi: 0xbe}, + {value: 0x009d, lo: 0xbf, hi: 0xbf}, + // Block 0x3e, offset 0x174 + {value: 0x0002, lo: 0x0f}, + {value: 0x0021, lo: 0x80, hi: 0x89}, + {value: 0x0017, lo: 0x8a, hi: 0x8a}, + {value: 0x0467, lo: 0x8b, hi: 0x8b}, + {value: 0x003b, lo: 0x8c, hi: 0x8c}, + {value: 0x0011, lo: 0x8d, hi: 0x8e}, + {value: 0x0083, lo: 0x90, hi: 0x90}, + {value: 0x008b, lo: 0x91, hi: 0x91}, + {value: 0x009f, lo: 0x92, hi: 0x92}, + {value: 0x00b1, lo: 0x93, hi: 0x93}, + {value: 0x0104, lo: 0x94, hi: 0x94}, + {value: 0x0091, lo: 0x95, hi: 0x95}, + {value: 0x0097, lo: 0x96, hi: 0x99}, + {value: 0x00a1, lo: 0x9a, hi: 0x9a}, + {value: 0x00a7, lo: 0x9b, hi: 0x9c}, + {value: 0x1999, lo: 0xa8, hi: 0xa8}, + // Block 0x3f, offset 0x184 + {value: 0x0000, lo: 0x0d}, + {value: 0x8132, lo: 0x90, hi: 0x91}, + {value: 0x8101, lo: 0x92, hi: 0x93}, + {value: 0x8132, lo: 0x94, hi: 0x97}, + {value: 0x8101, lo: 0x98, hi: 0x9a}, + {value: 0x8132, lo: 0x9b, hi: 0x9c}, + {value: 0x8132, lo: 0xa1, hi: 0xa1}, + {value: 0x8101, lo: 0xa5, hi: 0xa6}, + {value: 0x8132, lo: 0xa7, hi: 0xa7}, + {value: 0x812d, lo: 0xa8, hi: 0xa8}, + {value: 0x8132, lo: 0xa9, hi: 0xa9}, + {value: 0x8101, lo: 0xaa, hi: 0xab}, + {value: 0x812d, lo: 0xac, hi: 0xaf}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + // Block 0x40, offset 0x192 + {value: 0x0007, lo: 0x06}, + {value: 0x2180, lo: 0x89, hi: 0x89}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + {value: 0x3bb9, lo: 0x9a, hi: 0x9b}, + {value: 0x3bc7, lo: 0xae, hi: 0xae}, + // Block 0x41, offset 0x199 + {value: 0x000e, lo: 0x05}, + {value: 0x3bce, lo: 0x8d, hi: 0x8e}, + {value: 0x3bd5, lo: 0x8f, hi: 0x8f}, + {value: 0xa000, lo: 0x90, hi: 0x90}, + {value: 0xa000, lo: 0x92, hi: 0x92}, + {value: 0xa000, lo: 0x94, hi: 0x94}, + // Block 0x42, offset 0x19f + {value: 0x0173, lo: 0x0e}, + {value: 0xa000, lo: 0x83, hi: 0x83}, + {value: 0x3be3, lo: 0x84, hi: 0x84}, + {value: 0xa000, lo: 0x88, hi: 0x88}, + {value: 0x3bea, lo: 0x89, hi: 0x89}, + {value: 0xa000, lo: 0x8b, hi: 0x8b}, + {value: 0x3bf1, lo: 0x8c, hi: 0x8c}, + {value: 0xa000, lo: 0xa3, hi: 0xa3}, + {value: 0x3bf8, lo: 0xa4, hi: 0xa4}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x3bff, lo: 0xa6, hi: 0xa6}, + {value: 0x269f, lo: 0xac, hi: 0xad}, + {value: 0x26a6, lo: 0xaf, hi: 0xaf}, + {value: 0x281c, lo: 0xb0, hi: 0xb0}, + {value: 0xa000, lo: 0xbc, hi: 0xbc}, + // Block 0x43, offset 0x1ae + {value: 0x0007, lo: 0x03}, + {value: 0x3c68, lo: 0xa0, hi: 0xa1}, + {value: 0x3c92, lo: 0xa2, hi: 0xa3}, + {value: 0x3cbc, lo: 0xaa, hi: 0xad}, + // Block 0x44, offset 0x1b2 + {value: 0x0004, lo: 0x01}, + {value: 0x048b, lo: 0xa9, hi: 0xaa}, + // Block 0x45, offset 0x1b4 + {value: 0x0002, lo: 0x03}, + {value: 0x0057, lo: 0x80, hi: 0x8f}, + {value: 0x0083, lo: 0x90, hi: 0xa9}, + {value: 0x0021, lo: 0xaa, hi: 0xaa}, + // Block 0x46, offset 0x1b8 + {value: 0x0000, lo: 0x01}, + {value: 0x299b, lo: 0x8c, hi: 0x8c}, + // Block 0x47, offset 0x1ba + {value: 0x0263, lo: 0x02}, + {value: 0x1b8c, lo: 0xb4, hi: 0xb4}, + {value: 0x192d, lo: 0xb5, hi: 0xb6}, + // Block 0x48, offset 0x1bd + {value: 0x0000, lo: 0x01}, + {value: 0x44dd, lo: 0x9c, hi: 0x9c}, + // Block 0x49, offset 0x1bf + {value: 0x0000, lo: 0x02}, + {value: 0x0095, lo: 0xbc, hi: 0xbc}, + {value: 0x006d, lo: 0xbd, hi: 0xbd}, + // Block 0x4a, offset 0x1c2 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xaf, hi: 0xb1}, + // Block 0x4b, offset 0x1c4 + {value: 0x0000, lo: 0x02}, + {value: 0x047f, lo: 0xaf, hi: 0xaf}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x4c, offset 0x1c7 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xa0, hi: 0xbf}, + // Block 0x4d, offset 0x1c9 + {value: 0x0000, lo: 0x01}, + {value: 0x0dc3, lo: 0x9f, hi: 0x9f}, + // Block 0x4e, offset 0x1cb + {value: 0x0000, lo: 0x01}, + {value: 0x162f, lo: 0xb3, hi: 0xb3}, + // Block 0x4f, offset 0x1cd + {value: 0x0004, lo: 0x0b}, + {value: 0x1597, lo: 0x80, hi: 0x82}, + {value: 0x15af, lo: 0x83, hi: 0x83}, + {value: 0x15c7, lo: 0x84, hi: 0x85}, + {value: 0x15d7, lo: 0x86, hi: 0x89}, + {value: 0x15eb, lo: 0x8a, hi: 0x8c}, + {value: 0x15ff, lo: 0x8d, hi: 0x8d}, + {value: 0x1607, lo: 0x8e, hi: 0x8e}, + {value: 0x160f, lo: 0x8f, hi: 0x90}, + {value: 0x161b, lo: 0x91, hi: 0x93}, + {value: 0x162b, lo: 0x94, hi: 0x94}, + {value: 0x1633, lo: 0x95, hi: 0x95}, + // Block 0x50, offset 0x1d9 + {value: 0x0004, lo: 0x09}, + {value: 0x0001, lo: 0x80, hi: 0x80}, + {value: 0x812c, lo: 0xaa, hi: 0xaa}, + {value: 0x8131, lo: 0xab, hi: 0xab}, + {value: 0x8133, lo: 0xac, hi: 0xac}, + {value: 0x812e, lo: 0xad, hi: 0xad}, + {value: 0x812f, lo: 0xae, hi: 0xae}, + {value: 0x812f, lo: 0xaf, hi: 0xaf}, + {value: 0x04b3, lo: 0xb6, hi: 0xb6}, + {value: 0x0887, lo: 0xb8, hi: 0xba}, + // Block 0x51, offset 0x1e3 + {value: 0x0006, lo: 0x09}, + {value: 0x0313, lo: 0xb1, hi: 0xb1}, + {value: 0x0317, lo: 0xb2, hi: 0xb2}, + {value: 0x4a3b, lo: 0xb3, hi: 0xb3}, + {value: 0x031b, lo: 0xb4, hi: 0xb4}, + {value: 0x4a41, lo: 0xb5, hi: 0xb6}, + {value: 0x031f, lo: 0xb7, hi: 0xb7}, + {value: 0x0323, lo: 0xb8, hi: 0xb8}, + {value: 0x0327, lo: 0xb9, hi: 0xb9}, + {value: 0x4a4d, lo: 0xba, hi: 0xbf}, + // Block 0x52, offset 0x1ed + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0xaf, hi: 0xaf}, + {value: 0x8132, lo: 0xb4, hi: 0xbd}, + // Block 0x53, offset 0x1f0 + {value: 0x0000, lo: 0x03}, + {value: 0x020f, lo: 0x9c, hi: 0x9c}, + {value: 0x0212, lo: 0x9d, hi: 0x9d}, + {value: 0x8132, lo: 0x9e, hi: 0x9f}, + // Block 0x54, offset 0x1f4 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb0, hi: 0xb1}, + // Block 0x55, offset 0x1f6 + {value: 0x0000, lo: 0x01}, + {value: 0x163b, lo: 0xb0, hi: 0xb0}, + // Block 0x56, offset 0x1f8 + {value: 0x000c, lo: 0x01}, + {value: 0x00d7, lo: 0xb8, hi: 0xb9}, + // Block 0x57, offset 0x1fa + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x86, hi: 0x86}, + // Block 0x58, offset 0x1fc + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x84, hi: 0x84}, + {value: 0x8132, lo: 0xa0, hi: 0xb1}, + // Block 0x59, offset 0x1ff + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xab, hi: 0xad}, + // Block 0x5a, offset 0x201 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x93, hi: 0x93}, + // Block 0x5b, offset 0x203 + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0xb3, hi: 0xb3}, + // Block 0x5c, offset 0x205 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x80, hi: 0x80}, + // Block 0x5d, offset 0x207 + {value: 0x0000, lo: 0x05}, + {value: 0x8132, lo: 0xb0, hi: 0xb0}, + {value: 0x8132, lo: 0xb2, hi: 0xb3}, + {value: 0x812d, lo: 0xb4, hi: 0xb4}, + {value: 0x8132, lo: 0xb7, hi: 0xb8}, + {value: 0x8132, lo: 0xbe, hi: 0xbf}, + // Block 0x5e, offset 0x20d + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x81, hi: 0x81}, + {value: 0x8104, lo: 0xb6, hi: 0xb6}, + // Block 0x5f, offset 0x210 + {value: 0x0008, lo: 0x03}, + {value: 0x1637, lo: 0x9c, hi: 0x9d}, + {value: 0x0125, lo: 0x9e, hi: 0x9e}, + {value: 0x1643, lo: 0x9f, hi: 0x9f}, + // Block 0x60, offset 0x214 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xad, hi: 0xad}, + // Block 0x61, offset 0x216 + {value: 0x0000, lo: 0x06}, + {value: 0xe500, lo: 0x80, hi: 0x80}, + {value: 0xc600, lo: 0x81, hi: 0x9b}, + {value: 0xe500, lo: 0x9c, hi: 0x9c}, + {value: 0xc600, lo: 0x9d, hi: 0xb7}, + {value: 0xe500, lo: 0xb8, hi: 0xb8}, + {value: 0xc600, lo: 0xb9, hi: 0xbf}, + // Block 0x62, offset 0x21d + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x93}, + {value: 0xe500, lo: 0x94, hi: 0x94}, + {value: 0xc600, lo: 0x95, hi: 0xaf}, + {value: 0xe500, lo: 0xb0, hi: 0xb0}, + {value: 0xc600, lo: 0xb1, hi: 0xbf}, + // Block 0x63, offset 0x223 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8b}, + {value: 0xe500, lo: 0x8c, hi: 0x8c}, + {value: 0xc600, lo: 0x8d, hi: 0xa7}, + {value: 0xe500, lo: 0xa8, hi: 0xa8}, + {value: 0xc600, lo: 0xa9, hi: 0xbf}, + // Block 0x64, offset 0x229 + {value: 0x0000, lo: 0x07}, + {value: 0xc600, lo: 0x80, hi: 0x83}, + {value: 0xe500, lo: 0x84, hi: 0x84}, + {value: 0xc600, lo: 0x85, hi: 0x9f}, + {value: 0xe500, lo: 0xa0, hi: 0xa0}, + {value: 0xc600, lo: 0xa1, hi: 0xbb}, + {value: 0xe500, lo: 0xbc, hi: 0xbc}, + {value: 0xc600, lo: 0xbd, hi: 0xbf}, + // Block 0x65, offset 0x231 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x97}, + {value: 0xe500, lo: 0x98, hi: 0x98}, + {value: 0xc600, lo: 0x99, hi: 0xb3}, + {value: 0xe500, lo: 0xb4, hi: 0xb4}, + {value: 0xc600, lo: 0xb5, hi: 0xbf}, + // Block 0x66, offset 0x237 + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x8f}, + {value: 0xe500, lo: 0x90, hi: 0x90}, + {value: 0xc600, lo: 0x91, hi: 0xab}, + {value: 0xe500, lo: 0xac, hi: 0xac}, + {value: 0xc600, lo: 0xad, hi: 0xbf}, + // Block 0x67, offset 0x23d + {value: 0x0000, lo: 0x05}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + {value: 0xe500, lo: 0xa4, hi: 0xa4}, + {value: 0xc600, lo: 0xa5, hi: 0xbf}, + // Block 0x68, offset 0x243 + {value: 0x0000, lo: 0x03}, + {value: 0xc600, lo: 0x80, hi: 0x87}, + {value: 0xe500, lo: 0x88, hi: 0x88}, + {value: 0xc600, lo: 0x89, hi: 0xa3}, + // Block 0x69, offset 0x247 + {value: 0x0002, lo: 0x01}, + {value: 0x0003, lo: 0x81, hi: 0xbf}, + // Block 0x6a, offset 0x249 + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xbd, hi: 0xbd}, + // Block 0x6b, offset 0x24b + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0xa0, hi: 0xa0}, + // Block 0x6c, offset 0x24d + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb6, hi: 0xba}, + // Block 0x6d, offset 0x24f + {value: 0x002c, lo: 0x05}, + {value: 0x812d, lo: 0x8d, hi: 0x8d}, + {value: 0x8132, lo: 0x8f, hi: 0x8f}, + {value: 0x8132, lo: 0xb8, hi: 0xb8}, + {value: 0x8101, lo: 0xb9, hi: 0xba}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x6e, offset 0x255 + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0xa5, hi: 0xa5}, + {value: 0x812d, lo: 0xa6, hi: 0xa6}, + // Block 0x6f, offset 0x258 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xa4, hi: 0xa7}, + // Block 0x70, offset 0x25a + {value: 0x0000, lo: 0x05}, + {value: 0x812d, lo: 0x86, hi: 0x87}, + {value: 0x8132, lo: 0x88, hi: 0x8a}, + {value: 0x812d, lo: 0x8b, hi: 0x8b}, + {value: 0x8132, lo: 0x8c, hi: 0x8c}, + {value: 0x812d, lo: 0x8d, hi: 0x90}, + // Block 0x71, offset 0x260 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x86, hi: 0x86}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x72, offset 0x263 + {value: 0x17fe, lo: 0x07}, + {value: 0xa000, lo: 0x99, hi: 0x99}, + {value: 0x4238, lo: 0x9a, hi: 0x9a}, + {value: 0xa000, lo: 0x9b, hi: 0x9b}, + {value: 0x4242, lo: 0x9c, hi: 0x9c}, + {value: 0xa000, lo: 0xa5, hi: 0xa5}, + {value: 0x424c, lo: 0xab, hi: 0xab}, + {value: 0x8104, lo: 0xb9, hi: 0xba}, + // Block 0x73, offset 0x26b + {value: 0x0000, lo: 0x06}, + {value: 0x8132, lo: 0x80, hi: 0x82}, + {value: 0x9900, lo: 0xa7, hi: 0xa7}, + {value: 0x2d7e, lo: 0xae, hi: 0xae}, + {value: 0x2d88, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb1, hi: 0xb2}, + {value: 0x8104, lo: 0xb3, hi: 0xb4}, + // Block 0x74, offset 0x272 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x80, hi: 0x80}, + {value: 0x8102, lo: 0x8a, hi: 0x8a}, + // Block 0x75, offset 0x275 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xb5, hi: 0xb5}, + {value: 0x8102, lo: 0xb6, hi: 0xb6}, + // Block 0x76, offset 0x278 + {value: 0x0002, lo: 0x01}, + {value: 0x8102, lo: 0xa9, hi: 0xaa}, + // Block 0x77, offset 0x27a + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0xbb, hi: 0xbc}, + {value: 0x9900, lo: 0xbe, hi: 0xbe}, + // Block 0x78, offset 0x27d + {value: 0x0000, lo: 0x07}, + {value: 0xa000, lo: 0x87, hi: 0x87}, + {value: 0x2d92, lo: 0x8b, hi: 0x8b}, + {value: 0x2d9c, lo: 0x8c, hi: 0x8c}, + {value: 0x8104, lo: 0x8d, hi: 0x8d}, + {value: 0x9900, lo: 0x97, hi: 0x97}, + {value: 0x8132, lo: 0xa6, hi: 0xac}, + {value: 0x8132, lo: 0xb0, hi: 0xb4}, + // Block 0x79, offset 0x285 + {value: 0x0000, lo: 0x03}, + {value: 0x8104, lo: 0x82, hi: 0x82}, + {value: 0x8102, lo: 0x86, hi: 0x86}, + {value: 0x8132, lo: 0x9e, hi: 0x9e}, + // Block 0x7a, offset 0x289 + {value: 0x6b5a, lo: 0x06}, + {value: 0x9900, lo: 0xb0, hi: 0xb0}, + {value: 0xa000, lo: 0xb9, hi: 0xb9}, + {value: 0x9900, lo: 0xba, hi: 0xba}, + {value: 0x2db0, lo: 0xbb, hi: 0xbb}, + {value: 0x2da6, lo: 0xbc, hi: 0xbd}, + {value: 0x2dba, lo: 0xbe, hi: 0xbe}, + // Block 0x7b, offset 0x290 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0x82, hi: 0x82}, + {value: 0x8102, lo: 0x83, hi: 0x83}, + // Block 0x7c, offset 0x293 + {value: 0x0000, lo: 0x05}, + {value: 0x9900, lo: 0xaf, hi: 0xaf}, + {value: 0xa000, lo: 0xb8, hi: 0xb9}, + {value: 0x2dc4, lo: 0xba, hi: 0xba}, + {value: 0x2dce, lo: 0xbb, hi: 0xbb}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x7d, offset 0x299 + {value: 0x0000, lo: 0x01}, + {value: 0x8102, lo: 0x80, hi: 0x80}, + // Block 0x7e, offset 0x29b + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xbf, hi: 0xbf}, + // Block 0x7f, offset 0x29d + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xb6, hi: 0xb6}, + {value: 0x8102, lo: 0xb7, hi: 0xb7}, + // Block 0x80, offset 0x2a0 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xab, hi: 0xab}, + // Block 0x81, offset 0x2a2 + {value: 0x0000, lo: 0x02}, + {value: 0x8104, lo: 0xb9, hi: 0xb9}, + {value: 0x8102, lo: 0xba, hi: 0xba}, + // Block 0x82, offset 0x2a5 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0xb4, hi: 0xb4}, + // Block 0x83, offset 0x2a7 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x87, hi: 0x87}, + // Block 0x84, offset 0x2a9 + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x99, hi: 0x99}, + // Block 0x85, offset 0x2ab + {value: 0x0000, lo: 0x02}, + {value: 0x8102, lo: 0x82, hi: 0x82}, + {value: 0x8104, lo: 0x84, hi: 0x85}, + // Block 0x86, offset 0x2ae + {value: 0x0000, lo: 0x01}, + {value: 0x8104, lo: 0x97, hi: 0x97}, + // Block 0x87, offset 0x2b0 + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0xb0, hi: 0xb4}, + // Block 0x88, offset 0x2b2 + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0xb0, hi: 0xb6}, + // Block 0x89, offset 0x2b4 + {value: 0x0000, lo: 0x01}, + {value: 0x8101, lo: 0x9e, hi: 0x9e}, + // Block 0x8a, offset 0x2b6 + {value: 0x0000, lo: 0x0c}, + {value: 0x45cc, lo: 0x9e, hi: 0x9e}, + {value: 0x45d6, lo: 0x9f, hi: 0x9f}, + {value: 0x460a, lo: 0xa0, hi: 0xa0}, + {value: 0x4618, lo: 0xa1, hi: 0xa1}, + {value: 0x4626, lo: 0xa2, hi: 0xa2}, + {value: 0x4634, lo: 0xa3, hi: 0xa3}, + {value: 0x4642, lo: 0xa4, hi: 0xa4}, + {value: 0x812b, lo: 0xa5, hi: 0xa6}, + {value: 0x8101, lo: 0xa7, hi: 0xa9}, + {value: 0x8130, lo: 0xad, hi: 0xad}, + {value: 0x812b, lo: 0xae, hi: 0xb2}, + {value: 0x812d, lo: 0xbb, hi: 0xbf}, + // Block 0x8b, offset 0x2c3 + {value: 0x0000, lo: 0x09}, + {value: 0x812d, lo: 0x80, hi: 0x82}, + {value: 0x8132, lo: 0x85, hi: 0x89}, + {value: 0x812d, lo: 0x8a, hi: 0x8b}, + {value: 0x8132, lo: 0xaa, hi: 0xad}, + {value: 0x45e0, lo: 0xbb, hi: 0xbb}, + {value: 0x45ea, lo: 0xbc, hi: 0xbc}, + {value: 0x4650, lo: 0xbd, hi: 0xbd}, + {value: 0x466c, lo: 0xbe, hi: 0xbe}, + {value: 0x465e, lo: 0xbf, hi: 0xbf}, + // Block 0x8c, offset 0x2cd + {value: 0x0000, lo: 0x01}, + {value: 0x467a, lo: 0x80, hi: 0x80}, + // Block 0x8d, offset 0x2cf + {value: 0x0000, lo: 0x01}, + {value: 0x8132, lo: 0x82, hi: 0x84}, + // Block 0x8e, offset 0x2d1 + {value: 0x0002, lo: 0x03}, + {value: 0x0043, lo: 0x80, hi: 0x99}, + {value: 0x0083, lo: 0x9a, hi: 0xb3}, + {value: 0x0043, lo: 0xb4, hi: 0xbf}, + // Block 0x8f, offset 0x2d5 + {value: 0x0002, lo: 0x04}, + {value: 0x005b, lo: 0x80, hi: 0x8d}, + {value: 0x0083, lo: 0x8e, hi: 0x94}, + {value: 0x0093, lo: 0x96, hi: 0xa7}, + {value: 0x0043, lo: 0xa8, hi: 0xbf}, + // Block 0x90, offset 0x2da + {value: 0x0002, lo: 0x0b}, + {value: 0x0073, lo: 0x80, hi: 0x81}, + {value: 0x0083, lo: 0x82, hi: 0x9b}, + {value: 0x0043, lo: 0x9c, hi: 0x9c}, + {value: 0x0047, lo: 0x9e, hi: 0x9f}, + {value: 0x004f, lo: 0xa2, hi: 0xa2}, + {value: 0x0055, lo: 0xa5, hi: 0xa6}, + {value: 0x005d, lo: 0xa9, hi: 0xac}, + {value: 0x0067, lo: 0xae, hi: 0xb5}, + {value: 0x0083, lo: 0xb6, hi: 0xb9}, + {value: 0x008d, lo: 0xbb, hi: 0xbb}, + {value: 0x0091, lo: 0xbd, hi: 0xbf}, + // Block 0x91, offset 0x2e6 + {value: 0x0002, lo: 0x04}, + {value: 0x0097, lo: 0x80, hi: 0x83}, + {value: 0x00a1, lo: 0x85, hi: 0x8f}, + {value: 0x0043, lo: 0x90, hi: 0xa9}, + {value: 0x0083, lo: 0xaa, hi: 0xbf}, + // Block 0x92, offset 0x2eb + {value: 0x0002, lo: 0x08}, + {value: 0x00af, lo: 0x80, hi: 0x83}, + {value: 0x0043, lo: 0x84, hi: 0x85}, + {value: 0x0049, lo: 0x87, hi: 0x8a}, + {value: 0x0055, lo: 0x8d, hi: 0x94}, + {value: 0x0067, lo: 0x96, hi: 0x9c}, + {value: 0x0083, lo: 0x9e, hi: 0xb7}, + {value: 0x0043, lo: 0xb8, hi: 0xb9}, + {value: 0x0049, lo: 0xbb, hi: 0xbe}, + // Block 0x93, offset 0x2f4 + {value: 0x0002, lo: 0x05}, + {value: 0x0053, lo: 0x80, hi: 0x84}, + {value: 0x005f, lo: 0x86, hi: 0x86}, + {value: 0x0067, lo: 0x8a, hi: 0x90}, + {value: 0x0083, lo: 0x92, hi: 0xab}, + {value: 0x0043, lo: 0xac, hi: 0xbf}, + // Block 0x94, offset 0x2fa + {value: 0x0002, lo: 0x04}, + {value: 0x006b, lo: 0x80, hi: 0x85}, + {value: 0x0083, lo: 0x86, hi: 0x9f}, + {value: 0x0043, lo: 0xa0, hi: 0xb9}, + {value: 0x0083, lo: 0xba, hi: 0xbf}, + // Block 0x95, offset 0x2ff + {value: 0x0002, lo: 0x03}, + {value: 0x008f, lo: 0x80, hi: 0x93}, + {value: 0x0043, lo: 0x94, hi: 0xad}, + {value: 0x0083, lo: 0xae, hi: 0xbf}, + // Block 0x96, offset 0x303 + {value: 0x0002, lo: 0x04}, + {value: 0x00a7, lo: 0x80, hi: 0x87}, + {value: 0x0043, lo: 0x88, hi: 0xa1}, + {value: 0x0083, lo: 0xa2, hi: 0xbb}, + {value: 0x0043, lo: 0xbc, hi: 0xbf}, + // Block 0x97, offset 0x308 + {value: 0x0002, lo: 0x03}, + {value: 0x004b, lo: 0x80, hi: 0x95}, + {value: 0x0083, lo: 0x96, hi: 0xaf}, + {value: 0x0043, lo: 0xb0, hi: 0xbf}, + // Block 0x98, offset 0x30c + {value: 0x0003, lo: 0x0f}, + {value: 0x01b8, lo: 0x80, hi: 0x80}, + {value: 0x045f, lo: 0x81, hi: 0x81}, + {value: 0x01bb, lo: 0x82, hi: 0x9a}, + {value: 0x045b, lo: 0x9b, hi: 0x9b}, + {value: 0x01c7, lo: 0x9c, hi: 0x9c}, + {value: 0x01d0, lo: 0x9d, hi: 0x9d}, + {value: 0x01d6, lo: 0x9e, hi: 0x9e}, + {value: 0x01fa, lo: 0x9f, hi: 0x9f}, + {value: 0x01eb, lo: 0xa0, hi: 0xa0}, + {value: 0x01e8, lo: 0xa1, hi: 0xa1}, + {value: 0x0173, lo: 0xa2, hi: 0xb2}, + {value: 0x0188, lo: 0xb3, hi: 0xb3}, + {value: 0x01a6, lo: 0xb4, hi: 0xba}, + {value: 0x045f, lo: 0xbb, hi: 0xbb}, + {value: 0x01bb, lo: 0xbc, hi: 0xbf}, + // Block 0x99, offset 0x31c + {value: 0x0003, lo: 0x0d}, + {value: 0x01c7, lo: 0x80, hi: 0x94}, + {value: 0x045b, lo: 0x95, hi: 0x95}, + {value: 0x01c7, lo: 0x96, hi: 0x96}, + {value: 0x01d0, lo: 0x97, hi: 0x97}, + {value: 0x01d6, lo: 0x98, hi: 0x98}, + {value: 0x01fa, lo: 0x99, hi: 0x99}, + {value: 0x01eb, lo: 0x9a, hi: 0x9a}, + {value: 0x01e8, lo: 0x9b, hi: 0x9b}, + {value: 0x0173, lo: 0x9c, hi: 0xac}, + {value: 0x0188, lo: 0xad, hi: 0xad}, + {value: 0x01a6, lo: 0xae, hi: 0xb4}, + {value: 0x045f, lo: 0xb5, hi: 0xb5}, + {value: 0x01bb, lo: 0xb6, hi: 0xbf}, + // Block 0x9a, offset 0x32a + {value: 0x0003, lo: 0x0d}, + {value: 0x01d9, lo: 0x80, hi: 0x8e}, + {value: 0x045b, lo: 0x8f, hi: 0x8f}, + {value: 0x01c7, lo: 0x90, hi: 0x90}, + {value: 0x01d0, lo: 0x91, hi: 0x91}, + {value: 0x01d6, lo: 0x92, hi: 0x92}, + {value: 0x01fa, lo: 0x93, hi: 0x93}, + {value: 0x01eb, lo: 0x94, hi: 0x94}, + {value: 0x01e8, lo: 0x95, hi: 0x95}, + {value: 0x0173, lo: 0x96, hi: 0xa6}, + {value: 0x0188, lo: 0xa7, hi: 0xa7}, + {value: 0x01a6, lo: 0xa8, hi: 0xae}, + {value: 0x045f, lo: 0xaf, hi: 0xaf}, + {value: 0x01bb, lo: 0xb0, hi: 0xbf}, + // Block 0x9b, offset 0x338 + {value: 0x0003, lo: 0x0d}, + {value: 0x01eb, lo: 0x80, hi: 0x88}, + {value: 0x045b, lo: 0x89, hi: 0x89}, + {value: 0x01c7, lo: 0x8a, hi: 0x8a}, + {value: 0x01d0, lo: 0x8b, hi: 0x8b}, + {value: 0x01d6, lo: 0x8c, hi: 0x8c}, + {value: 0x01fa, lo: 0x8d, hi: 0x8d}, + {value: 0x01eb, lo: 0x8e, hi: 0x8e}, + {value: 0x01e8, lo: 0x8f, hi: 0x8f}, + {value: 0x0173, lo: 0x90, hi: 0xa0}, + {value: 0x0188, lo: 0xa1, hi: 0xa1}, + {value: 0x01a6, lo: 0xa2, hi: 0xa8}, + {value: 0x045f, lo: 0xa9, hi: 0xa9}, + {value: 0x01bb, lo: 0xaa, hi: 0xbf}, + // Block 0x9c, offset 0x346 + {value: 0x0000, lo: 0x05}, + {value: 0x8132, lo: 0x80, hi: 0x86}, + {value: 0x8132, lo: 0x88, hi: 0x98}, + {value: 0x8132, lo: 0x9b, hi: 0xa1}, + {value: 0x8132, lo: 0xa3, hi: 0xa4}, + {value: 0x8132, lo: 0xa6, hi: 0xaa}, + // Block 0x9d, offset 0x34c + {value: 0x0000, lo: 0x01}, + {value: 0x812d, lo: 0x90, hi: 0x96}, + // Block 0x9e, offset 0x34e + {value: 0x0000, lo: 0x02}, + {value: 0x8132, lo: 0x84, hi: 0x89}, + {value: 0x8102, lo: 0x8a, hi: 0x8a}, + // Block 0x9f, offset 0x351 + {value: 0x0002, lo: 0x09}, + {value: 0x0063, lo: 0x80, hi: 0x89}, + {value: 0x1951, lo: 0x8a, hi: 0x8a}, + {value: 0x1981, lo: 0x8b, hi: 0x8b}, + {value: 0x199c, lo: 0x8c, hi: 0x8c}, + {value: 0x19a2, lo: 0x8d, hi: 0x8d}, + {value: 0x1bc0, lo: 0x8e, hi: 0x8e}, + {value: 0x19ae, lo: 0x8f, hi: 0x8f}, + {value: 0x197b, lo: 0xaa, hi: 0xaa}, + {value: 0x197e, lo: 0xab, hi: 0xab}, + // Block 0xa0, offset 0x35b + {value: 0x0000, lo: 0x01}, + {value: 0x193f, lo: 0x90, hi: 0x90}, + // Block 0xa1, offset 0x35d + {value: 0x0028, lo: 0x09}, + {value: 0x2862, lo: 0x80, hi: 0x80}, + {value: 0x2826, lo: 0x81, hi: 0x81}, + {value: 0x2830, lo: 0x82, hi: 0x82}, + {value: 0x2844, lo: 0x83, hi: 0x84}, + {value: 0x284e, lo: 0x85, hi: 0x86}, + {value: 0x283a, lo: 0x87, hi: 0x87}, + {value: 0x2858, lo: 0x88, hi: 0x88}, + {value: 0x0b6f, lo: 0x90, hi: 0x90}, + {value: 0x08e7, lo: 0x91, hi: 0x91}, +} + +// recompMap: 7520 bytes (entries only) +var recompMap map[uint32]rune +var recompMapOnce sync.Once + +const recompMapPacked = "" + + "\x00A\x03\x00\x00\x00\x00\xc0" + // 0x00410300: 0x000000C0 + "\x00A\x03\x01\x00\x00\x00\xc1" + // 0x00410301: 0x000000C1 + "\x00A\x03\x02\x00\x00\x00\xc2" + // 0x00410302: 0x000000C2 + "\x00A\x03\x03\x00\x00\x00\xc3" + // 0x00410303: 0x000000C3 + "\x00A\x03\b\x00\x00\x00\xc4" + // 0x00410308: 0x000000C4 + "\x00A\x03\n\x00\x00\x00\xc5" + // 0x0041030A: 0x000000C5 + "\x00C\x03'\x00\x00\x00\xc7" + // 0x00430327: 0x000000C7 + "\x00E\x03\x00\x00\x00\x00\xc8" + // 0x00450300: 0x000000C8 + "\x00E\x03\x01\x00\x00\x00\xc9" + // 0x00450301: 0x000000C9 + "\x00E\x03\x02\x00\x00\x00\xca" + // 0x00450302: 0x000000CA + "\x00E\x03\b\x00\x00\x00\xcb" + // 0x00450308: 0x000000CB + "\x00I\x03\x00\x00\x00\x00\xcc" + // 0x00490300: 0x000000CC + "\x00I\x03\x01\x00\x00\x00\xcd" + // 0x00490301: 0x000000CD + "\x00I\x03\x02\x00\x00\x00\xce" + // 0x00490302: 0x000000CE + "\x00I\x03\b\x00\x00\x00\xcf" + // 0x00490308: 0x000000CF + "\x00N\x03\x03\x00\x00\x00\xd1" + // 0x004E0303: 0x000000D1 + "\x00O\x03\x00\x00\x00\x00\xd2" + // 0x004F0300: 0x000000D2 + "\x00O\x03\x01\x00\x00\x00\xd3" + // 0x004F0301: 0x000000D3 + "\x00O\x03\x02\x00\x00\x00\xd4" + // 0x004F0302: 0x000000D4 + "\x00O\x03\x03\x00\x00\x00\xd5" + // 0x004F0303: 0x000000D5 + "\x00O\x03\b\x00\x00\x00\xd6" + // 0x004F0308: 0x000000D6 + "\x00U\x03\x00\x00\x00\x00\xd9" + // 0x00550300: 0x000000D9 + "\x00U\x03\x01\x00\x00\x00\xda" + // 0x00550301: 0x000000DA + "\x00U\x03\x02\x00\x00\x00\xdb" + // 0x00550302: 0x000000DB + "\x00U\x03\b\x00\x00\x00\xdc" + // 0x00550308: 0x000000DC + "\x00Y\x03\x01\x00\x00\x00\xdd" + // 0x00590301: 0x000000DD + "\x00a\x03\x00\x00\x00\x00\xe0" + // 0x00610300: 0x000000E0 + "\x00a\x03\x01\x00\x00\x00\xe1" + // 0x00610301: 0x000000E1 + "\x00a\x03\x02\x00\x00\x00\xe2" + // 0x00610302: 0x000000E2 + "\x00a\x03\x03\x00\x00\x00\xe3" + // 0x00610303: 0x000000E3 + "\x00a\x03\b\x00\x00\x00\xe4" + // 0x00610308: 0x000000E4 + "\x00a\x03\n\x00\x00\x00\xe5" + // 0x0061030A: 0x000000E5 + "\x00c\x03'\x00\x00\x00\xe7" + // 0x00630327: 0x000000E7 + "\x00e\x03\x00\x00\x00\x00\xe8" + // 0x00650300: 0x000000E8 + "\x00e\x03\x01\x00\x00\x00\xe9" + // 0x00650301: 0x000000E9 + "\x00e\x03\x02\x00\x00\x00\xea" + // 0x00650302: 0x000000EA + "\x00e\x03\b\x00\x00\x00\xeb" + // 0x00650308: 0x000000EB + "\x00i\x03\x00\x00\x00\x00\xec" + // 0x00690300: 0x000000EC + "\x00i\x03\x01\x00\x00\x00\xed" + // 0x00690301: 0x000000ED + "\x00i\x03\x02\x00\x00\x00\xee" + // 0x00690302: 0x000000EE + "\x00i\x03\b\x00\x00\x00\xef" + // 0x00690308: 0x000000EF + "\x00n\x03\x03\x00\x00\x00\xf1" + // 0x006E0303: 0x000000F1 + "\x00o\x03\x00\x00\x00\x00\xf2" + // 0x006F0300: 0x000000F2 + "\x00o\x03\x01\x00\x00\x00\xf3" + // 0x006F0301: 0x000000F3 + "\x00o\x03\x02\x00\x00\x00\xf4" + // 0x006F0302: 0x000000F4 + "\x00o\x03\x03\x00\x00\x00\xf5" + // 0x006F0303: 0x000000F5 + "\x00o\x03\b\x00\x00\x00\xf6" + // 0x006F0308: 0x000000F6 + "\x00u\x03\x00\x00\x00\x00\xf9" + // 0x00750300: 0x000000F9 + "\x00u\x03\x01\x00\x00\x00\xfa" + // 0x00750301: 0x000000FA + "\x00u\x03\x02\x00\x00\x00\xfb" + // 0x00750302: 0x000000FB + "\x00u\x03\b\x00\x00\x00\xfc" + // 0x00750308: 0x000000FC + "\x00y\x03\x01\x00\x00\x00\xfd" + // 0x00790301: 0x000000FD + "\x00y\x03\b\x00\x00\x00\xff" + // 0x00790308: 0x000000FF + "\x00A\x03\x04\x00\x00\x01\x00" + // 0x00410304: 0x00000100 + "\x00a\x03\x04\x00\x00\x01\x01" + // 0x00610304: 0x00000101 + "\x00A\x03\x06\x00\x00\x01\x02" + // 0x00410306: 0x00000102 + "\x00a\x03\x06\x00\x00\x01\x03" + // 0x00610306: 0x00000103 + "\x00A\x03(\x00\x00\x01\x04" + // 0x00410328: 0x00000104 + "\x00a\x03(\x00\x00\x01\x05" + // 0x00610328: 0x00000105 + "\x00C\x03\x01\x00\x00\x01\x06" + // 0x00430301: 0x00000106 + "\x00c\x03\x01\x00\x00\x01\a" + // 0x00630301: 0x00000107 + "\x00C\x03\x02\x00\x00\x01\b" + // 0x00430302: 0x00000108 + "\x00c\x03\x02\x00\x00\x01\t" + // 0x00630302: 0x00000109 + "\x00C\x03\a\x00\x00\x01\n" + // 0x00430307: 0x0000010A + "\x00c\x03\a\x00\x00\x01\v" + // 0x00630307: 0x0000010B + "\x00C\x03\f\x00\x00\x01\f" + // 0x0043030C: 0x0000010C + "\x00c\x03\f\x00\x00\x01\r" + // 0x0063030C: 0x0000010D + "\x00D\x03\f\x00\x00\x01\x0e" + // 0x0044030C: 0x0000010E + "\x00d\x03\f\x00\x00\x01\x0f" + // 0x0064030C: 0x0000010F + "\x00E\x03\x04\x00\x00\x01\x12" + // 0x00450304: 0x00000112 + "\x00e\x03\x04\x00\x00\x01\x13" + // 0x00650304: 0x00000113 + "\x00E\x03\x06\x00\x00\x01\x14" + // 0x00450306: 0x00000114 + "\x00e\x03\x06\x00\x00\x01\x15" + // 0x00650306: 0x00000115 + "\x00E\x03\a\x00\x00\x01\x16" + // 0x00450307: 0x00000116 + "\x00e\x03\a\x00\x00\x01\x17" + // 0x00650307: 0x00000117 + "\x00E\x03(\x00\x00\x01\x18" + // 0x00450328: 0x00000118 + "\x00e\x03(\x00\x00\x01\x19" + // 0x00650328: 0x00000119 + "\x00E\x03\f\x00\x00\x01\x1a" + // 0x0045030C: 0x0000011A + "\x00e\x03\f\x00\x00\x01\x1b" + // 0x0065030C: 0x0000011B + "\x00G\x03\x02\x00\x00\x01\x1c" + // 0x00470302: 0x0000011C + "\x00g\x03\x02\x00\x00\x01\x1d" + // 0x00670302: 0x0000011D + "\x00G\x03\x06\x00\x00\x01\x1e" + // 0x00470306: 0x0000011E + "\x00g\x03\x06\x00\x00\x01\x1f" + // 0x00670306: 0x0000011F + "\x00G\x03\a\x00\x00\x01 " + // 0x00470307: 0x00000120 + "\x00g\x03\a\x00\x00\x01!" + // 0x00670307: 0x00000121 + "\x00G\x03'\x00\x00\x01\"" + // 0x00470327: 0x00000122 + "\x00g\x03'\x00\x00\x01#" + // 0x00670327: 0x00000123 + "\x00H\x03\x02\x00\x00\x01$" + // 0x00480302: 0x00000124 + "\x00h\x03\x02\x00\x00\x01%" + // 0x00680302: 0x00000125 + "\x00I\x03\x03\x00\x00\x01(" + // 0x00490303: 0x00000128 + "\x00i\x03\x03\x00\x00\x01)" + // 0x00690303: 0x00000129 + "\x00I\x03\x04\x00\x00\x01*" + // 0x00490304: 0x0000012A + "\x00i\x03\x04\x00\x00\x01+" + // 0x00690304: 0x0000012B + "\x00I\x03\x06\x00\x00\x01," + // 0x00490306: 0x0000012C + "\x00i\x03\x06\x00\x00\x01-" + // 0x00690306: 0x0000012D + "\x00I\x03(\x00\x00\x01." + // 0x00490328: 0x0000012E + "\x00i\x03(\x00\x00\x01/" + // 0x00690328: 0x0000012F + "\x00I\x03\a\x00\x00\x010" + // 0x00490307: 0x00000130 + "\x00J\x03\x02\x00\x00\x014" + // 0x004A0302: 0x00000134 + "\x00j\x03\x02\x00\x00\x015" + // 0x006A0302: 0x00000135 + "\x00K\x03'\x00\x00\x016" + // 0x004B0327: 0x00000136 + "\x00k\x03'\x00\x00\x017" + // 0x006B0327: 0x00000137 + "\x00L\x03\x01\x00\x00\x019" + // 0x004C0301: 0x00000139 + "\x00l\x03\x01\x00\x00\x01:" + // 0x006C0301: 0x0000013A + "\x00L\x03'\x00\x00\x01;" + // 0x004C0327: 0x0000013B + "\x00l\x03'\x00\x00\x01<" + // 0x006C0327: 0x0000013C + "\x00L\x03\f\x00\x00\x01=" + // 0x004C030C: 0x0000013D + "\x00l\x03\f\x00\x00\x01>" + // 0x006C030C: 0x0000013E + "\x00N\x03\x01\x00\x00\x01C" + // 0x004E0301: 0x00000143 + "\x00n\x03\x01\x00\x00\x01D" + // 0x006E0301: 0x00000144 + "\x00N\x03'\x00\x00\x01E" + // 0x004E0327: 0x00000145 + "\x00n\x03'\x00\x00\x01F" + // 0x006E0327: 0x00000146 + "\x00N\x03\f\x00\x00\x01G" + // 0x004E030C: 0x00000147 + "\x00n\x03\f\x00\x00\x01H" + // 0x006E030C: 0x00000148 + "\x00O\x03\x04\x00\x00\x01L" + // 0x004F0304: 0x0000014C + "\x00o\x03\x04\x00\x00\x01M" + // 0x006F0304: 0x0000014D + "\x00O\x03\x06\x00\x00\x01N" + // 0x004F0306: 0x0000014E + "\x00o\x03\x06\x00\x00\x01O" + // 0x006F0306: 0x0000014F + "\x00O\x03\v\x00\x00\x01P" + // 0x004F030B: 0x00000150 + "\x00o\x03\v\x00\x00\x01Q" + // 0x006F030B: 0x00000151 + "\x00R\x03\x01\x00\x00\x01T" + // 0x00520301: 0x00000154 + "\x00r\x03\x01\x00\x00\x01U" + // 0x00720301: 0x00000155 + "\x00R\x03'\x00\x00\x01V" + // 0x00520327: 0x00000156 + "\x00r\x03'\x00\x00\x01W" + // 0x00720327: 0x00000157 + "\x00R\x03\f\x00\x00\x01X" + // 0x0052030C: 0x00000158 + "\x00r\x03\f\x00\x00\x01Y" + // 0x0072030C: 0x00000159 + "\x00S\x03\x01\x00\x00\x01Z" + // 0x00530301: 0x0000015A + "\x00s\x03\x01\x00\x00\x01[" + // 0x00730301: 0x0000015B + "\x00S\x03\x02\x00\x00\x01\\" + // 0x00530302: 0x0000015C + "\x00s\x03\x02\x00\x00\x01]" + // 0x00730302: 0x0000015D + "\x00S\x03'\x00\x00\x01^" + // 0x00530327: 0x0000015E + "\x00s\x03'\x00\x00\x01_" + // 0x00730327: 0x0000015F + "\x00S\x03\f\x00\x00\x01`" + // 0x0053030C: 0x00000160 + "\x00s\x03\f\x00\x00\x01a" + // 0x0073030C: 0x00000161 + "\x00T\x03'\x00\x00\x01b" + // 0x00540327: 0x00000162 + "\x00t\x03'\x00\x00\x01c" + // 0x00740327: 0x00000163 + "\x00T\x03\f\x00\x00\x01d" + // 0x0054030C: 0x00000164 + "\x00t\x03\f\x00\x00\x01e" + // 0x0074030C: 0x00000165 + "\x00U\x03\x03\x00\x00\x01h" + // 0x00550303: 0x00000168 + "\x00u\x03\x03\x00\x00\x01i" + // 0x00750303: 0x00000169 + "\x00U\x03\x04\x00\x00\x01j" + // 0x00550304: 0x0000016A + "\x00u\x03\x04\x00\x00\x01k" + // 0x00750304: 0x0000016B + "\x00U\x03\x06\x00\x00\x01l" + // 0x00550306: 0x0000016C + "\x00u\x03\x06\x00\x00\x01m" + // 0x00750306: 0x0000016D + "\x00U\x03\n\x00\x00\x01n" + // 0x0055030A: 0x0000016E + "\x00u\x03\n\x00\x00\x01o" + // 0x0075030A: 0x0000016F + "\x00U\x03\v\x00\x00\x01p" + // 0x0055030B: 0x00000170 + "\x00u\x03\v\x00\x00\x01q" + // 0x0075030B: 0x00000171 + "\x00U\x03(\x00\x00\x01r" + // 0x00550328: 0x00000172 + "\x00u\x03(\x00\x00\x01s" + // 0x00750328: 0x00000173 + "\x00W\x03\x02\x00\x00\x01t" + // 0x00570302: 0x00000174 + "\x00w\x03\x02\x00\x00\x01u" + // 0x00770302: 0x00000175 + "\x00Y\x03\x02\x00\x00\x01v" + // 0x00590302: 0x00000176 + "\x00y\x03\x02\x00\x00\x01w" + // 0x00790302: 0x00000177 + "\x00Y\x03\b\x00\x00\x01x" + // 0x00590308: 0x00000178 + "\x00Z\x03\x01\x00\x00\x01y" + // 0x005A0301: 0x00000179 + "\x00z\x03\x01\x00\x00\x01z" + // 0x007A0301: 0x0000017A + "\x00Z\x03\a\x00\x00\x01{" + // 0x005A0307: 0x0000017B + "\x00z\x03\a\x00\x00\x01|" + // 0x007A0307: 0x0000017C + "\x00Z\x03\f\x00\x00\x01}" + // 0x005A030C: 0x0000017D + "\x00z\x03\f\x00\x00\x01~" + // 0x007A030C: 0x0000017E + "\x00O\x03\x1b\x00\x00\x01\xa0" + // 0x004F031B: 0x000001A0 + "\x00o\x03\x1b\x00\x00\x01\xa1" + // 0x006F031B: 0x000001A1 + "\x00U\x03\x1b\x00\x00\x01\xaf" + // 0x0055031B: 0x000001AF + "\x00u\x03\x1b\x00\x00\x01\xb0" + // 0x0075031B: 0x000001B0 + "\x00A\x03\f\x00\x00\x01\xcd" + // 0x0041030C: 0x000001CD + "\x00a\x03\f\x00\x00\x01\xce" + // 0x0061030C: 0x000001CE + "\x00I\x03\f\x00\x00\x01\xcf" + // 0x0049030C: 0x000001CF + "\x00i\x03\f\x00\x00\x01\xd0" + // 0x0069030C: 0x000001D0 + "\x00O\x03\f\x00\x00\x01\xd1" + // 0x004F030C: 0x000001D1 + "\x00o\x03\f\x00\x00\x01\xd2" + // 0x006F030C: 0x000001D2 + "\x00U\x03\f\x00\x00\x01\xd3" + // 0x0055030C: 0x000001D3 + "\x00u\x03\f\x00\x00\x01\xd4" + // 0x0075030C: 0x000001D4 + "\x00\xdc\x03\x04\x00\x00\x01\xd5" + // 0x00DC0304: 0x000001D5 + "\x00\xfc\x03\x04\x00\x00\x01\xd6" + // 0x00FC0304: 0x000001D6 + "\x00\xdc\x03\x01\x00\x00\x01\xd7" + // 0x00DC0301: 0x000001D7 + "\x00\xfc\x03\x01\x00\x00\x01\xd8" + // 0x00FC0301: 0x000001D8 + "\x00\xdc\x03\f\x00\x00\x01\xd9" + // 0x00DC030C: 0x000001D9 + "\x00\xfc\x03\f\x00\x00\x01\xda" + // 0x00FC030C: 0x000001DA + "\x00\xdc\x03\x00\x00\x00\x01\xdb" + // 0x00DC0300: 0x000001DB + "\x00\xfc\x03\x00\x00\x00\x01\xdc" + // 0x00FC0300: 0x000001DC + "\x00\xc4\x03\x04\x00\x00\x01\xde" + // 0x00C40304: 0x000001DE + "\x00\xe4\x03\x04\x00\x00\x01\xdf" + // 0x00E40304: 0x000001DF + "\x02&\x03\x04\x00\x00\x01\xe0" + // 0x02260304: 0x000001E0 + "\x02'\x03\x04\x00\x00\x01\xe1" + // 0x02270304: 0x000001E1 + "\x00\xc6\x03\x04\x00\x00\x01\xe2" + // 0x00C60304: 0x000001E2 + "\x00\xe6\x03\x04\x00\x00\x01\xe3" + // 0x00E60304: 0x000001E3 + "\x00G\x03\f\x00\x00\x01\xe6" + // 0x0047030C: 0x000001E6 + "\x00g\x03\f\x00\x00\x01\xe7" + // 0x0067030C: 0x000001E7 + "\x00K\x03\f\x00\x00\x01\xe8" + // 0x004B030C: 0x000001E8 + "\x00k\x03\f\x00\x00\x01\xe9" + // 0x006B030C: 0x000001E9 + "\x00O\x03(\x00\x00\x01\xea" + // 0x004F0328: 0x000001EA + "\x00o\x03(\x00\x00\x01\xeb" + // 0x006F0328: 0x000001EB + "\x01\xea\x03\x04\x00\x00\x01\xec" + // 0x01EA0304: 0x000001EC + "\x01\xeb\x03\x04\x00\x00\x01\xed" + // 0x01EB0304: 0x000001ED + "\x01\xb7\x03\f\x00\x00\x01\xee" + // 0x01B7030C: 0x000001EE + "\x02\x92\x03\f\x00\x00\x01\xef" + // 0x0292030C: 0x000001EF + "\x00j\x03\f\x00\x00\x01\xf0" + // 0x006A030C: 0x000001F0 + "\x00G\x03\x01\x00\x00\x01\xf4" + // 0x00470301: 0x000001F4 + "\x00g\x03\x01\x00\x00\x01\xf5" + // 0x00670301: 0x000001F5 + "\x00N\x03\x00\x00\x00\x01\xf8" + // 0x004E0300: 0x000001F8 + "\x00n\x03\x00\x00\x00\x01\xf9" + // 0x006E0300: 0x000001F9 + "\x00\xc5\x03\x01\x00\x00\x01\xfa" + // 0x00C50301: 0x000001FA + "\x00\xe5\x03\x01\x00\x00\x01\xfb" + // 0x00E50301: 0x000001FB + "\x00\xc6\x03\x01\x00\x00\x01\xfc" + // 0x00C60301: 0x000001FC + "\x00\xe6\x03\x01\x00\x00\x01\xfd" + // 0x00E60301: 0x000001FD + "\x00\xd8\x03\x01\x00\x00\x01\xfe" + // 0x00D80301: 0x000001FE + "\x00\xf8\x03\x01\x00\x00\x01\xff" + // 0x00F80301: 0x000001FF + "\x00A\x03\x0f\x00\x00\x02\x00" + // 0x0041030F: 0x00000200 + "\x00a\x03\x0f\x00\x00\x02\x01" + // 0x0061030F: 0x00000201 + "\x00A\x03\x11\x00\x00\x02\x02" + // 0x00410311: 0x00000202 + "\x00a\x03\x11\x00\x00\x02\x03" + // 0x00610311: 0x00000203 + "\x00E\x03\x0f\x00\x00\x02\x04" + // 0x0045030F: 0x00000204 + "\x00e\x03\x0f\x00\x00\x02\x05" + // 0x0065030F: 0x00000205 + "\x00E\x03\x11\x00\x00\x02\x06" + // 0x00450311: 0x00000206 + "\x00e\x03\x11\x00\x00\x02\a" + // 0x00650311: 0x00000207 + "\x00I\x03\x0f\x00\x00\x02\b" + // 0x0049030F: 0x00000208 + "\x00i\x03\x0f\x00\x00\x02\t" + // 0x0069030F: 0x00000209 + "\x00I\x03\x11\x00\x00\x02\n" + // 0x00490311: 0x0000020A + "\x00i\x03\x11\x00\x00\x02\v" + // 0x00690311: 0x0000020B + "\x00O\x03\x0f\x00\x00\x02\f" + // 0x004F030F: 0x0000020C + "\x00o\x03\x0f\x00\x00\x02\r" + // 0x006F030F: 0x0000020D + "\x00O\x03\x11\x00\x00\x02\x0e" + // 0x004F0311: 0x0000020E + "\x00o\x03\x11\x00\x00\x02\x0f" + // 0x006F0311: 0x0000020F + "\x00R\x03\x0f\x00\x00\x02\x10" + // 0x0052030F: 0x00000210 + "\x00r\x03\x0f\x00\x00\x02\x11" + // 0x0072030F: 0x00000211 + "\x00R\x03\x11\x00\x00\x02\x12" + // 0x00520311: 0x00000212 + "\x00r\x03\x11\x00\x00\x02\x13" + // 0x00720311: 0x00000213 + "\x00U\x03\x0f\x00\x00\x02\x14" + // 0x0055030F: 0x00000214 + "\x00u\x03\x0f\x00\x00\x02\x15" + // 0x0075030F: 0x00000215 + "\x00U\x03\x11\x00\x00\x02\x16" + // 0x00550311: 0x00000216 + "\x00u\x03\x11\x00\x00\x02\x17" + // 0x00750311: 0x00000217 + "\x00S\x03&\x00\x00\x02\x18" + // 0x00530326: 0x00000218 + "\x00s\x03&\x00\x00\x02\x19" + // 0x00730326: 0x00000219 + "\x00T\x03&\x00\x00\x02\x1a" + // 0x00540326: 0x0000021A + "\x00t\x03&\x00\x00\x02\x1b" + // 0x00740326: 0x0000021B + "\x00H\x03\f\x00\x00\x02\x1e" + // 0x0048030C: 0x0000021E + "\x00h\x03\f\x00\x00\x02\x1f" + // 0x0068030C: 0x0000021F + "\x00A\x03\a\x00\x00\x02&" + // 0x00410307: 0x00000226 + "\x00a\x03\a\x00\x00\x02'" + // 0x00610307: 0x00000227 + "\x00E\x03'\x00\x00\x02(" + // 0x00450327: 0x00000228 + "\x00e\x03'\x00\x00\x02)" + // 0x00650327: 0x00000229 + "\x00\xd6\x03\x04\x00\x00\x02*" + // 0x00D60304: 0x0000022A + "\x00\xf6\x03\x04\x00\x00\x02+" + // 0x00F60304: 0x0000022B + "\x00\xd5\x03\x04\x00\x00\x02," + // 0x00D50304: 0x0000022C + "\x00\xf5\x03\x04\x00\x00\x02-" + // 0x00F50304: 0x0000022D + "\x00O\x03\a\x00\x00\x02." + // 0x004F0307: 0x0000022E + "\x00o\x03\a\x00\x00\x02/" + // 0x006F0307: 0x0000022F + "\x02.\x03\x04\x00\x00\x020" + // 0x022E0304: 0x00000230 + "\x02/\x03\x04\x00\x00\x021" + // 0x022F0304: 0x00000231 + "\x00Y\x03\x04\x00\x00\x022" + // 0x00590304: 0x00000232 + "\x00y\x03\x04\x00\x00\x023" + // 0x00790304: 0x00000233 + "\x00\xa8\x03\x01\x00\x00\x03\x85" + // 0x00A80301: 0x00000385 + "\x03\x91\x03\x01\x00\x00\x03\x86" + // 0x03910301: 0x00000386 + "\x03\x95\x03\x01\x00\x00\x03\x88" + // 0x03950301: 0x00000388 + "\x03\x97\x03\x01\x00\x00\x03\x89" + // 0x03970301: 0x00000389 + "\x03\x99\x03\x01\x00\x00\x03\x8a" + // 0x03990301: 0x0000038A + "\x03\x9f\x03\x01\x00\x00\x03\x8c" + // 0x039F0301: 0x0000038C + "\x03\xa5\x03\x01\x00\x00\x03\x8e" + // 0x03A50301: 0x0000038E + "\x03\xa9\x03\x01\x00\x00\x03\x8f" + // 0x03A90301: 0x0000038F + "\x03\xca\x03\x01\x00\x00\x03\x90" + // 0x03CA0301: 0x00000390 + "\x03\x99\x03\b\x00\x00\x03\xaa" + // 0x03990308: 0x000003AA + "\x03\xa5\x03\b\x00\x00\x03\xab" + // 0x03A50308: 0x000003AB + "\x03\xb1\x03\x01\x00\x00\x03\xac" + // 0x03B10301: 0x000003AC + "\x03\xb5\x03\x01\x00\x00\x03\xad" + // 0x03B50301: 0x000003AD + "\x03\xb7\x03\x01\x00\x00\x03\xae" + // 0x03B70301: 0x000003AE + "\x03\xb9\x03\x01\x00\x00\x03\xaf" + // 0x03B90301: 0x000003AF + "\x03\xcb\x03\x01\x00\x00\x03\xb0" + // 0x03CB0301: 0x000003B0 + "\x03\xb9\x03\b\x00\x00\x03\xca" + // 0x03B90308: 0x000003CA + "\x03\xc5\x03\b\x00\x00\x03\xcb" + // 0x03C50308: 0x000003CB + "\x03\xbf\x03\x01\x00\x00\x03\xcc" + // 0x03BF0301: 0x000003CC + "\x03\xc5\x03\x01\x00\x00\x03\xcd" + // 0x03C50301: 0x000003CD + "\x03\xc9\x03\x01\x00\x00\x03\xce" + // 0x03C90301: 0x000003CE + "\x03\xd2\x03\x01\x00\x00\x03\xd3" + // 0x03D20301: 0x000003D3 + "\x03\xd2\x03\b\x00\x00\x03\xd4" + // 0x03D20308: 0x000003D4 + "\x04\x15\x03\x00\x00\x00\x04\x00" + // 0x04150300: 0x00000400 + "\x04\x15\x03\b\x00\x00\x04\x01" + // 0x04150308: 0x00000401 + "\x04\x13\x03\x01\x00\x00\x04\x03" + // 0x04130301: 0x00000403 + "\x04\x06\x03\b\x00\x00\x04\a" + // 0x04060308: 0x00000407 + "\x04\x1a\x03\x01\x00\x00\x04\f" + // 0x041A0301: 0x0000040C + "\x04\x18\x03\x00\x00\x00\x04\r" + // 0x04180300: 0x0000040D + "\x04#\x03\x06\x00\x00\x04\x0e" + // 0x04230306: 0x0000040E + "\x04\x18\x03\x06\x00\x00\x04\x19" + // 0x04180306: 0x00000419 + "\x048\x03\x06\x00\x00\x049" + // 0x04380306: 0x00000439 + "\x045\x03\x00\x00\x00\x04P" + // 0x04350300: 0x00000450 + "\x045\x03\b\x00\x00\x04Q" + // 0x04350308: 0x00000451 + "\x043\x03\x01\x00\x00\x04S" + // 0x04330301: 0x00000453 + "\x04V\x03\b\x00\x00\x04W" + // 0x04560308: 0x00000457 + "\x04:\x03\x01\x00\x00\x04\\" + // 0x043A0301: 0x0000045C + "\x048\x03\x00\x00\x00\x04]" + // 0x04380300: 0x0000045D + "\x04C\x03\x06\x00\x00\x04^" + // 0x04430306: 0x0000045E + "\x04t\x03\x0f\x00\x00\x04v" + // 0x0474030F: 0x00000476 + "\x04u\x03\x0f\x00\x00\x04w" + // 0x0475030F: 0x00000477 + "\x04\x16\x03\x06\x00\x00\x04\xc1" + // 0x04160306: 0x000004C1 + "\x046\x03\x06\x00\x00\x04\xc2" + // 0x04360306: 0x000004C2 + "\x04\x10\x03\x06\x00\x00\x04\xd0" + // 0x04100306: 0x000004D0 + "\x040\x03\x06\x00\x00\x04\xd1" + // 0x04300306: 0x000004D1 + "\x04\x10\x03\b\x00\x00\x04\xd2" + // 0x04100308: 0x000004D2 + "\x040\x03\b\x00\x00\x04\xd3" + // 0x04300308: 0x000004D3 + "\x04\x15\x03\x06\x00\x00\x04\xd6" + // 0x04150306: 0x000004D6 + "\x045\x03\x06\x00\x00\x04\xd7" + // 0x04350306: 0x000004D7 + "\x04\xd8\x03\b\x00\x00\x04\xda" + // 0x04D80308: 0x000004DA + "\x04\xd9\x03\b\x00\x00\x04\xdb" + // 0x04D90308: 0x000004DB + "\x04\x16\x03\b\x00\x00\x04\xdc" + // 0x04160308: 0x000004DC + "\x046\x03\b\x00\x00\x04\xdd" + // 0x04360308: 0x000004DD + "\x04\x17\x03\b\x00\x00\x04\xde" + // 0x04170308: 0x000004DE + "\x047\x03\b\x00\x00\x04\xdf" + // 0x04370308: 0x000004DF + "\x04\x18\x03\x04\x00\x00\x04\xe2" + // 0x04180304: 0x000004E2 + "\x048\x03\x04\x00\x00\x04\xe3" + // 0x04380304: 0x000004E3 + "\x04\x18\x03\b\x00\x00\x04\xe4" + // 0x04180308: 0x000004E4 + "\x048\x03\b\x00\x00\x04\xe5" + // 0x04380308: 0x000004E5 + "\x04\x1e\x03\b\x00\x00\x04\xe6" + // 0x041E0308: 0x000004E6 + "\x04>\x03\b\x00\x00\x04\xe7" + // 0x043E0308: 0x000004E7 + "\x04\xe8\x03\b\x00\x00\x04\xea" + // 0x04E80308: 0x000004EA + "\x04\xe9\x03\b\x00\x00\x04\xeb" + // 0x04E90308: 0x000004EB + "\x04-\x03\b\x00\x00\x04\xec" + // 0x042D0308: 0x000004EC + "\x04M\x03\b\x00\x00\x04\xed" + // 0x044D0308: 0x000004ED + "\x04#\x03\x04\x00\x00\x04\xee" + // 0x04230304: 0x000004EE + "\x04C\x03\x04\x00\x00\x04\xef" + // 0x04430304: 0x000004EF + "\x04#\x03\b\x00\x00\x04\xf0" + // 0x04230308: 0x000004F0 + "\x04C\x03\b\x00\x00\x04\xf1" + // 0x04430308: 0x000004F1 + "\x04#\x03\v\x00\x00\x04\xf2" + // 0x0423030B: 0x000004F2 + "\x04C\x03\v\x00\x00\x04\xf3" + // 0x0443030B: 0x000004F3 + "\x04'\x03\b\x00\x00\x04\xf4" + // 0x04270308: 0x000004F4 + "\x04G\x03\b\x00\x00\x04\xf5" + // 0x04470308: 0x000004F5 + "\x04+\x03\b\x00\x00\x04\xf8" + // 0x042B0308: 0x000004F8 + "\x04K\x03\b\x00\x00\x04\xf9" + // 0x044B0308: 0x000004F9 + "\x06'\x06S\x00\x00\x06\"" + // 0x06270653: 0x00000622 + "\x06'\x06T\x00\x00\x06#" + // 0x06270654: 0x00000623 + "\x06H\x06T\x00\x00\x06$" + // 0x06480654: 0x00000624 + "\x06'\x06U\x00\x00\x06%" + // 0x06270655: 0x00000625 + "\x06J\x06T\x00\x00\x06&" + // 0x064A0654: 0x00000626 + "\x06\xd5\x06T\x00\x00\x06\xc0" + // 0x06D50654: 0x000006C0 + "\x06\xc1\x06T\x00\x00\x06\xc2" + // 0x06C10654: 0x000006C2 + "\x06\xd2\x06T\x00\x00\x06\xd3" + // 0x06D20654: 0x000006D3 + "\t(\t<\x00\x00\t)" + // 0x0928093C: 0x00000929 + "\t0\t<\x00\x00\t1" + // 0x0930093C: 0x00000931 + "\t3\t<\x00\x00\t4" + // 0x0933093C: 0x00000934 + "\t\xc7\t\xbe\x00\x00\t\xcb" + // 0x09C709BE: 0x000009CB + "\t\xc7\t\xd7\x00\x00\t\xcc" + // 0x09C709D7: 0x000009CC + "\vG\vV\x00\x00\vH" + // 0x0B470B56: 0x00000B48 + "\vG\v>\x00\x00\vK" + // 0x0B470B3E: 0x00000B4B + "\vG\vW\x00\x00\vL" + // 0x0B470B57: 0x00000B4C + "\v\x92\v\xd7\x00\x00\v\x94" + // 0x0B920BD7: 0x00000B94 + "\v\xc6\v\xbe\x00\x00\v\xca" + // 0x0BC60BBE: 0x00000BCA + "\v\xc7\v\xbe\x00\x00\v\xcb" + // 0x0BC70BBE: 0x00000BCB + "\v\xc6\v\xd7\x00\x00\v\xcc" + // 0x0BC60BD7: 0x00000BCC + "\fF\fV\x00\x00\fH" + // 0x0C460C56: 0x00000C48 + "\f\xbf\f\xd5\x00\x00\f\xc0" + // 0x0CBF0CD5: 0x00000CC0 + "\f\xc6\f\xd5\x00\x00\f\xc7" + // 0x0CC60CD5: 0x00000CC7 + "\f\xc6\f\xd6\x00\x00\f\xc8" + // 0x0CC60CD6: 0x00000CC8 + "\f\xc6\f\xc2\x00\x00\f\xca" + // 0x0CC60CC2: 0x00000CCA + "\f\xca\f\xd5\x00\x00\f\xcb" + // 0x0CCA0CD5: 0x00000CCB + "\rF\r>\x00\x00\rJ" + // 0x0D460D3E: 0x00000D4A + "\rG\r>\x00\x00\rK" + // 0x0D470D3E: 0x00000D4B + "\rF\rW\x00\x00\rL" + // 0x0D460D57: 0x00000D4C + "\r\xd9\r\xca\x00\x00\r\xda" + // 0x0DD90DCA: 0x00000DDA + "\r\xd9\r\xcf\x00\x00\r\xdc" + // 0x0DD90DCF: 0x00000DDC + "\r\xdc\r\xca\x00\x00\r\xdd" + // 0x0DDC0DCA: 0x00000DDD + "\r\xd9\r\xdf\x00\x00\r\xde" + // 0x0DD90DDF: 0x00000DDE + "\x10%\x10.\x00\x00\x10&" + // 0x1025102E: 0x00001026 + "\x1b\x05\x1b5\x00\x00\x1b\x06" + // 0x1B051B35: 0x00001B06 + "\x1b\a\x1b5\x00\x00\x1b\b" + // 0x1B071B35: 0x00001B08 + "\x1b\t\x1b5\x00\x00\x1b\n" + // 0x1B091B35: 0x00001B0A + "\x1b\v\x1b5\x00\x00\x1b\f" + // 0x1B0B1B35: 0x00001B0C + "\x1b\r\x1b5\x00\x00\x1b\x0e" + // 0x1B0D1B35: 0x00001B0E + "\x1b\x11\x1b5\x00\x00\x1b\x12" + // 0x1B111B35: 0x00001B12 + "\x1b:\x1b5\x00\x00\x1b;" + // 0x1B3A1B35: 0x00001B3B + "\x1b<\x1b5\x00\x00\x1b=" + // 0x1B3C1B35: 0x00001B3D + "\x1b>\x1b5\x00\x00\x1b@" + // 0x1B3E1B35: 0x00001B40 + "\x1b?\x1b5\x00\x00\x1bA" + // 0x1B3F1B35: 0x00001B41 + "\x1bB\x1b5\x00\x00\x1bC" + // 0x1B421B35: 0x00001B43 + "\x00A\x03%\x00\x00\x1e\x00" + // 0x00410325: 0x00001E00 + "\x00a\x03%\x00\x00\x1e\x01" + // 0x00610325: 0x00001E01 + "\x00B\x03\a\x00\x00\x1e\x02" + // 0x00420307: 0x00001E02 + "\x00b\x03\a\x00\x00\x1e\x03" + // 0x00620307: 0x00001E03 + "\x00B\x03#\x00\x00\x1e\x04" + // 0x00420323: 0x00001E04 + "\x00b\x03#\x00\x00\x1e\x05" + // 0x00620323: 0x00001E05 + "\x00B\x031\x00\x00\x1e\x06" + // 0x00420331: 0x00001E06 + "\x00b\x031\x00\x00\x1e\a" + // 0x00620331: 0x00001E07 + "\x00\xc7\x03\x01\x00\x00\x1e\b" + // 0x00C70301: 0x00001E08 + "\x00\xe7\x03\x01\x00\x00\x1e\t" + // 0x00E70301: 0x00001E09 + "\x00D\x03\a\x00\x00\x1e\n" + // 0x00440307: 0x00001E0A + "\x00d\x03\a\x00\x00\x1e\v" + // 0x00640307: 0x00001E0B + "\x00D\x03#\x00\x00\x1e\f" + // 0x00440323: 0x00001E0C + "\x00d\x03#\x00\x00\x1e\r" + // 0x00640323: 0x00001E0D + "\x00D\x031\x00\x00\x1e\x0e" + // 0x00440331: 0x00001E0E + "\x00d\x031\x00\x00\x1e\x0f" + // 0x00640331: 0x00001E0F + "\x00D\x03'\x00\x00\x1e\x10" + // 0x00440327: 0x00001E10 + "\x00d\x03'\x00\x00\x1e\x11" + // 0x00640327: 0x00001E11 + "\x00D\x03-\x00\x00\x1e\x12" + // 0x0044032D: 0x00001E12 + "\x00d\x03-\x00\x00\x1e\x13" + // 0x0064032D: 0x00001E13 + "\x01\x12\x03\x00\x00\x00\x1e\x14" + // 0x01120300: 0x00001E14 + "\x01\x13\x03\x00\x00\x00\x1e\x15" + // 0x01130300: 0x00001E15 + "\x01\x12\x03\x01\x00\x00\x1e\x16" + // 0x01120301: 0x00001E16 + "\x01\x13\x03\x01\x00\x00\x1e\x17" + // 0x01130301: 0x00001E17 + "\x00E\x03-\x00\x00\x1e\x18" + // 0x0045032D: 0x00001E18 + "\x00e\x03-\x00\x00\x1e\x19" + // 0x0065032D: 0x00001E19 + "\x00E\x030\x00\x00\x1e\x1a" + // 0x00450330: 0x00001E1A + "\x00e\x030\x00\x00\x1e\x1b" + // 0x00650330: 0x00001E1B + "\x02(\x03\x06\x00\x00\x1e\x1c" + // 0x02280306: 0x00001E1C + "\x02)\x03\x06\x00\x00\x1e\x1d" + // 0x02290306: 0x00001E1D + "\x00F\x03\a\x00\x00\x1e\x1e" + // 0x00460307: 0x00001E1E + "\x00f\x03\a\x00\x00\x1e\x1f" + // 0x00660307: 0x00001E1F + "\x00G\x03\x04\x00\x00\x1e " + // 0x00470304: 0x00001E20 + "\x00g\x03\x04\x00\x00\x1e!" + // 0x00670304: 0x00001E21 + "\x00H\x03\a\x00\x00\x1e\"" + // 0x00480307: 0x00001E22 + "\x00h\x03\a\x00\x00\x1e#" + // 0x00680307: 0x00001E23 + "\x00H\x03#\x00\x00\x1e$" + // 0x00480323: 0x00001E24 + "\x00h\x03#\x00\x00\x1e%" + // 0x00680323: 0x00001E25 + "\x00H\x03\b\x00\x00\x1e&" + // 0x00480308: 0x00001E26 + "\x00h\x03\b\x00\x00\x1e'" + // 0x00680308: 0x00001E27 + "\x00H\x03'\x00\x00\x1e(" + // 0x00480327: 0x00001E28 + "\x00h\x03'\x00\x00\x1e)" + // 0x00680327: 0x00001E29 + "\x00H\x03.\x00\x00\x1e*" + // 0x0048032E: 0x00001E2A + "\x00h\x03.\x00\x00\x1e+" + // 0x0068032E: 0x00001E2B + "\x00I\x030\x00\x00\x1e," + // 0x00490330: 0x00001E2C + "\x00i\x030\x00\x00\x1e-" + // 0x00690330: 0x00001E2D + "\x00\xcf\x03\x01\x00\x00\x1e." + // 0x00CF0301: 0x00001E2E + "\x00\xef\x03\x01\x00\x00\x1e/" + // 0x00EF0301: 0x00001E2F + "\x00K\x03\x01\x00\x00\x1e0" + // 0x004B0301: 0x00001E30 + "\x00k\x03\x01\x00\x00\x1e1" + // 0x006B0301: 0x00001E31 + "\x00K\x03#\x00\x00\x1e2" + // 0x004B0323: 0x00001E32 + "\x00k\x03#\x00\x00\x1e3" + // 0x006B0323: 0x00001E33 + "\x00K\x031\x00\x00\x1e4" + // 0x004B0331: 0x00001E34 + "\x00k\x031\x00\x00\x1e5" + // 0x006B0331: 0x00001E35 + "\x00L\x03#\x00\x00\x1e6" + // 0x004C0323: 0x00001E36 + "\x00l\x03#\x00\x00\x1e7" + // 0x006C0323: 0x00001E37 + "\x1e6\x03\x04\x00\x00\x1e8" + // 0x1E360304: 0x00001E38 + "\x1e7\x03\x04\x00\x00\x1e9" + // 0x1E370304: 0x00001E39 + "\x00L\x031\x00\x00\x1e:" + // 0x004C0331: 0x00001E3A + "\x00l\x031\x00\x00\x1e;" + // 0x006C0331: 0x00001E3B + "\x00L\x03-\x00\x00\x1e<" + // 0x004C032D: 0x00001E3C + "\x00l\x03-\x00\x00\x1e=" + // 0x006C032D: 0x00001E3D + "\x00M\x03\x01\x00\x00\x1e>" + // 0x004D0301: 0x00001E3E + "\x00m\x03\x01\x00\x00\x1e?" + // 0x006D0301: 0x00001E3F + "\x00M\x03\a\x00\x00\x1e@" + // 0x004D0307: 0x00001E40 + "\x00m\x03\a\x00\x00\x1eA" + // 0x006D0307: 0x00001E41 + "\x00M\x03#\x00\x00\x1eB" + // 0x004D0323: 0x00001E42 + "\x00m\x03#\x00\x00\x1eC" + // 0x006D0323: 0x00001E43 + "\x00N\x03\a\x00\x00\x1eD" + // 0x004E0307: 0x00001E44 + "\x00n\x03\a\x00\x00\x1eE" + // 0x006E0307: 0x00001E45 + "\x00N\x03#\x00\x00\x1eF" + // 0x004E0323: 0x00001E46 + "\x00n\x03#\x00\x00\x1eG" + // 0x006E0323: 0x00001E47 + "\x00N\x031\x00\x00\x1eH" + // 0x004E0331: 0x00001E48 + "\x00n\x031\x00\x00\x1eI" + // 0x006E0331: 0x00001E49 + "\x00N\x03-\x00\x00\x1eJ" + // 0x004E032D: 0x00001E4A + "\x00n\x03-\x00\x00\x1eK" + // 0x006E032D: 0x00001E4B + "\x00\xd5\x03\x01\x00\x00\x1eL" + // 0x00D50301: 0x00001E4C + "\x00\xf5\x03\x01\x00\x00\x1eM" + // 0x00F50301: 0x00001E4D + "\x00\xd5\x03\b\x00\x00\x1eN" + // 0x00D50308: 0x00001E4E + "\x00\xf5\x03\b\x00\x00\x1eO" + // 0x00F50308: 0x00001E4F + "\x01L\x03\x00\x00\x00\x1eP" + // 0x014C0300: 0x00001E50 + "\x01M\x03\x00\x00\x00\x1eQ" + // 0x014D0300: 0x00001E51 + "\x01L\x03\x01\x00\x00\x1eR" + // 0x014C0301: 0x00001E52 + "\x01M\x03\x01\x00\x00\x1eS" + // 0x014D0301: 0x00001E53 + "\x00P\x03\x01\x00\x00\x1eT" + // 0x00500301: 0x00001E54 + "\x00p\x03\x01\x00\x00\x1eU" + // 0x00700301: 0x00001E55 + "\x00P\x03\a\x00\x00\x1eV" + // 0x00500307: 0x00001E56 + "\x00p\x03\a\x00\x00\x1eW" + // 0x00700307: 0x00001E57 + "\x00R\x03\a\x00\x00\x1eX" + // 0x00520307: 0x00001E58 + "\x00r\x03\a\x00\x00\x1eY" + // 0x00720307: 0x00001E59 + "\x00R\x03#\x00\x00\x1eZ" + // 0x00520323: 0x00001E5A + "\x00r\x03#\x00\x00\x1e[" + // 0x00720323: 0x00001E5B + "\x1eZ\x03\x04\x00\x00\x1e\\" + // 0x1E5A0304: 0x00001E5C + "\x1e[\x03\x04\x00\x00\x1e]" + // 0x1E5B0304: 0x00001E5D + "\x00R\x031\x00\x00\x1e^" + // 0x00520331: 0x00001E5E + "\x00r\x031\x00\x00\x1e_" + // 0x00720331: 0x00001E5F + "\x00S\x03\a\x00\x00\x1e`" + // 0x00530307: 0x00001E60 + "\x00s\x03\a\x00\x00\x1ea" + // 0x00730307: 0x00001E61 + "\x00S\x03#\x00\x00\x1eb" + // 0x00530323: 0x00001E62 + "\x00s\x03#\x00\x00\x1ec" + // 0x00730323: 0x00001E63 + "\x01Z\x03\a\x00\x00\x1ed" + // 0x015A0307: 0x00001E64 + "\x01[\x03\a\x00\x00\x1ee" + // 0x015B0307: 0x00001E65 + "\x01`\x03\a\x00\x00\x1ef" + // 0x01600307: 0x00001E66 + "\x01a\x03\a\x00\x00\x1eg" + // 0x01610307: 0x00001E67 + "\x1eb\x03\a\x00\x00\x1eh" + // 0x1E620307: 0x00001E68 + "\x1ec\x03\a\x00\x00\x1ei" + // 0x1E630307: 0x00001E69 + "\x00T\x03\a\x00\x00\x1ej" + // 0x00540307: 0x00001E6A + "\x00t\x03\a\x00\x00\x1ek" + // 0x00740307: 0x00001E6B + "\x00T\x03#\x00\x00\x1el" + // 0x00540323: 0x00001E6C + "\x00t\x03#\x00\x00\x1em" + // 0x00740323: 0x00001E6D + "\x00T\x031\x00\x00\x1en" + // 0x00540331: 0x00001E6E + "\x00t\x031\x00\x00\x1eo" + // 0x00740331: 0x00001E6F + "\x00T\x03-\x00\x00\x1ep" + // 0x0054032D: 0x00001E70 + "\x00t\x03-\x00\x00\x1eq" + // 0x0074032D: 0x00001E71 + "\x00U\x03$\x00\x00\x1er" + // 0x00550324: 0x00001E72 + "\x00u\x03$\x00\x00\x1es" + // 0x00750324: 0x00001E73 + "\x00U\x030\x00\x00\x1et" + // 0x00550330: 0x00001E74 + "\x00u\x030\x00\x00\x1eu" + // 0x00750330: 0x00001E75 + "\x00U\x03-\x00\x00\x1ev" + // 0x0055032D: 0x00001E76 + "\x00u\x03-\x00\x00\x1ew" + // 0x0075032D: 0x00001E77 + "\x01h\x03\x01\x00\x00\x1ex" + // 0x01680301: 0x00001E78 + "\x01i\x03\x01\x00\x00\x1ey" + // 0x01690301: 0x00001E79 + "\x01j\x03\b\x00\x00\x1ez" + // 0x016A0308: 0x00001E7A + "\x01k\x03\b\x00\x00\x1e{" + // 0x016B0308: 0x00001E7B + "\x00V\x03\x03\x00\x00\x1e|" + // 0x00560303: 0x00001E7C + "\x00v\x03\x03\x00\x00\x1e}" + // 0x00760303: 0x00001E7D + "\x00V\x03#\x00\x00\x1e~" + // 0x00560323: 0x00001E7E + "\x00v\x03#\x00\x00\x1e\u007f" + // 0x00760323: 0x00001E7F + "\x00W\x03\x00\x00\x00\x1e\x80" + // 0x00570300: 0x00001E80 + "\x00w\x03\x00\x00\x00\x1e\x81" + // 0x00770300: 0x00001E81 + "\x00W\x03\x01\x00\x00\x1e\x82" + // 0x00570301: 0x00001E82 + "\x00w\x03\x01\x00\x00\x1e\x83" + // 0x00770301: 0x00001E83 + "\x00W\x03\b\x00\x00\x1e\x84" + // 0x00570308: 0x00001E84 + "\x00w\x03\b\x00\x00\x1e\x85" + // 0x00770308: 0x00001E85 + "\x00W\x03\a\x00\x00\x1e\x86" + // 0x00570307: 0x00001E86 + "\x00w\x03\a\x00\x00\x1e\x87" + // 0x00770307: 0x00001E87 + "\x00W\x03#\x00\x00\x1e\x88" + // 0x00570323: 0x00001E88 + "\x00w\x03#\x00\x00\x1e\x89" + // 0x00770323: 0x00001E89 + "\x00X\x03\a\x00\x00\x1e\x8a" + // 0x00580307: 0x00001E8A + "\x00x\x03\a\x00\x00\x1e\x8b" + // 0x00780307: 0x00001E8B + "\x00X\x03\b\x00\x00\x1e\x8c" + // 0x00580308: 0x00001E8C + "\x00x\x03\b\x00\x00\x1e\x8d" + // 0x00780308: 0x00001E8D + "\x00Y\x03\a\x00\x00\x1e\x8e" + // 0x00590307: 0x00001E8E + "\x00y\x03\a\x00\x00\x1e\x8f" + // 0x00790307: 0x00001E8F + "\x00Z\x03\x02\x00\x00\x1e\x90" + // 0x005A0302: 0x00001E90 + "\x00z\x03\x02\x00\x00\x1e\x91" + // 0x007A0302: 0x00001E91 + "\x00Z\x03#\x00\x00\x1e\x92" + // 0x005A0323: 0x00001E92 + "\x00z\x03#\x00\x00\x1e\x93" + // 0x007A0323: 0x00001E93 + "\x00Z\x031\x00\x00\x1e\x94" + // 0x005A0331: 0x00001E94 + "\x00z\x031\x00\x00\x1e\x95" + // 0x007A0331: 0x00001E95 + "\x00h\x031\x00\x00\x1e\x96" + // 0x00680331: 0x00001E96 + "\x00t\x03\b\x00\x00\x1e\x97" + // 0x00740308: 0x00001E97 + "\x00w\x03\n\x00\x00\x1e\x98" + // 0x0077030A: 0x00001E98 + "\x00y\x03\n\x00\x00\x1e\x99" + // 0x0079030A: 0x00001E99 + "\x01\u007f\x03\a\x00\x00\x1e\x9b" + // 0x017F0307: 0x00001E9B + "\x00A\x03#\x00\x00\x1e\xa0" + // 0x00410323: 0x00001EA0 + "\x00a\x03#\x00\x00\x1e\xa1" + // 0x00610323: 0x00001EA1 + "\x00A\x03\t\x00\x00\x1e\xa2" + // 0x00410309: 0x00001EA2 + "\x00a\x03\t\x00\x00\x1e\xa3" + // 0x00610309: 0x00001EA3 + "\x00\xc2\x03\x01\x00\x00\x1e\xa4" + // 0x00C20301: 0x00001EA4 + "\x00\xe2\x03\x01\x00\x00\x1e\xa5" + // 0x00E20301: 0x00001EA5 + "\x00\xc2\x03\x00\x00\x00\x1e\xa6" + // 0x00C20300: 0x00001EA6 + "\x00\xe2\x03\x00\x00\x00\x1e\xa7" + // 0x00E20300: 0x00001EA7 + "\x00\xc2\x03\t\x00\x00\x1e\xa8" + // 0x00C20309: 0x00001EA8 + "\x00\xe2\x03\t\x00\x00\x1e\xa9" + // 0x00E20309: 0x00001EA9 + "\x00\xc2\x03\x03\x00\x00\x1e\xaa" + // 0x00C20303: 0x00001EAA + "\x00\xe2\x03\x03\x00\x00\x1e\xab" + // 0x00E20303: 0x00001EAB + "\x1e\xa0\x03\x02\x00\x00\x1e\xac" + // 0x1EA00302: 0x00001EAC + "\x1e\xa1\x03\x02\x00\x00\x1e\xad" + // 0x1EA10302: 0x00001EAD + "\x01\x02\x03\x01\x00\x00\x1e\xae" + // 0x01020301: 0x00001EAE + "\x01\x03\x03\x01\x00\x00\x1e\xaf" + // 0x01030301: 0x00001EAF + "\x01\x02\x03\x00\x00\x00\x1e\xb0" + // 0x01020300: 0x00001EB0 + "\x01\x03\x03\x00\x00\x00\x1e\xb1" + // 0x01030300: 0x00001EB1 + "\x01\x02\x03\t\x00\x00\x1e\xb2" + // 0x01020309: 0x00001EB2 + "\x01\x03\x03\t\x00\x00\x1e\xb3" + // 0x01030309: 0x00001EB3 + "\x01\x02\x03\x03\x00\x00\x1e\xb4" + // 0x01020303: 0x00001EB4 + "\x01\x03\x03\x03\x00\x00\x1e\xb5" + // 0x01030303: 0x00001EB5 + "\x1e\xa0\x03\x06\x00\x00\x1e\xb6" + // 0x1EA00306: 0x00001EB6 + "\x1e\xa1\x03\x06\x00\x00\x1e\xb7" + // 0x1EA10306: 0x00001EB7 + "\x00E\x03#\x00\x00\x1e\xb8" + // 0x00450323: 0x00001EB8 + "\x00e\x03#\x00\x00\x1e\xb9" + // 0x00650323: 0x00001EB9 + "\x00E\x03\t\x00\x00\x1e\xba" + // 0x00450309: 0x00001EBA + "\x00e\x03\t\x00\x00\x1e\xbb" + // 0x00650309: 0x00001EBB + "\x00E\x03\x03\x00\x00\x1e\xbc" + // 0x00450303: 0x00001EBC + "\x00e\x03\x03\x00\x00\x1e\xbd" + // 0x00650303: 0x00001EBD + "\x00\xca\x03\x01\x00\x00\x1e\xbe" + // 0x00CA0301: 0x00001EBE + "\x00\xea\x03\x01\x00\x00\x1e\xbf" + // 0x00EA0301: 0x00001EBF + "\x00\xca\x03\x00\x00\x00\x1e\xc0" + // 0x00CA0300: 0x00001EC0 + "\x00\xea\x03\x00\x00\x00\x1e\xc1" + // 0x00EA0300: 0x00001EC1 + "\x00\xca\x03\t\x00\x00\x1e\xc2" + // 0x00CA0309: 0x00001EC2 + "\x00\xea\x03\t\x00\x00\x1e\xc3" + // 0x00EA0309: 0x00001EC3 + "\x00\xca\x03\x03\x00\x00\x1e\xc4" + // 0x00CA0303: 0x00001EC4 + "\x00\xea\x03\x03\x00\x00\x1e\xc5" + // 0x00EA0303: 0x00001EC5 + "\x1e\xb8\x03\x02\x00\x00\x1e\xc6" + // 0x1EB80302: 0x00001EC6 + "\x1e\xb9\x03\x02\x00\x00\x1e\xc7" + // 0x1EB90302: 0x00001EC7 + "\x00I\x03\t\x00\x00\x1e\xc8" + // 0x00490309: 0x00001EC8 + "\x00i\x03\t\x00\x00\x1e\xc9" + // 0x00690309: 0x00001EC9 + "\x00I\x03#\x00\x00\x1e\xca" + // 0x00490323: 0x00001ECA + "\x00i\x03#\x00\x00\x1e\xcb" + // 0x00690323: 0x00001ECB + "\x00O\x03#\x00\x00\x1e\xcc" + // 0x004F0323: 0x00001ECC + "\x00o\x03#\x00\x00\x1e\xcd" + // 0x006F0323: 0x00001ECD + "\x00O\x03\t\x00\x00\x1e\xce" + // 0x004F0309: 0x00001ECE + "\x00o\x03\t\x00\x00\x1e\xcf" + // 0x006F0309: 0x00001ECF + "\x00\xd4\x03\x01\x00\x00\x1e\xd0" + // 0x00D40301: 0x00001ED0 + "\x00\xf4\x03\x01\x00\x00\x1e\xd1" + // 0x00F40301: 0x00001ED1 + "\x00\xd4\x03\x00\x00\x00\x1e\xd2" + // 0x00D40300: 0x00001ED2 + "\x00\xf4\x03\x00\x00\x00\x1e\xd3" + // 0x00F40300: 0x00001ED3 + "\x00\xd4\x03\t\x00\x00\x1e\xd4" + // 0x00D40309: 0x00001ED4 + "\x00\xf4\x03\t\x00\x00\x1e\xd5" + // 0x00F40309: 0x00001ED5 + "\x00\xd4\x03\x03\x00\x00\x1e\xd6" + // 0x00D40303: 0x00001ED6 + "\x00\xf4\x03\x03\x00\x00\x1e\xd7" + // 0x00F40303: 0x00001ED7 + "\x1e\xcc\x03\x02\x00\x00\x1e\xd8" + // 0x1ECC0302: 0x00001ED8 + "\x1e\xcd\x03\x02\x00\x00\x1e\xd9" + // 0x1ECD0302: 0x00001ED9 + "\x01\xa0\x03\x01\x00\x00\x1e\xda" + // 0x01A00301: 0x00001EDA + "\x01\xa1\x03\x01\x00\x00\x1e\xdb" + // 0x01A10301: 0x00001EDB + "\x01\xa0\x03\x00\x00\x00\x1e\xdc" + // 0x01A00300: 0x00001EDC + "\x01\xa1\x03\x00\x00\x00\x1e\xdd" + // 0x01A10300: 0x00001EDD + "\x01\xa0\x03\t\x00\x00\x1e\xde" + // 0x01A00309: 0x00001EDE + "\x01\xa1\x03\t\x00\x00\x1e\xdf" + // 0x01A10309: 0x00001EDF + "\x01\xa0\x03\x03\x00\x00\x1e\xe0" + // 0x01A00303: 0x00001EE0 + "\x01\xa1\x03\x03\x00\x00\x1e\xe1" + // 0x01A10303: 0x00001EE1 + "\x01\xa0\x03#\x00\x00\x1e\xe2" + // 0x01A00323: 0x00001EE2 + "\x01\xa1\x03#\x00\x00\x1e\xe3" + // 0x01A10323: 0x00001EE3 + "\x00U\x03#\x00\x00\x1e\xe4" + // 0x00550323: 0x00001EE4 + "\x00u\x03#\x00\x00\x1e\xe5" + // 0x00750323: 0x00001EE5 + "\x00U\x03\t\x00\x00\x1e\xe6" + // 0x00550309: 0x00001EE6 + "\x00u\x03\t\x00\x00\x1e\xe7" + // 0x00750309: 0x00001EE7 + "\x01\xaf\x03\x01\x00\x00\x1e\xe8" + // 0x01AF0301: 0x00001EE8 + "\x01\xb0\x03\x01\x00\x00\x1e\xe9" + // 0x01B00301: 0x00001EE9 + "\x01\xaf\x03\x00\x00\x00\x1e\xea" + // 0x01AF0300: 0x00001EEA + "\x01\xb0\x03\x00\x00\x00\x1e\xeb" + // 0x01B00300: 0x00001EEB + "\x01\xaf\x03\t\x00\x00\x1e\xec" + // 0x01AF0309: 0x00001EEC + "\x01\xb0\x03\t\x00\x00\x1e\xed" + // 0x01B00309: 0x00001EED + "\x01\xaf\x03\x03\x00\x00\x1e\xee" + // 0x01AF0303: 0x00001EEE + "\x01\xb0\x03\x03\x00\x00\x1e\xef" + // 0x01B00303: 0x00001EEF + "\x01\xaf\x03#\x00\x00\x1e\xf0" + // 0x01AF0323: 0x00001EF0 + "\x01\xb0\x03#\x00\x00\x1e\xf1" + // 0x01B00323: 0x00001EF1 + "\x00Y\x03\x00\x00\x00\x1e\xf2" + // 0x00590300: 0x00001EF2 + "\x00y\x03\x00\x00\x00\x1e\xf3" + // 0x00790300: 0x00001EF3 + "\x00Y\x03#\x00\x00\x1e\xf4" + // 0x00590323: 0x00001EF4 + "\x00y\x03#\x00\x00\x1e\xf5" + // 0x00790323: 0x00001EF5 + "\x00Y\x03\t\x00\x00\x1e\xf6" + // 0x00590309: 0x00001EF6 + "\x00y\x03\t\x00\x00\x1e\xf7" + // 0x00790309: 0x00001EF7 + "\x00Y\x03\x03\x00\x00\x1e\xf8" + // 0x00590303: 0x00001EF8 + "\x00y\x03\x03\x00\x00\x1e\xf9" + // 0x00790303: 0x00001EF9 + "\x03\xb1\x03\x13\x00\x00\x1f\x00" + // 0x03B10313: 0x00001F00 + "\x03\xb1\x03\x14\x00\x00\x1f\x01" + // 0x03B10314: 0x00001F01 + "\x1f\x00\x03\x00\x00\x00\x1f\x02" + // 0x1F000300: 0x00001F02 + "\x1f\x01\x03\x00\x00\x00\x1f\x03" + // 0x1F010300: 0x00001F03 + "\x1f\x00\x03\x01\x00\x00\x1f\x04" + // 0x1F000301: 0x00001F04 + "\x1f\x01\x03\x01\x00\x00\x1f\x05" + // 0x1F010301: 0x00001F05 + "\x1f\x00\x03B\x00\x00\x1f\x06" + // 0x1F000342: 0x00001F06 + "\x1f\x01\x03B\x00\x00\x1f\a" + // 0x1F010342: 0x00001F07 + "\x03\x91\x03\x13\x00\x00\x1f\b" + // 0x03910313: 0x00001F08 + "\x03\x91\x03\x14\x00\x00\x1f\t" + // 0x03910314: 0x00001F09 + "\x1f\b\x03\x00\x00\x00\x1f\n" + // 0x1F080300: 0x00001F0A + "\x1f\t\x03\x00\x00\x00\x1f\v" + // 0x1F090300: 0x00001F0B + "\x1f\b\x03\x01\x00\x00\x1f\f" + // 0x1F080301: 0x00001F0C + "\x1f\t\x03\x01\x00\x00\x1f\r" + // 0x1F090301: 0x00001F0D + "\x1f\b\x03B\x00\x00\x1f\x0e" + // 0x1F080342: 0x00001F0E + "\x1f\t\x03B\x00\x00\x1f\x0f" + // 0x1F090342: 0x00001F0F + "\x03\xb5\x03\x13\x00\x00\x1f\x10" + // 0x03B50313: 0x00001F10 + "\x03\xb5\x03\x14\x00\x00\x1f\x11" + // 0x03B50314: 0x00001F11 + "\x1f\x10\x03\x00\x00\x00\x1f\x12" + // 0x1F100300: 0x00001F12 + "\x1f\x11\x03\x00\x00\x00\x1f\x13" + // 0x1F110300: 0x00001F13 + "\x1f\x10\x03\x01\x00\x00\x1f\x14" + // 0x1F100301: 0x00001F14 + "\x1f\x11\x03\x01\x00\x00\x1f\x15" + // 0x1F110301: 0x00001F15 + "\x03\x95\x03\x13\x00\x00\x1f\x18" + // 0x03950313: 0x00001F18 + "\x03\x95\x03\x14\x00\x00\x1f\x19" + // 0x03950314: 0x00001F19 + "\x1f\x18\x03\x00\x00\x00\x1f\x1a" + // 0x1F180300: 0x00001F1A + "\x1f\x19\x03\x00\x00\x00\x1f\x1b" + // 0x1F190300: 0x00001F1B + "\x1f\x18\x03\x01\x00\x00\x1f\x1c" + // 0x1F180301: 0x00001F1C + "\x1f\x19\x03\x01\x00\x00\x1f\x1d" + // 0x1F190301: 0x00001F1D + "\x03\xb7\x03\x13\x00\x00\x1f " + // 0x03B70313: 0x00001F20 + "\x03\xb7\x03\x14\x00\x00\x1f!" + // 0x03B70314: 0x00001F21 + "\x1f \x03\x00\x00\x00\x1f\"" + // 0x1F200300: 0x00001F22 + "\x1f!\x03\x00\x00\x00\x1f#" + // 0x1F210300: 0x00001F23 + "\x1f \x03\x01\x00\x00\x1f$" + // 0x1F200301: 0x00001F24 + "\x1f!\x03\x01\x00\x00\x1f%" + // 0x1F210301: 0x00001F25 + "\x1f \x03B\x00\x00\x1f&" + // 0x1F200342: 0x00001F26 + "\x1f!\x03B\x00\x00\x1f'" + // 0x1F210342: 0x00001F27 + "\x03\x97\x03\x13\x00\x00\x1f(" + // 0x03970313: 0x00001F28 + "\x03\x97\x03\x14\x00\x00\x1f)" + // 0x03970314: 0x00001F29 + "\x1f(\x03\x00\x00\x00\x1f*" + // 0x1F280300: 0x00001F2A + "\x1f)\x03\x00\x00\x00\x1f+" + // 0x1F290300: 0x00001F2B + "\x1f(\x03\x01\x00\x00\x1f," + // 0x1F280301: 0x00001F2C + "\x1f)\x03\x01\x00\x00\x1f-" + // 0x1F290301: 0x00001F2D + "\x1f(\x03B\x00\x00\x1f." + // 0x1F280342: 0x00001F2E + "\x1f)\x03B\x00\x00\x1f/" + // 0x1F290342: 0x00001F2F + "\x03\xb9\x03\x13\x00\x00\x1f0" + // 0x03B90313: 0x00001F30 + "\x03\xb9\x03\x14\x00\x00\x1f1" + // 0x03B90314: 0x00001F31 + "\x1f0\x03\x00\x00\x00\x1f2" + // 0x1F300300: 0x00001F32 + "\x1f1\x03\x00\x00\x00\x1f3" + // 0x1F310300: 0x00001F33 + "\x1f0\x03\x01\x00\x00\x1f4" + // 0x1F300301: 0x00001F34 + "\x1f1\x03\x01\x00\x00\x1f5" + // 0x1F310301: 0x00001F35 + "\x1f0\x03B\x00\x00\x1f6" + // 0x1F300342: 0x00001F36 + "\x1f1\x03B\x00\x00\x1f7" + // 0x1F310342: 0x00001F37 + "\x03\x99\x03\x13\x00\x00\x1f8" + // 0x03990313: 0x00001F38 + "\x03\x99\x03\x14\x00\x00\x1f9" + // 0x03990314: 0x00001F39 + "\x1f8\x03\x00\x00\x00\x1f:" + // 0x1F380300: 0x00001F3A + "\x1f9\x03\x00\x00\x00\x1f;" + // 0x1F390300: 0x00001F3B + "\x1f8\x03\x01\x00\x00\x1f<" + // 0x1F380301: 0x00001F3C + "\x1f9\x03\x01\x00\x00\x1f=" + // 0x1F390301: 0x00001F3D + "\x1f8\x03B\x00\x00\x1f>" + // 0x1F380342: 0x00001F3E + "\x1f9\x03B\x00\x00\x1f?" + // 0x1F390342: 0x00001F3F + "\x03\xbf\x03\x13\x00\x00\x1f@" + // 0x03BF0313: 0x00001F40 + "\x03\xbf\x03\x14\x00\x00\x1fA" + // 0x03BF0314: 0x00001F41 + "\x1f@\x03\x00\x00\x00\x1fB" + // 0x1F400300: 0x00001F42 + "\x1fA\x03\x00\x00\x00\x1fC" + // 0x1F410300: 0x00001F43 + "\x1f@\x03\x01\x00\x00\x1fD" + // 0x1F400301: 0x00001F44 + "\x1fA\x03\x01\x00\x00\x1fE" + // 0x1F410301: 0x00001F45 + "\x03\x9f\x03\x13\x00\x00\x1fH" + // 0x039F0313: 0x00001F48 + "\x03\x9f\x03\x14\x00\x00\x1fI" + // 0x039F0314: 0x00001F49 + "\x1fH\x03\x00\x00\x00\x1fJ" + // 0x1F480300: 0x00001F4A + "\x1fI\x03\x00\x00\x00\x1fK" + // 0x1F490300: 0x00001F4B + "\x1fH\x03\x01\x00\x00\x1fL" + // 0x1F480301: 0x00001F4C + "\x1fI\x03\x01\x00\x00\x1fM" + // 0x1F490301: 0x00001F4D + "\x03\xc5\x03\x13\x00\x00\x1fP" + // 0x03C50313: 0x00001F50 + "\x03\xc5\x03\x14\x00\x00\x1fQ" + // 0x03C50314: 0x00001F51 + "\x1fP\x03\x00\x00\x00\x1fR" + // 0x1F500300: 0x00001F52 + "\x1fQ\x03\x00\x00\x00\x1fS" + // 0x1F510300: 0x00001F53 + "\x1fP\x03\x01\x00\x00\x1fT" + // 0x1F500301: 0x00001F54 + "\x1fQ\x03\x01\x00\x00\x1fU" + // 0x1F510301: 0x00001F55 + "\x1fP\x03B\x00\x00\x1fV" + // 0x1F500342: 0x00001F56 + "\x1fQ\x03B\x00\x00\x1fW" + // 0x1F510342: 0x00001F57 + "\x03\xa5\x03\x14\x00\x00\x1fY" + // 0x03A50314: 0x00001F59 + "\x1fY\x03\x00\x00\x00\x1f[" + // 0x1F590300: 0x00001F5B + "\x1fY\x03\x01\x00\x00\x1f]" + // 0x1F590301: 0x00001F5D + "\x1fY\x03B\x00\x00\x1f_" + // 0x1F590342: 0x00001F5F + "\x03\xc9\x03\x13\x00\x00\x1f`" + // 0x03C90313: 0x00001F60 + "\x03\xc9\x03\x14\x00\x00\x1fa" + // 0x03C90314: 0x00001F61 + "\x1f`\x03\x00\x00\x00\x1fb" + // 0x1F600300: 0x00001F62 + "\x1fa\x03\x00\x00\x00\x1fc" + // 0x1F610300: 0x00001F63 + "\x1f`\x03\x01\x00\x00\x1fd" + // 0x1F600301: 0x00001F64 + "\x1fa\x03\x01\x00\x00\x1fe" + // 0x1F610301: 0x00001F65 + "\x1f`\x03B\x00\x00\x1ff" + // 0x1F600342: 0x00001F66 + "\x1fa\x03B\x00\x00\x1fg" + // 0x1F610342: 0x00001F67 + "\x03\xa9\x03\x13\x00\x00\x1fh" + // 0x03A90313: 0x00001F68 + "\x03\xa9\x03\x14\x00\x00\x1fi" + // 0x03A90314: 0x00001F69 + "\x1fh\x03\x00\x00\x00\x1fj" + // 0x1F680300: 0x00001F6A + "\x1fi\x03\x00\x00\x00\x1fk" + // 0x1F690300: 0x00001F6B + "\x1fh\x03\x01\x00\x00\x1fl" + // 0x1F680301: 0x00001F6C + "\x1fi\x03\x01\x00\x00\x1fm" + // 0x1F690301: 0x00001F6D + "\x1fh\x03B\x00\x00\x1fn" + // 0x1F680342: 0x00001F6E + "\x1fi\x03B\x00\x00\x1fo" + // 0x1F690342: 0x00001F6F + "\x03\xb1\x03\x00\x00\x00\x1fp" + // 0x03B10300: 0x00001F70 + "\x03\xb5\x03\x00\x00\x00\x1fr" + // 0x03B50300: 0x00001F72 + "\x03\xb7\x03\x00\x00\x00\x1ft" + // 0x03B70300: 0x00001F74 + "\x03\xb9\x03\x00\x00\x00\x1fv" + // 0x03B90300: 0x00001F76 + "\x03\xbf\x03\x00\x00\x00\x1fx" + // 0x03BF0300: 0x00001F78 + "\x03\xc5\x03\x00\x00\x00\x1fz" + // 0x03C50300: 0x00001F7A + "\x03\xc9\x03\x00\x00\x00\x1f|" + // 0x03C90300: 0x00001F7C + "\x1f\x00\x03E\x00\x00\x1f\x80" + // 0x1F000345: 0x00001F80 + "\x1f\x01\x03E\x00\x00\x1f\x81" + // 0x1F010345: 0x00001F81 + "\x1f\x02\x03E\x00\x00\x1f\x82" + // 0x1F020345: 0x00001F82 + "\x1f\x03\x03E\x00\x00\x1f\x83" + // 0x1F030345: 0x00001F83 + "\x1f\x04\x03E\x00\x00\x1f\x84" + // 0x1F040345: 0x00001F84 + "\x1f\x05\x03E\x00\x00\x1f\x85" + // 0x1F050345: 0x00001F85 + "\x1f\x06\x03E\x00\x00\x1f\x86" + // 0x1F060345: 0x00001F86 + "\x1f\a\x03E\x00\x00\x1f\x87" + // 0x1F070345: 0x00001F87 + "\x1f\b\x03E\x00\x00\x1f\x88" + // 0x1F080345: 0x00001F88 + "\x1f\t\x03E\x00\x00\x1f\x89" + // 0x1F090345: 0x00001F89 + "\x1f\n\x03E\x00\x00\x1f\x8a" + // 0x1F0A0345: 0x00001F8A + "\x1f\v\x03E\x00\x00\x1f\x8b" + // 0x1F0B0345: 0x00001F8B + "\x1f\f\x03E\x00\x00\x1f\x8c" + // 0x1F0C0345: 0x00001F8C + "\x1f\r\x03E\x00\x00\x1f\x8d" + // 0x1F0D0345: 0x00001F8D + "\x1f\x0e\x03E\x00\x00\x1f\x8e" + // 0x1F0E0345: 0x00001F8E + "\x1f\x0f\x03E\x00\x00\x1f\x8f" + // 0x1F0F0345: 0x00001F8F + "\x1f \x03E\x00\x00\x1f\x90" + // 0x1F200345: 0x00001F90 + "\x1f!\x03E\x00\x00\x1f\x91" + // 0x1F210345: 0x00001F91 + "\x1f\"\x03E\x00\x00\x1f\x92" + // 0x1F220345: 0x00001F92 + "\x1f#\x03E\x00\x00\x1f\x93" + // 0x1F230345: 0x00001F93 + "\x1f$\x03E\x00\x00\x1f\x94" + // 0x1F240345: 0x00001F94 + "\x1f%\x03E\x00\x00\x1f\x95" + // 0x1F250345: 0x00001F95 + "\x1f&\x03E\x00\x00\x1f\x96" + // 0x1F260345: 0x00001F96 + "\x1f'\x03E\x00\x00\x1f\x97" + // 0x1F270345: 0x00001F97 + "\x1f(\x03E\x00\x00\x1f\x98" + // 0x1F280345: 0x00001F98 + "\x1f)\x03E\x00\x00\x1f\x99" + // 0x1F290345: 0x00001F99 + "\x1f*\x03E\x00\x00\x1f\x9a" + // 0x1F2A0345: 0x00001F9A + "\x1f+\x03E\x00\x00\x1f\x9b" + // 0x1F2B0345: 0x00001F9B + "\x1f,\x03E\x00\x00\x1f\x9c" + // 0x1F2C0345: 0x00001F9C + "\x1f-\x03E\x00\x00\x1f\x9d" + // 0x1F2D0345: 0x00001F9D + "\x1f.\x03E\x00\x00\x1f\x9e" + // 0x1F2E0345: 0x00001F9E + "\x1f/\x03E\x00\x00\x1f\x9f" + // 0x1F2F0345: 0x00001F9F + "\x1f`\x03E\x00\x00\x1f\xa0" + // 0x1F600345: 0x00001FA0 + "\x1fa\x03E\x00\x00\x1f\xa1" + // 0x1F610345: 0x00001FA1 + "\x1fb\x03E\x00\x00\x1f\xa2" + // 0x1F620345: 0x00001FA2 + "\x1fc\x03E\x00\x00\x1f\xa3" + // 0x1F630345: 0x00001FA3 + "\x1fd\x03E\x00\x00\x1f\xa4" + // 0x1F640345: 0x00001FA4 + "\x1fe\x03E\x00\x00\x1f\xa5" + // 0x1F650345: 0x00001FA5 + "\x1ff\x03E\x00\x00\x1f\xa6" + // 0x1F660345: 0x00001FA6 + "\x1fg\x03E\x00\x00\x1f\xa7" + // 0x1F670345: 0x00001FA7 + "\x1fh\x03E\x00\x00\x1f\xa8" + // 0x1F680345: 0x00001FA8 + "\x1fi\x03E\x00\x00\x1f\xa9" + // 0x1F690345: 0x00001FA9 + "\x1fj\x03E\x00\x00\x1f\xaa" + // 0x1F6A0345: 0x00001FAA + "\x1fk\x03E\x00\x00\x1f\xab" + // 0x1F6B0345: 0x00001FAB + "\x1fl\x03E\x00\x00\x1f\xac" + // 0x1F6C0345: 0x00001FAC + "\x1fm\x03E\x00\x00\x1f\xad" + // 0x1F6D0345: 0x00001FAD + "\x1fn\x03E\x00\x00\x1f\xae" + // 0x1F6E0345: 0x00001FAE + "\x1fo\x03E\x00\x00\x1f\xaf" + // 0x1F6F0345: 0x00001FAF + "\x03\xb1\x03\x06\x00\x00\x1f\xb0" + // 0x03B10306: 0x00001FB0 + "\x03\xb1\x03\x04\x00\x00\x1f\xb1" + // 0x03B10304: 0x00001FB1 + "\x1fp\x03E\x00\x00\x1f\xb2" + // 0x1F700345: 0x00001FB2 + "\x03\xb1\x03E\x00\x00\x1f\xb3" + // 0x03B10345: 0x00001FB3 + "\x03\xac\x03E\x00\x00\x1f\xb4" + // 0x03AC0345: 0x00001FB4 + "\x03\xb1\x03B\x00\x00\x1f\xb6" + // 0x03B10342: 0x00001FB6 + "\x1f\xb6\x03E\x00\x00\x1f\xb7" + // 0x1FB60345: 0x00001FB7 + "\x03\x91\x03\x06\x00\x00\x1f\xb8" + // 0x03910306: 0x00001FB8 + "\x03\x91\x03\x04\x00\x00\x1f\xb9" + // 0x03910304: 0x00001FB9 + "\x03\x91\x03\x00\x00\x00\x1f\xba" + // 0x03910300: 0x00001FBA + "\x03\x91\x03E\x00\x00\x1f\xbc" + // 0x03910345: 0x00001FBC + "\x00\xa8\x03B\x00\x00\x1f\xc1" + // 0x00A80342: 0x00001FC1 + "\x1ft\x03E\x00\x00\x1f\xc2" + // 0x1F740345: 0x00001FC2 + "\x03\xb7\x03E\x00\x00\x1f\xc3" + // 0x03B70345: 0x00001FC3 + "\x03\xae\x03E\x00\x00\x1f\xc4" + // 0x03AE0345: 0x00001FC4 + "\x03\xb7\x03B\x00\x00\x1f\xc6" + // 0x03B70342: 0x00001FC6 + "\x1f\xc6\x03E\x00\x00\x1f\xc7" + // 0x1FC60345: 0x00001FC7 + "\x03\x95\x03\x00\x00\x00\x1f\xc8" + // 0x03950300: 0x00001FC8 + "\x03\x97\x03\x00\x00\x00\x1f\xca" + // 0x03970300: 0x00001FCA + "\x03\x97\x03E\x00\x00\x1f\xcc" + // 0x03970345: 0x00001FCC + "\x1f\xbf\x03\x00\x00\x00\x1f\xcd" + // 0x1FBF0300: 0x00001FCD + "\x1f\xbf\x03\x01\x00\x00\x1f\xce" + // 0x1FBF0301: 0x00001FCE + "\x1f\xbf\x03B\x00\x00\x1f\xcf" + // 0x1FBF0342: 0x00001FCF + "\x03\xb9\x03\x06\x00\x00\x1f\xd0" + // 0x03B90306: 0x00001FD0 + "\x03\xb9\x03\x04\x00\x00\x1f\xd1" + // 0x03B90304: 0x00001FD1 + "\x03\xca\x03\x00\x00\x00\x1f\xd2" + // 0x03CA0300: 0x00001FD2 + "\x03\xb9\x03B\x00\x00\x1f\xd6" + // 0x03B90342: 0x00001FD6 + "\x03\xca\x03B\x00\x00\x1f\xd7" + // 0x03CA0342: 0x00001FD7 + "\x03\x99\x03\x06\x00\x00\x1f\xd8" + // 0x03990306: 0x00001FD8 + "\x03\x99\x03\x04\x00\x00\x1f\xd9" + // 0x03990304: 0x00001FD9 + "\x03\x99\x03\x00\x00\x00\x1f\xda" + // 0x03990300: 0x00001FDA + "\x1f\xfe\x03\x00\x00\x00\x1f\xdd" + // 0x1FFE0300: 0x00001FDD + "\x1f\xfe\x03\x01\x00\x00\x1f\xde" + // 0x1FFE0301: 0x00001FDE + "\x1f\xfe\x03B\x00\x00\x1f\xdf" + // 0x1FFE0342: 0x00001FDF + "\x03\xc5\x03\x06\x00\x00\x1f\xe0" + // 0x03C50306: 0x00001FE0 + "\x03\xc5\x03\x04\x00\x00\x1f\xe1" + // 0x03C50304: 0x00001FE1 + "\x03\xcb\x03\x00\x00\x00\x1f\xe2" + // 0x03CB0300: 0x00001FE2 + "\x03\xc1\x03\x13\x00\x00\x1f\xe4" + // 0x03C10313: 0x00001FE4 + "\x03\xc1\x03\x14\x00\x00\x1f\xe5" + // 0x03C10314: 0x00001FE5 + "\x03\xc5\x03B\x00\x00\x1f\xe6" + // 0x03C50342: 0x00001FE6 + "\x03\xcb\x03B\x00\x00\x1f\xe7" + // 0x03CB0342: 0x00001FE7 + "\x03\xa5\x03\x06\x00\x00\x1f\xe8" + // 0x03A50306: 0x00001FE8 + "\x03\xa5\x03\x04\x00\x00\x1f\xe9" + // 0x03A50304: 0x00001FE9 + "\x03\xa5\x03\x00\x00\x00\x1f\xea" + // 0x03A50300: 0x00001FEA + "\x03\xa1\x03\x14\x00\x00\x1f\xec" + // 0x03A10314: 0x00001FEC + "\x00\xa8\x03\x00\x00\x00\x1f\xed" + // 0x00A80300: 0x00001FED + "\x1f|\x03E\x00\x00\x1f\xf2" + // 0x1F7C0345: 0x00001FF2 + "\x03\xc9\x03E\x00\x00\x1f\xf3" + // 0x03C90345: 0x00001FF3 + "\x03\xce\x03E\x00\x00\x1f\xf4" + // 0x03CE0345: 0x00001FF4 + "\x03\xc9\x03B\x00\x00\x1f\xf6" + // 0x03C90342: 0x00001FF6 + "\x1f\xf6\x03E\x00\x00\x1f\xf7" + // 0x1FF60345: 0x00001FF7 + "\x03\x9f\x03\x00\x00\x00\x1f\xf8" + // 0x039F0300: 0x00001FF8 + "\x03\xa9\x03\x00\x00\x00\x1f\xfa" + // 0x03A90300: 0x00001FFA + "\x03\xa9\x03E\x00\x00\x1f\xfc" + // 0x03A90345: 0x00001FFC + "!\x90\x038\x00\x00!\x9a" + // 0x21900338: 0x0000219A + "!\x92\x038\x00\x00!\x9b" + // 0x21920338: 0x0000219B + "!\x94\x038\x00\x00!\xae" + // 0x21940338: 0x000021AE + "!\xd0\x038\x00\x00!\xcd" + // 0x21D00338: 0x000021CD + "!\xd4\x038\x00\x00!\xce" + // 0x21D40338: 0x000021CE + "!\xd2\x038\x00\x00!\xcf" + // 0x21D20338: 0x000021CF + "\"\x03\x038\x00\x00\"\x04" + // 0x22030338: 0x00002204 + "\"\b\x038\x00\x00\"\t" + // 0x22080338: 0x00002209 + "\"\v\x038\x00\x00\"\f" + // 0x220B0338: 0x0000220C + "\"#\x038\x00\x00\"$" + // 0x22230338: 0x00002224 + "\"%\x038\x00\x00\"&" + // 0x22250338: 0x00002226 + "\"<\x038\x00\x00\"A" + // 0x223C0338: 0x00002241 + "\"C\x038\x00\x00\"D" + // 0x22430338: 0x00002244 + "\"E\x038\x00\x00\"G" + // 0x22450338: 0x00002247 + "\"H\x038\x00\x00\"I" + // 0x22480338: 0x00002249 + "\x00=\x038\x00\x00\"`" + // 0x003D0338: 0x00002260 + "\"a\x038\x00\x00\"b" + // 0x22610338: 0x00002262 + "\"M\x038\x00\x00\"m" + // 0x224D0338: 0x0000226D + "\x00<\x038\x00\x00\"n" + // 0x003C0338: 0x0000226E + "\x00>\x038\x00\x00\"o" + // 0x003E0338: 0x0000226F + "\"d\x038\x00\x00\"p" + // 0x22640338: 0x00002270 + "\"e\x038\x00\x00\"q" + // 0x22650338: 0x00002271 + "\"r\x038\x00\x00\"t" + // 0x22720338: 0x00002274 + "\"s\x038\x00\x00\"u" + // 0x22730338: 0x00002275 + "\"v\x038\x00\x00\"x" + // 0x22760338: 0x00002278 + "\"w\x038\x00\x00\"y" + // 0x22770338: 0x00002279 + "\"z\x038\x00\x00\"\x80" + // 0x227A0338: 0x00002280 + "\"{\x038\x00\x00\"\x81" + // 0x227B0338: 0x00002281 + "\"\x82\x038\x00\x00\"\x84" + // 0x22820338: 0x00002284 + "\"\x83\x038\x00\x00\"\x85" + // 0x22830338: 0x00002285 + "\"\x86\x038\x00\x00\"\x88" + // 0x22860338: 0x00002288 + "\"\x87\x038\x00\x00\"\x89" + // 0x22870338: 0x00002289 + "\"\xa2\x038\x00\x00\"\xac" + // 0x22A20338: 0x000022AC + "\"\xa8\x038\x00\x00\"\xad" + // 0x22A80338: 0x000022AD + "\"\xa9\x038\x00\x00\"\xae" + // 0x22A90338: 0x000022AE + "\"\xab\x038\x00\x00\"\xaf" + // 0x22AB0338: 0x000022AF + "\"|\x038\x00\x00\"\xe0" + // 0x227C0338: 0x000022E0 + "\"}\x038\x00\x00\"\xe1" + // 0x227D0338: 0x000022E1 + "\"\x91\x038\x00\x00\"\xe2" + // 0x22910338: 0x000022E2 + "\"\x92\x038\x00\x00\"\xe3" + // 0x22920338: 0x000022E3 + "\"\xb2\x038\x00\x00\"\xea" + // 0x22B20338: 0x000022EA + "\"\xb3\x038\x00\x00\"\xeb" + // 0x22B30338: 0x000022EB + "\"\xb4\x038\x00\x00\"\xec" + // 0x22B40338: 0x000022EC + "\"\xb5\x038\x00\x00\"\xed" + // 0x22B50338: 0x000022ED + "0K0\x99\x00\x000L" + // 0x304B3099: 0x0000304C + "0M0\x99\x00\x000N" + // 0x304D3099: 0x0000304E + "0O0\x99\x00\x000P" + // 0x304F3099: 0x00003050 + "0Q0\x99\x00\x000R" + // 0x30513099: 0x00003052 + "0S0\x99\x00\x000T" + // 0x30533099: 0x00003054 + "0U0\x99\x00\x000V" + // 0x30553099: 0x00003056 + "0W0\x99\x00\x000X" + // 0x30573099: 0x00003058 + "0Y0\x99\x00\x000Z" + // 0x30593099: 0x0000305A + "0[0\x99\x00\x000\\" + // 0x305B3099: 0x0000305C + "0]0\x99\x00\x000^" + // 0x305D3099: 0x0000305E + "0_0\x99\x00\x000`" + // 0x305F3099: 0x00003060 + "0a0\x99\x00\x000b" + // 0x30613099: 0x00003062 + "0d0\x99\x00\x000e" + // 0x30643099: 0x00003065 + "0f0\x99\x00\x000g" + // 0x30663099: 0x00003067 + "0h0\x99\x00\x000i" + // 0x30683099: 0x00003069 + "0o0\x99\x00\x000p" + // 0x306F3099: 0x00003070 + "0o0\x9a\x00\x000q" + // 0x306F309A: 0x00003071 + "0r0\x99\x00\x000s" + // 0x30723099: 0x00003073 + "0r0\x9a\x00\x000t" + // 0x3072309A: 0x00003074 + "0u0\x99\x00\x000v" + // 0x30753099: 0x00003076 + "0u0\x9a\x00\x000w" + // 0x3075309A: 0x00003077 + "0x0\x99\x00\x000y" + // 0x30783099: 0x00003079 + "0x0\x9a\x00\x000z" + // 0x3078309A: 0x0000307A + "0{0\x99\x00\x000|" + // 0x307B3099: 0x0000307C + "0{0\x9a\x00\x000}" + // 0x307B309A: 0x0000307D + "0F0\x99\x00\x000\x94" + // 0x30463099: 0x00003094 + "0\x9d0\x99\x00\x000\x9e" + // 0x309D3099: 0x0000309E + "0\xab0\x99\x00\x000\xac" + // 0x30AB3099: 0x000030AC + "0\xad0\x99\x00\x000\xae" + // 0x30AD3099: 0x000030AE + "0\xaf0\x99\x00\x000\xb0" + // 0x30AF3099: 0x000030B0 + "0\xb10\x99\x00\x000\xb2" + // 0x30B13099: 0x000030B2 + "0\xb30\x99\x00\x000\xb4" + // 0x30B33099: 0x000030B4 + "0\xb50\x99\x00\x000\xb6" + // 0x30B53099: 0x000030B6 + "0\xb70\x99\x00\x000\xb8" + // 0x30B73099: 0x000030B8 + "0\xb90\x99\x00\x000\xba" + // 0x30B93099: 0x000030BA + "0\xbb0\x99\x00\x000\xbc" + // 0x30BB3099: 0x000030BC + "0\xbd0\x99\x00\x000\xbe" + // 0x30BD3099: 0x000030BE + "0\xbf0\x99\x00\x000\xc0" + // 0x30BF3099: 0x000030C0 + "0\xc10\x99\x00\x000\xc2" + // 0x30C13099: 0x000030C2 + "0\xc40\x99\x00\x000\xc5" + // 0x30C43099: 0x000030C5 + "0\xc60\x99\x00\x000\xc7" + // 0x30C63099: 0x000030C7 + "0\xc80\x99\x00\x000\xc9" + // 0x30C83099: 0x000030C9 + "0\xcf0\x99\x00\x000\xd0" + // 0x30CF3099: 0x000030D0 + "0\xcf0\x9a\x00\x000\xd1" + // 0x30CF309A: 0x000030D1 + "0\xd20\x99\x00\x000\xd3" + // 0x30D23099: 0x000030D3 + "0\xd20\x9a\x00\x000\xd4" + // 0x30D2309A: 0x000030D4 + "0\xd50\x99\x00\x000\xd6" + // 0x30D53099: 0x000030D6 + "0\xd50\x9a\x00\x000\xd7" + // 0x30D5309A: 0x000030D7 + "0\xd80\x99\x00\x000\xd9" + // 0x30D83099: 0x000030D9 + "0\xd80\x9a\x00\x000\xda" + // 0x30D8309A: 0x000030DA + "0\xdb0\x99\x00\x000\xdc" + // 0x30DB3099: 0x000030DC + "0\xdb0\x9a\x00\x000\xdd" + // 0x30DB309A: 0x000030DD + "0\xa60\x99\x00\x000\xf4" + // 0x30A63099: 0x000030F4 + "0\xef0\x99\x00\x000\xf7" + // 0x30EF3099: 0x000030F7 + "0\xf00\x99\x00\x000\xf8" + // 0x30F03099: 0x000030F8 + "0\xf10\x99\x00\x000\xf9" + // 0x30F13099: 0x000030F9 + "0\xf20\x99\x00\x000\xfa" + // 0x30F23099: 0x000030FA + "0\xfd0\x99\x00\x000\xfe" + // 0x30FD3099: 0x000030FE + "\x10\x99\x10\xba\x00\x01\x10\x9a" + // 0x109910BA: 0x0001109A + "\x10\x9b\x10\xba\x00\x01\x10\x9c" + // 0x109B10BA: 0x0001109C + "\x10\xa5\x10\xba\x00\x01\x10\xab" + // 0x10A510BA: 0x000110AB + "\x111\x11'\x00\x01\x11." + // 0x11311127: 0x0001112E + "\x112\x11'\x00\x01\x11/" + // 0x11321127: 0x0001112F + "\x13G\x13>\x00\x01\x13K" + // 0x1347133E: 0x0001134B + "\x13G\x13W\x00\x01\x13L" + // 0x13471357: 0x0001134C + "\x14\xb9\x14\xba\x00\x01\x14\xbb" + // 0x14B914BA: 0x000114BB + "\x14\xb9\x14\xb0\x00\x01\x14\xbc" + // 0x14B914B0: 0x000114BC + "\x14\xb9\x14\xbd\x00\x01\x14\xbe" + // 0x14B914BD: 0x000114BE + "\x15\xb8\x15\xaf\x00\x01\x15\xba" + // 0x15B815AF: 0x000115BA + "\x15\xb9\x15\xaf\x00\x01\x15\xbb" + // 0x15B915AF: 0x000115BB + "" + // Total size of tables: 53KB (54514 bytes) diff --git a/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go index a01274a8e8..9429069291 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go @@ -4,6 +4,8 @@ package norm +import "sync" + const ( // Version is the Unicode edition from which the tables are derived. Version = "9.0.0" @@ -6687,947 +6689,949 @@ var nfkcSparseValues = [875]valueRange{ } // recompMap: 7520 bytes (entries only) -var recompMap = map[uint32]rune{ - 0x00410300: 0x00C0, - 0x00410301: 0x00C1, - 0x00410302: 0x00C2, - 0x00410303: 0x00C3, - 0x00410308: 0x00C4, - 0x0041030A: 0x00C5, - 0x00430327: 0x00C7, - 0x00450300: 0x00C8, - 0x00450301: 0x00C9, - 0x00450302: 0x00CA, - 0x00450308: 0x00CB, - 0x00490300: 0x00CC, - 0x00490301: 0x00CD, - 0x00490302: 0x00CE, - 0x00490308: 0x00CF, - 0x004E0303: 0x00D1, - 0x004F0300: 0x00D2, - 0x004F0301: 0x00D3, - 0x004F0302: 0x00D4, - 0x004F0303: 0x00D5, - 0x004F0308: 0x00D6, - 0x00550300: 0x00D9, - 0x00550301: 0x00DA, - 0x00550302: 0x00DB, - 0x00550308: 0x00DC, - 0x00590301: 0x00DD, - 0x00610300: 0x00E0, - 0x00610301: 0x00E1, - 0x00610302: 0x00E2, - 0x00610303: 0x00E3, - 0x00610308: 0x00E4, - 0x0061030A: 0x00E5, - 0x00630327: 0x00E7, - 0x00650300: 0x00E8, - 0x00650301: 0x00E9, - 0x00650302: 0x00EA, - 0x00650308: 0x00EB, - 0x00690300: 0x00EC, - 0x00690301: 0x00ED, - 0x00690302: 0x00EE, - 0x00690308: 0x00EF, - 0x006E0303: 0x00F1, - 0x006F0300: 0x00F2, - 0x006F0301: 0x00F3, - 0x006F0302: 0x00F4, - 0x006F0303: 0x00F5, - 0x006F0308: 0x00F6, - 0x00750300: 0x00F9, - 0x00750301: 0x00FA, - 0x00750302: 0x00FB, - 0x00750308: 0x00FC, - 0x00790301: 0x00FD, - 0x00790308: 0x00FF, - 0x00410304: 0x0100, - 0x00610304: 0x0101, - 0x00410306: 0x0102, - 0x00610306: 0x0103, - 0x00410328: 0x0104, - 0x00610328: 0x0105, - 0x00430301: 0x0106, - 0x00630301: 0x0107, - 0x00430302: 0x0108, - 0x00630302: 0x0109, - 0x00430307: 0x010A, - 0x00630307: 0x010B, - 0x0043030C: 0x010C, - 0x0063030C: 0x010D, - 0x0044030C: 0x010E, - 0x0064030C: 0x010F, - 0x00450304: 0x0112, - 0x00650304: 0x0113, - 0x00450306: 0x0114, - 0x00650306: 0x0115, - 0x00450307: 0x0116, - 0x00650307: 0x0117, - 0x00450328: 0x0118, - 0x00650328: 0x0119, - 0x0045030C: 0x011A, - 0x0065030C: 0x011B, - 0x00470302: 0x011C, - 0x00670302: 0x011D, - 0x00470306: 0x011E, - 0x00670306: 0x011F, - 0x00470307: 0x0120, - 0x00670307: 0x0121, - 0x00470327: 0x0122, - 0x00670327: 0x0123, - 0x00480302: 0x0124, - 0x00680302: 0x0125, - 0x00490303: 0x0128, - 0x00690303: 0x0129, - 0x00490304: 0x012A, - 0x00690304: 0x012B, - 0x00490306: 0x012C, - 0x00690306: 0x012D, - 0x00490328: 0x012E, - 0x00690328: 0x012F, - 0x00490307: 0x0130, - 0x004A0302: 0x0134, - 0x006A0302: 0x0135, - 0x004B0327: 0x0136, - 0x006B0327: 0x0137, - 0x004C0301: 0x0139, - 0x006C0301: 0x013A, - 0x004C0327: 0x013B, - 0x006C0327: 0x013C, - 0x004C030C: 0x013D, - 0x006C030C: 0x013E, - 0x004E0301: 0x0143, - 0x006E0301: 0x0144, - 0x004E0327: 0x0145, - 0x006E0327: 0x0146, - 0x004E030C: 0x0147, - 0x006E030C: 0x0148, - 0x004F0304: 0x014C, - 0x006F0304: 0x014D, - 0x004F0306: 0x014E, - 0x006F0306: 0x014F, - 0x004F030B: 0x0150, - 0x006F030B: 0x0151, - 0x00520301: 0x0154, - 0x00720301: 0x0155, - 0x00520327: 0x0156, - 0x00720327: 0x0157, - 0x0052030C: 0x0158, - 0x0072030C: 0x0159, - 0x00530301: 0x015A, - 0x00730301: 0x015B, - 0x00530302: 0x015C, - 0x00730302: 0x015D, - 0x00530327: 0x015E, - 0x00730327: 0x015F, - 0x0053030C: 0x0160, - 0x0073030C: 0x0161, - 0x00540327: 0x0162, - 0x00740327: 0x0163, - 0x0054030C: 0x0164, - 0x0074030C: 0x0165, - 0x00550303: 0x0168, - 0x00750303: 0x0169, - 0x00550304: 0x016A, - 0x00750304: 0x016B, - 0x00550306: 0x016C, - 0x00750306: 0x016D, - 0x0055030A: 0x016E, - 0x0075030A: 0x016F, - 0x0055030B: 0x0170, - 0x0075030B: 0x0171, - 0x00550328: 0x0172, - 0x00750328: 0x0173, - 0x00570302: 0x0174, - 0x00770302: 0x0175, - 0x00590302: 0x0176, - 0x00790302: 0x0177, - 0x00590308: 0x0178, - 0x005A0301: 0x0179, - 0x007A0301: 0x017A, - 0x005A0307: 0x017B, - 0x007A0307: 0x017C, - 0x005A030C: 0x017D, - 0x007A030C: 0x017E, - 0x004F031B: 0x01A0, - 0x006F031B: 0x01A1, - 0x0055031B: 0x01AF, - 0x0075031B: 0x01B0, - 0x0041030C: 0x01CD, - 0x0061030C: 0x01CE, - 0x0049030C: 0x01CF, - 0x0069030C: 0x01D0, - 0x004F030C: 0x01D1, - 0x006F030C: 0x01D2, - 0x0055030C: 0x01D3, - 0x0075030C: 0x01D4, - 0x00DC0304: 0x01D5, - 0x00FC0304: 0x01D6, - 0x00DC0301: 0x01D7, - 0x00FC0301: 0x01D8, - 0x00DC030C: 0x01D9, - 0x00FC030C: 0x01DA, - 0x00DC0300: 0x01DB, - 0x00FC0300: 0x01DC, - 0x00C40304: 0x01DE, - 0x00E40304: 0x01DF, - 0x02260304: 0x01E0, - 0x02270304: 0x01E1, - 0x00C60304: 0x01E2, - 0x00E60304: 0x01E3, - 0x0047030C: 0x01E6, - 0x0067030C: 0x01E7, - 0x004B030C: 0x01E8, - 0x006B030C: 0x01E9, - 0x004F0328: 0x01EA, - 0x006F0328: 0x01EB, - 0x01EA0304: 0x01EC, - 0x01EB0304: 0x01ED, - 0x01B7030C: 0x01EE, - 0x0292030C: 0x01EF, - 0x006A030C: 0x01F0, - 0x00470301: 0x01F4, - 0x00670301: 0x01F5, - 0x004E0300: 0x01F8, - 0x006E0300: 0x01F9, - 0x00C50301: 0x01FA, - 0x00E50301: 0x01FB, - 0x00C60301: 0x01FC, - 0x00E60301: 0x01FD, - 0x00D80301: 0x01FE, - 0x00F80301: 0x01FF, - 0x0041030F: 0x0200, - 0x0061030F: 0x0201, - 0x00410311: 0x0202, - 0x00610311: 0x0203, - 0x0045030F: 0x0204, - 0x0065030F: 0x0205, - 0x00450311: 0x0206, - 0x00650311: 0x0207, - 0x0049030F: 0x0208, - 0x0069030F: 0x0209, - 0x00490311: 0x020A, - 0x00690311: 0x020B, - 0x004F030F: 0x020C, - 0x006F030F: 0x020D, - 0x004F0311: 0x020E, - 0x006F0311: 0x020F, - 0x0052030F: 0x0210, - 0x0072030F: 0x0211, - 0x00520311: 0x0212, - 0x00720311: 0x0213, - 0x0055030F: 0x0214, - 0x0075030F: 0x0215, - 0x00550311: 0x0216, - 0x00750311: 0x0217, - 0x00530326: 0x0218, - 0x00730326: 0x0219, - 0x00540326: 0x021A, - 0x00740326: 0x021B, - 0x0048030C: 0x021E, - 0x0068030C: 0x021F, - 0x00410307: 0x0226, - 0x00610307: 0x0227, - 0x00450327: 0x0228, - 0x00650327: 0x0229, - 0x00D60304: 0x022A, - 0x00F60304: 0x022B, - 0x00D50304: 0x022C, - 0x00F50304: 0x022D, - 0x004F0307: 0x022E, - 0x006F0307: 0x022F, - 0x022E0304: 0x0230, - 0x022F0304: 0x0231, - 0x00590304: 0x0232, - 0x00790304: 0x0233, - 0x00A80301: 0x0385, - 0x03910301: 0x0386, - 0x03950301: 0x0388, - 0x03970301: 0x0389, - 0x03990301: 0x038A, - 0x039F0301: 0x038C, - 0x03A50301: 0x038E, - 0x03A90301: 0x038F, - 0x03CA0301: 0x0390, - 0x03990308: 0x03AA, - 0x03A50308: 0x03AB, - 0x03B10301: 0x03AC, - 0x03B50301: 0x03AD, - 0x03B70301: 0x03AE, - 0x03B90301: 0x03AF, - 0x03CB0301: 0x03B0, - 0x03B90308: 0x03CA, - 0x03C50308: 0x03CB, - 0x03BF0301: 0x03CC, - 0x03C50301: 0x03CD, - 0x03C90301: 0x03CE, - 0x03D20301: 0x03D3, - 0x03D20308: 0x03D4, - 0x04150300: 0x0400, - 0x04150308: 0x0401, - 0x04130301: 0x0403, - 0x04060308: 0x0407, - 0x041A0301: 0x040C, - 0x04180300: 0x040D, - 0x04230306: 0x040E, - 0x04180306: 0x0419, - 0x04380306: 0x0439, - 0x04350300: 0x0450, - 0x04350308: 0x0451, - 0x04330301: 0x0453, - 0x04560308: 0x0457, - 0x043A0301: 0x045C, - 0x04380300: 0x045D, - 0x04430306: 0x045E, - 0x0474030F: 0x0476, - 0x0475030F: 0x0477, - 0x04160306: 0x04C1, - 0x04360306: 0x04C2, - 0x04100306: 0x04D0, - 0x04300306: 0x04D1, - 0x04100308: 0x04D2, - 0x04300308: 0x04D3, - 0x04150306: 0x04D6, - 0x04350306: 0x04D7, - 0x04D80308: 0x04DA, - 0x04D90308: 0x04DB, - 0x04160308: 0x04DC, - 0x04360308: 0x04DD, - 0x04170308: 0x04DE, - 0x04370308: 0x04DF, - 0x04180304: 0x04E2, - 0x04380304: 0x04E3, - 0x04180308: 0x04E4, - 0x04380308: 0x04E5, - 0x041E0308: 0x04E6, - 0x043E0308: 0x04E7, - 0x04E80308: 0x04EA, - 0x04E90308: 0x04EB, - 0x042D0308: 0x04EC, - 0x044D0308: 0x04ED, - 0x04230304: 0x04EE, - 0x04430304: 0x04EF, - 0x04230308: 0x04F0, - 0x04430308: 0x04F1, - 0x0423030B: 0x04F2, - 0x0443030B: 0x04F3, - 0x04270308: 0x04F4, - 0x04470308: 0x04F5, - 0x042B0308: 0x04F8, - 0x044B0308: 0x04F9, - 0x06270653: 0x0622, - 0x06270654: 0x0623, - 0x06480654: 0x0624, - 0x06270655: 0x0625, - 0x064A0654: 0x0626, - 0x06D50654: 0x06C0, - 0x06C10654: 0x06C2, - 0x06D20654: 0x06D3, - 0x0928093C: 0x0929, - 0x0930093C: 0x0931, - 0x0933093C: 0x0934, - 0x09C709BE: 0x09CB, - 0x09C709D7: 0x09CC, - 0x0B470B56: 0x0B48, - 0x0B470B3E: 0x0B4B, - 0x0B470B57: 0x0B4C, - 0x0B920BD7: 0x0B94, - 0x0BC60BBE: 0x0BCA, - 0x0BC70BBE: 0x0BCB, - 0x0BC60BD7: 0x0BCC, - 0x0C460C56: 0x0C48, - 0x0CBF0CD5: 0x0CC0, - 0x0CC60CD5: 0x0CC7, - 0x0CC60CD6: 0x0CC8, - 0x0CC60CC2: 0x0CCA, - 0x0CCA0CD5: 0x0CCB, - 0x0D460D3E: 0x0D4A, - 0x0D470D3E: 0x0D4B, - 0x0D460D57: 0x0D4C, - 0x0DD90DCA: 0x0DDA, - 0x0DD90DCF: 0x0DDC, - 0x0DDC0DCA: 0x0DDD, - 0x0DD90DDF: 0x0DDE, - 0x1025102E: 0x1026, - 0x1B051B35: 0x1B06, - 0x1B071B35: 0x1B08, - 0x1B091B35: 0x1B0A, - 0x1B0B1B35: 0x1B0C, - 0x1B0D1B35: 0x1B0E, - 0x1B111B35: 0x1B12, - 0x1B3A1B35: 0x1B3B, - 0x1B3C1B35: 0x1B3D, - 0x1B3E1B35: 0x1B40, - 0x1B3F1B35: 0x1B41, - 0x1B421B35: 0x1B43, - 0x00410325: 0x1E00, - 0x00610325: 0x1E01, - 0x00420307: 0x1E02, - 0x00620307: 0x1E03, - 0x00420323: 0x1E04, - 0x00620323: 0x1E05, - 0x00420331: 0x1E06, - 0x00620331: 0x1E07, - 0x00C70301: 0x1E08, - 0x00E70301: 0x1E09, - 0x00440307: 0x1E0A, - 0x00640307: 0x1E0B, - 0x00440323: 0x1E0C, - 0x00640323: 0x1E0D, - 0x00440331: 0x1E0E, - 0x00640331: 0x1E0F, - 0x00440327: 0x1E10, - 0x00640327: 0x1E11, - 0x0044032D: 0x1E12, - 0x0064032D: 0x1E13, - 0x01120300: 0x1E14, - 0x01130300: 0x1E15, - 0x01120301: 0x1E16, - 0x01130301: 0x1E17, - 0x0045032D: 0x1E18, - 0x0065032D: 0x1E19, - 0x00450330: 0x1E1A, - 0x00650330: 0x1E1B, - 0x02280306: 0x1E1C, - 0x02290306: 0x1E1D, - 0x00460307: 0x1E1E, - 0x00660307: 0x1E1F, - 0x00470304: 0x1E20, - 0x00670304: 0x1E21, - 0x00480307: 0x1E22, - 0x00680307: 0x1E23, - 0x00480323: 0x1E24, - 0x00680323: 0x1E25, - 0x00480308: 0x1E26, - 0x00680308: 0x1E27, - 0x00480327: 0x1E28, - 0x00680327: 0x1E29, - 0x0048032E: 0x1E2A, - 0x0068032E: 0x1E2B, - 0x00490330: 0x1E2C, - 0x00690330: 0x1E2D, - 0x00CF0301: 0x1E2E, - 0x00EF0301: 0x1E2F, - 0x004B0301: 0x1E30, - 0x006B0301: 0x1E31, - 0x004B0323: 0x1E32, - 0x006B0323: 0x1E33, - 0x004B0331: 0x1E34, - 0x006B0331: 0x1E35, - 0x004C0323: 0x1E36, - 0x006C0323: 0x1E37, - 0x1E360304: 0x1E38, - 0x1E370304: 0x1E39, - 0x004C0331: 0x1E3A, - 0x006C0331: 0x1E3B, - 0x004C032D: 0x1E3C, - 0x006C032D: 0x1E3D, - 0x004D0301: 0x1E3E, - 0x006D0301: 0x1E3F, - 0x004D0307: 0x1E40, - 0x006D0307: 0x1E41, - 0x004D0323: 0x1E42, - 0x006D0323: 0x1E43, - 0x004E0307: 0x1E44, - 0x006E0307: 0x1E45, - 0x004E0323: 0x1E46, - 0x006E0323: 0x1E47, - 0x004E0331: 0x1E48, - 0x006E0331: 0x1E49, - 0x004E032D: 0x1E4A, - 0x006E032D: 0x1E4B, - 0x00D50301: 0x1E4C, - 0x00F50301: 0x1E4D, - 0x00D50308: 0x1E4E, - 0x00F50308: 0x1E4F, - 0x014C0300: 0x1E50, - 0x014D0300: 0x1E51, - 0x014C0301: 0x1E52, - 0x014D0301: 0x1E53, - 0x00500301: 0x1E54, - 0x00700301: 0x1E55, - 0x00500307: 0x1E56, - 0x00700307: 0x1E57, - 0x00520307: 0x1E58, - 0x00720307: 0x1E59, - 0x00520323: 0x1E5A, - 0x00720323: 0x1E5B, - 0x1E5A0304: 0x1E5C, - 0x1E5B0304: 0x1E5D, - 0x00520331: 0x1E5E, - 0x00720331: 0x1E5F, - 0x00530307: 0x1E60, - 0x00730307: 0x1E61, - 0x00530323: 0x1E62, - 0x00730323: 0x1E63, - 0x015A0307: 0x1E64, - 0x015B0307: 0x1E65, - 0x01600307: 0x1E66, - 0x01610307: 0x1E67, - 0x1E620307: 0x1E68, - 0x1E630307: 0x1E69, - 0x00540307: 0x1E6A, - 0x00740307: 0x1E6B, - 0x00540323: 0x1E6C, - 0x00740323: 0x1E6D, - 0x00540331: 0x1E6E, - 0x00740331: 0x1E6F, - 0x0054032D: 0x1E70, - 0x0074032D: 0x1E71, - 0x00550324: 0x1E72, - 0x00750324: 0x1E73, - 0x00550330: 0x1E74, - 0x00750330: 0x1E75, - 0x0055032D: 0x1E76, - 0x0075032D: 0x1E77, - 0x01680301: 0x1E78, - 0x01690301: 0x1E79, - 0x016A0308: 0x1E7A, - 0x016B0308: 0x1E7B, - 0x00560303: 0x1E7C, - 0x00760303: 0x1E7D, - 0x00560323: 0x1E7E, - 0x00760323: 0x1E7F, - 0x00570300: 0x1E80, - 0x00770300: 0x1E81, - 0x00570301: 0x1E82, - 0x00770301: 0x1E83, - 0x00570308: 0x1E84, - 0x00770308: 0x1E85, - 0x00570307: 0x1E86, - 0x00770307: 0x1E87, - 0x00570323: 0x1E88, - 0x00770323: 0x1E89, - 0x00580307: 0x1E8A, - 0x00780307: 0x1E8B, - 0x00580308: 0x1E8C, - 0x00780308: 0x1E8D, - 0x00590307: 0x1E8E, - 0x00790307: 0x1E8F, - 0x005A0302: 0x1E90, - 0x007A0302: 0x1E91, - 0x005A0323: 0x1E92, - 0x007A0323: 0x1E93, - 0x005A0331: 0x1E94, - 0x007A0331: 0x1E95, - 0x00680331: 0x1E96, - 0x00740308: 0x1E97, - 0x0077030A: 0x1E98, - 0x0079030A: 0x1E99, - 0x017F0307: 0x1E9B, - 0x00410323: 0x1EA0, - 0x00610323: 0x1EA1, - 0x00410309: 0x1EA2, - 0x00610309: 0x1EA3, - 0x00C20301: 0x1EA4, - 0x00E20301: 0x1EA5, - 0x00C20300: 0x1EA6, - 0x00E20300: 0x1EA7, - 0x00C20309: 0x1EA8, - 0x00E20309: 0x1EA9, - 0x00C20303: 0x1EAA, - 0x00E20303: 0x1EAB, - 0x1EA00302: 0x1EAC, - 0x1EA10302: 0x1EAD, - 0x01020301: 0x1EAE, - 0x01030301: 0x1EAF, - 0x01020300: 0x1EB0, - 0x01030300: 0x1EB1, - 0x01020309: 0x1EB2, - 0x01030309: 0x1EB3, - 0x01020303: 0x1EB4, - 0x01030303: 0x1EB5, - 0x1EA00306: 0x1EB6, - 0x1EA10306: 0x1EB7, - 0x00450323: 0x1EB8, - 0x00650323: 0x1EB9, - 0x00450309: 0x1EBA, - 0x00650309: 0x1EBB, - 0x00450303: 0x1EBC, - 0x00650303: 0x1EBD, - 0x00CA0301: 0x1EBE, - 0x00EA0301: 0x1EBF, - 0x00CA0300: 0x1EC0, - 0x00EA0300: 0x1EC1, - 0x00CA0309: 0x1EC2, - 0x00EA0309: 0x1EC3, - 0x00CA0303: 0x1EC4, - 0x00EA0303: 0x1EC5, - 0x1EB80302: 0x1EC6, - 0x1EB90302: 0x1EC7, - 0x00490309: 0x1EC8, - 0x00690309: 0x1EC9, - 0x00490323: 0x1ECA, - 0x00690323: 0x1ECB, - 0x004F0323: 0x1ECC, - 0x006F0323: 0x1ECD, - 0x004F0309: 0x1ECE, - 0x006F0309: 0x1ECF, - 0x00D40301: 0x1ED0, - 0x00F40301: 0x1ED1, - 0x00D40300: 0x1ED2, - 0x00F40300: 0x1ED3, - 0x00D40309: 0x1ED4, - 0x00F40309: 0x1ED5, - 0x00D40303: 0x1ED6, - 0x00F40303: 0x1ED7, - 0x1ECC0302: 0x1ED8, - 0x1ECD0302: 0x1ED9, - 0x01A00301: 0x1EDA, - 0x01A10301: 0x1EDB, - 0x01A00300: 0x1EDC, - 0x01A10300: 0x1EDD, - 0x01A00309: 0x1EDE, - 0x01A10309: 0x1EDF, - 0x01A00303: 0x1EE0, - 0x01A10303: 0x1EE1, - 0x01A00323: 0x1EE2, - 0x01A10323: 0x1EE3, - 0x00550323: 0x1EE4, - 0x00750323: 0x1EE5, - 0x00550309: 0x1EE6, - 0x00750309: 0x1EE7, - 0x01AF0301: 0x1EE8, - 0x01B00301: 0x1EE9, - 0x01AF0300: 0x1EEA, - 0x01B00300: 0x1EEB, - 0x01AF0309: 0x1EEC, - 0x01B00309: 0x1EED, - 0x01AF0303: 0x1EEE, - 0x01B00303: 0x1EEF, - 0x01AF0323: 0x1EF0, - 0x01B00323: 0x1EF1, - 0x00590300: 0x1EF2, - 0x00790300: 0x1EF3, - 0x00590323: 0x1EF4, - 0x00790323: 0x1EF5, - 0x00590309: 0x1EF6, - 0x00790309: 0x1EF7, - 0x00590303: 0x1EF8, - 0x00790303: 0x1EF9, - 0x03B10313: 0x1F00, - 0x03B10314: 0x1F01, - 0x1F000300: 0x1F02, - 0x1F010300: 0x1F03, - 0x1F000301: 0x1F04, - 0x1F010301: 0x1F05, - 0x1F000342: 0x1F06, - 0x1F010342: 0x1F07, - 0x03910313: 0x1F08, - 0x03910314: 0x1F09, - 0x1F080300: 0x1F0A, - 0x1F090300: 0x1F0B, - 0x1F080301: 0x1F0C, - 0x1F090301: 0x1F0D, - 0x1F080342: 0x1F0E, - 0x1F090342: 0x1F0F, - 0x03B50313: 0x1F10, - 0x03B50314: 0x1F11, - 0x1F100300: 0x1F12, - 0x1F110300: 0x1F13, - 0x1F100301: 0x1F14, - 0x1F110301: 0x1F15, - 0x03950313: 0x1F18, - 0x03950314: 0x1F19, - 0x1F180300: 0x1F1A, - 0x1F190300: 0x1F1B, - 0x1F180301: 0x1F1C, - 0x1F190301: 0x1F1D, - 0x03B70313: 0x1F20, - 0x03B70314: 0x1F21, - 0x1F200300: 0x1F22, - 0x1F210300: 0x1F23, - 0x1F200301: 0x1F24, - 0x1F210301: 0x1F25, - 0x1F200342: 0x1F26, - 0x1F210342: 0x1F27, - 0x03970313: 0x1F28, - 0x03970314: 0x1F29, - 0x1F280300: 0x1F2A, - 0x1F290300: 0x1F2B, - 0x1F280301: 0x1F2C, - 0x1F290301: 0x1F2D, - 0x1F280342: 0x1F2E, - 0x1F290342: 0x1F2F, - 0x03B90313: 0x1F30, - 0x03B90314: 0x1F31, - 0x1F300300: 0x1F32, - 0x1F310300: 0x1F33, - 0x1F300301: 0x1F34, - 0x1F310301: 0x1F35, - 0x1F300342: 0x1F36, - 0x1F310342: 0x1F37, - 0x03990313: 0x1F38, - 0x03990314: 0x1F39, - 0x1F380300: 0x1F3A, - 0x1F390300: 0x1F3B, - 0x1F380301: 0x1F3C, - 0x1F390301: 0x1F3D, - 0x1F380342: 0x1F3E, - 0x1F390342: 0x1F3F, - 0x03BF0313: 0x1F40, - 0x03BF0314: 0x1F41, - 0x1F400300: 0x1F42, - 0x1F410300: 0x1F43, - 0x1F400301: 0x1F44, - 0x1F410301: 0x1F45, - 0x039F0313: 0x1F48, - 0x039F0314: 0x1F49, - 0x1F480300: 0x1F4A, - 0x1F490300: 0x1F4B, - 0x1F480301: 0x1F4C, - 0x1F490301: 0x1F4D, - 0x03C50313: 0x1F50, - 0x03C50314: 0x1F51, - 0x1F500300: 0x1F52, - 0x1F510300: 0x1F53, - 0x1F500301: 0x1F54, - 0x1F510301: 0x1F55, - 0x1F500342: 0x1F56, - 0x1F510342: 0x1F57, - 0x03A50314: 0x1F59, - 0x1F590300: 0x1F5B, - 0x1F590301: 0x1F5D, - 0x1F590342: 0x1F5F, - 0x03C90313: 0x1F60, - 0x03C90314: 0x1F61, - 0x1F600300: 0x1F62, - 0x1F610300: 0x1F63, - 0x1F600301: 0x1F64, - 0x1F610301: 0x1F65, - 0x1F600342: 0x1F66, - 0x1F610342: 0x1F67, - 0x03A90313: 0x1F68, - 0x03A90314: 0x1F69, - 0x1F680300: 0x1F6A, - 0x1F690300: 0x1F6B, - 0x1F680301: 0x1F6C, - 0x1F690301: 0x1F6D, - 0x1F680342: 0x1F6E, - 0x1F690342: 0x1F6F, - 0x03B10300: 0x1F70, - 0x03B50300: 0x1F72, - 0x03B70300: 0x1F74, - 0x03B90300: 0x1F76, - 0x03BF0300: 0x1F78, - 0x03C50300: 0x1F7A, - 0x03C90300: 0x1F7C, - 0x1F000345: 0x1F80, - 0x1F010345: 0x1F81, - 0x1F020345: 0x1F82, - 0x1F030345: 0x1F83, - 0x1F040345: 0x1F84, - 0x1F050345: 0x1F85, - 0x1F060345: 0x1F86, - 0x1F070345: 0x1F87, - 0x1F080345: 0x1F88, - 0x1F090345: 0x1F89, - 0x1F0A0345: 0x1F8A, - 0x1F0B0345: 0x1F8B, - 0x1F0C0345: 0x1F8C, - 0x1F0D0345: 0x1F8D, - 0x1F0E0345: 0x1F8E, - 0x1F0F0345: 0x1F8F, - 0x1F200345: 0x1F90, - 0x1F210345: 0x1F91, - 0x1F220345: 0x1F92, - 0x1F230345: 0x1F93, - 0x1F240345: 0x1F94, - 0x1F250345: 0x1F95, - 0x1F260345: 0x1F96, - 0x1F270345: 0x1F97, - 0x1F280345: 0x1F98, - 0x1F290345: 0x1F99, - 0x1F2A0345: 0x1F9A, - 0x1F2B0345: 0x1F9B, - 0x1F2C0345: 0x1F9C, - 0x1F2D0345: 0x1F9D, - 0x1F2E0345: 0x1F9E, - 0x1F2F0345: 0x1F9F, - 0x1F600345: 0x1FA0, - 0x1F610345: 0x1FA1, - 0x1F620345: 0x1FA2, - 0x1F630345: 0x1FA3, - 0x1F640345: 0x1FA4, - 0x1F650345: 0x1FA5, - 0x1F660345: 0x1FA6, - 0x1F670345: 0x1FA7, - 0x1F680345: 0x1FA8, - 0x1F690345: 0x1FA9, - 0x1F6A0345: 0x1FAA, - 0x1F6B0345: 0x1FAB, - 0x1F6C0345: 0x1FAC, - 0x1F6D0345: 0x1FAD, - 0x1F6E0345: 0x1FAE, - 0x1F6F0345: 0x1FAF, - 0x03B10306: 0x1FB0, - 0x03B10304: 0x1FB1, - 0x1F700345: 0x1FB2, - 0x03B10345: 0x1FB3, - 0x03AC0345: 0x1FB4, - 0x03B10342: 0x1FB6, - 0x1FB60345: 0x1FB7, - 0x03910306: 0x1FB8, - 0x03910304: 0x1FB9, - 0x03910300: 0x1FBA, - 0x03910345: 0x1FBC, - 0x00A80342: 0x1FC1, - 0x1F740345: 0x1FC2, - 0x03B70345: 0x1FC3, - 0x03AE0345: 0x1FC4, - 0x03B70342: 0x1FC6, - 0x1FC60345: 0x1FC7, - 0x03950300: 0x1FC8, - 0x03970300: 0x1FCA, - 0x03970345: 0x1FCC, - 0x1FBF0300: 0x1FCD, - 0x1FBF0301: 0x1FCE, - 0x1FBF0342: 0x1FCF, - 0x03B90306: 0x1FD0, - 0x03B90304: 0x1FD1, - 0x03CA0300: 0x1FD2, - 0x03B90342: 0x1FD6, - 0x03CA0342: 0x1FD7, - 0x03990306: 0x1FD8, - 0x03990304: 0x1FD9, - 0x03990300: 0x1FDA, - 0x1FFE0300: 0x1FDD, - 0x1FFE0301: 0x1FDE, - 0x1FFE0342: 0x1FDF, - 0x03C50306: 0x1FE0, - 0x03C50304: 0x1FE1, - 0x03CB0300: 0x1FE2, - 0x03C10313: 0x1FE4, - 0x03C10314: 0x1FE5, - 0x03C50342: 0x1FE6, - 0x03CB0342: 0x1FE7, - 0x03A50306: 0x1FE8, - 0x03A50304: 0x1FE9, - 0x03A50300: 0x1FEA, - 0x03A10314: 0x1FEC, - 0x00A80300: 0x1FED, - 0x1F7C0345: 0x1FF2, - 0x03C90345: 0x1FF3, - 0x03CE0345: 0x1FF4, - 0x03C90342: 0x1FF6, - 0x1FF60345: 0x1FF7, - 0x039F0300: 0x1FF8, - 0x03A90300: 0x1FFA, - 0x03A90345: 0x1FFC, - 0x21900338: 0x219A, - 0x21920338: 0x219B, - 0x21940338: 0x21AE, - 0x21D00338: 0x21CD, - 0x21D40338: 0x21CE, - 0x21D20338: 0x21CF, - 0x22030338: 0x2204, - 0x22080338: 0x2209, - 0x220B0338: 0x220C, - 0x22230338: 0x2224, - 0x22250338: 0x2226, - 0x223C0338: 0x2241, - 0x22430338: 0x2244, - 0x22450338: 0x2247, - 0x22480338: 0x2249, - 0x003D0338: 0x2260, - 0x22610338: 0x2262, - 0x224D0338: 0x226D, - 0x003C0338: 0x226E, - 0x003E0338: 0x226F, - 0x22640338: 0x2270, - 0x22650338: 0x2271, - 0x22720338: 0x2274, - 0x22730338: 0x2275, - 0x22760338: 0x2278, - 0x22770338: 0x2279, - 0x227A0338: 0x2280, - 0x227B0338: 0x2281, - 0x22820338: 0x2284, - 0x22830338: 0x2285, - 0x22860338: 0x2288, - 0x22870338: 0x2289, - 0x22A20338: 0x22AC, - 0x22A80338: 0x22AD, - 0x22A90338: 0x22AE, - 0x22AB0338: 0x22AF, - 0x227C0338: 0x22E0, - 0x227D0338: 0x22E1, - 0x22910338: 0x22E2, - 0x22920338: 0x22E3, - 0x22B20338: 0x22EA, - 0x22B30338: 0x22EB, - 0x22B40338: 0x22EC, - 0x22B50338: 0x22ED, - 0x304B3099: 0x304C, - 0x304D3099: 0x304E, - 0x304F3099: 0x3050, - 0x30513099: 0x3052, - 0x30533099: 0x3054, - 0x30553099: 0x3056, - 0x30573099: 0x3058, - 0x30593099: 0x305A, - 0x305B3099: 0x305C, - 0x305D3099: 0x305E, - 0x305F3099: 0x3060, - 0x30613099: 0x3062, - 0x30643099: 0x3065, - 0x30663099: 0x3067, - 0x30683099: 0x3069, - 0x306F3099: 0x3070, - 0x306F309A: 0x3071, - 0x30723099: 0x3073, - 0x3072309A: 0x3074, - 0x30753099: 0x3076, - 0x3075309A: 0x3077, - 0x30783099: 0x3079, - 0x3078309A: 0x307A, - 0x307B3099: 0x307C, - 0x307B309A: 0x307D, - 0x30463099: 0x3094, - 0x309D3099: 0x309E, - 0x30AB3099: 0x30AC, - 0x30AD3099: 0x30AE, - 0x30AF3099: 0x30B0, - 0x30B13099: 0x30B2, - 0x30B33099: 0x30B4, - 0x30B53099: 0x30B6, - 0x30B73099: 0x30B8, - 0x30B93099: 0x30BA, - 0x30BB3099: 0x30BC, - 0x30BD3099: 0x30BE, - 0x30BF3099: 0x30C0, - 0x30C13099: 0x30C2, - 0x30C43099: 0x30C5, - 0x30C63099: 0x30C7, - 0x30C83099: 0x30C9, - 0x30CF3099: 0x30D0, - 0x30CF309A: 0x30D1, - 0x30D23099: 0x30D3, - 0x30D2309A: 0x30D4, - 0x30D53099: 0x30D6, - 0x30D5309A: 0x30D7, - 0x30D83099: 0x30D9, - 0x30D8309A: 0x30DA, - 0x30DB3099: 0x30DC, - 0x30DB309A: 0x30DD, - 0x30A63099: 0x30F4, - 0x30EF3099: 0x30F7, - 0x30F03099: 0x30F8, - 0x30F13099: 0x30F9, - 0x30F23099: 0x30FA, - 0x30FD3099: 0x30FE, - 0x109910BA: 0x1109A, - 0x109B10BA: 0x1109C, - 0x10A510BA: 0x110AB, - 0x11311127: 0x1112E, - 0x11321127: 0x1112F, - 0x1347133E: 0x1134B, - 0x13471357: 0x1134C, - 0x14B914BA: 0x114BB, - 0x14B914B0: 0x114BC, - 0x14B914BD: 0x114BE, - 0x15B815AF: 0x115BA, - 0x15B915AF: 0x115BB, -} +var recompMap map[uint32]rune +var recompMapOnce sync.Once -// Total size of tables: 53KB (54006 bytes) +const recompMapPacked = "" + + "\x00A\x03\x00\x00\x00\x00\xc0" + // 0x00410300: 0x000000C0 + "\x00A\x03\x01\x00\x00\x00\xc1" + // 0x00410301: 0x000000C1 + "\x00A\x03\x02\x00\x00\x00\xc2" + // 0x00410302: 0x000000C2 + "\x00A\x03\x03\x00\x00\x00\xc3" + // 0x00410303: 0x000000C3 + "\x00A\x03\b\x00\x00\x00\xc4" + // 0x00410308: 0x000000C4 + "\x00A\x03\n\x00\x00\x00\xc5" + // 0x0041030A: 0x000000C5 + "\x00C\x03'\x00\x00\x00\xc7" + // 0x00430327: 0x000000C7 + "\x00E\x03\x00\x00\x00\x00\xc8" + // 0x00450300: 0x000000C8 + "\x00E\x03\x01\x00\x00\x00\xc9" + // 0x00450301: 0x000000C9 + "\x00E\x03\x02\x00\x00\x00\xca" + // 0x00450302: 0x000000CA + "\x00E\x03\b\x00\x00\x00\xcb" + // 0x00450308: 0x000000CB + "\x00I\x03\x00\x00\x00\x00\xcc" + // 0x00490300: 0x000000CC + "\x00I\x03\x01\x00\x00\x00\xcd" + // 0x00490301: 0x000000CD + "\x00I\x03\x02\x00\x00\x00\xce" + // 0x00490302: 0x000000CE + "\x00I\x03\b\x00\x00\x00\xcf" + // 0x00490308: 0x000000CF + "\x00N\x03\x03\x00\x00\x00\xd1" + // 0x004E0303: 0x000000D1 + "\x00O\x03\x00\x00\x00\x00\xd2" + // 0x004F0300: 0x000000D2 + "\x00O\x03\x01\x00\x00\x00\xd3" + // 0x004F0301: 0x000000D3 + "\x00O\x03\x02\x00\x00\x00\xd4" + // 0x004F0302: 0x000000D4 + "\x00O\x03\x03\x00\x00\x00\xd5" + // 0x004F0303: 0x000000D5 + "\x00O\x03\b\x00\x00\x00\xd6" + // 0x004F0308: 0x000000D6 + "\x00U\x03\x00\x00\x00\x00\xd9" + // 0x00550300: 0x000000D9 + "\x00U\x03\x01\x00\x00\x00\xda" + // 0x00550301: 0x000000DA + "\x00U\x03\x02\x00\x00\x00\xdb" + // 0x00550302: 0x000000DB + "\x00U\x03\b\x00\x00\x00\xdc" + // 0x00550308: 0x000000DC + "\x00Y\x03\x01\x00\x00\x00\xdd" + // 0x00590301: 0x000000DD + "\x00a\x03\x00\x00\x00\x00\xe0" + // 0x00610300: 0x000000E0 + "\x00a\x03\x01\x00\x00\x00\xe1" + // 0x00610301: 0x000000E1 + "\x00a\x03\x02\x00\x00\x00\xe2" + // 0x00610302: 0x000000E2 + "\x00a\x03\x03\x00\x00\x00\xe3" + // 0x00610303: 0x000000E3 + "\x00a\x03\b\x00\x00\x00\xe4" + // 0x00610308: 0x000000E4 + "\x00a\x03\n\x00\x00\x00\xe5" + // 0x0061030A: 0x000000E5 + "\x00c\x03'\x00\x00\x00\xe7" + // 0x00630327: 0x000000E7 + "\x00e\x03\x00\x00\x00\x00\xe8" + // 0x00650300: 0x000000E8 + "\x00e\x03\x01\x00\x00\x00\xe9" + // 0x00650301: 0x000000E9 + "\x00e\x03\x02\x00\x00\x00\xea" + // 0x00650302: 0x000000EA + "\x00e\x03\b\x00\x00\x00\xeb" + // 0x00650308: 0x000000EB + "\x00i\x03\x00\x00\x00\x00\xec" + // 0x00690300: 0x000000EC + "\x00i\x03\x01\x00\x00\x00\xed" + // 0x00690301: 0x000000ED + "\x00i\x03\x02\x00\x00\x00\xee" + // 0x00690302: 0x000000EE + "\x00i\x03\b\x00\x00\x00\xef" + // 0x00690308: 0x000000EF + "\x00n\x03\x03\x00\x00\x00\xf1" + // 0x006E0303: 0x000000F1 + "\x00o\x03\x00\x00\x00\x00\xf2" + // 0x006F0300: 0x000000F2 + "\x00o\x03\x01\x00\x00\x00\xf3" + // 0x006F0301: 0x000000F3 + "\x00o\x03\x02\x00\x00\x00\xf4" + // 0x006F0302: 0x000000F4 + "\x00o\x03\x03\x00\x00\x00\xf5" + // 0x006F0303: 0x000000F5 + "\x00o\x03\b\x00\x00\x00\xf6" + // 0x006F0308: 0x000000F6 + "\x00u\x03\x00\x00\x00\x00\xf9" + // 0x00750300: 0x000000F9 + "\x00u\x03\x01\x00\x00\x00\xfa" + // 0x00750301: 0x000000FA + "\x00u\x03\x02\x00\x00\x00\xfb" + // 0x00750302: 0x000000FB + "\x00u\x03\b\x00\x00\x00\xfc" + // 0x00750308: 0x000000FC + "\x00y\x03\x01\x00\x00\x00\xfd" + // 0x00790301: 0x000000FD + "\x00y\x03\b\x00\x00\x00\xff" + // 0x00790308: 0x000000FF + "\x00A\x03\x04\x00\x00\x01\x00" + // 0x00410304: 0x00000100 + "\x00a\x03\x04\x00\x00\x01\x01" + // 0x00610304: 0x00000101 + "\x00A\x03\x06\x00\x00\x01\x02" + // 0x00410306: 0x00000102 + "\x00a\x03\x06\x00\x00\x01\x03" + // 0x00610306: 0x00000103 + "\x00A\x03(\x00\x00\x01\x04" + // 0x00410328: 0x00000104 + "\x00a\x03(\x00\x00\x01\x05" + // 0x00610328: 0x00000105 + "\x00C\x03\x01\x00\x00\x01\x06" + // 0x00430301: 0x00000106 + "\x00c\x03\x01\x00\x00\x01\a" + // 0x00630301: 0x00000107 + "\x00C\x03\x02\x00\x00\x01\b" + // 0x00430302: 0x00000108 + "\x00c\x03\x02\x00\x00\x01\t" + // 0x00630302: 0x00000109 + "\x00C\x03\a\x00\x00\x01\n" + // 0x00430307: 0x0000010A + "\x00c\x03\a\x00\x00\x01\v" + // 0x00630307: 0x0000010B + "\x00C\x03\f\x00\x00\x01\f" + // 0x0043030C: 0x0000010C + "\x00c\x03\f\x00\x00\x01\r" + // 0x0063030C: 0x0000010D + "\x00D\x03\f\x00\x00\x01\x0e" + // 0x0044030C: 0x0000010E + "\x00d\x03\f\x00\x00\x01\x0f" + // 0x0064030C: 0x0000010F + "\x00E\x03\x04\x00\x00\x01\x12" + // 0x00450304: 0x00000112 + "\x00e\x03\x04\x00\x00\x01\x13" + // 0x00650304: 0x00000113 + "\x00E\x03\x06\x00\x00\x01\x14" + // 0x00450306: 0x00000114 + "\x00e\x03\x06\x00\x00\x01\x15" + // 0x00650306: 0x00000115 + "\x00E\x03\a\x00\x00\x01\x16" + // 0x00450307: 0x00000116 + "\x00e\x03\a\x00\x00\x01\x17" + // 0x00650307: 0x00000117 + "\x00E\x03(\x00\x00\x01\x18" + // 0x00450328: 0x00000118 + "\x00e\x03(\x00\x00\x01\x19" + // 0x00650328: 0x00000119 + "\x00E\x03\f\x00\x00\x01\x1a" + // 0x0045030C: 0x0000011A + "\x00e\x03\f\x00\x00\x01\x1b" + // 0x0065030C: 0x0000011B + "\x00G\x03\x02\x00\x00\x01\x1c" + // 0x00470302: 0x0000011C + "\x00g\x03\x02\x00\x00\x01\x1d" + // 0x00670302: 0x0000011D + "\x00G\x03\x06\x00\x00\x01\x1e" + // 0x00470306: 0x0000011E + "\x00g\x03\x06\x00\x00\x01\x1f" + // 0x00670306: 0x0000011F + "\x00G\x03\a\x00\x00\x01 " + // 0x00470307: 0x00000120 + "\x00g\x03\a\x00\x00\x01!" + // 0x00670307: 0x00000121 + "\x00G\x03'\x00\x00\x01\"" + // 0x00470327: 0x00000122 + "\x00g\x03'\x00\x00\x01#" + // 0x00670327: 0x00000123 + "\x00H\x03\x02\x00\x00\x01$" + // 0x00480302: 0x00000124 + "\x00h\x03\x02\x00\x00\x01%" + // 0x00680302: 0x00000125 + "\x00I\x03\x03\x00\x00\x01(" + // 0x00490303: 0x00000128 + "\x00i\x03\x03\x00\x00\x01)" + // 0x00690303: 0x00000129 + "\x00I\x03\x04\x00\x00\x01*" + // 0x00490304: 0x0000012A + "\x00i\x03\x04\x00\x00\x01+" + // 0x00690304: 0x0000012B + "\x00I\x03\x06\x00\x00\x01," + // 0x00490306: 0x0000012C + "\x00i\x03\x06\x00\x00\x01-" + // 0x00690306: 0x0000012D + "\x00I\x03(\x00\x00\x01." + // 0x00490328: 0x0000012E + "\x00i\x03(\x00\x00\x01/" + // 0x00690328: 0x0000012F + "\x00I\x03\a\x00\x00\x010" + // 0x00490307: 0x00000130 + "\x00J\x03\x02\x00\x00\x014" + // 0x004A0302: 0x00000134 + "\x00j\x03\x02\x00\x00\x015" + // 0x006A0302: 0x00000135 + "\x00K\x03'\x00\x00\x016" + // 0x004B0327: 0x00000136 + "\x00k\x03'\x00\x00\x017" + // 0x006B0327: 0x00000137 + "\x00L\x03\x01\x00\x00\x019" + // 0x004C0301: 0x00000139 + "\x00l\x03\x01\x00\x00\x01:" + // 0x006C0301: 0x0000013A + "\x00L\x03'\x00\x00\x01;" + // 0x004C0327: 0x0000013B + "\x00l\x03'\x00\x00\x01<" + // 0x006C0327: 0x0000013C + "\x00L\x03\f\x00\x00\x01=" + // 0x004C030C: 0x0000013D + "\x00l\x03\f\x00\x00\x01>" + // 0x006C030C: 0x0000013E + "\x00N\x03\x01\x00\x00\x01C" + // 0x004E0301: 0x00000143 + "\x00n\x03\x01\x00\x00\x01D" + // 0x006E0301: 0x00000144 + "\x00N\x03'\x00\x00\x01E" + // 0x004E0327: 0x00000145 + "\x00n\x03'\x00\x00\x01F" + // 0x006E0327: 0x00000146 + "\x00N\x03\f\x00\x00\x01G" + // 0x004E030C: 0x00000147 + "\x00n\x03\f\x00\x00\x01H" + // 0x006E030C: 0x00000148 + "\x00O\x03\x04\x00\x00\x01L" + // 0x004F0304: 0x0000014C + "\x00o\x03\x04\x00\x00\x01M" + // 0x006F0304: 0x0000014D + "\x00O\x03\x06\x00\x00\x01N" + // 0x004F0306: 0x0000014E + "\x00o\x03\x06\x00\x00\x01O" + // 0x006F0306: 0x0000014F + "\x00O\x03\v\x00\x00\x01P" + // 0x004F030B: 0x00000150 + "\x00o\x03\v\x00\x00\x01Q" + // 0x006F030B: 0x00000151 + "\x00R\x03\x01\x00\x00\x01T" + // 0x00520301: 0x00000154 + "\x00r\x03\x01\x00\x00\x01U" + // 0x00720301: 0x00000155 + "\x00R\x03'\x00\x00\x01V" + // 0x00520327: 0x00000156 + "\x00r\x03'\x00\x00\x01W" + // 0x00720327: 0x00000157 + "\x00R\x03\f\x00\x00\x01X" + // 0x0052030C: 0x00000158 + "\x00r\x03\f\x00\x00\x01Y" + // 0x0072030C: 0x00000159 + "\x00S\x03\x01\x00\x00\x01Z" + // 0x00530301: 0x0000015A + "\x00s\x03\x01\x00\x00\x01[" + // 0x00730301: 0x0000015B + "\x00S\x03\x02\x00\x00\x01\\" + // 0x00530302: 0x0000015C + "\x00s\x03\x02\x00\x00\x01]" + // 0x00730302: 0x0000015D + "\x00S\x03'\x00\x00\x01^" + // 0x00530327: 0x0000015E + "\x00s\x03'\x00\x00\x01_" + // 0x00730327: 0x0000015F + "\x00S\x03\f\x00\x00\x01`" + // 0x0053030C: 0x00000160 + "\x00s\x03\f\x00\x00\x01a" + // 0x0073030C: 0x00000161 + "\x00T\x03'\x00\x00\x01b" + // 0x00540327: 0x00000162 + "\x00t\x03'\x00\x00\x01c" + // 0x00740327: 0x00000163 + "\x00T\x03\f\x00\x00\x01d" + // 0x0054030C: 0x00000164 + "\x00t\x03\f\x00\x00\x01e" + // 0x0074030C: 0x00000165 + "\x00U\x03\x03\x00\x00\x01h" + // 0x00550303: 0x00000168 + "\x00u\x03\x03\x00\x00\x01i" + // 0x00750303: 0x00000169 + "\x00U\x03\x04\x00\x00\x01j" + // 0x00550304: 0x0000016A + "\x00u\x03\x04\x00\x00\x01k" + // 0x00750304: 0x0000016B + "\x00U\x03\x06\x00\x00\x01l" + // 0x00550306: 0x0000016C + "\x00u\x03\x06\x00\x00\x01m" + // 0x00750306: 0x0000016D + "\x00U\x03\n\x00\x00\x01n" + // 0x0055030A: 0x0000016E + "\x00u\x03\n\x00\x00\x01o" + // 0x0075030A: 0x0000016F + "\x00U\x03\v\x00\x00\x01p" + // 0x0055030B: 0x00000170 + "\x00u\x03\v\x00\x00\x01q" + // 0x0075030B: 0x00000171 + "\x00U\x03(\x00\x00\x01r" + // 0x00550328: 0x00000172 + "\x00u\x03(\x00\x00\x01s" + // 0x00750328: 0x00000173 + "\x00W\x03\x02\x00\x00\x01t" + // 0x00570302: 0x00000174 + "\x00w\x03\x02\x00\x00\x01u" + // 0x00770302: 0x00000175 + "\x00Y\x03\x02\x00\x00\x01v" + // 0x00590302: 0x00000176 + "\x00y\x03\x02\x00\x00\x01w" + // 0x00790302: 0x00000177 + "\x00Y\x03\b\x00\x00\x01x" + // 0x00590308: 0x00000178 + "\x00Z\x03\x01\x00\x00\x01y" + // 0x005A0301: 0x00000179 + "\x00z\x03\x01\x00\x00\x01z" + // 0x007A0301: 0x0000017A + "\x00Z\x03\a\x00\x00\x01{" + // 0x005A0307: 0x0000017B + "\x00z\x03\a\x00\x00\x01|" + // 0x007A0307: 0x0000017C + "\x00Z\x03\f\x00\x00\x01}" + // 0x005A030C: 0x0000017D + "\x00z\x03\f\x00\x00\x01~" + // 0x007A030C: 0x0000017E + "\x00O\x03\x1b\x00\x00\x01\xa0" + // 0x004F031B: 0x000001A0 + "\x00o\x03\x1b\x00\x00\x01\xa1" + // 0x006F031B: 0x000001A1 + "\x00U\x03\x1b\x00\x00\x01\xaf" + // 0x0055031B: 0x000001AF + "\x00u\x03\x1b\x00\x00\x01\xb0" + // 0x0075031B: 0x000001B0 + "\x00A\x03\f\x00\x00\x01\xcd" + // 0x0041030C: 0x000001CD + "\x00a\x03\f\x00\x00\x01\xce" + // 0x0061030C: 0x000001CE + "\x00I\x03\f\x00\x00\x01\xcf" + // 0x0049030C: 0x000001CF + "\x00i\x03\f\x00\x00\x01\xd0" + // 0x0069030C: 0x000001D0 + "\x00O\x03\f\x00\x00\x01\xd1" + // 0x004F030C: 0x000001D1 + "\x00o\x03\f\x00\x00\x01\xd2" + // 0x006F030C: 0x000001D2 + "\x00U\x03\f\x00\x00\x01\xd3" + // 0x0055030C: 0x000001D3 + "\x00u\x03\f\x00\x00\x01\xd4" + // 0x0075030C: 0x000001D4 + "\x00\xdc\x03\x04\x00\x00\x01\xd5" + // 0x00DC0304: 0x000001D5 + "\x00\xfc\x03\x04\x00\x00\x01\xd6" + // 0x00FC0304: 0x000001D6 + "\x00\xdc\x03\x01\x00\x00\x01\xd7" + // 0x00DC0301: 0x000001D7 + "\x00\xfc\x03\x01\x00\x00\x01\xd8" + // 0x00FC0301: 0x000001D8 + "\x00\xdc\x03\f\x00\x00\x01\xd9" + // 0x00DC030C: 0x000001D9 + "\x00\xfc\x03\f\x00\x00\x01\xda" + // 0x00FC030C: 0x000001DA + "\x00\xdc\x03\x00\x00\x00\x01\xdb" + // 0x00DC0300: 0x000001DB + "\x00\xfc\x03\x00\x00\x00\x01\xdc" + // 0x00FC0300: 0x000001DC + "\x00\xc4\x03\x04\x00\x00\x01\xde" + // 0x00C40304: 0x000001DE + "\x00\xe4\x03\x04\x00\x00\x01\xdf" + // 0x00E40304: 0x000001DF + "\x02&\x03\x04\x00\x00\x01\xe0" + // 0x02260304: 0x000001E0 + "\x02'\x03\x04\x00\x00\x01\xe1" + // 0x02270304: 0x000001E1 + "\x00\xc6\x03\x04\x00\x00\x01\xe2" + // 0x00C60304: 0x000001E2 + "\x00\xe6\x03\x04\x00\x00\x01\xe3" + // 0x00E60304: 0x000001E3 + "\x00G\x03\f\x00\x00\x01\xe6" + // 0x0047030C: 0x000001E6 + "\x00g\x03\f\x00\x00\x01\xe7" + // 0x0067030C: 0x000001E7 + "\x00K\x03\f\x00\x00\x01\xe8" + // 0x004B030C: 0x000001E8 + "\x00k\x03\f\x00\x00\x01\xe9" + // 0x006B030C: 0x000001E9 + "\x00O\x03(\x00\x00\x01\xea" + // 0x004F0328: 0x000001EA + "\x00o\x03(\x00\x00\x01\xeb" + // 0x006F0328: 0x000001EB + "\x01\xea\x03\x04\x00\x00\x01\xec" + // 0x01EA0304: 0x000001EC + "\x01\xeb\x03\x04\x00\x00\x01\xed" + // 0x01EB0304: 0x000001ED + "\x01\xb7\x03\f\x00\x00\x01\xee" + // 0x01B7030C: 0x000001EE + "\x02\x92\x03\f\x00\x00\x01\xef" + // 0x0292030C: 0x000001EF + "\x00j\x03\f\x00\x00\x01\xf0" + // 0x006A030C: 0x000001F0 + "\x00G\x03\x01\x00\x00\x01\xf4" + // 0x00470301: 0x000001F4 + "\x00g\x03\x01\x00\x00\x01\xf5" + // 0x00670301: 0x000001F5 + "\x00N\x03\x00\x00\x00\x01\xf8" + // 0x004E0300: 0x000001F8 + "\x00n\x03\x00\x00\x00\x01\xf9" + // 0x006E0300: 0x000001F9 + "\x00\xc5\x03\x01\x00\x00\x01\xfa" + // 0x00C50301: 0x000001FA + "\x00\xe5\x03\x01\x00\x00\x01\xfb" + // 0x00E50301: 0x000001FB + "\x00\xc6\x03\x01\x00\x00\x01\xfc" + // 0x00C60301: 0x000001FC + "\x00\xe6\x03\x01\x00\x00\x01\xfd" + // 0x00E60301: 0x000001FD + "\x00\xd8\x03\x01\x00\x00\x01\xfe" + // 0x00D80301: 0x000001FE + "\x00\xf8\x03\x01\x00\x00\x01\xff" + // 0x00F80301: 0x000001FF + "\x00A\x03\x0f\x00\x00\x02\x00" + // 0x0041030F: 0x00000200 + "\x00a\x03\x0f\x00\x00\x02\x01" + // 0x0061030F: 0x00000201 + "\x00A\x03\x11\x00\x00\x02\x02" + // 0x00410311: 0x00000202 + "\x00a\x03\x11\x00\x00\x02\x03" + // 0x00610311: 0x00000203 + "\x00E\x03\x0f\x00\x00\x02\x04" + // 0x0045030F: 0x00000204 + "\x00e\x03\x0f\x00\x00\x02\x05" + // 0x0065030F: 0x00000205 + "\x00E\x03\x11\x00\x00\x02\x06" + // 0x00450311: 0x00000206 + "\x00e\x03\x11\x00\x00\x02\a" + // 0x00650311: 0x00000207 + "\x00I\x03\x0f\x00\x00\x02\b" + // 0x0049030F: 0x00000208 + "\x00i\x03\x0f\x00\x00\x02\t" + // 0x0069030F: 0x00000209 + "\x00I\x03\x11\x00\x00\x02\n" + // 0x00490311: 0x0000020A + "\x00i\x03\x11\x00\x00\x02\v" + // 0x00690311: 0x0000020B + "\x00O\x03\x0f\x00\x00\x02\f" + // 0x004F030F: 0x0000020C + "\x00o\x03\x0f\x00\x00\x02\r" + // 0x006F030F: 0x0000020D + "\x00O\x03\x11\x00\x00\x02\x0e" + // 0x004F0311: 0x0000020E + "\x00o\x03\x11\x00\x00\x02\x0f" + // 0x006F0311: 0x0000020F + "\x00R\x03\x0f\x00\x00\x02\x10" + // 0x0052030F: 0x00000210 + "\x00r\x03\x0f\x00\x00\x02\x11" + // 0x0072030F: 0x00000211 + "\x00R\x03\x11\x00\x00\x02\x12" + // 0x00520311: 0x00000212 + "\x00r\x03\x11\x00\x00\x02\x13" + // 0x00720311: 0x00000213 + "\x00U\x03\x0f\x00\x00\x02\x14" + // 0x0055030F: 0x00000214 + "\x00u\x03\x0f\x00\x00\x02\x15" + // 0x0075030F: 0x00000215 + "\x00U\x03\x11\x00\x00\x02\x16" + // 0x00550311: 0x00000216 + "\x00u\x03\x11\x00\x00\x02\x17" + // 0x00750311: 0x00000217 + "\x00S\x03&\x00\x00\x02\x18" + // 0x00530326: 0x00000218 + "\x00s\x03&\x00\x00\x02\x19" + // 0x00730326: 0x00000219 + "\x00T\x03&\x00\x00\x02\x1a" + // 0x00540326: 0x0000021A + "\x00t\x03&\x00\x00\x02\x1b" + // 0x00740326: 0x0000021B + "\x00H\x03\f\x00\x00\x02\x1e" + // 0x0048030C: 0x0000021E + "\x00h\x03\f\x00\x00\x02\x1f" + // 0x0068030C: 0x0000021F + "\x00A\x03\a\x00\x00\x02&" + // 0x00410307: 0x00000226 + "\x00a\x03\a\x00\x00\x02'" + // 0x00610307: 0x00000227 + "\x00E\x03'\x00\x00\x02(" + // 0x00450327: 0x00000228 + "\x00e\x03'\x00\x00\x02)" + // 0x00650327: 0x00000229 + "\x00\xd6\x03\x04\x00\x00\x02*" + // 0x00D60304: 0x0000022A + "\x00\xf6\x03\x04\x00\x00\x02+" + // 0x00F60304: 0x0000022B + "\x00\xd5\x03\x04\x00\x00\x02," + // 0x00D50304: 0x0000022C + "\x00\xf5\x03\x04\x00\x00\x02-" + // 0x00F50304: 0x0000022D + "\x00O\x03\a\x00\x00\x02." + // 0x004F0307: 0x0000022E + "\x00o\x03\a\x00\x00\x02/" + // 0x006F0307: 0x0000022F + "\x02.\x03\x04\x00\x00\x020" + // 0x022E0304: 0x00000230 + "\x02/\x03\x04\x00\x00\x021" + // 0x022F0304: 0x00000231 + "\x00Y\x03\x04\x00\x00\x022" + // 0x00590304: 0x00000232 + "\x00y\x03\x04\x00\x00\x023" + // 0x00790304: 0x00000233 + "\x00\xa8\x03\x01\x00\x00\x03\x85" + // 0x00A80301: 0x00000385 + "\x03\x91\x03\x01\x00\x00\x03\x86" + // 0x03910301: 0x00000386 + "\x03\x95\x03\x01\x00\x00\x03\x88" + // 0x03950301: 0x00000388 + "\x03\x97\x03\x01\x00\x00\x03\x89" + // 0x03970301: 0x00000389 + "\x03\x99\x03\x01\x00\x00\x03\x8a" + // 0x03990301: 0x0000038A + "\x03\x9f\x03\x01\x00\x00\x03\x8c" + // 0x039F0301: 0x0000038C + "\x03\xa5\x03\x01\x00\x00\x03\x8e" + // 0x03A50301: 0x0000038E + "\x03\xa9\x03\x01\x00\x00\x03\x8f" + // 0x03A90301: 0x0000038F + "\x03\xca\x03\x01\x00\x00\x03\x90" + // 0x03CA0301: 0x00000390 + "\x03\x99\x03\b\x00\x00\x03\xaa" + // 0x03990308: 0x000003AA + "\x03\xa5\x03\b\x00\x00\x03\xab" + // 0x03A50308: 0x000003AB + "\x03\xb1\x03\x01\x00\x00\x03\xac" + // 0x03B10301: 0x000003AC + "\x03\xb5\x03\x01\x00\x00\x03\xad" + // 0x03B50301: 0x000003AD + "\x03\xb7\x03\x01\x00\x00\x03\xae" + // 0x03B70301: 0x000003AE + "\x03\xb9\x03\x01\x00\x00\x03\xaf" + // 0x03B90301: 0x000003AF + "\x03\xcb\x03\x01\x00\x00\x03\xb0" + // 0x03CB0301: 0x000003B0 + "\x03\xb9\x03\b\x00\x00\x03\xca" + // 0x03B90308: 0x000003CA + "\x03\xc5\x03\b\x00\x00\x03\xcb" + // 0x03C50308: 0x000003CB + "\x03\xbf\x03\x01\x00\x00\x03\xcc" + // 0x03BF0301: 0x000003CC + "\x03\xc5\x03\x01\x00\x00\x03\xcd" + // 0x03C50301: 0x000003CD + "\x03\xc9\x03\x01\x00\x00\x03\xce" + // 0x03C90301: 0x000003CE + "\x03\xd2\x03\x01\x00\x00\x03\xd3" + // 0x03D20301: 0x000003D3 + "\x03\xd2\x03\b\x00\x00\x03\xd4" + // 0x03D20308: 0x000003D4 + "\x04\x15\x03\x00\x00\x00\x04\x00" + // 0x04150300: 0x00000400 + "\x04\x15\x03\b\x00\x00\x04\x01" + // 0x04150308: 0x00000401 + "\x04\x13\x03\x01\x00\x00\x04\x03" + // 0x04130301: 0x00000403 + "\x04\x06\x03\b\x00\x00\x04\a" + // 0x04060308: 0x00000407 + "\x04\x1a\x03\x01\x00\x00\x04\f" + // 0x041A0301: 0x0000040C + "\x04\x18\x03\x00\x00\x00\x04\r" + // 0x04180300: 0x0000040D + "\x04#\x03\x06\x00\x00\x04\x0e" + // 0x04230306: 0x0000040E + "\x04\x18\x03\x06\x00\x00\x04\x19" + // 0x04180306: 0x00000419 + "\x048\x03\x06\x00\x00\x049" + // 0x04380306: 0x00000439 + "\x045\x03\x00\x00\x00\x04P" + // 0x04350300: 0x00000450 + "\x045\x03\b\x00\x00\x04Q" + // 0x04350308: 0x00000451 + "\x043\x03\x01\x00\x00\x04S" + // 0x04330301: 0x00000453 + "\x04V\x03\b\x00\x00\x04W" + // 0x04560308: 0x00000457 + "\x04:\x03\x01\x00\x00\x04\\" + // 0x043A0301: 0x0000045C + "\x048\x03\x00\x00\x00\x04]" + // 0x04380300: 0x0000045D + "\x04C\x03\x06\x00\x00\x04^" + // 0x04430306: 0x0000045E + "\x04t\x03\x0f\x00\x00\x04v" + // 0x0474030F: 0x00000476 + "\x04u\x03\x0f\x00\x00\x04w" + // 0x0475030F: 0x00000477 + "\x04\x16\x03\x06\x00\x00\x04\xc1" + // 0x04160306: 0x000004C1 + "\x046\x03\x06\x00\x00\x04\xc2" + // 0x04360306: 0x000004C2 + "\x04\x10\x03\x06\x00\x00\x04\xd0" + // 0x04100306: 0x000004D0 + "\x040\x03\x06\x00\x00\x04\xd1" + // 0x04300306: 0x000004D1 + "\x04\x10\x03\b\x00\x00\x04\xd2" + // 0x04100308: 0x000004D2 + "\x040\x03\b\x00\x00\x04\xd3" + // 0x04300308: 0x000004D3 + "\x04\x15\x03\x06\x00\x00\x04\xd6" + // 0x04150306: 0x000004D6 + "\x045\x03\x06\x00\x00\x04\xd7" + // 0x04350306: 0x000004D7 + "\x04\xd8\x03\b\x00\x00\x04\xda" + // 0x04D80308: 0x000004DA + "\x04\xd9\x03\b\x00\x00\x04\xdb" + // 0x04D90308: 0x000004DB + "\x04\x16\x03\b\x00\x00\x04\xdc" + // 0x04160308: 0x000004DC + "\x046\x03\b\x00\x00\x04\xdd" + // 0x04360308: 0x000004DD + "\x04\x17\x03\b\x00\x00\x04\xde" + // 0x04170308: 0x000004DE + "\x047\x03\b\x00\x00\x04\xdf" + // 0x04370308: 0x000004DF + "\x04\x18\x03\x04\x00\x00\x04\xe2" + // 0x04180304: 0x000004E2 + "\x048\x03\x04\x00\x00\x04\xe3" + // 0x04380304: 0x000004E3 + "\x04\x18\x03\b\x00\x00\x04\xe4" + // 0x04180308: 0x000004E4 + "\x048\x03\b\x00\x00\x04\xe5" + // 0x04380308: 0x000004E5 + "\x04\x1e\x03\b\x00\x00\x04\xe6" + // 0x041E0308: 0x000004E6 + "\x04>\x03\b\x00\x00\x04\xe7" + // 0x043E0308: 0x000004E7 + "\x04\xe8\x03\b\x00\x00\x04\xea" + // 0x04E80308: 0x000004EA + "\x04\xe9\x03\b\x00\x00\x04\xeb" + // 0x04E90308: 0x000004EB + "\x04-\x03\b\x00\x00\x04\xec" + // 0x042D0308: 0x000004EC + "\x04M\x03\b\x00\x00\x04\xed" + // 0x044D0308: 0x000004ED + "\x04#\x03\x04\x00\x00\x04\xee" + // 0x04230304: 0x000004EE + "\x04C\x03\x04\x00\x00\x04\xef" + // 0x04430304: 0x000004EF + "\x04#\x03\b\x00\x00\x04\xf0" + // 0x04230308: 0x000004F0 + "\x04C\x03\b\x00\x00\x04\xf1" + // 0x04430308: 0x000004F1 + "\x04#\x03\v\x00\x00\x04\xf2" + // 0x0423030B: 0x000004F2 + "\x04C\x03\v\x00\x00\x04\xf3" + // 0x0443030B: 0x000004F3 + "\x04'\x03\b\x00\x00\x04\xf4" + // 0x04270308: 0x000004F4 + "\x04G\x03\b\x00\x00\x04\xf5" + // 0x04470308: 0x000004F5 + "\x04+\x03\b\x00\x00\x04\xf8" + // 0x042B0308: 0x000004F8 + "\x04K\x03\b\x00\x00\x04\xf9" + // 0x044B0308: 0x000004F9 + "\x06'\x06S\x00\x00\x06\"" + // 0x06270653: 0x00000622 + "\x06'\x06T\x00\x00\x06#" + // 0x06270654: 0x00000623 + "\x06H\x06T\x00\x00\x06$" + // 0x06480654: 0x00000624 + "\x06'\x06U\x00\x00\x06%" + // 0x06270655: 0x00000625 + "\x06J\x06T\x00\x00\x06&" + // 0x064A0654: 0x00000626 + "\x06\xd5\x06T\x00\x00\x06\xc0" + // 0x06D50654: 0x000006C0 + "\x06\xc1\x06T\x00\x00\x06\xc2" + // 0x06C10654: 0x000006C2 + "\x06\xd2\x06T\x00\x00\x06\xd3" + // 0x06D20654: 0x000006D3 + "\t(\t<\x00\x00\t)" + // 0x0928093C: 0x00000929 + "\t0\t<\x00\x00\t1" + // 0x0930093C: 0x00000931 + "\t3\t<\x00\x00\t4" + // 0x0933093C: 0x00000934 + "\t\xc7\t\xbe\x00\x00\t\xcb" + // 0x09C709BE: 0x000009CB + "\t\xc7\t\xd7\x00\x00\t\xcc" + // 0x09C709D7: 0x000009CC + "\vG\vV\x00\x00\vH" + // 0x0B470B56: 0x00000B48 + "\vG\v>\x00\x00\vK" + // 0x0B470B3E: 0x00000B4B + "\vG\vW\x00\x00\vL" + // 0x0B470B57: 0x00000B4C + "\v\x92\v\xd7\x00\x00\v\x94" + // 0x0B920BD7: 0x00000B94 + "\v\xc6\v\xbe\x00\x00\v\xca" + // 0x0BC60BBE: 0x00000BCA + "\v\xc7\v\xbe\x00\x00\v\xcb" + // 0x0BC70BBE: 0x00000BCB + "\v\xc6\v\xd7\x00\x00\v\xcc" + // 0x0BC60BD7: 0x00000BCC + "\fF\fV\x00\x00\fH" + // 0x0C460C56: 0x00000C48 + "\f\xbf\f\xd5\x00\x00\f\xc0" + // 0x0CBF0CD5: 0x00000CC0 + "\f\xc6\f\xd5\x00\x00\f\xc7" + // 0x0CC60CD5: 0x00000CC7 + "\f\xc6\f\xd6\x00\x00\f\xc8" + // 0x0CC60CD6: 0x00000CC8 + "\f\xc6\f\xc2\x00\x00\f\xca" + // 0x0CC60CC2: 0x00000CCA + "\f\xca\f\xd5\x00\x00\f\xcb" + // 0x0CCA0CD5: 0x00000CCB + "\rF\r>\x00\x00\rJ" + // 0x0D460D3E: 0x00000D4A + "\rG\r>\x00\x00\rK" + // 0x0D470D3E: 0x00000D4B + "\rF\rW\x00\x00\rL" + // 0x0D460D57: 0x00000D4C + "\r\xd9\r\xca\x00\x00\r\xda" + // 0x0DD90DCA: 0x00000DDA + "\r\xd9\r\xcf\x00\x00\r\xdc" + // 0x0DD90DCF: 0x00000DDC + "\r\xdc\r\xca\x00\x00\r\xdd" + // 0x0DDC0DCA: 0x00000DDD + "\r\xd9\r\xdf\x00\x00\r\xde" + // 0x0DD90DDF: 0x00000DDE + "\x10%\x10.\x00\x00\x10&" + // 0x1025102E: 0x00001026 + "\x1b\x05\x1b5\x00\x00\x1b\x06" + // 0x1B051B35: 0x00001B06 + "\x1b\a\x1b5\x00\x00\x1b\b" + // 0x1B071B35: 0x00001B08 + "\x1b\t\x1b5\x00\x00\x1b\n" + // 0x1B091B35: 0x00001B0A + "\x1b\v\x1b5\x00\x00\x1b\f" + // 0x1B0B1B35: 0x00001B0C + "\x1b\r\x1b5\x00\x00\x1b\x0e" + // 0x1B0D1B35: 0x00001B0E + "\x1b\x11\x1b5\x00\x00\x1b\x12" + // 0x1B111B35: 0x00001B12 + "\x1b:\x1b5\x00\x00\x1b;" + // 0x1B3A1B35: 0x00001B3B + "\x1b<\x1b5\x00\x00\x1b=" + // 0x1B3C1B35: 0x00001B3D + "\x1b>\x1b5\x00\x00\x1b@" + // 0x1B3E1B35: 0x00001B40 + "\x1b?\x1b5\x00\x00\x1bA" + // 0x1B3F1B35: 0x00001B41 + "\x1bB\x1b5\x00\x00\x1bC" + // 0x1B421B35: 0x00001B43 + "\x00A\x03%\x00\x00\x1e\x00" + // 0x00410325: 0x00001E00 + "\x00a\x03%\x00\x00\x1e\x01" + // 0x00610325: 0x00001E01 + "\x00B\x03\a\x00\x00\x1e\x02" + // 0x00420307: 0x00001E02 + "\x00b\x03\a\x00\x00\x1e\x03" + // 0x00620307: 0x00001E03 + "\x00B\x03#\x00\x00\x1e\x04" + // 0x00420323: 0x00001E04 + "\x00b\x03#\x00\x00\x1e\x05" + // 0x00620323: 0x00001E05 + "\x00B\x031\x00\x00\x1e\x06" + // 0x00420331: 0x00001E06 + "\x00b\x031\x00\x00\x1e\a" + // 0x00620331: 0x00001E07 + "\x00\xc7\x03\x01\x00\x00\x1e\b" + // 0x00C70301: 0x00001E08 + "\x00\xe7\x03\x01\x00\x00\x1e\t" + // 0x00E70301: 0x00001E09 + "\x00D\x03\a\x00\x00\x1e\n" + // 0x00440307: 0x00001E0A + "\x00d\x03\a\x00\x00\x1e\v" + // 0x00640307: 0x00001E0B + "\x00D\x03#\x00\x00\x1e\f" + // 0x00440323: 0x00001E0C + "\x00d\x03#\x00\x00\x1e\r" + // 0x00640323: 0x00001E0D + "\x00D\x031\x00\x00\x1e\x0e" + // 0x00440331: 0x00001E0E + "\x00d\x031\x00\x00\x1e\x0f" + // 0x00640331: 0x00001E0F + "\x00D\x03'\x00\x00\x1e\x10" + // 0x00440327: 0x00001E10 + "\x00d\x03'\x00\x00\x1e\x11" + // 0x00640327: 0x00001E11 + "\x00D\x03-\x00\x00\x1e\x12" + // 0x0044032D: 0x00001E12 + "\x00d\x03-\x00\x00\x1e\x13" + // 0x0064032D: 0x00001E13 + "\x01\x12\x03\x00\x00\x00\x1e\x14" + // 0x01120300: 0x00001E14 + "\x01\x13\x03\x00\x00\x00\x1e\x15" + // 0x01130300: 0x00001E15 + "\x01\x12\x03\x01\x00\x00\x1e\x16" + // 0x01120301: 0x00001E16 + "\x01\x13\x03\x01\x00\x00\x1e\x17" + // 0x01130301: 0x00001E17 + "\x00E\x03-\x00\x00\x1e\x18" + // 0x0045032D: 0x00001E18 + "\x00e\x03-\x00\x00\x1e\x19" + // 0x0065032D: 0x00001E19 + "\x00E\x030\x00\x00\x1e\x1a" + // 0x00450330: 0x00001E1A + "\x00e\x030\x00\x00\x1e\x1b" + // 0x00650330: 0x00001E1B + "\x02(\x03\x06\x00\x00\x1e\x1c" + // 0x02280306: 0x00001E1C + "\x02)\x03\x06\x00\x00\x1e\x1d" + // 0x02290306: 0x00001E1D + "\x00F\x03\a\x00\x00\x1e\x1e" + // 0x00460307: 0x00001E1E + "\x00f\x03\a\x00\x00\x1e\x1f" + // 0x00660307: 0x00001E1F + "\x00G\x03\x04\x00\x00\x1e " + // 0x00470304: 0x00001E20 + "\x00g\x03\x04\x00\x00\x1e!" + // 0x00670304: 0x00001E21 + "\x00H\x03\a\x00\x00\x1e\"" + // 0x00480307: 0x00001E22 + "\x00h\x03\a\x00\x00\x1e#" + // 0x00680307: 0x00001E23 + "\x00H\x03#\x00\x00\x1e$" + // 0x00480323: 0x00001E24 + "\x00h\x03#\x00\x00\x1e%" + // 0x00680323: 0x00001E25 + "\x00H\x03\b\x00\x00\x1e&" + // 0x00480308: 0x00001E26 + "\x00h\x03\b\x00\x00\x1e'" + // 0x00680308: 0x00001E27 + "\x00H\x03'\x00\x00\x1e(" + // 0x00480327: 0x00001E28 + "\x00h\x03'\x00\x00\x1e)" + // 0x00680327: 0x00001E29 + "\x00H\x03.\x00\x00\x1e*" + // 0x0048032E: 0x00001E2A + "\x00h\x03.\x00\x00\x1e+" + // 0x0068032E: 0x00001E2B + "\x00I\x030\x00\x00\x1e," + // 0x00490330: 0x00001E2C + "\x00i\x030\x00\x00\x1e-" + // 0x00690330: 0x00001E2D + "\x00\xcf\x03\x01\x00\x00\x1e." + // 0x00CF0301: 0x00001E2E + "\x00\xef\x03\x01\x00\x00\x1e/" + // 0x00EF0301: 0x00001E2F + "\x00K\x03\x01\x00\x00\x1e0" + // 0x004B0301: 0x00001E30 + "\x00k\x03\x01\x00\x00\x1e1" + // 0x006B0301: 0x00001E31 + "\x00K\x03#\x00\x00\x1e2" + // 0x004B0323: 0x00001E32 + "\x00k\x03#\x00\x00\x1e3" + // 0x006B0323: 0x00001E33 + "\x00K\x031\x00\x00\x1e4" + // 0x004B0331: 0x00001E34 + "\x00k\x031\x00\x00\x1e5" + // 0x006B0331: 0x00001E35 + "\x00L\x03#\x00\x00\x1e6" + // 0x004C0323: 0x00001E36 + "\x00l\x03#\x00\x00\x1e7" + // 0x006C0323: 0x00001E37 + "\x1e6\x03\x04\x00\x00\x1e8" + // 0x1E360304: 0x00001E38 + "\x1e7\x03\x04\x00\x00\x1e9" + // 0x1E370304: 0x00001E39 + "\x00L\x031\x00\x00\x1e:" + // 0x004C0331: 0x00001E3A + "\x00l\x031\x00\x00\x1e;" + // 0x006C0331: 0x00001E3B + "\x00L\x03-\x00\x00\x1e<" + // 0x004C032D: 0x00001E3C + "\x00l\x03-\x00\x00\x1e=" + // 0x006C032D: 0x00001E3D + "\x00M\x03\x01\x00\x00\x1e>" + // 0x004D0301: 0x00001E3E + "\x00m\x03\x01\x00\x00\x1e?" + // 0x006D0301: 0x00001E3F + "\x00M\x03\a\x00\x00\x1e@" + // 0x004D0307: 0x00001E40 + "\x00m\x03\a\x00\x00\x1eA" + // 0x006D0307: 0x00001E41 + "\x00M\x03#\x00\x00\x1eB" + // 0x004D0323: 0x00001E42 + "\x00m\x03#\x00\x00\x1eC" + // 0x006D0323: 0x00001E43 + "\x00N\x03\a\x00\x00\x1eD" + // 0x004E0307: 0x00001E44 + "\x00n\x03\a\x00\x00\x1eE" + // 0x006E0307: 0x00001E45 + "\x00N\x03#\x00\x00\x1eF" + // 0x004E0323: 0x00001E46 + "\x00n\x03#\x00\x00\x1eG" + // 0x006E0323: 0x00001E47 + "\x00N\x031\x00\x00\x1eH" + // 0x004E0331: 0x00001E48 + "\x00n\x031\x00\x00\x1eI" + // 0x006E0331: 0x00001E49 + "\x00N\x03-\x00\x00\x1eJ" + // 0x004E032D: 0x00001E4A + "\x00n\x03-\x00\x00\x1eK" + // 0x006E032D: 0x00001E4B + "\x00\xd5\x03\x01\x00\x00\x1eL" + // 0x00D50301: 0x00001E4C + "\x00\xf5\x03\x01\x00\x00\x1eM" + // 0x00F50301: 0x00001E4D + "\x00\xd5\x03\b\x00\x00\x1eN" + // 0x00D50308: 0x00001E4E + "\x00\xf5\x03\b\x00\x00\x1eO" + // 0x00F50308: 0x00001E4F + "\x01L\x03\x00\x00\x00\x1eP" + // 0x014C0300: 0x00001E50 + "\x01M\x03\x00\x00\x00\x1eQ" + // 0x014D0300: 0x00001E51 + "\x01L\x03\x01\x00\x00\x1eR" + // 0x014C0301: 0x00001E52 + "\x01M\x03\x01\x00\x00\x1eS" + // 0x014D0301: 0x00001E53 + "\x00P\x03\x01\x00\x00\x1eT" + // 0x00500301: 0x00001E54 + "\x00p\x03\x01\x00\x00\x1eU" + // 0x00700301: 0x00001E55 + "\x00P\x03\a\x00\x00\x1eV" + // 0x00500307: 0x00001E56 + "\x00p\x03\a\x00\x00\x1eW" + // 0x00700307: 0x00001E57 + "\x00R\x03\a\x00\x00\x1eX" + // 0x00520307: 0x00001E58 + "\x00r\x03\a\x00\x00\x1eY" + // 0x00720307: 0x00001E59 + "\x00R\x03#\x00\x00\x1eZ" + // 0x00520323: 0x00001E5A + "\x00r\x03#\x00\x00\x1e[" + // 0x00720323: 0x00001E5B + "\x1eZ\x03\x04\x00\x00\x1e\\" + // 0x1E5A0304: 0x00001E5C + "\x1e[\x03\x04\x00\x00\x1e]" + // 0x1E5B0304: 0x00001E5D + "\x00R\x031\x00\x00\x1e^" + // 0x00520331: 0x00001E5E + "\x00r\x031\x00\x00\x1e_" + // 0x00720331: 0x00001E5F + "\x00S\x03\a\x00\x00\x1e`" + // 0x00530307: 0x00001E60 + "\x00s\x03\a\x00\x00\x1ea" + // 0x00730307: 0x00001E61 + "\x00S\x03#\x00\x00\x1eb" + // 0x00530323: 0x00001E62 + "\x00s\x03#\x00\x00\x1ec" + // 0x00730323: 0x00001E63 + "\x01Z\x03\a\x00\x00\x1ed" + // 0x015A0307: 0x00001E64 + "\x01[\x03\a\x00\x00\x1ee" + // 0x015B0307: 0x00001E65 + "\x01`\x03\a\x00\x00\x1ef" + // 0x01600307: 0x00001E66 + "\x01a\x03\a\x00\x00\x1eg" + // 0x01610307: 0x00001E67 + "\x1eb\x03\a\x00\x00\x1eh" + // 0x1E620307: 0x00001E68 + "\x1ec\x03\a\x00\x00\x1ei" + // 0x1E630307: 0x00001E69 + "\x00T\x03\a\x00\x00\x1ej" + // 0x00540307: 0x00001E6A + "\x00t\x03\a\x00\x00\x1ek" + // 0x00740307: 0x00001E6B + "\x00T\x03#\x00\x00\x1el" + // 0x00540323: 0x00001E6C + "\x00t\x03#\x00\x00\x1em" + // 0x00740323: 0x00001E6D + "\x00T\x031\x00\x00\x1en" + // 0x00540331: 0x00001E6E + "\x00t\x031\x00\x00\x1eo" + // 0x00740331: 0x00001E6F + "\x00T\x03-\x00\x00\x1ep" + // 0x0054032D: 0x00001E70 + "\x00t\x03-\x00\x00\x1eq" + // 0x0074032D: 0x00001E71 + "\x00U\x03$\x00\x00\x1er" + // 0x00550324: 0x00001E72 + "\x00u\x03$\x00\x00\x1es" + // 0x00750324: 0x00001E73 + "\x00U\x030\x00\x00\x1et" + // 0x00550330: 0x00001E74 + "\x00u\x030\x00\x00\x1eu" + // 0x00750330: 0x00001E75 + "\x00U\x03-\x00\x00\x1ev" + // 0x0055032D: 0x00001E76 + "\x00u\x03-\x00\x00\x1ew" + // 0x0075032D: 0x00001E77 + "\x01h\x03\x01\x00\x00\x1ex" + // 0x01680301: 0x00001E78 + "\x01i\x03\x01\x00\x00\x1ey" + // 0x01690301: 0x00001E79 + "\x01j\x03\b\x00\x00\x1ez" + // 0x016A0308: 0x00001E7A + "\x01k\x03\b\x00\x00\x1e{" + // 0x016B0308: 0x00001E7B + "\x00V\x03\x03\x00\x00\x1e|" + // 0x00560303: 0x00001E7C + "\x00v\x03\x03\x00\x00\x1e}" + // 0x00760303: 0x00001E7D + "\x00V\x03#\x00\x00\x1e~" + // 0x00560323: 0x00001E7E + "\x00v\x03#\x00\x00\x1e\u007f" + // 0x00760323: 0x00001E7F + "\x00W\x03\x00\x00\x00\x1e\x80" + // 0x00570300: 0x00001E80 + "\x00w\x03\x00\x00\x00\x1e\x81" + // 0x00770300: 0x00001E81 + "\x00W\x03\x01\x00\x00\x1e\x82" + // 0x00570301: 0x00001E82 + "\x00w\x03\x01\x00\x00\x1e\x83" + // 0x00770301: 0x00001E83 + "\x00W\x03\b\x00\x00\x1e\x84" + // 0x00570308: 0x00001E84 + "\x00w\x03\b\x00\x00\x1e\x85" + // 0x00770308: 0x00001E85 + "\x00W\x03\a\x00\x00\x1e\x86" + // 0x00570307: 0x00001E86 + "\x00w\x03\a\x00\x00\x1e\x87" + // 0x00770307: 0x00001E87 + "\x00W\x03#\x00\x00\x1e\x88" + // 0x00570323: 0x00001E88 + "\x00w\x03#\x00\x00\x1e\x89" + // 0x00770323: 0x00001E89 + "\x00X\x03\a\x00\x00\x1e\x8a" + // 0x00580307: 0x00001E8A + "\x00x\x03\a\x00\x00\x1e\x8b" + // 0x00780307: 0x00001E8B + "\x00X\x03\b\x00\x00\x1e\x8c" + // 0x00580308: 0x00001E8C + "\x00x\x03\b\x00\x00\x1e\x8d" + // 0x00780308: 0x00001E8D + "\x00Y\x03\a\x00\x00\x1e\x8e" + // 0x00590307: 0x00001E8E + "\x00y\x03\a\x00\x00\x1e\x8f" + // 0x00790307: 0x00001E8F + "\x00Z\x03\x02\x00\x00\x1e\x90" + // 0x005A0302: 0x00001E90 + "\x00z\x03\x02\x00\x00\x1e\x91" + // 0x007A0302: 0x00001E91 + "\x00Z\x03#\x00\x00\x1e\x92" + // 0x005A0323: 0x00001E92 + "\x00z\x03#\x00\x00\x1e\x93" + // 0x007A0323: 0x00001E93 + "\x00Z\x031\x00\x00\x1e\x94" + // 0x005A0331: 0x00001E94 + "\x00z\x031\x00\x00\x1e\x95" + // 0x007A0331: 0x00001E95 + "\x00h\x031\x00\x00\x1e\x96" + // 0x00680331: 0x00001E96 + "\x00t\x03\b\x00\x00\x1e\x97" + // 0x00740308: 0x00001E97 + "\x00w\x03\n\x00\x00\x1e\x98" + // 0x0077030A: 0x00001E98 + "\x00y\x03\n\x00\x00\x1e\x99" + // 0x0079030A: 0x00001E99 + "\x01\u007f\x03\a\x00\x00\x1e\x9b" + // 0x017F0307: 0x00001E9B + "\x00A\x03#\x00\x00\x1e\xa0" + // 0x00410323: 0x00001EA0 + "\x00a\x03#\x00\x00\x1e\xa1" + // 0x00610323: 0x00001EA1 + "\x00A\x03\t\x00\x00\x1e\xa2" + // 0x00410309: 0x00001EA2 + "\x00a\x03\t\x00\x00\x1e\xa3" + // 0x00610309: 0x00001EA3 + "\x00\xc2\x03\x01\x00\x00\x1e\xa4" + // 0x00C20301: 0x00001EA4 + "\x00\xe2\x03\x01\x00\x00\x1e\xa5" + // 0x00E20301: 0x00001EA5 + "\x00\xc2\x03\x00\x00\x00\x1e\xa6" + // 0x00C20300: 0x00001EA6 + "\x00\xe2\x03\x00\x00\x00\x1e\xa7" + // 0x00E20300: 0x00001EA7 + "\x00\xc2\x03\t\x00\x00\x1e\xa8" + // 0x00C20309: 0x00001EA8 + "\x00\xe2\x03\t\x00\x00\x1e\xa9" + // 0x00E20309: 0x00001EA9 + "\x00\xc2\x03\x03\x00\x00\x1e\xaa" + // 0x00C20303: 0x00001EAA + "\x00\xe2\x03\x03\x00\x00\x1e\xab" + // 0x00E20303: 0x00001EAB + "\x1e\xa0\x03\x02\x00\x00\x1e\xac" + // 0x1EA00302: 0x00001EAC + "\x1e\xa1\x03\x02\x00\x00\x1e\xad" + // 0x1EA10302: 0x00001EAD + "\x01\x02\x03\x01\x00\x00\x1e\xae" + // 0x01020301: 0x00001EAE + "\x01\x03\x03\x01\x00\x00\x1e\xaf" + // 0x01030301: 0x00001EAF + "\x01\x02\x03\x00\x00\x00\x1e\xb0" + // 0x01020300: 0x00001EB0 + "\x01\x03\x03\x00\x00\x00\x1e\xb1" + // 0x01030300: 0x00001EB1 + "\x01\x02\x03\t\x00\x00\x1e\xb2" + // 0x01020309: 0x00001EB2 + "\x01\x03\x03\t\x00\x00\x1e\xb3" + // 0x01030309: 0x00001EB3 + "\x01\x02\x03\x03\x00\x00\x1e\xb4" + // 0x01020303: 0x00001EB4 + "\x01\x03\x03\x03\x00\x00\x1e\xb5" + // 0x01030303: 0x00001EB5 + "\x1e\xa0\x03\x06\x00\x00\x1e\xb6" + // 0x1EA00306: 0x00001EB6 + "\x1e\xa1\x03\x06\x00\x00\x1e\xb7" + // 0x1EA10306: 0x00001EB7 + "\x00E\x03#\x00\x00\x1e\xb8" + // 0x00450323: 0x00001EB8 + "\x00e\x03#\x00\x00\x1e\xb9" + // 0x00650323: 0x00001EB9 + "\x00E\x03\t\x00\x00\x1e\xba" + // 0x00450309: 0x00001EBA + "\x00e\x03\t\x00\x00\x1e\xbb" + // 0x00650309: 0x00001EBB + "\x00E\x03\x03\x00\x00\x1e\xbc" + // 0x00450303: 0x00001EBC + "\x00e\x03\x03\x00\x00\x1e\xbd" + // 0x00650303: 0x00001EBD + "\x00\xca\x03\x01\x00\x00\x1e\xbe" + // 0x00CA0301: 0x00001EBE + "\x00\xea\x03\x01\x00\x00\x1e\xbf" + // 0x00EA0301: 0x00001EBF + "\x00\xca\x03\x00\x00\x00\x1e\xc0" + // 0x00CA0300: 0x00001EC0 + "\x00\xea\x03\x00\x00\x00\x1e\xc1" + // 0x00EA0300: 0x00001EC1 + "\x00\xca\x03\t\x00\x00\x1e\xc2" + // 0x00CA0309: 0x00001EC2 + "\x00\xea\x03\t\x00\x00\x1e\xc3" + // 0x00EA0309: 0x00001EC3 + "\x00\xca\x03\x03\x00\x00\x1e\xc4" + // 0x00CA0303: 0x00001EC4 + "\x00\xea\x03\x03\x00\x00\x1e\xc5" + // 0x00EA0303: 0x00001EC5 + "\x1e\xb8\x03\x02\x00\x00\x1e\xc6" + // 0x1EB80302: 0x00001EC6 + "\x1e\xb9\x03\x02\x00\x00\x1e\xc7" + // 0x1EB90302: 0x00001EC7 + "\x00I\x03\t\x00\x00\x1e\xc8" + // 0x00490309: 0x00001EC8 + "\x00i\x03\t\x00\x00\x1e\xc9" + // 0x00690309: 0x00001EC9 + "\x00I\x03#\x00\x00\x1e\xca" + // 0x00490323: 0x00001ECA + "\x00i\x03#\x00\x00\x1e\xcb" + // 0x00690323: 0x00001ECB + "\x00O\x03#\x00\x00\x1e\xcc" + // 0x004F0323: 0x00001ECC + "\x00o\x03#\x00\x00\x1e\xcd" + // 0x006F0323: 0x00001ECD + "\x00O\x03\t\x00\x00\x1e\xce" + // 0x004F0309: 0x00001ECE + "\x00o\x03\t\x00\x00\x1e\xcf" + // 0x006F0309: 0x00001ECF + "\x00\xd4\x03\x01\x00\x00\x1e\xd0" + // 0x00D40301: 0x00001ED0 + "\x00\xf4\x03\x01\x00\x00\x1e\xd1" + // 0x00F40301: 0x00001ED1 + "\x00\xd4\x03\x00\x00\x00\x1e\xd2" + // 0x00D40300: 0x00001ED2 + "\x00\xf4\x03\x00\x00\x00\x1e\xd3" + // 0x00F40300: 0x00001ED3 + "\x00\xd4\x03\t\x00\x00\x1e\xd4" + // 0x00D40309: 0x00001ED4 + "\x00\xf4\x03\t\x00\x00\x1e\xd5" + // 0x00F40309: 0x00001ED5 + "\x00\xd4\x03\x03\x00\x00\x1e\xd6" + // 0x00D40303: 0x00001ED6 + "\x00\xf4\x03\x03\x00\x00\x1e\xd7" + // 0x00F40303: 0x00001ED7 + "\x1e\xcc\x03\x02\x00\x00\x1e\xd8" + // 0x1ECC0302: 0x00001ED8 + "\x1e\xcd\x03\x02\x00\x00\x1e\xd9" + // 0x1ECD0302: 0x00001ED9 + "\x01\xa0\x03\x01\x00\x00\x1e\xda" + // 0x01A00301: 0x00001EDA + "\x01\xa1\x03\x01\x00\x00\x1e\xdb" + // 0x01A10301: 0x00001EDB + "\x01\xa0\x03\x00\x00\x00\x1e\xdc" + // 0x01A00300: 0x00001EDC + "\x01\xa1\x03\x00\x00\x00\x1e\xdd" + // 0x01A10300: 0x00001EDD + "\x01\xa0\x03\t\x00\x00\x1e\xde" + // 0x01A00309: 0x00001EDE + "\x01\xa1\x03\t\x00\x00\x1e\xdf" + // 0x01A10309: 0x00001EDF + "\x01\xa0\x03\x03\x00\x00\x1e\xe0" + // 0x01A00303: 0x00001EE0 + "\x01\xa1\x03\x03\x00\x00\x1e\xe1" + // 0x01A10303: 0x00001EE1 + "\x01\xa0\x03#\x00\x00\x1e\xe2" + // 0x01A00323: 0x00001EE2 + "\x01\xa1\x03#\x00\x00\x1e\xe3" + // 0x01A10323: 0x00001EE3 + "\x00U\x03#\x00\x00\x1e\xe4" + // 0x00550323: 0x00001EE4 + "\x00u\x03#\x00\x00\x1e\xe5" + // 0x00750323: 0x00001EE5 + "\x00U\x03\t\x00\x00\x1e\xe6" + // 0x00550309: 0x00001EE6 + "\x00u\x03\t\x00\x00\x1e\xe7" + // 0x00750309: 0x00001EE7 + "\x01\xaf\x03\x01\x00\x00\x1e\xe8" + // 0x01AF0301: 0x00001EE8 + "\x01\xb0\x03\x01\x00\x00\x1e\xe9" + // 0x01B00301: 0x00001EE9 + "\x01\xaf\x03\x00\x00\x00\x1e\xea" + // 0x01AF0300: 0x00001EEA + "\x01\xb0\x03\x00\x00\x00\x1e\xeb" + // 0x01B00300: 0x00001EEB + "\x01\xaf\x03\t\x00\x00\x1e\xec" + // 0x01AF0309: 0x00001EEC + "\x01\xb0\x03\t\x00\x00\x1e\xed" + // 0x01B00309: 0x00001EED + "\x01\xaf\x03\x03\x00\x00\x1e\xee" + // 0x01AF0303: 0x00001EEE + "\x01\xb0\x03\x03\x00\x00\x1e\xef" + // 0x01B00303: 0x00001EEF + "\x01\xaf\x03#\x00\x00\x1e\xf0" + // 0x01AF0323: 0x00001EF0 + "\x01\xb0\x03#\x00\x00\x1e\xf1" + // 0x01B00323: 0x00001EF1 + "\x00Y\x03\x00\x00\x00\x1e\xf2" + // 0x00590300: 0x00001EF2 + "\x00y\x03\x00\x00\x00\x1e\xf3" + // 0x00790300: 0x00001EF3 + "\x00Y\x03#\x00\x00\x1e\xf4" + // 0x00590323: 0x00001EF4 + "\x00y\x03#\x00\x00\x1e\xf5" + // 0x00790323: 0x00001EF5 + "\x00Y\x03\t\x00\x00\x1e\xf6" + // 0x00590309: 0x00001EF6 + "\x00y\x03\t\x00\x00\x1e\xf7" + // 0x00790309: 0x00001EF7 + "\x00Y\x03\x03\x00\x00\x1e\xf8" + // 0x00590303: 0x00001EF8 + "\x00y\x03\x03\x00\x00\x1e\xf9" + // 0x00790303: 0x00001EF9 + "\x03\xb1\x03\x13\x00\x00\x1f\x00" + // 0x03B10313: 0x00001F00 + "\x03\xb1\x03\x14\x00\x00\x1f\x01" + // 0x03B10314: 0x00001F01 + "\x1f\x00\x03\x00\x00\x00\x1f\x02" + // 0x1F000300: 0x00001F02 + "\x1f\x01\x03\x00\x00\x00\x1f\x03" + // 0x1F010300: 0x00001F03 + "\x1f\x00\x03\x01\x00\x00\x1f\x04" + // 0x1F000301: 0x00001F04 + "\x1f\x01\x03\x01\x00\x00\x1f\x05" + // 0x1F010301: 0x00001F05 + "\x1f\x00\x03B\x00\x00\x1f\x06" + // 0x1F000342: 0x00001F06 + "\x1f\x01\x03B\x00\x00\x1f\a" + // 0x1F010342: 0x00001F07 + "\x03\x91\x03\x13\x00\x00\x1f\b" + // 0x03910313: 0x00001F08 + "\x03\x91\x03\x14\x00\x00\x1f\t" + // 0x03910314: 0x00001F09 + "\x1f\b\x03\x00\x00\x00\x1f\n" + // 0x1F080300: 0x00001F0A + "\x1f\t\x03\x00\x00\x00\x1f\v" + // 0x1F090300: 0x00001F0B + "\x1f\b\x03\x01\x00\x00\x1f\f" + // 0x1F080301: 0x00001F0C + "\x1f\t\x03\x01\x00\x00\x1f\r" + // 0x1F090301: 0x00001F0D + "\x1f\b\x03B\x00\x00\x1f\x0e" + // 0x1F080342: 0x00001F0E + "\x1f\t\x03B\x00\x00\x1f\x0f" + // 0x1F090342: 0x00001F0F + "\x03\xb5\x03\x13\x00\x00\x1f\x10" + // 0x03B50313: 0x00001F10 + "\x03\xb5\x03\x14\x00\x00\x1f\x11" + // 0x03B50314: 0x00001F11 + "\x1f\x10\x03\x00\x00\x00\x1f\x12" + // 0x1F100300: 0x00001F12 + "\x1f\x11\x03\x00\x00\x00\x1f\x13" + // 0x1F110300: 0x00001F13 + "\x1f\x10\x03\x01\x00\x00\x1f\x14" + // 0x1F100301: 0x00001F14 + "\x1f\x11\x03\x01\x00\x00\x1f\x15" + // 0x1F110301: 0x00001F15 + "\x03\x95\x03\x13\x00\x00\x1f\x18" + // 0x03950313: 0x00001F18 + "\x03\x95\x03\x14\x00\x00\x1f\x19" + // 0x03950314: 0x00001F19 + "\x1f\x18\x03\x00\x00\x00\x1f\x1a" + // 0x1F180300: 0x00001F1A + "\x1f\x19\x03\x00\x00\x00\x1f\x1b" + // 0x1F190300: 0x00001F1B + "\x1f\x18\x03\x01\x00\x00\x1f\x1c" + // 0x1F180301: 0x00001F1C + "\x1f\x19\x03\x01\x00\x00\x1f\x1d" + // 0x1F190301: 0x00001F1D + "\x03\xb7\x03\x13\x00\x00\x1f " + // 0x03B70313: 0x00001F20 + "\x03\xb7\x03\x14\x00\x00\x1f!" + // 0x03B70314: 0x00001F21 + "\x1f \x03\x00\x00\x00\x1f\"" + // 0x1F200300: 0x00001F22 + "\x1f!\x03\x00\x00\x00\x1f#" + // 0x1F210300: 0x00001F23 + "\x1f \x03\x01\x00\x00\x1f$" + // 0x1F200301: 0x00001F24 + "\x1f!\x03\x01\x00\x00\x1f%" + // 0x1F210301: 0x00001F25 + "\x1f \x03B\x00\x00\x1f&" + // 0x1F200342: 0x00001F26 + "\x1f!\x03B\x00\x00\x1f'" + // 0x1F210342: 0x00001F27 + "\x03\x97\x03\x13\x00\x00\x1f(" + // 0x03970313: 0x00001F28 + "\x03\x97\x03\x14\x00\x00\x1f)" + // 0x03970314: 0x00001F29 + "\x1f(\x03\x00\x00\x00\x1f*" + // 0x1F280300: 0x00001F2A + "\x1f)\x03\x00\x00\x00\x1f+" + // 0x1F290300: 0x00001F2B + "\x1f(\x03\x01\x00\x00\x1f," + // 0x1F280301: 0x00001F2C + "\x1f)\x03\x01\x00\x00\x1f-" + // 0x1F290301: 0x00001F2D + "\x1f(\x03B\x00\x00\x1f." + // 0x1F280342: 0x00001F2E + "\x1f)\x03B\x00\x00\x1f/" + // 0x1F290342: 0x00001F2F + "\x03\xb9\x03\x13\x00\x00\x1f0" + // 0x03B90313: 0x00001F30 + "\x03\xb9\x03\x14\x00\x00\x1f1" + // 0x03B90314: 0x00001F31 + "\x1f0\x03\x00\x00\x00\x1f2" + // 0x1F300300: 0x00001F32 + "\x1f1\x03\x00\x00\x00\x1f3" + // 0x1F310300: 0x00001F33 + "\x1f0\x03\x01\x00\x00\x1f4" + // 0x1F300301: 0x00001F34 + "\x1f1\x03\x01\x00\x00\x1f5" + // 0x1F310301: 0x00001F35 + "\x1f0\x03B\x00\x00\x1f6" + // 0x1F300342: 0x00001F36 + "\x1f1\x03B\x00\x00\x1f7" + // 0x1F310342: 0x00001F37 + "\x03\x99\x03\x13\x00\x00\x1f8" + // 0x03990313: 0x00001F38 + "\x03\x99\x03\x14\x00\x00\x1f9" + // 0x03990314: 0x00001F39 + "\x1f8\x03\x00\x00\x00\x1f:" + // 0x1F380300: 0x00001F3A + "\x1f9\x03\x00\x00\x00\x1f;" + // 0x1F390300: 0x00001F3B + "\x1f8\x03\x01\x00\x00\x1f<" + // 0x1F380301: 0x00001F3C + "\x1f9\x03\x01\x00\x00\x1f=" + // 0x1F390301: 0x00001F3D + "\x1f8\x03B\x00\x00\x1f>" + // 0x1F380342: 0x00001F3E + "\x1f9\x03B\x00\x00\x1f?" + // 0x1F390342: 0x00001F3F + "\x03\xbf\x03\x13\x00\x00\x1f@" + // 0x03BF0313: 0x00001F40 + "\x03\xbf\x03\x14\x00\x00\x1fA" + // 0x03BF0314: 0x00001F41 + "\x1f@\x03\x00\x00\x00\x1fB" + // 0x1F400300: 0x00001F42 + "\x1fA\x03\x00\x00\x00\x1fC" + // 0x1F410300: 0x00001F43 + "\x1f@\x03\x01\x00\x00\x1fD" + // 0x1F400301: 0x00001F44 + "\x1fA\x03\x01\x00\x00\x1fE" + // 0x1F410301: 0x00001F45 + "\x03\x9f\x03\x13\x00\x00\x1fH" + // 0x039F0313: 0x00001F48 + "\x03\x9f\x03\x14\x00\x00\x1fI" + // 0x039F0314: 0x00001F49 + "\x1fH\x03\x00\x00\x00\x1fJ" + // 0x1F480300: 0x00001F4A + "\x1fI\x03\x00\x00\x00\x1fK" + // 0x1F490300: 0x00001F4B + "\x1fH\x03\x01\x00\x00\x1fL" + // 0x1F480301: 0x00001F4C + "\x1fI\x03\x01\x00\x00\x1fM" + // 0x1F490301: 0x00001F4D + "\x03\xc5\x03\x13\x00\x00\x1fP" + // 0x03C50313: 0x00001F50 + "\x03\xc5\x03\x14\x00\x00\x1fQ" + // 0x03C50314: 0x00001F51 + "\x1fP\x03\x00\x00\x00\x1fR" + // 0x1F500300: 0x00001F52 + "\x1fQ\x03\x00\x00\x00\x1fS" + // 0x1F510300: 0x00001F53 + "\x1fP\x03\x01\x00\x00\x1fT" + // 0x1F500301: 0x00001F54 + "\x1fQ\x03\x01\x00\x00\x1fU" + // 0x1F510301: 0x00001F55 + "\x1fP\x03B\x00\x00\x1fV" + // 0x1F500342: 0x00001F56 + "\x1fQ\x03B\x00\x00\x1fW" + // 0x1F510342: 0x00001F57 + "\x03\xa5\x03\x14\x00\x00\x1fY" + // 0x03A50314: 0x00001F59 + "\x1fY\x03\x00\x00\x00\x1f[" + // 0x1F590300: 0x00001F5B + "\x1fY\x03\x01\x00\x00\x1f]" + // 0x1F590301: 0x00001F5D + "\x1fY\x03B\x00\x00\x1f_" + // 0x1F590342: 0x00001F5F + "\x03\xc9\x03\x13\x00\x00\x1f`" + // 0x03C90313: 0x00001F60 + "\x03\xc9\x03\x14\x00\x00\x1fa" + // 0x03C90314: 0x00001F61 + "\x1f`\x03\x00\x00\x00\x1fb" + // 0x1F600300: 0x00001F62 + "\x1fa\x03\x00\x00\x00\x1fc" + // 0x1F610300: 0x00001F63 + "\x1f`\x03\x01\x00\x00\x1fd" + // 0x1F600301: 0x00001F64 + "\x1fa\x03\x01\x00\x00\x1fe" + // 0x1F610301: 0x00001F65 + "\x1f`\x03B\x00\x00\x1ff" + // 0x1F600342: 0x00001F66 + "\x1fa\x03B\x00\x00\x1fg" + // 0x1F610342: 0x00001F67 + "\x03\xa9\x03\x13\x00\x00\x1fh" + // 0x03A90313: 0x00001F68 + "\x03\xa9\x03\x14\x00\x00\x1fi" + // 0x03A90314: 0x00001F69 + "\x1fh\x03\x00\x00\x00\x1fj" + // 0x1F680300: 0x00001F6A + "\x1fi\x03\x00\x00\x00\x1fk" + // 0x1F690300: 0x00001F6B + "\x1fh\x03\x01\x00\x00\x1fl" + // 0x1F680301: 0x00001F6C + "\x1fi\x03\x01\x00\x00\x1fm" + // 0x1F690301: 0x00001F6D + "\x1fh\x03B\x00\x00\x1fn" + // 0x1F680342: 0x00001F6E + "\x1fi\x03B\x00\x00\x1fo" + // 0x1F690342: 0x00001F6F + "\x03\xb1\x03\x00\x00\x00\x1fp" + // 0x03B10300: 0x00001F70 + "\x03\xb5\x03\x00\x00\x00\x1fr" + // 0x03B50300: 0x00001F72 + "\x03\xb7\x03\x00\x00\x00\x1ft" + // 0x03B70300: 0x00001F74 + "\x03\xb9\x03\x00\x00\x00\x1fv" + // 0x03B90300: 0x00001F76 + "\x03\xbf\x03\x00\x00\x00\x1fx" + // 0x03BF0300: 0x00001F78 + "\x03\xc5\x03\x00\x00\x00\x1fz" + // 0x03C50300: 0x00001F7A + "\x03\xc9\x03\x00\x00\x00\x1f|" + // 0x03C90300: 0x00001F7C + "\x1f\x00\x03E\x00\x00\x1f\x80" + // 0x1F000345: 0x00001F80 + "\x1f\x01\x03E\x00\x00\x1f\x81" + // 0x1F010345: 0x00001F81 + "\x1f\x02\x03E\x00\x00\x1f\x82" + // 0x1F020345: 0x00001F82 + "\x1f\x03\x03E\x00\x00\x1f\x83" + // 0x1F030345: 0x00001F83 + "\x1f\x04\x03E\x00\x00\x1f\x84" + // 0x1F040345: 0x00001F84 + "\x1f\x05\x03E\x00\x00\x1f\x85" + // 0x1F050345: 0x00001F85 + "\x1f\x06\x03E\x00\x00\x1f\x86" + // 0x1F060345: 0x00001F86 + "\x1f\a\x03E\x00\x00\x1f\x87" + // 0x1F070345: 0x00001F87 + "\x1f\b\x03E\x00\x00\x1f\x88" + // 0x1F080345: 0x00001F88 + "\x1f\t\x03E\x00\x00\x1f\x89" + // 0x1F090345: 0x00001F89 + "\x1f\n\x03E\x00\x00\x1f\x8a" + // 0x1F0A0345: 0x00001F8A + "\x1f\v\x03E\x00\x00\x1f\x8b" + // 0x1F0B0345: 0x00001F8B + "\x1f\f\x03E\x00\x00\x1f\x8c" + // 0x1F0C0345: 0x00001F8C + "\x1f\r\x03E\x00\x00\x1f\x8d" + // 0x1F0D0345: 0x00001F8D + "\x1f\x0e\x03E\x00\x00\x1f\x8e" + // 0x1F0E0345: 0x00001F8E + "\x1f\x0f\x03E\x00\x00\x1f\x8f" + // 0x1F0F0345: 0x00001F8F + "\x1f \x03E\x00\x00\x1f\x90" + // 0x1F200345: 0x00001F90 + "\x1f!\x03E\x00\x00\x1f\x91" + // 0x1F210345: 0x00001F91 + "\x1f\"\x03E\x00\x00\x1f\x92" + // 0x1F220345: 0x00001F92 + "\x1f#\x03E\x00\x00\x1f\x93" + // 0x1F230345: 0x00001F93 + "\x1f$\x03E\x00\x00\x1f\x94" + // 0x1F240345: 0x00001F94 + "\x1f%\x03E\x00\x00\x1f\x95" + // 0x1F250345: 0x00001F95 + "\x1f&\x03E\x00\x00\x1f\x96" + // 0x1F260345: 0x00001F96 + "\x1f'\x03E\x00\x00\x1f\x97" + // 0x1F270345: 0x00001F97 + "\x1f(\x03E\x00\x00\x1f\x98" + // 0x1F280345: 0x00001F98 + "\x1f)\x03E\x00\x00\x1f\x99" + // 0x1F290345: 0x00001F99 + "\x1f*\x03E\x00\x00\x1f\x9a" + // 0x1F2A0345: 0x00001F9A + "\x1f+\x03E\x00\x00\x1f\x9b" + // 0x1F2B0345: 0x00001F9B + "\x1f,\x03E\x00\x00\x1f\x9c" + // 0x1F2C0345: 0x00001F9C + "\x1f-\x03E\x00\x00\x1f\x9d" + // 0x1F2D0345: 0x00001F9D + "\x1f.\x03E\x00\x00\x1f\x9e" + // 0x1F2E0345: 0x00001F9E + "\x1f/\x03E\x00\x00\x1f\x9f" + // 0x1F2F0345: 0x00001F9F + "\x1f`\x03E\x00\x00\x1f\xa0" + // 0x1F600345: 0x00001FA0 + "\x1fa\x03E\x00\x00\x1f\xa1" + // 0x1F610345: 0x00001FA1 + "\x1fb\x03E\x00\x00\x1f\xa2" + // 0x1F620345: 0x00001FA2 + "\x1fc\x03E\x00\x00\x1f\xa3" + // 0x1F630345: 0x00001FA3 + "\x1fd\x03E\x00\x00\x1f\xa4" + // 0x1F640345: 0x00001FA4 + "\x1fe\x03E\x00\x00\x1f\xa5" + // 0x1F650345: 0x00001FA5 + "\x1ff\x03E\x00\x00\x1f\xa6" + // 0x1F660345: 0x00001FA6 + "\x1fg\x03E\x00\x00\x1f\xa7" + // 0x1F670345: 0x00001FA7 + "\x1fh\x03E\x00\x00\x1f\xa8" + // 0x1F680345: 0x00001FA8 + "\x1fi\x03E\x00\x00\x1f\xa9" + // 0x1F690345: 0x00001FA9 + "\x1fj\x03E\x00\x00\x1f\xaa" + // 0x1F6A0345: 0x00001FAA + "\x1fk\x03E\x00\x00\x1f\xab" + // 0x1F6B0345: 0x00001FAB + "\x1fl\x03E\x00\x00\x1f\xac" + // 0x1F6C0345: 0x00001FAC + "\x1fm\x03E\x00\x00\x1f\xad" + // 0x1F6D0345: 0x00001FAD + "\x1fn\x03E\x00\x00\x1f\xae" + // 0x1F6E0345: 0x00001FAE + "\x1fo\x03E\x00\x00\x1f\xaf" + // 0x1F6F0345: 0x00001FAF + "\x03\xb1\x03\x06\x00\x00\x1f\xb0" + // 0x03B10306: 0x00001FB0 + "\x03\xb1\x03\x04\x00\x00\x1f\xb1" + // 0x03B10304: 0x00001FB1 + "\x1fp\x03E\x00\x00\x1f\xb2" + // 0x1F700345: 0x00001FB2 + "\x03\xb1\x03E\x00\x00\x1f\xb3" + // 0x03B10345: 0x00001FB3 + "\x03\xac\x03E\x00\x00\x1f\xb4" + // 0x03AC0345: 0x00001FB4 + "\x03\xb1\x03B\x00\x00\x1f\xb6" + // 0x03B10342: 0x00001FB6 + "\x1f\xb6\x03E\x00\x00\x1f\xb7" + // 0x1FB60345: 0x00001FB7 + "\x03\x91\x03\x06\x00\x00\x1f\xb8" + // 0x03910306: 0x00001FB8 + "\x03\x91\x03\x04\x00\x00\x1f\xb9" + // 0x03910304: 0x00001FB9 + "\x03\x91\x03\x00\x00\x00\x1f\xba" + // 0x03910300: 0x00001FBA + "\x03\x91\x03E\x00\x00\x1f\xbc" + // 0x03910345: 0x00001FBC + "\x00\xa8\x03B\x00\x00\x1f\xc1" + // 0x00A80342: 0x00001FC1 + "\x1ft\x03E\x00\x00\x1f\xc2" + // 0x1F740345: 0x00001FC2 + "\x03\xb7\x03E\x00\x00\x1f\xc3" + // 0x03B70345: 0x00001FC3 + "\x03\xae\x03E\x00\x00\x1f\xc4" + // 0x03AE0345: 0x00001FC4 + "\x03\xb7\x03B\x00\x00\x1f\xc6" + // 0x03B70342: 0x00001FC6 + "\x1f\xc6\x03E\x00\x00\x1f\xc7" + // 0x1FC60345: 0x00001FC7 + "\x03\x95\x03\x00\x00\x00\x1f\xc8" + // 0x03950300: 0x00001FC8 + "\x03\x97\x03\x00\x00\x00\x1f\xca" + // 0x03970300: 0x00001FCA + "\x03\x97\x03E\x00\x00\x1f\xcc" + // 0x03970345: 0x00001FCC + "\x1f\xbf\x03\x00\x00\x00\x1f\xcd" + // 0x1FBF0300: 0x00001FCD + "\x1f\xbf\x03\x01\x00\x00\x1f\xce" + // 0x1FBF0301: 0x00001FCE + "\x1f\xbf\x03B\x00\x00\x1f\xcf" + // 0x1FBF0342: 0x00001FCF + "\x03\xb9\x03\x06\x00\x00\x1f\xd0" + // 0x03B90306: 0x00001FD0 + "\x03\xb9\x03\x04\x00\x00\x1f\xd1" + // 0x03B90304: 0x00001FD1 + "\x03\xca\x03\x00\x00\x00\x1f\xd2" + // 0x03CA0300: 0x00001FD2 + "\x03\xb9\x03B\x00\x00\x1f\xd6" + // 0x03B90342: 0x00001FD6 + "\x03\xca\x03B\x00\x00\x1f\xd7" + // 0x03CA0342: 0x00001FD7 + "\x03\x99\x03\x06\x00\x00\x1f\xd8" + // 0x03990306: 0x00001FD8 + "\x03\x99\x03\x04\x00\x00\x1f\xd9" + // 0x03990304: 0x00001FD9 + "\x03\x99\x03\x00\x00\x00\x1f\xda" + // 0x03990300: 0x00001FDA + "\x1f\xfe\x03\x00\x00\x00\x1f\xdd" + // 0x1FFE0300: 0x00001FDD + "\x1f\xfe\x03\x01\x00\x00\x1f\xde" + // 0x1FFE0301: 0x00001FDE + "\x1f\xfe\x03B\x00\x00\x1f\xdf" + // 0x1FFE0342: 0x00001FDF + "\x03\xc5\x03\x06\x00\x00\x1f\xe0" + // 0x03C50306: 0x00001FE0 + "\x03\xc5\x03\x04\x00\x00\x1f\xe1" + // 0x03C50304: 0x00001FE1 + "\x03\xcb\x03\x00\x00\x00\x1f\xe2" + // 0x03CB0300: 0x00001FE2 + "\x03\xc1\x03\x13\x00\x00\x1f\xe4" + // 0x03C10313: 0x00001FE4 + "\x03\xc1\x03\x14\x00\x00\x1f\xe5" + // 0x03C10314: 0x00001FE5 + "\x03\xc5\x03B\x00\x00\x1f\xe6" + // 0x03C50342: 0x00001FE6 + "\x03\xcb\x03B\x00\x00\x1f\xe7" + // 0x03CB0342: 0x00001FE7 + "\x03\xa5\x03\x06\x00\x00\x1f\xe8" + // 0x03A50306: 0x00001FE8 + "\x03\xa5\x03\x04\x00\x00\x1f\xe9" + // 0x03A50304: 0x00001FE9 + "\x03\xa5\x03\x00\x00\x00\x1f\xea" + // 0x03A50300: 0x00001FEA + "\x03\xa1\x03\x14\x00\x00\x1f\xec" + // 0x03A10314: 0x00001FEC + "\x00\xa8\x03\x00\x00\x00\x1f\xed" + // 0x00A80300: 0x00001FED + "\x1f|\x03E\x00\x00\x1f\xf2" + // 0x1F7C0345: 0x00001FF2 + "\x03\xc9\x03E\x00\x00\x1f\xf3" + // 0x03C90345: 0x00001FF3 + "\x03\xce\x03E\x00\x00\x1f\xf4" + // 0x03CE0345: 0x00001FF4 + "\x03\xc9\x03B\x00\x00\x1f\xf6" + // 0x03C90342: 0x00001FF6 + "\x1f\xf6\x03E\x00\x00\x1f\xf7" + // 0x1FF60345: 0x00001FF7 + "\x03\x9f\x03\x00\x00\x00\x1f\xf8" + // 0x039F0300: 0x00001FF8 + "\x03\xa9\x03\x00\x00\x00\x1f\xfa" + // 0x03A90300: 0x00001FFA + "\x03\xa9\x03E\x00\x00\x1f\xfc" + // 0x03A90345: 0x00001FFC + "!\x90\x038\x00\x00!\x9a" + // 0x21900338: 0x0000219A + "!\x92\x038\x00\x00!\x9b" + // 0x21920338: 0x0000219B + "!\x94\x038\x00\x00!\xae" + // 0x21940338: 0x000021AE + "!\xd0\x038\x00\x00!\xcd" + // 0x21D00338: 0x000021CD + "!\xd4\x038\x00\x00!\xce" + // 0x21D40338: 0x000021CE + "!\xd2\x038\x00\x00!\xcf" + // 0x21D20338: 0x000021CF + "\"\x03\x038\x00\x00\"\x04" + // 0x22030338: 0x00002204 + "\"\b\x038\x00\x00\"\t" + // 0x22080338: 0x00002209 + "\"\v\x038\x00\x00\"\f" + // 0x220B0338: 0x0000220C + "\"#\x038\x00\x00\"$" + // 0x22230338: 0x00002224 + "\"%\x038\x00\x00\"&" + // 0x22250338: 0x00002226 + "\"<\x038\x00\x00\"A" + // 0x223C0338: 0x00002241 + "\"C\x038\x00\x00\"D" + // 0x22430338: 0x00002244 + "\"E\x038\x00\x00\"G" + // 0x22450338: 0x00002247 + "\"H\x038\x00\x00\"I" + // 0x22480338: 0x00002249 + "\x00=\x038\x00\x00\"`" + // 0x003D0338: 0x00002260 + "\"a\x038\x00\x00\"b" + // 0x22610338: 0x00002262 + "\"M\x038\x00\x00\"m" + // 0x224D0338: 0x0000226D + "\x00<\x038\x00\x00\"n" + // 0x003C0338: 0x0000226E + "\x00>\x038\x00\x00\"o" + // 0x003E0338: 0x0000226F + "\"d\x038\x00\x00\"p" + // 0x22640338: 0x00002270 + "\"e\x038\x00\x00\"q" + // 0x22650338: 0x00002271 + "\"r\x038\x00\x00\"t" + // 0x22720338: 0x00002274 + "\"s\x038\x00\x00\"u" + // 0x22730338: 0x00002275 + "\"v\x038\x00\x00\"x" + // 0x22760338: 0x00002278 + "\"w\x038\x00\x00\"y" + // 0x22770338: 0x00002279 + "\"z\x038\x00\x00\"\x80" + // 0x227A0338: 0x00002280 + "\"{\x038\x00\x00\"\x81" + // 0x227B0338: 0x00002281 + "\"\x82\x038\x00\x00\"\x84" + // 0x22820338: 0x00002284 + "\"\x83\x038\x00\x00\"\x85" + // 0x22830338: 0x00002285 + "\"\x86\x038\x00\x00\"\x88" + // 0x22860338: 0x00002288 + "\"\x87\x038\x00\x00\"\x89" + // 0x22870338: 0x00002289 + "\"\xa2\x038\x00\x00\"\xac" + // 0x22A20338: 0x000022AC + "\"\xa8\x038\x00\x00\"\xad" + // 0x22A80338: 0x000022AD + "\"\xa9\x038\x00\x00\"\xae" + // 0x22A90338: 0x000022AE + "\"\xab\x038\x00\x00\"\xaf" + // 0x22AB0338: 0x000022AF + "\"|\x038\x00\x00\"\xe0" + // 0x227C0338: 0x000022E0 + "\"}\x038\x00\x00\"\xe1" + // 0x227D0338: 0x000022E1 + "\"\x91\x038\x00\x00\"\xe2" + // 0x22910338: 0x000022E2 + "\"\x92\x038\x00\x00\"\xe3" + // 0x22920338: 0x000022E3 + "\"\xb2\x038\x00\x00\"\xea" + // 0x22B20338: 0x000022EA + "\"\xb3\x038\x00\x00\"\xeb" + // 0x22B30338: 0x000022EB + "\"\xb4\x038\x00\x00\"\xec" + // 0x22B40338: 0x000022EC + "\"\xb5\x038\x00\x00\"\xed" + // 0x22B50338: 0x000022ED + "0K0\x99\x00\x000L" + // 0x304B3099: 0x0000304C + "0M0\x99\x00\x000N" + // 0x304D3099: 0x0000304E + "0O0\x99\x00\x000P" + // 0x304F3099: 0x00003050 + "0Q0\x99\x00\x000R" + // 0x30513099: 0x00003052 + "0S0\x99\x00\x000T" + // 0x30533099: 0x00003054 + "0U0\x99\x00\x000V" + // 0x30553099: 0x00003056 + "0W0\x99\x00\x000X" + // 0x30573099: 0x00003058 + "0Y0\x99\x00\x000Z" + // 0x30593099: 0x0000305A + "0[0\x99\x00\x000\\" + // 0x305B3099: 0x0000305C + "0]0\x99\x00\x000^" + // 0x305D3099: 0x0000305E + "0_0\x99\x00\x000`" + // 0x305F3099: 0x00003060 + "0a0\x99\x00\x000b" + // 0x30613099: 0x00003062 + "0d0\x99\x00\x000e" + // 0x30643099: 0x00003065 + "0f0\x99\x00\x000g" + // 0x30663099: 0x00003067 + "0h0\x99\x00\x000i" + // 0x30683099: 0x00003069 + "0o0\x99\x00\x000p" + // 0x306F3099: 0x00003070 + "0o0\x9a\x00\x000q" + // 0x306F309A: 0x00003071 + "0r0\x99\x00\x000s" + // 0x30723099: 0x00003073 + "0r0\x9a\x00\x000t" + // 0x3072309A: 0x00003074 + "0u0\x99\x00\x000v" + // 0x30753099: 0x00003076 + "0u0\x9a\x00\x000w" + // 0x3075309A: 0x00003077 + "0x0\x99\x00\x000y" + // 0x30783099: 0x00003079 + "0x0\x9a\x00\x000z" + // 0x3078309A: 0x0000307A + "0{0\x99\x00\x000|" + // 0x307B3099: 0x0000307C + "0{0\x9a\x00\x000}" + // 0x307B309A: 0x0000307D + "0F0\x99\x00\x000\x94" + // 0x30463099: 0x00003094 + "0\x9d0\x99\x00\x000\x9e" + // 0x309D3099: 0x0000309E + "0\xab0\x99\x00\x000\xac" + // 0x30AB3099: 0x000030AC + "0\xad0\x99\x00\x000\xae" + // 0x30AD3099: 0x000030AE + "0\xaf0\x99\x00\x000\xb0" + // 0x30AF3099: 0x000030B0 + "0\xb10\x99\x00\x000\xb2" + // 0x30B13099: 0x000030B2 + "0\xb30\x99\x00\x000\xb4" + // 0x30B33099: 0x000030B4 + "0\xb50\x99\x00\x000\xb6" + // 0x30B53099: 0x000030B6 + "0\xb70\x99\x00\x000\xb8" + // 0x30B73099: 0x000030B8 + "0\xb90\x99\x00\x000\xba" + // 0x30B93099: 0x000030BA + "0\xbb0\x99\x00\x000\xbc" + // 0x30BB3099: 0x000030BC + "0\xbd0\x99\x00\x000\xbe" + // 0x30BD3099: 0x000030BE + "0\xbf0\x99\x00\x000\xc0" + // 0x30BF3099: 0x000030C0 + "0\xc10\x99\x00\x000\xc2" + // 0x30C13099: 0x000030C2 + "0\xc40\x99\x00\x000\xc5" + // 0x30C43099: 0x000030C5 + "0\xc60\x99\x00\x000\xc7" + // 0x30C63099: 0x000030C7 + "0\xc80\x99\x00\x000\xc9" + // 0x30C83099: 0x000030C9 + "0\xcf0\x99\x00\x000\xd0" + // 0x30CF3099: 0x000030D0 + "0\xcf0\x9a\x00\x000\xd1" + // 0x30CF309A: 0x000030D1 + "0\xd20\x99\x00\x000\xd3" + // 0x30D23099: 0x000030D3 + "0\xd20\x9a\x00\x000\xd4" + // 0x30D2309A: 0x000030D4 + "0\xd50\x99\x00\x000\xd6" + // 0x30D53099: 0x000030D6 + "0\xd50\x9a\x00\x000\xd7" + // 0x30D5309A: 0x000030D7 + "0\xd80\x99\x00\x000\xd9" + // 0x30D83099: 0x000030D9 + "0\xd80\x9a\x00\x000\xda" + // 0x30D8309A: 0x000030DA + "0\xdb0\x99\x00\x000\xdc" + // 0x30DB3099: 0x000030DC + "0\xdb0\x9a\x00\x000\xdd" + // 0x30DB309A: 0x000030DD + "0\xa60\x99\x00\x000\xf4" + // 0x30A63099: 0x000030F4 + "0\xef0\x99\x00\x000\xf7" + // 0x30EF3099: 0x000030F7 + "0\xf00\x99\x00\x000\xf8" + // 0x30F03099: 0x000030F8 + "0\xf10\x99\x00\x000\xf9" + // 0x30F13099: 0x000030F9 + "0\xf20\x99\x00\x000\xfa" + // 0x30F23099: 0x000030FA + "0\xfd0\x99\x00\x000\xfe" + // 0x30FD3099: 0x000030FE + "\x10\x99\x10\xba\x00\x01\x10\x9a" + // 0x109910BA: 0x0001109A + "\x10\x9b\x10\xba\x00\x01\x10\x9c" + // 0x109B10BA: 0x0001109C + "\x10\xa5\x10\xba\x00\x01\x10\xab" + // 0x10A510BA: 0x000110AB + "\x111\x11'\x00\x01\x11." + // 0x11311127: 0x0001112E + "\x112\x11'\x00\x01\x11/" + // 0x11321127: 0x0001112F + "\x13G\x13>\x00\x01\x13K" + // 0x1347133E: 0x0001134B + "\x13G\x13W\x00\x01\x13L" + // 0x13471357: 0x0001134C + "\x14\xb9\x14\xba\x00\x01\x14\xbb" + // 0x14B914BA: 0x000114BB + "\x14\xb9\x14\xb0\x00\x01\x14\xbc" + // 0x14B914B0: 0x000114BC + "\x14\xb9\x14\xbd\x00\x01\x14\xbe" + // 0x14B914BD: 0x000114BE + "\x15\xb8\x15\xaf\x00\x01\x15\xba" + // 0x15B815AF: 0x000115BA + "\x15\xb9\x15\xaf\x00\x01\x15\xbb" + // 0x15B915AF: 0x000115BB + "" + // Total size of tables: 53KB (54006 bytes) diff --git a/vendor/golang.org/x/text/unicode/norm/transform.go b/vendor/golang.org/x/text/unicode/norm/transform.go index 9f47efbaf6..a1d366ae48 100644 --- a/vendor/golang.org/x/text/unicode/norm/transform.go +++ b/vendor/golang.org/x/text/unicode/norm/transform.go @@ -18,7 +18,6 @@ func (Form) Reset() {} // Users should either catch ErrShortDst and allow dst to grow or have dst be at // least of size MaxTransformChunkSize to be guaranteed of progress. func (f Form) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) { - n := 0 // Cap the maximum number of src bytes to check. b := src eof := atEOF @@ -27,13 +26,14 @@ func (f Form) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) eof = false b = b[:ns] } - i, ok := formTable[f].quickSpan(inputBytes(b), n, len(b), eof) - n += copy(dst[n:], b[n:i]) + i, ok := formTable[f].quickSpan(inputBytes(b), 0, len(b), eof) + n := copy(dst, b[:i]) if !ok { nDst, nSrc, err = f.transform(dst[n:], src[n:], atEOF) return nDst + n, nSrc + n, err } - if n < len(src) && !atEOF { + + if err == nil && n < len(src) && !atEOF { err = transform.ErrShortSrc } return n, n, err @@ -79,7 +79,7 @@ func (f Form) transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) nSrc += n nDst += n if ok { - if n < rb.nsrc && !atEOF { + if err == nil && n < rb.nsrc && !atEOF { err = transform.ErrShortSrc } return nDst, nSrc, err diff --git a/vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go b/vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go index b06f42fe65..1a8a27b655 100644 --- a/vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go +++ b/vendor/google.golang.org/genproto/googleapis/api/annotations/http.pb.go @@ -42,7 +42,7 @@ func (m *Http) Reset() { *m = Http{} } func (m *Http) String() string { return proto.CompactTextString(m) } func (*Http) ProtoMessage() {} func (*Http) Descriptor() ([]byte, []int) { - return fileDescriptor_http_98c2ff955ca74b42, []int{0} + return fileDescriptor_http_e457621dddd7365b, []int{0} } func (m *Http) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Http.Unmarshal(m, b) @@ -315,6 +315,10 @@ type HttpRule struct { // body. NOTE: the referred field must not be a repeated field and must be // present at the top-level of request message type. Body string `protobuf:"bytes,7,opt,name=body,proto3" json:"body,omitempty"` + // Optional. The name of the response field whose value is mapped to the HTTP + // body of response. Other response fields are ignored. When + // not set, the response message will be used as HTTP body of response. + ResponseBody string `protobuf:"bytes,12,opt,name=response_body,json=responseBody,proto3" json:"response_body,omitempty"` // Additional HTTP bindings for the selector. Nested bindings must // not contain an `additional_bindings` field themselves (that is, // the nesting may only be one level deep). @@ -328,7 +332,7 @@ func (m *HttpRule) Reset() { *m = HttpRule{} } func (m *HttpRule) String() string { return proto.CompactTextString(m) } func (*HttpRule) ProtoMessage() {} func (*HttpRule) Descriptor() ([]byte, []int) { - return fileDescriptor_http_98c2ff955ca74b42, []int{1} + return fileDescriptor_http_e457621dddd7365b, []int{1} } func (m *HttpRule) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_HttpRule.Unmarshal(m, b) @@ -451,6 +455,13 @@ func (m *HttpRule) GetBody() string { return "" } +func (m *HttpRule) GetResponseBody() string { + if m != nil { + return m.ResponseBody + } + return "" +} + func (m *HttpRule) GetAdditionalBindings() []*HttpRule { if m != nil { return m.AdditionalBindings @@ -603,7 +614,7 @@ func (m *CustomHttpPattern) Reset() { *m = CustomHttpPattern{} } func (m *CustomHttpPattern) String() string { return proto.CompactTextString(m) } func (*CustomHttpPattern) ProtoMessage() {} func (*CustomHttpPattern) Descriptor() ([]byte, []int) { - return fileDescriptor_http_98c2ff955ca74b42, []int{2} + return fileDescriptor_http_e457621dddd7365b, []int{2} } func (m *CustomHttpPattern) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CustomHttpPattern.Unmarshal(m, b) @@ -643,34 +654,35 @@ func init() { proto.RegisterType((*CustomHttpPattern)(nil), "google.api.CustomHttpPattern") } -func init() { proto.RegisterFile("google/api/http.proto", fileDescriptor_http_98c2ff955ca74b42) } - -var fileDescriptor_http_98c2ff955ca74b42 = []byte{ - // 401 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0x41, 0xab, 0x13, 0x31, - 0x10, 0xc7, 0xdd, 0x76, 0xdb, 0xd7, 0x4e, 0x41, 0x30, 0x3e, 0x25, 0x88, 0x62, 0xe9, 0xa9, 0x78, - 0xd8, 0xc2, 0xf3, 0xe0, 0xe1, 0x9d, 0x5e, 0xb5, 0xf8, 0xbc, 0x95, 0x3d, 0x7a, 0x29, 0xe9, 0x66, - 0x4c, 0xa3, 0x79, 0x49, 0xd8, 0xcc, 0x8a, 0xfd, 0x3a, 0x7e, 0x07, 0xbf, 0x9b, 0x47, 0x49, 0x36, - 0xb5, 0x05, 0xc1, 0xdb, 0xfc, 0xff, 0xf3, 0xcb, 0xcc, 0x64, 0x18, 0x78, 0xa6, 0x9c, 0x53, 0x06, - 0x57, 0xc2, 0xeb, 0xd5, 0x81, 0xc8, 0x57, 0xbe, 0x75, 0xe4, 0x18, 0xf4, 0x76, 0x25, 0xbc, 0x5e, - 0x1c, 0xa1, 0xbc, 0x27, 0xf2, 0xec, 0x0d, 0x8c, 0xda, 0xce, 0x60, 0xe0, 0xc5, 0x7c, 0xb8, 0x9c, - 0xdd, 0x5c, 0x57, 0x67, 0xa6, 0x8a, 0x40, 0xdd, 0x19, 0xac, 0x7b, 0x84, 0x6d, 0xe0, 0xf5, 0x97, - 0xce, 0x98, 0xe3, 0x4e, 0x62, 0xe3, 0x24, 0xee, 0x5a, 0x0c, 0xd8, 0x7e, 0x47, 0xb9, 0xc3, 0x1f, - 0x5e, 0xd8, 0xa0, 0x9d, 0xe5, 0x83, 0x79, 0xb1, 0x9c, 0xd4, 0x2f, 0x13, 0xf6, 0x21, 0x51, 0x75, - 0x86, 0x36, 0x27, 0x66, 0xf1, 0x6b, 0x00, 0x93, 0x53, 0x69, 0xf6, 0x02, 0x26, 0x01, 0x0d, 0x36, - 0xe4, 0x5a, 0x5e, 0xcc, 0x8b, 0xe5, 0xb4, 0xfe, 0xab, 0x19, 0x83, 0xa1, 0x42, 0x4a, 0x35, 0xa7, - 0xf7, 0x8f, 0xea, 0x28, 0xa2, 0xe7, 0x3b, 0xe2, 0xc3, 0x93, 0xe7, 0x3b, 0x62, 0xd7, 0x50, 0x7a, - 0x17, 0x88, 0x97, 0xd9, 0x4c, 0x8a, 0x71, 0x18, 0x4b, 0x34, 0x48, 0xc8, 0x47, 0xd9, 0xcf, 0x9a, - 0x3d, 0x87, 0x91, 0x17, 0xd4, 0x1c, 0xf8, 0x38, 0x27, 0x7a, 0xc9, 0xde, 0xc1, 0xb8, 0xe9, 0x02, - 0xb9, 0x07, 0x3e, 0x99, 0x17, 0xcb, 0xd9, 0xcd, 0xab, 0xcb, 0x65, 0xbc, 0x4f, 0x99, 0x38, 0xf7, - 0x56, 0x10, 0x61, 0x6b, 0x63, 0xc1, 0x1e, 0x67, 0x0c, 0xca, 0xbd, 0x93, 0x47, 0x7e, 0x95, 0x3e, - 0x90, 0x62, 0xb6, 0x81, 0xa7, 0x42, 0x4a, 0x4d, 0xda, 0x59, 0x61, 0x76, 0x7b, 0x6d, 0xa5, 0xb6, - 0x2a, 0xf0, 0xd9, 0x7f, 0xd6, 0xcc, 0xce, 0x0f, 0xd6, 0x99, 0x5f, 0x4f, 0xe1, 0xca, 0xf7, 0xfd, - 0x16, 0xb7, 0xf0, 0xe4, 0x9f, 0x21, 0x62, 0xeb, 0x6f, 0xda, 0xca, 0xbc, 0xbb, 0x14, 0x47, 0xcf, - 0x0b, 0x3a, 0xf4, 0x8b, 0xab, 0x53, 0xbc, 0xfe, 0x0a, 0x8f, 0x1b, 0xf7, 0x70, 0xd1, 0x76, 0x3d, - 0x4d, 0x65, 0xe2, 0x61, 0x6c, 0x8b, 0xcf, 0x77, 0x39, 0xa1, 0x9c, 0x11, 0x56, 0x55, 0xae, 0x55, - 0x2b, 0x85, 0x36, 0x9d, 0xcd, 0xaa, 0x4f, 0x09, 0xaf, 0x43, 0x3a, 0x28, 0x61, 0xad, 0x23, 0x11, - 0xc7, 0x0c, 0xb7, 0x17, 0xf1, 0xef, 0xa2, 0xf8, 0x39, 0x28, 0x3f, 0xde, 0x6d, 0x3f, 0xed, 0xc7, - 0xe9, 0xdd, 0xdb, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x73, 0x2c, 0xed, 0xfb, 0x87, 0x02, 0x00, - 0x00, +func init() { proto.RegisterFile("google/api/http.proto", fileDescriptor_http_e457621dddd7365b) } + +var fileDescriptor_http_e457621dddd7365b = []byte{ + // 419 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0xc1, 0x8e, 0xd3, 0x30, + 0x10, 0x86, 0x49, 0x9b, 0x76, 0xdb, 0xe9, 0x82, 0x84, 0x59, 0x90, 0x85, 0x40, 0x54, 0xe5, 0x52, + 0x71, 0x48, 0xa5, 0xe5, 0xc0, 0x61, 0x4f, 0x1b, 0xa8, 0x58, 0x6e, 0x55, 0x8e, 0x5c, 0x22, 0x37, + 0x1e, 0x52, 0x83, 0xd7, 0xb6, 0xe2, 0x09, 0xa2, 0xaf, 0xc3, 0x63, 0xf1, 0x24, 0x1c, 0x91, 0x9d, + 0x84, 0x56, 0x42, 0xe2, 0x36, 0xf3, 0xff, 0x9f, 0xa7, 0x7f, 0x27, 0x03, 0x4f, 0x6b, 0x6b, 0x6b, + 0x8d, 0x1b, 0xe1, 0xd4, 0xe6, 0x40, 0xe4, 0x32, 0xd7, 0x58, 0xb2, 0x0c, 0x3a, 0x39, 0x13, 0x4e, + 0xad, 0x8e, 0x90, 0xde, 0x11, 0x39, 0xf6, 0x06, 0x26, 0x4d, 0xab, 0xd1, 0xf3, 0x64, 0x39, 0x5e, + 0x2f, 0xae, 0xaf, 0xb2, 0x13, 0x93, 0x05, 0xa0, 0x68, 0x35, 0x16, 0x1d, 0xc2, 0xb6, 0xf0, 0xea, + 0x4b, 0xab, 0xf5, 0xb1, 0x94, 0x58, 0x59, 0x89, 0x65, 0x83, 0x1e, 0x9b, 0xef, 0x28, 0x4b, 0xfc, + 0xe1, 0x84, 0xf1, 0xca, 0x1a, 0x3e, 0x5a, 0x26, 0xeb, 0x59, 0xf1, 0x22, 0x62, 0x1f, 0x22, 0x55, + 0xf4, 0xd0, 0x76, 0x60, 0x56, 0xbf, 0x46, 0x30, 0x1b, 0x46, 0xb3, 0xe7, 0x30, 0xf3, 0xa8, 0xb1, + 0x22, 0xdb, 0xf0, 0x64, 0x99, 0xac, 0xe7, 0xc5, 0xdf, 0x9e, 0x31, 0x18, 0xd7, 0x48, 0x71, 0xe6, + 0xfc, 0xee, 0x41, 0x11, 0x9a, 0xa0, 0xb9, 0x96, 0xf8, 0x78, 0xd0, 0x5c, 0x4b, 0xec, 0x0a, 0x52, + 0x67, 0x3d, 0xf1, 0xb4, 0x17, 0x63, 0xc7, 0x38, 0x4c, 0x25, 0x6a, 0x24, 0xe4, 0x93, 0x5e, 0xef, + 0x7b, 0xf6, 0x0c, 0x26, 0x4e, 0x50, 0x75, 0xe0, 0xd3, 0xde, 0xe8, 0x5a, 0xf6, 0x0e, 0xa6, 0x55, + 0xeb, 0xc9, 0xde, 0xf3, 0xd9, 0x32, 0x59, 0x2f, 0xae, 0x5f, 0x9e, 0x2f, 0xe3, 0x7d, 0x74, 0x42, + 0xee, 0x9d, 0x20, 0xc2, 0xc6, 0x84, 0x81, 0x1d, 0xce, 0x18, 0xa4, 0x7b, 0x2b, 0x8f, 0xfc, 0x22, + 0xfe, 0x81, 0x58, 0xb3, 0xd7, 0xf0, 0xb0, 0x41, 0xef, 0xac, 0xf1, 0x58, 0x46, 0xf3, 0x32, 0x9a, + 0x97, 0x83, 0x98, 0x07, 0x68, 0x0b, 0x4f, 0x84, 0x94, 0x8a, 0x94, 0x35, 0x42, 0x97, 0x7b, 0x65, + 0xa4, 0x32, 0xb5, 0xe7, 0x8b, 0xff, 0x7c, 0x0b, 0x76, 0x7a, 0x90, 0xf7, 0x7c, 0x3e, 0x87, 0x0b, + 0xd7, 0x85, 0x5a, 0xdd, 0xc0, 0xe3, 0x7f, 0x92, 0x86, 0x7c, 0xdf, 0x94, 0x91, 0xfd, 0x82, 0x63, + 0x1d, 0x34, 0x27, 0xe8, 0xd0, 0x6d, 0xb7, 0x88, 0x75, 0xfe, 0x15, 0x1e, 0x55, 0xf6, 0xfe, 0xec, + 0x67, 0xf3, 0x79, 0x1c, 0x13, 0xae, 0x67, 0x97, 0x7c, 0xbe, 0xed, 0x8d, 0xda, 0x6a, 0x61, 0xea, + 0xcc, 0x36, 0xf5, 0xa6, 0x46, 0x13, 0x6f, 0x6b, 0xd3, 0x59, 0xc2, 0x29, 0x1f, 0xaf, 0x4e, 0x18, + 0x63, 0x49, 0x84, 0x98, 0xfe, 0xe6, 0xac, 0xfe, 0x9d, 0x24, 0x3f, 0x47, 0xe9, 0xc7, 0xdb, 0xdd, + 0xa7, 0xfd, 0x34, 0xbe, 0x7b, 0xfb, 0x27, 0x00, 0x00, 0xff, 0xff, 0xae, 0xde, 0xa1, 0xd0, 0xac, + 0x02, 0x00, 0x00, } diff --git a/vendor/google.golang.org/grpc/.travis.yml b/vendor/google.golang.org/grpc/.travis.yml index 65ae29eb84..f0f723f356 100644 --- a/vendor/google.golang.org/grpc/.travis.yml +++ b/vendor/google.golang.org/grpc/.travis.yml @@ -1,24 +1,39 @@ language: go -go: - - 1.6.x - - 1.7.x - - 1.8.x - - 1.9.x - - 1.10.x - matrix: include: - - go: 1.10.x + - go: 1.12.x + env: VET=1 GO111MODULE=on + - go: 1.12.x + env: RACE=1 GO111MODULE=on + - go: 1.12.x env: RUN386=1 + - go: 1.12.x + env: GRPC_GO_RETRY=on + - go: 1.11.x + env: GO111MODULE=on + - go: 1.10.x + - go: 1.9.x + - go: 1.9.x + env: GAE=1 go_import_path: google.golang.org/grpc before_install: - - if [[ "$TRAVIS_GO_VERSION" = 1.10* && "$GOARCH" != "386" ]]; then ./vet.sh -install || exit 1; fi + - if [[ "${GO111MODULE}" = "on" ]]; then mkdir "${HOME}/go"; export GOPATH="${HOME}/go"; fi + - if [[ -n "${RUN386}" ]]; then export GOARCH=386; fi + - if [[ "${TRAVIS_EVENT_TYPE}" = "cron" && -z "${RUN386}" ]]; then RACE=1; fi + - if [[ "${TRAVIS_EVENT_TYPE}" != "cron" ]]; then export VET_SKIP_PROTO=1; fi + +install: + - try3() { eval "$*" || eval "$*" || eval "$*"; } + - try3 'if [[ "${GO111MODULE}" = "on" ]]; then go mod download; else make testdeps; fi' + - if [[ "${GAE}" = 1 ]]; then source ./install_gae.sh; make testappenginedeps; fi + - if [[ "${VET}" = 1 ]]; then ./vet.sh -install; fi script: - - if [[ -n "$RUN386" ]]; then export GOARCH=386; fi - - if [[ "$TRAVIS_GO_VERSION" = 1.10* && "$GOARCH" != "386" ]]; then ./vet.sh || exit 1; fi - - make test || exit 1 - - if [[ "$GOARCH" != "386" ]]; then make testrace; fi + - set -e + - if [[ "${VET}" = 1 ]]; then ./vet.sh; fi + - if [[ "${GAE}" = 1 ]]; then make testappengine; exit 0; fi + - if [[ "${RACE}" = 1 ]]; then make testrace; exit 0; fi + - make test diff --git a/vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md b/vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md new file mode 100644 index 0000000000..9d4213ebca --- /dev/null +++ b/vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md @@ -0,0 +1,3 @@ +## Community Code of Conduct + +gRPC follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). diff --git a/vendor/google.golang.org/grpc/CONTRIBUTING.md b/vendor/google.golang.org/grpc/CONTRIBUTING.md index 8ec6c95747..4f1567e2f9 100644 --- a/vendor/google.golang.org/grpc/CONTRIBUTING.md +++ b/vendor/google.golang.org/grpc/CONTRIBUTING.md @@ -1,6 +1,8 @@ # How to contribute -We definitely welcome your patches and contributions to gRPC! +We definitely welcome your patches and contributions to gRPC! Please read the gRPC +organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md) +and [contribution guidelines](https://github.com/grpc/grpc-community/blob/master/CONTRIBUTING.md) before proceeding. If you are new to github, please start by reading [Pull Request howto](https://help.github.com/articles/about-pull-requests/) @@ -11,22 +13,50 @@ In order to protect both you and ourselves, you will need to sign the ## Guidelines for Pull Requests How to get your contributions merged smoothly and quickly. - -- Create **small PRs** that are narrowly focused on **addressing a single concern**. We often times receive PRs that are trying to fix several things at a time, but only one fix is considered acceptable, nothing gets merged and both author's & review's time is wasted. Create more PRs to address different concerns and everyone will be happy. - -- For speculative changes, consider opening an issue and discussing it first. If you are suggesting a behavioral or API change, consider starting with a [gRFC proposal](https://github.com/grpc/proposal). - -- Provide a good **PR description** as a record of **what** change is being made and **why** it was made. Link to a github issue if it exists. - -- Don't fix code style and formatting unless you are already changing that line to address an issue. PRs with irrelevant changes won't be merged. If you do want to fix formatting or style, do that in a separate PR. - -- Unless your PR is trivial, you should expect there will be reviewer comments that you'll need to address before merging. We expect you to be reasonably responsive to those comments, otherwise the PR will be closed after 2-3 weeks of inactivity. - -- Maintain **clean commit history** and use **meaningful commit messages**. PRs with messy commit history are difficult to review and won't be merged. Use `rebase -i upstream/master` to curate your commit history and/or to bring in latest changes from master (but avoid rebasing in the middle of a code review). - -- Keep your PR up to date with upstream/master (if there are merge conflicts, we can't really merge your change). - -- **All tests need to be passing** before your change can be merged. We recommend you **run tests locally** before creating your PR to catch breakages early on. + +- Create **small PRs** that are narrowly focused on **addressing a single + concern**. We often times receive PRs that are trying to fix several things at + a time, but only one fix is considered acceptable, nothing gets merged and + both author's & review's time is wasted. Create more PRs to address different + concerns and everyone will be happy. + +- The grpc package should only depend on standard Go packages and a small number + of exceptions. If your contribution introduces new dependencies which are NOT + in the [list](https://godoc.org/google.golang.org/grpc?imports), you need a + discussion with gRPC-Go authors and consultants. + +- For speculative changes, consider opening an issue and discussing it first. If + you are suggesting a behavioral or API change, consider starting with a [gRFC + proposal](https://github.com/grpc/proposal). + +- Provide a good **PR description** as a record of **what** change is being made + and **why** it was made. Link to a github issue if it exists. + +- Don't fix code style and formatting unless you are already changing that line + to address an issue. PRs with irrelevant changes won't be merged. If you do + want to fix formatting or style, do that in a separate PR. + +- Unless your PR is trivial, you should expect there will be reviewer comments + that you'll need to address before merging. We expect you to be reasonably + responsive to those comments, otherwise the PR will be closed after 2-3 weeks + of inactivity. + +- Maintain **clean commit history** and use **meaningful commit messages**. PRs + with messy commit history are difficult to review and won't be merged. Use + `rebase -i upstream/master` to curate your commit history and/or to bring in + latest changes from master (but avoid rebasing in the middle of a code + review). + +- Keep your PR up to date with upstream/master (if there are merge conflicts, we + can't really merge your change). + +- **All tests need to be passing** before your change can be merged. We + recommend you **run tests locally** before creating your PR to catch breakages + early on. + - `make all` to test everything, OR + - `make vet` to catch vet errors + - `make test` to run the tests + - `make testrace` to run tests in race mode + - optional `make testappengine` to run tests with appengine - Exceptions to the rules can be made if there's a compelling reason for doing so. - diff --git a/vendor/google.golang.org/grpc/GOVERNANCE.md b/vendor/google.golang.org/grpc/GOVERNANCE.md new file mode 100644 index 0000000000..d6ff267471 --- /dev/null +++ b/vendor/google.golang.org/grpc/GOVERNANCE.md @@ -0,0 +1 @@ +This repository is governed by the gRPC organization's [governance rules](https://github.com/grpc/grpc-community/blob/master/governance.md). diff --git a/vendor/google.golang.org/grpc/MAINTAINERS.md b/vendor/google.golang.org/grpc/MAINTAINERS.md new file mode 100644 index 0000000000..093c82b3af --- /dev/null +++ b/vendor/google.golang.org/grpc/MAINTAINERS.md @@ -0,0 +1,27 @@ +This page lists all active maintainers of this repository. If you were a +maintainer and would like to add your name to the Emeritus list, please send us a +PR. + +See [GOVERNANCE.md](https://github.com/grpc/grpc-community/blob/master/governance.md) +for governance guidelines and how to become a maintainer. +See [CONTRIBUTING.md](https://github.com/grpc/grpc-community/blob/master/CONTRIBUTING.md) +for general contribution guidelines. + +## Maintainers (in alphabetical order) +- [canguler](https://github.com/canguler), Google LLC +- [cesarghali](https://github.com/cesarghali), Google LLC +- [dfawley](https://github.com/dfawley), Google LLC +- [easwars](https://github.com/easwars), Google LLC +- [jadekler](https://github.com/jadekler), Google LLC +- [menghanl](https://github.com/menghanl), Google LLC +- [srini100](https://github.com/srini100), Google LLC + +## Emeritus Maintainers (in alphabetical order) +- [adelez](https://github.com/adelez), Google LLC +- [iamqizhao](https://github.com/iamqizhao), Google LLC +- [jtattermusch](https://github.com/jtattermusch), Google LLC +- [lyuxuan](https://github.com/lyuxuan), Google LLC +- [makmukhi](https://github.com/makmukhi), Google LLC +- [matt-kwong](https://github.com/matt-kwong), Google LLC +- [nicolasnoble](https://github.com/nicolasnoble), Google LLC +- [yongni](https://github.com/yongni), Google LLC diff --git a/vendor/google.golang.org/grpc/Makefile b/vendor/google.golang.org/grpc/Makefile index c44534376a..db982aabde 100644 --- a/vendor/google.golang.org/grpc/Makefile +++ b/vendor/google.golang.org/grpc/Makefile @@ -1,20 +1,14 @@ -all: test testrace - -deps: - go get -d -v google.golang.org/grpc/... - -updatedeps: - go get -d -v -u -f google.golang.org/grpc/... - -testdeps: - go get -d -v -t google.golang.org/grpc/... - -updatetestdeps: - go get -d -v -t -u -f google.golang.org/grpc/... +all: vet test testrace build: deps go build google.golang.org/grpc/... +clean: + go clean -i google.golang.org/grpc/... + +deps: + go get -d -v google.golang.org/grpc/... + proto: @ if ! which protoc > /dev/null; then \ echo "error: protoc not installed" >&2; \ @@ -23,23 +17,44 @@ proto: go generate google.golang.org/grpc/... test: testdeps - go test -cpu 1,4 -timeout 5m google.golang.org/grpc/... + go test -cpu 1,4 -timeout 7m google.golang.org/grpc/... + +testappengine: testappenginedeps + goapp test -cpu 1,4 -timeout 7m google.golang.org/grpc/... + +testappenginedeps: + goapp get -d -v -t -tags 'appengine appenginevm' google.golang.org/grpc/... + +testdeps: + go get -d -v -t google.golang.org/grpc/... testrace: testdeps go test -race -cpu 1,4 -timeout 7m google.golang.org/grpc/... -clean: - go clean -i google.golang.org/grpc/... +updatedeps: + go get -d -v -u -f google.golang.org/grpc/... + +updatetestdeps: + go get -d -v -t -u -f google.golang.org/grpc/... + +vet: vetdeps + ./vet.sh + +vetdeps: + ./vet.sh -install .PHONY: \ all \ - deps \ - updatedeps \ - testdeps \ - updatetestdeps \ build \ + clean \ + deps \ proto \ test \ + testappengine \ + testappenginedeps \ + testdeps \ testrace \ - clean \ - coverage + updatedeps \ + updatetestdeps \ + vet \ + vetdeps diff --git a/vendor/google.golang.org/grpc/README.md b/vendor/google.golang.org/grpc/README.md index 118327bb17..afbc43db51 100644 --- a/vendor/google.golang.org/grpc/README.md +++ b/vendor/google.golang.org/grpc/README.md @@ -1,46 +1,121 @@ # gRPC-Go -[![Build Status](https://travis-ci.org/grpc/grpc-go.svg)](https://travis-ci.org/grpc/grpc-go) [![GoDoc](https://godoc.org/google.golang.org/grpc?status.svg)](https://godoc.org/google.golang.org/grpc) [![GoReportCard](https://goreportcard.com/badge/grpc/grpc-go)](https://goreportcard.com/report/github.com/grpc/grpc-go) +[![Build Status](https://travis-ci.org/grpc/grpc-go.svg)](https://travis-ci.org/grpc/grpc-go) +[![GoDoc](https://godoc.org/google.golang.org/grpc?status.svg)](https://godoc.org/google.golang.org/grpc) +[![GoReportCard](https://goreportcard.com/badge/grpc/grpc-go)](https://goreportcard.com/report/github.com/grpc/grpc-go) -The Go implementation of [gRPC](https://grpc.io/): A high performance, open source, general RPC framework that puts mobile and HTTP/2 first. For more information see the [gRPC Quick Start: Go](https://grpc.io/docs/quickstart/go.html) guide. +The Go implementation of [gRPC](https://grpc.io/): A high performance, open +source, general RPC framework that puts mobile and HTTP/2 first. For more +information see the [gRPC Quick Start: +Go](https://grpc.io/docs/quickstart/go.html) guide. Installation ------------ -To install this package, you need to install Go and setup your Go workspace on your computer. The simplest way to install the library is to run: +To install this package, you need to install Go and setup your Go workspace on +your computer. The simplest way to install the library is to run: ``` $ go get -u google.golang.org/grpc ``` -Prerequisites -------------- +With Go module support (Go 1.11+), simply `import "google.golang.org/grpc"` in +your source code and `go [build|run|test]` will automatically download the +necessary dependencies ([Go modules +ref](https://github.com/golang/go/wiki/Modules)). -This requires Go 1.6 or later. Go 1.7 will be required as of the next gRPC-Go -release (1.8). +If you are trying to access grpc-go from within China, please see the +[FAQ](#FAQ) below. -Constraints ------------ -The grpc package should only depend on standard Go packages and a small number of exceptions. If your contribution introduces new dependencies which are NOT in the [list](http://godoc.org/google.golang.org/grpc?imports), you need a discussion with gRPC-Go authors and consultants. +Prerequisites +------------- +gRPC-Go requires Go 1.9 or later. Documentation ------------- -See [API documentation](https://godoc.org/google.golang.org/grpc) for package and API descriptions and find examples in the [examples directory](examples/). +- See [godoc](https://godoc.org/google.golang.org/grpc) for package and API + descriptions. +- Documentation on specific topics can be found in the [Documentation + directory](Documentation/). +- Examples can be found in the [examples directory](examples/). Performance ----------- -See the current benchmarks for some of the languages supported in [this dashboard](https://performance-dot-grpc-testing.appspot.com/explore?dashboard=5652536396611584&widget=490377658&container=1286539696). +Performance benchmark data for grpc-go and other languages is maintained in +[this +dashboard](https://performance-dot-grpc-testing.appspot.com/explore?dashboard=5652536396611584&widget=490377658&container=1286539696). Status ------ -General Availability [Google Cloud Platform Launch Stages](https://cloud.google.com/terms/launch-stages). +General Availability [Google Cloud Platform Launch +Stages](https://cloud.google.com/terms/launch-stages). FAQ --- +#### I/O Timeout Errors + +The `golang.org` domain may be blocked from some countries. `go get` usually +produces an error like the following when this happens: + +``` +$ go get -u google.golang.org/grpc +package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout) +``` + +To build Go code, there are several options: + +- Set up a VPN and access google.golang.org through that. + +- Without Go module support: `git clone` the repo manually: + + ``` + git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc + ``` + + You will need to do the same for all of grpc's dependencies in `golang.org`, + e.g. `golang.org/x/net`. + +- With Go module support: it is possible to use the `replace` feature of `go + mod` to create aliases for golang.org packages. In your project's directory: + + ``` + go mod edit -replace=google.golang.org/grpc=github.com/grpc/grpc-go@latest + go mod tidy + go mod vendor + go build -mod=vendor + ``` + + Again, this will need to be done for all transitive dependencies hosted on + golang.org as well. Please refer to [this + issue](https://github.com/golang/go/issues/28652) in the golang repo regarding + this concern. + #### Compiling error, undefined: grpc.SupportPackageIsVersion Please update proto package, gRPC package and rebuild the proto files: - `go get -u github.com/golang/protobuf/{proto,protoc-gen-go}` - `go get -u google.golang.org/grpc` - `protoc --go_out=plugins=grpc:. *.proto` + +#### How to turn on logging + +The default logger is controlled by the environment variables. Turn everything +on by setting: + +``` +GRPC_GO_LOG_VERBOSITY_LEVEL=99 GRPC_GO_LOG_SEVERITY_LEVEL=info +``` + +#### The RPC failed with error `"code = Unavailable desc = transport is closing"` + +This error means the connection the RPC is using was closed, and there are many +possible reasons, including: + 1. mis-configured transport credentials, connection failed on handshaking + 1. bytes disrupted, possibly by a proxy in between + 1. server shutdown + +It can be tricky to debug this because the error happens on the client side but +the root cause of the connection being closed is on the server side. Turn on +logging on __both client and server__, and see if there are any transport +errors. diff --git a/vendor/google.golang.org/grpc/backoff.go b/vendor/google.golang.org/grpc/backoff.go index c40facce51..97c6e2568f 100644 --- a/vendor/google.golang.org/grpc/backoff.go +++ b/vendor/google.golang.org/grpc/backoff.go @@ -16,81 +16,23 @@ * */ +// See internal/backoff package for the backoff implementation. This file is +// kept for the exported types and API backward compatibility. + package grpc import ( - "math/rand" "time" ) // DefaultBackoffConfig uses values specified for backoff in // https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. var DefaultBackoffConfig = BackoffConfig{ - MaxDelay: 120 * time.Second, - baseDelay: 1.0 * time.Second, - factor: 1.6, - jitter: 0.2, -} - -// backoffStrategy defines the methodology for backing off after a grpc -// connection failure. -// -// This is unexported until the gRPC project decides whether or not to allow -// alternative backoff strategies. Once a decision is made, this type and its -// method may be exported. -type backoffStrategy interface { - // backoff returns the amount of time to wait before the next retry given - // the number of consecutive failures. - backoff(retries int) time.Duration + MaxDelay: 120 * time.Second, } // BackoffConfig defines the parameters for the default gRPC backoff strategy. type BackoffConfig struct { // MaxDelay is the upper bound of backoff delay. MaxDelay time.Duration - - // TODO(stevvooe): The following fields are not exported, as allowing - // changes would violate the current gRPC specification for backoff. If - // gRPC decides to allow more interesting backoff strategies, these fields - // may be opened up in the future. - - // baseDelay is the amount of time to wait before retrying after the first - // failure. - baseDelay time.Duration - - // factor is applied to the backoff after each retry. - factor float64 - - // jitter provides a range to randomize backoff delays. - jitter float64 -} - -func setDefaults(bc *BackoffConfig) { - md := bc.MaxDelay - *bc = DefaultBackoffConfig - - if md > 0 { - bc.MaxDelay = md - } -} - -func (bc BackoffConfig) backoff(retries int) time.Duration { - if retries == 0 { - return bc.baseDelay - } - backoff, max := float64(bc.baseDelay), float64(bc.MaxDelay) - for backoff < max && retries > 0 { - backoff *= bc.factor - retries-- - } - if backoff > max { - backoff = max - } - // Randomize backoff delays so that if a cluster of requests start at - // the same time, they won't operate in lockstep. - backoff *= 1 + bc.jitter*(rand.Float64()*2-1) - if backoff < 0 { - return 0 - } - return time.Duration(backoff) } diff --git a/vendor/google.golang.org/grpc/balancer.go b/vendor/google.golang.org/grpc/balancer.go index 300da6c5e8..a8eb0f4760 100644 --- a/vendor/google.golang.org/grpc/balancer.go +++ b/vendor/google.golang.org/grpc/balancer.go @@ -19,11 +19,10 @@ package grpc import ( - "fmt" + "context" "net" "sync" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" "google.golang.org/grpc/grpclog" @@ -32,7 +31,8 @@ import ( ) // Address represents a server the client connects to. -// This is the EXPERIMENTAL API and may be changed or extended in the future. +// +// Deprecated: please use package balancer. type Address struct { // Addr is the server address on which a connection will be established. Addr string @@ -42,6 +42,8 @@ type Address struct { } // BalancerConfig specifies the configurations for Balancer. +// +// Deprecated: please use package balancer. May be removed in a future 1.x release. type BalancerConfig struct { // DialCreds is the transport credential the Balancer implementation can // use to dial to a remote load balancer server. The Balancer implementations @@ -54,7 +56,8 @@ type BalancerConfig struct { } // BalancerGetOptions configures a Get call. -// This is the EXPERIMENTAL API and may be changed or extended in the future. +// +// Deprecated: please use package balancer. May be removed in a future 1.x release. type BalancerGetOptions struct { // BlockingWait specifies whether Get should block when there is no // connected address. @@ -62,7 +65,8 @@ type BalancerGetOptions struct { } // Balancer chooses network addresses for RPCs. -// This is the EXPERIMENTAL API and may be changed or extended in the future. +// +// Deprecated: please use package balancer. May be removed in a future 1.x release. type Balancer interface { // Start does the initialization work to bootstrap a Balancer. For example, // this function may start the name resolution and watch the updates. It will @@ -113,28 +117,10 @@ type Balancer interface { Close() error } -// downErr implements net.Error. It is constructed by gRPC internals and passed to the down -// call of Balancer. -type downErr struct { - timeout bool - temporary bool - desc string -} - -func (e downErr) Error() string { return e.desc } -func (e downErr) Timeout() bool { return e.timeout } -func (e downErr) Temporary() bool { return e.temporary } - -func downErrorf(timeout, temporary bool, format string, a ...interface{}) downErr { - return downErr{ - timeout: timeout, - temporary: temporary, - desc: fmt.Sprintf(format, a...), - } -} - // RoundRobin returns a Balancer that selects addresses round-robin. It uses r to watch // the name resolution updates and updates the addresses available correspondingly. +// +// Deprecated: please use package balancer/roundrobin. May be removed in a future 1.x release. func RoundRobin(r naming.Resolver) Balancer { return &roundRobin{r: r} } @@ -403,7 +389,3 @@ func (rr *roundRobin) Close() error { type pickFirst struct { *roundRobin } - -func pickFirstBalancerV1(r naming.Resolver) Balancer { - return &pickFirst{&roundRobin{r: r}} -} diff --git a/vendor/google.golang.org/grpc/balancer/balancer.go b/vendor/google.golang.org/grpc/balancer/balancer.go index 219a2940c6..c266f4ec10 100644 --- a/vendor/google.golang.org/grpc/balancer/balancer.go +++ b/vendor/google.golang.org/grpc/balancer/balancer.go @@ -21,14 +21,18 @@ package balancer import ( + "context" + "encoding/json" "errors" "net" "strings" - "golang.org/x/net/context" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/credentials" + "google.golang.org/grpc/internal" + "google.golang.org/grpc/metadata" "google.golang.org/grpc/resolver" + "google.golang.org/grpc/serviceconfig" ) var ( @@ -36,15 +40,33 @@ var ( m = make(map[string]Builder) ) -// Register registers the balancer builder to the balancer map. -// b.Name (lowercased) will be used as the name registered with -// this builder. +// Register registers the balancer builder to the balancer map. b.Name +// (lowercased) will be used as the name registered with this builder. If the +// Builder implements ConfigParser, ParseConfig will be called when new service +// configs are received by the resolver, and the result will be provided to the +// Balancer in UpdateClientConnState. +// +// NOTE: this function must only be called during initialization time (i.e. in +// an init() function), and is not thread-safe. If multiple Balancers are +// registered with the same name, the one registered last will take effect. func Register(b Builder) { m[strings.ToLower(b.Name())] = b } +// unregisterForTesting deletes the balancer with the given name from the +// balancer map. +// +// This function is not thread-safe. +func unregisterForTesting(name string) { + delete(m, name) +} + +func init() { + internal.BalancerUnregister = unregisterForTesting +} + // Get returns the resolver builder registered with the given name. -// Note that the compare is done in a case-insenstive fashion. +// Note that the compare is done in a case-insensitive fashion. // If no builder is register with the name, nil will be returned. func Get(name string) Builder { if b, ok := m[strings.ToLower(name)]; ok { @@ -85,7 +107,15 @@ type SubConn interface { } // NewSubConnOptions contains options to create new SubConn. -type NewSubConnOptions struct{} +type NewSubConnOptions struct { + // CredsBundle is the credentials bundle that will be used in the created + // SubConn. If it's nil, the original creds from grpc DialOptions will be + // used. + CredsBundle credentials.Bundle + // HealthCheckEnabled indicates whether health check service should be + // enabled on this SubConn + HealthCheckEnabled bool +} // ClientConn represents a gRPC ClientConn. // @@ -102,7 +132,7 @@ type ClientConn interface { // The SubConn will be shutdown. RemoveSubConn(SubConn) - // UpdateBalancerState is called by balancer to nofity gRPC that some internal + // UpdateBalancerState is called by balancer to notify gRPC that some internal // state in balancer has changed. // // gRPC will update the connectivity state of the ClientConn, and will call pick @@ -113,6 +143,8 @@ type ClientConn interface { ResolveNow(resolver.ResolveNowOption) // Target returns the dial target for this ClientConn. + // + // Deprecated: Use the Target field in the BuildOptions instead. Target() string } @@ -122,10 +154,18 @@ type BuildOptions struct { // use to dial to a remote load balancer server. The Balancer implementations // can ignore this if it does not need to talk to another party securely. DialCreds credentials.TransportCredentials + // CredsBundle is the credentials bundle that the Balancer can use. + CredsBundle credentials.Bundle // Dialer is the custom dialer the Balancer implementation can use to dial // to a remote load balancer server. The Balancer implementations // can ignore this if it doesn't need to talk to remote balancer. Dialer func(context.Context, string) (net.Conn, error) + // ChannelzParentID is the entity parent's channelz unique identification number. + ChannelzParentID int64 + // Target contains the parsed address info of the dial target. It is the same resolver.Target as + // passed to the resolver. + // See the documentation for the resolver.Target type for details about what it contains. + Target resolver.Target } // Builder creates a balancer. @@ -137,17 +177,36 @@ type Builder interface { Name() string } +// ConfigParser parses load balancer configs. +type ConfigParser interface { + // ParseConfig parses the JSON load balancer config provided into an + // internal form or returns an error if the config is invalid. For future + // compatibility reasons, unknown fields in the config should be ignored. + ParseConfig(LoadBalancingConfigJSON json.RawMessage) (serviceconfig.LoadBalancingConfig, error) +} + // PickOptions contains addition information for the Pick operation. -type PickOptions struct{} +type PickOptions struct { + // FullMethodName is the method name that NewClientStream() is called + // with. The canonical format is /service/Method. + FullMethodName string +} // DoneInfo contains additional information for done. type DoneInfo struct { // Err is the rpc error the RPC finished with. It could be nil. Err error + // Trailer contains the metadata from the RPC's trailer, if present. + Trailer metadata.MD // BytesSent indicates if any bytes have been sent to the server. BytesSent bool // BytesReceived indicates if any byte has been received from the server. BytesReceived bool + // ServerLoad is the load received from server. It's usually sent as part of + // trailing metadata. + // + // The only supported type now is *orca_v1.LoadReport. + ServerLoad interface{} } var ( @@ -160,7 +219,7 @@ var ( ) // Picker is used by gRPC to pick a SubConn to send an RPC. -// Balancer is expected to generate a new picker from its snapshot everytime its +// Balancer is expected to generate a new picker from its snapshot every time its // internal state has changed. // // The pickers used by gRPC can be updated by ClientConn.UpdateBalancerState(). @@ -177,8 +236,10 @@ type Picker interface { // // If a SubConn is returned: // - If it is READY, gRPC will send the RPC on it; - // - If it is not ready, or becomes not ready after it's returned, gRPC will block - // until UpdateBalancerState() is called and will call pick on the new picker. + // - If it is not ready, or becomes not ready after it's returned, gRPC will + // block until UpdateBalancerState() is called and will call pick on the + // new picker. The done function returned from Pick(), if not nil, will be + // called with nil error, no bytes sent and no bytes received. // // If the returned error is not nil: // - If the error is ErrNoSubConnAvailable, gRPC will block until UpdateBalancerState() @@ -189,9 +250,10 @@ type Picker interface { // - Else (error is other non-nil error): // - The RPC will fail with unavailable error. // - // The returned done() function will be called once the rpc has finished, with the - // final status of that RPC. - // done may be nil if balancer doesn't care about the RPC status. + // The returned done() function will be called once the rpc has finished, + // with the final status of that RPC. If the SubConn returned is not a + // valid SubConn type, done may not be called. done may be nil if balancer + // doesn't care about the RPC status. Pick(ctx context.Context, opts PickOptions) (conn SubConn, done func(DoneInfo), err error) } @@ -210,14 +272,93 @@ type Balancer interface { // that back to gRPC. // Balancer should also generate and update Pickers when its internal state has // been changed by the new state. + // + // Deprecated: if V2Balancer is implemented by the Balancer, + // UpdateSubConnState will be called instead. HandleSubConnStateChange(sc SubConn, state connectivity.State) // HandleResolvedAddrs is called by gRPC to send updated resolved addresses to // balancers. // Balancer can create new SubConn or remove SubConn with the addresses. // An empty address slice and a non-nil error will be passed if the resolver returns // non-nil error to gRPC. + // + // Deprecated: if V2Balancer is implemented by the Balancer, + // UpdateClientConnState will be called instead. HandleResolvedAddrs([]resolver.Address, error) // Close closes the balancer. The balancer is not required to call // ClientConn.RemoveSubConn for its existing SubConns. Close() } + +// SubConnState describes the state of a SubConn. +type SubConnState struct { + ConnectivityState connectivity.State + // TODO: add last connection error +} + +// ClientConnState describes the state of a ClientConn relevant to the +// balancer. +type ClientConnState struct { + ResolverState resolver.State + // The parsed load balancing configuration returned by the builder's + // ParseConfig method, if implemented. + BalancerConfig serviceconfig.LoadBalancingConfig +} + +// V2Balancer is defined for documentation purposes. If a Balancer also +// implements V2Balancer, its UpdateClientConnState method will be called +// instead of HandleResolvedAddrs and its UpdateSubConnState will be called +// instead of HandleSubConnStateChange. +type V2Balancer interface { + // UpdateClientConnState is called by gRPC when the state of the ClientConn + // changes. + UpdateClientConnState(ClientConnState) + // UpdateSubConnState is called by gRPC when the state of a SubConn + // changes. + UpdateSubConnState(SubConn, SubConnState) + // Close closes the balancer. The balancer is not required to call + // ClientConn.RemoveSubConn for its existing SubConns. + Close() +} + +// ConnectivityStateEvaluator takes the connectivity states of multiple SubConns +// and returns one aggregated connectivity state. +// +// It's not thread safe. +type ConnectivityStateEvaluator struct { + numReady uint64 // Number of addrConns in ready state. + numConnecting uint64 // Number of addrConns in connecting state. + numTransientFailure uint64 // Number of addrConns in transientFailure. +} + +// RecordTransition records state change happening in subConn and based on that +// it evaluates what aggregated state should be. +// +// - If at least one SubConn in Ready, the aggregated state is Ready; +// - Else if at least one SubConn in Connecting, the aggregated state is Connecting; +// - Else the aggregated state is TransientFailure. +// +// Idle and Shutdown are not considered. +func (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState connectivity.State) connectivity.State { + // Update counters. + for idx, state := range []connectivity.State{oldState, newState} { + updateVal := 2*uint64(idx) - 1 // -1 for oldState and +1 for new. + switch state { + case connectivity.Ready: + cse.numReady += updateVal + case connectivity.Connecting: + cse.numConnecting += updateVal + case connectivity.TransientFailure: + cse.numTransientFailure += updateVal + } + } + + // Evaluate. + if cse.numReady > 0 { + return connectivity.Ready + } + if cse.numConnecting > 0 { + return connectivity.Connecting + } + return connectivity.TransientFailure +} diff --git a/vendor/google.golang.org/grpc/balancer/base/balancer.go b/vendor/google.golang.org/grpc/balancer/base/balancer.go index 1e962b7240..1af88f0a3f 100644 --- a/vendor/google.golang.org/grpc/balancer/base/balancer.go +++ b/vendor/google.golang.org/grpc/balancer/base/balancer.go @@ -19,7 +19,8 @@ package base import ( - "golang.org/x/net/context" + "context" + "google.golang.org/grpc/balancer" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/grpclog" @@ -29,6 +30,7 @@ import ( type baseBuilder struct { name string pickerBuilder PickerBuilder + config Config } func (bb *baseBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) balancer.Balancer { @@ -38,11 +40,12 @@ func (bb *baseBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) subConns: make(map[resolver.Address]balancer.SubConn), scStates: make(map[balancer.SubConn]connectivity.State), - csEvltr: &connectivityStateEvaluator{}, + csEvltr: &balancer.ConnectivityStateEvaluator{}, // Initialize picker to a picker that always return // ErrNoSubConnAvailable, because when state of a SubConn changes, we // may call UpdateBalancerState with this picker. picker: NewErrPicker(balancer.ErrNoSubConnAvailable), + config: bb.config, } } @@ -54,27 +57,32 @@ type baseBalancer struct { cc balancer.ClientConn pickerBuilder PickerBuilder - csEvltr *connectivityStateEvaluator + csEvltr *balancer.ConnectivityStateEvaluator state connectivity.State subConns map[resolver.Address]balancer.SubConn scStates map[balancer.SubConn]connectivity.State picker balancer.Picker + config Config } func (b *baseBalancer) HandleResolvedAddrs(addrs []resolver.Address, err error) { - if err != nil { - grpclog.Infof("base.baseBalancer: HandleResolvedAddrs called with error %v", err) - return + panic("not implemented") +} + +func (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) { + // TODO: handle s.ResolverState.Err (log if not nil) once implemented. + // TODO: handle s.ResolverState.ServiceConfig? + if grpclog.V(2) { + grpclog.Infoln("base.baseBalancer: got new ClientConn state: ", s) } - grpclog.Infoln("base.baseBalancer: got new resolved addresses: ", addrs) // addrsSet is the set converted from addrs, it's used for quick lookup of an address. addrsSet := make(map[resolver.Address]struct{}) - for _, a := range addrs { + for _, a := range s.ResolverState.Addresses { addrsSet[a] = struct{}{} if _, ok := b.subConns[a]; !ok { // a is a new address (not existing in b.subConns). - sc, err := b.cc.NewSubConn([]resolver.Address{a}, balancer.NewSubConnOptions{}) + sc, err := b.cc.NewSubConn([]resolver.Address{a}, balancer.NewSubConnOptions{HealthCheckEnabled: b.config.HealthCheck}) if err != nil { grpclog.Warningf("base.baseBalancer: failed to create new SubConn: %v", err) continue @@ -116,10 +124,19 @@ func (b *baseBalancer) regeneratePicker() { } func (b *baseBalancer) HandleSubConnStateChange(sc balancer.SubConn, s connectivity.State) { - grpclog.Infof("base.baseBalancer: handle SubConn state change: %p, %v", sc, s) + panic("not implemented") +} + +func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.SubConnState) { + s := state.ConnectivityState + if grpclog.V(2) { + grpclog.Infof("base.baseBalancer: handle SubConn state change: %p, %v", sc, s) + } oldS, ok := b.scStates[sc] if !ok { - grpclog.Infof("base.baseBalancer: got state changes for an unknown SubConn: %p, %v", sc, s) + if grpclog.V(2) { + grpclog.Infof("base.baseBalancer: got state changes for an unknown SubConn: %p, %v", sc, s) + } return } b.scStates[sc] = s @@ -133,7 +150,7 @@ func (b *baseBalancer) HandleSubConnStateChange(sc balancer.SubConn, s connectiv } oldAggrState := b.state - b.state = b.csEvltr.recordTransition(oldS, s) + b.state = b.csEvltr.RecordTransition(oldS, s) // Regenerate picker when one of the following happens: // - this sc became ready from not-ready @@ -146,7 +163,6 @@ func (b *baseBalancer) HandleSubConnStateChange(sc balancer.SubConn, s connectiv } b.cc.UpdateBalancerState(b.state, b.picker) - return } // Close is a nop because base balancer doesn't have internal state to clean up, @@ -166,44 +182,3 @@ type errPicker struct { func (p *errPicker) Pick(ctx context.Context, opts balancer.PickOptions) (balancer.SubConn, func(balancer.DoneInfo), error) { return nil, nil, p.err } - -// connectivityStateEvaluator gets updated by addrConns when their -// states transition, based on which it evaluates the state of -// ClientConn. -type connectivityStateEvaluator struct { - numReady uint64 // Number of addrConns in ready state. - numConnecting uint64 // Number of addrConns in connecting state. - numTransientFailure uint64 // Number of addrConns in transientFailure. -} - -// recordTransition records state change happening in every subConn and based on -// that it evaluates what aggregated state should be. -// It can only transition between Ready, Connecting and TransientFailure. Other states, -// Idle and Shutdown are transitioned into by ClientConn; in the beginning of the connection -// before any subConn is created ClientConn is in idle state. In the end when ClientConn -// closes it is in Shutdown state. -// -// recordTransition should only be called synchronously from the same goroutine. -func (cse *connectivityStateEvaluator) recordTransition(oldState, newState connectivity.State) connectivity.State { - // Update counters. - for idx, state := range []connectivity.State{oldState, newState} { - updateVal := 2*uint64(idx) - 1 // -1 for oldState and +1 for new. - switch state { - case connectivity.Ready: - cse.numReady += updateVal - case connectivity.Connecting: - cse.numConnecting += updateVal - case connectivity.TransientFailure: - cse.numTransientFailure += updateVal - } - } - - // Evaluate. - if cse.numReady > 0 { - return connectivity.Ready - } - if cse.numConnecting > 0 { - return connectivity.Connecting - } - return connectivity.TransientFailure -} diff --git a/vendor/google.golang.org/grpc/balancer/base/base.go b/vendor/google.golang.org/grpc/balancer/base/base.go index 012ace2f2f..34b1f2994a 100644 --- a/vendor/google.golang.org/grpc/balancer/base/base.go +++ b/vendor/google.golang.org/grpc/balancer/base/base.go @@ -45,8 +45,20 @@ type PickerBuilder interface { // NewBalancerBuilder returns a balancer builder. The balancers // built by this builder will use the picker builder to build pickers. func NewBalancerBuilder(name string, pb PickerBuilder) balancer.Builder { + return NewBalancerBuilderWithConfig(name, pb, Config{}) +} + +// Config contains the config info about the base balancer builder. +type Config struct { + // HealthCheck indicates whether health checking should be enabled for this specific balancer. + HealthCheck bool +} + +// NewBalancerBuilderWithConfig returns a base balancer builder configured by the provided config. +func NewBalancerBuilderWithConfig(name string, pb PickerBuilder, config Config) balancer.Builder { return &baseBuilder{ name: name, pickerBuilder: pb, + config: config, } } diff --git a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go index 2eda0a1c21..29f7a4ddd6 100644 --- a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go +++ b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go @@ -22,12 +22,13 @@ package roundrobin import ( + "context" "sync" - "golang.org/x/net/context" "google.golang.org/grpc/balancer" "google.golang.org/grpc/balancer/base" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal/grpcrand" "google.golang.org/grpc/resolver" ) @@ -36,7 +37,7 @@ const Name = "round_robin" // newBuilder creates a new roundrobin balancer builder. func newBuilder() balancer.Builder { - return base.NewBalancerBuilder(Name, &rrPickerBuilder{}) + return base.NewBalancerBuilderWithConfig(Name, &rrPickerBuilder{}, base.Config{HealthCheck: true}) } func init() { @@ -47,12 +48,19 @@ type rrPickerBuilder struct{} func (*rrPickerBuilder) Build(readySCs map[resolver.Address]balancer.SubConn) balancer.Picker { grpclog.Infof("roundrobinPicker: newPicker called with readySCs: %v", readySCs) + if len(readySCs) == 0 { + return base.NewErrPicker(balancer.ErrNoSubConnAvailable) + } var scs []balancer.SubConn for _, sc := range readySCs { scs = append(scs, sc) } return &rrPicker{ subConns: scs, + // Start at a random index, as the same RR balancer rebuilds a new + // picker when SubConn states change, and we don't want to apply excess + // load to the first server in the list. + next: grpcrand.Intn(len(scs)), } } @@ -67,10 +75,6 @@ type rrPicker struct { } func (p *rrPicker) Pick(ctx context.Context, opts balancer.PickOptions) (balancer.SubConn, func(balancer.DoneInfo), error) { - if len(p.subConns) <= 0 { - return nil, nil, balancer.ErrNoSubConnAvailable - } - p.mu.Lock() sc := p.subConns[p.next] p.next = (p.next + 1) % len(p.subConns) diff --git a/vendor/google.golang.org/grpc/balancer_conn_wrappers.go b/vendor/google.golang.org/grpc/balancer_conn_wrappers.go index db6f0ae3f0..8df4095ca9 100644 --- a/vendor/google.golang.org/grpc/balancer_conn_wrappers.go +++ b/vendor/google.golang.org/grpc/balancer_conn_wrappers.go @@ -82,20 +82,13 @@ func (b *scStateUpdateBuffer) get() <-chan *scStateUpdate { return b.c } -// resolverUpdate contains the new resolved addresses or error if there's -// any. -type resolverUpdate struct { - addrs []resolver.Address - err error -} - // ccBalancerWrapper is a wrapper on top of cc for balancers. // It implements balancer.ClientConn interface. type ccBalancerWrapper struct { cc *ClientConn balancer balancer.Balancer stateChangeQueue *scStateUpdateBuffer - resolverUpdateCh chan *resolverUpdate + ccUpdateCh chan *balancer.ClientConnState done chan struct{} mu sync.Mutex @@ -106,7 +99,7 @@ func newCCBalancerWrapper(cc *ClientConn, b balancer.Builder, bopts balancer.Bui ccb := &ccBalancerWrapper{ cc: cc, stateChangeQueue: newSCStateUpdateBuffer(), - resolverUpdateCh: make(chan *resolverUpdate, 1), + ccUpdateCh: make(chan *balancer.ClientConnState, 1), done: make(chan struct{}), subConns: make(map[*acBalancerWrapper]struct{}), } @@ -115,7 +108,7 @@ func newCCBalancerWrapper(cc *ClientConn, b balancer.Builder, bopts balancer.Bui return ccb } -// watcher balancer functions sequencially, so the balancer can be implemeneted +// watcher balancer functions sequentially, so the balancer can be implemented // lock-free. func (ccb *ccBalancerWrapper) watcher() { for { @@ -128,15 +121,23 @@ func (ccb *ccBalancerWrapper) watcher() { return default: } - ccb.balancer.HandleSubConnStateChange(t.sc, t.state) - case t := <-ccb.resolverUpdateCh: + if ub, ok := ccb.balancer.(balancer.V2Balancer); ok { + ub.UpdateSubConnState(t.sc, balancer.SubConnState{ConnectivityState: t.state}) + } else { + ccb.balancer.HandleSubConnStateChange(t.sc, t.state) + } + case s := <-ccb.ccUpdateCh: select { case <-ccb.done: ccb.balancer.Close() return default: } - ccb.balancer.HandleResolvedAddrs(t.addrs, t.err) + if ub, ok := ccb.balancer.(balancer.V2Balancer); ok { + ub.UpdateClientConnState(*s) + } else { + ccb.balancer.HandleResolvedAddrs(s.ResolverState.Addresses, nil) + } case <-ccb.done: } @@ -150,9 +151,11 @@ func (ccb *ccBalancerWrapper) watcher() { for acbw := range scs { ccb.cc.removeAddrConn(acbw.getAddrConn(), errConnDrain) } + ccb.UpdateBalancerState(connectivity.Connecting, nil) return default: } + ccb.cc.firstResolveEvent.Fire() } } @@ -177,15 +180,24 @@ func (ccb *ccBalancerWrapper) handleSubConnStateChange(sc balancer.SubConn, s co }) } -func (ccb *ccBalancerWrapper) handleResolvedAddrs(addrs []resolver.Address, err error) { +func (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnState) { + if ccb.cc.curBalancerName != grpclbName { + // Filter any grpclb addresses since we don't have the grpclb balancer. + s := &ccs.ResolverState + for i := 0; i < len(s.Addresses); { + if s.Addresses[i].Type == resolver.GRPCLB { + copy(s.Addresses[i:], s.Addresses[i+1:]) + s.Addresses = s.Addresses[:len(s.Addresses)-1] + continue + } + i++ + } + } select { - case <-ccb.resolverUpdateCh: + case <-ccb.ccUpdateCh: default: } - ccb.resolverUpdateCh <- &resolverUpdate{ - addrs: addrs, - err: err, - } + ccb.ccUpdateCh <- ccs } func (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) { @@ -197,7 +209,7 @@ func (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer if ccb.subConns == nil { return nil, fmt.Errorf("grpc: ClientConn balancer wrapper was closed") } - ac, err := ccb.cc.newAddrConn(addrs) + ac, err := ccb.cc.newAddrConn(addrs, opts) if err != nil { return nil, err } @@ -229,8 +241,13 @@ func (ccb *ccBalancerWrapper) UpdateBalancerState(s connectivity.State, p balanc if ccb.subConns == nil { return } - ccb.cc.csMgr.updateState(s) + // Update picker before updating state. Even though the ordering here does + // not matter, it can lead to multiple calls of Pick in the common start-up + // case where we wait for ready and then perform an RPC. If the picker is + // updated later, we could call the "connecting" picker when the state is + // updated, and then call the "ready" picker after the picker gets updated. ccb.cc.blockingpicker.updatePicker(p) + ccb.cc.csMgr.updateState(s) } func (ccb *ccBalancerWrapper) ResolveNow(o resolver.ResolveNowOption) { @@ -257,6 +274,7 @@ func (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) { } if !acbw.ac.tryUpdateAddrs(addrs) { cc := acbw.ac.cc + opts := acbw.ac.scopts acbw.ac.mu.Lock() // Set old ac.acbw to nil so the Shutdown state update will be ignored // by balancer. @@ -272,7 +290,7 @@ func (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) { return } - ac, err := cc.newAddrConn(addrs) + ac, err := cc.newAddrConn(addrs, opts) if err != nil { grpclog.Warningf("acBalancerWrapper: UpdateAddresses: failed to newAddrConn: %v", err) return diff --git a/vendor/google.golang.org/grpc/balancer_v1_wrapper.go b/vendor/google.golang.org/grpc/balancer_v1_wrapper.go index faabf87d00..66e9a44ac4 100644 --- a/vendor/google.golang.org/grpc/balancer_v1_wrapper.go +++ b/vendor/google.golang.org/grpc/balancer_v1_wrapper.go @@ -19,16 +19,13 @@ package grpc import ( - "strings" + "context" "sync" - "golang.org/x/net/context" "google.golang.org/grpc/balancer" - "google.golang.org/grpc/codes" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/resolver" - "google.golang.org/grpc/status" ) type balancerWrapperBuilder struct { @@ -36,13 +33,7 @@ type balancerWrapperBuilder struct { } func (bwb *balancerWrapperBuilder) Build(cc balancer.ClientConn, opts balancer.BuildOptions) balancer.Balancer { - targetAddr := cc.Target() - targetSplitted := strings.Split(targetAddr, ":///") - if len(targetSplitted) >= 2 { - targetAddr = targetSplitted[1] - } - - bwb.b.Start(targetAddr, BalancerConfig{ + bwb.b.Start(opts.Target.Endpoint, BalancerConfig{ DialCreds: opts.DialCreds, Dialer: opts.Dialer, }) @@ -51,11 +42,11 @@ func (bwb *balancerWrapperBuilder) Build(cc balancer.ClientConn, opts balancer.B balancer: bwb.b, pickfirst: pickfirst, cc: cc, - targetAddr: targetAddr, + targetAddr: opts.Target.Endpoint, startCh: make(chan struct{}), conns: make(map[resolver.Address]balancer.SubConn), connSt: make(map[balancer.SubConn]*scState), - csEvltr: &connectivityStateEvaluator{}, + csEvltr: &balancer.ConnectivityStateEvaluator{}, state: connectivity.Idle, } cc.UpdateBalancerState(connectivity.Idle, bw) @@ -80,10 +71,6 @@ type balancerWrapper struct { cc balancer.ClientConn targetAddr string // Target without the scheme. - // To aggregate the connectivity state. - csEvltr *connectivityStateEvaluator - state connectivity.State - mu sync.Mutex conns map[resolver.Address]balancer.SubConn connSt map[balancer.SubConn]*scState @@ -92,6 +79,10 @@ type balancerWrapper struct { // - NewSubConn is created, cc wants to notify balancer of state changes; // - Build hasn't return, cc doesn't have access to balancer. startCh chan struct{} + + // To aggregate the connectivity state. + csEvltr *balancer.ConnectivityStateEvaluator + state connectivity.State } // lbWatcher watches the Notify channel of the balancer and manages @@ -122,7 +113,7 @@ func (bw *balancerWrapper) lbWatcher() { } for addrs := range notifyCh { - grpclog.Infof("balancerWrapper: got update addr from Notify: %v\n", addrs) + grpclog.Infof("balancerWrapper: got update addr from Notify: %v", addrs) if bw.pickfirst { var ( oldA resolver.Address @@ -248,7 +239,7 @@ func (bw *balancerWrapper) HandleSubConnStateChange(sc balancer.SubConn, s conne scSt.down(errConnClosing) } } - sa := bw.csEvltr.recordTransition(oldS, s) + sa := bw.csEvltr.RecordTransition(oldS, s) if bw.state != sa { bw.state = sa } @@ -257,7 +248,6 @@ func (bw *balancerWrapper) HandleSubConnStateChange(sc balancer.SubConn, s conne // Remove state for this sc. delete(bw.connSt, sc) } - return } func (bw *balancerWrapper) HandleResolvedAddrs([]resolver.Address, error) { @@ -270,7 +260,6 @@ func (bw *balancerWrapper) HandleResolvedAddrs([]resolver.Address, error) { } // There should be a resolver inside the balancer. // All updates here, if any, are ignored. - return } func (bw *balancerWrapper) Close() { @@ -282,13 +271,11 @@ func (bw *balancerWrapper) Close() { close(bw.startCh) } bw.balancer.Close() - return } // The picker is the balancerWrapper itself. -// Pick should never return ErrNoSubConnAvailable. // It either blocks or returns error, consistent with v1 balancer Get(). -func (bw *balancerWrapper) Pick(ctx context.Context, opts balancer.PickOptions) (balancer.SubConn, func(balancer.DoneInfo), error) { +func (bw *balancerWrapper) Pick(ctx context.Context, opts balancer.PickOptions) (sc balancer.SubConn, done func(balancer.DoneInfo), err error) { failfast := true // Default failfast is true. if ss, ok := rpcInfoFromContext(ctx); ok { failfast = ss.failfast @@ -297,79 +284,51 @@ func (bw *balancerWrapper) Pick(ctx context.Context, opts balancer.PickOptions) if err != nil { return nil, nil, err } - var done func(balancer.DoneInfo) if p != nil { - done = func(i balancer.DoneInfo) { p() } + done = func(balancer.DoneInfo) { p() } + defer func() { + if err != nil { + p() + } + }() } - var sc balancer.SubConn + bw.mu.Lock() defer bw.mu.Unlock() if bw.pickfirst { // Get the first sc in conns. - for _, sc = range bw.conns { - break - } - } else { - var ok bool - sc, ok = bw.conns[resolver.Address{ - Addr: a.Addr, - Type: resolver.Backend, - ServerName: "", - Metadata: a.Metadata, - }] - if !ok && failfast { - return nil, nil, status.Errorf(codes.Unavailable, "there is no connection available") - } - if s, ok := bw.connSt[sc]; failfast && (!ok || s.s != connectivity.Ready) { - // If the returned sc is not ready and RPC is failfast, - // return error, and this RPC will fail. - return nil, nil, status.Errorf(codes.Unavailable, "there is no connection available") + for _, sc := range bw.conns { + return sc, done, nil } + return nil, nil, balancer.ErrNoSubConnAvailable } - - return sc, done, nil -} - -// connectivityStateEvaluator gets updated by addrConns when their -// states transition, based on which it evaluates the state of -// ClientConn. -type connectivityStateEvaluator struct { - mu sync.Mutex - numReady uint64 // Number of addrConns in ready state. - numConnecting uint64 // Number of addrConns in connecting state. - numTransientFailure uint64 // Number of addrConns in transientFailure. -} - -// recordTransition records state change happening in every subConn and based on -// that it evaluates what aggregated state should be. -// It can only transition between Ready, Connecting and TransientFailure. Other states, -// Idle and Shutdown are transitioned into by ClientConn; in the beginning of the connection -// before any subConn is created ClientConn is in idle state. In the end when ClientConn -// closes it is in Shutdown state. -// TODO Note that in later releases, a ClientConn with no activity will be put into an Idle state. -func (cse *connectivityStateEvaluator) recordTransition(oldState, newState connectivity.State) connectivity.State { - cse.mu.Lock() - defer cse.mu.Unlock() - - // Update counters. - for idx, state := range []connectivity.State{oldState, newState} { - updateVal := 2*uint64(idx) - 1 // -1 for oldState and +1 for new. - switch state { - case connectivity.Ready: - cse.numReady += updateVal - case connectivity.Connecting: - cse.numConnecting += updateVal - case connectivity.TransientFailure: - cse.numTransientFailure += updateVal - } + sc, ok1 := bw.conns[resolver.Address{ + Addr: a.Addr, + Type: resolver.Backend, + ServerName: "", + Metadata: a.Metadata, + }] + s, ok2 := bw.connSt[sc] + if !ok1 || !ok2 { + // This can only happen due to a race where Get() returned an address + // that was subsequently removed by Notify. In this case we should + // retry always. + return nil, nil, balancer.ErrNoSubConnAvailable } - - // Evaluate. - if cse.numReady > 0 { - return connectivity.Ready - } - if cse.numConnecting > 0 { - return connectivity.Connecting + switch s.s { + case connectivity.Ready, connectivity.Idle: + return sc, done, nil + case connectivity.Shutdown, connectivity.TransientFailure: + // If the returned sc has been shut down or is in transient failure, + // return error, and this RPC will fail or wait for another picker (if + // non-failfast). + return nil, nil, balancer.ErrTransientFailure + default: + // For other states (connecting or unknown), the v1 balancer would + // traditionally wait until ready and then issue the RPC. Returning + // ErrNoSubConnAvailable will be a slight improvement in that it will + // allow the balancer to choose another address in case others are + // connected. + return nil, nil, balancer.ErrNoSubConnAvailable } - return connectivity.TransientFailure } diff --git a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go new file mode 100644 index 0000000000..f393bb6618 --- /dev/null +++ b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go @@ -0,0 +1,900 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// source: grpc/binarylog/grpc_binarylog_v1/binarylog.proto + +package grpc_binarylog_v1 // import "google.golang.org/grpc/binarylog/grpc_binarylog_v1" + +import proto "github.com/golang/protobuf/proto" +import fmt "fmt" +import math "math" +import duration "github.com/golang/protobuf/ptypes/duration" +import timestamp "github.com/golang/protobuf/ptypes/timestamp" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package + +// Enumerates the type of event +// Note the terminology is different from the RPC semantics +// definition, but the same meaning is expressed here. +type GrpcLogEntry_EventType int32 + +const ( + GrpcLogEntry_EVENT_TYPE_UNKNOWN GrpcLogEntry_EventType = 0 + // Header sent from client to server + GrpcLogEntry_EVENT_TYPE_CLIENT_HEADER GrpcLogEntry_EventType = 1 + // Header sent from server to client + GrpcLogEntry_EVENT_TYPE_SERVER_HEADER GrpcLogEntry_EventType = 2 + // Message sent from client to server + GrpcLogEntry_EVENT_TYPE_CLIENT_MESSAGE GrpcLogEntry_EventType = 3 + // Message sent from server to client + GrpcLogEntry_EVENT_TYPE_SERVER_MESSAGE GrpcLogEntry_EventType = 4 + // A signal that client is done sending + GrpcLogEntry_EVENT_TYPE_CLIENT_HALF_CLOSE GrpcLogEntry_EventType = 5 + // Trailer indicates the end of the RPC. + // On client side, this event means a trailer was either received + // from the network or the gRPC library locally generated a status + // to inform the application about a failure. + // On server side, this event means the server application requested + // to send a trailer. Note: EVENT_TYPE_CANCEL may still arrive after + // this due to races on server side. + GrpcLogEntry_EVENT_TYPE_SERVER_TRAILER GrpcLogEntry_EventType = 6 + // A signal that the RPC is cancelled. On client side, this + // indicates the client application requests a cancellation. + // On server side, this indicates that cancellation was detected. + // Note: This marks the end of the RPC. Events may arrive after + // this due to races. For example, on client side a trailer + // may arrive even though the application requested to cancel the RPC. + GrpcLogEntry_EVENT_TYPE_CANCEL GrpcLogEntry_EventType = 7 +) + +var GrpcLogEntry_EventType_name = map[int32]string{ + 0: "EVENT_TYPE_UNKNOWN", + 1: "EVENT_TYPE_CLIENT_HEADER", + 2: "EVENT_TYPE_SERVER_HEADER", + 3: "EVENT_TYPE_CLIENT_MESSAGE", + 4: "EVENT_TYPE_SERVER_MESSAGE", + 5: "EVENT_TYPE_CLIENT_HALF_CLOSE", + 6: "EVENT_TYPE_SERVER_TRAILER", + 7: "EVENT_TYPE_CANCEL", +} +var GrpcLogEntry_EventType_value = map[string]int32{ + "EVENT_TYPE_UNKNOWN": 0, + "EVENT_TYPE_CLIENT_HEADER": 1, + "EVENT_TYPE_SERVER_HEADER": 2, + "EVENT_TYPE_CLIENT_MESSAGE": 3, + "EVENT_TYPE_SERVER_MESSAGE": 4, + "EVENT_TYPE_CLIENT_HALF_CLOSE": 5, + "EVENT_TYPE_SERVER_TRAILER": 6, + "EVENT_TYPE_CANCEL": 7, +} + +func (x GrpcLogEntry_EventType) String() string { + return proto.EnumName(GrpcLogEntry_EventType_name, int32(x)) +} +func (GrpcLogEntry_EventType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_binarylog_264c8c9c551ce911, []int{0, 0} +} + +// Enumerates the entity that generates the log entry +type GrpcLogEntry_Logger int32 + +const ( + GrpcLogEntry_LOGGER_UNKNOWN GrpcLogEntry_Logger = 0 + GrpcLogEntry_LOGGER_CLIENT GrpcLogEntry_Logger = 1 + GrpcLogEntry_LOGGER_SERVER GrpcLogEntry_Logger = 2 +) + +var GrpcLogEntry_Logger_name = map[int32]string{ + 0: "LOGGER_UNKNOWN", + 1: "LOGGER_CLIENT", + 2: "LOGGER_SERVER", +} +var GrpcLogEntry_Logger_value = map[string]int32{ + "LOGGER_UNKNOWN": 0, + "LOGGER_CLIENT": 1, + "LOGGER_SERVER": 2, +} + +func (x GrpcLogEntry_Logger) String() string { + return proto.EnumName(GrpcLogEntry_Logger_name, int32(x)) +} +func (GrpcLogEntry_Logger) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_binarylog_264c8c9c551ce911, []int{0, 1} +} + +type Address_Type int32 + +const ( + Address_TYPE_UNKNOWN Address_Type = 0 + // address is in 1.2.3.4 form + Address_TYPE_IPV4 Address_Type = 1 + // address is in IPv6 canonical form (RFC5952 section 4) + // The scope is NOT included in the address string. + Address_TYPE_IPV6 Address_Type = 2 + // address is UDS string + Address_TYPE_UNIX Address_Type = 3 +) + +var Address_Type_name = map[int32]string{ + 0: "TYPE_UNKNOWN", + 1: "TYPE_IPV4", + 2: "TYPE_IPV6", + 3: "TYPE_UNIX", +} +var Address_Type_value = map[string]int32{ + "TYPE_UNKNOWN": 0, + "TYPE_IPV4": 1, + "TYPE_IPV6": 2, + "TYPE_UNIX": 3, +} + +func (x Address_Type) String() string { + return proto.EnumName(Address_Type_name, int32(x)) +} +func (Address_Type) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_binarylog_264c8c9c551ce911, []int{7, 0} +} + +// Log entry we store in binary logs +type GrpcLogEntry struct { + // The timestamp of the binary log message + Timestamp *timestamp.Timestamp `protobuf:"bytes,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Uniquely identifies a call. The value must not be 0 in order to disambiguate + // from an unset value. + // Each call may have several log entries, they will all have the same call_id. + // Nothing is guaranteed about their value other than they are unique across + // different RPCs in the same gRPC process. + CallId uint64 `protobuf:"varint,2,opt,name=call_id,json=callId,proto3" json:"call_id,omitempty"` + // The entry sequence id for this call. The first GrpcLogEntry has a + // value of 1, to disambiguate from an unset value. The purpose of + // this field is to detect missing entries in environments where + // durability or ordering is not guaranteed. + SequenceIdWithinCall uint64 `protobuf:"varint,3,opt,name=sequence_id_within_call,json=sequenceIdWithinCall,proto3" json:"sequence_id_within_call,omitempty"` + Type GrpcLogEntry_EventType `protobuf:"varint,4,opt,name=type,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_EventType" json:"type,omitempty"` + Logger GrpcLogEntry_Logger `protobuf:"varint,5,opt,name=logger,proto3,enum=grpc.binarylog.v1.GrpcLogEntry_Logger" json:"logger,omitempty"` + // The logger uses one of the following fields to record the payload, + // according to the type of the log entry. + // + // Types that are valid to be assigned to Payload: + // *GrpcLogEntry_ClientHeader + // *GrpcLogEntry_ServerHeader + // *GrpcLogEntry_Message + // *GrpcLogEntry_Trailer + Payload isGrpcLogEntry_Payload `protobuf_oneof:"payload"` + // true if payload does not represent the full message or metadata. + PayloadTruncated bool `protobuf:"varint,10,opt,name=payload_truncated,json=payloadTruncated,proto3" json:"payload_truncated,omitempty"` + // Peer address information, will only be recorded on the first + // incoming event. On client side, peer is logged on + // EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in + // the case of trailers-only. On server side, peer is always + // logged on EVENT_TYPE_CLIENT_HEADER. + Peer *Address `protobuf:"bytes,11,opt,name=peer,proto3" json:"peer,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GrpcLogEntry) Reset() { *m = GrpcLogEntry{} } +func (m *GrpcLogEntry) String() string { return proto.CompactTextString(m) } +func (*GrpcLogEntry) ProtoMessage() {} +func (*GrpcLogEntry) Descriptor() ([]byte, []int) { + return fileDescriptor_binarylog_264c8c9c551ce911, []int{0} +} +func (m *GrpcLogEntry) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GrpcLogEntry.Unmarshal(m, b) +} +func (m *GrpcLogEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GrpcLogEntry.Marshal(b, m, deterministic) +} +func (dst *GrpcLogEntry) XXX_Merge(src proto.Message) { + xxx_messageInfo_GrpcLogEntry.Merge(dst, src) +} +func (m *GrpcLogEntry) XXX_Size() int { + return xxx_messageInfo_GrpcLogEntry.Size(m) +} +func (m *GrpcLogEntry) XXX_DiscardUnknown() { + xxx_messageInfo_GrpcLogEntry.DiscardUnknown(m) +} + +var xxx_messageInfo_GrpcLogEntry proto.InternalMessageInfo + +func (m *GrpcLogEntry) GetTimestamp() *timestamp.Timestamp { + if m != nil { + return m.Timestamp + } + return nil +} + +func (m *GrpcLogEntry) GetCallId() uint64 { + if m != nil { + return m.CallId + } + return 0 +} + +func (m *GrpcLogEntry) GetSequenceIdWithinCall() uint64 { + if m != nil { + return m.SequenceIdWithinCall + } + return 0 +} + +func (m *GrpcLogEntry) GetType() GrpcLogEntry_EventType { + if m != nil { + return m.Type + } + return GrpcLogEntry_EVENT_TYPE_UNKNOWN +} + +func (m *GrpcLogEntry) GetLogger() GrpcLogEntry_Logger { + if m != nil { + return m.Logger + } + return GrpcLogEntry_LOGGER_UNKNOWN +} + +type isGrpcLogEntry_Payload interface { + isGrpcLogEntry_Payload() +} + +type GrpcLogEntry_ClientHeader struct { + ClientHeader *ClientHeader `protobuf:"bytes,6,opt,name=client_header,json=clientHeader,proto3,oneof"` +} + +type GrpcLogEntry_ServerHeader struct { + ServerHeader *ServerHeader `protobuf:"bytes,7,opt,name=server_header,json=serverHeader,proto3,oneof"` +} + +type GrpcLogEntry_Message struct { + Message *Message `protobuf:"bytes,8,opt,name=message,proto3,oneof"` +} + +type GrpcLogEntry_Trailer struct { + Trailer *Trailer `protobuf:"bytes,9,opt,name=trailer,proto3,oneof"` +} + +func (*GrpcLogEntry_ClientHeader) isGrpcLogEntry_Payload() {} + +func (*GrpcLogEntry_ServerHeader) isGrpcLogEntry_Payload() {} + +func (*GrpcLogEntry_Message) isGrpcLogEntry_Payload() {} + +func (*GrpcLogEntry_Trailer) isGrpcLogEntry_Payload() {} + +func (m *GrpcLogEntry) GetPayload() isGrpcLogEntry_Payload { + if m != nil { + return m.Payload + } + return nil +} + +func (m *GrpcLogEntry) GetClientHeader() *ClientHeader { + if x, ok := m.GetPayload().(*GrpcLogEntry_ClientHeader); ok { + return x.ClientHeader + } + return nil +} + +func (m *GrpcLogEntry) GetServerHeader() *ServerHeader { + if x, ok := m.GetPayload().(*GrpcLogEntry_ServerHeader); ok { + return x.ServerHeader + } + return nil +} + +func (m *GrpcLogEntry) GetMessage() *Message { + if x, ok := m.GetPayload().(*GrpcLogEntry_Message); ok { + return x.Message + } + return nil +} + +func (m *GrpcLogEntry) GetTrailer() *Trailer { + if x, ok := m.GetPayload().(*GrpcLogEntry_Trailer); ok { + return x.Trailer + } + return nil +} + +func (m *GrpcLogEntry) GetPayloadTruncated() bool { + if m != nil { + return m.PayloadTruncated + } + return false +} + +func (m *GrpcLogEntry) GetPeer() *Address { + if m != nil { + return m.Peer + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*GrpcLogEntry) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _GrpcLogEntry_OneofMarshaler, _GrpcLogEntry_OneofUnmarshaler, _GrpcLogEntry_OneofSizer, []interface{}{ + (*GrpcLogEntry_ClientHeader)(nil), + (*GrpcLogEntry_ServerHeader)(nil), + (*GrpcLogEntry_Message)(nil), + (*GrpcLogEntry_Trailer)(nil), + } +} + +func _GrpcLogEntry_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*GrpcLogEntry) + // payload + switch x := m.Payload.(type) { + case *GrpcLogEntry_ClientHeader: + b.EncodeVarint(6<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ClientHeader); err != nil { + return err + } + case *GrpcLogEntry_ServerHeader: + b.EncodeVarint(7<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.ServerHeader); err != nil { + return err + } + case *GrpcLogEntry_Message: + b.EncodeVarint(8<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Message); err != nil { + return err + } + case *GrpcLogEntry_Trailer: + b.EncodeVarint(9<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Trailer); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("GrpcLogEntry.Payload has unexpected type %T", x) + } + return nil +} + +func _GrpcLogEntry_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*GrpcLogEntry) + switch tag { + case 6: // payload.client_header + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ClientHeader) + err := b.DecodeMessage(msg) + m.Payload = &GrpcLogEntry_ClientHeader{msg} + return true, err + case 7: // payload.server_header + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ServerHeader) + err := b.DecodeMessage(msg) + m.Payload = &GrpcLogEntry_ServerHeader{msg} + return true, err + case 8: // payload.message + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Message) + err := b.DecodeMessage(msg) + m.Payload = &GrpcLogEntry_Message{msg} + return true, err + case 9: // payload.trailer + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(Trailer) + err := b.DecodeMessage(msg) + m.Payload = &GrpcLogEntry_Trailer{msg} + return true, err + default: + return false, nil + } +} + +func _GrpcLogEntry_OneofSizer(msg proto.Message) (n int) { + m := msg.(*GrpcLogEntry) + // payload + switch x := m.Payload.(type) { + case *GrpcLogEntry_ClientHeader: + s := proto.Size(x.ClientHeader) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *GrpcLogEntry_ServerHeader: + s := proto.Size(x.ServerHeader) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *GrpcLogEntry_Message: + s := proto.Size(x.Message) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case *GrpcLogEntry_Trailer: + s := proto.Size(x.Trailer) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type ClientHeader struct { + // This contains only the metadata from the application. + Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // The name of the RPC method, which looks something like: + // // + // Note the leading "/" character. + MethodName string `protobuf:"bytes,2,opt,name=method_name,json=methodName,proto3" json:"method_name,omitempty"` + // A single process may be used to run multiple virtual + // servers with different identities. + // The authority is the name of such a server identitiy. + // It is typically a portion of the URI in the form of + // or : . + Authority string `protobuf:"bytes,3,opt,name=authority,proto3" json:"authority,omitempty"` + // the RPC timeout + Timeout *duration.Duration `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ClientHeader) Reset() { *m = ClientHeader{} } +func (m *ClientHeader) String() string { return proto.CompactTextString(m) } +func (*ClientHeader) ProtoMessage() {} +func (*ClientHeader) Descriptor() ([]byte, []int) { + return fileDescriptor_binarylog_264c8c9c551ce911, []int{1} +} +func (m *ClientHeader) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ClientHeader.Unmarshal(m, b) +} +func (m *ClientHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ClientHeader.Marshal(b, m, deterministic) +} +func (dst *ClientHeader) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClientHeader.Merge(dst, src) +} +func (m *ClientHeader) XXX_Size() int { + return xxx_messageInfo_ClientHeader.Size(m) +} +func (m *ClientHeader) XXX_DiscardUnknown() { + xxx_messageInfo_ClientHeader.DiscardUnknown(m) +} + +var xxx_messageInfo_ClientHeader proto.InternalMessageInfo + +func (m *ClientHeader) GetMetadata() *Metadata { + if m != nil { + return m.Metadata + } + return nil +} + +func (m *ClientHeader) GetMethodName() string { + if m != nil { + return m.MethodName + } + return "" +} + +func (m *ClientHeader) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *ClientHeader) GetTimeout() *duration.Duration { + if m != nil { + return m.Timeout + } + return nil +} + +type ServerHeader struct { + // This contains only the metadata from the application. + Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ServerHeader) Reset() { *m = ServerHeader{} } +func (m *ServerHeader) String() string { return proto.CompactTextString(m) } +func (*ServerHeader) ProtoMessage() {} +func (*ServerHeader) Descriptor() ([]byte, []int) { + return fileDescriptor_binarylog_264c8c9c551ce911, []int{2} +} +func (m *ServerHeader) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ServerHeader.Unmarshal(m, b) +} +func (m *ServerHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ServerHeader.Marshal(b, m, deterministic) +} +func (dst *ServerHeader) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServerHeader.Merge(dst, src) +} +func (m *ServerHeader) XXX_Size() int { + return xxx_messageInfo_ServerHeader.Size(m) +} +func (m *ServerHeader) XXX_DiscardUnknown() { + xxx_messageInfo_ServerHeader.DiscardUnknown(m) +} + +var xxx_messageInfo_ServerHeader proto.InternalMessageInfo + +func (m *ServerHeader) GetMetadata() *Metadata { + if m != nil { + return m.Metadata + } + return nil +} + +type Trailer struct { + // This contains only the metadata from the application. + Metadata *Metadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + // The gRPC status code. + StatusCode uint32 `protobuf:"varint,2,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"` + // An original status message before any transport specific + // encoding. + StatusMessage string `protobuf:"bytes,3,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` + // The value of the 'grpc-status-details-bin' metadata key. If + // present, this is always an encoded 'google.rpc.Status' message. + StatusDetails []byte `protobuf:"bytes,4,opt,name=status_details,json=statusDetails,proto3" json:"status_details,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Trailer) Reset() { *m = Trailer{} } +func (m *Trailer) String() string { return proto.CompactTextString(m) } +func (*Trailer) ProtoMessage() {} +func (*Trailer) Descriptor() ([]byte, []int) { + return fileDescriptor_binarylog_264c8c9c551ce911, []int{3} +} +func (m *Trailer) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Trailer.Unmarshal(m, b) +} +func (m *Trailer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Trailer.Marshal(b, m, deterministic) +} +func (dst *Trailer) XXX_Merge(src proto.Message) { + xxx_messageInfo_Trailer.Merge(dst, src) +} +func (m *Trailer) XXX_Size() int { + return xxx_messageInfo_Trailer.Size(m) +} +func (m *Trailer) XXX_DiscardUnknown() { + xxx_messageInfo_Trailer.DiscardUnknown(m) +} + +var xxx_messageInfo_Trailer proto.InternalMessageInfo + +func (m *Trailer) GetMetadata() *Metadata { + if m != nil { + return m.Metadata + } + return nil +} + +func (m *Trailer) GetStatusCode() uint32 { + if m != nil { + return m.StatusCode + } + return 0 +} + +func (m *Trailer) GetStatusMessage() string { + if m != nil { + return m.StatusMessage + } + return "" +} + +func (m *Trailer) GetStatusDetails() []byte { + if m != nil { + return m.StatusDetails + } + return nil +} + +// Message payload, used by CLIENT_MESSAGE and SERVER_MESSAGE +type Message struct { + // Length of the message. It may not be the same as the length of the + // data field, as the logging payload can be truncated or omitted. + Length uint32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` + // May be truncated or omitted. + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Message) Reset() { *m = Message{} } +func (m *Message) String() string { return proto.CompactTextString(m) } +func (*Message) ProtoMessage() {} +func (*Message) Descriptor() ([]byte, []int) { + return fileDescriptor_binarylog_264c8c9c551ce911, []int{4} +} +func (m *Message) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Message.Unmarshal(m, b) +} +func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Message.Marshal(b, m, deterministic) +} +func (dst *Message) XXX_Merge(src proto.Message) { + xxx_messageInfo_Message.Merge(dst, src) +} +func (m *Message) XXX_Size() int { + return xxx_messageInfo_Message.Size(m) +} +func (m *Message) XXX_DiscardUnknown() { + xxx_messageInfo_Message.DiscardUnknown(m) +} + +var xxx_messageInfo_Message proto.InternalMessageInfo + +func (m *Message) GetLength() uint32 { + if m != nil { + return m.Length + } + return 0 +} + +func (m *Message) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + +// A list of metadata pairs, used in the payload of client header, +// server header, and server trailer. +// Implementations may omit some entries to honor the header limits +// of GRPC_BINARY_LOG_CONFIG. +// +// Header keys added by gRPC are omitted. To be more specific, +// implementations will not log the following entries, and this is +// not to be treated as a truncation: +// - entries handled by grpc that are not user visible, such as those +// that begin with 'grpc-' (with exception of grpc-trace-bin) +// or keys like 'lb-token' +// - transport specific entries, including but not limited to: +// ':path', ':authority', 'content-encoding', 'user-agent', 'te', etc +// - entries added for call credentials +// +// Implementations must always log grpc-trace-bin if it is present. +// Practically speaking it will only be visible on server side because +// grpc-trace-bin is managed by low level client side mechanisms +// inaccessible from the application level. On server side, the +// header is just a normal metadata key. +// The pair will not count towards the size limit. +type Metadata struct { + Entry []*MetadataEntry `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Metadata) Reset() { *m = Metadata{} } +func (m *Metadata) String() string { return proto.CompactTextString(m) } +func (*Metadata) ProtoMessage() {} +func (*Metadata) Descriptor() ([]byte, []int) { + return fileDescriptor_binarylog_264c8c9c551ce911, []int{5} +} +func (m *Metadata) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Metadata.Unmarshal(m, b) +} +func (m *Metadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Metadata.Marshal(b, m, deterministic) +} +func (dst *Metadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_Metadata.Merge(dst, src) +} +func (m *Metadata) XXX_Size() int { + return xxx_messageInfo_Metadata.Size(m) +} +func (m *Metadata) XXX_DiscardUnknown() { + xxx_messageInfo_Metadata.DiscardUnknown(m) +} + +var xxx_messageInfo_Metadata proto.InternalMessageInfo + +func (m *Metadata) GetEntry() []*MetadataEntry { + if m != nil { + return m.Entry + } + return nil +} + +// A metadata key value pair +type MetadataEntry struct { + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *MetadataEntry) Reset() { *m = MetadataEntry{} } +func (m *MetadataEntry) String() string { return proto.CompactTextString(m) } +func (*MetadataEntry) ProtoMessage() {} +func (*MetadataEntry) Descriptor() ([]byte, []int) { + return fileDescriptor_binarylog_264c8c9c551ce911, []int{6} +} +func (m *MetadataEntry) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_MetadataEntry.Unmarshal(m, b) +} +func (m *MetadataEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_MetadataEntry.Marshal(b, m, deterministic) +} +func (dst *MetadataEntry) XXX_Merge(src proto.Message) { + xxx_messageInfo_MetadataEntry.Merge(dst, src) +} +func (m *MetadataEntry) XXX_Size() int { + return xxx_messageInfo_MetadataEntry.Size(m) +} +func (m *MetadataEntry) XXX_DiscardUnknown() { + xxx_messageInfo_MetadataEntry.DiscardUnknown(m) +} + +var xxx_messageInfo_MetadataEntry proto.InternalMessageInfo + +func (m *MetadataEntry) GetKey() string { + if m != nil { + return m.Key + } + return "" +} + +func (m *MetadataEntry) GetValue() []byte { + if m != nil { + return m.Value + } + return nil +} + +// Address information +type Address struct { + Type Address_Type `protobuf:"varint,1,opt,name=type,proto3,enum=grpc.binarylog.v1.Address_Type" json:"type,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + // only for TYPE_IPV4 and TYPE_IPV6 + IpPort uint32 `protobuf:"varint,3,opt,name=ip_port,json=ipPort,proto3" json:"ip_port,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Address) Reset() { *m = Address{} } +func (m *Address) String() string { return proto.CompactTextString(m) } +func (*Address) ProtoMessage() {} +func (*Address) Descriptor() ([]byte, []int) { + return fileDescriptor_binarylog_264c8c9c551ce911, []int{7} +} +func (m *Address) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Address.Unmarshal(m, b) +} +func (m *Address) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Address.Marshal(b, m, deterministic) +} +func (dst *Address) XXX_Merge(src proto.Message) { + xxx_messageInfo_Address.Merge(dst, src) +} +func (m *Address) XXX_Size() int { + return xxx_messageInfo_Address.Size(m) +} +func (m *Address) XXX_DiscardUnknown() { + xxx_messageInfo_Address.DiscardUnknown(m) +} + +var xxx_messageInfo_Address proto.InternalMessageInfo + +func (m *Address) GetType() Address_Type { + if m != nil { + return m.Type + } + return Address_TYPE_UNKNOWN +} + +func (m *Address) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *Address) GetIpPort() uint32 { + if m != nil { + return m.IpPort + } + return 0 +} + +func init() { + proto.RegisterType((*GrpcLogEntry)(nil), "grpc.binarylog.v1.GrpcLogEntry") + proto.RegisterType((*ClientHeader)(nil), "grpc.binarylog.v1.ClientHeader") + proto.RegisterType((*ServerHeader)(nil), "grpc.binarylog.v1.ServerHeader") + proto.RegisterType((*Trailer)(nil), "grpc.binarylog.v1.Trailer") + proto.RegisterType((*Message)(nil), "grpc.binarylog.v1.Message") + proto.RegisterType((*Metadata)(nil), "grpc.binarylog.v1.Metadata") + proto.RegisterType((*MetadataEntry)(nil), "grpc.binarylog.v1.MetadataEntry") + proto.RegisterType((*Address)(nil), "grpc.binarylog.v1.Address") + proto.RegisterEnum("grpc.binarylog.v1.GrpcLogEntry_EventType", GrpcLogEntry_EventType_name, GrpcLogEntry_EventType_value) + proto.RegisterEnum("grpc.binarylog.v1.GrpcLogEntry_Logger", GrpcLogEntry_Logger_name, GrpcLogEntry_Logger_value) + proto.RegisterEnum("grpc.binarylog.v1.Address_Type", Address_Type_name, Address_Type_value) +} + +func init() { + proto.RegisterFile("grpc/binarylog/grpc_binarylog_v1/binarylog.proto", fileDescriptor_binarylog_264c8c9c551ce911) +} + +var fileDescriptor_binarylog_264c8c9c551ce911 = []byte{ + // 900 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x51, 0x6f, 0xe3, 0x44, + 0x10, 0x3e, 0x37, 0x69, 0xdc, 0x4c, 0x92, 0xca, 0x5d, 0x95, 0x3b, 0x5f, 0x29, 0x34, 0xb2, 0x04, + 0x0a, 0x42, 0x72, 0xb9, 0x94, 0xeb, 0xf1, 0x02, 0x52, 0x92, 0xfa, 0xd2, 0x88, 0x5c, 0x1a, 0x6d, + 0x72, 0x3d, 0x40, 0x48, 0xd6, 0x36, 0x5e, 0x1c, 0x0b, 0xc7, 0x6b, 0xd6, 0x9b, 0xa0, 0xfc, 0x2c, + 0xde, 0x90, 0xee, 0x77, 0xf1, 0x8e, 0xbc, 0x6b, 0x27, 0xa6, 0x69, 0x0f, 0x09, 0xde, 0x3c, 0xdf, + 0x7c, 0xf3, 0xcd, 0xee, 0x78, 0x66, 0x16, 0xbe, 0xf2, 0x79, 0x3c, 0x3b, 0xbf, 0x0b, 0x22, 0xc2, + 0xd7, 0x21, 0xf3, 0xcf, 0x53, 0xd3, 0xdd, 0x98, 0xee, 0xea, 0xc5, 0xd6, 0x67, 0xc7, 0x9c, 0x09, + 0x86, 0x8e, 0x52, 0x8a, 0xbd, 0x45, 0x57, 0x2f, 0x4e, 0x3e, 0xf5, 0x19, 0xf3, 0x43, 0x7a, 0x2e, + 0x09, 0x77, 0xcb, 0x5f, 0xce, 0xbd, 0x25, 0x27, 0x22, 0x60, 0x91, 0x0a, 0x39, 0x39, 0xbb, 0xef, + 0x17, 0xc1, 0x82, 0x26, 0x82, 0x2c, 0x62, 0x45, 0xb0, 0xde, 0xeb, 0x50, 0xef, 0xf3, 0x78, 0x36, + 0x64, 0xbe, 0x13, 0x09, 0xbe, 0x46, 0xdf, 0x40, 0x75, 0xc3, 0x31, 0xb5, 0xa6, 0xd6, 0xaa, 0xb5, + 0x4f, 0x6c, 0xa5, 0x62, 0xe7, 0x2a, 0xf6, 0x34, 0x67, 0xe0, 0x2d, 0x19, 0x3d, 0x03, 0x7d, 0x46, + 0xc2, 0xd0, 0x0d, 0x3c, 0x73, 0xaf, 0xa9, 0xb5, 0xca, 0xb8, 0x92, 0x9a, 0x03, 0x0f, 0xbd, 0x84, + 0x67, 0x09, 0xfd, 0x6d, 0x49, 0xa3, 0x19, 0x75, 0x03, 0xcf, 0xfd, 0x3d, 0x10, 0xf3, 0x20, 0x72, + 0x53, 0xa7, 0x59, 0x92, 0xc4, 0xe3, 0xdc, 0x3d, 0xf0, 0xde, 0x49, 0x67, 0x8f, 0x84, 0x21, 0xfa, + 0x16, 0xca, 0x62, 0x1d, 0x53, 0xb3, 0xdc, 0xd4, 0x5a, 0x87, 0xed, 0x2f, 0xec, 0x9d, 0xdb, 0xdb, + 0xc5, 0x83, 0xdb, 0xce, 0x8a, 0x46, 0x62, 0xba, 0x8e, 0x29, 0x96, 0x61, 0xe8, 0x3b, 0xa8, 0x84, + 0xcc, 0xf7, 0x29, 0x37, 0xf7, 0xa5, 0xc0, 0xe7, 0xff, 0x26, 0x30, 0x94, 0x6c, 0x9c, 0x45, 0xa1, + 0xd7, 0xd0, 0x98, 0x85, 0x01, 0x8d, 0x84, 0x3b, 0xa7, 0xc4, 0xa3, 0xdc, 0xac, 0xc8, 0x62, 0x9c, + 0x3d, 0x20, 0xd3, 0x93, 0xbc, 0x6b, 0x49, 0xbb, 0x7e, 0x82, 0xeb, 0xb3, 0x82, 0x9d, 0xea, 0x24, + 0x94, 0xaf, 0x28, 0xcf, 0x75, 0xf4, 0x47, 0x75, 0x26, 0x92, 0xb7, 0xd5, 0x49, 0x0a, 0x36, 0xba, + 0x04, 0x7d, 0x41, 0x93, 0x84, 0xf8, 0xd4, 0x3c, 0xc8, 0x7f, 0xcb, 0x8e, 0xc2, 0x1b, 0xc5, 0xb8, + 0x7e, 0x82, 0x73, 0x72, 0x1a, 0x27, 0x38, 0x09, 0x42, 0xca, 0xcd, 0xea, 0xa3, 0x71, 0x53, 0xc5, + 0x48, 0xe3, 0x32, 0x32, 0xfa, 0x12, 0x8e, 0x62, 0xb2, 0x0e, 0x19, 0xf1, 0x5c, 0xc1, 0x97, 0xd1, + 0x8c, 0x08, 0xea, 0x99, 0xd0, 0xd4, 0x5a, 0x07, 0xd8, 0xc8, 0x1c, 0xd3, 0x1c, 0x47, 0x36, 0x94, + 0x63, 0x4a, 0xb9, 0x59, 0x7b, 0x34, 0x43, 0xc7, 0xf3, 0x38, 0x4d, 0x12, 0x2c, 0x79, 0xd6, 0x5f, + 0x1a, 0x54, 0x37, 0x3f, 0x0c, 0x3d, 0x05, 0xe4, 0xdc, 0x3a, 0xa3, 0xa9, 0x3b, 0xfd, 0x71, 0xec, + 0xb8, 0x6f, 0x47, 0xdf, 0x8f, 0x6e, 0xde, 0x8d, 0x8c, 0x27, 0xe8, 0x14, 0xcc, 0x02, 0xde, 0x1b, + 0x0e, 0xd2, 0xef, 0x6b, 0xa7, 0x73, 0xe5, 0x60, 0x43, 0xbb, 0xe7, 0x9d, 0x38, 0xf8, 0xd6, 0xc1, + 0xb9, 0x77, 0x0f, 0x7d, 0x02, 0xcf, 0x77, 0x63, 0xdf, 0x38, 0x93, 0x49, 0xa7, 0xef, 0x18, 0xa5, + 0x7b, 0xee, 0x2c, 0x38, 0x77, 0x97, 0x51, 0x13, 0x4e, 0x1f, 0xc8, 0xdc, 0x19, 0xbe, 0x76, 0x7b, + 0xc3, 0x9b, 0x89, 0x63, 0xec, 0x3f, 0x2c, 0x30, 0xc5, 0x9d, 0xc1, 0xd0, 0xc1, 0x46, 0x05, 0x7d, + 0x04, 0x47, 0x45, 0x81, 0xce, 0xa8, 0xe7, 0x0c, 0x0d, 0xdd, 0xea, 0x42, 0x45, 0xb5, 0x19, 0x42, + 0x70, 0x38, 0xbc, 0xe9, 0xf7, 0x1d, 0x5c, 0xb8, 0xef, 0x11, 0x34, 0x32, 0x4c, 0x65, 0x34, 0xb4, + 0x02, 0xa4, 0x52, 0x18, 0x7b, 0xdd, 0x2a, 0xe8, 0x59, 0xfd, 0xad, 0xf7, 0x1a, 0xd4, 0x8b, 0xcd, + 0x87, 0x5e, 0xc1, 0xc1, 0x82, 0x0a, 0xe2, 0x11, 0x41, 0xb2, 0xe1, 0xfd, 0xf8, 0xc1, 0x2e, 0x51, + 0x14, 0xbc, 0x21, 0xa3, 0x33, 0xa8, 0x2d, 0xa8, 0x98, 0x33, 0xcf, 0x8d, 0xc8, 0x82, 0xca, 0x01, + 0xae, 0x62, 0x50, 0xd0, 0x88, 0x2c, 0x28, 0x3a, 0x85, 0x2a, 0x59, 0x8a, 0x39, 0xe3, 0x81, 0x58, + 0xcb, 0xb1, 0xad, 0xe2, 0x2d, 0x80, 0x2e, 0x40, 0x4f, 0x17, 0x01, 0x5b, 0x0a, 0x39, 0xae, 0xb5, + 0xf6, 0xf3, 0x9d, 0x9d, 0x71, 0x95, 0x6d, 0x26, 0x9c, 0x33, 0xad, 0x3e, 0xd4, 0x8b, 0x1d, 0xff, + 0x9f, 0x0f, 0x6f, 0xfd, 0xa1, 0x81, 0x9e, 0x75, 0xf0, 0xff, 0xaa, 0x40, 0x22, 0x88, 0x58, 0x26, + 0xee, 0x8c, 0x79, 0xaa, 0x02, 0x0d, 0x0c, 0x0a, 0xea, 0x31, 0x8f, 0xa2, 0xcf, 0xe0, 0x30, 0x23, + 0xe4, 0x73, 0xa8, 0xca, 0xd0, 0x50, 0x68, 0x36, 0x7a, 0x05, 0x9a, 0x47, 0x05, 0x09, 0xc2, 0x44, + 0x56, 0xa4, 0x9e, 0xd3, 0xae, 0x14, 0x68, 0xbd, 0x04, 0x3d, 0x8f, 0x78, 0x0a, 0x95, 0x90, 0x46, + 0xbe, 0x98, 0xcb, 0x03, 0x37, 0x70, 0x66, 0x21, 0x04, 0x65, 0x79, 0x8d, 0x3d, 0x19, 0x2f, 0xbf, + 0xad, 0x2e, 0x1c, 0xe4, 0x67, 0x47, 0x97, 0xb0, 0x4f, 0xd3, 0xcd, 0x65, 0x6a, 0xcd, 0x52, 0xab, + 0xd6, 0x6e, 0x7e, 0xe0, 0x9e, 0x72, 0xc3, 0x61, 0x45, 0xb7, 0x5e, 0x41, 0xe3, 0x1f, 0x38, 0x32, + 0xa0, 0xf4, 0x2b, 0x5d, 0xcb, 0xec, 0x55, 0x9c, 0x7e, 0xa2, 0x63, 0xd8, 0x5f, 0x91, 0x70, 0x49, + 0xb3, 0xdc, 0xca, 0xb0, 0xfe, 0xd4, 0x40, 0xcf, 0xe6, 0x18, 0x5d, 0x64, 0xdb, 0x59, 0x93, 0xcb, + 0xf5, 0xec, 0xf1, 0x89, 0xb7, 0x0b, 0x3b, 0xd9, 0x04, 0x9d, 0x28, 0x34, 0xeb, 0xb0, 0xdc, 0x4c, + 0x1f, 0x8f, 0x20, 0x76, 0x63, 0xc6, 0x85, 0xac, 0x6a, 0x03, 0x57, 0x82, 0x78, 0xcc, 0xb8, 0xb0, + 0x1c, 0x28, 0xcb, 0x1d, 0x61, 0x40, 0xfd, 0xde, 0x76, 0x68, 0x40, 0x55, 0x22, 0x83, 0xf1, 0xed, + 0xd7, 0x86, 0x56, 0x34, 0x2f, 0x8d, 0xbd, 0x8d, 0xf9, 0x76, 0x34, 0xf8, 0xc1, 0x28, 0x75, 0x7f, + 0x86, 0xe3, 0x80, 0xed, 0x1e, 0xb2, 0x7b, 0xd8, 0x95, 0xd6, 0x90, 0xf9, 0xe3, 0xb4, 0x51, 0xc7, + 0xda, 0x4f, 0xed, 0xac, 0x71, 0x7d, 0x16, 0x92, 0xc8, 0xb7, 0x19, 0x57, 0x4f, 0xf3, 0x87, 0x5e, + 0xea, 0xbb, 0x8a, 0xec, 0xf2, 0x8b, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xe7, 0xf6, 0x4b, 0x50, + 0xd4, 0x07, 0x00, 0x00, +} diff --git a/vendor/google.golang.org/grpc/call.go b/vendor/google.golang.org/grpc/call.go index b2590e97b0..9e20e4d385 100644 --- a/vendor/google.golang.org/grpc/call.go +++ b/vendor/google.golang.org/grpc/call.go @@ -19,7 +19,7 @@ package grpc import ( - "golang.org/x/net/context" + "context" ) // Invoke sends the RPC request on the wire and returns after response is @@ -29,7 +29,7 @@ import ( func (cc *ClientConn) Invoke(ctx context.Context, method string, args, reply interface{}, opts ...CallOption) error { // allow interceptor to see all applicable call options, which means those // configured as defaults from dial option as well as per-call options - opts = append(cc.dopts.callOptions, opts...) + opts = combine(cc.dopts.callOptions, opts) if cc.dopts.unaryInt != nil { return cc.dopts.unaryInt(ctx, method, args, reply, cc, invoke, opts...) @@ -37,6 +37,21 @@ func (cc *ClientConn) Invoke(ctx context.Context, method string, args, reply int return invoke(ctx, method, args, reply, cc, opts...) } +func combine(o1 []CallOption, o2 []CallOption) []CallOption { + // we don't use append because o1 could have extra capacity whose + // elements would be overwritten, which could cause inadvertent + // sharing (and race conditions) between concurrent calls + if len(o1) == 0 { + return o2 + } else if len(o2) == 0 { + return o1 + } + ret := make([]CallOption, len(o1)+len(o2)) + copy(ret, o1) + copy(ret[len(o1):], o2) + return ret +} + // Invoke sends the RPC request on the wire and returns after response is // received. This is typically called by generated code. // @@ -48,31 +63,12 @@ func Invoke(ctx context.Context, method string, args, reply interface{}, cc *Cli var unaryStreamDesc = &StreamDesc{ServerStreams: false, ClientStreams: false} func invoke(ctx context.Context, method string, req, reply interface{}, cc *ClientConn, opts ...CallOption) error { - // TODO: implement retries in clientStream and make this simply - // newClientStream, SendMsg, RecvMsg. - firstAttempt := true - for { - csInt, err := newClientStream(ctx, unaryStreamDesc, cc, method, opts...) - if err != nil { - return err - } - cs := csInt.(*clientStream) - if err := cs.SendMsg(req); err != nil { - if !cs.c.failFast && cs.attempt.s.Unprocessed() && firstAttempt { - // TODO: Add a field to header for grpc-transparent-retry-attempts - firstAttempt = false - continue - } - return err - } - if err := cs.RecvMsg(reply); err != nil { - if !cs.c.failFast && cs.attempt.s.Unprocessed() && firstAttempt { - // TODO: Add a field to header for grpc-transparent-retry-attempts - firstAttempt = false - continue - } - return err - } - return nil + cs, err := newClientStream(ctx, unaryStreamDesc, cc, method, opts...) + if err != nil { + return err + } + if err := cs.SendMsg(req); err != nil { + return err } + return cs.RecvMsg(reply) } diff --git a/vendor/google.golang.org/grpc/clientconn.go b/vendor/google.golang.org/grpc/clientconn.go index 096d9434c2..a7643df7d2 100644 --- a/vendor/google.golang.org/grpc/clientconn.go +++ b/vendor/google.golang.org/grpc/clientconn.go @@ -19,6 +19,7 @@ package grpc import ( + "context" "errors" "fmt" "math" @@ -26,28 +27,32 @@ import ( "reflect" "strings" "sync" + "sync/atomic" "time" - "golang.org/x/net/context" - "golang.org/x/net/trace" "google.golang.org/grpc/balancer" _ "google.golang.org/grpc/balancer/roundrobin" // To register roundrobin. "google.golang.org/grpc/codes" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/credentials" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal/backoff" + "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/grpcsync" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/resolver" _ "google.golang.org/grpc/resolver/dns" // To register dns resolver. _ "google.golang.org/grpc/resolver/passthrough" // To register passthrough resolver. - "google.golang.org/grpc/stats" + "google.golang.org/grpc/serviceconfig" "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" ) const ( // minimum time to give a connection to complete minConnectTimeout = 20 * time.Second + // must match grpclbName in grpclb/grpclb.go + grpclbName = "grpclb" ) var ( @@ -61,15 +66,11 @@ var ( errConnDrain = errors.New("grpc: the connection is drained") // errConnClosing indicates that the connection is closing. errConnClosing = errors.New("grpc: the connection is closing") - // errConnUnavailable indicates that the connection is unavailable. - errConnUnavailable = errors.New("grpc: the connection is unavailable") // errBalancerClosed indicates that the balancer is closed. errBalancerClosed = errors.New("grpc: balancer is closed") - // We use an accessor so that minConnectTimeout can be - // atomically read and updated while testing. - getMinConnectTimeout = func() time.Duration { - return minConnectTimeout - } + // invalidDefaultServiceConfigErrPrefix is used to prefix the json parsing error for the default + // service config. + invalidDefaultServiceConfigErrPrefix = "grpc: the provided default service config is invalid" ) // The following errors are returned from Dial and DialContext @@ -78,357 +79,103 @@ var ( // being set for ClientConn. Users should either set one or explicitly // call WithInsecure DialOption to disable security. errNoTransportSecurity = errors.New("grpc: no transport security set (use grpc.WithInsecure() explicitly or set credentials)") + // errTransportCredsAndBundle indicates that creds bundle is used together + // with other individual Transport Credentials. + errTransportCredsAndBundle = errors.New("grpc: credentials.Bundle may not be used with individual TransportCredentials") // errTransportCredentialsMissing indicates that users want to transmit security - // information (e.g., oauth2 token) which requires secure connection on an insecure + // information (e.g., OAuth2 token) which requires secure connection on an insecure // connection. errTransportCredentialsMissing = errors.New("grpc: the credentials require transport level security (use grpc.WithTransportCredentials() to set)") // errCredentialsConflict indicates that grpc.WithTransportCredentials() // and grpc.WithInsecure() are both called for a connection. errCredentialsConflict = errors.New("grpc: transport credentials are set for an insecure connection (grpc.WithTransportCredentials() and grpc.WithInsecure() are both called)") - // errNetworkIO indicates that the connection is down due to some network I/O error. - errNetworkIO = errors.New("grpc: failed with network I/O error") ) -// dialOptions configure a Dial call. dialOptions are set by the DialOption -// values passed to Dial. -type dialOptions struct { - unaryInt UnaryClientInterceptor - streamInt StreamClientInterceptor - cp Compressor - dc Decompressor - bs backoffStrategy - block bool - insecure bool - timeout time.Duration - scChan <-chan ServiceConfig - copts transport.ConnectOptions - callOptions []CallOption - // This is used by v1 balancer dial option WithBalancer to support v1 - // balancer, and also by WithBalancerName dial option. - balancerBuilder balancer.Builder - // This is to support grpclb. - resolverBuilder resolver.Builder - waitForHandshake bool -} - const ( defaultClientMaxReceiveMessageSize = 1024 * 1024 * 4 defaultClientMaxSendMessageSize = math.MaxInt32 + // http2IOBufSize specifies the buffer size for sending frames. + defaultWriteBufSize = 32 * 1024 + defaultReadBufSize = 32 * 1024 ) -// DialOption configures how we set up the connection. -type DialOption func(*dialOptions) - -// WithWaitForHandshake blocks until the initial settings frame is received from the -// server before assigning RPCs to the connection. -// Experimental API. -func WithWaitForHandshake() DialOption { - return func(o *dialOptions) { - o.waitForHandshake = true - } -} - -// WithWriteBufferSize lets you set the size of write buffer, this determines how much data can be batched -// before doing a write on the wire. -func WithWriteBufferSize(s int) DialOption { - return func(o *dialOptions) { - o.copts.WriteBufferSize = s - } -} - -// WithReadBufferSize lets you set the size of read buffer, this determines how much data can be read at most -// for each read syscall. -func WithReadBufferSize(s int) DialOption { - return func(o *dialOptions) { - o.copts.ReadBufferSize = s - } -} - -// WithInitialWindowSize returns a DialOption which sets the value for initial window size on a stream. -// The lower bound for window size is 64K and any value smaller than that will be ignored. -func WithInitialWindowSize(s int32) DialOption { - return func(o *dialOptions) { - o.copts.InitialWindowSize = s - } -} - -// WithInitialConnWindowSize returns a DialOption which sets the value for initial window size on a connection. -// The lower bound for window size is 64K and any value smaller than that will be ignored. -func WithInitialConnWindowSize(s int32) DialOption { - return func(o *dialOptions) { - o.copts.InitialConnWindowSize = s - } -} - -// WithMaxMsgSize returns a DialOption which sets the maximum message size the client can receive. Deprecated: use WithDefaultCallOptions(MaxCallRecvMsgSize(s)) instead. -func WithMaxMsgSize(s int) DialOption { - return WithDefaultCallOptions(MaxCallRecvMsgSize(s)) -} - -// WithDefaultCallOptions returns a DialOption which sets the default CallOptions for calls over the connection. -func WithDefaultCallOptions(cos ...CallOption) DialOption { - return func(o *dialOptions) { - o.callOptions = append(o.callOptions, cos...) - } -} - -// WithCodec returns a DialOption which sets a codec for message marshaling and unmarshaling. -// -// Deprecated: use WithDefaultCallOptions(CallCustomCodec(c)) instead. -func WithCodec(c Codec) DialOption { - return WithDefaultCallOptions(CallCustomCodec(c)) -} - -// WithCompressor returns a DialOption which sets a Compressor to use for -// message compression. It has lower priority than the compressor set by -// the UseCompressor CallOption. -// -// Deprecated: use UseCompressor instead. -func WithCompressor(cp Compressor) DialOption { - return func(o *dialOptions) { - o.cp = cp - } -} - -// WithDecompressor returns a DialOption which sets a Decompressor to use for -// incoming message decompression. If incoming response messages are encoded -// using the decompressor's Type(), it will be used. Otherwise, the message -// encoding will be used to look up the compressor registered via -// encoding.RegisterCompressor, which will then be used to decompress the -// message. If no compressor is registered for the encoding, an Unimplemented -// status error will be returned. -// -// Deprecated: use encoding.RegisterCompressor instead. -func WithDecompressor(dc Decompressor) DialOption { - return func(o *dialOptions) { - o.dc = dc - } -} - -// WithBalancer returns a DialOption which sets a load balancer with the v1 API. -// Name resolver will be ignored if this DialOption is specified. -// -// Deprecated: use the new balancer APIs in balancer package and WithBalancerName. -func WithBalancer(b Balancer) DialOption { - return func(o *dialOptions) { - o.balancerBuilder = &balancerWrapperBuilder{ - b: b, - } - } -} - -// WithBalancerName sets the balancer that the ClientConn will be initialized -// with. Balancer registered with balancerName will be used. This function -// panics if no balancer was registered by balancerName. -// -// The balancer cannot be overridden by balancer option specified by service -// config. -// -// This is an EXPERIMENTAL API. -func WithBalancerName(balancerName string) DialOption { - builder := balancer.Get(balancerName) - if builder == nil { - panic(fmt.Sprintf("grpc.WithBalancerName: no balancer is registered for name %v", balancerName)) - } - return func(o *dialOptions) { - o.balancerBuilder = builder - } -} - -// withResolverBuilder is only for grpclb. -func withResolverBuilder(b resolver.Builder) DialOption { - return func(o *dialOptions) { - o.resolverBuilder = b - } -} - -// WithServiceConfig returns a DialOption which has a channel to read the service configuration. -// DEPRECATED: service config should be received through name resolver, as specified here. -// https://github.com/grpc/grpc/blob/master/doc/service_config.md -func WithServiceConfig(c <-chan ServiceConfig) DialOption { - return func(o *dialOptions) { - o.scChan = c - } -} - -// WithBackoffMaxDelay configures the dialer to use the provided maximum delay -// when backing off after failed connection attempts. -func WithBackoffMaxDelay(md time.Duration) DialOption { - return WithBackoffConfig(BackoffConfig{MaxDelay: md}) -} - -// WithBackoffConfig configures the dialer to use the provided backoff -// parameters after connection failures. -// -// Use WithBackoffMaxDelay until more parameters on BackoffConfig are opened up -// for use. -func WithBackoffConfig(b BackoffConfig) DialOption { - // Set defaults to ensure that provided BackoffConfig is valid and - // unexported fields get default values. - setDefaults(&b) - return withBackoff(b) -} - -// withBackoff sets the backoff strategy used for connectRetryNum after a -// failed connection attempt. -// -// This can be exported if arbitrary backoff strategies are allowed by gRPC. -func withBackoff(bs backoffStrategy) DialOption { - return func(o *dialOptions) { - o.bs = bs - } -} - -// WithBlock returns a DialOption which makes caller of Dial blocks until the underlying -// connection is up. Without this, Dial returns immediately and connecting the server -// happens in background. -func WithBlock() DialOption { - return func(o *dialOptions) { - o.block = true - } -} - -// WithInsecure returns a DialOption which disables transport security for this ClientConn. -// Note that transport security is required unless WithInsecure is set. -func WithInsecure() DialOption { - return func(o *dialOptions) { - o.insecure = true - } -} - -// WithTransportCredentials returns a DialOption which configures a -// connection level security credentials (e.g., TLS/SSL). -func WithTransportCredentials(creds credentials.TransportCredentials) DialOption { - return func(o *dialOptions) { - o.copts.TransportCredentials = creds - } -} - -// WithPerRPCCredentials returns a DialOption which sets -// credentials and places auth state on each outbound RPC. -func WithPerRPCCredentials(creds credentials.PerRPCCredentials) DialOption { - return func(o *dialOptions) { - o.copts.PerRPCCredentials = append(o.copts.PerRPCCredentials, creds) - } -} - -// WithTimeout returns a DialOption that configures a timeout for dialing a ClientConn -// initially. This is valid if and only if WithBlock() is present. -// Deprecated: use DialContext and context.WithTimeout instead. -func WithTimeout(d time.Duration) DialOption { - return func(o *dialOptions) { - o.timeout = d - } -} - -func withContextDialer(f func(context.Context, string) (net.Conn, error)) DialOption { - return func(o *dialOptions) { - o.copts.Dialer = f - } -} - -// WithDialer returns a DialOption that specifies a function to use for dialing network addresses. -// If FailOnNonTempDialError() is set to true, and an error is returned by f, gRPC checks the error's -// Temporary() method to decide if it should try to reconnect to the network address. -func WithDialer(f func(string, time.Duration) (net.Conn, error)) DialOption { - return withContextDialer( - func(ctx context.Context, addr string) (net.Conn, error) { - if deadline, ok := ctx.Deadline(); ok { - return f(addr, deadline.Sub(time.Now())) - } - return f(addr, 0) - }) -} - -// WithStatsHandler returns a DialOption that specifies the stats handler -// for all the RPCs and underlying network connections in this ClientConn. -func WithStatsHandler(h stats.Handler) DialOption { - return func(o *dialOptions) { - o.copts.StatsHandler = h - } -} - -// FailOnNonTempDialError returns a DialOption that specifies if gRPC fails on non-temporary dial errors. -// If f is true, and dialer returns a non-temporary error, gRPC will fail the connection to the network -// address and won't try to reconnect. -// The default value of FailOnNonTempDialError is false. -// This is an EXPERIMENTAL API. -func FailOnNonTempDialError(f bool) DialOption { - return func(o *dialOptions) { - o.copts.FailOnNonTempDialError = f - } -} - -// WithUserAgent returns a DialOption that specifies a user agent string for all the RPCs. -func WithUserAgent(s string) DialOption { - return func(o *dialOptions) { - o.copts.UserAgent = s - } -} - -// WithKeepaliveParams returns a DialOption that specifies keepalive parameters for the client transport. -func WithKeepaliveParams(kp keepalive.ClientParameters) DialOption { - return func(o *dialOptions) { - o.copts.KeepaliveParams = kp - } -} - -// WithUnaryInterceptor returns a DialOption that specifies the interceptor for unary RPCs. -func WithUnaryInterceptor(f UnaryClientInterceptor) DialOption { - return func(o *dialOptions) { - o.unaryInt = f - } -} - -// WithStreamInterceptor returns a DialOption that specifies the interceptor for streaming RPCs. -func WithStreamInterceptor(f StreamClientInterceptor) DialOption { - return func(o *dialOptions) { - o.streamInt = f - } -} - -// WithAuthority returns a DialOption that specifies the value to be used as -// the :authority pseudo-header. This value only works with WithInsecure and -// has no effect if TransportCredentials are present. -func WithAuthority(a string) DialOption { - return func(o *dialOptions) { - o.copts.Authority = a - } -} - // Dial creates a client connection to the given target. func Dial(target string, opts ...DialOption) (*ClientConn, error) { return DialContext(context.Background(), target, opts...) } -// DialContext creates a client connection to the given target. ctx can be used to -// cancel or expire the pending connection. Once this function returns, the -// cancellation and expiration of ctx will be noop. Users should call ClientConn.Close -// to terminate all the pending operations after this function returns. +// DialContext creates a client connection to the given target. By default, it's +// a non-blocking dial (the function won't wait for connections to be +// established, and connecting happens in the background). To make it a blocking +// dial, use WithBlock() dial option. +// +// In the non-blocking case, the ctx does not act against the connection. It +// only controls the setup steps. +// +// In the blocking case, ctx can be used to cancel or expire the pending +// connection. Once this function returns, the cancellation and expiration of +// ctx will be noop. Users should call ClientConn.Close to terminate all the +// pending operations after this function returns. // // The target name syntax is defined in // https://github.com/grpc/grpc/blob/master/doc/naming.md. // e.g. to use dns resolver, a "dns:///" prefix should be applied to the target. func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error) { cc := &ClientConn{ - target: target, - csMgr: &connectivityStateManager{}, - conns: make(map[*addrConn]struct{}), - - blockingpicker: newPickerWrapper(), - } + target: target, + csMgr: &connectivityStateManager{}, + conns: make(map[*addrConn]struct{}), + dopts: defaultDialOptions(), + blockingpicker: newPickerWrapper(), + czData: new(channelzData), + firstResolveEvent: grpcsync.NewEvent(), + } + cc.retryThrottler.Store((*retryThrottler)(nil)) cc.ctx, cc.cancel = context.WithCancel(context.Background()) for _, opt := range opts { - opt(&cc.dopts) + opt.apply(&cc.dopts) + } + + chainUnaryClientInterceptors(cc) + chainStreamClientInterceptors(cc) + + defer func() { + if err != nil { + cc.Close() + } + }() + + if channelz.IsOn() { + if cc.dopts.channelzParentID != 0 { + cc.channelzID = channelz.RegisterChannel(&channelzChannel{cc}, cc.dopts.channelzParentID, target) + channelz.AddTraceEvent(cc.channelzID, &channelz.TraceEventDesc{ + Desc: "Channel Created", + Severity: channelz.CtINFO, + Parent: &channelz.TraceEventDesc{ + Desc: fmt.Sprintf("Nested Channel(id:%d) created", cc.channelzID), + Severity: channelz.CtINFO, + }, + }) + } else { + cc.channelzID = channelz.RegisterChannel(&channelzChannel{cc}, 0, target) + channelz.AddTraceEvent(cc.channelzID, &channelz.TraceEventDesc{ + Desc: "Channel Created", + Severity: channelz.CtINFO, + }) + } + cc.csMgr.channelzID = cc.channelzID } if !cc.dopts.insecure { - if cc.dopts.copts.TransportCredentials == nil { + if cc.dopts.copts.TransportCredentials == nil && cc.dopts.copts.CredsBundle == nil { return nil, errNoTransportSecurity } + if cc.dopts.copts.TransportCredentials != nil && cc.dopts.copts.CredsBundle != nil { + return nil, errTransportCredsAndBundle + } } else { - if cc.dopts.copts.TransportCredentials != nil { + if cc.dopts.copts.TransportCredentials != nil || cc.dopts.copts.CredsBundle != nil { return nil, errCredentialsConflict } for _, cd := range cc.dopts.copts.PerRPCCredentials { @@ -438,12 +185,20 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * } } + if cc.dopts.defaultServiceConfigRawJSON != nil { + sc, err := parseServiceConfig(*cc.dopts.defaultServiceConfigRawJSON) + if err != nil { + return nil, fmt.Errorf("%s: %v", invalidDefaultServiceConfigErrPrefix, err) + } + cc.dopts.defaultServiceConfig = sc + } cc.mkp = cc.dopts.copts.KeepaliveParams if cc.dopts.copts.Dialer == nil { cc.dopts.copts.Dialer = newProxyDialer( func(ctx context.Context, addr string) (net.Conn, error) { - return dialContext(ctx, "tcp", addr) + network, addr := parseDialTarget(addr) + return (&net.Dialer{}).DialContext(ctx, network, addr) }, ) } @@ -459,17 +214,12 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * ctx, cancel = context.WithTimeout(ctx, cc.dopts.timeout) defer cancel() } - defer func() { select { case <-ctx.Done(): conn, err = nil, ctx.Err() default: } - - if err != nil { - cc.Close() - } }() scSet := false @@ -478,21 +228,41 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * select { case sc, ok := <-cc.dopts.scChan: if ok { - cc.sc = sc + cc.sc = &sc scSet = true } default: } } if cc.dopts.bs == nil { - cc.dopts.bs = DefaultBackoffConfig + cc.dopts.bs = backoff.Exponential{ + MaxDelay: DefaultBackoffConfig.MaxDelay, + } + } + if cc.dopts.resolverBuilder == nil { + // Only try to parse target when resolver builder is not already set. + cc.parsedTarget = parseTarget(cc.target) + grpclog.Infof("parsed scheme: %q", cc.parsedTarget.Scheme) + cc.dopts.resolverBuilder = resolver.Get(cc.parsedTarget.Scheme) + if cc.dopts.resolverBuilder == nil { + // If resolver builder is still nil, the parsed target's scheme is + // not registered. Fallback to default resolver and set Endpoint to + // the original target. + grpclog.Infof("scheme %q not registered, fallback to default scheme", cc.parsedTarget.Scheme) + cc.parsedTarget = resolver.Target{ + Scheme: resolver.GetDefaultScheme(), + Endpoint: target, + } + cc.dopts.resolverBuilder = resolver.Get(cc.parsedTarget.Scheme) + } + } else { + cc.parsedTarget = resolver.Target{Endpoint: target} } - cc.parsedTarget = parseTarget(cc.target) creds := cc.dopts.copts.TransportCredentials if creds != nil && creds.Info().ServerName != "" { cc.authority = creds.Info().ServerName - } else if cc.dopts.insecure && cc.dopts.copts.Authority != "" { - cc.authority = cc.dopts.copts.Authority + } else if cc.dopts.insecure && cc.dopts.authority != "" { + cc.authority = cc.dopts.authority } else { // Use endpoint from "scheme://authority/endpoint" as the default // authority for ClientConn. @@ -504,7 +274,7 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * select { case sc, ok := <-cc.dopts.scChan: if ok { - cc.sc = sc + cc.sc = &sc } case <-ctx.Done(): return nil, ctx.Err() @@ -519,30 +289,37 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * credsClone = creds.Clone() } cc.balancerBuildOpts = balancer.BuildOptions{ - DialCreds: credsClone, - Dialer: cc.dopts.copts.Dialer, + DialCreds: credsClone, + CredsBundle: cc.dopts.copts.CredsBundle, + Dialer: cc.dopts.copts.Dialer, + ChannelzParentID: cc.channelzID, + Target: cc.parsedTarget, } // Build the resolver. - cc.resolverWrapper, err = newCCResolverWrapper(cc) + rWrapper, err := newCCResolverWrapper(cc) if err != nil { return nil, fmt.Errorf("failed to build resolver: %v", err) } - // Start the resolver wrapper goroutine after resolverWrapper is created. - // - // If the goroutine is started before resolverWrapper is ready, the - // following may happen: The goroutine sends updates to cc. cc forwards - // those to balancer. Balancer creates new addrConn. addrConn fails to - // connect, and calls resolveNow(). resolveNow() tries to use the non-ready - // resolverWrapper. - cc.resolverWrapper.start() + cc.mu.Lock() + cc.resolverWrapper = rWrapper + cc.mu.Unlock() // A blocking dial blocks until the clientConn is ready. if cc.dopts.block { for { s := cc.GetState() if s == connectivity.Ready { break + } else if cc.dopts.copts.FailOnNonTempDialError && s == connectivity.TransientFailure { + if err = cc.blockingpicker.connectionError(); err != nil { + terr, ok := err.(interface { + Temporary() bool + }) + if ok && !terr.Temporary() { + return nil, err + } + } } if !cc.WaitForStateChange(ctx, s) { // ctx got timeout or canceled. @@ -554,12 +331,75 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * return cc, nil } +// chainUnaryClientInterceptors chains all unary client interceptors into one. +func chainUnaryClientInterceptors(cc *ClientConn) { + interceptors := cc.dopts.chainUnaryInts + // Prepend dopts.unaryInt to the chaining interceptors if it exists, since unaryInt will + // be executed before any other chained interceptors. + if cc.dopts.unaryInt != nil { + interceptors = append([]UnaryClientInterceptor{cc.dopts.unaryInt}, interceptors...) + } + var chainedInt UnaryClientInterceptor + if len(interceptors) == 0 { + chainedInt = nil + } else if len(interceptors) == 1 { + chainedInt = interceptors[0] + } else { + chainedInt = func(ctx context.Context, method string, req, reply interface{}, cc *ClientConn, invoker UnaryInvoker, opts ...CallOption) error { + return interceptors[0](ctx, method, req, reply, cc, getChainUnaryInvoker(interceptors, 0, invoker), opts...) + } + } + cc.dopts.unaryInt = chainedInt +} + +// getChainUnaryInvoker recursively generate the chained unary invoker. +func getChainUnaryInvoker(interceptors []UnaryClientInterceptor, curr int, finalInvoker UnaryInvoker) UnaryInvoker { + if curr == len(interceptors)-1 { + return finalInvoker + } + return func(ctx context.Context, method string, req, reply interface{}, cc *ClientConn, opts ...CallOption) error { + return interceptors[curr+1](ctx, method, req, reply, cc, getChainUnaryInvoker(interceptors, curr+1, finalInvoker), opts...) + } +} + +// chainStreamClientInterceptors chains all stream client interceptors into one. +func chainStreamClientInterceptors(cc *ClientConn) { + interceptors := cc.dopts.chainStreamInts + // Prepend dopts.streamInt to the chaining interceptors if it exists, since streamInt will + // be executed before any other chained interceptors. + if cc.dopts.streamInt != nil { + interceptors = append([]StreamClientInterceptor{cc.dopts.streamInt}, interceptors...) + } + var chainedInt StreamClientInterceptor + if len(interceptors) == 0 { + chainedInt = nil + } else if len(interceptors) == 1 { + chainedInt = interceptors[0] + } else { + chainedInt = func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, streamer Streamer, opts ...CallOption) (ClientStream, error) { + return interceptors[0](ctx, desc, cc, method, getChainStreamer(interceptors, 0, streamer), opts...) + } + } + cc.dopts.streamInt = chainedInt +} + +// getChainStreamer recursively generate the chained client stream constructor. +func getChainStreamer(interceptors []StreamClientInterceptor, curr int, finalStreamer Streamer) Streamer { + if curr == len(interceptors)-1 { + return finalStreamer + } + return func(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error) { + return interceptors[curr+1](ctx, desc, cc, method, getChainStreamer(interceptors, curr+1, finalStreamer), opts...) + } +} + // connectivityStateManager keeps the connectivity.State of ClientConn. // This struct will eventually be exported so the balancers can access it. type connectivityStateManager struct { mu sync.Mutex state connectivity.State notifyChan chan struct{} + channelzID int64 } // updateState updates the connectivity.State of ClientConn. @@ -575,6 +415,12 @@ func (csm *connectivityStateManager) updateState(state connectivity.State) { return } csm.state = state + if channelz.IsOn() { + channelz.AddTraceEvent(csm.channelzID, &channelz.TraceEventDesc{ + Desc: fmt.Sprintf("Channel Connectivity change to %v", state), + Severity: channelz.CtINFO, + }) + } if csm.notifyChan != nil { // There are other goroutines waiting on this channel. close(csm.notifyChan) @@ -609,19 +455,22 @@ type ClientConn struct { csMgr *connectivityStateManager balancerBuildOpts balancer.BuildOptions - resolverWrapper *ccResolverWrapper blockingpicker *pickerWrapper - mu sync.RWMutex - sc ServiceConfig - scRaw string - conns map[*addrConn]struct{} + mu sync.RWMutex + resolverWrapper *ccResolverWrapper + sc *ServiceConfig + conns map[*addrConn]struct{} // Keepalive parameter can be updated if a GoAway is received. mkp keepalive.ClientParameters curBalancerName string - preBalancerName string // previous balancer name. - curAddresses []resolver.Address balancerWrapper *ccBalancerWrapper + retryThrottler atomic.Value + + firstResolveEvent *grpcsync.Event + + channelzID int64 // channelz unique identification number + czData *channelzData } // WaitForStateChange waits until the connectivity.State of ClientConn changes from sourceState or @@ -655,9 +504,8 @@ func (cc *ClientConn) scWatcher() { } cc.mu.Lock() // TODO: load balance policy runtime change is ignored. - // We may revist this decision in the future. - cc.sc = sc - cc.scRaw = "" + // We may revisit this decision in the future. + cc.sc = &sc cc.mu.Unlock() case <-cc.ctx.Done(): return @@ -665,47 +513,64 @@ func (cc *ClientConn) scWatcher() { } } -func (cc *ClientConn) handleResolvedAddrs(addrs []resolver.Address, err error) { +// waitForResolvedAddrs blocks until the resolver has provided addresses or the +// context expires. Returns nil unless the context expires first; otherwise +// returns a status error based on the context. +func (cc *ClientConn) waitForResolvedAddrs(ctx context.Context) error { + // This is on the RPC path, so we use a fast path to avoid the + // more-expensive "select" below after the resolver has returned once. + if cc.firstResolveEvent.HasFired() { + return nil + } + select { + case <-cc.firstResolveEvent.Done(): + return nil + case <-ctx.Done(): + return status.FromContextError(ctx.Err()).Err() + case <-cc.ctx.Done(): + return ErrClientConnClosing + } +} + +func (cc *ClientConn) updateResolverState(s resolver.State) error { cc.mu.Lock() defer cc.mu.Unlock() + // Check if the ClientConn is already closed. Some fields (e.g. + // balancerWrapper) are set to nil when closing the ClientConn, and could + // cause nil pointer panic if we don't have this check. if cc.conns == nil { - // cc was closed. - return + return nil } - if reflect.DeepEqual(cc.curAddresses, addrs) { - return + if cc.dopts.disableServiceConfig || s.ServiceConfig == nil { + if cc.dopts.defaultServiceConfig != nil && cc.sc == nil { + cc.applyServiceConfig(cc.dopts.defaultServiceConfig) + } + } else if sc, ok := s.ServiceConfig.(*ServiceConfig); ok { + cc.applyServiceConfig(sc) } - cc.curAddresses = addrs - + var balCfg serviceconfig.LoadBalancingConfig if cc.dopts.balancerBuilder == nil { // Only look at balancer types and switch balancer if balancer dial // option is not set. - var isGRPCLB bool - for _, a := range addrs { - if a.Type == resolver.GRPCLB { - isGRPCLB = true - break - } - } var newBalancerName string - if isGRPCLB { - newBalancerName = grpclbName + if cc.sc != nil && cc.sc.lbConfig != nil { + newBalancerName = cc.sc.lbConfig.name + balCfg = cc.sc.lbConfig.cfg } else { - // Address list doesn't contain grpclb address. Try to pick a - // non-grpclb balancer. - newBalancerName = cc.curBalancerName - // If current balancer is grpclb, switch to the previous one. - if newBalancerName == grpclbName { - newBalancerName = cc.preBalancerName + var isGRPCLB bool + for _, a := range s.Addresses { + if a.Type == resolver.GRPCLB { + isGRPCLB = true + break + } } - // The following could be true in two cases: - // - the first time handling resolved addresses - // (curBalancerName="") - // - the first time handling non-grpclb addresses - // (curBalancerName="grpclb", preBalancerName="") - if newBalancerName == "" { + if isGRPCLB { + newBalancerName = grpclbName + } else if cc.sc != nil && cc.sc.LB != nil { + newBalancerName = *cc.sc.LB + } else { newBalancerName = PickFirstBalancerName } } @@ -713,10 +578,12 @@ func (cc *ClientConn) handleResolvedAddrs(addrs []resolver.Address, err error) { } else if cc.balancerWrapper == nil { // Balancer dial option was set, and this is the first time handling // resolved addresses. Build a balancer with dopts.balancerBuilder. + cc.curBalancerName = cc.dopts.balancerBuilder.Name() cc.balancerWrapper = newCCBalancerWrapper(cc, cc.dopts.balancerBuilder, cc.balancerBuildOpts) } - cc.balancerWrapper.handleResolvedAddrs(addrs, nil) + cc.balancerWrapper.updateClientConnState(&balancer.ClientConnState{ResolverState: s, BalancerConfig: balCfg}) + return nil } // switchBalancer starts the switching from current balancer to the balancer @@ -728,11 +595,7 @@ func (cc *ClientConn) handleResolvedAddrs(addrs []resolver.Address, err error) { // // Caller must hold cc.mu. func (cc *ClientConn) switchBalancer(name string) { - if cc.conns == nil { - return - } - - if strings.ToLower(cc.curBalancerName) == strings.ToLower(name) { + if strings.EqualFold(cc.curBalancerName, name) { return } @@ -741,18 +604,29 @@ func (cc *ClientConn) switchBalancer(name string) { grpclog.Infoln("ignoring balancer switching: Balancer DialOption used instead") return } - // TODO(bar switching) change this to two steps: drain and close. - // Keep track of sc in wrapper. if cc.balancerWrapper != nil { cc.balancerWrapper.close() } builder := balancer.Get(name) + if channelz.IsOn() { + if builder == nil { + channelz.AddTraceEvent(cc.channelzID, &channelz.TraceEventDesc{ + Desc: fmt.Sprintf("Channel switches to new LB policy %q due to fallback from invalid balancer name", PickFirstBalancerName), + Severity: channelz.CtWarning, + }) + } else { + channelz.AddTraceEvent(cc.channelzID, &channelz.TraceEventDesc{ + Desc: fmt.Sprintf("Channel switches to new LB policy %q", name), + Severity: channelz.CtINFO, + }) + } + } if builder == nil { grpclog.Infof("failed to get balancer builder for: %v, using pick_first instead", name) builder = newPickfirstBuilder() } - cc.preBalancerName = cc.curBalancerName + cc.curBalancerName = builder.Name() cc.balancerWrapper = newCCBalancerWrapper(cc, builder, cc.balancerBuildOpts) } @@ -772,11 +646,14 @@ func (cc *ClientConn) handleSubConnStateChange(sc balancer.SubConn, s connectivi // newAddrConn creates an addrConn for addrs and adds it to cc.conns. // // Caller needs to make sure len(addrs) > 0. -func (cc *ClientConn) newAddrConn(addrs []resolver.Address) (*addrConn, error) { +func (cc *ClientConn) newAddrConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (*addrConn, error) { ac := &addrConn{ - cc: cc, - addrs: addrs, - dopts: cc.dopts, + cc: cc, + addrs: addrs, + scopts: opts, + dopts: cc.dopts, + czData: new(channelzData), + resetBackoff: make(chan struct{}), } ac.ctx, ac.cancel = context.WithCancel(cc.ctx) // Track ac in cc. This needs to be done before any getTransport(...) is called. @@ -785,6 +662,17 @@ func (cc *ClientConn) newAddrConn(addrs []resolver.Address) (*addrConn, error) { cc.mu.Unlock() return nil, ErrClientConnClosing } + if channelz.IsOn() { + ac.channelzID = channelz.RegisterSubChannel(ac, cc.channelzID, "") + channelz.AddTraceEvent(ac.channelzID, &channelz.TraceEventDesc{ + Desc: "Subchannel Created", + Severity: channelz.CtINFO, + Parent: &channelz.TraceEventDesc{ + Desc: fmt.Sprintf("Subchannel(id:%d) created", ac.channelzID), + Severity: channelz.CtINFO, + }, + }) + } cc.conns[ac] = struct{}{} cc.mu.Unlock() return ac, nil @@ -803,11 +691,39 @@ func (cc *ClientConn) removeAddrConn(ac *addrConn, err error) { ac.tearDown(err) } -// connect starts to creating transport and also starts the transport monitor -// goroutine for this ac. +func (cc *ClientConn) channelzMetric() *channelz.ChannelInternalMetric { + return &channelz.ChannelInternalMetric{ + State: cc.GetState(), + Target: cc.target, + CallsStarted: atomic.LoadInt64(&cc.czData.callsStarted), + CallsSucceeded: atomic.LoadInt64(&cc.czData.callsSucceeded), + CallsFailed: atomic.LoadInt64(&cc.czData.callsFailed), + LastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&cc.czData.lastCallStartedTime)), + } +} + +// Target returns the target string of the ClientConn. +// This is an EXPERIMENTAL API. +func (cc *ClientConn) Target() string { + return cc.target +} + +func (cc *ClientConn) incrCallsStarted() { + atomic.AddInt64(&cc.czData.callsStarted, 1) + atomic.StoreInt64(&cc.czData.lastCallStartedTime, time.Now().UnixNano()) +} + +func (cc *ClientConn) incrCallsSucceeded() { + atomic.AddInt64(&cc.czData.callsSucceeded, 1) +} + +func (cc *ClientConn) incrCallsFailed() { + atomic.AddInt64(&cc.czData.callsFailed, 1) +} + +// connect starts creating a transport. // It does nothing if the ac is not IDLE. // TODO(bar) Move this to the addrConn section. -// This was part of resetAddrConn, keep it here to make the diff look clean. func (ac *addrConn) connect() error { ac.mu.Lock() if ac.state == connectivity.Shutdown { @@ -818,28 +734,28 @@ func (ac *addrConn) connect() error { ac.mu.Unlock() return nil } - ac.state = connectivity.Connecting - ac.cc.handleSubConnStateChange(ac.acbw, ac.state) + // Update connectivity state within the lock to prevent subsequent or + // concurrent calls from resetting the transport more than once. + ac.updateConnectivityState(connectivity.Connecting) ac.mu.Unlock() // Start a goroutine connecting to the server asynchronously. - go func() { - if err := ac.resetTransport(); err != nil { - grpclog.Warningf("Failed to dial %s: %v; please retry.", ac.addrs[0].Addr, err) - if err != errConnClosing { - // Keep this ac in cc.conns, to get the reason it's torn down. - ac.tearDown(err) - } - return - } - ac.transportMonitor() - }() + go ac.resetTransport() return nil } // tryUpdateAddrs tries to update ac.addrs with the new addresses list. // -// It checks whether current connected address of ac is in the new addrs list. +// If ac is Connecting, it returns false. The caller should tear down the ac and +// create a new one. Note that the backoff will be reset when this happens. +// +// If ac is TransientFailure, it updates ac.addrs and returns true. The updated +// addresses will be picked up by retry in the next iteration after backoff. +// +// If ac is Shutdown or Idle, it updates ac.addrs and returns true. +// +// If ac is Ready, it checks whether current connected address of ac is in the +// new addrs list. // - If true, it updates ac.addrs and returns true. The ac will keep using // the existing connection. // - If false, it does nothing and returns false. @@ -847,11 +763,18 @@ func (ac *addrConn) tryUpdateAddrs(addrs []resolver.Address) bool { ac.mu.Lock() defer ac.mu.Unlock() grpclog.Infof("addrConn: tryUpdateAddrs curAddr: %v, addrs: %v", ac.curAddr, addrs) - if ac.state == connectivity.Shutdown { + if ac.state == connectivity.Shutdown || + ac.state == connectivity.TransientFailure || + ac.state == connectivity.Idle { ac.addrs = addrs return true } + if ac.state == connectivity.Connecting { + return false + } + + // ac.state is Ready, try to find the connected address. var curAddrFound bool for _, a := range addrs { if reflect.DeepEqual(ac.curAddr, a) { @@ -862,7 +785,6 @@ func (ac *addrConn) tryUpdateAddrs(addrs []resolver.Address) bool { grpclog.Infof("addrConn: tryUpdateAddrs curAddrFound: %v", curAddrFound) if curAddrFound { ac.addrs = addrs - ac.reconnectIdx = 0 // Start reconnecting from beginning in the new list. } return curAddrFound @@ -879,59 +801,86 @@ func (cc *ClientConn) GetMethodConfig(method string) MethodConfig { // TODO: Avoid the locking here. cc.mu.RLock() defer cc.mu.RUnlock() + if cc.sc == nil { + return MethodConfig{} + } m, ok := cc.sc.Methods[method] if !ok { i := strings.LastIndex(method, "/") - m, _ = cc.sc.Methods[method[:i+1]] + m = cc.sc.Methods[method[:i+1]] } return m } -func (cc *ClientConn) getTransport(ctx context.Context, failfast bool) (transport.ClientTransport, func(balancer.DoneInfo), error) { - t, done, err := cc.blockingpicker.pick(ctx, failfast, balancer.PickOptions{}) +func (cc *ClientConn) healthCheckConfig() *healthCheckConfig { + cc.mu.RLock() + defer cc.mu.RUnlock() + if cc.sc == nil { + return nil + } + return cc.sc.healthCheckConfig +} + +func (cc *ClientConn) getTransport(ctx context.Context, failfast bool, method string) (transport.ClientTransport, func(balancer.DoneInfo), error) { + t, done, err := cc.blockingpicker.pick(ctx, failfast, balancer.PickOptions{ + FullMethodName: method, + }) if err != nil { return nil, nil, toRPCErr(err) } return t, done, nil } -// handleServiceConfig parses the service config string in JSON format to Go native -// struct ServiceConfig, and store both the struct and the JSON string in ClientConn. -func (cc *ClientConn) handleServiceConfig(js string) error { - sc, err := parseServiceConfig(js) - if err != nil { - return err +func (cc *ClientConn) applyServiceConfig(sc *ServiceConfig) error { + if sc == nil { + // should never reach here. + return fmt.Errorf("got nil pointer for service config") } - cc.mu.Lock() - cc.scRaw = js cc.sc = sc - if sc.LB != nil && *sc.LB != grpclbName { // "grpclb" is not a valid balancer option in service config. - if cc.curBalancerName == grpclbName { - // If current balancer is grpclb, there's at least one grpclb - // balancer address in the resolved list. Don't switch the balancer, - // but change the previous balancer name, so if a new resolved - // address list doesn't contain grpclb address, balancer will be - // switched to *sc.LB. - cc.preBalancerName = *sc.LB - } else { - cc.switchBalancer(*sc.LB) - cc.balancerWrapper.handleResolvedAddrs(cc.curAddresses, nil) + + if cc.sc.retryThrottling != nil { + newThrottler := &retryThrottler{ + tokens: cc.sc.retryThrottling.MaxTokens, + max: cc.sc.retryThrottling.MaxTokens, + thresh: cc.sc.retryThrottling.MaxTokens / 2, + ratio: cc.sc.retryThrottling.TokenRatio, } + cc.retryThrottler.Store(newThrottler) + } else { + cc.retryThrottler.Store((*retryThrottler)(nil)) } - cc.mu.Unlock() + return nil } func (cc *ClientConn) resolveNow(o resolver.ResolveNowOption) { - cc.mu.Lock() + cc.mu.RLock() r := cc.resolverWrapper - cc.mu.Unlock() + cc.mu.RUnlock() if r == nil { return } go r.resolveNow(o) } +// ResetConnectBackoff wakes up all subchannels in transient failure and causes +// them to attempt another connection immediately. It also resets the backoff +// times used for subsequent attempts regardless of the current state. +// +// In general, this function should not be used. Typical service or network +// outages result in a reasonable client reconnection strategy by default. +// However, if a previously unavailable network becomes available, this may be +// used to trigger an immediate reconnect. +// +// This API is EXPERIMENTAL. +func (cc *ClientConn) ResetConnectBackoff() { + cc.mu.Lock() + defer cc.mu.Unlock() + for ac := range cc.conns { + ac.resetConnectBackoff() + } +} + // Close tears down the ClientConn and all underlying connections. func (cc *ClientConn) Close() error { defer cc.cancel() @@ -950,16 +899,35 @@ func (cc *ClientConn) Close() error { bWrapper := cc.balancerWrapper cc.balancerWrapper = nil cc.mu.Unlock() + cc.blockingpicker.close() + if rWrapper != nil { rWrapper.close() } if bWrapper != nil { bWrapper.close() } + for ac := range conns { ac.tearDown(ErrClientConnClosing) } + if channelz.IsOn() { + ted := &channelz.TraceEventDesc{ + Desc: "Channel Deleted", + Severity: channelz.CtINFO, + } + if cc.dopts.channelzParentID != 0 { + ted.Parent = &channelz.TraceEventDesc{ + Desc: fmt.Sprintf("Nested channel(id:%d) deleted", cc.channelzID), + Severity: channelz.CtINFO, + } + } + channelz.AddTraceEvent(cc.channelzID, ted) + // TraceEvent needs to be called before RemoveEntry, as TraceEvent may add trace reference to + // the entity being deleted, and thus prevent it from being deleted right away. + channelz.RemoveEntry(cc.channelzID) + } return nil } @@ -969,30 +937,45 @@ type addrConn struct { cancel context.CancelFunc cc *ClientConn - addrs []resolver.Address dopts dialOptions - events trace.EventLog acbw balancer.SubConn + scopts balancer.NewSubConnOptions + + // transport is set when there's a viable transport (note: ac state may not be READY as LB channel + // health checking may require server to report healthy to set ac to READY), and is reset + // to nil when the current transport should no longer be used to create a stream (e.g. after GoAway + // is received, transport is closed, ac has been torn down). + transport transport.ClientTransport // The current transport. - mu sync.Mutex - curAddr resolver.Address - reconnectIdx int // The index in addrs list to start reconnecting from. - state connectivity.State - // ready is closed and becomes nil when a new transport is up or failed - // due to timeout. - ready chan struct{} - transport transport.ClientTransport - - // The reason this addrConn is torn down. - tearDownErr error - - connectRetryNum int - // backoffDeadline is the time until which resetTransport needs to - // wait before increasing connectRetryNum count. - backoffDeadline time.Time - // connectDeadline is the time by which all connection - // negotiations must complete. - connectDeadline time.Time + mu sync.Mutex + curAddr resolver.Address // The current address. + addrs []resolver.Address // All addresses that the resolver resolved to. + + // Use updateConnectivityState for updating addrConn's connectivity state. + state connectivity.State + + backoffIdx int // Needs to be stateful for resetConnectBackoff. + resetBackoff chan struct{} + + channelzID int64 // channelz unique identification number. + czData *channelzData +} + +// Note: this requires a lock on ac.mu. +func (ac *addrConn) updateConnectivityState(s connectivity.State) { + if ac.state == s { + return + } + + updateMsg := fmt.Sprintf("Subchannel Connectivity change to %v", s) + ac.state = s + if channelz.IsOn() { + channelz.AddTraceEvent(ac.channelzID, &channelz.TraceEventDesc{ + Desc: updateMsg, + Severity: channelz.CtINFO, + }) + } + ac.cc.handleSubConnStateChange(ac.acbw, s) } // adjustParams updates parameters used to create transports upon @@ -1009,309 +992,307 @@ func (ac *addrConn) adjustParams(r transport.GoAwayReason) { } } -// printf records an event in ac's event log, unless ac has been closed. -// REQUIRES ac.mu is held. -func (ac *addrConn) printf(format string, a ...interface{}) { - if ac.events != nil { - ac.events.Printf(format, a...) - } -} - -// errorf records an error in ac's event log, unless ac has been closed. -// REQUIRES ac.mu is held. -func (ac *addrConn) errorf(format string, a ...interface{}) { - if ac.events != nil { - ac.events.Errorf(format, a...) - } -} +func (ac *addrConn) resetTransport() { + for i := 0; ; i++ { + if i > 0 { + ac.cc.resolveNow(resolver.ResolveNowOption{}) + } -// resetTransport recreates a transport to the address for ac. The old -// transport will close itself on error or when the clientconn is closed. -// The created transport must receive initial settings frame from the server. -// In case that doesnt happen, transportMonitor will kill the newly created -// transport after connectDeadline has expired. -// In case there was an error on the transport before the settings frame was -// received, resetTransport resumes connecting to backends after the one that -// was previously connected to. In case end of the list is reached, resetTransport -// backs off until the original deadline. -// If the DialOption WithWaitForHandshake was set, resetTrasport returns -// successfully only after server settings are received. -// -// TODO(bar) make sure all state transitions are valid. -func (ac *addrConn) resetTransport() error { - ac.mu.Lock() - if ac.state == connectivity.Shutdown { - ac.mu.Unlock() - return errConnClosing - } - if ac.ready != nil { - close(ac.ready) - ac.ready = nil - } - ac.transport = nil - ridx := ac.reconnectIdx - ac.mu.Unlock() - ac.cc.mu.RLock() - ac.dopts.copts.KeepaliveParams = ac.cc.mkp - ac.cc.mu.RUnlock() - var backoffDeadline, connectDeadline time.Time - for connectRetryNum := 0; ; connectRetryNum++ { ac.mu.Lock() - if ac.backoffDeadline.IsZero() { - // This means either a successful HTTP2 connection was established - // or this is the first time this addrConn is trying to establish a - // connection. - backoffFor := ac.dopts.bs.backoff(connectRetryNum) // time.Duration. - // This will be the duration that dial gets to finish. - dialDuration := getMinConnectTimeout() - if backoffFor > dialDuration { - // Give dial more time as we keep failing to connect. - dialDuration = backoffFor - } - start := time.Now() - backoffDeadline = start.Add(backoffFor) - connectDeadline = start.Add(dialDuration) - ridx = 0 // Start connecting from the beginning. - } else { - // Continue trying to conect with the same deadlines. - connectRetryNum = ac.connectRetryNum - backoffDeadline = ac.backoffDeadline - connectDeadline = ac.connectDeadline - ac.backoffDeadline = time.Time{} - ac.connectDeadline = time.Time{} - ac.connectRetryNum = 0 - } if ac.state == connectivity.Shutdown { ac.mu.Unlock() - return errConnClosing - } - ac.printf("connecting") - if ac.state != connectivity.Connecting { - ac.state = connectivity.Connecting - ac.cc.handleSubConnStateChange(ac.acbw, ac.state) - } - // copy ac.addrs in case of race - addrsIter := make([]resolver.Address, len(ac.addrs)) - copy(addrsIter, ac.addrs) - copts := ac.dopts.copts - ac.mu.Unlock() - connected, err := ac.createTransport(connectRetryNum, ridx, backoffDeadline, connectDeadline, addrsIter, copts) - if err != nil { - return err - } - if connected { - return nil + return } - } -} -// createTransport creates a connection to one of the backends in addrs. -// It returns true if a connection was established. -func (ac *addrConn) createTransport(connectRetryNum, ridx int, backoffDeadline, connectDeadline time.Time, addrs []resolver.Address, copts transport.ConnectOptions) (bool, error) { - for i := ridx; i < len(addrs); i++ { - addr := addrs[i] - target := transport.TargetInfo{ - Addr: addr.Addr, - Metadata: addr.Metadata, - Authority: ac.cc.authority, + addrs := ac.addrs + backoffFor := ac.dopts.bs.Backoff(ac.backoffIdx) + // This will be the duration that dial gets to finish. + dialDuration := minConnectTimeout + if ac.dopts.minConnectTimeout != nil { + dialDuration = ac.dopts.minConnectTimeout() } - done := make(chan struct{}) - onPrefaceReceipt := func() { - ac.mu.Lock() - close(done) - if !ac.backoffDeadline.IsZero() { - // If we haven't already started reconnecting to - // other backends. - // Note, this can happen when writer notices an error - // and triggers resetTransport while at the same time - // reader receives the preface and invokes this closure. - ac.backoffDeadline = time.Time{} - ac.connectDeadline = time.Time{} - ac.connectRetryNum = 0 - } - ac.mu.Unlock() + + if dialDuration < backoffFor { + // Give dial more time as we keep failing to connect. + dialDuration = backoffFor } - // Do not cancel in the success path because of - // this issue in Go1.6: https://github.com/golang/go/issues/15078. - connectCtx, cancel := context.WithDeadline(ac.ctx, connectDeadline) - newTr, err := transport.NewClientTransport(connectCtx, ac.cc.ctx, target, copts, onPrefaceReceipt) + // We can potentially spend all the time trying the first address, and + // if the server accepts the connection and then hangs, the following + // addresses will never be tried. + // + // The spec doesn't mention what should be done for multiple addresses. + // https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md#proposed-backoff-algorithm + connectDeadline := time.Now().Add(dialDuration) + + ac.updateConnectivityState(connectivity.Connecting) + ac.transport = nil + ac.mu.Unlock() + + newTr, addr, reconnect, err := ac.tryAllAddrs(addrs, connectDeadline) if err != nil { - cancel() - ac.cc.blockingpicker.updateConnectionError(err) + // After exhausting all addresses, the addrConn enters + // TRANSIENT_FAILURE. ac.mu.Lock() if ac.state == connectivity.Shutdown { - // ac.tearDown(...) has been invoked. ac.mu.Unlock() - return false, errConnClosing + return } + ac.updateConnectivityState(connectivity.TransientFailure) + + // Backoff. + b := ac.resetBackoff ac.mu.Unlock() - grpclog.Warningf("grpc: addrConn.createTransport failed to connect to %v. Err :%v. Reconnecting...", addr, err) - continue - } - if ac.dopts.waitForHandshake { + + timer := time.NewTimer(backoffFor) select { - case <-done: - case <-connectCtx.Done(): - // Didn't receive server preface, must kill this new transport now. - grpclog.Warningf("grpc: addrConn.createTransport failed to receive server preface before deadline.") - newTr.Close() - break + case <-timer.C: + ac.mu.Lock() + ac.backoffIdx++ + ac.mu.Unlock() + case <-b: + timer.Stop() case <-ac.ctx.Done(): + timer.Stop() + return } + continue } + ac.mu.Lock() if ac.state == connectivity.Shutdown { ac.mu.Unlock() - // ac.tearDonn(...) has been invoked. newTr.Close() - return false, errConnClosing + return } - ac.printf("ready") - ac.state = connectivity.Ready - ac.cc.handleSubConnStateChange(ac.acbw, ac.state) - ac.transport = newTr ac.curAddr = addr - if ac.ready != nil { - close(ac.ready) - ac.ready = nil - } - select { - case <-done: - // If the server has responded back with preface already, - // don't set the reconnect parameters. - default: - ac.connectRetryNum = connectRetryNum - ac.backoffDeadline = backoffDeadline - ac.connectDeadline = connectDeadline - ac.reconnectIdx = i + 1 // Start reconnecting from the next backend in the list. - } - ac.mu.Unlock() - return true, nil - } - ac.mu.Lock() - ac.state = connectivity.TransientFailure - ac.cc.handleSubConnStateChange(ac.acbw, ac.state) - ac.cc.resolveNow(resolver.ResolveNowOption{}) - if ac.ready != nil { - close(ac.ready) - ac.ready = nil - } - ac.mu.Unlock() - timer := time.NewTimer(backoffDeadline.Sub(time.Now())) - select { - case <-timer.C: - case <-ac.ctx.Done(): - timer.Stop() - return false, ac.ctx.Err() - } - return false, nil -} + ac.transport = newTr + ac.backoffIdx = 0 -// Run in a goroutine to track the error in transport and create the -// new transport if an error happens. It returns when the channel is closing. -func (ac *addrConn) transportMonitor() { - for { - var timer *time.Timer - var cdeadline <-chan time.Time - ac.mu.Lock() - t := ac.transport - if !ac.connectDeadline.IsZero() { - timer = time.NewTimer(ac.connectDeadline.Sub(time.Now())) - cdeadline = timer.C - } + hctx, hcancel := context.WithCancel(ac.ctx) + ac.startHealthCheck(hctx) ac.mu.Unlock() - // Block until we receive a goaway or an error occurs. - select { - case <-t.GoAway(): - case <-t.Error(): - case <-cdeadline: - ac.mu.Lock() - // This implies that client received server preface. - if ac.backoffDeadline.IsZero() { - ac.mu.Unlock() - continue - } - ac.mu.Unlock() - timer = nil - // No server preface received until deadline. - // Kill the connection. - grpclog.Warningf("grpc: addrConn.transportMonitor didn't get server preface after waiting. Closing the new transport now.") - t.Close() - } - if timer != nil { - timer.Stop() - } - // If a GoAway happened, regardless of error, adjust our keepalive - // parameters as appropriate. - select { - case <-t.GoAway(): - ac.adjustParams(t.GetGoAwayReason()) - default: - } + + // Block until the created transport is down. And when this happens, + // we restart from the top of the addr list. + <-reconnect.Done() + hcancel() + // restart connecting - the top of the loop will set state to + // CONNECTING. This is against the current connectivity semantics doc, + // however it allows for graceful behavior for RPCs not yet dispatched + // - unfortunate timing would otherwise lead to the RPC failing even + // though the TRANSIENT_FAILURE state (called for by the doc) would be + // instantaneous. + // + // Ideally we should transition to Idle here and block until there is + // RPC activity that leads to the balancer requesting a reconnect of + // the associated SubConn. + } +} + +// tryAllAddrs tries to creates a connection to the addresses, and stop when at the +// first successful one. It returns the transport, the address and a Event in +// the successful case. The Event fires when the returned transport disconnects. +func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.Time) (transport.ClientTransport, resolver.Address, *grpcsync.Event, error) { + for _, addr := range addrs { ac.mu.Lock() if ac.state == connectivity.Shutdown { ac.mu.Unlock() - return + return nil, resolver.Address{}, nil, errConnClosing + } + + ac.cc.mu.RLock() + ac.dopts.copts.KeepaliveParams = ac.cc.mkp + ac.cc.mu.RUnlock() + + copts := ac.dopts.copts + if ac.scopts.CredsBundle != nil { + copts.CredsBundle = ac.scopts.CredsBundle } - // Set connectivity state to TransientFailure before calling - // resetTransport. Transition READY->CONNECTING is not valid. - ac.state = connectivity.TransientFailure - ac.cc.handleSubConnStateChange(ac.acbw, ac.state) - ac.cc.resolveNow(resolver.ResolveNowOption{}) - ac.curAddr = resolver.Address{} ac.mu.Unlock() - if err := ac.resetTransport(); err != nil { - ac.mu.Lock() - ac.printf("transport exiting: %v", err) - ac.mu.Unlock() - grpclog.Warningf("grpc: addrConn.transportMonitor exits due to: %v", err) - if err != errConnClosing { - // Keep this ac in cc.conns, to get the reason it's torn down. - ac.tearDown(err) - } - return + + if channelz.IsOn() { + channelz.AddTraceEvent(ac.channelzID, &channelz.TraceEventDesc{ + Desc: fmt.Sprintf("Subchannel picks a new address %q to connect", addr.Addr), + Severity: channelz.CtINFO, + }) } + + newTr, reconnect, err := ac.createTransport(addr, copts, connectDeadline) + if err == nil { + return newTr, addr, reconnect, nil + } + ac.cc.blockingpicker.updateConnectionError(err) } + + // Couldn't connect to any address. + return nil, resolver.Address{}, nil, fmt.Errorf("couldn't connect to any address") } -// wait blocks until i) the new transport is up or ii) ctx is done or iii) ac is closed or -// iv) transport is in connectivity.TransientFailure and there is a balancer/failfast is true. -func (ac *addrConn) wait(ctx context.Context, hasBalancer, failfast bool) (transport.ClientTransport, error) { - for { +// createTransport creates a connection to addr. It returns the transport and a +// Event in the successful case. The Event fires when the returned transport +// disconnects. +func (ac *addrConn) createTransport(addr resolver.Address, copts transport.ConnectOptions, connectDeadline time.Time) (transport.ClientTransport, *grpcsync.Event, error) { + prefaceReceived := make(chan struct{}) + onCloseCalled := make(chan struct{}) + reconnect := grpcsync.NewEvent() + + target := transport.TargetInfo{ + Addr: addr.Addr, + Metadata: addr.Metadata, + Authority: ac.cc.authority, + } + + once := sync.Once{} + onGoAway := func(r transport.GoAwayReason) { ac.mu.Lock() - switch { - case ac.state == connectivity.Shutdown: - if failfast || !hasBalancer { - // RPC is failfast or balancer is nil. This RPC should fail with ac.tearDownErr. - err := ac.tearDownErr - ac.mu.Unlock() - return nil, err + ac.adjustParams(r) + once.Do(func() { + if ac.state == connectivity.Ready { + // Prevent this SubConn from being used for new RPCs by setting its + // state to Connecting. + // + // TODO: this should be Idle when grpc-go properly supports it. + ac.updateConnectivityState(connectivity.Connecting) } - ac.mu.Unlock() - return nil, errConnClosing - case ac.state == connectivity.Ready: - ct := ac.transport - ac.mu.Unlock() - return ct, nil - case ac.state == connectivity.TransientFailure: - if failfast || hasBalancer { - ac.mu.Unlock() - return nil, errConnUnavailable + }) + ac.mu.Unlock() + reconnect.Fire() + } + + onClose := func() { + ac.mu.Lock() + once.Do(func() { + if ac.state == connectivity.Ready { + // Prevent this SubConn from being used for new RPCs by setting its + // state to Connecting. + // + // TODO: this should be Idle when grpc-go properly supports it. + ac.updateConnectivityState(connectivity.Connecting) } + }) + ac.mu.Unlock() + close(onCloseCalled) + reconnect.Fire() + } + + onPrefaceReceipt := func() { + close(prefaceReceived) + } + + connectCtx, cancel := context.WithDeadline(ac.ctx, connectDeadline) + defer cancel() + if channelz.IsOn() { + copts.ChannelzParentID = ac.channelzID + } + + newTr, err := transport.NewClientTransport(connectCtx, ac.cc.ctx, target, copts, onPrefaceReceipt, onGoAway, onClose) + if err != nil { + // newTr is either nil, or closed. + grpclog.Warningf("grpc: addrConn.createTransport failed to connect to %v. Err :%v. Reconnecting...", addr, err) + return nil, nil, err + } + + select { + case <-time.After(connectDeadline.Sub(time.Now())): + // We didn't get the preface in time. + newTr.Close() + grpclog.Warningf("grpc: addrConn.createTransport failed to connect to %v: didn't receive server preface in time. Reconnecting...", addr) + return nil, nil, errors.New("timed out waiting for server handshake") + case <-prefaceReceived: + // We got the preface - huzzah! things are good. + case <-onCloseCalled: + // The transport has already closed - noop. + return nil, nil, errors.New("connection closed") + // TODO(deklerk) this should bail on ac.ctx.Done(). Add a test and fix. + } + return newTr, reconnect, nil +} + +// startHealthCheck starts the health checking stream (RPC) to watch the health +// stats of this connection if health checking is requested and configured. +// +// LB channel health checking is enabled when all requirements below are met: +// 1. it is not disabled by the user with the WithDisableHealthCheck DialOption +// 2. internal.HealthCheckFunc is set by importing the grpc/healthcheck package +// 3. a service config with non-empty healthCheckConfig field is provided +// 4. the load balancer requests it +// +// It sets addrConn to READY if the health checking stream is not started. +// +// Caller must hold ac.mu. +func (ac *addrConn) startHealthCheck(ctx context.Context) { + var healthcheckManagingState bool + defer func() { + if !healthcheckManagingState { + ac.updateConnectivityState(connectivity.Ready) } - ready := ac.ready - if ready == nil { - ready = make(chan struct{}) - ac.ready = ready + }() + + if ac.cc.dopts.disableHealthCheck { + return + } + healthCheckConfig := ac.cc.healthCheckConfig() + if healthCheckConfig == nil { + return + } + if !ac.scopts.HealthCheckEnabled { + return + } + healthCheckFunc := ac.cc.dopts.healthCheckFunc + if healthCheckFunc == nil { + // The health package is not imported to set health check function. + // + // TODO: add a link to the health check doc in the error message. + grpclog.Error("Health check is requested but health check function is not set.") + return + } + + healthcheckManagingState = true + + // Set up the health check helper functions. + currentTr := ac.transport + newStream := func(method string) (interface{}, error) { + ac.mu.Lock() + if ac.transport != currentTr { + ac.mu.Unlock() + return nil, status.Error(codes.Canceled, "the provided transport is no longer valid to use") } ac.mu.Unlock() - select { - case <-ctx.Done(): - return nil, toRPCErr(ctx.Err()) - // Wait until the new transport is ready or failed. - case <-ready: + return newNonRetryClientStream(ctx, &StreamDesc{ServerStreams: true}, method, currentTr, ac) + } + setConnectivityState := func(s connectivity.State) { + ac.mu.Lock() + defer ac.mu.Unlock() + if ac.transport != currentTr { + return } + ac.updateConnectivityState(s) } + // Start the health checking stream. + go func() { + err := ac.cc.dopts.healthCheckFunc(ctx, newStream, setConnectivityState, healthCheckConfig.ServiceName) + if err != nil { + if status.Code(err) == codes.Unimplemented { + if channelz.IsOn() { + channelz.AddTraceEvent(ac.channelzID, &channelz.TraceEventDesc{ + Desc: "Subchannel health check is unimplemented at server side, thus health check is disabled", + Severity: channelz.CtError, + }) + } + grpclog.Error("Subchannel health check is unimplemented at server side, thus health check is disabled") + } else { + grpclog.Errorf("HealthCheckFunc exits with unexpected error %v", err) + } + } + }() +} + +func (ac *addrConn) resetConnectBackoff() { + ac.mu.Lock() + close(ac.resetBackoff) + ac.backoffIdx = 0 + ac.resetBackoff = make(chan struct{}) + ac.mu.Unlock() } // getReadyTransport returns the transport if ac's state is READY. @@ -1319,7 +1300,7 @@ func (ac *addrConn) wait(ctx context.Context, hasBalancer, failfast bool) (trans // If ac's state is IDLE, it will trigger ac to connect. func (ac *addrConn) getReadyTransport() (transport.ClientTransport, bool) { ac.mu.Lock() - if ac.state == connectivity.Ready { + if ac.state == connectivity.Ready && ac.transport != nil { t := ac.transport ac.mu.Unlock() return t, true @@ -1342,32 +1323,42 @@ func (ac *addrConn) getReadyTransport() (transport.ClientTransport, bool) { // tight loop. // tearDown doesn't remove ac from ac.cc.conns. func (ac *addrConn) tearDown(err error) { - ac.cancel() ac.mu.Lock() - defer ac.mu.Unlock() if ac.state == connectivity.Shutdown { + ac.mu.Unlock() return } + curTr := ac.transport + ac.transport = nil + // We have to set the state to Shutdown before anything else to prevent races + // between setting the state and logic that waits on context cancelation / etc. + ac.updateConnectivityState(connectivity.Shutdown) + ac.cancel() ac.curAddr = resolver.Address{} - if err == errConnDrain && ac.transport != nil { + if err == errConnDrain && curTr != nil { // GracefulClose(...) may be executed multiple times when // i) receiving multiple GoAway frames from the server; or // ii) there are concurrent name resolver/Balancer triggered // address removal and GoAway. - ac.transport.GracefulClose() - } - ac.state = connectivity.Shutdown - ac.tearDownErr = err - ac.cc.handleSubConnStateChange(ac.acbw, ac.state) - if ac.events != nil { - ac.events.Finish() - ac.events = nil + // We have to unlock and re-lock here because GracefulClose => Close => onClose, which requires locking ac.mu. + ac.mu.Unlock() + curTr.GracefulClose() + ac.mu.Lock() } - if ac.ready != nil { - close(ac.ready) - ac.ready = nil + if channelz.IsOn() { + channelz.AddTraceEvent(ac.channelzID, &channelz.TraceEventDesc{ + Desc: "Subchannel Deleted", + Severity: channelz.CtINFO, + Parent: &channelz.TraceEventDesc{ + Desc: fmt.Sprintf("Subchanel(id:%d) deleted", ac.channelzID), + Severity: channelz.CtINFO, + }, + }) + // TraceEvent needs to be called before RemoveEntry, as TraceEvent may add trace reference to + // the entity beng deleted, and thus prevent it from being deleted right away. + channelz.RemoveEntry(ac.channelzID) } - return + ac.mu.Unlock() } func (ac *addrConn) getState() connectivity.State { @@ -1376,6 +1367,78 @@ func (ac *addrConn) getState() connectivity.State { return ac.state } +func (ac *addrConn) ChannelzMetric() *channelz.ChannelInternalMetric { + ac.mu.Lock() + addr := ac.curAddr.Addr + ac.mu.Unlock() + return &channelz.ChannelInternalMetric{ + State: ac.getState(), + Target: addr, + CallsStarted: atomic.LoadInt64(&ac.czData.callsStarted), + CallsSucceeded: atomic.LoadInt64(&ac.czData.callsSucceeded), + CallsFailed: atomic.LoadInt64(&ac.czData.callsFailed), + LastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&ac.czData.lastCallStartedTime)), + } +} + +func (ac *addrConn) incrCallsStarted() { + atomic.AddInt64(&ac.czData.callsStarted, 1) + atomic.StoreInt64(&ac.czData.lastCallStartedTime, time.Now().UnixNano()) +} + +func (ac *addrConn) incrCallsSucceeded() { + atomic.AddInt64(&ac.czData.callsSucceeded, 1) +} + +func (ac *addrConn) incrCallsFailed() { + atomic.AddInt64(&ac.czData.callsFailed, 1) +} + +type retryThrottler struct { + max float64 + thresh float64 + ratio float64 + + mu sync.Mutex + tokens float64 // TODO(dfawley): replace with atomic and remove lock. +} + +// throttle subtracts a retry token from the pool and returns whether a retry +// should be throttled (disallowed) based upon the retry throttling policy in +// the service config. +func (rt *retryThrottler) throttle() bool { + if rt == nil { + return false + } + rt.mu.Lock() + defer rt.mu.Unlock() + rt.tokens-- + if rt.tokens < 0 { + rt.tokens = 0 + } + return rt.tokens <= rt.thresh +} + +func (rt *retryThrottler) successfulRPC() { + if rt == nil { + return + } + rt.mu.Lock() + defer rt.mu.Unlock() + rt.tokens += rt.ratio + if rt.tokens > rt.max { + rt.tokens = rt.max + } +} + +type channelzChannel struct { + cc *ClientConn +} + +func (c *channelzChannel) ChannelzMetric() *channelz.ChannelInternalMetric { + return c.cc.channelzMetric() +} + // ErrClientConnTimeout indicates that the ClientConn cannot establish the // underlying connections within the specified timeout. // diff --git a/vendor/google.golang.org/grpc/codes/codes.go b/vendor/google.golang.org/grpc/codes/codes.go index a8280ae660..02738839dd 100644 --- a/vendor/google.golang.org/grpc/codes/codes.go +++ b/vendor/google.golang.org/grpc/codes/codes.go @@ -22,6 +22,7 @@ package codes // import "google.golang.org/grpc/codes" import ( "fmt" + "strconv" ) // A Code is an unsigned 32-bit error code as defined in the gRPC spec. @@ -131,7 +132,8 @@ const ( // Unavailable indicates the service is currently unavailable. // This is a most likely a transient condition and may be corrected - // by retrying with a backoff. + // by retrying with a backoff. Note that it is not always safe to retry + // non-idempotent operations. // // See litmus test above for deciding between FailedPrecondition, // Aborted, and Unavailable. @@ -143,6 +145,8 @@ const ( // Unauthenticated indicates the request does not have valid // authentication credentials for the operation. Unauthenticated Code = 16 + + _maxCode = 17 ) var strToCode = map[string]Code{ @@ -176,6 +180,16 @@ func (c *Code) UnmarshalJSON(b []byte) error { if c == nil { return fmt.Errorf("nil receiver passed to UnmarshalJSON") } + + if ci, err := strconv.ParseUint(string(b), 10, 32); err == nil { + if ci >= _maxCode { + return fmt.Errorf("invalid code: %q", ci) + } + + *c = Code(ci) + return nil + } + if jc, ok := strToCode[string(b)]; ok { *c = jc return nil diff --git a/vendor/google.golang.org/grpc/connectivity/connectivity.go b/vendor/google.golang.org/grpc/connectivity/connectivity.go index 568ef5dc68..34ec36fbf6 100644 --- a/vendor/google.golang.org/grpc/connectivity/connectivity.go +++ b/vendor/google.golang.org/grpc/connectivity/connectivity.go @@ -22,7 +22,8 @@ package connectivity import ( - "golang.org/x/net/context" + "context" + "google.golang.org/grpc/grpclog" ) @@ -51,7 +52,7 @@ func (s State) String() string { const ( // Idle indicates the ClientConn is idle. Idle State = iota - // Connecting indicates the ClienConn is connecting. + // Connecting indicates the ClientConn is connecting. Connecting // Ready indicates the ClientConn is ready for work. Ready diff --git a/vendor/google.golang.org/grpc/credentials/credentials.go b/vendor/google.golang.org/grpc/credentials/credentials.go index 3351bf0ee5..8ea3d4a1dc 100644 --- a/vendor/google.golang.org/grpc/credentials/credentials.go +++ b/vendor/google.golang.org/grpc/credentials/credentials.go @@ -23,6 +23,7 @@ package credentials // import "google.golang.org/grpc/credentials" import ( + "context" "crypto/tls" "crypto/x509" "errors" @@ -31,12 +32,10 @@ import ( "net" "strings" - "golang.org/x/net/context" + "github.com/golang/protobuf/proto" + "google.golang.org/grpc/credentials/internal" ) -// alpnProtoStr are the specified application level protocols for gRPC. -var alpnProtoStr = []string{"h2"} - // PerRPCCredentials defines the common interface for the credentials which need to // attach security information to every RPC (e.g., oauth2). type PerRPCCredentials interface { @@ -107,6 +106,25 @@ type TransportCredentials interface { OverrideServerName(string) error } +// Bundle is a combination of TransportCredentials and PerRPCCredentials. +// +// It also contains a mode switching method, so it can be used as a combination +// of different credential policies. +// +// Bundle cannot be used together with individual TransportCredentials. +// PerRPCCredentials from Bundle will be appended to other PerRPCCredentials. +// +// This API is experimental. +type Bundle interface { + TransportCredentials() TransportCredentials + PerRPCCredentials() PerRPCCredentials + // NewWithMode should make a copy of Bundle, and switch mode. Modifying the + // existing Bundle may cause races. + // + // NewWithMode returns nil if the requested mode is not supported. + NewWithMode(mode string) (Bundle, error) +} + // TLSInfo contains the auth information for a TLS authenticated connection. // It implements the AuthInfo interface. type TLSInfo struct { @@ -118,6 +136,18 @@ func (t TLSInfo) AuthType() string { return "tls" } +// GetSecurityValue returns security info requested by channelz. +func (t TLSInfo) GetSecurityValue() ChannelzSecurityValue { + v := &TLSChannelzSecurityValue{ + StandardName: cipherSuiteLookup[t.State.CipherSuite], + } + // Currently there's no way to get LocalCertificate info from tls package. + if len(t.State.PeerCertificates) > 0 { + v.RemoteCertificate = t.State.PeerCertificates[0].Raw + } + return v +} + // tlsCreds is the credentials required for authenticating a connection using TLS. type tlsCreds struct { // TLS configuration @@ -155,7 +185,7 @@ func (c *tlsCreds) ClientHandshake(ctx context.Context, authority string, rawCon case <-ctx.Done(): return nil, nil, ctx.Err() } - return conn, TLSInfo{conn.ConnectionState()}, nil + return internal.WrapSyscallConn(rawConn, conn), TLSInfo{conn.ConnectionState()}, nil } func (c *tlsCreds) ServerHandshake(rawConn net.Conn) (net.Conn, AuthInfo, error) { @@ -163,7 +193,7 @@ func (c *tlsCreds) ServerHandshake(rawConn net.Conn) (net.Conn, AuthInfo, error) if err := conn.Handshake(); err != nil { return nil, nil, err } - return conn, TLSInfo{conn.ConnectionState()}, nil + return internal.WrapSyscallConn(rawConn, conn), TLSInfo{conn.ConnectionState()}, nil } func (c *tlsCreds) Clone() TransportCredentials { @@ -175,10 +205,23 @@ func (c *tlsCreds) OverrideServerName(serverNameOverride string) error { return nil } +const alpnProtoStrH2 = "h2" + +func appendH2ToNextProtos(ps []string) []string { + for _, p := range ps { + if p == alpnProtoStrH2 { + return ps + } + } + ret := make([]string, 0, len(ps)+1) + ret = append(ret, ps...) + return append(ret, alpnProtoStrH2) +} + // NewTLS uses c to construct a TransportCredentials based on TLS. func NewTLS(c *tls.Config) TransportCredentials { tc := &tlsCreds{cloneTLSConfig(c)} - tc.config.NextProtos = alpnProtoStr + tc.config.NextProtos = appendH2ToNextProtos(tc.config.NextProtos) return tc } @@ -218,3 +261,76 @@ func NewServerTLSFromFile(certFile, keyFile string) (TransportCredentials, error } return NewTLS(&tls.Config{Certificates: []tls.Certificate{cert}}), nil } + +// ChannelzSecurityInfo defines the interface that security protocols should implement +// in order to provide security info to channelz. +type ChannelzSecurityInfo interface { + GetSecurityValue() ChannelzSecurityValue +} + +// ChannelzSecurityValue defines the interface that GetSecurityValue() return value +// should satisfy. This interface should only be satisfied by *TLSChannelzSecurityValue +// and *OtherChannelzSecurityValue. +type ChannelzSecurityValue interface { + isChannelzSecurityValue() +} + +// TLSChannelzSecurityValue defines the struct that TLS protocol should return +// from GetSecurityValue(), containing security info like cipher and certificate used. +type TLSChannelzSecurityValue struct { + ChannelzSecurityValue + StandardName string + LocalCertificate []byte + RemoteCertificate []byte +} + +// OtherChannelzSecurityValue defines the struct that non-TLS protocol should return +// from GetSecurityValue(), which contains protocol specific security info. Note +// the Value field will be sent to users of channelz requesting channel info, and +// thus sensitive info should better be avoided. +type OtherChannelzSecurityValue struct { + ChannelzSecurityValue + Name string + Value proto.Message +} + +var cipherSuiteLookup = map[uint16]string{ + tls.TLS_RSA_WITH_RC4_128_SHA: "TLS_RSA_WITH_RC4_128_SHA", + tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA: "TLS_RSA_WITH_3DES_EDE_CBC_SHA", + tls.TLS_RSA_WITH_AES_128_CBC_SHA: "TLS_RSA_WITH_AES_128_CBC_SHA", + tls.TLS_RSA_WITH_AES_256_CBC_SHA: "TLS_RSA_WITH_AES_256_CBC_SHA", + tls.TLS_RSA_WITH_AES_128_GCM_SHA256: "TLS_RSA_WITH_AES_128_GCM_SHA256", + tls.TLS_RSA_WITH_AES_256_GCM_SHA384: "TLS_RSA_WITH_AES_256_GCM_SHA384", + tls.TLS_ECDHE_ECDSA_WITH_RC4_128_SHA: "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", + tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", + tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA: "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA", + tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA: "TLS_ECDHE_RSA_WITH_RC4_128_SHA", + tls.TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA: "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", + tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA: "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA", + tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", + tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256", + tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", + tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", + tls.TLS_FALLBACK_SCSV: "TLS_FALLBACK_SCSV", + tls.TLS_RSA_WITH_AES_128_CBC_SHA256: "TLS_RSA_WITH_AES_128_CBC_SHA256", + tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256: "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", + tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256: "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", + tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305: "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305", + tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305: "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305", +} + +// cloneTLSConfig returns a shallow clone of the exported +// fields of cfg, ignoring the unexported sync.Once, which +// contains a mutex and must not be copied. +// +// If cfg is nil, a new zero tls.Config is returned. +// +// TODO: inline this function if possible. +func cloneTLSConfig(cfg *tls.Config) *tls.Config { + if cfg == nil { + return &tls.Config{} + } + + return cfg.Clone() +} diff --git a/vendor/google.golang.org/grpc/credentials/credentials_util_go17.go b/vendor/google.golang.org/grpc/credentials/credentials_util_go17.go deleted file mode 100644 index 60409aac0f..0000000000 --- a/vendor/google.golang.org/grpc/credentials/credentials_util_go17.go +++ /dev/null @@ -1,60 +0,0 @@ -// +build go1.7 -// +build !go1.8 - -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package credentials - -import ( - "crypto/tls" -) - -// cloneTLSConfig returns a shallow clone of the exported -// fields of cfg, ignoring the unexported sync.Once, which -// contains a mutex and must not be copied. -// -// If cfg is nil, a new zero tls.Config is returned. -func cloneTLSConfig(cfg *tls.Config) *tls.Config { - if cfg == nil { - return &tls.Config{} - } - return &tls.Config{ - Rand: cfg.Rand, - Time: cfg.Time, - Certificates: cfg.Certificates, - NameToCertificate: cfg.NameToCertificate, - GetCertificate: cfg.GetCertificate, - RootCAs: cfg.RootCAs, - NextProtos: cfg.NextProtos, - ServerName: cfg.ServerName, - ClientAuth: cfg.ClientAuth, - ClientCAs: cfg.ClientCAs, - InsecureSkipVerify: cfg.InsecureSkipVerify, - CipherSuites: cfg.CipherSuites, - PreferServerCipherSuites: cfg.PreferServerCipherSuites, - SessionTicketsDisabled: cfg.SessionTicketsDisabled, - SessionTicketKey: cfg.SessionTicketKey, - ClientSessionCache: cfg.ClientSessionCache, - MinVersion: cfg.MinVersion, - MaxVersion: cfg.MaxVersion, - CurvePreferences: cfg.CurvePreferences, - DynamicRecordSizingDisabled: cfg.DynamicRecordSizingDisabled, - Renegotiation: cfg.Renegotiation, - } -} diff --git a/vendor/google.golang.org/grpc/credentials/credentials_util_pre_go17.go b/vendor/google.golang.org/grpc/credentials/credentials_util_pre_go17.go deleted file mode 100644 index d6bbcc9fdd..0000000000 --- a/vendor/google.golang.org/grpc/credentials/credentials_util_pre_go17.go +++ /dev/null @@ -1,57 +0,0 @@ -// +build !go1.7 - -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package credentials - -import ( - "crypto/tls" -) - -// cloneTLSConfig returns a shallow clone of the exported -// fields of cfg, ignoring the unexported sync.Once, which -// contains a mutex and must not be copied. -// -// If cfg is nil, a new zero tls.Config is returned. -func cloneTLSConfig(cfg *tls.Config) *tls.Config { - if cfg == nil { - return &tls.Config{} - } - return &tls.Config{ - Rand: cfg.Rand, - Time: cfg.Time, - Certificates: cfg.Certificates, - NameToCertificate: cfg.NameToCertificate, - GetCertificate: cfg.GetCertificate, - RootCAs: cfg.RootCAs, - NextProtos: cfg.NextProtos, - ServerName: cfg.ServerName, - ClientAuth: cfg.ClientAuth, - ClientCAs: cfg.ClientCAs, - InsecureSkipVerify: cfg.InsecureSkipVerify, - CipherSuites: cfg.CipherSuites, - PreferServerCipherSuites: cfg.PreferServerCipherSuites, - SessionTicketsDisabled: cfg.SessionTicketsDisabled, - SessionTicketKey: cfg.SessionTicketKey, - ClientSessionCache: cfg.ClientSessionCache, - MinVersion: cfg.MinVersion, - MaxVersion: cfg.MaxVersion, - CurvePreferences: cfg.CurvePreferences, - } -} diff --git a/vendor/google.golang.org/grpc/credentials/internal/syscallconn.go b/vendor/google.golang.org/grpc/credentials/internal/syscallconn.go new file mode 100644 index 0000000000..2f4472becc --- /dev/null +++ b/vendor/google.golang.org/grpc/credentials/internal/syscallconn.go @@ -0,0 +1,61 @@ +// +build !appengine + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package internal contains credentials-internal code. +package internal + +import ( + "net" + "syscall" +) + +type sysConn = syscall.Conn + +// syscallConn keeps reference of rawConn to support syscall.Conn for channelz. +// SyscallConn() (the method in interface syscall.Conn) is explicitly +// implemented on this type, +// +// Interface syscall.Conn is implemented by most net.Conn implementations (e.g. +// TCPConn, UnixConn), but is not part of net.Conn interface. So wrapper conns +// that embed net.Conn don't implement syscall.Conn. (Side note: tls.Conn +// doesn't embed net.Conn, so even if syscall.Conn is part of net.Conn, it won't +// help here). +type syscallConn struct { + net.Conn + // sysConn is a type alias of syscall.Conn. It's necessary because the name + // `Conn` collides with `net.Conn`. + sysConn +} + +// WrapSyscallConn tries to wrap rawConn and newConn into a net.Conn that +// implements syscall.Conn. rawConn will be used to support syscall, and newConn +// will be used for read/write. +// +// This function returns newConn if rawConn doesn't implement syscall.Conn. +func WrapSyscallConn(rawConn, newConn net.Conn) net.Conn { + sysConn, ok := rawConn.(syscall.Conn) + if !ok { + return newConn + } + return &syscallConn{ + Conn: newConn, + sysConn: sysConn, + } +} diff --git a/vendor/google.golang.org/grpc/resolver/dns/go18.go b/vendor/google.golang.org/grpc/credentials/internal/syscallconn_appengine.go similarity index 73% rename from vendor/google.golang.org/grpc/resolver/dns/go18.go rename to vendor/google.golang.org/grpc/credentials/internal/syscallconn_appengine.go index fa34f14cad..d4346e9eab 100644 --- a/vendor/google.golang.org/grpc/resolver/dns/go18.go +++ b/vendor/google.golang.org/grpc/credentials/internal/syscallconn_appengine.go @@ -1,8 +1,8 @@ -// +build go1.8 +// +build appengine /* * - * Copyright 2017 gRPC authors. + * Copyright 2018 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,12 +18,13 @@ * */ -package dns +package internal -import "net" - -var ( - lookupHost = net.DefaultResolver.LookupHost - lookupSRV = net.DefaultResolver.LookupSRV - lookupTXT = net.DefaultResolver.LookupTXT +import ( + "net" ) + +// WrapSyscallConn returns newConn on appengine. +func WrapSyscallConn(rawConn, newConn net.Conn) net.Conn { + return newConn +} diff --git a/vendor/google.golang.org/grpc/credentials/credentials_util_go18.go b/vendor/google.golang.org/grpc/credentials/tls13.go similarity index 59% rename from vendor/google.golang.org/grpc/credentials/credentials_util_go18.go rename to vendor/google.golang.org/grpc/credentials/tls13.go index 93f0e1d8de..ccbf35b331 100644 --- a/vendor/google.golang.org/grpc/credentials/credentials_util_go18.go +++ b/vendor/google.golang.org/grpc/credentials/tls13.go @@ -1,8 +1,8 @@ -// +build go1.8 +// +build go1.12 /* * - * Copyright 2017 gRPC authors. + * Copyright 2019 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,19 +20,11 @@ package credentials -import ( - "crypto/tls" -) +import "crypto/tls" -// cloneTLSConfig returns a shallow clone of the exported -// fields of cfg, ignoring the unexported sync.Once, which -// contains a mutex and must not be copied. -// -// If cfg is nil, a new zero tls.Config is returned. -func cloneTLSConfig(cfg *tls.Config) *tls.Config { - if cfg == nil { - return &tls.Config{} - } - - return cfg.Clone() +// This init function adds cipher suite constants only defined in Go 1.12. +func init() { + cipherSuiteLookup[tls.TLS_AES_128_GCM_SHA256] = "TLS_AES_128_GCM_SHA256" + cipherSuiteLookup[tls.TLS_AES_256_GCM_SHA384] = "TLS_AES_256_GCM_SHA384" + cipherSuiteLookup[tls.TLS_CHACHA20_POLY1305_SHA256] = "TLS_CHACHA20_POLY1305_SHA256" } diff --git a/vendor/google.golang.org/grpc/dialoptions.go b/vendor/google.golang.org/grpc/dialoptions.go new file mode 100644 index 0000000000..e8f34d0d6e --- /dev/null +++ b/vendor/google.golang.org/grpc/dialoptions.go @@ -0,0 +1,554 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package grpc + +import ( + "context" + "fmt" + "net" + "time" + + "google.golang.org/grpc/balancer" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal" + "google.golang.org/grpc/internal/backoff" + "google.golang.org/grpc/internal/envconfig" + "google.golang.org/grpc/internal/transport" + "google.golang.org/grpc/keepalive" + "google.golang.org/grpc/resolver" + "google.golang.org/grpc/stats" +) + +// dialOptions configure a Dial call. dialOptions are set by the DialOption +// values passed to Dial. +type dialOptions struct { + unaryInt UnaryClientInterceptor + streamInt StreamClientInterceptor + + chainUnaryInts []UnaryClientInterceptor + chainStreamInts []StreamClientInterceptor + + cp Compressor + dc Decompressor + bs backoff.Strategy + block bool + insecure bool + timeout time.Duration + scChan <-chan ServiceConfig + authority string + copts transport.ConnectOptions + callOptions []CallOption + // This is used by v1 balancer dial option WithBalancer to support v1 + // balancer, and also by WithBalancerName dial option. + balancerBuilder balancer.Builder + // This is to support grpclb. + resolverBuilder resolver.Builder + channelzParentID int64 + disableServiceConfig bool + disableRetry bool + disableHealthCheck bool + healthCheckFunc internal.HealthChecker + minConnectTimeout func() time.Duration + defaultServiceConfig *ServiceConfig // defaultServiceConfig is parsed from defaultServiceConfigRawJSON. + defaultServiceConfigRawJSON *string +} + +// DialOption configures how we set up the connection. +type DialOption interface { + apply(*dialOptions) +} + +// EmptyDialOption does not alter the dial configuration. It can be embedded in +// another structure to build custom dial options. +// +// This API is EXPERIMENTAL. +type EmptyDialOption struct{} + +func (EmptyDialOption) apply(*dialOptions) {} + +// funcDialOption wraps a function that modifies dialOptions into an +// implementation of the DialOption interface. +type funcDialOption struct { + f func(*dialOptions) +} + +func (fdo *funcDialOption) apply(do *dialOptions) { + fdo.f(do) +} + +func newFuncDialOption(f func(*dialOptions)) *funcDialOption { + return &funcDialOption{ + f: f, + } +} + +// WithWriteBufferSize determines how much data can be batched before doing a +// write on the wire. The corresponding memory allocation for this buffer will +// be twice the size to keep syscalls low. The default value for this buffer is +// 32KB. +// +// Zero will disable the write buffer such that each write will be on underlying +// connection. Note: A Send call may not directly translate to a write. +func WithWriteBufferSize(s int) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.WriteBufferSize = s + }) +} + +// WithReadBufferSize lets you set the size of read buffer, this determines how +// much data can be read at most for each read syscall. +// +// The default value for this buffer is 32KB. Zero will disable read buffer for +// a connection so data framer can access the underlying conn directly. +func WithReadBufferSize(s int) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.ReadBufferSize = s + }) +} + +// WithInitialWindowSize returns a DialOption which sets the value for initial +// window size on a stream. The lower bound for window size is 64K and any value +// smaller than that will be ignored. +func WithInitialWindowSize(s int32) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.InitialWindowSize = s + }) +} + +// WithInitialConnWindowSize returns a DialOption which sets the value for +// initial window size on a connection. The lower bound for window size is 64K +// and any value smaller than that will be ignored. +func WithInitialConnWindowSize(s int32) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.InitialConnWindowSize = s + }) +} + +// WithMaxMsgSize returns a DialOption which sets the maximum message size the +// client can receive. +// +// Deprecated: use WithDefaultCallOptions(MaxCallRecvMsgSize(s)) instead. Will +// be supported throughout 1.x. +func WithMaxMsgSize(s int) DialOption { + return WithDefaultCallOptions(MaxCallRecvMsgSize(s)) +} + +// WithDefaultCallOptions returns a DialOption which sets the default +// CallOptions for calls over the connection. +func WithDefaultCallOptions(cos ...CallOption) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.callOptions = append(o.callOptions, cos...) + }) +} + +// WithCodec returns a DialOption which sets a codec for message marshaling and +// unmarshaling. +// +// Deprecated: use WithDefaultCallOptions(ForceCodec(_)) instead. Will be +// supported throughout 1.x. +func WithCodec(c Codec) DialOption { + return WithDefaultCallOptions(CallCustomCodec(c)) +} + +// WithCompressor returns a DialOption which sets a Compressor to use for +// message compression. It has lower priority than the compressor set by the +// UseCompressor CallOption. +// +// Deprecated: use UseCompressor instead. Will be supported throughout 1.x. +func WithCompressor(cp Compressor) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.cp = cp + }) +} + +// WithDecompressor returns a DialOption which sets a Decompressor to use for +// incoming message decompression. If incoming response messages are encoded +// using the decompressor's Type(), it will be used. Otherwise, the message +// encoding will be used to look up the compressor registered via +// encoding.RegisterCompressor, which will then be used to decompress the +// message. If no compressor is registered for the encoding, an Unimplemented +// status error will be returned. +// +// Deprecated: use encoding.RegisterCompressor instead. Will be supported +// throughout 1.x. +func WithDecompressor(dc Decompressor) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.dc = dc + }) +} + +// WithBalancer returns a DialOption which sets a load balancer with the v1 API. +// Name resolver will be ignored if this DialOption is specified. +// +// Deprecated: use the new balancer APIs in balancer package and +// WithBalancerName. Will be removed in a future 1.x release. +func WithBalancer(b Balancer) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.balancerBuilder = &balancerWrapperBuilder{ + b: b, + } + }) +} + +// WithBalancerName sets the balancer that the ClientConn will be initialized +// with. Balancer registered with balancerName will be used. This function +// panics if no balancer was registered by balancerName. +// +// The balancer cannot be overridden by balancer option specified by service +// config. +// +// Deprecated: use WithDefaultServiceConfig and WithDisableServiceConfig +// instead. Will be removed in a future 1.x release. +func WithBalancerName(balancerName string) DialOption { + builder := balancer.Get(balancerName) + if builder == nil { + panic(fmt.Sprintf("grpc.WithBalancerName: no balancer is registered for name %v", balancerName)) + } + return newFuncDialOption(func(o *dialOptions) { + o.balancerBuilder = builder + }) +} + +// withResolverBuilder is only for grpclb. +func withResolverBuilder(b resolver.Builder) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.resolverBuilder = b + }) +} + +// WithServiceConfig returns a DialOption which has a channel to read the +// service configuration. +// +// Deprecated: service config should be received through name resolver or via +// WithDefaultServiceConfig, as specified at +// https://github.com/grpc/grpc/blob/master/doc/service_config.md. Will be +// removed in a future 1.x release. +func WithServiceConfig(c <-chan ServiceConfig) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.scChan = c + }) +} + +// WithBackoffMaxDelay configures the dialer to use the provided maximum delay +// when backing off after failed connection attempts. +func WithBackoffMaxDelay(md time.Duration) DialOption { + return WithBackoffConfig(BackoffConfig{MaxDelay: md}) +} + +// WithBackoffConfig configures the dialer to use the provided backoff +// parameters after connection failures. +// +// Use WithBackoffMaxDelay until more parameters on BackoffConfig are opened up +// for use. +func WithBackoffConfig(b BackoffConfig) DialOption { + return withBackoff(backoff.Exponential{ + MaxDelay: b.MaxDelay, + }) +} + +// withBackoff sets the backoff strategy used for connectRetryNum after a failed +// connection attempt. +// +// This can be exported if arbitrary backoff strategies are allowed by gRPC. +func withBackoff(bs backoff.Strategy) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.bs = bs + }) +} + +// WithBlock returns a DialOption which makes caller of Dial blocks until the +// underlying connection is up. Without this, Dial returns immediately and +// connecting the server happens in background. +func WithBlock() DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.block = true + }) +} + +// WithInsecure returns a DialOption which disables transport security for this +// ClientConn. Note that transport security is required unless WithInsecure is +// set. +func WithInsecure() DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.insecure = true + }) +} + +// WithTransportCredentials returns a DialOption which configures a connection +// level security credentials (e.g., TLS/SSL). This should not be used together +// with WithCredentialsBundle. +func WithTransportCredentials(creds credentials.TransportCredentials) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.TransportCredentials = creds + }) +} + +// WithPerRPCCredentials returns a DialOption which sets credentials and places +// auth state on each outbound RPC. +func WithPerRPCCredentials(creds credentials.PerRPCCredentials) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.PerRPCCredentials = append(o.copts.PerRPCCredentials, creds) + }) +} + +// WithCredentialsBundle returns a DialOption to set a credentials bundle for +// the ClientConn.WithCreds. This should not be used together with +// WithTransportCredentials. +// +// This API is experimental. +func WithCredentialsBundle(b credentials.Bundle) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.CredsBundle = b + }) +} + +// WithTimeout returns a DialOption that configures a timeout for dialing a +// ClientConn initially. This is valid if and only if WithBlock() is present. +// +// Deprecated: use DialContext and context.WithTimeout instead. Will be +// supported throughout 1.x. +func WithTimeout(d time.Duration) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.timeout = d + }) +} + +// WithContextDialer returns a DialOption that sets a dialer to create +// connections. If FailOnNonTempDialError() is set to true, and an error is +// returned by f, gRPC checks the error's Temporary() method to decide if it +// should try to reconnect to the network address. +func WithContextDialer(f func(context.Context, string) (net.Conn, error)) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.Dialer = f + }) +} + +func init() { + internal.WithResolverBuilder = withResolverBuilder + internal.WithHealthCheckFunc = withHealthCheckFunc +} + +// WithDialer returns a DialOption that specifies a function to use for dialing +// network addresses. If FailOnNonTempDialError() is set to true, and an error +// is returned by f, gRPC checks the error's Temporary() method to decide if it +// should try to reconnect to the network address. +// +// Deprecated: use WithContextDialer instead. Will be supported throughout +// 1.x. +func WithDialer(f func(string, time.Duration) (net.Conn, error)) DialOption { + return WithContextDialer( + func(ctx context.Context, addr string) (net.Conn, error) { + if deadline, ok := ctx.Deadline(); ok { + return f(addr, time.Until(deadline)) + } + return f(addr, 0) + }) +} + +// WithStatsHandler returns a DialOption that specifies the stats handler for +// all the RPCs and underlying network connections in this ClientConn. +func WithStatsHandler(h stats.Handler) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.StatsHandler = h + }) +} + +// FailOnNonTempDialError returns a DialOption that specifies if gRPC fails on +// non-temporary dial errors. If f is true, and dialer returns a non-temporary +// error, gRPC will fail the connection to the network address and won't try to +// reconnect. The default value of FailOnNonTempDialError is false. +// +// FailOnNonTempDialError only affects the initial dial, and does not do +// anything useful unless you are also using WithBlock(). +// +// This is an EXPERIMENTAL API. +func FailOnNonTempDialError(f bool) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.FailOnNonTempDialError = f + }) +} + +// WithUserAgent returns a DialOption that specifies a user agent string for all +// the RPCs. +func WithUserAgent(s string) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.UserAgent = s + }) +} + +// WithKeepaliveParams returns a DialOption that specifies keepalive parameters +// for the client transport. +func WithKeepaliveParams(kp keepalive.ClientParameters) DialOption { + if kp.Time < internal.KeepaliveMinPingTime { + grpclog.Warningf("Adjusting keepalive ping interval to minimum period of %v", internal.KeepaliveMinPingTime) + kp.Time = internal.KeepaliveMinPingTime + } + return newFuncDialOption(func(o *dialOptions) { + o.copts.KeepaliveParams = kp + }) +} + +// WithUnaryInterceptor returns a DialOption that specifies the interceptor for +// unary RPCs. +func WithUnaryInterceptor(f UnaryClientInterceptor) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.unaryInt = f + }) +} + +// WithChainUnaryInterceptor returns a DialOption that specifies the chained +// interceptor for unary RPCs. The first interceptor will be the outer most, +// while the last interceptor will be the inner most wrapper around the real call. +// All interceptors added by this method will be chained, and the interceptor +// defined by WithUnaryInterceptor will always be prepended to the chain. +func WithChainUnaryInterceptor(interceptors ...UnaryClientInterceptor) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.chainUnaryInts = append(o.chainUnaryInts, interceptors...) + }) +} + +// WithStreamInterceptor returns a DialOption that specifies the interceptor for +// streaming RPCs. +func WithStreamInterceptor(f StreamClientInterceptor) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.streamInt = f + }) +} + +// WithChainStreamInterceptor returns a DialOption that specifies the chained +// interceptor for unary RPCs. The first interceptor will be the outer most, +// while the last interceptor will be the inner most wrapper around the real call. +// All interceptors added by this method will be chained, and the interceptor +// defined by WithStreamInterceptor will always be prepended to the chain. +func WithChainStreamInterceptor(interceptors ...StreamClientInterceptor) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.chainStreamInts = append(o.chainStreamInts, interceptors...) + }) +} + +// WithAuthority returns a DialOption that specifies the value to be used as the +// :authority pseudo-header. This value only works with WithInsecure and has no +// effect if TransportCredentials are present. +func WithAuthority(a string) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.authority = a + }) +} + +// WithChannelzParentID returns a DialOption that specifies the channelz ID of +// current ClientConn's parent. This function is used in nested channel creation +// (e.g. grpclb dial). +func WithChannelzParentID(id int64) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.channelzParentID = id + }) +} + +// WithDisableServiceConfig returns a DialOption that causes gRPC to ignore any +// service config provided by the resolver and provides a hint to the resolver +// to not fetch service configs. +// +// Note that this dial option only disables service config from resolver. If +// default service config is provided, gRPC will use the default service config. +func WithDisableServiceConfig() DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.disableServiceConfig = true + }) +} + +// WithDefaultServiceConfig returns a DialOption that configures the default +// service config, which will be used in cases where: +// +// 1. WithDisableServiceConfig is also used. +// 2. Resolver does not return a service config or if the resolver returns an +// invalid service config. +// +// This API is EXPERIMENTAL. +func WithDefaultServiceConfig(s string) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.defaultServiceConfigRawJSON = &s + }) +} + +// WithDisableRetry returns a DialOption that disables retries, even if the +// service config enables them. This does not impact transparent retries, which +// will happen automatically if no data is written to the wire or if the RPC is +// unprocessed by the remote server. +// +// Retry support is currently disabled by default, but will be enabled by +// default in the future. Until then, it may be enabled by setting the +// environment variable "GRPC_GO_RETRY" to "on". +// +// This API is EXPERIMENTAL. +func WithDisableRetry() DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.disableRetry = true + }) +} + +// WithMaxHeaderListSize returns a DialOption that specifies the maximum +// (uncompressed) size of header list that the client is prepared to accept. +func WithMaxHeaderListSize(s uint32) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.copts.MaxHeaderListSize = &s + }) +} + +// WithDisableHealthCheck disables the LB channel health checking for all +// SubConns of this ClientConn. +// +// This API is EXPERIMENTAL. +func WithDisableHealthCheck() DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.disableHealthCheck = true + }) +} + +// withHealthCheckFunc replaces the default health check function with the +// provided one. It makes tests easier to change the health check function. +// +// For testing purpose only. +func withHealthCheckFunc(f internal.HealthChecker) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.healthCheckFunc = f + }) +} + +func defaultDialOptions() dialOptions { + return dialOptions{ + disableRetry: !envconfig.Retry, + healthCheckFunc: internal.HealthCheckFunc, + copts: transport.ConnectOptions{ + WriteBufferSize: defaultWriteBufSize, + ReadBufferSize: defaultReadBufSize, + }, + } +} + +// withGetMinConnectDeadline specifies the function that clientconn uses to +// get minConnectDeadline. This can be used to make connection attempts happen +// faster/slower. +// +// For testing purpose only. +func withMinConnectDeadline(f func() time.Duration) DialOption { + return newFuncDialOption(func(o *dialOptions) { + o.minConnectTimeout = f + }) +} diff --git a/vendor/google.golang.org/grpc/encoding/encoding.go b/vendor/google.golang.org/grpc/encoding/encoding.go index 8e26c19436..30a75da99d 100644 --- a/vendor/google.golang.org/grpc/encoding/encoding.go +++ b/vendor/google.golang.org/grpc/encoding/encoding.go @@ -82,7 +82,7 @@ type Codec interface { Name() string } -var registeredCodecs = make(map[string]Codec, 0) +var registeredCodecs = make(map[string]Codec) // RegisterCodec registers the provided Codec for use with all gRPC clients and // servers. @@ -102,10 +102,10 @@ func RegisterCodec(codec Codec) { if codec == nil { panic("cannot register a nil Codec") } - contentSubtype := strings.ToLower(codec.Name()) - if contentSubtype == "" { - panic("cannot register Codec with empty string result for String()") + if codec.Name() == "" { + panic("cannot register Codec with empty string result for Name()") } + contentSubtype := strings.ToLower(codec.Name()) registeredCodecs[contentSubtype] = codec } diff --git a/vendor/google.golang.org/grpc/go.mod b/vendor/google.golang.org/grpc/go.mod new file mode 100644 index 0000000000..c7f3fa3f36 --- /dev/null +++ b/vendor/google.golang.org/grpc/go.mod @@ -0,0 +1,21 @@ +module google.golang.org/grpc + +go 1.11 + +require ( + cloud.google.com/go v0.26.0 // indirect + github.com/BurntSushi/toml v0.3.1 // indirect + github.com/client9/misspell v0.3.4 + github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b + github.com/golang/mock v1.1.1 + github.com/golang/protobuf v1.3.2 + github.com/google/go-cmp v0.2.0 + golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3 + golang.org/x/net v0.0.0-20190311183353-d8887717615a + golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be + golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a + golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 + google.golang.org/appengine v1.1.0 // indirect + google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 + honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc +) diff --git a/vendor/google.golang.org/grpc/go.sum b/vendor/google.golang.org/grpc/go.sum new file mode 100644 index 0000000000..7faff49e7d --- /dev/null +++ b/vendor/google.golang.org/grpc/go.sum @@ -0,0 +1,37 @@ +cloud.google.com/go v0.26.0 h1:e0WKqKTd5BnrG8aKH3J3h+QvEIQtSUcf2n5UZ5ZgLtQ= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3 h1:XQyxROzUlZH+WIQwySDgnISgOivlhjIEwaQaJEJrrN0= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd h1:/e+gpKk9r3dJobndpTytxS2gOy6m5uvpg+ISQoEcusQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135 h1:5Beo0mZN8dRzgrMMkDp0jc8YXQKx9DiJ2k1dkvGsn5A= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +google.golang.org/appengine v1.1.0 h1:igQkv0AAhEIvTEpD5LIpAfav2eeVO9HBTjvKHVJPRSs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc h1:/hemPrYIhOhy8zYrNj+069zDB68us2sMGsfkFJO0iZs= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/vendor/google.golang.org/grpc/go16.go b/vendor/google.golang.org/grpc/go16.go deleted file mode 100644 index 535ee9356f..0000000000 --- a/vendor/google.golang.org/grpc/go16.go +++ /dev/null @@ -1,70 +0,0 @@ -// +build go1.6,!go1.7 - -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "fmt" - "io" - "net" - "net/http" - - "golang.org/x/net/context" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" -) - -// dialContext connects to the address on the named network. -func dialContext(ctx context.Context, network, address string) (net.Conn, error) { - return (&net.Dialer{Cancel: ctx.Done()}).Dial(network, address) -} - -func sendHTTPRequest(ctx context.Context, req *http.Request, conn net.Conn) error { - req.Cancel = ctx.Done() - if err := req.Write(conn); err != nil { - return fmt.Errorf("failed to write the HTTP request: %v", err) - } - return nil -} - -// toRPCErr converts an error into an error from the status package. -func toRPCErr(err error) error { - if err == nil || err == io.EOF { - return err - } - if _, ok := status.FromError(err); ok { - return err - } - switch e := err.(type) { - case transport.StreamError: - return status.Error(e.Code, e.Desc) - case transport.ConnectionError: - return status.Error(codes.Unavailable, e.Desc) - default: - switch err { - case context.DeadlineExceeded: - return status.Error(codes.DeadlineExceeded, err.Error()) - case context.Canceled: - return status.Error(codes.Canceled, err.Error()) - } - } - return status.Error(codes.Unknown, err.Error()) -} diff --git a/vendor/google.golang.org/grpc/go17.go b/vendor/google.golang.org/grpc/go17.go deleted file mode 100644 index ec676a93c3..0000000000 --- a/vendor/google.golang.org/grpc/go17.go +++ /dev/null @@ -1,71 +0,0 @@ -// +build go1.7 - -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "context" - "fmt" - "io" - "net" - "net/http" - - netctx "golang.org/x/net/context" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" -) - -// dialContext connects to the address on the named network. -func dialContext(ctx context.Context, network, address string) (net.Conn, error) { - return (&net.Dialer{}).DialContext(ctx, network, address) -} - -func sendHTTPRequest(ctx context.Context, req *http.Request, conn net.Conn) error { - req = req.WithContext(ctx) - if err := req.Write(conn); err != nil { - return fmt.Errorf("failed to write the HTTP request: %v", err) - } - return nil -} - -// toRPCErr converts an error into an error from the status package. -func toRPCErr(err error) error { - if err == nil || err == io.EOF { - return err - } - if _, ok := status.FromError(err); ok { - return err - } - switch e := err.(type) { - case transport.StreamError: - return status.Error(e.Code, e.Desc) - case transport.ConnectionError: - return status.Error(codes.Unavailable, e.Desc) - default: - switch err { - case context.DeadlineExceeded, netctx.DeadlineExceeded: - return status.Error(codes.DeadlineExceeded, err.Error()) - case context.Canceled, netctx.Canceled: - return status.Error(codes.Canceled, err.Error()) - } - } - return status.Error(codes.Unknown, err.Error()) -} diff --git a/vendor/google.golang.org/grpc/grpclb.go b/vendor/google.golang.org/grpc/grpclb.go deleted file mode 100644 index d14a5d4090..0000000000 --- a/vendor/google.golang.org/grpc/grpclb.go +++ /dev/null @@ -1,342 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "strconv" - "strings" - "sync" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc/balancer" - "google.golang.org/grpc/connectivity" - lbpb "google.golang.org/grpc/grpclb/grpc_lb_v1/messages" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/resolver" -) - -const ( - lbTokeyKey = "lb-token" - defaultFallbackTimeout = 10 * time.Second - grpclbName = "grpclb" -) - -func convertDuration(d *lbpb.Duration) time.Duration { - if d == nil { - return 0 - } - return time.Duration(d.Seconds)*time.Second + time.Duration(d.Nanos)*time.Nanosecond -} - -// Client API for LoadBalancer service. -// Mostly copied from generated pb.go file. -// To avoid circular dependency. -type loadBalancerClient struct { - cc *ClientConn -} - -func (c *loadBalancerClient) BalanceLoad(ctx context.Context, opts ...CallOption) (*balanceLoadClientStream, error) { - desc := &StreamDesc{ - StreamName: "BalanceLoad", - ServerStreams: true, - ClientStreams: true, - } - stream, err := NewClientStream(ctx, desc, c.cc, "/grpc.lb.v1.LoadBalancer/BalanceLoad", opts...) - if err != nil { - return nil, err - } - x := &balanceLoadClientStream{stream} - return x, nil -} - -type balanceLoadClientStream struct { - ClientStream -} - -func (x *balanceLoadClientStream) Send(m *lbpb.LoadBalanceRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *balanceLoadClientStream) Recv() (*lbpb.LoadBalanceResponse, error) { - m := new(lbpb.LoadBalanceResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func init() { - balancer.Register(newLBBuilder()) -} - -// newLBBuilder creates a builder for grpclb. -func newLBBuilder() balancer.Builder { - return NewLBBuilderWithFallbackTimeout(defaultFallbackTimeout) -} - -// NewLBBuilderWithFallbackTimeout creates a grpclb builder with the given -// fallbackTimeout. If no response is received from the remote balancer within -// fallbackTimeout, the backend addresses from the resolved address list will be -// used. -// -// Only call this function when a non-default fallback timeout is needed. -func NewLBBuilderWithFallbackTimeout(fallbackTimeout time.Duration) balancer.Builder { - return &lbBuilder{ - fallbackTimeout: fallbackTimeout, - } -} - -type lbBuilder struct { - fallbackTimeout time.Duration -} - -func (b *lbBuilder) Name() string { - return grpclbName -} - -func (b *lbBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) balancer.Balancer { - // This generates a manual resolver builder with a random scheme. This - // scheme will be used to dial to remote LB, so we can send filtered address - // updates to remote LB ClientConn using this manual resolver. - scheme := "grpclb_internal_" + strconv.FormatInt(time.Now().UnixNano(), 36) - r := &lbManualResolver{scheme: scheme, ccb: cc} - - var target string - targetSplitted := strings.Split(cc.Target(), ":///") - if len(targetSplitted) < 2 { - target = cc.Target() - } else { - target = targetSplitted[1] - } - - lb := &lbBalancer{ - cc: cc, - target: target, - opt: opt, - fallbackTimeout: b.fallbackTimeout, - doneCh: make(chan struct{}), - - manualResolver: r, - csEvltr: &connectivityStateEvaluator{}, - subConns: make(map[resolver.Address]balancer.SubConn), - scStates: make(map[balancer.SubConn]connectivity.State), - picker: &errPicker{err: balancer.ErrNoSubConnAvailable}, - clientStats: &rpcStats{}, - } - - return lb -} - -type lbBalancer struct { - cc balancer.ClientConn - target string - opt balancer.BuildOptions - fallbackTimeout time.Duration - doneCh chan struct{} - - // manualResolver is used in the remote LB ClientConn inside grpclb. When - // resolved address updates are received by grpclb, filtered updates will be - // send to remote LB ClientConn through this resolver. - manualResolver *lbManualResolver - // The ClientConn to talk to the remote balancer. - ccRemoteLB *ClientConn - - // Support client side load reporting. Each picker gets a reference to this, - // and will update its content. - clientStats *rpcStats - - mu sync.Mutex // guards everything following. - // The full server list including drops, used to check if the newly received - // serverList contains anything new. Each generate picker will also have - // reference to this list to do the first layer pick. - fullServerList []*lbpb.Server - // All backends addresses, with metadata set to nil. This list contains all - // backend addresses in the same order and with the same duplicates as in - // serverlist. When generating picker, a SubConn slice with the same order - // but with only READY SCs will be gerenated. - backendAddrs []resolver.Address - // Roundrobin functionalities. - csEvltr *connectivityStateEvaluator - state connectivity.State - subConns map[resolver.Address]balancer.SubConn // Used to new/remove SubConn. - scStates map[balancer.SubConn]connectivity.State // Used to filter READY SubConns. - picker balancer.Picker - // Support fallback to resolved backend addresses if there's no response - // from remote balancer within fallbackTimeout. - fallbackTimerExpired bool - serverListReceived bool - // resolvedBackendAddrs is resolvedAddrs minus remote balancers. It's set - // when resolved address updates are received, and read in the goroutine - // handling fallback. - resolvedBackendAddrs []resolver.Address -} - -// regeneratePicker takes a snapshot of the balancer, and generates a picker from -// it. The picker -// - always returns ErrTransientFailure if the balancer is in TransientFailure, -// - does two layer roundrobin pick otherwise. -// Caller must hold lb.mu. -func (lb *lbBalancer) regeneratePicker() { - if lb.state == connectivity.TransientFailure { - lb.picker = &errPicker{err: balancer.ErrTransientFailure} - return - } - var readySCs []balancer.SubConn - for _, a := range lb.backendAddrs { - if sc, ok := lb.subConns[a]; ok { - if st, ok := lb.scStates[sc]; ok && st == connectivity.Ready { - readySCs = append(readySCs, sc) - } - } - } - - if len(lb.fullServerList) <= 0 { - if len(readySCs) <= 0 { - lb.picker = &errPicker{err: balancer.ErrNoSubConnAvailable} - return - } - lb.picker = &rrPicker{subConns: readySCs} - return - } - lb.picker = &lbPicker{ - serverList: lb.fullServerList, - subConns: readySCs, - stats: lb.clientStats, - } - return -} - -func (lb *lbBalancer) HandleSubConnStateChange(sc balancer.SubConn, s connectivity.State) { - grpclog.Infof("lbBalancer: handle SubConn state change: %p, %v", sc, s) - lb.mu.Lock() - defer lb.mu.Unlock() - - oldS, ok := lb.scStates[sc] - if !ok { - grpclog.Infof("lbBalancer: got state changes for an unknown SubConn: %p, %v", sc, s) - return - } - lb.scStates[sc] = s - switch s { - case connectivity.Idle: - sc.Connect() - case connectivity.Shutdown: - // When an address was removed by resolver, b called RemoveSubConn but - // kept the sc's state in scStates. Remove state for this sc here. - delete(lb.scStates, sc) - } - - oldAggrState := lb.state - lb.state = lb.csEvltr.recordTransition(oldS, s) - - // Regenerate picker when one of the following happens: - // - this sc became ready from not-ready - // - this sc became not-ready from ready - // - the aggregated state of balancer became TransientFailure from non-TransientFailure - // - the aggregated state of balancer became non-TransientFailure from TransientFailure - if (oldS == connectivity.Ready) != (s == connectivity.Ready) || - (lb.state == connectivity.TransientFailure) != (oldAggrState == connectivity.TransientFailure) { - lb.regeneratePicker() - } - - lb.cc.UpdateBalancerState(lb.state, lb.picker) - return -} - -// fallbackToBackendsAfter blocks for fallbackTimeout and falls back to use -// resolved backends (backends received from resolver, not from remote balancer) -// if no connection to remote balancers was successful. -func (lb *lbBalancer) fallbackToBackendsAfter(fallbackTimeout time.Duration) { - timer := time.NewTimer(fallbackTimeout) - defer timer.Stop() - select { - case <-timer.C: - case <-lb.doneCh: - return - } - lb.mu.Lock() - if lb.serverListReceived { - lb.mu.Unlock() - return - } - lb.fallbackTimerExpired = true - lb.refreshSubConns(lb.resolvedBackendAddrs) - lb.mu.Unlock() -} - -// HandleResolvedAddrs sends the updated remoteLB addresses to remoteLB -// clientConn. The remoteLB clientConn will handle creating/removing remoteLB -// connections. -func (lb *lbBalancer) HandleResolvedAddrs(addrs []resolver.Address, err error) { - grpclog.Infof("lbBalancer: handleResolvedResult: %+v", addrs) - if len(addrs) <= 0 { - return - } - - var remoteBalancerAddrs, backendAddrs []resolver.Address - for _, a := range addrs { - if a.Type == resolver.GRPCLB { - remoteBalancerAddrs = append(remoteBalancerAddrs, a) - } else { - backendAddrs = append(backendAddrs, a) - } - } - - if lb.ccRemoteLB == nil { - if len(remoteBalancerAddrs) <= 0 { - grpclog.Errorf("grpclb: no remote balancer address is available, should never happen") - return - } - // First time receiving resolved addresses, create a cc to remote - // balancers. - lb.dialRemoteLB(remoteBalancerAddrs[0].ServerName) - // Start the fallback goroutine. - go lb.fallbackToBackendsAfter(lb.fallbackTimeout) - } - - // cc to remote balancers uses lb.manualResolver. Send the updated remote - // balancer addresses to it through manualResolver. - lb.manualResolver.NewAddress(remoteBalancerAddrs) - - lb.mu.Lock() - lb.resolvedBackendAddrs = backendAddrs - // If serverListReceived is true, connection to remote balancer was - // successful and there's no need to do fallback anymore. - // If fallbackTimerExpired is false, fallback hasn't happened yet. - if !lb.serverListReceived && lb.fallbackTimerExpired { - // This means we received a new list of resolved backends, and we are - // still in fallback mode. Need to update the list of backends we are - // using to the new list of backends. - lb.refreshSubConns(lb.resolvedBackendAddrs) - } - lb.mu.Unlock() -} - -func (lb *lbBalancer) Close() { - select { - case <-lb.doneCh: - return - default: - } - close(lb.doneCh) - if lb.ccRemoteLB != nil { - lb.ccRemoteLB.Close() - } -} diff --git a/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.pb.go b/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.pb.go deleted file mode 100644 index f4a27125a4..0000000000 --- a/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.pb.go +++ /dev/null @@ -1,615 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// source: grpc_lb_v1/messages/messages.proto - -/* -Package messages is a generated protocol buffer package. - -It is generated from these files: - grpc_lb_v1/messages/messages.proto - -It has these top-level messages: - Duration - Timestamp - LoadBalanceRequest - InitialLoadBalanceRequest - ClientStats - LoadBalanceResponse - InitialLoadBalanceResponse - ServerList - Server -*/ -package messages - -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package - -type Duration struct { - // Signed seconds of the span of time. Must be from -315,576,000,000 - // to +315,576,000,000 inclusive. - Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` - // Signed fractions of a second at nanosecond resolution of the span - // of time. Durations less than one second are represented with a 0 - // `seconds` field and a positive or negative `nanos` field. For durations - // of one second or more, a non-zero value for the `nanos` field must be - // of the same sign as the `seconds` field. Must be from -999,999,999 - // to +999,999,999 inclusive. - Nanos int32 `protobuf:"varint,2,opt,name=nanos" json:"nanos,omitempty"` -} - -func (m *Duration) Reset() { *m = Duration{} } -func (m *Duration) String() string { return proto.CompactTextString(m) } -func (*Duration) ProtoMessage() {} -func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } - -func (m *Duration) GetSeconds() int64 { - if m != nil { - return m.Seconds - } - return 0 -} - -func (m *Duration) GetNanos() int32 { - if m != nil { - return m.Nanos - } - return 0 -} - -type Timestamp struct { - // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - // 9999-12-31T23:59:59Z inclusive. - Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"` - // Non-negative fractions of a second at nanosecond resolution. Negative - // second values with fractions must still have non-negative nanos values - // that count forward in time. Must be from 0 to 999,999,999 - // inclusive. - Nanos int32 `protobuf:"varint,2,opt,name=nanos" json:"nanos,omitempty"` -} - -func (m *Timestamp) Reset() { *m = Timestamp{} } -func (m *Timestamp) String() string { return proto.CompactTextString(m) } -func (*Timestamp) ProtoMessage() {} -func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } - -func (m *Timestamp) GetSeconds() int64 { - if m != nil { - return m.Seconds - } - return 0 -} - -func (m *Timestamp) GetNanos() int32 { - if m != nil { - return m.Nanos - } - return 0 -} - -type LoadBalanceRequest struct { - // Types that are valid to be assigned to LoadBalanceRequestType: - // *LoadBalanceRequest_InitialRequest - // *LoadBalanceRequest_ClientStats - LoadBalanceRequestType isLoadBalanceRequest_LoadBalanceRequestType `protobuf_oneof:"load_balance_request_type"` -} - -func (m *LoadBalanceRequest) Reset() { *m = LoadBalanceRequest{} } -func (m *LoadBalanceRequest) String() string { return proto.CompactTextString(m) } -func (*LoadBalanceRequest) ProtoMessage() {} -func (*LoadBalanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } - -type isLoadBalanceRequest_LoadBalanceRequestType interface { - isLoadBalanceRequest_LoadBalanceRequestType() -} - -type LoadBalanceRequest_InitialRequest struct { - InitialRequest *InitialLoadBalanceRequest `protobuf:"bytes,1,opt,name=initial_request,json=initialRequest,oneof"` -} -type LoadBalanceRequest_ClientStats struct { - ClientStats *ClientStats `protobuf:"bytes,2,opt,name=client_stats,json=clientStats,oneof"` -} - -func (*LoadBalanceRequest_InitialRequest) isLoadBalanceRequest_LoadBalanceRequestType() {} -func (*LoadBalanceRequest_ClientStats) isLoadBalanceRequest_LoadBalanceRequestType() {} - -func (m *LoadBalanceRequest) GetLoadBalanceRequestType() isLoadBalanceRequest_LoadBalanceRequestType { - if m != nil { - return m.LoadBalanceRequestType - } - return nil -} - -func (m *LoadBalanceRequest) GetInitialRequest() *InitialLoadBalanceRequest { - if x, ok := m.GetLoadBalanceRequestType().(*LoadBalanceRequest_InitialRequest); ok { - return x.InitialRequest - } - return nil -} - -func (m *LoadBalanceRequest) GetClientStats() *ClientStats { - if x, ok := m.GetLoadBalanceRequestType().(*LoadBalanceRequest_ClientStats); ok { - return x.ClientStats - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*LoadBalanceRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _LoadBalanceRequest_OneofMarshaler, _LoadBalanceRequest_OneofUnmarshaler, _LoadBalanceRequest_OneofSizer, []interface{}{ - (*LoadBalanceRequest_InitialRequest)(nil), - (*LoadBalanceRequest_ClientStats)(nil), - } -} - -func _LoadBalanceRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*LoadBalanceRequest) - // load_balance_request_type - switch x := m.LoadBalanceRequestType.(type) { - case *LoadBalanceRequest_InitialRequest: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InitialRequest); err != nil { - return err - } - case *LoadBalanceRequest_ClientStats: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ClientStats); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("LoadBalanceRequest.LoadBalanceRequestType has unexpected type %T", x) - } - return nil -} - -func _LoadBalanceRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*LoadBalanceRequest) - switch tag { - case 1: // load_balance_request_type.initial_request - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(InitialLoadBalanceRequest) - err := b.DecodeMessage(msg) - m.LoadBalanceRequestType = &LoadBalanceRequest_InitialRequest{msg} - return true, err - case 2: // load_balance_request_type.client_stats - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ClientStats) - err := b.DecodeMessage(msg) - m.LoadBalanceRequestType = &LoadBalanceRequest_ClientStats{msg} - return true, err - default: - return false, nil - } -} - -func _LoadBalanceRequest_OneofSizer(msg proto.Message) (n int) { - m := msg.(*LoadBalanceRequest) - // load_balance_request_type - switch x := m.LoadBalanceRequestType.(type) { - case *LoadBalanceRequest_InitialRequest: - s := proto.Size(x.InitialRequest) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *LoadBalanceRequest_ClientStats: - s := proto.Size(x.ClientStats) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type InitialLoadBalanceRequest struct { - // Name of load balanced service (IE, balancer.service.com) - // length should be less than 256 bytes. - Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` -} - -func (m *InitialLoadBalanceRequest) Reset() { *m = InitialLoadBalanceRequest{} } -func (m *InitialLoadBalanceRequest) String() string { return proto.CompactTextString(m) } -func (*InitialLoadBalanceRequest) ProtoMessage() {} -func (*InitialLoadBalanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } - -func (m *InitialLoadBalanceRequest) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -// Contains client level statistics that are useful to load balancing. Each -// count except the timestamp should be reset to zero after reporting the stats. -type ClientStats struct { - // The timestamp of generating the report. - Timestamp *Timestamp `protobuf:"bytes,1,opt,name=timestamp" json:"timestamp,omitempty"` - // The total number of RPCs that started. - NumCallsStarted int64 `protobuf:"varint,2,opt,name=num_calls_started,json=numCallsStarted" json:"num_calls_started,omitempty"` - // The total number of RPCs that finished. - NumCallsFinished int64 `protobuf:"varint,3,opt,name=num_calls_finished,json=numCallsFinished" json:"num_calls_finished,omitempty"` - // The total number of RPCs that were dropped by the client because of rate - // limiting. - NumCallsFinishedWithDropForRateLimiting int64 `protobuf:"varint,4,opt,name=num_calls_finished_with_drop_for_rate_limiting,json=numCallsFinishedWithDropForRateLimiting" json:"num_calls_finished_with_drop_for_rate_limiting,omitempty"` - // The total number of RPCs that were dropped by the client because of load - // balancing. - NumCallsFinishedWithDropForLoadBalancing int64 `protobuf:"varint,5,opt,name=num_calls_finished_with_drop_for_load_balancing,json=numCallsFinishedWithDropForLoadBalancing" json:"num_calls_finished_with_drop_for_load_balancing,omitempty"` - // The total number of RPCs that failed to reach a server except dropped RPCs. - NumCallsFinishedWithClientFailedToSend int64 `protobuf:"varint,6,opt,name=num_calls_finished_with_client_failed_to_send,json=numCallsFinishedWithClientFailedToSend" json:"num_calls_finished_with_client_failed_to_send,omitempty"` - // The total number of RPCs that finished and are known to have been received - // by a server. - NumCallsFinishedKnownReceived int64 `protobuf:"varint,7,opt,name=num_calls_finished_known_received,json=numCallsFinishedKnownReceived" json:"num_calls_finished_known_received,omitempty"` -} - -func (m *ClientStats) Reset() { *m = ClientStats{} } -func (m *ClientStats) String() string { return proto.CompactTextString(m) } -func (*ClientStats) ProtoMessage() {} -func (*ClientStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } - -func (m *ClientStats) GetTimestamp() *Timestamp { - if m != nil { - return m.Timestamp - } - return nil -} - -func (m *ClientStats) GetNumCallsStarted() int64 { - if m != nil { - return m.NumCallsStarted - } - return 0 -} - -func (m *ClientStats) GetNumCallsFinished() int64 { - if m != nil { - return m.NumCallsFinished - } - return 0 -} - -func (m *ClientStats) GetNumCallsFinishedWithDropForRateLimiting() int64 { - if m != nil { - return m.NumCallsFinishedWithDropForRateLimiting - } - return 0 -} - -func (m *ClientStats) GetNumCallsFinishedWithDropForLoadBalancing() int64 { - if m != nil { - return m.NumCallsFinishedWithDropForLoadBalancing - } - return 0 -} - -func (m *ClientStats) GetNumCallsFinishedWithClientFailedToSend() int64 { - if m != nil { - return m.NumCallsFinishedWithClientFailedToSend - } - return 0 -} - -func (m *ClientStats) GetNumCallsFinishedKnownReceived() int64 { - if m != nil { - return m.NumCallsFinishedKnownReceived - } - return 0 -} - -type LoadBalanceResponse struct { - // Types that are valid to be assigned to LoadBalanceResponseType: - // *LoadBalanceResponse_InitialResponse - // *LoadBalanceResponse_ServerList - LoadBalanceResponseType isLoadBalanceResponse_LoadBalanceResponseType `protobuf_oneof:"load_balance_response_type"` -} - -func (m *LoadBalanceResponse) Reset() { *m = LoadBalanceResponse{} } -func (m *LoadBalanceResponse) String() string { return proto.CompactTextString(m) } -func (*LoadBalanceResponse) ProtoMessage() {} -func (*LoadBalanceResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } - -type isLoadBalanceResponse_LoadBalanceResponseType interface { - isLoadBalanceResponse_LoadBalanceResponseType() -} - -type LoadBalanceResponse_InitialResponse struct { - InitialResponse *InitialLoadBalanceResponse `protobuf:"bytes,1,opt,name=initial_response,json=initialResponse,oneof"` -} -type LoadBalanceResponse_ServerList struct { - ServerList *ServerList `protobuf:"bytes,2,opt,name=server_list,json=serverList,oneof"` -} - -func (*LoadBalanceResponse_InitialResponse) isLoadBalanceResponse_LoadBalanceResponseType() {} -func (*LoadBalanceResponse_ServerList) isLoadBalanceResponse_LoadBalanceResponseType() {} - -func (m *LoadBalanceResponse) GetLoadBalanceResponseType() isLoadBalanceResponse_LoadBalanceResponseType { - if m != nil { - return m.LoadBalanceResponseType - } - return nil -} - -func (m *LoadBalanceResponse) GetInitialResponse() *InitialLoadBalanceResponse { - if x, ok := m.GetLoadBalanceResponseType().(*LoadBalanceResponse_InitialResponse); ok { - return x.InitialResponse - } - return nil -} - -func (m *LoadBalanceResponse) GetServerList() *ServerList { - if x, ok := m.GetLoadBalanceResponseType().(*LoadBalanceResponse_ServerList); ok { - return x.ServerList - } - return nil -} - -// XXX_OneofFuncs is for the internal use of the proto package. -func (*LoadBalanceResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { - return _LoadBalanceResponse_OneofMarshaler, _LoadBalanceResponse_OneofUnmarshaler, _LoadBalanceResponse_OneofSizer, []interface{}{ - (*LoadBalanceResponse_InitialResponse)(nil), - (*LoadBalanceResponse_ServerList)(nil), - } -} - -func _LoadBalanceResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { - m := msg.(*LoadBalanceResponse) - // load_balance_response_type - switch x := m.LoadBalanceResponseType.(type) { - case *LoadBalanceResponse_InitialResponse: - b.EncodeVarint(1<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.InitialResponse); err != nil { - return err - } - case *LoadBalanceResponse_ServerList: - b.EncodeVarint(2<<3 | proto.WireBytes) - if err := b.EncodeMessage(x.ServerList); err != nil { - return err - } - case nil: - default: - return fmt.Errorf("LoadBalanceResponse.LoadBalanceResponseType has unexpected type %T", x) - } - return nil -} - -func _LoadBalanceResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { - m := msg.(*LoadBalanceResponse) - switch tag { - case 1: // load_balance_response_type.initial_response - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(InitialLoadBalanceResponse) - err := b.DecodeMessage(msg) - m.LoadBalanceResponseType = &LoadBalanceResponse_InitialResponse{msg} - return true, err - case 2: // load_balance_response_type.server_list - if wire != proto.WireBytes { - return true, proto.ErrInternalBadWireType - } - msg := new(ServerList) - err := b.DecodeMessage(msg) - m.LoadBalanceResponseType = &LoadBalanceResponse_ServerList{msg} - return true, err - default: - return false, nil - } -} - -func _LoadBalanceResponse_OneofSizer(msg proto.Message) (n int) { - m := msg.(*LoadBalanceResponse) - // load_balance_response_type - switch x := m.LoadBalanceResponseType.(type) { - case *LoadBalanceResponse_InitialResponse: - s := proto.Size(x.InitialResponse) - n += proto.SizeVarint(1<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case *LoadBalanceResponse_ServerList: - s := proto.Size(x.ServerList) - n += proto.SizeVarint(2<<3 | proto.WireBytes) - n += proto.SizeVarint(uint64(s)) - n += s - case nil: - default: - panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) - } - return n -} - -type InitialLoadBalanceResponse struct { - // This is an application layer redirect that indicates the client should use - // the specified server for load balancing. When this field is non-empty in - // the response, the client should open a separate connection to the - // load_balancer_delegate and call the BalanceLoad method. Its length should - // be less than 64 bytes. - LoadBalancerDelegate string `protobuf:"bytes,1,opt,name=load_balancer_delegate,json=loadBalancerDelegate" json:"load_balancer_delegate,omitempty"` - // This interval defines how often the client should send the client stats - // to the load balancer. Stats should only be reported when the duration is - // positive. - ClientStatsReportInterval *Duration `protobuf:"bytes,2,opt,name=client_stats_report_interval,json=clientStatsReportInterval" json:"client_stats_report_interval,omitempty"` -} - -func (m *InitialLoadBalanceResponse) Reset() { *m = InitialLoadBalanceResponse{} } -func (m *InitialLoadBalanceResponse) String() string { return proto.CompactTextString(m) } -func (*InitialLoadBalanceResponse) ProtoMessage() {} -func (*InitialLoadBalanceResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } - -func (m *InitialLoadBalanceResponse) GetLoadBalancerDelegate() string { - if m != nil { - return m.LoadBalancerDelegate - } - return "" -} - -func (m *InitialLoadBalanceResponse) GetClientStatsReportInterval() *Duration { - if m != nil { - return m.ClientStatsReportInterval - } - return nil -} - -type ServerList struct { - // Contains a list of servers selected by the load balancer. The list will - // be updated when server resolutions change or as needed to balance load - // across more servers. The client should consume the server list in order - // unless instructed otherwise via the client_config. - Servers []*Server `protobuf:"bytes,1,rep,name=servers" json:"servers,omitempty"` -} - -func (m *ServerList) Reset() { *m = ServerList{} } -func (m *ServerList) String() string { return proto.CompactTextString(m) } -func (*ServerList) ProtoMessage() {} -func (*ServerList) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } - -func (m *ServerList) GetServers() []*Server { - if m != nil { - return m.Servers - } - return nil -} - -// Contains server information. When none of the [drop_for_*] fields are true, -// use the other fields. When drop_for_rate_limiting is true, ignore all other -// fields. Use drop_for_load_balancing only when it is true and -// drop_for_rate_limiting is false. -type Server struct { - // A resolved address for the server, serialized in network-byte-order. It may - // either be an IPv4 or IPv6 address. - IpAddress []byte `protobuf:"bytes,1,opt,name=ip_address,json=ipAddress,proto3" json:"ip_address,omitempty"` - // A resolved port number for the server. - Port int32 `protobuf:"varint,2,opt,name=port" json:"port,omitempty"` - // An opaque but printable token given to the frontend for each pick. All - // frontend requests for that pick must include the token in its initial - // metadata. The token is used by the backend to verify the request and to - // allow the backend to report load to the gRPC LB system. - // - // Its length is variable but less than 50 bytes. - LoadBalanceToken string `protobuf:"bytes,3,opt,name=load_balance_token,json=loadBalanceToken" json:"load_balance_token,omitempty"` - // Indicates whether this particular request should be dropped by the client - // for rate limiting. - DropForRateLimiting bool `protobuf:"varint,4,opt,name=drop_for_rate_limiting,json=dropForRateLimiting" json:"drop_for_rate_limiting,omitempty"` - // Indicates whether this particular request should be dropped by the client - // for load balancing. - DropForLoadBalancing bool `protobuf:"varint,5,opt,name=drop_for_load_balancing,json=dropForLoadBalancing" json:"drop_for_load_balancing,omitempty"` -} - -func (m *Server) Reset() { *m = Server{} } -func (m *Server) String() string { return proto.CompactTextString(m) } -func (*Server) ProtoMessage() {} -func (*Server) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } - -func (m *Server) GetIpAddress() []byte { - if m != nil { - return m.IpAddress - } - return nil -} - -func (m *Server) GetPort() int32 { - if m != nil { - return m.Port - } - return 0 -} - -func (m *Server) GetLoadBalanceToken() string { - if m != nil { - return m.LoadBalanceToken - } - return "" -} - -func (m *Server) GetDropForRateLimiting() bool { - if m != nil { - return m.DropForRateLimiting - } - return false -} - -func (m *Server) GetDropForLoadBalancing() bool { - if m != nil { - return m.DropForLoadBalancing - } - return false -} - -func init() { - proto.RegisterType((*Duration)(nil), "grpc.lb.v1.Duration") - proto.RegisterType((*Timestamp)(nil), "grpc.lb.v1.Timestamp") - proto.RegisterType((*LoadBalanceRequest)(nil), "grpc.lb.v1.LoadBalanceRequest") - proto.RegisterType((*InitialLoadBalanceRequest)(nil), "grpc.lb.v1.InitialLoadBalanceRequest") - proto.RegisterType((*ClientStats)(nil), "grpc.lb.v1.ClientStats") - proto.RegisterType((*LoadBalanceResponse)(nil), "grpc.lb.v1.LoadBalanceResponse") - proto.RegisterType((*InitialLoadBalanceResponse)(nil), "grpc.lb.v1.InitialLoadBalanceResponse") - proto.RegisterType((*ServerList)(nil), "grpc.lb.v1.ServerList") - proto.RegisterType((*Server)(nil), "grpc.lb.v1.Server") -} - -func init() { proto.RegisterFile("grpc_lb_v1/messages/messages.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 709 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0xdd, 0x4e, 0x1b, 0x3b, - 0x10, 0x26, 0x27, 0x01, 0x92, 0x09, 0x3a, 0xe4, 0x98, 0x1c, 0x08, 0x14, 0x24, 0xba, 0x52, 0x69, - 0x54, 0xd1, 0x20, 0xa0, 0xbd, 0xe8, 0xcf, 0x45, 0x1b, 0x10, 0x0a, 0x2d, 0x17, 0x95, 0x43, 0x55, - 0xa9, 0x52, 0x65, 0x39, 0xd9, 0x21, 0x58, 0x6c, 0xec, 0xad, 0xed, 0x04, 0xf5, 0x11, 0xfa, 0x28, - 0x7d, 0x8c, 0xaa, 0xcf, 0xd0, 0xf7, 0xa9, 0xd6, 0xbb, 0x9b, 0x5d, 0x20, 0x80, 0x7a, 0x67, 0x8f, - 0xbf, 0xf9, 0xbe, 0xf1, 0xac, 0xbf, 0x59, 0xf0, 0x06, 0x3a, 0xec, 0xb3, 0xa0, 0xc7, 0xc6, 0xbb, - 0x3b, 0x43, 0x34, 0x86, 0x0f, 0xd0, 0x4c, 0x16, 0xad, 0x50, 0x2b, 0xab, 0x08, 0x44, 0x98, 0x56, - 0xd0, 0x6b, 0x8d, 0x77, 0xbd, 0x97, 0x50, 0x3e, 0x1c, 0x69, 0x6e, 0x85, 0x92, 0xa4, 0x01, 0xf3, - 0x06, 0xfb, 0x4a, 0xfa, 0xa6, 0x51, 0xd8, 0x2c, 0x34, 0x8b, 0x34, 0xdd, 0x92, 0x3a, 0xcc, 0x4a, - 0x2e, 0x95, 0x69, 0xfc, 0xb3, 0x59, 0x68, 0xce, 0xd2, 0x78, 0xe3, 0xbd, 0x82, 0xca, 0xa9, 0x18, - 0xa2, 0xb1, 0x7c, 0x18, 0xfe, 0x75, 0xf2, 0xcf, 0x02, 0x90, 0x13, 0xc5, 0xfd, 0x36, 0x0f, 0xb8, - 0xec, 0x23, 0xc5, 0xaf, 0x23, 0x34, 0x96, 0x7c, 0x80, 0x45, 0x21, 0x85, 0x15, 0x3c, 0x60, 0x3a, - 0x0e, 0x39, 0xba, 0xea, 0xde, 0xa3, 0x56, 0x56, 0x75, 0xeb, 0x38, 0x86, 0xdc, 0xcc, 0xef, 0xcc, - 0xd0, 0x7f, 0x93, 0xfc, 0x94, 0xf1, 0x35, 0x2c, 0xf4, 0x03, 0x81, 0xd2, 0x32, 0x63, 0xb9, 0x8d, - 0xab, 0xa8, 0xee, 0xad, 0xe4, 0xe9, 0x0e, 0xdc, 0x79, 0x37, 0x3a, 0xee, 0xcc, 0xd0, 0x6a, 0x3f, - 0xdb, 0xb6, 0x1f, 0xc0, 0x6a, 0xa0, 0xb8, 0xcf, 0x7a, 0xb1, 0x4c, 0x5a, 0x14, 0xb3, 0xdf, 0x42, - 0xf4, 0x76, 0x60, 0xf5, 0xd6, 0x4a, 0x08, 0x81, 0x92, 0xe4, 0x43, 0x74, 0xe5, 0x57, 0xa8, 0x5b, - 0x7b, 0xdf, 0x4b, 0x50, 0xcd, 0x89, 0x91, 0x7d, 0xa8, 0xd8, 0xb4, 0x83, 0xc9, 0x3d, 0xff, 0xcf, - 0x17, 0x36, 0x69, 0x2f, 0xcd, 0x70, 0xe4, 0x09, 0xfc, 0x27, 0x47, 0x43, 0xd6, 0xe7, 0x41, 0x60, - 0xa2, 0x3b, 0x69, 0x8b, 0xbe, 0xbb, 0x55, 0x91, 0x2e, 0xca, 0xd1, 0xf0, 0x20, 0x8a, 0x77, 0xe3, - 0x30, 0xd9, 0x06, 0x92, 0x61, 0xcf, 0x84, 0x14, 0xe6, 0x1c, 0xfd, 0x46, 0xd1, 0x81, 0x6b, 0x29, - 0xf8, 0x28, 0x89, 0x13, 0x06, 0xad, 0x9b, 0x68, 0x76, 0x29, 0xec, 0x39, 0xf3, 0xb5, 0x0a, 0xd9, - 0x99, 0xd2, 0x4c, 0x73, 0x8b, 0x2c, 0x10, 0x43, 0x61, 0x85, 0x1c, 0x34, 0x4a, 0x8e, 0xe9, 0xf1, - 0x75, 0xa6, 0x4f, 0xc2, 0x9e, 0x1f, 0x6a, 0x15, 0x1e, 0x29, 0x4d, 0xb9, 0xc5, 0x93, 0x04, 0x4e, - 0x38, 0xec, 0xdc, 0x2b, 0x90, 0x6b, 0x77, 0xa4, 0x30, 0xeb, 0x14, 0x9a, 0x77, 0x28, 0x64, 0xbd, - 0x8f, 0x24, 0xbe, 0xc0, 0xd3, 0xdb, 0x24, 0x92, 0x67, 0x70, 0xc6, 0x45, 0x80, 0x3e, 0xb3, 0x8a, - 0x19, 0x94, 0x7e, 0x63, 0xce, 0x09, 0x6c, 0x4d, 0x13, 0x88, 0x3f, 0xd5, 0x91, 0xc3, 0x9f, 0xaa, - 0x2e, 0x4a, 0x9f, 0x74, 0xe0, 0xe1, 0x14, 0xfa, 0x0b, 0xa9, 0x2e, 0x25, 0xd3, 0xd8, 0x47, 0x31, - 0x46, 0xbf, 0x31, 0xef, 0x28, 0x37, 0xae, 0x53, 0xbe, 0x8f, 0x50, 0x34, 0x01, 0x79, 0xbf, 0x0a, - 0xb0, 0x74, 0xe5, 0xd9, 0x98, 0x50, 0x49, 0x83, 0xa4, 0x0b, 0xb5, 0xcc, 0x01, 0x71, 0x2c, 0x79, - 0x1a, 0x5b, 0xf7, 0x59, 0x20, 0x46, 0x77, 0x66, 0xe8, 0xe2, 0xc4, 0x03, 0x09, 0xe9, 0x0b, 0xa8, - 0x1a, 0xd4, 0x63, 0xd4, 0x2c, 0x10, 0xc6, 0x26, 0x1e, 0x58, 0xce, 0xf3, 0x75, 0xdd, 0xf1, 0x89, - 0x70, 0x1e, 0x02, 0x33, 0xd9, 0xb5, 0xd7, 0x61, 0xed, 0x9a, 0x03, 0x62, 0xce, 0xd8, 0x02, 0x3f, - 0x0a, 0xb0, 0x76, 0x7b, 0x29, 0xe4, 0x19, 0x2c, 0xe7, 0x93, 0x35, 0xf3, 0x31, 0xc0, 0x01, 0xb7, - 0xa9, 0x2d, 0xea, 0x41, 0x96, 0xa4, 0x0f, 0x93, 0x33, 0xf2, 0x11, 0xd6, 0xf3, 0x96, 0x65, 0x1a, - 0x43, 0xa5, 0x2d, 0x13, 0xd2, 0xa2, 0x1e, 0xf3, 0x20, 0x29, 0xbf, 0x9e, 0x2f, 0x3f, 0x1d, 0x62, - 0x74, 0x35, 0xe7, 0x5e, 0xea, 0xf2, 0x8e, 0x93, 0x34, 0xef, 0x0d, 0x40, 0x76, 0x4b, 0xb2, 0x1d, - 0x0d, 0xac, 0x68, 0x17, 0x0d, 0xac, 0x62, 0xb3, 0xba, 0x47, 0x6e, 0xb6, 0x83, 0xa6, 0x90, 0x77, - 0xa5, 0x72, 0xb1, 0x56, 0xf2, 0x7e, 0x17, 0x60, 0x2e, 0x3e, 0x21, 0x1b, 0x00, 0x22, 0x64, 0xdc, - 0xf7, 0x35, 0x9a, 0x78, 0xe4, 0x2d, 0xd0, 0x8a, 0x08, 0xdf, 0xc6, 0x81, 0xc8, 0xfd, 0x91, 0x76, - 0x32, 0xf3, 0xdc, 0x3a, 0x32, 0xe3, 0x95, 0x4e, 0x5a, 0x75, 0x81, 0xd2, 0x99, 0xb1, 0x42, 0x6b, - 0xb9, 0x46, 0x9c, 0x46, 0x71, 0xb2, 0x0f, 0xcb, 0x77, 0x98, 0xae, 0x4c, 0x97, 0xfc, 0x29, 0x06, - 0x7b, 0x0e, 0x2b, 0x77, 0x19, 0xa9, 0x4c, 0xeb, 0xfe, 0x14, 0xd3, 0xb4, 0xe1, 0x73, 0x39, 0xfd, - 0x47, 0xf4, 0xe6, 0xdc, 0x4f, 0x62, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x36, 0x86, - 0xa6, 0x4a, 0x06, 0x00, 0x00, -} diff --git a/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.proto b/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.proto deleted file mode 100644 index 42d99c109f..0000000000 --- a/vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.proto +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright 2016 gRPC authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package grpc.lb.v1; -option go_package = "google.golang.org/grpc/grpclb/grpc_lb_v1/messages"; - -message Duration { - // Signed seconds of the span of time. Must be from -315,576,000,000 - // to +315,576,000,000 inclusive. - int64 seconds = 1; - - // Signed fractions of a second at nanosecond resolution of the span - // of time. Durations less than one second are represented with a 0 - // `seconds` field and a positive or negative `nanos` field. For durations - // of one second or more, a non-zero value for the `nanos` field must be - // of the same sign as the `seconds` field. Must be from -999,999,999 - // to +999,999,999 inclusive. - int32 nanos = 2; -} - -message Timestamp { - // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - // 9999-12-31T23:59:59Z inclusive. - int64 seconds = 1; - - // Non-negative fractions of a second at nanosecond resolution. Negative - // second values with fractions must still have non-negative nanos values - // that count forward in time. Must be from 0 to 999,999,999 - // inclusive. - int32 nanos = 2; -} - -message LoadBalanceRequest { - oneof load_balance_request_type { - // This message should be sent on the first request to the load balancer. - InitialLoadBalanceRequest initial_request = 1; - - // The client stats should be periodically reported to the load balancer - // based on the duration defined in the InitialLoadBalanceResponse. - ClientStats client_stats = 2; - } -} - -message InitialLoadBalanceRequest { - // Name of load balanced service (IE, balancer.service.com) - // length should be less than 256 bytes. - string name = 1; -} - -// Contains client level statistics that are useful to load balancing. Each -// count except the timestamp should be reset to zero after reporting the stats. -message ClientStats { - // The timestamp of generating the report. - Timestamp timestamp = 1; - - // The total number of RPCs that started. - int64 num_calls_started = 2; - - // The total number of RPCs that finished. - int64 num_calls_finished = 3; - - // The total number of RPCs that were dropped by the client because of rate - // limiting. - int64 num_calls_finished_with_drop_for_rate_limiting = 4; - - // The total number of RPCs that were dropped by the client because of load - // balancing. - int64 num_calls_finished_with_drop_for_load_balancing = 5; - - // The total number of RPCs that failed to reach a server except dropped RPCs. - int64 num_calls_finished_with_client_failed_to_send = 6; - - // The total number of RPCs that finished and are known to have been received - // by a server. - int64 num_calls_finished_known_received = 7; -} - -message LoadBalanceResponse { - oneof load_balance_response_type { - // This message should be sent on the first response to the client. - InitialLoadBalanceResponse initial_response = 1; - - // Contains the list of servers selected by the load balancer. The client - // should send requests to these servers in the specified order. - ServerList server_list = 2; - } -} - -message InitialLoadBalanceResponse { - // This is an application layer redirect that indicates the client should use - // the specified server for load balancing. When this field is non-empty in - // the response, the client should open a separate connection to the - // load_balancer_delegate and call the BalanceLoad method. Its length should - // be less than 64 bytes. - string load_balancer_delegate = 1; - - // This interval defines how often the client should send the client stats - // to the load balancer. Stats should only be reported when the duration is - // positive. - Duration client_stats_report_interval = 2; -} - -message ServerList { - // Contains a list of servers selected by the load balancer. The list will - // be updated when server resolutions change or as needed to balance load - // across more servers. The client should consume the server list in order - // unless instructed otherwise via the client_config. - repeated Server servers = 1; - - // Was google.protobuf.Duration expiration_interval. - reserved 3; -} - -// Contains server information. When none of the [drop_for_*] fields are true, -// use the other fields. When drop_for_rate_limiting is true, ignore all other -// fields. Use drop_for_load_balancing only when it is true and -// drop_for_rate_limiting is false. -message Server { - // A resolved address for the server, serialized in network-byte-order. It may - // either be an IPv4 or IPv6 address. - bytes ip_address = 1; - - // A resolved port number for the server. - int32 port = 2; - - // An opaque but printable token given to the frontend for each pick. All - // frontend requests for that pick must include the token in its initial - // metadata. The token is used by the backend to verify the request and to - // allow the backend to report load to the gRPC LB system. - // - // Its length is variable but less than 50 bytes. - string load_balance_token = 3; - - // Indicates whether this particular request should be dropped by the client - // for rate limiting. - bool drop_for_rate_limiting = 4; - - // Indicates whether this particular request should be dropped by the client - // for load balancing. - bool drop_for_load_balancing = 5; -} diff --git a/vendor/google.golang.org/grpc/grpclb_picker.go b/vendor/google.golang.org/grpc/grpclb_picker.go deleted file mode 100644 index 872c7ccea0..0000000000 --- a/vendor/google.golang.org/grpc/grpclb_picker.go +++ /dev/null @@ -1,159 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "sync" - "sync/atomic" - - "golang.org/x/net/context" - "google.golang.org/grpc/balancer" - "google.golang.org/grpc/codes" - lbpb "google.golang.org/grpc/grpclb/grpc_lb_v1/messages" - "google.golang.org/grpc/status" -) - -type rpcStats struct { - NumCallsStarted int64 - NumCallsFinished int64 - NumCallsFinishedWithDropForRateLimiting int64 - NumCallsFinishedWithDropForLoadBalancing int64 - NumCallsFinishedWithClientFailedToSend int64 - NumCallsFinishedKnownReceived int64 -} - -// toClientStats converts rpcStats to lbpb.ClientStats, and clears rpcStats. -func (s *rpcStats) toClientStats() *lbpb.ClientStats { - stats := &lbpb.ClientStats{ - NumCallsStarted: atomic.SwapInt64(&s.NumCallsStarted, 0), - NumCallsFinished: atomic.SwapInt64(&s.NumCallsFinished, 0), - NumCallsFinishedWithDropForRateLimiting: atomic.SwapInt64(&s.NumCallsFinishedWithDropForRateLimiting, 0), - NumCallsFinishedWithDropForLoadBalancing: atomic.SwapInt64(&s.NumCallsFinishedWithDropForLoadBalancing, 0), - NumCallsFinishedWithClientFailedToSend: atomic.SwapInt64(&s.NumCallsFinishedWithClientFailedToSend, 0), - NumCallsFinishedKnownReceived: atomic.SwapInt64(&s.NumCallsFinishedKnownReceived, 0), - } - return stats -} - -func (s *rpcStats) dropForRateLimiting() { - atomic.AddInt64(&s.NumCallsStarted, 1) - atomic.AddInt64(&s.NumCallsFinishedWithDropForRateLimiting, 1) - atomic.AddInt64(&s.NumCallsFinished, 1) -} - -func (s *rpcStats) dropForLoadBalancing() { - atomic.AddInt64(&s.NumCallsStarted, 1) - atomic.AddInt64(&s.NumCallsFinishedWithDropForLoadBalancing, 1) - atomic.AddInt64(&s.NumCallsFinished, 1) -} - -func (s *rpcStats) failedToSend() { - atomic.AddInt64(&s.NumCallsStarted, 1) - atomic.AddInt64(&s.NumCallsFinishedWithClientFailedToSend, 1) - atomic.AddInt64(&s.NumCallsFinished, 1) -} - -func (s *rpcStats) knownReceived() { - atomic.AddInt64(&s.NumCallsStarted, 1) - atomic.AddInt64(&s.NumCallsFinishedKnownReceived, 1) - atomic.AddInt64(&s.NumCallsFinished, 1) -} - -type errPicker struct { - // Pick always returns this err. - err error -} - -func (p *errPicker) Pick(ctx context.Context, opts balancer.PickOptions) (balancer.SubConn, func(balancer.DoneInfo), error) { - return nil, nil, p.err -} - -// rrPicker does roundrobin on subConns. It's typically used when there's no -// response from remote balancer, and grpclb falls back to the resolved -// backends. -// -// It guaranteed that len(subConns) > 0. -type rrPicker struct { - mu sync.Mutex - subConns []balancer.SubConn // The subConns that were READY when taking the snapshot. - subConnsNext int -} - -func (p *rrPicker) Pick(ctx context.Context, opts balancer.PickOptions) (balancer.SubConn, func(balancer.DoneInfo), error) { - p.mu.Lock() - defer p.mu.Unlock() - sc := p.subConns[p.subConnsNext] - p.subConnsNext = (p.subConnsNext + 1) % len(p.subConns) - return sc, nil, nil -} - -// lbPicker does two layers of picks: -// -// First layer: roundrobin on all servers in serverList, including drops and backends. -// - If it picks a drop, the RPC will fail as being dropped. -// - If it picks a backend, do a second layer pick to pick the real backend. -// -// Second layer: roundrobin on all READY backends. -// -// It's guaranteed that len(serverList) > 0. -type lbPicker struct { - mu sync.Mutex - serverList []*lbpb.Server - serverListNext int - subConns []balancer.SubConn // The subConns that were READY when taking the snapshot. - subConnsNext int - - stats *rpcStats -} - -func (p *lbPicker) Pick(ctx context.Context, opts balancer.PickOptions) (balancer.SubConn, func(balancer.DoneInfo), error) { - p.mu.Lock() - defer p.mu.Unlock() - - // Layer one roundrobin on serverList. - s := p.serverList[p.serverListNext] - p.serverListNext = (p.serverListNext + 1) % len(p.serverList) - - // If it's a drop, return an error and fail the RPC. - if s.DropForRateLimiting { - p.stats.dropForRateLimiting() - return nil, nil, status.Errorf(codes.Unavailable, "request dropped by grpclb") - } - if s.DropForLoadBalancing { - p.stats.dropForLoadBalancing() - return nil, nil, status.Errorf(codes.Unavailable, "request dropped by grpclb") - } - - // If not a drop but there's no ready subConns. - if len(p.subConns) <= 0 { - return nil, nil, balancer.ErrNoSubConnAvailable - } - - // Return the next ready subConn in the list, also collect rpc stats. - sc := p.subConns[p.subConnsNext] - p.subConnsNext = (p.subConnsNext + 1) % len(p.subConns) - done := func(info balancer.DoneInfo) { - if !info.BytesSent { - p.stats.failedToSend() - } else if info.BytesReceived { - p.stats.knownReceived() - } - } - return sc, done, nil -} diff --git a/vendor/google.golang.org/grpc/grpclb_remote_balancer.go b/vendor/google.golang.org/grpc/grpclb_remote_balancer.go deleted file mode 100644 index 1b580df26d..0000000000 --- a/vendor/google.golang.org/grpc/grpclb_remote_balancer.go +++ /dev/null @@ -1,254 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "fmt" - "net" - "reflect" - "time" - - "golang.org/x/net/context" - "google.golang.org/grpc/balancer" - "google.golang.org/grpc/connectivity" - lbpb "google.golang.org/grpc/grpclb/grpc_lb_v1/messages" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/resolver" -) - -// processServerList updates balaner's internal state, create/remove SubConns -// and regenerates picker using the received serverList. -func (lb *lbBalancer) processServerList(l *lbpb.ServerList) { - grpclog.Infof("lbBalancer: processing server list: %+v", l) - lb.mu.Lock() - defer lb.mu.Unlock() - - // Set serverListReceived to true so fallback will not take effect if it has - // not hit timeout. - lb.serverListReceived = true - - // If the new server list == old server list, do nothing. - if reflect.DeepEqual(lb.fullServerList, l.Servers) { - grpclog.Infof("lbBalancer: new serverlist same as the previous one, ignoring") - return - } - lb.fullServerList = l.Servers - - var backendAddrs []resolver.Address - for _, s := range l.Servers { - if s.DropForLoadBalancing || s.DropForRateLimiting { - continue - } - - md := metadata.Pairs(lbTokeyKey, s.LoadBalanceToken) - ip := net.IP(s.IpAddress) - ipStr := ip.String() - if ip.To4() == nil { - // Add square brackets to ipv6 addresses, otherwise net.Dial() and - // net.SplitHostPort() will return too many colons error. - ipStr = fmt.Sprintf("[%s]", ipStr) - } - addr := resolver.Address{ - Addr: fmt.Sprintf("%s:%d", ipStr, s.Port), - Metadata: &md, - } - - backendAddrs = append(backendAddrs, addr) - } - - // Call refreshSubConns to create/remove SubConns. - backendsUpdated := lb.refreshSubConns(backendAddrs) - // If no backend was updated, no SubConn will be newed/removed. But since - // the full serverList was different, there might be updates in drops or - // pick weights(different number of duplicates). We need to update picker - // with the fulllist. - if !backendsUpdated { - lb.regeneratePicker() - lb.cc.UpdateBalancerState(lb.state, lb.picker) - } -} - -// refreshSubConns creates/removes SubConns with backendAddrs. It returns a bool -// indicating whether the backendAddrs are different from the cached -// backendAddrs (whether any SubConn was newed/removed). -// Caller must hold lb.mu. -func (lb *lbBalancer) refreshSubConns(backendAddrs []resolver.Address) bool { - lb.backendAddrs = nil - var backendsUpdated bool - // addrsSet is the set converted from backendAddrs, it's used to quick - // lookup for an address. - addrsSet := make(map[resolver.Address]struct{}) - // Create new SubConns. - for _, addr := range backendAddrs { - addrWithoutMD := addr - addrWithoutMD.Metadata = nil - addrsSet[addrWithoutMD] = struct{}{} - lb.backendAddrs = append(lb.backendAddrs, addrWithoutMD) - - if _, ok := lb.subConns[addrWithoutMD]; !ok { - backendsUpdated = true - - // Use addrWithMD to create the SubConn. - sc, err := lb.cc.NewSubConn([]resolver.Address{addr}, balancer.NewSubConnOptions{}) - if err != nil { - grpclog.Warningf("roundrobinBalancer: failed to create new SubConn: %v", err) - continue - } - lb.subConns[addrWithoutMD] = sc // Use the addr without MD as key for the map. - lb.scStates[sc] = connectivity.Idle - sc.Connect() - } - } - - for a, sc := range lb.subConns { - // a was removed by resolver. - if _, ok := addrsSet[a]; !ok { - backendsUpdated = true - - lb.cc.RemoveSubConn(sc) - delete(lb.subConns, a) - // Keep the state of this sc in b.scStates until sc's state becomes Shutdown. - // The entry will be deleted in HandleSubConnStateChange. - } - } - - return backendsUpdated -} - -func (lb *lbBalancer) readServerList(s *balanceLoadClientStream) error { - for { - reply, err := s.Recv() - if err != nil { - return fmt.Errorf("grpclb: failed to recv server list: %v", err) - } - if serverList := reply.GetServerList(); serverList != nil { - lb.processServerList(serverList) - } - } -} - -func (lb *lbBalancer) sendLoadReport(s *balanceLoadClientStream, interval time.Duration) { - ticker := time.NewTicker(interval) - defer ticker.Stop() - for { - select { - case <-ticker.C: - case <-s.Context().Done(): - return - } - stats := lb.clientStats.toClientStats() - t := time.Now() - stats.Timestamp = &lbpb.Timestamp{ - Seconds: t.Unix(), - Nanos: int32(t.Nanosecond()), - } - if err := s.Send(&lbpb.LoadBalanceRequest{ - LoadBalanceRequestType: &lbpb.LoadBalanceRequest_ClientStats{ - ClientStats: stats, - }, - }); err != nil { - return - } - } -} -func (lb *lbBalancer) callRemoteBalancer() error { - lbClient := &loadBalancerClient{cc: lb.ccRemoteLB} - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - stream, err := lbClient.BalanceLoad(ctx, FailFast(false)) - if err != nil { - return fmt.Errorf("grpclb: failed to perform RPC to the remote balancer %v", err) - } - - // grpclb handshake on the stream. - initReq := &lbpb.LoadBalanceRequest{ - LoadBalanceRequestType: &lbpb.LoadBalanceRequest_InitialRequest{ - InitialRequest: &lbpb.InitialLoadBalanceRequest{ - Name: lb.target, - }, - }, - } - if err := stream.Send(initReq); err != nil { - return fmt.Errorf("grpclb: failed to send init request: %v", err) - } - reply, err := stream.Recv() - if err != nil { - return fmt.Errorf("grpclb: failed to recv init response: %v", err) - } - initResp := reply.GetInitialResponse() - if initResp == nil { - return fmt.Errorf("grpclb: reply from remote balancer did not include initial response") - } - if initResp.LoadBalancerDelegate != "" { - return fmt.Errorf("grpclb: Delegation is not supported") - } - - go func() { - if d := convertDuration(initResp.ClientStatsReportInterval); d > 0 { - lb.sendLoadReport(stream, d) - } - }() - return lb.readServerList(stream) -} - -func (lb *lbBalancer) watchRemoteBalancer() { - for { - err := lb.callRemoteBalancer() - select { - case <-lb.doneCh: - return - default: - if err != nil { - grpclog.Error(err) - } - } - - } -} - -func (lb *lbBalancer) dialRemoteLB(remoteLBName string) { - var dopts []DialOption - if creds := lb.opt.DialCreds; creds != nil { - if err := creds.OverrideServerName(remoteLBName); err == nil { - dopts = append(dopts, WithTransportCredentials(creds)) - } else { - grpclog.Warningf("grpclb: failed to override the server name in the credentials: %v, using Insecure", err) - dopts = append(dopts, WithInsecure()) - } - } else { - dopts = append(dopts, WithInsecure()) - } - if lb.opt.Dialer != nil { - // WithDialer takes a different type of function, so we instead use a - // special DialOption here. - dopts = append(dopts, withContextDialer(lb.opt.Dialer)) - } - // Explicitly set pickfirst as the balancer. - dopts = append(dopts, WithBalancerName(PickFirstBalancerName)) - dopts = append(dopts, withResolverBuilder(lb.manualResolver)) - // Dial using manualResolver.Scheme, which is a random scheme generated - // when init grpclb. The target name is not important. - cc, err := Dial("grpclb:///grpclb.server", dopts...) - if err != nil { - grpclog.Fatalf("failed to dial: %v", err) - } - lb.ccRemoteLB = cc - go lb.watchRemoteBalancer() -} diff --git a/vendor/google.golang.org/grpc/grpclb_util.go b/vendor/google.golang.org/grpc/grpclb_util.go deleted file mode 100644 index 93ab2db323..0000000000 --- a/vendor/google.golang.org/grpc/grpclb_util.go +++ /dev/null @@ -1,90 +0,0 @@ -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import ( - "google.golang.org/grpc/balancer" - "google.golang.org/grpc/resolver" -) - -// The parent ClientConn should re-resolve when grpclb loses connection to the -// remote balancer. When the ClientConn inside grpclb gets a TransientFailure, -// it calls lbManualResolver.ResolveNow(), which calls parent ClientConn's -// ResolveNow, and eventually results in re-resolve happening in parent -// ClientConn's resolver (DNS for example). -// -// parent -// ClientConn -// +-----------------------------------------------------------------+ -// | parent +---------------------------------+ | -// | DNS ClientConn | grpclb | | -// | resolver balancerWrapper | | | -// | + + | grpclb grpclb | | -// | | | | ManualResolver ClientConn | | -// | | | | + + | | -// | | | | | | Transient | | -// | | | | | | Failure | | -// | | | | | <--------- | | | -// | | | <--------------- | ResolveNow | | | -// | | <--------- | ResolveNow | | | | | -// | | ResolveNow | | | | | | -// | | | | | | | | -// | + + | + + | | -// | +---------------------------------+ | -// +-----------------------------------------------------------------+ - -// lbManualResolver is used by the ClientConn inside grpclb. It's a manual -// resolver with a special ResolveNow() function. -// -// When ResolveNow() is called, it calls ResolveNow() on the parent ClientConn, -// so when grpclb client lose contact with remote balancers, the parent -// ClientConn's resolver will re-resolve. -type lbManualResolver struct { - scheme string - ccr resolver.ClientConn - - ccb balancer.ClientConn -} - -func (r *lbManualResolver) Build(_ resolver.Target, cc resolver.ClientConn, _ resolver.BuildOption) (resolver.Resolver, error) { - r.ccr = cc - return r, nil -} - -func (r *lbManualResolver) Scheme() string { - return r.scheme -} - -// ResolveNow calls resolveNow on the parent ClientConn. -func (r *lbManualResolver) ResolveNow(o resolver.ResolveNowOption) { - r.ccb.ResolveNow(o) -} - -// Close is a noop for Resolver. -func (*lbManualResolver) Close() {} - -// NewAddress calls cc.NewAddress. -func (r *lbManualResolver) NewAddress(addrs []resolver.Address) { - r.ccr.NewAddress(addrs) -} - -// NewServiceConfig calls cc.NewServiceConfig. -func (r *lbManualResolver) NewServiceConfig(sc string) { - r.ccr.NewServiceConfig(sc) -} diff --git a/vendor/google.golang.org/grpc/grpclog/grpclog.go b/vendor/google.golang.org/grpc/grpclog/grpclog.go index 16a7d88867..51bb9457cd 100644 --- a/vendor/google.golang.org/grpc/grpclog/grpclog.go +++ b/vendor/google.golang.org/grpc/grpclog/grpclog.go @@ -18,7 +18,7 @@ // Package grpclog defines logging for grpc. // -// All logs in transport package only go to verbose level 2. +// All logs in transport and grpclb packages only go to verbose level 2. // All logs in other packages in grpc are logged in spite of the verbosity level. // // In the default logger, @@ -105,18 +105,21 @@ func Fatalln(args ...interface{}) { } // Print prints to the logger. Arguments are handled in the manner of fmt.Print. +// // Deprecated: use Info. func Print(args ...interface{}) { logger.Info(args...) } // Printf prints to the logger. Arguments are handled in the manner of fmt.Printf. +// // Deprecated: use Infof. func Printf(format string, args ...interface{}) { logger.Infof(format, args...) } // Println prints to the logger. Arguments are handled in the manner of fmt.Println. +// // Deprecated: use Infoln. func Println(args ...interface{}) { logger.Infoln(args...) diff --git a/vendor/google.golang.org/grpc/grpclog/logger.go b/vendor/google.golang.org/grpc/grpclog/logger.go index d03b2397bf..097494f710 100644 --- a/vendor/google.golang.org/grpc/grpclog/logger.go +++ b/vendor/google.golang.org/grpc/grpclog/logger.go @@ -19,6 +19,7 @@ package grpclog // Logger mimics golang's standard Logger as an interface. +// // Deprecated: use LoggerV2. type Logger interface { Fatal(args ...interface{}) @@ -31,6 +32,7 @@ type Logger interface { // SetLogger sets the logger that is used in grpc. Call only from // init() functions. +// // Deprecated: use SetLoggerV2. func SetLogger(l Logger) { logger = &loggerWrapper{Logger: l} diff --git a/vendor/google.golang.org/grpc/health/client.go b/vendor/google.golang.org/grpc/health/client.go new file mode 100644 index 0000000000..b43746e616 --- /dev/null +++ b/vendor/google.golang.org/grpc/health/client.go @@ -0,0 +1,117 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package health + +import ( + "context" + "fmt" + "io" + "time" + + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/connectivity" + healthpb "google.golang.org/grpc/health/grpc_health_v1" + "google.golang.org/grpc/internal" + "google.golang.org/grpc/internal/backoff" + "google.golang.org/grpc/status" +) + +const maxDelay = 120 * time.Second + +var backoffStrategy = backoff.Exponential{MaxDelay: maxDelay} +var backoffFunc = func(ctx context.Context, retries int) bool { + d := backoffStrategy.Backoff(retries) + timer := time.NewTimer(d) + select { + case <-timer.C: + return true + case <-ctx.Done(): + timer.Stop() + return false + } +} + +func init() { + internal.HealthCheckFunc = clientHealthCheck +} + +const healthCheckMethod = "/grpc.health.v1.Health/Watch" + +// This function implements the protocol defined at: +// https://github.com/grpc/grpc/blob/master/doc/health-checking.md +func clientHealthCheck(ctx context.Context, newStream func(string) (interface{}, error), setConnectivityState func(connectivity.State), service string) error { + tryCnt := 0 + +retryConnection: + for { + // Backs off if the connection has failed in some way without receiving a message in the previous retry. + if tryCnt > 0 && !backoffFunc(ctx, tryCnt-1) { + return nil + } + tryCnt++ + + if ctx.Err() != nil { + return nil + } + setConnectivityState(connectivity.Connecting) + rawS, err := newStream(healthCheckMethod) + if err != nil { + continue retryConnection + } + + s, ok := rawS.(grpc.ClientStream) + // Ideally, this should never happen. But if it happens, the server is marked as healthy for LBing purposes. + if !ok { + setConnectivityState(connectivity.Ready) + return fmt.Errorf("newStream returned %v (type %T); want grpc.ClientStream", rawS, rawS) + } + + if err = s.SendMsg(&healthpb.HealthCheckRequest{Service: service}); err != nil && err != io.EOF { + // Stream should have been closed, so we can safely continue to create a new stream. + continue retryConnection + } + s.CloseSend() + + resp := new(healthpb.HealthCheckResponse) + for { + err = s.RecvMsg(resp) + + // Reports healthy for the LBing purposes if health check is not implemented in the server. + if status.Code(err) == codes.Unimplemented { + setConnectivityState(connectivity.Ready) + return err + } + + // Reports unhealthy if server's Watch method gives an error other than UNIMPLEMENTED. + if err != nil { + setConnectivityState(connectivity.TransientFailure) + continue retryConnection + } + + // As a message has been received, removes the need for backoff for the next retry by reseting the try count. + tryCnt = 0 + if resp.Status == healthpb.HealthCheckResponse_SERVING { + setConnectivityState(connectivity.Ready) + } else { + setConnectivityState(connectivity.TransientFailure) + } + } + } +} diff --git a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go b/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go index fdcbb9e0b7..c99e27ae5b 100644 --- a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go +++ b/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go @@ -1,25 +1,16 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// source: grpc_health_v1/health.proto +// source: grpc/health/v1/health.proto -/* -Package grpc_health_v1 is a generated protocol buffer package. - -It is generated from these files: - grpc_health_v1/health.proto - -It has these top-level messages: - HealthCheckRequest - HealthCheckResponse -*/ package grpc_health_v1 -import proto "github.com/golang/protobuf/proto" -import fmt "fmt" -import math "math" - import ( - context "golang.org/x/net/context" + context "context" + fmt "fmt" + proto "github.com/golang/protobuf/proto" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + math "math" ) // Reference imports to suppress errors if they are not otherwise used. @@ -31,42 +22,70 @@ var _ = math.Inf // is compatible with the proto package it is being compiled against. // A compilation error at this line likely means your copy of the // proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type HealthCheckResponse_ServingStatus int32 const ( - HealthCheckResponse_UNKNOWN HealthCheckResponse_ServingStatus = 0 - HealthCheckResponse_SERVING HealthCheckResponse_ServingStatus = 1 - HealthCheckResponse_NOT_SERVING HealthCheckResponse_ServingStatus = 2 + HealthCheckResponse_UNKNOWN HealthCheckResponse_ServingStatus = 0 + HealthCheckResponse_SERVING HealthCheckResponse_ServingStatus = 1 + HealthCheckResponse_NOT_SERVING HealthCheckResponse_ServingStatus = 2 + HealthCheckResponse_SERVICE_UNKNOWN HealthCheckResponse_ServingStatus = 3 ) var HealthCheckResponse_ServingStatus_name = map[int32]string{ 0: "UNKNOWN", 1: "SERVING", 2: "NOT_SERVING", + 3: "SERVICE_UNKNOWN", } + var HealthCheckResponse_ServingStatus_value = map[string]int32{ - "UNKNOWN": 0, - "SERVING": 1, - "NOT_SERVING": 2, + "UNKNOWN": 0, + "SERVING": 1, + "NOT_SERVING": 2, + "SERVICE_UNKNOWN": 3, } func (x HealthCheckResponse_ServingStatus) String() string { return proto.EnumName(HealthCheckResponse_ServingStatus_name, int32(x)) } + func (HealthCheckResponse_ServingStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor0, []int{1, 0} + return fileDescriptor_e265fd9d4e077217, []int{1, 0} } type HealthCheckRequest struct { - Service string `protobuf:"bytes,1,opt,name=service" json:"service,omitempty"` + Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *HealthCheckRequest) Reset() { *m = HealthCheckRequest{} } -func (m *HealthCheckRequest) String() string { return proto.CompactTextString(m) } -func (*HealthCheckRequest) ProtoMessage() {} -func (*HealthCheckRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } +func (m *HealthCheckRequest) Reset() { *m = HealthCheckRequest{} } +func (m *HealthCheckRequest) String() string { return proto.CompactTextString(m) } +func (*HealthCheckRequest) ProtoMessage() {} +func (*HealthCheckRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_e265fd9d4e077217, []int{0} +} + +func (m *HealthCheckRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_HealthCheckRequest.Unmarshal(m, b) +} +func (m *HealthCheckRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_HealthCheckRequest.Marshal(b, m, deterministic) +} +func (m *HealthCheckRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_HealthCheckRequest.Merge(m, src) +} +func (m *HealthCheckRequest) XXX_Size() int { + return xxx_messageInfo_HealthCheckRequest.Size(m) +} +func (m *HealthCheckRequest) XXX_DiscardUnknown() { + xxx_messageInfo_HealthCheckRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_HealthCheckRequest proto.InternalMessageInfo func (m *HealthCheckRequest) GetService() string { if m != nil { @@ -76,13 +95,36 @@ func (m *HealthCheckRequest) GetService() string { } type HealthCheckResponse struct { - Status HealthCheckResponse_ServingStatus `protobuf:"varint,1,opt,name=status,enum=grpc.health.v1.HealthCheckResponse_ServingStatus" json:"status,omitempty"` + Status HealthCheckResponse_ServingStatus `protobuf:"varint,1,opt,name=status,proto3,enum=grpc.health.v1.HealthCheckResponse_ServingStatus" json:"status,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (m *HealthCheckResponse) Reset() { *m = HealthCheckResponse{} } -func (m *HealthCheckResponse) String() string { return proto.CompactTextString(m) } -func (*HealthCheckResponse) ProtoMessage() {} -func (*HealthCheckResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } +func (m *HealthCheckResponse) Reset() { *m = HealthCheckResponse{} } +func (m *HealthCheckResponse) String() string { return proto.CompactTextString(m) } +func (*HealthCheckResponse) ProtoMessage() {} +func (*HealthCheckResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_e265fd9d4e077217, []int{1} +} + +func (m *HealthCheckResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_HealthCheckResponse.Unmarshal(m, b) +} +func (m *HealthCheckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_HealthCheckResponse.Marshal(b, m, deterministic) +} +func (m *HealthCheckResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_HealthCheckResponse.Merge(m, src) +} +func (m *HealthCheckResponse) XXX_Size() int { + return xxx_messageInfo_HealthCheckResponse.Size(m) +} +func (m *HealthCheckResponse) XXX_DiscardUnknown() { + xxx_messageInfo_HealthCheckResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_HealthCheckResponse proto.InternalMessageInfo func (m *HealthCheckResponse) GetStatus() HealthCheckResponse_ServingStatus { if m != nil { @@ -92,9 +134,34 @@ func (m *HealthCheckResponse) GetStatus() HealthCheckResponse_ServingStatus { } func init() { + proto.RegisterEnum("grpc.health.v1.HealthCheckResponse_ServingStatus", HealthCheckResponse_ServingStatus_name, HealthCheckResponse_ServingStatus_value) proto.RegisterType((*HealthCheckRequest)(nil), "grpc.health.v1.HealthCheckRequest") proto.RegisterType((*HealthCheckResponse)(nil), "grpc.health.v1.HealthCheckResponse") - proto.RegisterEnum("grpc.health.v1.HealthCheckResponse_ServingStatus", HealthCheckResponse_ServingStatus_name, HealthCheckResponse_ServingStatus_value) +} + +func init() { proto.RegisterFile("grpc/health/v1/health.proto", fileDescriptor_e265fd9d4e077217) } + +var fileDescriptor_e265fd9d4e077217 = []byte{ + // 297 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0x2f, 0x2a, 0x48, + 0xd6, 0xcf, 0x48, 0x4d, 0xcc, 0x29, 0xc9, 0xd0, 0x2f, 0x33, 0x84, 0xb2, 0xf4, 0x0a, 0x8a, 0xf2, + 0x4b, 0xf2, 0x85, 0xf8, 0x40, 0x92, 0x7a, 0x50, 0xa1, 0x32, 0x43, 0x25, 0x3d, 0x2e, 0x21, 0x0f, + 0x30, 0xc7, 0x39, 0x23, 0x35, 0x39, 0x3b, 0x28, 0xb5, 0xb0, 0x34, 0xb5, 0xb8, 0x44, 0x48, 0x82, + 0x8b, 0xbd, 0x38, 0xb5, 0xa8, 0x2c, 0x33, 0x39, 0x55, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x08, + 0xc6, 0x55, 0xda, 0xc8, 0xc8, 0x25, 0x8c, 0xa2, 0xa1, 0xb8, 0x20, 0x3f, 0xaf, 0x38, 0x55, 0xc8, + 0x93, 0x8b, 0xad, 0xb8, 0x24, 0xb1, 0xa4, 0xb4, 0x18, 0xac, 0x81, 0xcf, 0xc8, 0x50, 0x0f, 0xd5, + 0x22, 0x3d, 0x2c, 0x9a, 0xf4, 0x82, 0x41, 0x86, 0xe6, 0xa5, 0x07, 0x83, 0x35, 0x06, 0x41, 0x0d, + 0x50, 0xf2, 0xe7, 0xe2, 0x45, 0x91, 0x10, 0xe2, 0xe6, 0x62, 0x0f, 0xf5, 0xf3, 0xf6, 0xf3, 0x0f, + 0xf7, 0x13, 0x60, 0x00, 0x71, 0x82, 0x5d, 0x83, 0xc2, 0x3c, 0xfd, 0xdc, 0x05, 0x18, 0x85, 0xf8, + 0xb9, 0xb8, 0xfd, 0xfc, 0x43, 0xe2, 0x61, 0x02, 0x4c, 0x42, 0xc2, 0x5c, 0xfc, 0x60, 0x8e, 0xb3, + 0x6b, 0x3c, 0x4c, 0x0b, 0xb3, 0xd1, 0x3a, 0x46, 0x2e, 0x36, 0x88, 0xf5, 0x42, 0x01, 0x5c, 0xac, + 0x60, 0x27, 0x08, 0x29, 0xe1, 0x75, 0x1f, 0x38, 0x14, 0xa4, 0x94, 0x89, 0xf0, 0x83, 0x50, 0x10, + 0x17, 0x6b, 0x78, 0x62, 0x49, 0x72, 0x06, 0xd5, 0x4c, 0x34, 0x60, 0x74, 0x4a, 0xe4, 0x12, 0xcc, + 0xcc, 0x47, 0x53, 0xea, 0xc4, 0x0d, 0x51, 0x1b, 0x00, 0x8a, 0xc6, 0x00, 0xc6, 0x28, 0x9d, 0xf4, + 0xfc, 0xfc, 0xf4, 0x9c, 0x54, 0xbd, 0xf4, 0xfc, 0x9c, 0xc4, 0xbc, 0x74, 0xbd, 0xfc, 0xa2, 0x74, + 0x7d, 0xe4, 0x78, 0x07, 0xb1, 0xe3, 0x21, 0xec, 0xf8, 0x32, 0xc3, 0x55, 0x4c, 0x7c, 0xee, 0x20, + 0xd3, 0x20, 0x46, 0xe8, 0x85, 0x19, 0x26, 0xb1, 0x81, 0x93, 0x83, 0x31, 0x20, 0x00, 0x00, 0xff, + 0xff, 0x12, 0x7d, 0x96, 0xcb, 0x2d, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -105,10 +172,29 @@ var _ grpc.ClientConn // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion4 -// Client API for Health service - +// HealthClient is the client API for Health service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type HealthClient interface { + // If the requested service is unknown, the call will fail with status + // NOT_FOUND. Check(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (*HealthCheckResponse, error) + // Performs a watch for the serving status of the requested service. + // The server will immediately send back a message indicating the current + // serving status. It will then subsequently send a new message whenever + // the service's serving status changes. + // + // If the requested service is unknown when the call is received, the + // server will send a message setting the serving status to + // SERVICE_UNKNOWN but will *not* terminate the call. If at some + // future point, the serving status of the service becomes known, the + // server will send a new message with the service's serving status. + // + // If the call terminates with status UNIMPLEMENTED, then clients + // should assume this method is not supported and should not retry the + // call. If the call terminates with any other status (including OK), + // clients should retry the call with appropriate exponential backoff. + Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (Health_WatchClient, error) } type healthClient struct { @@ -121,17 +207,77 @@ func NewHealthClient(cc *grpc.ClientConn) HealthClient { func (c *healthClient) Check(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (*HealthCheckResponse, error) { out := new(HealthCheckResponse) - err := grpc.Invoke(ctx, "/grpc.health.v1.Health/Check", in, out, c.cc, opts...) + err := c.cc.Invoke(ctx, "/grpc.health.v1.Health/Check", in, out, opts...) if err != nil { return nil, err } return out, nil } -// Server API for Health service +func (c *healthClient) Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (Health_WatchClient, error) { + stream, err := c.cc.NewStream(ctx, &_Health_serviceDesc.Streams[0], "/grpc.health.v1.Health/Watch", opts...) + if err != nil { + return nil, err + } + x := &healthWatchClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type Health_WatchClient interface { + Recv() (*HealthCheckResponse, error) + grpc.ClientStream +} + +type healthWatchClient struct { + grpc.ClientStream +} + +func (x *healthWatchClient) Recv() (*HealthCheckResponse, error) { + m := new(HealthCheckResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} +// HealthServer is the server API for Health service. type HealthServer interface { + // If the requested service is unknown, the call will fail with status + // NOT_FOUND. Check(context.Context, *HealthCheckRequest) (*HealthCheckResponse, error) + // Performs a watch for the serving status of the requested service. + // The server will immediately send back a message indicating the current + // serving status. It will then subsequently send a new message whenever + // the service's serving status changes. + // + // If the requested service is unknown when the call is received, the + // server will send a message setting the serving status to + // SERVICE_UNKNOWN but will *not* terminate the call. If at some + // future point, the serving status of the service becomes known, the + // server will send a new message with the service's serving status. + // + // If the call terminates with status UNIMPLEMENTED, then clients + // should assume this method is not supported and should not retry the + // call. If the call terminates with any other status (including OK), + // clients should retry the call with appropriate exponential backoff. + Watch(*HealthCheckRequest, Health_WatchServer) error +} + +// UnimplementedHealthServer can be embedded to have forward compatible implementations. +type UnimplementedHealthServer struct { +} + +func (*UnimplementedHealthServer) Check(ctx context.Context, req *HealthCheckRequest) (*HealthCheckResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Check not implemented") +} +func (*UnimplementedHealthServer) Watch(req *HealthCheckRequest, srv Health_WatchServer) error { + return status.Errorf(codes.Unimplemented, "method Watch not implemented") } func RegisterHealthServer(s *grpc.Server, srv HealthServer) { @@ -156,6 +302,27 @@ func _Health_Check_Handler(srv interface{}, ctx context.Context, dec func(interf return interceptor(ctx, in, info, handler) } +func _Health_Watch_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(HealthCheckRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(HealthServer).Watch(m, &healthWatchServer{stream}) +} + +type Health_WatchServer interface { + Send(*HealthCheckResponse) error + grpc.ServerStream +} + +type healthWatchServer struct { + grpc.ServerStream +} + +func (x *healthWatchServer) Send(m *HealthCheckResponse) error { + return x.ServerStream.SendMsg(m) +} + var _Health_serviceDesc = grpc.ServiceDesc{ ServiceName: "grpc.health.v1.Health", HandlerType: (*HealthServer)(nil), @@ -165,26 +332,12 @@ var _Health_serviceDesc = grpc.ServiceDesc{ Handler: _Health_Check_Handler, }, }, - Streams: []grpc.StreamDesc{}, - Metadata: "grpc_health_v1/health.proto", -} - -func init() { proto.RegisterFile("grpc_health_v1/health.proto", fileDescriptor0) } - -var fileDescriptor0 = []byte{ - // 213 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0x2f, 0x2a, 0x48, - 0x8e, 0xcf, 0x48, 0x4d, 0xcc, 0x29, 0xc9, 0x88, 0x2f, 0x33, 0xd4, 0x87, 0xb0, 0xf4, 0x0a, 0x8a, - 0xf2, 0x4b, 0xf2, 0x85, 0xf8, 0x40, 0x92, 0x7a, 0x50, 0xa1, 0x32, 0x43, 0x25, 0x3d, 0x2e, 0x21, - 0x0f, 0x30, 0xc7, 0x39, 0x23, 0x35, 0x39, 0x3b, 0x28, 0xb5, 0xb0, 0x34, 0xb5, 0xb8, 0x44, 0x48, - 0x82, 0x8b, 0xbd, 0x38, 0xb5, 0xa8, 0x2c, 0x33, 0x39, 0x55, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, - 0x08, 0xc6, 0x55, 0x9a, 0xc3, 0xc8, 0x25, 0x8c, 0xa2, 0xa1, 0xb8, 0x20, 0x3f, 0xaf, 0x38, 0x55, - 0xc8, 0x93, 0x8b, 0xad, 0xb8, 0x24, 0xb1, 0xa4, 0xb4, 0x18, 0xac, 0x81, 0xcf, 0xc8, 0x50, 0x0f, - 0xd5, 0x22, 0x3d, 0x2c, 0x9a, 0xf4, 0x82, 0x41, 0x86, 0xe6, 0xa5, 0x07, 0x83, 0x35, 0x06, 0x41, - 0x0d, 0x50, 0xb2, 0xe2, 0xe2, 0x45, 0x91, 0x10, 0xe2, 0xe6, 0x62, 0x0f, 0xf5, 0xf3, 0xf6, 0xf3, - 0x0f, 0xf7, 0x13, 0x60, 0x00, 0x71, 0x82, 0x5d, 0x83, 0xc2, 0x3c, 0xfd, 0xdc, 0x05, 0x18, 0x85, - 0xf8, 0xb9, 0xb8, 0xfd, 0xfc, 0x43, 0xe2, 0x61, 0x02, 0x4c, 0x46, 0x51, 0x5c, 0x6c, 0x10, 0x8b, - 0x84, 0x02, 0xb8, 0x58, 0xc1, 0x96, 0x09, 0x29, 0xe1, 0x75, 0x09, 0xd8, 0xbf, 0x52, 0xca, 0x44, - 0xb8, 0x36, 0x89, 0x0d, 0x1c, 0x82, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x53, 0x2b, 0x65, - 0x20, 0x60, 0x01, 0x00, 0x00, + Streams: []grpc.StreamDesc{ + { + StreamName: "Watch", + Handler: _Health_Watch_Handler, + ServerStreams: true, + }, + }, + Metadata: "grpc/health/v1/health.proto", } diff --git a/vendor/google.golang.org/grpc/health/health.go b/vendor/google.golang.org/grpc/health/health.go deleted file mode 100644 index 30a78667e6..0000000000 --- a/vendor/google.golang.org/grpc/health/health.go +++ /dev/null @@ -1,72 +0,0 @@ -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -//go:generate protoc --go_out=plugins=grpc:. grpc_health_v1/health.proto - -// Package health provides some utility functions to health-check a server. The implementation -// is based on protobuf. Users need to write their own implementations if other IDLs are used. -package health - -import ( - "sync" - - "golang.org/x/net/context" - "google.golang.org/grpc/codes" - healthpb "google.golang.org/grpc/health/grpc_health_v1" - "google.golang.org/grpc/status" -) - -// Server implements `service Health`. -type Server struct { - mu sync.Mutex - // statusMap stores the serving status of the services this Server monitors. - statusMap map[string]healthpb.HealthCheckResponse_ServingStatus -} - -// NewServer returns a new Server. -func NewServer() *Server { - return &Server{ - statusMap: make(map[string]healthpb.HealthCheckResponse_ServingStatus), - } -} - -// Check implements `service Health`. -func (s *Server) Check(ctx context.Context, in *healthpb.HealthCheckRequest) (*healthpb.HealthCheckResponse, error) { - s.mu.Lock() - defer s.mu.Unlock() - if in.Service == "" { - // check the server overall health status. - return &healthpb.HealthCheckResponse{ - Status: healthpb.HealthCheckResponse_SERVING, - }, nil - } - if status, ok := s.statusMap[in.Service]; ok { - return &healthpb.HealthCheckResponse{ - Status: status, - }, nil - } - return nil, status.Error(codes.NotFound, "unknown service") -} - -// SetServingStatus is called when need to reset the serving status of a service -// or insert a new service entry into the statusMap. -func (s *Server) SetServingStatus(service string, status healthpb.HealthCheckResponse_ServingStatus) { - s.mu.Lock() - s.statusMap[service] = status - s.mu.Unlock() -} diff --git a/vendor/google.golang.org/grpc/health/regenerate.sh b/vendor/google.golang.org/grpc/health/regenerate.sh new file mode 100644 index 0000000000..b11eccb295 --- /dev/null +++ b/vendor/google.golang.org/grpc/health/regenerate.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Copyright 2018 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -eux -o pipefail + +TMP=$(mktemp -d) + +function finish { + rm -rf "$TMP" +} +trap finish EXIT + +pushd "$TMP" +mkdir -p grpc/health/v1 +curl https://raw.githubusercontent.com/grpc/grpc-proto/master/grpc/health/v1/health.proto > grpc/health/v1/health.proto + +protoc --go_out=plugins=grpc,paths=source_relative:. -I. grpc/health/v1/*.proto +popd +rm -f grpc_health_v1/*.pb.go +cp "$TMP"/grpc/health/v1/*.pb.go grpc_health_v1/ + diff --git a/vendor/google.golang.org/grpc/health/server.go b/vendor/google.golang.org/grpc/health/server.go new file mode 100644 index 0000000000..c79f9d2ab8 --- /dev/null +++ b/vendor/google.golang.org/grpc/health/server.go @@ -0,0 +1,165 @@ +/* + * + * Copyright 2017 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +//go:generate ./regenerate.sh + +// Package health provides a service that exposes server's health and it must be +// imported to enable support for client-side health checks. +package health + +import ( + "context" + "sync" + + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + healthgrpc "google.golang.org/grpc/health/grpc_health_v1" + healthpb "google.golang.org/grpc/health/grpc_health_v1" + "google.golang.org/grpc/status" +) + +// Server implements `service Health`. +type Server struct { + mu sync.Mutex + // If shutdown is true, it's expected all serving status is NOT_SERVING, and + // will stay in NOT_SERVING. + shutdown bool + // statusMap stores the serving status of the services this Server monitors. + statusMap map[string]healthpb.HealthCheckResponse_ServingStatus + updates map[string]map[healthgrpc.Health_WatchServer]chan healthpb.HealthCheckResponse_ServingStatus +} + +// NewServer returns a new Server. +func NewServer() *Server { + return &Server{ + statusMap: map[string]healthpb.HealthCheckResponse_ServingStatus{"": healthpb.HealthCheckResponse_SERVING}, + updates: make(map[string]map[healthgrpc.Health_WatchServer]chan healthpb.HealthCheckResponse_ServingStatus), + } +} + +// Check implements `service Health`. +func (s *Server) Check(ctx context.Context, in *healthpb.HealthCheckRequest) (*healthpb.HealthCheckResponse, error) { + s.mu.Lock() + defer s.mu.Unlock() + if servingStatus, ok := s.statusMap[in.Service]; ok { + return &healthpb.HealthCheckResponse{ + Status: servingStatus, + }, nil + } + return nil, status.Error(codes.NotFound, "unknown service") +} + +// Watch implements `service Health`. +func (s *Server) Watch(in *healthpb.HealthCheckRequest, stream healthgrpc.Health_WatchServer) error { + service := in.Service + // update channel is used for getting service status updates. + update := make(chan healthpb.HealthCheckResponse_ServingStatus, 1) + s.mu.Lock() + // Puts the initial status to the channel. + if servingStatus, ok := s.statusMap[service]; ok { + update <- servingStatus + } else { + update <- healthpb.HealthCheckResponse_SERVICE_UNKNOWN + } + + // Registers the update channel to the correct place in the updates map. + if _, ok := s.updates[service]; !ok { + s.updates[service] = make(map[healthgrpc.Health_WatchServer]chan healthpb.HealthCheckResponse_ServingStatus) + } + s.updates[service][stream] = update + defer func() { + s.mu.Lock() + delete(s.updates[service], stream) + s.mu.Unlock() + }() + s.mu.Unlock() + + var lastSentStatus healthpb.HealthCheckResponse_ServingStatus = -1 + for { + select { + // Status updated. Sends the up-to-date status to the client. + case servingStatus := <-update: + if lastSentStatus == servingStatus { + continue + } + lastSentStatus = servingStatus + err := stream.Send(&healthpb.HealthCheckResponse{Status: servingStatus}) + if err != nil { + return status.Error(codes.Canceled, "Stream has ended.") + } + // Context done. Removes the update channel from the updates map. + case <-stream.Context().Done(): + return status.Error(codes.Canceled, "Stream has ended.") + } + } +} + +// SetServingStatus is called when need to reset the serving status of a service +// or insert a new service entry into the statusMap. +func (s *Server) SetServingStatus(service string, servingStatus healthpb.HealthCheckResponse_ServingStatus) { + s.mu.Lock() + defer s.mu.Unlock() + if s.shutdown { + grpclog.Infof("health: status changing for %s to %v is ignored because health service is shutdown", service, servingStatus) + return + } + + s.setServingStatusLocked(service, servingStatus) +} + +func (s *Server) setServingStatusLocked(service string, servingStatus healthpb.HealthCheckResponse_ServingStatus) { + s.statusMap[service] = servingStatus + for _, update := range s.updates[service] { + // Clears previous updates, that are not sent to the client, from the channel. + // This can happen if the client is not reading and the server gets flow control limited. + select { + case <-update: + default: + } + // Puts the most recent update to the channel. + update <- servingStatus + } +} + +// Shutdown sets all serving status to NOT_SERVING, and configures the server to +// ignore all future status changes. +// +// This changes serving status for all services. To set status for a perticular +// services, call SetServingStatus(). +func (s *Server) Shutdown() { + s.mu.Lock() + defer s.mu.Unlock() + s.shutdown = true + for service := range s.statusMap { + s.setServingStatusLocked(service, healthpb.HealthCheckResponse_NOT_SERVING) + } +} + +// Resume sets all serving status to SERVING, and configures the server to +// accept all future status changes. +// +// This changes serving status for all services. To set status for a perticular +// services, call SetServingStatus(). +func (s *Server) Resume() { + s.mu.Lock() + defer s.mu.Unlock() + s.shutdown = false + for service := range s.statusMap { + s.setServingStatusLocked(service, healthpb.HealthCheckResponse_SERVING) + } +} diff --git a/vendor/google.golang.org/grpc/install_gae.sh b/vendor/google.golang.org/grpc/install_gae.sh new file mode 100644 index 0000000000..7c7bcada50 --- /dev/null +++ b/vendor/google.golang.org/grpc/install_gae.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +TMP=$(mktemp -d /tmp/sdk.XXX) \ +&& curl -o $TMP.zip "https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.68.zip" \ +&& unzip -q $TMP.zip -d $TMP \ +&& export PATH="$PATH:$TMP/go_appengine" diff --git a/vendor/google.golang.org/grpc/interceptor.go b/vendor/google.golang.org/grpc/interceptor.go index 1f6ef67803..8b7350022a 100644 --- a/vendor/google.golang.org/grpc/interceptor.go +++ b/vendor/google.golang.org/grpc/interceptor.go @@ -19,7 +19,7 @@ package grpc import ( - "golang.org/x/net/context" + "context" ) // UnaryInvoker is called by UnaryClientInterceptor to complete RPCs. diff --git a/vendor/google.golang.org/grpc/internal/backoff/backoff.go b/vendor/google.golang.org/grpc/internal/backoff/backoff.go new file mode 100644 index 0000000000..1bd0cce5ab --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/backoff/backoff.go @@ -0,0 +1,78 @@ +/* + * + * Copyright 2017 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package backoff implement the backoff strategy for gRPC. +// +// This is kept in internal until the gRPC project decides whether or not to +// allow alternative backoff strategies. +package backoff + +import ( + "time" + + "google.golang.org/grpc/internal/grpcrand" +) + +// Strategy defines the methodology for backing off after a grpc connection +// failure. +// +type Strategy interface { + // Backoff returns the amount of time to wait before the next retry given + // the number of consecutive failures. + Backoff(retries int) time.Duration +} + +const ( + // baseDelay is the amount of time to wait before retrying after the first + // failure. + baseDelay = 1.0 * time.Second + // factor is applied to the backoff after each retry. + factor = 1.6 + // jitter provides a range to randomize backoff delays. + jitter = 0.2 +) + +// Exponential implements exponential backoff algorithm as defined in +// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. +type Exponential struct { + // MaxDelay is the upper bound of backoff delay. + MaxDelay time.Duration +} + +// Backoff returns the amount of time to wait before the next retry given the +// number of retries. +func (bc Exponential) Backoff(retries int) time.Duration { + if retries == 0 { + return baseDelay + } + backoff, max := float64(baseDelay), float64(bc.MaxDelay) + for backoff < max && retries > 0 { + backoff *= factor + retries-- + } + if backoff > max { + backoff = max + } + // Randomize backoff delays so that if a cluster of requests start at + // the same time, they won't operate in lockstep. + backoff *= 1 + jitter*(grpcrand.Float64()*2-1) + if backoff < 0 { + return 0 + } + return time.Duration(backoff) +} diff --git a/vendor/google.golang.org/grpc/internal/balancerload/load.go b/vendor/google.golang.org/grpc/internal/balancerload/load.go new file mode 100644 index 0000000000..3a905d9665 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/balancerload/load.go @@ -0,0 +1,46 @@ +/* + * Copyright 2019 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// Package balancerload defines APIs to parse server loads in trailers. The +// parsed loads are sent to balancers in DoneInfo. +package balancerload + +import ( + "google.golang.org/grpc/metadata" +) + +// Parser converts loads from metadata into a concrete type. +type Parser interface { + // Parse parses loads from metadata. + Parse(md metadata.MD) interface{} +} + +var parser Parser + +// SetParser sets the load parser. +// +// Not mutex-protected, should be called before any gRPC functions. +func SetParser(lr Parser) { + parser = lr +} + +// Parse calls parser.Read(). +func Parse(md metadata.MD) interface{} { + if parser == nil { + return nil + } + return parser.Parse(md) +} diff --git a/vendor/google.golang.org/grpc/internal/binarylog/binarylog.go b/vendor/google.golang.org/grpc/internal/binarylog/binarylog.go new file mode 100644 index 0000000000..fee6aecd08 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/binarylog/binarylog.go @@ -0,0 +1,167 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package binarylog implementation binary logging as defined in +// https://github.com/grpc/proposal/blob/master/A16-binary-logging.md. +package binarylog + +import ( + "fmt" + "os" + + "google.golang.org/grpc/grpclog" +) + +// Logger is the global binary logger. It can be used to get binary logger for +// each method. +type Logger interface { + getMethodLogger(methodName string) *MethodLogger +} + +// binLogger is the global binary logger for the binary. One of this should be +// built at init time from the configuration (environment varialbe or flags). +// +// It is used to get a methodLogger for each individual method. +var binLogger Logger + +// SetLogger sets the binarg logger. +// +// Only call this at init time. +func SetLogger(l Logger) { + binLogger = l +} + +// GetMethodLogger returns the methodLogger for the given methodName. +// +// methodName should be in the format of "/service/method". +// +// Each methodLogger returned by this method is a new instance. This is to +// generate sequence id within the call. +func GetMethodLogger(methodName string) *MethodLogger { + if binLogger == nil { + return nil + } + return binLogger.getMethodLogger(methodName) +} + +func init() { + const envStr = "GRPC_BINARY_LOG_FILTER" + configStr := os.Getenv(envStr) + binLogger = NewLoggerFromConfigString(configStr) +} + +type methodLoggerConfig struct { + // Max length of header and message. + hdr, msg uint64 +} + +type logger struct { + all *methodLoggerConfig + services map[string]*methodLoggerConfig + methods map[string]*methodLoggerConfig + + blacklist map[string]struct{} +} + +// newEmptyLogger creates an empty logger. The map fields need to be filled in +// using the set* functions. +func newEmptyLogger() *logger { + return &logger{} +} + +// Set method logger for "*". +func (l *logger) setDefaultMethodLogger(ml *methodLoggerConfig) error { + if l.all != nil { + return fmt.Errorf("conflicting global rules found") + } + l.all = ml + return nil +} + +// Set method logger for "service/*". +// +// New methodLogger with same service overrides the old one. +func (l *logger) setServiceMethodLogger(service string, ml *methodLoggerConfig) error { + if _, ok := l.services[service]; ok { + return fmt.Errorf("conflicting rules for service %v found", service) + } + if l.services == nil { + l.services = make(map[string]*methodLoggerConfig) + } + l.services[service] = ml + return nil +} + +// Set method logger for "service/method". +// +// New methodLogger with same method overrides the old one. +func (l *logger) setMethodMethodLogger(method string, ml *methodLoggerConfig) error { + if _, ok := l.blacklist[method]; ok { + return fmt.Errorf("conflicting rules for method %v found", method) + } + if _, ok := l.methods[method]; ok { + return fmt.Errorf("conflicting rules for method %v found", method) + } + if l.methods == nil { + l.methods = make(map[string]*methodLoggerConfig) + } + l.methods[method] = ml + return nil +} + +// Set blacklist method for "-service/method". +func (l *logger) setBlacklist(method string) error { + if _, ok := l.blacklist[method]; ok { + return fmt.Errorf("conflicting rules for method %v found", method) + } + if _, ok := l.methods[method]; ok { + return fmt.Errorf("conflicting rules for method %v found", method) + } + if l.blacklist == nil { + l.blacklist = make(map[string]struct{}) + } + l.blacklist[method] = struct{}{} + return nil +} + +// getMethodLogger returns the methodLogger for the given methodName. +// +// methodName should be in the format of "/service/method". +// +// Each methodLogger returned by this method is a new instance. This is to +// generate sequence id within the call. +func (l *logger) getMethodLogger(methodName string) *MethodLogger { + s, m, err := parseMethodName(methodName) + if err != nil { + grpclog.Infof("binarylogging: failed to parse %q: %v", methodName, err) + return nil + } + if ml, ok := l.methods[s+"/"+m]; ok { + return newMethodLogger(ml.hdr, ml.msg) + } + if _, ok := l.blacklist[s+"/"+m]; ok { + return nil + } + if ml, ok := l.services[s]; ok { + return newMethodLogger(ml.hdr, ml.msg) + } + if l.all == nil { + return nil + } + return newMethodLogger(l.all.hdr, l.all.msg) +} diff --git a/vendor/google.golang.org/grpc/internal/binarylog/binarylog_testutil.go b/vendor/google.golang.org/grpc/internal/binarylog/binarylog_testutil.go new file mode 100644 index 0000000000..1ee00a39ac --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/binarylog/binarylog_testutil.go @@ -0,0 +1,42 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// This file contains exported variables/functions that are exported for testing +// only. +// +// An ideal way for this would be to put those in a *_test.go but in binarylog +// package. But this doesn't work with staticcheck with go module. Error was: +// "MdToMetadataProto not declared by package binarylog". This could be caused +// by the way staticcheck looks for files for a certain package, which doesn't +// support *_test.go files. +// +// Move those to binary_test.go when staticcheck is fixed. + +package binarylog + +var ( + // AllLogger is a logger that logs all headers/messages for all RPCs. It's + // for testing only. + AllLogger = NewLoggerFromConfigString("*") + // MdToMetadataProto converts metadata to a binary logging proto message. + // It's for testing only. + MdToMetadataProto = mdToMetadataProto + // AddrToProto converts an address to a binary logging proto message. It's + // for testing only. + AddrToProto = addrToProto +) diff --git a/vendor/google.golang.org/grpc/internal/binarylog/env_config.go b/vendor/google.golang.org/grpc/internal/binarylog/env_config.go new file mode 100644 index 0000000000..4cc2525df7 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/binarylog/env_config.go @@ -0,0 +1,210 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package binarylog + +import ( + "errors" + "fmt" + "regexp" + "strconv" + "strings" + + "google.golang.org/grpc/grpclog" +) + +// NewLoggerFromConfigString reads the string and build a logger. It can be used +// to build a new logger and assign it to binarylog.Logger. +// +// Example filter config strings: +// - "" Nothing will be logged +// - "*" All headers and messages will be fully logged. +// - "*{h}" Only headers will be logged. +// - "*{m:256}" Only the first 256 bytes of each message will be logged. +// - "Foo/*" Logs every method in service Foo +// - "Foo/*,-Foo/Bar" Logs every method in service Foo except method /Foo/Bar +// - "Foo/*,Foo/Bar{m:256}" Logs the first 256 bytes of each message in method +// /Foo/Bar, logs all headers and messages in every other method in service +// Foo. +// +// If two configs exist for one certain method or service, the one specified +// later overrides the privous config. +func NewLoggerFromConfigString(s string) Logger { + if s == "" { + return nil + } + l := newEmptyLogger() + methods := strings.Split(s, ",") + for _, method := range methods { + if err := l.fillMethodLoggerWithConfigString(method); err != nil { + grpclog.Warningf("failed to parse binary log config: %v", err) + return nil + } + } + return l +} + +// fillMethodLoggerWithConfigString parses config, creates methodLogger and adds +// it to the right map in the logger. +func (l *logger) fillMethodLoggerWithConfigString(config string) error { + // "" is invalid. + if config == "" { + return errors.New("empty string is not a valid method binary logging config") + } + + // "-service/method", blacklist, no * or {} allowed. + if config[0] == '-' { + s, m, suffix, err := parseMethodConfigAndSuffix(config[1:]) + if err != nil { + return fmt.Errorf("invalid config: %q, %v", config, err) + } + if m == "*" { + return fmt.Errorf("invalid config: %q, %v", config, "* not allowd in blacklist config") + } + if suffix != "" { + return fmt.Errorf("invalid config: %q, %v", config, "header/message limit not allowed in blacklist config") + } + if err := l.setBlacklist(s + "/" + m); err != nil { + return fmt.Errorf("invalid config: %v", err) + } + return nil + } + + // "*{h:256;m:256}" + if config[0] == '*' { + hdr, msg, err := parseHeaderMessageLengthConfig(config[1:]) + if err != nil { + return fmt.Errorf("invalid config: %q, %v", config, err) + } + if err := l.setDefaultMethodLogger(&methodLoggerConfig{hdr: hdr, msg: msg}); err != nil { + return fmt.Errorf("invalid config: %v", err) + } + return nil + } + + s, m, suffix, err := parseMethodConfigAndSuffix(config) + if err != nil { + return fmt.Errorf("invalid config: %q, %v", config, err) + } + hdr, msg, err := parseHeaderMessageLengthConfig(suffix) + if err != nil { + return fmt.Errorf("invalid header/message length config: %q, %v", suffix, err) + } + if m == "*" { + if err := l.setServiceMethodLogger(s, &methodLoggerConfig{hdr: hdr, msg: msg}); err != nil { + return fmt.Errorf("invalid config: %v", err) + } + } else { + if err := l.setMethodMethodLogger(s+"/"+m, &methodLoggerConfig{hdr: hdr, msg: msg}); err != nil { + return fmt.Errorf("invalid config: %v", err) + } + } + return nil +} + +const ( + // TODO: this const is only used by env_config now. But could be useful for + // other config. Move to binarylog.go if necessary. + maxUInt = ^uint64(0) + + // For "p.s/m" plus any suffix. Suffix will be parsed again. See test for + // expected output. + longMethodConfigRegexpStr = `^([\w./]+)/((?:\w+)|[*])(.+)?$` + + // For suffix from above, "{h:123,m:123}". See test for expected output. + optionalLengthRegexpStr = `(?::(\d+))?` // Optional ":123". + headerConfigRegexpStr = `^{h` + optionalLengthRegexpStr + `}$` + messageConfigRegexpStr = `^{m` + optionalLengthRegexpStr + `}$` + headerMessageConfigRegexpStr = `^{h` + optionalLengthRegexpStr + `;m` + optionalLengthRegexpStr + `}$` +) + +var ( + longMethodConfigRegexp = regexp.MustCompile(longMethodConfigRegexpStr) + headerConfigRegexp = regexp.MustCompile(headerConfigRegexpStr) + messageConfigRegexp = regexp.MustCompile(messageConfigRegexpStr) + headerMessageConfigRegexp = regexp.MustCompile(headerMessageConfigRegexpStr) +) + +// Turn "service/method{h;m}" into "service", "method", "{h;m}". +func parseMethodConfigAndSuffix(c string) (service, method, suffix string, _ error) { + // Regexp result: + // + // in: "p.s/m{h:123,m:123}", + // out: []string{"p.s/m{h:123,m:123}", "p.s", "m", "{h:123,m:123}"}, + match := longMethodConfigRegexp.FindStringSubmatch(c) + if match == nil { + return "", "", "", fmt.Errorf("%q contains invalid substring", c) + } + service = match[1] + method = match[2] + suffix = match[3] + return +} + +// Turn "{h:123;m:345}" into 123, 345. +// +// Return maxUInt if length is unspecified. +func parseHeaderMessageLengthConfig(c string) (hdrLenStr, msgLenStr uint64, err error) { + if c == "" { + return maxUInt, maxUInt, nil + } + // Header config only. + if match := headerConfigRegexp.FindStringSubmatch(c); match != nil { + if s := match[1]; s != "" { + hdrLenStr, err = strconv.ParseUint(s, 10, 64) + if err != nil { + return 0, 0, fmt.Errorf("failed to convert %q to uint", s) + } + return hdrLenStr, 0, nil + } + return maxUInt, 0, nil + } + + // Message config only. + if match := messageConfigRegexp.FindStringSubmatch(c); match != nil { + if s := match[1]; s != "" { + msgLenStr, err = strconv.ParseUint(s, 10, 64) + if err != nil { + return 0, 0, fmt.Errorf("failed to convert %q to uint", s) + } + return 0, msgLenStr, nil + } + return 0, maxUInt, nil + } + + // Header and message config both. + if match := headerMessageConfigRegexp.FindStringSubmatch(c); match != nil { + // Both hdr and msg are specified, but one or two of them might be empty. + hdrLenStr = maxUInt + msgLenStr = maxUInt + if s := match[1]; s != "" { + hdrLenStr, err = strconv.ParseUint(s, 10, 64) + if err != nil { + return 0, 0, fmt.Errorf("failed to convert %q to uint", s) + } + } + if s := match[2]; s != "" { + msgLenStr, err = strconv.ParseUint(s, 10, 64) + if err != nil { + return 0, 0, fmt.Errorf("failed to convert %q to uint", s) + } + } + return hdrLenStr, msgLenStr, nil + } + return 0, 0, fmt.Errorf("%q contains invalid substring", c) +} diff --git a/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go b/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go new file mode 100644 index 0000000000..160f6e8616 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go @@ -0,0 +1,423 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package binarylog + +import ( + "net" + "strings" + "sync/atomic" + "time" + + "github.com/golang/protobuf/proto" + "github.com/golang/protobuf/ptypes" + pb "google.golang.org/grpc/binarylog/grpc_binarylog_v1" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +type callIDGenerator struct { + id uint64 +} + +func (g *callIDGenerator) next() uint64 { + id := atomic.AddUint64(&g.id, 1) + return id +} + +// reset is for testing only, and doesn't need to be thread safe. +func (g *callIDGenerator) reset() { + g.id = 0 +} + +var idGen callIDGenerator + +// MethodLogger is the sub-logger for each method. +type MethodLogger struct { + headerMaxLen, messageMaxLen uint64 + + callID uint64 + idWithinCallGen *callIDGenerator + + sink Sink // TODO(blog): make this plugable. +} + +func newMethodLogger(h, m uint64) *MethodLogger { + return &MethodLogger{ + headerMaxLen: h, + messageMaxLen: m, + + callID: idGen.next(), + idWithinCallGen: &callIDGenerator{}, + + sink: defaultSink, // TODO(blog): make it plugable. + } +} + +// Log creates a proto binary log entry, and logs it to the sink. +func (ml *MethodLogger) Log(c LogEntryConfig) { + m := c.toProto() + timestamp, _ := ptypes.TimestampProto(time.Now()) + m.Timestamp = timestamp + m.CallId = ml.callID + m.SequenceIdWithinCall = ml.idWithinCallGen.next() + + switch pay := m.Payload.(type) { + case *pb.GrpcLogEntry_ClientHeader: + m.PayloadTruncated = ml.truncateMetadata(pay.ClientHeader.GetMetadata()) + case *pb.GrpcLogEntry_ServerHeader: + m.PayloadTruncated = ml.truncateMetadata(pay.ServerHeader.GetMetadata()) + case *pb.GrpcLogEntry_Message: + m.PayloadTruncated = ml.truncateMessage(pay.Message) + } + + ml.sink.Write(m) +} + +func (ml *MethodLogger) truncateMetadata(mdPb *pb.Metadata) (truncated bool) { + if ml.headerMaxLen == maxUInt { + return false + } + var ( + bytesLimit = ml.headerMaxLen + index int + ) + // At the end of the loop, index will be the first entry where the total + // size is greater than the limit: + // + // len(entry[:index]) <= ml.hdr && len(entry[:index+1]) > ml.hdr. + for ; index < len(mdPb.Entry); index++ { + entry := mdPb.Entry[index] + if entry.Key == "grpc-trace-bin" { + // "grpc-trace-bin" is a special key. It's kept in the log entry, + // but not counted towards the size limit. + continue + } + currentEntryLen := uint64(len(entry.Value)) + if currentEntryLen > bytesLimit { + break + } + bytesLimit -= currentEntryLen + } + truncated = index < len(mdPb.Entry) + mdPb.Entry = mdPb.Entry[:index] + return truncated +} + +func (ml *MethodLogger) truncateMessage(msgPb *pb.Message) (truncated bool) { + if ml.messageMaxLen == maxUInt { + return false + } + if ml.messageMaxLen >= uint64(len(msgPb.Data)) { + return false + } + msgPb.Data = msgPb.Data[:ml.messageMaxLen] + return true +} + +// LogEntryConfig represents the configuration for binary log entry. +type LogEntryConfig interface { + toProto() *pb.GrpcLogEntry +} + +// ClientHeader configs the binary log entry to be a ClientHeader entry. +type ClientHeader struct { + OnClientSide bool + Header metadata.MD + MethodName string + Authority string + Timeout time.Duration + // PeerAddr is required only when it's on server side. + PeerAddr net.Addr +} + +func (c *ClientHeader) toProto() *pb.GrpcLogEntry { + // This function doesn't need to set all the fields (e.g. seq ID). The Log + // function will set the fields when necessary. + clientHeader := &pb.ClientHeader{ + Metadata: mdToMetadataProto(c.Header), + MethodName: c.MethodName, + Authority: c.Authority, + } + if c.Timeout > 0 { + clientHeader.Timeout = ptypes.DurationProto(c.Timeout) + } + ret := &pb.GrpcLogEntry{ + Type: pb.GrpcLogEntry_EVENT_TYPE_CLIENT_HEADER, + Payload: &pb.GrpcLogEntry_ClientHeader{ + ClientHeader: clientHeader, + }, + } + if c.OnClientSide { + ret.Logger = pb.GrpcLogEntry_LOGGER_CLIENT + } else { + ret.Logger = pb.GrpcLogEntry_LOGGER_SERVER + } + if c.PeerAddr != nil { + ret.Peer = addrToProto(c.PeerAddr) + } + return ret +} + +// ServerHeader configs the binary log entry to be a ServerHeader entry. +type ServerHeader struct { + OnClientSide bool + Header metadata.MD + // PeerAddr is required only when it's on client side. + PeerAddr net.Addr +} + +func (c *ServerHeader) toProto() *pb.GrpcLogEntry { + ret := &pb.GrpcLogEntry{ + Type: pb.GrpcLogEntry_EVENT_TYPE_SERVER_HEADER, + Payload: &pb.GrpcLogEntry_ServerHeader{ + ServerHeader: &pb.ServerHeader{ + Metadata: mdToMetadataProto(c.Header), + }, + }, + } + if c.OnClientSide { + ret.Logger = pb.GrpcLogEntry_LOGGER_CLIENT + } else { + ret.Logger = pb.GrpcLogEntry_LOGGER_SERVER + } + if c.PeerAddr != nil { + ret.Peer = addrToProto(c.PeerAddr) + } + return ret +} + +// ClientMessage configs the binary log entry to be a ClientMessage entry. +type ClientMessage struct { + OnClientSide bool + // Message can be a proto.Message or []byte. Other messages formats are not + // supported. + Message interface{} +} + +func (c *ClientMessage) toProto() *pb.GrpcLogEntry { + var ( + data []byte + err error + ) + if m, ok := c.Message.(proto.Message); ok { + data, err = proto.Marshal(m) + if err != nil { + grpclog.Infof("binarylogging: failed to marshal proto message: %v", err) + } + } else if b, ok := c.Message.([]byte); ok { + data = b + } else { + grpclog.Infof("binarylogging: message to log is neither proto.message nor []byte") + } + ret := &pb.GrpcLogEntry{ + Type: pb.GrpcLogEntry_EVENT_TYPE_CLIENT_MESSAGE, + Payload: &pb.GrpcLogEntry_Message{ + Message: &pb.Message{ + Length: uint32(len(data)), + Data: data, + }, + }, + } + if c.OnClientSide { + ret.Logger = pb.GrpcLogEntry_LOGGER_CLIENT + } else { + ret.Logger = pb.GrpcLogEntry_LOGGER_SERVER + } + return ret +} + +// ServerMessage configs the binary log entry to be a ServerMessage entry. +type ServerMessage struct { + OnClientSide bool + // Message can be a proto.Message or []byte. Other messages formats are not + // supported. + Message interface{} +} + +func (c *ServerMessage) toProto() *pb.GrpcLogEntry { + var ( + data []byte + err error + ) + if m, ok := c.Message.(proto.Message); ok { + data, err = proto.Marshal(m) + if err != nil { + grpclog.Infof("binarylogging: failed to marshal proto message: %v", err) + } + } else if b, ok := c.Message.([]byte); ok { + data = b + } else { + grpclog.Infof("binarylogging: message to log is neither proto.message nor []byte") + } + ret := &pb.GrpcLogEntry{ + Type: pb.GrpcLogEntry_EVENT_TYPE_SERVER_MESSAGE, + Payload: &pb.GrpcLogEntry_Message{ + Message: &pb.Message{ + Length: uint32(len(data)), + Data: data, + }, + }, + } + if c.OnClientSide { + ret.Logger = pb.GrpcLogEntry_LOGGER_CLIENT + } else { + ret.Logger = pb.GrpcLogEntry_LOGGER_SERVER + } + return ret +} + +// ClientHalfClose configs the binary log entry to be a ClientHalfClose entry. +type ClientHalfClose struct { + OnClientSide bool +} + +func (c *ClientHalfClose) toProto() *pb.GrpcLogEntry { + ret := &pb.GrpcLogEntry{ + Type: pb.GrpcLogEntry_EVENT_TYPE_CLIENT_HALF_CLOSE, + Payload: nil, // No payload here. + } + if c.OnClientSide { + ret.Logger = pb.GrpcLogEntry_LOGGER_CLIENT + } else { + ret.Logger = pb.GrpcLogEntry_LOGGER_SERVER + } + return ret +} + +// ServerTrailer configs the binary log entry to be a ServerTrailer entry. +type ServerTrailer struct { + OnClientSide bool + Trailer metadata.MD + // Err is the status error. + Err error + // PeerAddr is required only when it's on client side and the RPC is trailer + // only. + PeerAddr net.Addr +} + +func (c *ServerTrailer) toProto() *pb.GrpcLogEntry { + st, ok := status.FromError(c.Err) + if !ok { + grpclog.Info("binarylogging: error in trailer is not a status error") + } + var ( + detailsBytes []byte + err error + ) + stProto := st.Proto() + if stProto != nil && len(stProto.Details) != 0 { + detailsBytes, err = proto.Marshal(stProto) + if err != nil { + grpclog.Infof("binarylogging: failed to marshal status proto: %v", err) + } + } + ret := &pb.GrpcLogEntry{ + Type: pb.GrpcLogEntry_EVENT_TYPE_SERVER_TRAILER, + Payload: &pb.GrpcLogEntry_Trailer{ + Trailer: &pb.Trailer{ + Metadata: mdToMetadataProto(c.Trailer), + StatusCode: uint32(st.Code()), + StatusMessage: st.Message(), + StatusDetails: detailsBytes, + }, + }, + } + if c.OnClientSide { + ret.Logger = pb.GrpcLogEntry_LOGGER_CLIENT + } else { + ret.Logger = pb.GrpcLogEntry_LOGGER_SERVER + } + if c.PeerAddr != nil { + ret.Peer = addrToProto(c.PeerAddr) + } + return ret +} + +// Cancel configs the binary log entry to be a Cancel entry. +type Cancel struct { + OnClientSide bool +} + +func (c *Cancel) toProto() *pb.GrpcLogEntry { + ret := &pb.GrpcLogEntry{ + Type: pb.GrpcLogEntry_EVENT_TYPE_CANCEL, + Payload: nil, + } + if c.OnClientSide { + ret.Logger = pb.GrpcLogEntry_LOGGER_CLIENT + } else { + ret.Logger = pb.GrpcLogEntry_LOGGER_SERVER + } + return ret +} + +// metadataKeyOmit returns whether the metadata entry with this key should be +// omitted. +func metadataKeyOmit(key string) bool { + switch key { + case "lb-token", ":path", ":authority", "content-encoding", "content-type", "user-agent", "te": + return true + case "grpc-trace-bin": // grpc-trace-bin is special because it's visiable to users. + return false + } + return strings.HasPrefix(key, "grpc-") +} + +func mdToMetadataProto(md metadata.MD) *pb.Metadata { + ret := &pb.Metadata{} + for k, vv := range md { + if metadataKeyOmit(k) { + continue + } + for _, v := range vv { + ret.Entry = append(ret.Entry, + &pb.MetadataEntry{ + Key: k, + Value: []byte(v), + }, + ) + } + } + return ret +} + +func addrToProto(addr net.Addr) *pb.Address { + ret := &pb.Address{} + switch a := addr.(type) { + case *net.TCPAddr: + if a.IP.To4() != nil { + ret.Type = pb.Address_TYPE_IPV4 + } else if a.IP.To16() != nil { + ret.Type = pb.Address_TYPE_IPV6 + } else { + ret.Type = pb.Address_TYPE_UNKNOWN + // Do not set address and port fields. + break + } + ret.Address = a.IP.String() + ret.IpPort = uint32(a.Port) + case *net.UnixAddr: + ret.Type = pb.Address_TYPE_UNIX + ret.Address = a.String() + default: + ret.Type = pb.Address_TYPE_UNKNOWN + } + return ret +} diff --git a/vendor/google.golang.org/grpc/internal/binarylog/regenerate.sh b/vendor/google.golang.org/grpc/internal/binarylog/regenerate.sh new file mode 100644 index 0000000000..113d40cbe1 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/binarylog/regenerate.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Copyright 2018 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -eux -o pipefail + +TMP=$(mktemp -d) + +function finish { + rm -rf "$TMP" +} +trap finish EXIT + +pushd "$TMP" +mkdir -p grpc/binarylog/grpc_binarylog_v1 +curl https://raw.githubusercontent.com/grpc/grpc-proto/master/grpc/binlog/v1/binarylog.proto > grpc/binarylog/grpc_binarylog_v1/binarylog.proto + +protoc --go_out=plugins=grpc,paths=source_relative:. -I. grpc/binarylog/grpc_binarylog_v1/*.proto +popd +rm -f ./grpc_binarylog_v1/*.pb.go +cp "$TMP"/grpc/binarylog/grpc_binarylog_v1/*.pb.go ../../binarylog/grpc_binarylog_v1/ + diff --git a/vendor/google.golang.org/grpc/internal/binarylog/sink.go b/vendor/google.golang.org/grpc/internal/binarylog/sink.go new file mode 100644 index 0000000000..20d044f0fd --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/binarylog/sink.go @@ -0,0 +1,162 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package binarylog + +import ( + "bufio" + "encoding/binary" + "fmt" + "io" + "io/ioutil" + "sync" + "time" + + "github.com/golang/protobuf/proto" + pb "google.golang.org/grpc/binarylog/grpc_binarylog_v1" + "google.golang.org/grpc/grpclog" +) + +var ( + defaultSink Sink = &noopSink{} // TODO(blog): change this default (file in /tmp). +) + +// SetDefaultSink sets the sink where binary logs will be written to. +// +// Not thread safe. Only set during initialization. +func SetDefaultSink(s Sink) { + if defaultSink != nil { + defaultSink.Close() + } + defaultSink = s +} + +// Sink writes log entry into the binary log sink. +type Sink interface { + // Write will be called to write the log entry into the sink. + // + // It should be thread-safe so it can be called in parallel. + Write(*pb.GrpcLogEntry) error + // Close will be called when the Sink is replaced by a new Sink. + Close() error +} + +type noopSink struct{} + +func (ns *noopSink) Write(*pb.GrpcLogEntry) error { return nil } +func (ns *noopSink) Close() error { return nil } + +// newWriterSink creates a binary log sink with the given writer. +// +// Write() marshalls the proto message and writes it to the given writer. Each +// message is prefixed with a 4 byte big endian unsigned integer as the length. +// +// No buffer is done, Close() doesn't try to close the writer. +func newWriterSink(w io.Writer) *writerSink { + return &writerSink{out: w} +} + +type writerSink struct { + out io.Writer +} + +func (ws *writerSink) Write(e *pb.GrpcLogEntry) error { + b, err := proto.Marshal(e) + if err != nil { + grpclog.Infof("binary logging: failed to marshal proto message: %v", err) + } + hdr := make([]byte, 4) + binary.BigEndian.PutUint32(hdr, uint32(len(b))) + if _, err := ws.out.Write(hdr); err != nil { + return err + } + if _, err := ws.out.Write(b); err != nil { + return err + } + return nil +} + +func (ws *writerSink) Close() error { return nil } + +type bufWriteCloserSink struct { + mu sync.Mutex + closer io.Closer + out *writerSink // out is built on buf. + buf *bufio.Writer // buf is kept for flush. + + writeStartOnce sync.Once + writeTicker *time.Ticker +} + +func (fs *bufWriteCloserSink) Write(e *pb.GrpcLogEntry) error { + // Start the write loop when Write is called. + fs.writeStartOnce.Do(fs.startFlushGoroutine) + fs.mu.Lock() + if err := fs.out.Write(e); err != nil { + fs.mu.Unlock() + return err + } + fs.mu.Unlock() + return nil +} + +const ( + bufFlushDuration = 60 * time.Second +) + +func (fs *bufWriteCloserSink) startFlushGoroutine() { + fs.writeTicker = time.NewTicker(bufFlushDuration) + go func() { + for range fs.writeTicker.C { + fs.mu.Lock() + fs.buf.Flush() + fs.mu.Unlock() + } + }() +} + +func (fs *bufWriteCloserSink) Close() error { + if fs.writeTicker != nil { + fs.writeTicker.Stop() + } + fs.mu.Lock() + fs.buf.Flush() + fs.closer.Close() + fs.out.Close() + fs.mu.Unlock() + return nil +} + +func newBufWriteCloserSink(o io.WriteCloser) Sink { + bufW := bufio.NewWriter(o) + return &bufWriteCloserSink{ + closer: o, + out: newWriterSink(bufW), + buf: bufW, + } +} + +// NewTempFileSink creates a temp file and returns a Sink that writes to this +// file. +func NewTempFileSink() (Sink, error) { + tempFile, err := ioutil.TempFile("/tmp", "grpcgo_binarylog_*.txt") + if err != nil { + return nil, fmt.Errorf("failed to create temp file: %v", err) + } + return newBufWriteCloserSink(tempFile), nil +} diff --git a/vendor/google.golang.org/grpc/internal/binarylog/util.go b/vendor/google.golang.org/grpc/internal/binarylog/util.go new file mode 100644 index 0000000000..15dc7803d8 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/binarylog/util.go @@ -0,0 +1,41 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package binarylog + +import ( + "errors" + "strings" +) + +// parseMethodName splits service and method from the input. It expects format +// "/service/method". +// +// TODO: move to internal/grpcutil. +func parseMethodName(methodName string) (service, method string, _ error) { + if !strings.HasPrefix(methodName, "/") { + return "", "", errors.New("invalid method name: should start with /") + } + methodName = methodName[1:] + + pos := strings.LastIndex(methodName, "/") + if pos < 0 { + return "", "", errors.New("invalid method name: suffix /method is missing") + } + return methodName[:pos], methodName[pos+1:], nil +} diff --git a/vendor/google.golang.org/grpc/internal/channelz/funcs.go b/vendor/google.golang.org/grpc/internal/channelz/funcs.go new file mode 100644 index 0000000000..f0744f9937 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/channelz/funcs.go @@ -0,0 +1,727 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package channelz defines APIs for enabling channelz service, entry +// registration/deletion, and accessing channelz data. It also defines channelz +// metric struct formats. +// +// All APIs in this package are experimental. +package channelz + +import ( + "fmt" + "sort" + "sync" + "sync/atomic" + "time" + + "google.golang.org/grpc/grpclog" +) + +const ( + defaultMaxTraceEntry int32 = 30 +) + +var ( + db dbWrapper + idGen idGenerator + // EntryPerPage defines the number of channelz entries to be shown on a web page. + EntryPerPage = int64(50) + curState int32 + maxTraceEntry = defaultMaxTraceEntry +) + +// TurnOn turns on channelz data collection. +func TurnOn() { + if !IsOn() { + NewChannelzStorage() + atomic.StoreInt32(&curState, 1) + } +} + +// IsOn returns whether channelz data collection is on. +func IsOn() bool { + return atomic.CompareAndSwapInt32(&curState, 1, 1) +} + +// SetMaxTraceEntry sets maximum number of trace entry per entity (i.e. channel/subchannel). +// Setting it to 0 will disable channel tracing. +func SetMaxTraceEntry(i int32) { + atomic.StoreInt32(&maxTraceEntry, i) +} + +// ResetMaxTraceEntryToDefault resets the maximum number of trace entry per entity to default. +func ResetMaxTraceEntryToDefault() { + atomic.StoreInt32(&maxTraceEntry, defaultMaxTraceEntry) +} + +func getMaxTraceEntry() int { + i := atomic.LoadInt32(&maxTraceEntry) + return int(i) +} + +// dbWarpper wraps around a reference to internal channelz data storage, and +// provide synchronized functionality to set and get the reference. +type dbWrapper struct { + mu sync.RWMutex + DB *channelMap +} + +func (d *dbWrapper) set(db *channelMap) { + d.mu.Lock() + d.DB = db + d.mu.Unlock() +} + +func (d *dbWrapper) get() *channelMap { + d.mu.RLock() + defer d.mu.RUnlock() + return d.DB +} + +// NewChannelzStorage initializes channelz data storage and id generator. +// +// This function returns a cleanup function to wait for all channelz state to be reset by the +// grpc goroutines when those entities get closed. By using this cleanup function, we make sure tests +// don't mess up each other, i.e. lingering goroutine from previous test doing entity removal happen +// to remove some entity just register by the new test, since the id space is the same. +// +// Note: This function is exported for testing purpose only. User should not call +// it in most cases. +func NewChannelzStorage() (cleanup func() error) { + db.set(&channelMap{ + topLevelChannels: make(map[int64]struct{}), + channels: make(map[int64]*channel), + listenSockets: make(map[int64]*listenSocket), + normalSockets: make(map[int64]*normalSocket), + servers: make(map[int64]*server), + subChannels: make(map[int64]*subChannel), + }) + idGen.reset() + return func() error { + var err error + cm := db.get() + if cm == nil { + return nil + } + for i := 0; i < 1000; i++ { + cm.mu.Lock() + if len(cm.topLevelChannels) == 0 && len(cm.servers) == 0 && len(cm.channels) == 0 && len(cm.subChannels) == 0 && len(cm.listenSockets) == 0 && len(cm.normalSockets) == 0 { + cm.mu.Unlock() + // all things stored in the channelz map have been cleared. + return nil + } + cm.mu.Unlock() + time.Sleep(10 * time.Millisecond) + } + + cm.mu.Lock() + err = fmt.Errorf("after 10s the channelz map has not been cleaned up yet, topchannels: %d, servers: %d, channels: %d, subchannels: %d, listen sockets: %d, normal sockets: %d", len(cm.topLevelChannels), len(cm.servers), len(cm.channels), len(cm.subChannels), len(cm.listenSockets), len(cm.normalSockets)) + cm.mu.Unlock() + return err + } +} + +// GetTopChannels returns a slice of top channel's ChannelMetric, along with a +// boolean indicating whether there's more top channels to be queried for. +// +// The arg id specifies that only top channel with id at or above it will be included +// in the result. The returned slice is up to a length of the arg maxResults or +// EntryPerPage if maxResults is zero, and is sorted in ascending id order. +func GetTopChannels(id int64, maxResults int64) ([]*ChannelMetric, bool) { + return db.get().GetTopChannels(id, maxResults) +} + +// GetServers returns a slice of server's ServerMetric, along with a +// boolean indicating whether there's more servers to be queried for. +// +// The arg id specifies that only server with id at or above it will be included +// in the result. The returned slice is up to a length of the arg maxResults or +// EntryPerPage if maxResults is zero, and is sorted in ascending id order. +func GetServers(id int64, maxResults int64) ([]*ServerMetric, bool) { + return db.get().GetServers(id, maxResults) +} + +// GetServerSockets returns a slice of server's (identified by id) normal socket's +// SocketMetric, along with a boolean indicating whether there's more sockets to +// be queried for. +// +// The arg startID specifies that only sockets with id at or above it will be +// included in the result. The returned slice is up to a length of the arg maxResults +// or EntryPerPage if maxResults is zero, and is sorted in ascending id order. +func GetServerSockets(id int64, startID int64, maxResults int64) ([]*SocketMetric, bool) { + return db.get().GetServerSockets(id, startID, maxResults) +} + +// GetChannel returns the ChannelMetric for the channel (identified by id). +func GetChannel(id int64) *ChannelMetric { + return db.get().GetChannel(id) +} + +// GetSubChannel returns the SubChannelMetric for the subchannel (identified by id). +func GetSubChannel(id int64) *SubChannelMetric { + return db.get().GetSubChannel(id) +} + +// GetSocket returns the SocketInternalMetric for the socket (identified by id). +func GetSocket(id int64) *SocketMetric { + return db.get().GetSocket(id) +} + +// GetServer returns the ServerMetric for the server (identified by id). +func GetServer(id int64) *ServerMetric { + return db.get().GetServer(id) +} + +// RegisterChannel registers the given channel c in channelz database with ref +// as its reference name, and add it to the child list of its parent (identified +// by pid). pid = 0 means no parent. It returns the unique channelz tracking id +// assigned to this channel. +func RegisterChannel(c Channel, pid int64, ref string) int64 { + id := idGen.genID() + cn := &channel{ + refName: ref, + c: c, + subChans: make(map[int64]string), + nestedChans: make(map[int64]string), + id: id, + pid: pid, + trace: &channelTrace{createdTime: time.Now(), events: make([]*TraceEvent, 0, getMaxTraceEntry())}, + } + if pid == 0 { + db.get().addChannel(id, cn, true, pid, ref) + } else { + db.get().addChannel(id, cn, false, pid, ref) + } + return id +} + +// RegisterSubChannel registers the given channel c in channelz database with ref +// as its reference name, and add it to the child list of its parent (identified +// by pid). It returns the unique channelz tracking id assigned to this subchannel. +func RegisterSubChannel(c Channel, pid int64, ref string) int64 { + if pid == 0 { + grpclog.Error("a SubChannel's parent id cannot be 0") + return 0 + } + id := idGen.genID() + sc := &subChannel{ + refName: ref, + c: c, + sockets: make(map[int64]string), + id: id, + pid: pid, + trace: &channelTrace{createdTime: time.Now(), events: make([]*TraceEvent, 0, getMaxTraceEntry())}, + } + db.get().addSubChannel(id, sc, pid, ref) + return id +} + +// RegisterServer registers the given server s in channelz database. It returns +// the unique channelz tracking id assigned to this server. +func RegisterServer(s Server, ref string) int64 { + id := idGen.genID() + svr := &server{ + refName: ref, + s: s, + sockets: make(map[int64]string), + listenSockets: make(map[int64]string), + id: id, + } + db.get().addServer(id, svr) + return id +} + +// RegisterListenSocket registers the given listen socket s in channelz database +// with ref as its reference name, and add it to the child list of its parent +// (identified by pid). It returns the unique channelz tracking id assigned to +// this listen socket. +func RegisterListenSocket(s Socket, pid int64, ref string) int64 { + if pid == 0 { + grpclog.Error("a ListenSocket's parent id cannot be 0") + return 0 + } + id := idGen.genID() + ls := &listenSocket{refName: ref, s: s, id: id, pid: pid} + db.get().addListenSocket(id, ls, pid, ref) + return id +} + +// RegisterNormalSocket registers the given normal socket s in channelz database +// with ref as its reference name, and add it to the child list of its parent +// (identified by pid). It returns the unique channelz tracking id assigned to +// this normal socket. +func RegisterNormalSocket(s Socket, pid int64, ref string) int64 { + if pid == 0 { + grpclog.Error("a NormalSocket's parent id cannot be 0") + return 0 + } + id := idGen.genID() + ns := &normalSocket{refName: ref, s: s, id: id, pid: pid} + db.get().addNormalSocket(id, ns, pid, ref) + return id +} + +// RemoveEntry removes an entry with unique channelz trakcing id to be id from +// channelz database. +func RemoveEntry(id int64) { + db.get().removeEntry(id) +} + +// TraceEventDesc is what the caller of AddTraceEvent should provide to describe the event to be added +// to the channel trace. +// The Parent field is optional. It is used for event that will be recorded in the entity's parent +// trace also. +type TraceEventDesc struct { + Desc string + Severity Severity + Parent *TraceEventDesc +} + +// AddTraceEvent adds trace related to the entity with specified id, using the provided TraceEventDesc. +func AddTraceEvent(id int64, desc *TraceEventDesc) { + if getMaxTraceEntry() == 0 { + return + } + db.get().traceEvent(id, desc) +} + +// channelMap is the storage data structure for channelz. +// Methods of channelMap can be divided in two two categories with respect to locking. +// 1. Methods acquire the global lock. +// 2. Methods that can only be called when global lock is held. +// A second type of method need always to be called inside a first type of method. +type channelMap struct { + mu sync.RWMutex + topLevelChannels map[int64]struct{} + servers map[int64]*server + channels map[int64]*channel + subChannels map[int64]*subChannel + listenSockets map[int64]*listenSocket + normalSockets map[int64]*normalSocket +} + +func (c *channelMap) addServer(id int64, s *server) { + c.mu.Lock() + s.cm = c + c.servers[id] = s + c.mu.Unlock() +} + +func (c *channelMap) addChannel(id int64, cn *channel, isTopChannel bool, pid int64, ref string) { + c.mu.Lock() + cn.cm = c + cn.trace.cm = c + c.channels[id] = cn + if isTopChannel { + c.topLevelChannels[id] = struct{}{} + } else { + c.findEntry(pid).addChild(id, cn) + } + c.mu.Unlock() +} + +func (c *channelMap) addSubChannel(id int64, sc *subChannel, pid int64, ref string) { + c.mu.Lock() + sc.cm = c + sc.trace.cm = c + c.subChannels[id] = sc + c.findEntry(pid).addChild(id, sc) + c.mu.Unlock() +} + +func (c *channelMap) addListenSocket(id int64, ls *listenSocket, pid int64, ref string) { + c.mu.Lock() + ls.cm = c + c.listenSockets[id] = ls + c.findEntry(pid).addChild(id, ls) + c.mu.Unlock() +} + +func (c *channelMap) addNormalSocket(id int64, ns *normalSocket, pid int64, ref string) { + c.mu.Lock() + ns.cm = c + c.normalSockets[id] = ns + c.findEntry(pid).addChild(id, ns) + c.mu.Unlock() +} + +// removeEntry triggers the removal of an entry, which may not indeed delete the entry, if it has to +// wait on the deletion of its children and until no other entity's channel trace references it. +// It may lead to a chain of entry deletion. For example, deleting the last socket of a gracefully +// shutting down server will lead to the server being also deleted. +func (c *channelMap) removeEntry(id int64) { + c.mu.Lock() + c.findEntry(id).triggerDelete() + c.mu.Unlock() +} + +// c.mu must be held by the caller +func (c *channelMap) decrTraceRefCount(id int64) { + e := c.findEntry(id) + if v, ok := e.(tracedChannel); ok { + v.decrTraceRefCount() + e.deleteSelfIfReady() + } +} + +// c.mu must be held by the caller. +func (c *channelMap) findEntry(id int64) entry { + var v entry + var ok bool + if v, ok = c.channels[id]; ok { + return v + } + if v, ok = c.subChannels[id]; ok { + return v + } + if v, ok = c.servers[id]; ok { + return v + } + if v, ok = c.listenSockets[id]; ok { + return v + } + if v, ok = c.normalSockets[id]; ok { + return v + } + return &dummyEntry{idNotFound: id} +} + +// c.mu must be held by the caller +// deleteEntry simply deletes an entry from the channelMap. Before calling this +// method, caller must check this entry is ready to be deleted, i.e removeEntry() +// has been called on it, and no children still exist. +// Conditionals are ordered by the expected frequency of deletion of each entity +// type, in order to optimize performance. +func (c *channelMap) deleteEntry(id int64) { + var ok bool + if _, ok = c.normalSockets[id]; ok { + delete(c.normalSockets, id) + return + } + if _, ok = c.subChannels[id]; ok { + delete(c.subChannels, id) + return + } + if _, ok = c.channels[id]; ok { + delete(c.channels, id) + delete(c.topLevelChannels, id) + return + } + if _, ok = c.listenSockets[id]; ok { + delete(c.listenSockets, id) + return + } + if _, ok = c.servers[id]; ok { + delete(c.servers, id) + return + } +} + +func (c *channelMap) traceEvent(id int64, desc *TraceEventDesc) { + c.mu.Lock() + child := c.findEntry(id) + childTC, ok := child.(tracedChannel) + if !ok { + c.mu.Unlock() + return + } + childTC.getChannelTrace().append(&TraceEvent{Desc: desc.Desc, Severity: desc.Severity, Timestamp: time.Now()}) + if desc.Parent != nil { + parent := c.findEntry(child.getParentID()) + var chanType RefChannelType + switch child.(type) { + case *channel: + chanType = RefChannel + case *subChannel: + chanType = RefSubChannel + } + if parentTC, ok := parent.(tracedChannel); ok { + parentTC.getChannelTrace().append(&TraceEvent{ + Desc: desc.Parent.Desc, + Severity: desc.Parent.Severity, + Timestamp: time.Now(), + RefID: id, + RefName: childTC.getRefName(), + RefType: chanType, + }) + childTC.incrTraceRefCount() + } + } + c.mu.Unlock() +} + +type int64Slice []int64 + +func (s int64Slice) Len() int { return len(s) } +func (s int64Slice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } +func (s int64Slice) Less(i, j int) bool { return s[i] < s[j] } + +func copyMap(m map[int64]string) map[int64]string { + n := make(map[int64]string) + for k, v := range m { + n[k] = v + } + return n +} + +func min(a, b int64) int64 { + if a < b { + return a + } + return b +} + +func (c *channelMap) GetTopChannels(id int64, maxResults int64) ([]*ChannelMetric, bool) { + if maxResults <= 0 { + maxResults = EntryPerPage + } + c.mu.RLock() + l := int64(len(c.topLevelChannels)) + ids := make([]int64, 0, l) + cns := make([]*channel, 0, min(l, maxResults)) + + for k := range c.topLevelChannels { + ids = append(ids, k) + } + sort.Sort(int64Slice(ids)) + idx := sort.Search(len(ids), func(i int) bool { return ids[i] >= id }) + count := int64(0) + var end bool + var t []*ChannelMetric + for i, v := range ids[idx:] { + if count == maxResults { + break + } + if cn, ok := c.channels[v]; ok { + cns = append(cns, cn) + t = append(t, &ChannelMetric{ + NestedChans: copyMap(cn.nestedChans), + SubChans: copyMap(cn.subChans), + }) + count++ + } + if i == len(ids[idx:])-1 { + end = true + break + } + } + c.mu.RUnlock() + if count == 0 { + end = true + } + + for i, cn := range cns { + t[i].ChannelData = cn.c.ChannelzMetric() + t[i].ID = cn.id + t[i].RefName = cn.refName + t[i].Trace = cn.trace.dumpData() + } + return t, end +} + +func (c *channelMap) GetServers(id, maxResults int64) ([]*ServerMetric, bool) { + if maxResults <= 0 { + maxResults = EntryPerPage + } + c.mu.RLock() + l := int64(len(c.servers)) + ids := make([]int64, 0, l) + ss := make([]*server, 0, min(l, maxResults)) + for k := range c.servers { + ids = append(ids, k) + } + sort.Sort(int64Slice(ids)) + idx := sort.Search(len(ids), func(i int) bool { return ids[i] >= id }) + count := int64(0) + var end bool + var s []*ServerMetric + for i, v := range ids[idx:] { + if count == maxResults { + break + } + if svr, ok := c.servers[v]; ok { + ss = append(ss, svr) + s = append(s, &ServerMetric{ + ListenSockets: copyMap(svr.listenSockets), + }) + count++ + } + if i == len(ids[idx:])-1 { + end = true + break + } + } + c.mu.RUnlock() + if count == 0 { + end = true + } + + for i, svr := range ss { + s[i].ServerData = svr.s.ChannelzMetric() + s[i].ID = svr.id + s[i].RefName = svr.refName + } + return s, end +} + +func (c *channelMap) GetServerSockets(id int64, startID int64, maxResults int64) ([]*SocketMetric, bool) { + if maxResults <= 0 { + maxResults = EntryPerPage + } + var svr *server + var ok bool + c.mu.RLock() + if svr, ok = c.servers[id]; !ok { + // server with id doesn't exist. + c.mu.RUnlock() + return nil, true + } + svrskts := svr.sockets + l := int64(len(svrskts)) + ids := make([]int64, 0, l) + sks := make([]*normalSocket, 0, min(l, maxResults)) + for k := range svrskts { + ids = append(ids, k) + } + sort.Sort(int64Slice(ids)) + idx := sort.Search(len(ids), func(i int) bool { return ids[i] >= startID }) + count := int64(0) + var end bool + for i, v := range ids[idx:] { + if count == maxResults { + break + } + if ns, ok := c.normalSockets[v]; ok { + sks = append(sks, ns) + count++ + } + if i == len(ids[idx:])-1 { + end = true + break + } + } + c.mu.RUnlock() + if count == 0 { + end = true + } + var s []*SocketMetric + for _, ns := range sks { + sm := &SocketMetric{} + sm.SocketData = ns.s.ChannelzMetric() + sm.ID = ns.id + sm.RefName = ns.refName + s = append(s, sm) + } + return s, end +} + +func (c *channelMap) GetChannel(id int64) *ChannelMetric { + cm := &ChannelMetric{} + var cn *channel + var ok bool + c.mu.RLock() + if cn, ok = c.channels[id]; !ok { + // channel with id doesn't exist. + c.mu.RUnlock() + return nil + } + cm.NestedChans = copyMap(cn.nestedChans) + cm.SubChans = copyMap(cn.subChans) + // cn.c can be set to &dummyChannel{} when deleteSelfFromMap is called. Save a copy of cn.c when + // holding the lock to prevent potential data race. + chanCopy := cn.c + c.mu.RUnlock() + cm.ChannelData = chanCopy.ChannelzMetric() + cm.ID = cn.id + cm.RefName = cn.refName + cm.Trace = cn.trace.dumpData() + return cm +} + +func (c *channelMap) GetSubChannel(id int64) *SubChannelMetric { + cm := &SubChannelMetric{} + var sc *subChannel + var ok bool + c.mu.RLock() + if sc, ok = c.subChannels[id]; !ok { + // subchannel with id doesn't exist. + c.mu.RUnlock() + return nil + } + cm.Sockets = copyMap(sc.sockets) + // sc.c can be set to &dummyChannel{} when deleteSelfFromMap is called. Save a copy of sc.c when + // holding the lock to prevent potential data race. + chanCopy := sc.c + c.mu.RUnlock() + cm.ChannelData = chanCopy.ChannelzMetric() + cm.ID = sc.id + cm.RefName = sc.refName + cm.Trace = sc.trace.dumpData() + return cm +} + +func (c *channelMap) GetSocket(id int64) *SocketMetric { + sm := &SocketMetric{} + c.mu.RLock() + if ls, ok := c.listenSockets[id]; ok { + c.mu.RUnlock() + sm.SocketData = ls.s.ChannelzMetric() + sm.ID = ls.id + sm.RefName = ls.refName + return sm + } + if ns, ok := c.normalSockets[id]; ok { + c.mu.RUnlock() + sm.SocketData = ns.s.ChannelzMetric() + sm.ID = ns.id + sm.RefName = ns.refName + return sm + } + c.mu.RUnlock() + return nil +} + +func (c *channelMap) GetServer(id int64) *ServerMetric { + sm := &ServerMetric{} + var svr *server + var ok bool + c.mu.RLock() + if svr, ok = c.servers[id]; !ok { + c.mu.RUnlock() + return nil + } + sm.ListenSockets = copyMap(svr.listenSockets) + c.mu.RUnlock() + sm.ID = svr.id + sm.RefName = svr.refName + sm.ServerData = svr.s.ChannelzMetric() + return sm +} + +type idGenerator struct { + id int64 +} + +func (i *idGenerator) reset() { + atomic.StoreInt64(&i.id, 0) +} + +func (i *idGenerator) genID() int64 { + return atomic.AddInt64(&i.id, 1) +} diff --git a/vendor/google.golang.org/grpc/internal/channelz/types.go b/vendor/google.golang.org/grpc/internal/channelz/types.go new file mode 100644 index 0000000000..17c2274cb3 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/channelz/types.go @@ -0,0 +1,702 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package channelz + +import ( + "net" + "sync" + "sync/atomic" + "time" + + "google.golang.org/grpc/connectivity" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/grpclog" +) + +// entry represents a node in the channelz database. +type entry interface { + // addChild adds a child e, whose channelz id is id to child list + addChild(id int64, e entry) + // deleteChild deletes a child with channelz id to be id from child list + deleteChild(id int64) + // triggerDelete tries to delete self from channelz database. However, if child + // list is not empty, then deletion from the database is on hold until the last + // child is deleted from database. + triggerDelete() + // deleteSelfIfReady check whether triggerDelete() has been called before, and whether child + // list is now empty. If both conditions are met, then delete self from database. + deleteSelfIfReady() + // getParentID returns parent ID of the entry. 0 value parent ID means no parent. + getParentID() int64 +} + +// dummyEntry is a fake entry to handle entry not found case. +type dummyEntry struct { + idNotFound int64 +} + +func (d *dummyEntry) addChild(id int64, e entry) { + // Note: It is possible for a normal program to reach here under race condition. + // For example, there could be a race between ClientConn.Close() info being propagated + // to addrConn and http2Client. ClientConn.Close() cancel the context and result + // in http2Client to error. The error info is then caught by transport monitor + // and before addrConn.tearDown() is called in side ClientConn.Close(). Therefore, + // the addrConn will create a new transport. And when registering the new transport in + // channelz, its parent addrConn could have already been torn down and deleted + // from channelz tracking, and thus reach the code here. + grpclog.Infof("attempt to add child of type %T with id %d to a parent (id=%d) that doesn't currently exist", e, id, d.idNotFound) +} + +func (d *dummyEntry) deleteChild(id int64) { + // It is possible for a normal program to reach here under race condition. + // Refer to the example described in addChild(). + grpclog.Infof("attempt to delete child with id %d from a parent (id=%d) that doesn't currently exist", id, d.idNotFound) +} + +func (d *dummyEntry) triggerDelete() { + grpclog.Warningf("attempt to delete an entry (id=%d) that doesn't currently exist", d.idNotFound) +} + +func (*dummyEntry) deleteSelfIfReady() { + // code should not reach here. deleteSelfIfReady is always called on an existing entry. +} + +func (*dummyEntry) getParentID() int64 { + return 0 +} + +// ChannelMetric defines the info channelz provides for a specific Channel, which +// includes ChannelInternalMetric and channelz-specific data, such as channelz id, +// child list, etc. +type ChannelMetric struct { + // ID is the channelz id of this channel. + ID int64 + // RefName is the human readable reference string of this channel. + RefName string + // ChannelData contains channel internal metric reported by the channel through + // ChannelzMetric(). + ChannelData *ChannelInternalMetric + // NestedChans tracks the nested channel type children of this channel in the format of + // a map from nested channel channelz id to corresponding reference string. + NestedChans map[int64]string + // SubChans tracks the subchannel type children of this channel in the format of a + // map from subchannel channelz id to corresponding reference string. + SubChans map[int64]string + // Sockets tracks the socket type children of this channel in the format of a map + // from socket channelz id to corresponding reference string. + // Note current grpc implementation doesn't allow channel having sockets directly, + // therefore, this is field is unused. + Sockets map[int64]string + // Trace contains the most recent traced events. + Trace *ChannelTrace +} + +// SubChannelMetric defines the info channelz provides for a specific SubChannel, +// which includes ChannelInternalMetric and channelz-specific data, such as +// channelz id, child list, etc. +type SubChannelMetric struct { + // ID is the channelz id of this subchannel. + ID int64 + // RefName is the human readable reference string of this subchannel. + RefName string + // ChannelData contains subchannel internal metric reported by the subchannel + // through ChannelzMetric(). + ChannelData *ChannelInternalMetric + // NestedChans tracks the nested channel type children of this subchannel in the format of + // a map from nested channel channelz id to corresponding reference string. + // Note current grpc implementation doesn't allow subchannel to have nested channels + // as children, therefore, this field is unused. + NestedChans map[int64]string + // SubChans tracks the subchannel type children of this subchannel in the format of a + // map from subchannel channelz id to corresponding reference string. + // Note current grpc implementation doesn't allow subchannel to have subchannels + // as children, therefore, this field is unused. + SubChans map[int64]string + // Sockets tracks the socket type children of this subchannel in the format of a map + // from socket channelz id to corresponding reference string. + Sockets map[int64]string + // Trace contains the most recent traced events. + Trace *ChannelTrace +} + +// ChannelInternalMetric defines the struct that the implementor of Channel interface +// should return from ChannelzMetric(). +type ChannelInternalMetric struct { + // current connectivity state of the channel. + State connectivity.State + // The target this channel originally tried to connect to. May be absent + Target string + // The number of calls started on the channel. + CallsStarted int64 + // The number of calls that have completed with an OK status. + CallsSucceeded int64 + // The number of calls that have a completed with a non-OK status. + CallsFailed int64 + // The last time a call was started on the channel. + LastCallStartedTimestamp time.Time +} + +// ChannelTrace stores traced events on a channel/subchannel and related info. +type ChannelTrace struct { + // EventNum is the number of events that ever got traced (i.e. including those that have been deleted) + EventNum int64 + // CreationTime is the creation time of the trace. + CreationTime time.Time + // Events stores the most recent trace events (up to $maxTraceEntry, newer event will overwrite the + // oldest one) + Events []*TraceEvent +} + +// TraceEvent represent a single trace event +type TraceEvent struct { + // Desc is a simple description of the trace event. + Desc string + // Severity states the severity of this trace event. + Severity Severity + // Timestamp is the event time. + Timestamp time.Time + // RefID is the id of the entity that gets referenced in the event. RefID is 0 if no other entity is + // involved in this event. + // e.g. SubChannel (id: 4[]) Created. --> RefID = 4, RefName = "" (inside []) + RefID int64 + // RefName is the reference name for the entity that gets referenced in the event. + RefName string + // RefType indicates the referenced entity type, i.e Channel or SubChannel. + RefType RefChannelType +} + +// Channel is the interface that should be satisfied in order to be tracked by +// channelz as Channel or SubChannel. +type Channel interface { + ChannelzMetric() *ChannelInternalMetric +} + +type dummyChannel struct{} + +func (d *dummyChannel) ChannelzMetric() *ChannelInternalMetric { + return &ChannelInternalMetric{} +} + +type channel struct { + refName string + c Channel + closeCalled bool + nestedChans map[int64]string + subChans map[int64]string + id int64 + pid int64 + cm *channelMap + trace *channelTrace + // traceRefCount is the number of trace events that reference this channel. + // Non-zero traceRefCount means the trace of this channel cannot be deleted. + traceRefCount int32 +} + +func (c *channel) addChild(id int64, e entry) { + switch v := e.(type) { + case *subChannel: + c.subChans[id] = v.refName + case *channel: + c.nestedChans[id] = v.refName + default: + grpclog.Errorf("cannot add a child (id = %d) of type %T to a channel", id, e) + } +} + +func (c *channel) deleteChild(id int64) { + delete(c.subChans, id) + delete(c.nestedChans, id) + c.deleteSelfIfReady() +} + +func (c *channel) triggerDelete() { + c.closeCalled = true + c.deleteSelfIfReady() +} + +func (c *channel) getParentID() int64 { + return c.pid +} + +// deleteSelfFromTree tries to delete the channel from the channelz entry relation tree, which means +// deleting the channel reference from its parent's child list. +// +// In order for a channel to be deleted from the tree, it must meet the criteria that, removal of the +// corresponding grpc object has been invoked, and the channel does not have any children left. +// +// The returned boolean value indicates whether the channel has been successfully deleted from tree. +func (c *channel) deleteSelfFromTree() (deleted bool) { + if !c.closeCalled || len(c.subChans)+len(c.nestedChans) != 0 { + return false + } + // not top channel + if c.pid != 0 { + c.cm.findEntry(c.pid).deleteChild(c.id) + } + return true +} + +// deleteSelfFromMap checks whether it is valid to delete the channel from the map, which means +// deleting the channel from channelz's tracking entirely. Users can no longer use id to query the +// channel, and its memory will be garbage collected. +// +// The trace reference count of the channel must be 0 in order to be deleted from the map. This is +// specified in the channel tracing gRFC that as long as some other trace has reference to an entity, +// the trace of the referenced entity must not be deleted. In order to release the resource allocated +// by grpc, the reference to the grpc object is reset to a dummy object. +// +// deleteSelfFromMap must be called after deleteSelfFromTree returns true. +// +// It returns a bool to indicate whether the channel can be safely deleted from map. +func (c *channel) deleteSelfFromMap() (delete bool) { + if c.getTraceRefCount() != 0 { + c.c = &dummyChannel{} + return false + } + return true +} + +// deleteSelfIfReady tries to delete the channel itself from the channelz database. +// The delete process includes two steps: +// 1. delete the channel from the entry relation tree, i.e. delete the channel reference from its +// parent's child list. +// 2. delete the channel from the map, i.e. delete the channel entirely from channelz. Lookup by id +// will return entry not found error. +func (c *channel) deleteSelfIfReady() { + if !c.deleteSelfFromTree() { + return + } + if !c.deleteSelfFromMap() { + return + } + c.cm.deleteEntry(c.id) + c.trace.clear() +} + +func (c *channel) getChannelTrace() *channelTrace { + return c.trace +} + +func (c *channel) incrTraceRefCount() { + atomic.AddInt32(&c.traceRefCount, 1) +} + +func (c *channel) decrTraceRefCount() { + atomic.AddInt32(&c.traceRefCount, -1) +} + +func (c *channel) getTraceRefCount() int { + i := atomic.LoadInt32(&c.traceRefCount) + return int(i) +} + +func (c *channel) getRefName() string { + return c.refName +} + +type subChannel struct { + refName string + c Channel + closeCalled bool + sockets map[int64]string + id int64 + pid int64 + cm *channelMap + trace *channelTrace + traceRefCount int32 +} + +func (sc *subChannel) addChild(id int64, e entry) { + if v, ok := e.(*normalSocket); ok { + sc.sockets[id] = v.refName + } else { + grpclog.Errorf("cannot add a child (id = %d) of type %T to a subChannel", id, e) + } +} + +func (sc *subChannel) deleteChild(id int64) { + delete(sc.sockets, id) + sc.deleteSelfIfReady() +} + +func (sc *subChannel) triggerDelete() { + sc.closeCalled = true + sc.deleteSelfIfReady() +} + +func (sc *subChannel) getParentID() int64 { + return sc.pid +} + +// deleteSelfFromTree tries to delete the subchannel from the channelz entry relation tree, which +// means deleting the subchannel reference from its parent's child list. +// +// In order for a subchannel to be deleted from the tree, it must meet the criteria that, removal of +// the corresponding grpc object has been invoked, and the subchannel does not have any children left. +// +// The returned boolean value indicates whether the channel has been successfully deleted from tree. +func (sc *subChannel) deleteSelfFromTree() (deleted bool) { + if !sc.closeCalled || len(sc.sockets) != 0 { + return false + } + sc.cm.findEntry(sc.pid).deleteChild(sc.id) + return true +} + +// deleteSelfFromMap checks whether it is valid to delete the subchannel from the map, which means +// deleting the subchannel from channelz's tracking entirely. Users can no longer use id to query +// the subchannel, and its memory will be garbage collected. +// +// The trace reference count of the subchannel must be 0 in order to be deleted from the map. This is +// specified in the channel tracing gRFC that as long as some other trace has reference to an entity, +// the trace of the referenced entity must not be deleted. In order to release the resource allocated +// by grpc, the reference to the grpc object is reset to a dummy object. +// +// deleteSelfFromMap must be called after deleteSelfFromTree returns true. +// +// It returns a bool to indicate whether the channel can be safely deleted from map. +func (sc *subChannel) deleteSelfFromMap() (delete bool) { + if sc.getTraceRefCount() != 0 { + // free the grpc struct (i.e. addrConn) + sc.c = &dummyChannel{} + return false + } + return true +} + +// deleteSelfIfReady tries to delete the subchannel itself from the channelz database. +// The delete process includes two steps: +// 1. delete the subchannel from the entry relation tree, i.e. delete the subchannel reference from +// its parent's child list. +// 2. delete the subchannel from the map, i.e. delete the subchannel entirely from channelz. Lookup +// by id will return entry not found error. +func (sc *subChannel) deleteSelfIfReady() { + if !sc.deleteSelfFromTree() { + return + } + if !sc.deleteSelfFromMap() { + return + } + sc.cm.deleteEntry(sc.id) + sc.trace.clear() +} + +func (sc *subChannel) getChannelTrace() *channelTrace { + return sc.trace +} + +func (sc *subChannel) incrTraceRefCount() { + atomic.AddInt32(&sc.traceRefCount, 1) +} + +func (sc *subChannel) decrTraceRefCount() { + atomic.AddInt32(&sc.traceRefCount, -1) +} + +func (sc *subChannel) getTraceRefCount() int { + i := atomic.LoadInt32(&sc.traceRefCount) + return int(i) +} + +func (sc *subChannel) getRefName() string { + return sc.refName +} + +// SocketMetric defines the info channelz provides for a specific Socket, which +// includes SocketInternalMetric and channelz-specific data, such as channelz id, etc. +type SocketMetric struct { + // ID is the channelz id of this socket. + ID int64 + // RefName is the human readable reference string of this socket. + RefName string + // SocketData contains socket internal metric reported by the socket through + // ChannelzMetric(). + SocketData *SocketInternalMetric +} + +// SocketInternalMetric defines the struct that the implementor of Socket interface +// should return from ChannelzMetric(). +type SocketInternalMetric struct { + // The number of streams that have been started. + StreamsStarted int64 + // The number of streams that have ended successfully: + // On client side, receiving frame with eos bit set. + // On server side, sending frame with eos bit set. + StreamsSucceeded int64 + // The number of streams that have ended unsuccessfully: + // On client side, termination without receiving frame with eos bit set. + // On server side, termination without sending frame with eos bit set. + StreamsFailed int64 + // The number of messages successfully sent on this socket. + MessagesSent int64 + MessagesReceived int64 + // The number of keep alives sent. This is typically implemented with HTTP/2 + // ping messages. + KeepAlivesSent int64 + // The last time a stream was created by this endpoint. Usually unset for + // servers. + LastLocalStreamCreatedTimestamp time.Time + // The last time a stream was created by the remote endpoint. Usually unset + // for clients. + LastRemoteStreamCreatedTimestamp time.Time + // The last time a message was sent by this endpoint. + LastMessageSentTimestamp time.Time + // The last time a message was received by this endpoint. + LastMessageReceivedTimestamp time.Time + // The amount of window, granted to the local endpoint by the remote endpoint. + // This may be slightly out of date due to network latency. This does NOT + // include stream level or TCP level flow control info. + LocalFlowControlWindow int64 + // The amount of window, granted to the remote endpoint by the local endpoint. + // This may be slightly out of date due to network latency. This does NOT + // include stream level or TCP level flow control info. + RemoteFlowControlWindow int64 + // The locally bound address. + LocalAddr net.Addr + // The remote bound address. May be absent. + RemoteAddr net.Addr + // Optional, represents the name of the remote endpoint, if different than + // the original target name. + RemoteName string + SocketOptions *SocketOptionData + Security credentials.ChannelzSecurityValue +} + +// Socket is the interface that should be satisfied in order to be tracked by +// channelz as Socket. +type Socket interface { + ChannelzMetric() *SocketInternalMetric +} + +type listenSocket struct { + refName string + s Socket + id int64 + pid int64 + cm *channelMap +} + +func (ls *listenSocket) addChild(id int64, e entry) { + grpclog.Errorf("cannot add a child (id = %d) of type %T to a listen socket", id, e) +} + +func (ls *listenSocket) deleteChild(id int64) { + grpclog.Errorf("cannot delete a child (id = %d) from a listen socket", id) +} + +func (ls *listenSocket) triggerDelete() { + ls.cm.deleteEntry(ls.id) + ls.cm.findEntry(ls.pid).deleteChild(ls.id) +} + +func (ls *listenSocket) deleteSelfIfReady() { + grpclog.Errorf("cannot call deleteSelfIfReady on a listen socket") +} + +func (ls *listenSocket) getParentID() int64 { + return ls.pid +} + +type normalSocket struct { + refName string + s Socket + id int64 + pid int64 + cm *channelMap +} + +func (ns *normalSocket) addChild(id int64, e entry) { + grpclog.Errorf("cannot add a child (id = %d) of type %T to a normal socket", id, e) +} + +func (ns *normalSocket) deleteChild(id int64) { + grpclog.Errorf("cannot delete a child (id = %d) from a normal socket", id) +} + +func (ns *normalSocket) triggerDelete() { + ns.cm.deleteEntry(ns.id) + ns.cm.findEntry(ns.pid).deleteChild(ns.id) +} + +func (ns *normalSocket) deleteSelfIfReady() { + grpclog.Errorf("cannot call deleteSelfIfReady on a normal socket") +} + +func (ns *normalSocket) getParentID() int64 { + return ns.pid +} + +// ServerMetric defines the info channelz provides for a specific Server, which +// includes ServerInternalMetric and channelz-specific data, such as channelz id, +// child list, etc. +type ServerMetric struct { + // ID is the channelz id of this server. + ID int64 + // RefName is the human readable reference string of this server. + RefName string + // ServerData contains server internal metric reported by the server through + // ChannelzMetric(). + ServerData *ServerInternalMetric + // ListenSockets tracks the listener socket type children of this server in the + // format of a map from socket channelz id to corresponding reference string. + ListenSockets map[int64]string +} + +// ServerInternalMetric defines the struct that the implementor of Server interface +// should return from ChannelzMetric(). +type ServerInternalMetric struct { + // The number of incoming calls started on the server. + CallsStarted int64 + // The number of incoming calls that have completed with an OK status. + CallsSucceeded int64 + // The number of incoming calls that have a completed with a non-OK status. + CallsFailed int64 + // The last time a call was started on the server. + LastCallStartedTimestamp time.Time +} + +// Server is the interface to be satisfied in order to be tracked by channelz as +// Server. +type Server interface { + ChannelzMetric() *ServerInternalMetric +} + +type server struct { + refName string + s Server + closeCalled bool + sockets map[int64]string + listenSockets map[int64]string + id int64 + cm *channelMap +} + +func (s *server) addChild(id int64, e entry) { + switch v := e.(type) { + case *normalSocket: + s.sockets[id] = v.refName + case *listenSocket: + s.listenSockets[id] = v.refName + default: + grpclog.Errorf("cannot add a child (id = %d) of type %T to a server", id, e) + } +} + +func (s *server) deleteChild(id int64) { + delete(s.sockets, id) + delete(s.listenSockets, id) + s.deleteSelfIfReady() +} + +func (s *server) triggerDelete() { + s.closeCalled = true + s.deleteSelfIfReady() +} + +func (s *server) deleteSelfIfReady() { + if !s.closeCalled || len(s.sockets)+len(s.listenSockets) != 0 { + return + } + s.cm.deleteEntry(s.id) +} + +func (s *server) getParentID() int64 { + return 0 +} + +type tracedChannel interface { + getChannelTrace() *channelTrace + incrTraceRefCount() + decrTraceRefCount() + getRefName() string +} + +type channelTrace struct { + cm *channelMap + createdTime time.Time + eventCount int64 + mu sync.Mutex + events []*TraceEvent +} + +func (c *channelTrace) append(e *TraceEvent) { + c.mu.Lock() + if len(c.events) == getMaxTraceEntry() { + del := c.events[0] + c.events = c.events[1:] + if del.RefID != 0 { + // start recursive cleanup in a goroutine to not block the call originated from grpc. + go func() { + // need to acquire c.cm.mu lock to call the unlocked attemptCleanup func. + c.cm.mu.Lock() + c.cm.decrTraceRefCount(del.RefID) + c.cm.mu.Unlock() + }() + } + } + e.Timestamp = time.Now() + c.events = append(c.events, e) + c.eventCount++ + c.mu.Unlock() +} + +func (c *channelTrace) clear() { + c.mu.Lock() + for _, e := range c.events { + if e.RefID != 0 { + // caller should have already held the c.cm.mu lock. + c.cm.decrTraceRefCount(e.RefID) + } + } + c.mu.Unlock() +} + +// Severity is the severity level of a trace event. +// The canonical enumeration of all valid values is here: +// https://github.com/grpc/grpc-proto/blob/9b13d199cc0d4703c7ea26c9c330ba695866eb23/grpc/channelz/v1/channelz.proto#L126. +type Severity int + +const ( + // CtUNKNOWN indicates unknown severity of a trace event. + CtUNKNOWN Severity = iota + // CtINFO indicates info level severity of a trace event. + CtINFO + // CtWarning indicates warning level severity of a trace event. + CtWarning + // CtError indicates error level severity of a trace event. + CtError +) + +// RefChannelType is the type of the entity being referenced in a trace event. +type RefChannelType int + +const ( + // RefChannel indicates the referenced entity is a Channel. + RefChannel RefChannelType = iota + // RefSubChannel indicates the referenced entity is a SubChannel. + RefSubChannel +) + +func (c *channelTrace) dumpData() *ChannelTrace { + c.mu.Lock() + ct := &ChannelTrace{EventNum: c.eventCount, CreationTime: c.createdTime} + ct.Events = c.events[:len(c.events)] + c.mu.Unlock() + return ct +} diff --git a/vendor/google.golang.org/grpc/internal/channelz/types_linux.go b/vendor/google.golang.org/grpc/internal/channelz/types_linux.go new file mode 100644 index 0000000000..692dd61817 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/channelz/types_linux.go @@ -0,0 +1,53 @@ +// +build !appengine + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package channelz + +import ( + "syscall" + + "golang.org/x/sys/unix" +) + +// SocketOptionData defines the struct to hold socket option data, and related +// getter function to obtain info from fd. +type SocketOptionData struct { + Linger *unix.Linger + RecvTimeout *unix.Timeval + SendTimeout *unix.Timeval + TCPInfo *unix.TCPInfo +} + +// Getsockopt defines the function to get socket options requested by channelz. +// It is to be passed to syscall.RawConn.Control(). +func (s *SocketOptionData) Getsockopt(fd uintptr) { + if v, err := unix.GetsockoptLinger(int(fd), syscall.SOL_SOCKET, syscall.SO_LINGER); err == nil { + s.Linger = v + } + if v, err := unix.GetsockoptTimeval(int(fd), syscall.SOL_SOCKET, syscall.SO_RCVTIMEO); err == nil { + s.RecvTimeout = v + } + if v, err := unix.GetsockoptTimeval(int(fd), syscall.SOL_SOCKET, syscall.SO_SNDTIMEO); err == nil { + s.SendTimeout = v + } + if v, err := unix.GetsockoptTCPInfo(int(fd), syscall.SOL_TCP, syscall.TCP_INFO); err == nil { + s.TCPInfo = v + } +} diff --git a/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go b/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go new file mode 100644 index 0000000000..79edbefc43 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go @@ -0,0 +1,44 @@ +// +build !linux appengine + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package channelz + +import ( + "sync" + + "google.golang.org/grpc/grpclog" +) + +var once sync.Once + +// SocketOptionData defines the struct to hold socket option data, and related +// getter function to obtain info from fd. +// Windows OS doesn't support Socket Option +type SocketOptionData struct { +} + +// Getsockopt defines the function to get socket options requested by channelz. +// It is to be passed to syscall.RawConn.Control(). +// Windows OS doesn't support Socket Option +func (s *SocketOptionData) Getsockopt(fd uintptr) { + once.Do(func() { + grpclog.Warningln("Channelz: socket options are not supported on non-linux os and appengine.") + }) +} diff --git a/vendor/google.golang.org/grpc/internal/channelz/util_linux.go b/vendor/google.golang.org/grpc/internal/channelz/util_linux.go new file mode 100644 index 0000000000..fdf409d55d --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/channelz/util_linux.go @@ -0,0 +1,39 @@ +// +build linux,!appengine + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package channelz + +import ( + "syscall" +) + +// GetSocketOption gets the socket option info of the conn. +func GetSocketOption(socket interface{}) *SocketOptionData { + c, ok := socket.(syscall.Conn) + if !ok { + return nil + } + data := &SocketOptionData{} + if rawConn, err := c.SyscallConn(); err == nil { + rawConn.Control(data.Getsockopt) + return data + } + return nil +} diff --git a/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go b/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go new file mode 100644 index 0000000000..8864a08111 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go @@ -0,0 +1,26 @@ +// +build !linux appengine + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package channelz + +// GetSocketOption gets the socket option info of the conn. +func GetSocketOption(c interface{}) *SocketOptionData { + return nil +} diff --git a/vendor/google.golang.org/grpc/naming/go17.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go similarity index 62% rename from vendor/google.golang.org/grpc/naming/go17.go rename to vendor/google.golang.org/grpc/internal/envconfig/envconfig.go index 57b65d7b88..3ee8740f1f 100644 --- a/vendor/google.golang.org/grpc/naming/go17.go +++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go @@ -1,8 +1,6 @@ -// +build go1.6,!go1.8 - /* * - * Copyright 2017 gRPC authors. + * Copyright 2018 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,17 +16,20 @@ * */ -package naming +// Package envconfig contains grpc settings configured by environment variables. +package envconfig import ( - "net" + "os" + "strings" +) - "golang.org/x/net/context" +const ( + prefix = "GRPC_GO_" + retryStr = prefix + "RETRY" ) var ( - lookupHost = func(ctx context.Context, host string) ([]string, error) { return net.LookupHost(host) } - lookupSRV = func(ctx context.Context, service, proto, name string) (string, []*net.SRV, error) { - return net.LookupSRV(service, proto, name) - } + // Retry is set if retry is explicitly enabled via "GRPC_GO_RETRY=on". + Retry = strings.EqualFold(os.Getenv(retryStr), "on") ) diff --git a/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go b/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go new file mode 100644 index 0000000000..200b115ca2 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go @@ -0,0 +1,56 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package grpcrand implements math/rand functions in a concurrent-safe way +// with a global random source, independent of math/rand's global source. +package grpcrand + +import ( + "math/rand" + "sync" + "time" +) + +var ( + r = rand.New(rand.NewSource(time.Now().UnixNano())) + mu sync.Mutex +) + +// Int63n implements rand.Int63n on the grpcrand global source. +func Int63n(n int64) int64 { + mu.Lock() + res := r.Int63n(n) + mu.Unlock() + return res +} + +// Intn implements rand.Intn on the grpcrand global source. +func Intn(n int) int { + mu.Lock() + res := r.Intn(n) + mu.Unlock() + return res +} + +// Float64 implements rand.Float64 on the grpcrand global source. +func Float64() float64 { + mu.Lock() + res := r.Float64() + mu.Unlock() + return res +} diff --git a/vendor/google.golang.org/grpc/internal/grpcsync/event.go b/vendor/google.golang.org/grpc/internal/grpcsync/event.go new file mode 100644 index 0000000000..fbe697c376 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/grpcsync/event.go @@ -0,0 +1,61 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package grpcsync implements additional synchronization primitives built upon +// the sync package. +package grpcsync + +import ( + "sync" + "sync/atomic" +) + +// Event represents a one-time event that may occur in the future. +type Event struct { + fired int32 + c chan struct{} + o sync.Once +} + +// Fire causes e to complete. It is safe to call multiple times, and +// concurrently. It returns true iff this call to Fire caused the signaling +// channel returned by Done to close. +func (e *Event) Fire() bool { + ret := false + e.o.Do(func() { + atomic.StoreInt32(&e.fired, 1) + close(e.c) + ret = true + }) + return ret +} + +// Done returns a channel that will be closed when Fire is called. +func (e *Event) Done() <-chan struct{} { + return e.c +} + +// HasFired returns true if Fire has been called. +func (e *Event) HasFired() bool { + return atomic.LoadInt32(&e.fired) == 1 +} + +// NewEvent returns a new, ready-to-use Event. +func NewEvent() *Event { + return &Event{c: make(chan struct{})} +} diff --git a/vendor/google.golang.org/grpc/internal/internal.go b/vendor/google.golang.org/grpc/internal/internal.go index 53f1775201..bc1f99ac80 100644 --- a/vendor/google.golang.org/grpc/internal/internal.go +++ b/vendor/google.golang.org/grpc/internal/internal.go @@ -15,13 +15,57 @@ * */ -// Package internal contains gRPC-internal code for testing, to avoid polluting -// the godoc of the top-level grpc package. +// Package internal contains gRPC-internal code, to avoid polluting +// the godoc of the top-level grpc package. It must not import any grpc +// symbols to avoid circular dependencies. package internal -// TestingUseHandlerImpl enables the http.Handler-based server implementation. -// It must be called before Serve and requires TLS credentials. +import ( + "context" + "time" + + "google.golang.org/grpc/connectivity" +) + +var ( + // WithResolverBuilder is exported by dialoptions.go + WithResolverBuilder interface{} // func (resolver.Builder) grpc.DialOption + // WithHealthCheckFunc is not exported by dialoptions.go + WithHealthCheckFunc interface{} // func (HealthChecker) DialOption + // HealthCheckFunc is used to provide client-side LB channel health checking + HealthCheckFunc HealthChecker + // BalancerUnregister is exported by package balancer to unregister a balancer. + BalancerUnregister func(name string) + // KeepaliveMinPingTime is the minimum ping interval. This must be 10s by + // default, but tests may wish to set it lower for convenience. + KeepaliveMinPingTime = 10 * time.Second + // ParseServiceConfig is a function to parse JSON service configs into + // opaque data structures. + ParseServiceConfig func(sc string) (interface{}, error) + // StatusRawProto is exported by status/status.go. This func returns a + // pointer to the wrapped Status proto for a given status.Status without a + // call to proto.Clone(). The returned Status proto should not be mutated by + // the caller. + StatusRawProto interface{} // func (*status.Status) *spb.Status +) + +// HealthChecker defines the signature of the client-side LB channel health checking function. // -// The provided grpcServer must be of type *grpc.Server. It is untyped -// for circular dependency reasons. -var TestingUseHandlerImpl func(grpcServer interface{}) +// The implementation is expected to create a health checking RPC stream by +// calling newStream(), watch for the health status of serviceName, and report +// it's health back by calling setConnectivityState(). +// +// The health checking protocol is defined at: +// https://github.com/grpc/grpc/blob/master/doc/health-checking.md +type HealthChecker func(ctx context.Context, newStream func(string) (interface{}, error), setConnectivityState func(connectivity.State), serviceName string) error + +const ( + // CredsBundleModeFallback switches GoogleDefaultCreds to fallback mode. + CredsBundleModeFallback = "fallback" + // CredsBundleModeBalancer switches GoogleDefaultCreds to grpclb balancer + // mode. + CredsBundleModeBalancer = "balancer" + // CredsBundleModeBackendFromBalancer switches GoogleDefaultCreds to mode + // that supports backend returned by grpclb balancer. + CredsBundleModeBackendFromBalancer = "backend-from-balancer" +) diff --git a/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go b/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go new file mode 100644 index 0000000000..43281a3e07 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go @@ -0,0 +1,114 @@ +// +build !appengine + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package syscall provides functionalities that grpc uses to get low-level operating system +// stats/info. +package syscall + +import ( + "fmt" + "net" + "syscall" + "time" + + "golang.org/x/sys/unix" + "google.golang.org/grpc/grpclog" +) + +// GetCPUTime returns the how much CPU time has passed since the start of this process. +func GetCPUTime() int64 { + var ts unix.Timespec + if err := unix.ClockGettime(unix.CLOCK_PROCESS_CPUTIME_ID, &ts); err != nil { + grpclog.Fatal(err) + } + return ts.Nano() +} + +// Rusage is an alias for syscall.Rusage under linux non-appengine environment. +type Rusage syscall.Rusage + +// GetRusage returns the resource usage of current process. +func GetRusage() (rusage *Rusage) { + rusage = new(Rusage) + syscall.Getrusage(syscall.RUSAGE_SELF, (*syscall.Rusage)(rusage)) + return +} + +// CPUTimeDiff returns the differences of user CPU time and system CPU time used +// between two Rusage structs. +func CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) { + f := (*syscall.Rusage)(first) + l := (*syscall.Rusage)(latest) + var ( + utimeDiffs = l.Utime.Sec - f.Utime.Sec + utimeDiffus = l.Utime.Usec - f.Utime.Usec + stimeDiffs = l.Stime.Sec - f.Stime.Sec + stimeDiffus = l.Stime.Usec - f.Stime.Usec + ) + + uTimeElapsed := float64(utimeDiffs) + float64(utimeDiffus)*1.0e-6 + sTimeElapsed := float64(stimeDiffs) + float64(stimeDiffus)*1.0e-6 + + return uTimeElapsed, sTimeElapsed +} + +// SetTCPUserTimeout sets the TCP user timeout on a connection's socket +func SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error { + tcpconn, ok := conn.(*net.TCPConn) + if !ok { + // not a TCP connection. exit early + return nil + } + rawConn, err := tcpconn.SyscallConn() + if err != nil { + return fmt.Errorf("error getting raw connection: %v", err) + } + err = rawConn.Control(func(fd uintptr) { + err = syscall.SetsockoptInt(int(fd), syscall.IPPROTO_TCP, unix.TCP_USER_TIMEOUT, int(timeout/time.Millisecond)) + }) + if err != nil { + return fmt.Errorf("error setting option on socket: %v", err) + } + + return nil +} + +// GetTCPUserTimeout gets the TCP user timeout on a connection's socket +func GetTCPUserTimeout(conn net.Conn) (opt int, err error) { + tcpconn, ok := conn.(*net.TCPConn) + if !ok { + err = fmt.Errorf("conn is not *net.TCPConn. got %T", conn) + return + } + rawConn, err := tcpconn.SyscallConn() + if err != nil { + err = fmt.Errorf("error getting raw connection: %v", err) + return + } + err = rawConn.Control(func(fd uintptr) { + opt, err = syscall.GetsockoptInt(int(fd), syscall.IPPROTO_TCP, unix.TCP_USER_TIMEOUT) + }) + if err != nil { + err = fmt.Errorf("error getting option on socket: %v", err) + return + } + + return +} diff --git a/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go b/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go new file mode 100644 index 0000000000..d3fd9dab33 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go @@ -0,0 +1,73 @@ +// +build !linux appengine + +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package syscall + +import ( + "net" + "sync" + "time" + + "google.golang.org/grpc/grpclog" +) + +var once sync.Once + +func log() { + once.Do(func() { + grpclog.Info("CPU time info is unavailable on non-linux or appengine environment.") + }) +} + +// GetCPUTime returns the how much CPU time has passed since the start of this process. +// It always returns 0 under non-linux or appengine environment. +func GetCPUTime() int64 { + log() + return 0 +} + +// Rusage is an empty struct under non-linux or appengine environment. +type Rusage struct{} + +// GetRusage is a no-op function under non-linux or appengine environment. +func GetRusage() (rusage *Rusage) { + log() + return nil +} + +// CPUTimeDiff returns the differences of user CPU time and system CPU time used +// between two Rusage structs. It a no-op function for non-linux or appengine environment. +func CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) { + log() + return 0, 0 +} + +// SetTCPUserTimeout is a no-op function under non-linux or appengine environments +func SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error { + log() + return nil +} + +// GetTCPUserTimeout is a no-op function under non-linux or appengine environments +// a negative return value indicates the operation is not supported +func GetTCPUserTimeout(conn net.Conn) (int, error) { + log() + return -1, nil +} diff --git a/vendor/google.golang.org/grpc/transport/bdp_estimator.go b/vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go similarity index 94% rename from vendor/google.golang.org/grpc/transport/bdp_estimator.go rename to vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go index 63cd2627c8..070680edba 100644 --- a/vendor/google.golang.org/grpc/transport/bdp_estimator.go +++ b/vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go @@ -24,9 +24,10 @@ import ( ) const ( - // bdpLimit is the maximum value the flow control windows - // will be increased to. - bdpLimit = (1 << 20) * 4 + // bdpLimit is the maximum value the flow control windows will be increased + // to. TCP typically limits this to 4MB, but some systems go up to 16MB. + // Since this is only a limit, it is safe to make it optimistic. + bdpLimit = (1 << 20) * 16 // alpha is a constant factor used to keep a moving average // of RTTs. alpha = 0.9 diff --git a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go new file mode 100644 index 0000000000..ddee20b6be --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go @@ -0,0 +1,926 @@ +/* + * + * Copyright 2014 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package transport + +import ( + "bytes" + "fmt" + "runtime" + "sync" + "sync/atomic" + + "golang.org/x/net/http2" + "golang.org/x/net/http2/hpack" +) + +var updateHeaderTblSize = func(e *hpack.Encoder, v uint32) { + e.SetMaxDynamicTableSizeLimit(v) +} + +type itemNode struct { + it interface{} + next *itemNode +} + +type itemList struct { + head *itemNode + tail *itemNode +} + +func (il *itemList) enqueue(i interface{}) { + n := &itemNode{it: i} + if il.tail == nil { + il.head, il.tail = n, n + return + } + il.tail.next = n + il.tail = n +} + +// peek returns the first item in the list without removing it from the +// list. +func (il *itemList) peek() interface{} { + return il.head.it +} + +func (il *itemList) dequeue() interface{} { + if il.head == nil { + return nil + } + i := il.head.it + il.head = il.head.next + if il.head == nil { + il.tail = nil + } + return i +} + +func (il *itemList) dequeueAll() *itemNode { + h := il.head + il.head, il.tail = nil, nil + return h +} + +func (il *itemList) isEmpty() bool { + return il.head == nil +} + +// The following defines various control items which could flow through +// the control buffer of transport. They represent different aspects of +// control tasks, e.g., flow control, settings, streaming resetting, etc. + +// maxQueuedTransportResponseFrames is the most queued "transport response" +// frames we will buffer before preventing new reads from occurring on the +// transport. These are control frames sent in response to client requests, +// such as RST_STREAM due to bad headers or settings acks. +const maxQueuedTransportResponseFrames = 50 + +type cbItem interface { + isTransportResponseFrame() bool +} + +// registerStream is used to register an incoming stream with loopy writer. +type registerStream struct { + streamID uint32 + wq *writeQuota +} + +func (*registerStream) isTransportResponseFrame() bool { return false } + +// headerFrame is also used to register stream on the client-side. +type headerFrame struct { + streamID uint32 + hf []hpack.HeaderField + endStream bool // Valid on server side. + initStream func(uint32) error // Used only on the client side. + onWrite func() + wq *writeQuota // write quota for the stream created. + cleanup *cleanupStream // Valid on the server side. + onOrphaned func(error) // Valid on client-side +} + +func (h *headerFrame) isTransportResponseFrame() bool { + return h.cleanup != nil && h.cleanup.rst // Results in a RST_STREAM +} + +type cleanupStream struct { + streamID uint32 + rst bool + rstCode http2.ErrCode + onWrite func() +} + +func (c *cleanupStream) isTransportResponseFrame() bool { return c.rst } // Results in a RST_STREAM + +type dataFrame struct { + streamID uint32 + endStream bool + h []byte + d []byte + // onEachWrite is called every time + // a part of d is written out. + onEachWrite func() +} + +func (*dataFrame) isTransportResponseFrame() bool { return false } + +type incomingWindowUpdate struct { + streamID uint32 + increment uint32 +} + +func (*incomingWindowUpdate) isTransportResponseFrame() bool { return false } + +type outgoingWindowUpdate struct { + streamID uint32 + increment uint32 +} + +func (*outgoingWindowUpdate) isTransportResponseFrame() bool { + return false // window updates are throttled by thresholds +} + +type incomingSettings struct { + ss []http2.Setting +} + +func (*incomingSettings) isTransportResponseFrame() bool { return true } // Results in a settings ACK + +type outgoingSettings struct { + ss []http2.Setting +} + +func (*outgoingSettings) isTransportResponseFrame() bool { return false } + +type incomingGoAway struct { +} + +func (*incomingGoAway) isTransportResponseFrame() bool { return false } + +type goAway struct { + code http2.ErrCode + debugData []byte + headsUp bool + closeConn bool +} + +func (*goAway) isTransportResponseFrame() bool { return false } + +type ping struct { + ack bool + data [8]byte +} + +func (*ping) isTransportResponseFrame() bool { return true } + +type outFlowControlSizeRequest struct { + resp chan uint32 +} + +func (*outFlowControlSizeRequest) isTransportResponseFrame() bool { return false } + +type outStreamState int + +const ( + active outStreamState = iota + empty + waitingOnStreamQuota +) + +type outStream struct { + id uint32 + state outStreamState + itl *itemList + bytesOutStanding int + wq *writeQuota + + next *outStream + prev *outStream +} + +func (s *outStream) deleteSelf() { + if s.prev != nil { + s.prev.next = s.next + } + if s.next != nil { + s.next.prev = s.prev + } + s.next, s.prev = nil, nil +} + +type outStreamList struct { + // Following are sentinel objects that mark the + // beginning and end of the list. They do not + // contain any item lists. All valid objects are + // inserted in between them. + // This is needed so that an outStream object can + // deleteSelf() in O(1) time without knowing which + // list it belongs to. + head *outStream + tail *outStream +} + +func newOutStreamList() *outStreamList { + head, tail := new(outStream), new(outStream) + head.next = tail + tail.prev = head + return &outStreamList{ + head: head, + tail: tail, + } +} + +func (l *outStreamList) enqueue(s *outStream) { + e := l.tail.prev + e.next = s + s.prev = e + s.next = l.tail + l.tail.prev = s +} + +// remove from the beginning of the list. +func (l *outStreamList) dequeue() *outStream { + b := l.head.next + if b == l.tail { + return nil + } + b.deleteSelf() + return b +} + +// controlBuffer is a way to pass information to loopy. +// Information is passed as specific struct types called control frames. +// A control frame not only represents data, messages or headers to be sent out +// but can also be used to instruct loopy to update its internal state. +// It shouldn't be confused with an HTTP2 frame, although some of the control frames +// like dataFrame and headerFrame do go out on wire as HTTP2 frames. +type controlBuffer struct { + ch chan struct{} + done <-chan struct{} + mu sync.Mutex + consumerWaiting bool + list *itemList + err error + + // transportResponseFrames counts the number of queued items that represent + // the response of an action initiated by the peer. trfChan is created + // when transportResponseFrames >= maxQueuedTransportResponseFrames and is + // closed and nilled when transportResponseFrames drops below the + // threshold. Both fields are protected by mu. + transportResponseFrames int + trfChan atomic.Value // *chan struct{} +} + +func newControlBuffer(done <-chan struct{}) *controlBuffer { + return &controlBuffer{ + ch: make(chan struct{}, 1), + list: &itemList{}, + done: done, + } +} + +// throttle blocks if there are too many incomingSettings/cleanupStreams in the +// controlbuf. +func (c *controlBuffer) throttle() { + ch, _ := c.trfChan.Load().(*chan struct{}) + if ch != nil { + select { + case <-*ch: + case <-c.done: + } + } +} + +func (c *controlBuffer) put(it cbItem) error { + _, err := c.executeAndPut(nil, it) + return err +} + +func (c *controlBuffer) executeAndPut(f func(it interface{}) bool, it cbItem) (bool, error) { + var wakeUp bool + c.mu.Lock() + if c.err != nil { + c.mu.Unlock() + return false, c.err + } + if f != nil { + if !f(it) { // f wasn't successful + c.mu.Unlock() + return false, nil + } + } + if c.consumerWaiting { + wakeUp = true + c.consumerWaiting = false + } + c.list.enqueue(it) + if it.isTransportResponseFrame() { + c.transportResponseFrames++ + if c.transportResponseFrames == maxQueuedTransportResponseFrames { + // We are adding the frame that puts us over the threshold; create + // a throttling channel. + ch := make(chan struct{}) + c.trfChan.Store(&ch) + } + } + c.mu.Unlock() + if wakeUp { + select { + case c.ch <- struct{}{}: + default: + } + } + return true, nil +} + +// Note argument f should never be nil. +func (c *controlBuffer) execute(f func(it interface{}) bool, it interface{}) (bool, error) { + c.mu.Lock() + if c.err != nil { + c.mu.Unlock() + return false, c.err + } + if !f(it) { // f wasn't successful + c.mu.Unlock() + return false, nil + } + c.mu.Unlock() + return true, nil +} + +func (c *controlBuffer) get(block bool) (interface{}, error) { + for { + c.mu.Lock() + if c.err != nil { + c.mu.Unlock() + return nil, c.err + } + if !c.list.isEmpty() { + h := c.list.dequeue().(cbItem) + if h.isTransportResponseFrame() { + if c.transportResponseFrames == maxQueuedTransportResponseFrames { + // We are removing the frame that put us over the + // threshold; close and clear the throttling channel. + ch := c.trfChan.Load().(*chan struct{}) + close(*ch) + c.trfChan.Store((*chan struct{})(nil)) + } + c.transportResponseFrames-- + } + c.mu.Unlock() + return h, nil + } + if !block { + c.mu.Unlock() + return nil, nil + } + c.consumerWaiting = true + c.mu.Unlock() + select { + case <-c.ch: + case <-c.done: + c.finish() + return nil, ErrConnClosing + } + } +} + +func (c *controlBuffer) finish() { + c.mu.Lock() + if c.err != nil { + c.mu.Unlock() + return + } + c.err = ErrConnClosing + // There may be headers for streams in the control buffer. + // These streams need to be cleaned out since the transport + // is still not aware of these yet. + for head := c.list.dequeueAll(); head != nil; head = head.next { + hdr, ok := head.it.(*headerFrame) + if !ok { + continue + } + if hdr.onOrphaned != nil { // It will be nil on the server-side. + hdr.onOrphaned(ErrConnClosing) + } + } + c.mu.Unlock() +} + +type side int + +const ( + clientSide side = iota + serverSide +) + +// Loopy receives frames from the control buffer. +// Each frame is handled individually; most of the work done by loopy goes +// into handling data frames. Loopy maintains a queue of active streams, and each +// stream maintains a queue of data frames; as loopy receives data frames +// it gets added to the queue of the relevant stream. +// Loopy goes over this list of active streams by processing one node every iteration, +// thereby closely resemebling to a round-robin scheduling over all streams. While +// processing a stream, loopy writes out data bytes from this stream capped by the min +// of http2MaxFrameLen, connection-level flow control and stream-level flow control. +type loopyWriter struct { + side side + cbuf *controlBuffer + sendQuota uint32 + oiws uint32 // outbound initial window size. + // estdStreams is map of all established streams that are not cleaned-up yet. + // On client-side, this is all streams whose headers were sent out. + // On server-side, this is all streams whose headers were received. + estdStreams map[uint32]*outStream // Established streams. + // activeStreams is a linked-list of all streams that have data to send and some + // stream-level flow control quota. + // Each of these streams internally have a list of data items(and perhaps trailers + // on the server-side) to be sent out. + activeStreams *outStreamList + framer *framer + hBuf *bytes.Buffer // The buffer for HPACK encoding. + hEnc *hpack.Encoder // HPACK encoder. + bdpEst *bdpEstimator + draining bool + + // Side-specific handlers + ssGoAwayHandler func(*goAway) (bool, error) +} + +func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator) *loopyWriter { + var buf bytes.Buffer + l := &loopyWriter{ + side: s, + cbuf: cbuf, + sendQuota: defaultWindowSize, + oiws: defaultWindowSize, + estdStreams: make(map[uint32]*outStream), + activeStreams: newOutStreamList(), + framer: fr, + hBuf: &buf, + hEnc: hpack.NewEncoder(&buf), + bdpEst: bdpEst, + } + return l +} + +const minBatchSize = 1000 + +// run should be run in a separate goroutine. +// It reads control frames from controlBuf and processes them by: +// 1. Updating loopy's internal state, or/and +// 2. Writing out HTTP2 frames on the wire. +// +// Loopy keeps all active streams with data to send in a linked-list. +// All streams in the activeStreams linked-list must have both: +// 1. Data to send, and +// 2. Stream level flow control quota available. +// +// In each iteration of run loop, other than processing the incoming control +// frame, loopy calls processData, which processes one node from the activeStreams linked-list. +// This results in writing of HTTP2 frames into an underlying write buffer. +// When there's no more control frames to read from controlBuf, loopy flushes the write buffer. +// As an optimization, to increase the batch size for each flush, loopy yields the processor, once +// if the batch size is too low to give stream goroutines a chance to fill it up. +func (l *loopyWriter) run() (err error) { + defer func() { + if err == ErrConnClosing { + // Don't log ErrConnClosing as error since it happens + // 1. When the connection is closed by some other known issue. + // 2. User closed the connection. + // 3. A graceful close of connection. + infof("transport: loopyWriter.run returning. %v", err) + err = nil + } + }() + for { + it, err := l.cbuf.get(true) + if err != nil { + return err + } + if err = l.handle(it); err != nil { + return err + } + if _, err = l.processData(); err != nil { + return err + } + gosched := true + hasdata: + for { + it, err := l.cbuf.get(false) + if err != nil { + return err + } + if it != nil { + if err = l.handle(it); err != nil { + return err + } + if _, err = l.processData(); err != nil { + return err + } + continue hasdata + } + isEmpty, err := l.processData() + if err != nil { + return err + } + if !isEmpty { + continue hasdata + } + if gosched { + gosched = false + if l.framer.writer.offset < minBatchSize { + runtime.Gosched() + continue hasdata + } + } + l.framer.writer.Flush() + break hasdata + + } + } +} + +func (l *loopyWriter) outgoingWindowUpdateHandler(w *outgoingWindowUpdate) error { + return l.framer.fr.WriteWindowUpdate(w.streamID, w.increment) +} + +func (l *loopyWriter) incomingWindowUpdateHandler(w *incomingWindowUpdate) error { + // Otherwise update the quota. + if w.streamID == 0 { + l.sendQuota += w.increment + return nil + } + // Find the stream and update it. + if str, ok := l.estdStreams[w.streamID]; ok { + str.bytesOutStanding -= int(w.increment) + if strQuota := int(l.oiws) - str.bytesOutStanding; strQuota > 0 && str.state == waitingOnStreamQuota { + str.state = active + l.activeStreams.enqueue(str) + return nil + } + } + return nil +} + +func (l *loopyWriter) outgoingSettingsHandler(s *outgoingSettings) error { + return l.framer.fr.WriteSettings(s.ss...) +} + +func (l *loopyWriter) incomingSettingsHandler(s *incomingSettings) error { + if err := l.applySettings(s.ss); err != nil { + return err + } + return l.framer.fr.WriteSettingsAck() +} + +func (l *loopyWriter) registerStreamHandler(h *registerStream) error { + str := &outStream{ + id: h.streamID, + state: empty, + itl: &itemList{}, + wq: h.wq, + } + l.estdStreams[h.streamID] = str + return nil +} + +func (l *loopyWriter) headerHandler(h *headerFrame) error { + if l.side == serverSide { + str, ok := l.estdStreams[h.streamID] + if !ok { + warningf("transport: loopy doesn't recognize the stream: %d", h.streamID) + return nil + } + // Case 1.A: Server is responding back with headers. + if !h.endStream { + return l.writeHeader(h.streamID, h.endStream, h.hf, h.onWrite) + } + // else: Case 1.B: Server wants to close stream. + + if str.state != empty { // either active or waiting on stream quota. + // add it str's list of items. + str.itl.enqueue(h) + return nil + } + if err := l.writeHeader(h.streamID, h.endStream, h.hf, h.onWrite); err != nil { + return err + } + return l.cleanupStreamHandler(h.cleanup) + } + // Case 2: Client wants to originate stream. + str := &outStream{ + id: h.streamID, + state: empty, + itl: &itemList{}, + wq: h.wq, + } + str.itl.enqueue(h) + return l.originateStream(str) +} + +func (l *loopyWriter) originateStream(str *outStream) error { + hdr := str.itl.dequeue().(*headerFrame) + if err := hdr.initStream(str.id); err != nil { + if err == ErrConnClosing { + return err + } + // Other errors(errStreamDrain) need not close transport. + return nil + } + if err := l.writeHeader(str.id, hdr.endStream, hdr.hf, hdr.onWrite); err != nil { + return err + } + l.estdStreams[str.id] = str + return nil +} + +func (l *loopyWriter) writeHeader(streamID uint32, endStream bool, hf []hpack.HeaderField, onWrite func()) error { + if onWrite != nil { + onWrite() + } + l.hBuf.Reset() + for _, f := range hf { + if err := l.hEnc.WriteField(f); err != nil { + warningf("transport: loopyWriter.writeHeader encountered error while encoding headers:", err) + } + } + var ( + err error + endHeaders, first bool + ) + first = true + for !endHeaders { + size := l.hBuf.Len() + if size > http2MaxFrameLen { + size = http2MaxFrameLen + } else { + endHeaders = true + } + if first { + first = false + err = l.framer.fr.WriteHeaders(http2.HeadersFrameParam{ + StreamID: streamID, + BlockFragment: l.hBuf.Next(size), + EndStream: endStream, + EndHeaders: endHeaders, + }) + } else { + err = l.framer.fr.WriteContinuation( + streamID, + endHeaders, + l.hBuf.Next(size), + ) + } + if err != nil { + return err + } + } + return nil +} + +func (l *loopyWriter) preprocessData(df *dataFrame) error { + str, ok := l.estdStreams[df.streamID] + if !ok { + return nil + } + // If we got data for a stream it means that + // stream was originated and the headers were sent out. + str.itl.enqueue(df) + if str.state == empty { + str.state = active + l.activeStreams.enqueue(str) + } + return nil +} + +func (l *loopyWriter) pingHandler(p *ping) error { + if !p.ack { + l.bdpEst.timesnap(p.data) + } + return l.framer.fr.WritePing(p.ack, p.data) + +} + +func (l *loopyWriter) outFlowControlSizeRequestHandler(o *outFlowControlSizeRequest) error { + o.resp <- l.sendQuota + return nil +} + +func (l *loopyWriter) cleanupStreamHandler(c *cleanupStream) error { + c.onWrite() + if str, ok := l.estdStreams[c.streamID]; ok { + // On the server side it could be a trailers-only response or + // a RST_STREAM before stream initialization thus the stream might + // not be established yet. + delete(l.estdStreams, c.streamID) + str.deleteSelf() + } + if c.rst { // If RST_STREAM needs to be sent. + if err := l.framer.fr.WriteRSTStream(c.streamID, c.rstCode); err != nil { + return err + } + } + if l.side == clientSide && l.draining && len(l.estdStreams) == 0 { + return ErrConnClosing + } + return nil +} + +func (l *loopyWriter) incomingGoAwayHandler(*incomingGoAway) error { + if l.side == clientSide { + l.draining = true + if len(l.estdStreams) == 0 { + return ErrConnClosing + } + } + return nil +} + +func (l *loopyWriter) goAwayHandler(g *goAway) error { + // Handling of outgoing GoAway is very specific to side. + if l.ssGoAwayHandler != nil { + draining, err := l.ssGoAwayHandler(g) + if err != nil { + return err + } + l.draining = draining + } + return nil +} + +func (l *loopyWriter) handle(i interface{}) error { + switch i := i.(type) { + case *incomingWindowUpdate: + return l.incomingWindowUpdateHandler(i) + case *outgoingWindowUpdate: + return l.outgoingWindowUpdateHandler(i) + case *incomingSettings: + return l.incomingSettingsHandler(i) + case *outgoingSettings: + return l.outgoingSettingsHandler(i) + case *headerFrame: + return l.headerHandler(i) + case *registerStream: + return l.registerStreamHandler(i) + case *cleanupStream: + return l.cleanupStreamHandler(i) + case *incomingGoAway: + return l.incomingGoAwayHandler(i) + case *dataFrame: + return l.preprocessData(i) + case *ping: + return l.pingHandler(i) + case *goAway: + return l.goAwayHandler(i) + case *outFlowControlSizeRequest: + return l.outFlowControlSizeRequestHandler(i) + default: + return fmt.Errorf("transport: unknown control message type %T", i) + } +} + +func (l *loopyWriter) applySettings(ss []http2.Setting) error { + for _, s := range ss { + switch s.ID { + case http2.SettingInitialWindowSize: + o := l.oiws + l.oiws = s.Val + if o < l.oiws { + // If the new limit is greater make all depleted streams active. + for _, stream := range l.estdStreams { + if stream.state == waitingOnStreamQuota { + stream.state = active + l.activeStreams.enqueue(stream) + } + } + } + case http2.SettingHeaderTableSize: + updateHeaderTblSize(l.hEnc, s.Val) + } + } + return nil +} + +// processData removes the first stream from active streams, writes out at most 16KB +// of its data and then puts it at the end of activeStreams if there's still more data +// to be sent and stream has some stream-level flow control. +func (l *loopyWriter) processData() (bool, error) { + if l.sendQuota == 0 { + return true, nil + } + str := l.activeStreams.dequeue() // Remove the first stream. + if str == nil { + return true, nil + } + dataItem := str.itl.peek().(*dataFrame) // Peek at the first data item this stream. + // A data item is represented by a dataFrame, since it later translates into + // multiple HTTP2 data frames. + // Every dataFrame has two buffers; h that keeps grpc-message header and d that is acutal data. + // As an optimization to keep wire traffic low, data from d is copied to h to make as big as the + // maximum possilbe HTTP2 frame size. + + if len(dataItem.h) == 0 && len(dataItem.d) == 0 { // Empty data frame + // Client sends out empty data frame with endStream = true + if err := l.framer.fr.WriteData(dataItem.streamID, dataItem.endStream, nil); err != nil { + return false, err + } + str.itl.dequeue() // remove the empty data item from stream + if str.itl.isEmpty() { + str.state = empty + } else if trailer, ok := str.itl.peek().(*headerFrame); ok { // the next item is trailers. + if err := l.writeHeader(trailer.streamID, trailer.endStream, trailer.hf, trailer.onWrite); err != nil { + return false, err + } + if err := l.cleanupStreamHandler(trailer.cleanup); err != nil { + return false, nil + } + } else { + l.activeStreams.enqueue(str) + } + return false, nil + } + var ( + idx int + buf []byte + ) + if len(dataItem.h) != 0 { // data header has not been written out yet. + buf = dataItem.h + } else { + idx = 1 + buf = dataItem.d + } + size := http2MaxFrameLen + if len(buf) < size { + size = len(buf) + } + if strQuota := int(l.oiws) - str.bytesOutStanding; strQuota <= 0 { // stream-level flow control. + str.state = waitingOnStreamQuota + return false, nil + } else if strQuota < size { + size = strQuota + } + + if l.sendQuota < uint32(size) { // connection-level flow control. + size = int(l.sendQuota) + } + // Now that outgoing flow controls are checked we can replenish str's write quota + str.wq.replenish(size) + var endStream bool + // If this is the last data message on this stream and all of it can be written in this iteration. + if dataItem.endStream && size == len(buf) { + // buf contains either data or it contains header but data is empty. + if idx == 1 || len(dataItem.d) == 0 { + endStream = true + } + } + if dataItem.onEachWrite != nil { + dataItem.onEachWrite() + } + if err := l.framer.fr.WriteData(dataItem.streamID, endStream, buf[:size]); err != nil { + return false, err + } + buf = buf[size:] + str.bytesOutStanding += size + l.sendQuota -= uint32(size) + if idx == 0 { + dataItem.h = buf + } else { + dataItem.d = buf + } + + if len(dataItem.h) == 0 && len(dataItem.d) == 0 { // All the data from that message was written out. + str.itl.dequeue() + } + if str.itl.isEmpty() { + str.state = empty + } else if trailer, ok := str.itl.peek().(*headerFrame); ok { // The next item is trailers. + if err := l.writeHeader(trailer.streamID, trailer.endStream, trailer.hf, trailer.onWrite); err != nil { + return false, err + } + if err := l.cleanupStreamHandler(trailer.cleanup); err != nil { + return false, err + } + } else if int(l.oiws)-str.bytesOutStanding <= 0 { // Ran out of stream quota. + str.state = waitingOnStreamQuota + } else { // Otherwise add it back to the list of active streams. + l.activeStreams.enqueue(str) + } + return false, nil +} diff --git a/vendor/google.golang.org/grpc/internal/transport/defaults.go b/vendor/google.golang.org/grpc/internal/transport/defaults.go new file mode 100644 index 0000000000..9fa306b2e0 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/transport/defaults.go @@ -0,0 +1,49 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package transport + +import ( + "math" + "time" +) + +const ( + // The default value of flow control window size in HTTP2 spec. + defaultWindowSize = 65535 + // The initial window size for flow control. + initialWindowSize = defaultWindowSize // for an RPC + infinity = time.Duration(math.MaxInt64) + defaultClientKeepaliveTime = infinity + defaultClientKeepaliveTimeout = 20 * time.Second + defaultMaxStreamsClient = 100 + defaultMaxConnectionIdle = infinity + defaultMaxConnectionAge = infinity + defaultMaxConnectionAgeGrace = infinity + defaultServerKeepaliveTime = 2 * time.Hour + defaultServerKeepaliveTimeout = 20 * time.Second + defaultKeepalivePolicyMinTime = 5 * time.Minute + // max window limit set by HTTP2 Specs. + maxWindowSize = math.MaxInt32 + // defaultWriteQuota is the default value for number of data + // bytes that each stream can schedule before some of it being + // flushed out. + defaultWriteQuota = 64 * 1024 + defaultClientMaxHeaderListSize = uint32(16 << 20) + defaultServerMaxHeaderListSize = uint32(16 << 20) +) diff --git a/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go new file mode 100644 index 0000000000..f262edd8ec --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go @@ -0,0 +1,217 @@ +/* + * + * Copyright 2014 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package transport + +import ( + "fmt" + "math" + "sync" + "sync/atomic" +) + +// writeQuota is a soft limit on the amount of data a stream can +// schedule before some of it is written out. +type writeQuota struct { + quota int32 + // get waits on read from when quota goes less than or equal to zero. + // replenish writes on it when quota goes positive again. + ch chan struct{} + // done is triggered in error case. + done <-chan struct{} + // replenish is called by loopyWriter to give quota back to. + // It is implemented as a field so that it can be updated + // by tests. + replenish func(n int) +} + +func newWriteQuota(sz int32, done <-chan struct{}) *writeQuota { + w := &writeQuota{ + quota: sz, + ch: make(chan struct{}, 1), + done: done, + } + w.replenish = w.realReplenish + return w +} + +func (w *writeQuota) get(sz int32) error { + for { + if atomic.LoadInt32(&w.quota) > 0 { + atomic.AddInt32(&w.quota, -sz) + return nil + } + select { + case <-w.ch: + continue + case <-w.done: + return errStreamDone + } + } +} + +func (w *writeQuota) realReplenish(n int) { + sz := int32(n) + a := atomic.AddInt32(&w.quota, sz) + b := a - sz + if b <= 0 && a > 0 { + select { + case w.ch <- struct{}{}: + default: + } + } +} + +type trInFlow struct { + limit uint32 + unacked uint32 + effectiveWindowSize uint32 +} + +func (f *trInFlow) newLimit(n uint32) uint32 { + d := n - f.limit + f.limit = n + f.updateEffectiveWindowSize() + return d +} + +func (f *trInFlow) onData(n uint32) uint32 { + f.unacked += n + if f.unacked >= f.limit/4 { + w := f.unacked + f.unacked = 0 + f.updateEffectiveWindowSize() + return w + } + f.updateEffectiveWindowSize() + return 0 +} + +func (f *trInFlow) reset() uint32 { + w := f.unacked + f.unacked = 0 + f.updateEffectiveWindowSize() + return w +} + +func (f *trInFlow) updateEffectiveWindowSize() { + atomic.StoreUint32(&f.effectiveWindowSize, f.limit-f.unacked) +} + +func (f *trInFlow) getSize() uint32 { + return atomic.LoadUint32(&f.effectiveWindowSize) +} + +// TODO(mmukhi): Simplify this code. +// inFlow deals with inbound flow control +type inFlow struct { + mu sync.Mutex + // The inbound flow control limit for pending data. + limit uint32 + // pendingData is the overall data which have been received but not been + // consumed by applications. + pendingData uint32 + // The amount of data the application has consumed but grpc has not sent + // window update for them. Used to reduce window update frequency. + pendingUpdate uint32 + // delta is the extra window update given by receiver when an application + // is reading data bigger in size than the inFlow limit. + delta uint32 +} + +// newLimit updates the inflow window to a new value n. +// It assumes that n is always greater than the old limit. +func (f *inFlow) newLimit(n uint32) uint32 { + f.mu.Lock() + d := n - f.limit + f.limit = n + f.mu.Unlock() + return d +} + +func (f *inFlow) maybeAdjust(n uint32) uint32 { + if n > uint32(math.MaxInt32) { + n = uint32(math.MaxInt32) + } + f.mu.Lock() + defer f.mu.Unlock() + // estSenderQuota is the receiver's view of the maximum number of bytes the sender + // can send without a window update. + estSenderQuota := int32(f.limit - (f.pendingData + f.pendingUpdate)) + // estUntransmittedData is the maximum number of bytes the sends might not have put + // on the wire yet. A value of 0 or less means that we have already received all or + // more bytes than the application is requesting to read. + estUntransmittedData := int32(n - f.pendingData) // Casting into int32 since it could be negative. + // This implies that unless we send a window update, the sender won't be able to send all the bytes + // for this message. Therefore we must send an update over the limit since there's an active read + // request from the application. + if estUntransmittedData > estSenderQuota { + // Sender's window shouldn't go more than 2^31 - 1 as specified in the HTTP spec. + if f.limit+n > maxWindowSize { + f.delta = maxWindowSize - f.limit + } else { + // Send a window update for the whole message and not just the difference between + // estUntransmittedData and estSenderQuota. This will be helpful in case the message + // is padded; We will fallback on the current available window(at least a 1/4th of the limit). + f.delta = n + } + return f.delta + } + return 0 +} + +// onData is invoked when some data frame is received. It updates pendingData. +func (f *inFlow) onData(n uint32) error { + f.mu.Lock() + f.pendingData += n + if f.pendingData+f.pendingUpdate > f.limit+f.delta { + limit := f.limit + rcvd := f.pendingData + f.pendingUpdate + f.mu.Unlock() + return fmt.Errorf("received %d-bytes data exceeding the limit %d bytes", rcvd, limit) + } + f.mu.Unlock() + return nil +} + +// onRead is invoked when the application reads the data. It returns the window size +// to be sent to the peer. +func (f *inFlow) onRead(n uint32) uint32 { + f.mu.Lock() + if f.pendingData == 0 { + f.mu.Unlock() + return 0 + } + f.pendingData -= n + if n > f.delta { + n -= f.delta + f.delta = 0 + } else { + f.delta -= n + n = 0 + } + f.pendingUpdate += n + if f.pendingUpdate >= f.limit/4 { + wu := f.pendingUpdate + f.pendingUpdate = 0 + f.mu.Unlock() + return wu + } + f.mu.Unlock() + return 0 +} diff --git a/vendor/google.golang.org/grpc/transport/handler_server.go b/vendor/google.golang.org/grpc/internal/transport/handler_server.go similarity index 89% rename from vendor/google.golang.org/grpc/transport/handler_server.go rename to vendor/google.golang.org/grpc/internal/transport/handler_server.go index 9937fff999..78f9ddc3d3 100644 --- a/vendor/google.golang.org/grpc/transport/handler_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/handler_server.go @@ -24,6 +24,8 @@ package transport import ( + "bytes" + "context" "errors" "fmt" "io" @@ -34,7 +36,6 @@ import ( "time" "github.com/golang/protobuf/proto" - "golang.org/x/net/context" "golang.org/x/net/http2" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" @@ -63,9 +64,6 @@ func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats sta if _, ok := w.(http.Flusher); !ok { return nil, errors.New("gRPC requires a ResponseWriter supporting http.Flusher") } - if _, ok := w.(http.CloseNotifier); !ok { - return nil, errors.New("gRPC requires a ResponseWriter supporting http.CloseNotifier") - } st := &serverHandlerTransport{ rw: w, @@ -80,7 +78,7 @@ func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats sta if v := r.Header.Get("grpc-timeout"); v != "" { to, err := decodeTimeout(v) if err != nil { - return nil, streamErrorf(codes.Internal, "malformed time-out: %v", err) + return nil, status.Errorf(codes.Internal, "malformed time-out: %v", err) } st.timeoutSet = true st.timeout = to @@ -92,13 +90,13 @@ func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats sta } for k, vv := range r.Header { k = strings.ToLower(k) - if isReservedHeader(k) && !isWhitelistedPseudoHeader(k) { + if isReservedHeader(k) && !isWhitelistedHeader(k) { continue } for _, v := range vv { v, err := decodeMetadataHeader(k, v) if err != nil { - return nil, streamErrorf(codes.Internal, "malformed binary metadata: %v", err) + return nil, status.Errorf(codes.Internal, "malformed binary metadata: %v", err) } metakv = append(metakv, k, v) } @@ -176,17 +174,11 @@ func (a strAddr) String() string { return string(a) } // do runs fn in the ServeHTTP goroutine. func (ht *serverHandlerTransport) do(fn func()) error { - // Avoid a panic writing to closed channel. Imperfect but maybe good enough. select { case <-ht.closedCh: return ErrConnClosing - default: - select { - case ht.writes <- fn: - return nil - case <-ht.closedCh: - return ErrConnClosing - } + case ht.writes <- fn: + return nil } } @@ -237,9 +229,8 @@ func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) erro if ht.stats != nil { ht.stats.HandleRPC(s.Context(), &stats.OutTrailer{}) } - ht.Close() - close(ht.writes) } + ht.Close() return err } @@ -274,9 +265,7 @@ func (ht *serverHandlerTransport) Write(s *Stream, hdr []byte, data []byte, opts ht.writeCommonHeaders(s) ht.rw.Write(hdr) ht.rw.Write(data) - if !opts.Delay { - ht.rw.(http.Flusher).Flush() - } + ht.rw.(http.Flusher).Flush() }) } @@ -309,7 +298,7 @@ func (ht *serverHandlerTransport) WriteHeader(s *Stream, md metadata.MD) error { func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), traceCtx func(context.Context, string) context.Context) { // With this transport type there will be exactly 1 stream: this HTTP request. - ctx := contextFromRequest(ht.req) + ctx := ht.req.Context() var cancel context.CancelFunc if ht.timeoutSet { ctx, cancel = context.WithTimeout(ctx, ht.timeout) @@ -317,22 +306,16 @@ func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), trace ctx, cancel = context.WithCancel(ctx) } - // requestOver is closed when either the request's context is done - // or the status has been written via WriteStatus. + // requestOver is closed when the status has been written via WriteStatus. requestOver := make(chan struct{}) - - // clientGone receives a single value if peer is gone, either - // because the underlying connection is dead or because the - // peer sends an http2 RST_STREAM. - clientGone := ht.rw.(http.CloseNotifier).CloseNotify() go func() { select { case <-requestOver: - return case <-ht.closedCh: - case <-clientGone: + case <-ht.req.Context().Done(): } cancel() + ht.Close() }() req := ht.req @@ -354,8 +337,7 @@ func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), trace pr.AuthInfo = credentials.TLSInfo{State: *req.TLS} } ctx = metadata.NewIncomingContext(ctx, ht.headerMD) - ctx = peer.NewContext(ctx, pr) - s.ctx = newContextWithStream(ctx, s) + s.ctx = peer.NewContext(ctx, pr) if ht.stats != nil { s.ctx = ht.stats.TagRPC(s.ctx, &stats.RPCTagInfo{FullMethodName: s.method}) inHeader := &stats.InHeader{ @@ -366,7 +348,7 @@ func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), trace ht.stats.HandleRPC(s.ctx, inHeader) } s.trReader = &transportReader{ - reader: &recvBufferReader{ctx: s.ctx, recv: s.buf}, + reader: &recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: s.buf, freeBuffer: func(*bytes.Buffer) {}}, windowHandler: func(int) {}, } @@ -380,7 +362,7 @@ func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), trace for buf := make([]byte, readSize); ; { n, err := req.Body.Read(buf) if n > 0 { - s.buf.put(recvMsg{data: buf[:n:n]}) + s.buf.put(recvMsg{buffer: bytes.NewBuffer(buf[:n:n])}) buf = buf[n:] } if err != nil { @@ -410,10 +392,7 @@ func (ht *serverHandlerTransport) HandleStreams(startStream func(*Stream), trace func (ht *serverHandlerTransport) runStream() { for { select { - case fn, ok := <-ht.writes: - if !ok { - return - } + case fn := <-ht.writes: fn() case <-ht.closedCh: return @@ -421,6 +400,10 @@ func (ht *serverHandlerTransport) runStream() { } } +func (ht *serverHandlerTransport) IncrMsgSent() {} + +func (ht *serverHandlerTransport) IncrMsgRecv() {} + func (ht *serverHandlerTransport) Drain() { panic("Drain() is not implemented") } @@ -431,18 +414,18 @@ func (ht *serverHandlerTransport) Drain() { // * io.EOF // * io.ErrUnexpectedEOF // * of type transport.ConnectionError -// * of type transport.StreamError +// * an error from the status package func mapRecvMsgError(err error) error { if err == io.EOF || err == io.ErrUnexpectedEOF { return err } if se, ok := err.(http2.StreamError); ok { if code, ok := http2ErrConvTab[se.Code]; ok { - return StreamError{ - Code: code, - Desc: se.Error(), - } + return status.Error(code, se.Error()) } } + if strings.Contains(err.Error(), "body closed by handler") { + return status.Error(codes.Canceled, err.Error()) + } return connectionErrorf(true, err, err.Error()) } diff --git a/vendor/google.golang.org/grpc/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go similarity index 50% rename from vendor/google.golang.org/grpc/transport/http2_client.go rename to vendor/google.golang.org/grpc/internal/transport/http2_client.go index 8b5be0d6d5..9bd8c27b36 100644 --- a/vendor/google.golang.org/grpc/transport/http2_client.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go @@ -19,21 +19,24 @@ package transport import ( - "bytes" + "context" "fmt" "io" "math" "net" + "strconv" "strings" "sync" "sync/atomic" "time" - "golang.org/x/net/context" "golang.org/x/net/http2" "golang.org/x/net/http2/hpack" + "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" + "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/syscall" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" @@ -45,79 +48,92 @@ import ( type http2Client struct { ctx context.Context cancel context.CancelFunc + ctxDone <-chan struct{} // Cache the ctx.Done() chan. userAgent string md interface{} conn net.Conn // underlying communication channel + loopy *loopyWriter remoteAddr net.Addr localAddr net.Addr authInfo credentials.AuthInfo // auth info about the connection - nextID uint32 // the next stream ID to be used + readerDone chan struct{} // sync point to enable testing. + writerDone chan struct{} // sync point to enable testing. // goAway is closed to notify the upper layer (i.e., addrConn.transportMonitor) // that the server sent GoAway on this transport. goAway chan struct{} - // awakenKeepalive is used to wake up keepalive when after it has gone dormant. - awakenKeepalive chan struct{} framer *framer - hBuf *bytes.Buffer // the buffer for HPACK encoding - hEnc *hpack.Encoder // HPACK encoder - // controlBuf delivers all the control related tasks (e.g., window // updates, reset streams, and various settings) to the controller. controlBuf *controlBuffer - fc *inFlow - // sendQuotaPool provides flow control to outbound message. - sendQuotaPool *quotaPool - // localSendQuota limits the amount of data that can be scheduled - // for writing before it is actually written out. - localSendQuota *quotaPool - // streamsQuota limits the max number of concurrent streams. - streamsQuota *quotaPool - + fc *trInFlow // The scheme used: https if TLS is on, http otherwise. scheme string isSecure bool - creds []credentials.PerRPCCredentials + perRPCCreds []credentials.PerRPCCredentials // Boolean to keep track of reading activity on transport. // 1 is true and 0 is false. - activity uint32 // Accessed atomically. - kp keepalive.ClientParameters + activity uint32 // Accessed atomically. + kp keepalive.ClientParameters + keepaliveEnabled bool statsHandler stats.Handler initialWindowSize int32 - bdpEst *bdpEstimator - outQuotaVersion uint32 + // configured by peer through SETTINGS_MAX_HEADER_LIST_SIZE + maxSendHeaderListSize *uint32 - // onSuccess is a callback that client transport calls upon + bdpEst *bdpEstimator + // onPrefaceReceipt is a callback that client transport calls upon // receiving server preface to signal that a succefull HTTP2 // connection was established. - onSuccess func() + onPrefaceReceipt func() + + maxConcurrentStreams uint32 + streamQuota int64 + streamsQuotaAvailable chan struct{} + waitingStreams uint32 + nextID uint32 - mu sync.Mutex // guard the following variables - state transportState // the state of underlying connection + mu sync.Mutex // guard the following variables + state transportState activeStreams map[uint32]*Stream - // The max number of concurrent streams - maxStreams int - // the per-stream outbound flow control window size set by the peer. - streamSendQuota uint32 // prevGoAway ID records the Last-Stream-ID in the previous GOAway frame. prevGoAwayID uint32 // goAwayReason records the http2.ErrCode and debug data received with the // GoAway frame. goAwayReason GoAwayReason + // A condition variable used to signal when the keepalive goroutine should + // go dormant. The condition for dormancy is based on the number of active + // streams and the `PermitWithoutStream` keepalive client parameter. And + // since the number of active streams is guarded by the above mutex, we use + // the same for this condition variable as well. + kpDormancyCond *sync.Cond + // A boolean to track whether the keepalive goroutine is dormant or not. + // This is checked before attempting to signal the above condition + // variable. + kpDormant bool + + // Fields below are for channelz metric collection. + channelzID int64 // channelz unique identification number + czData *channelzData + + onGoAway func(GoAwayReason) + onClose func() + + bufferPool *bufferPool } func dial(ctx context.Context, fn func(context.Context, string) (net.Conn, error), addr string) (net.Conn, error) { if fn != nil { return fn(ctx, addr) } - return dialContext(ctx, "tcp", addr) + return (&net.Dialer{}).DialContext(ctx, "tcp", addr) } func isTemporary(err error) bool { @@ -139,7 +155,7 @@ func isTemporary(err error) bool { // newHTTP2Client constructs a connected ClientTransport to addr based on HTTP2 // and starts to receive messages on it. Non-nil error returns if construction // fails. -func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts ConnectOptions, onSuccess func()) (_ ClientTransport, err error) { +func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts ConnectOptions, onPrefaceReceipt func(), onGoAway func(GoAwayReason), onClose func()) (_ *http2Client, err error) { scheme := "http" ctx, cancel := context.WithCancel(ctx) defer func() { @@ -161,74 +177,90 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne conn.Close() } }(conn) + kp := opts.KeepaliveParams + // Validate keepalive parameters. + if kp.Time == 0 { + kp.Time = defaultClientKeepaliveTime + } + if kp.Timeout == 0 { + kp.Timeout = defaultClientKeepaliveTimeout + } + keepaliveEnabled := false + if kp.Time != infinity { + if err = syscall.SetTCPUserTimeout(conn, kp.Timeout); err != nil { + return nil, connectionErrorf(false, err, "transport: failed to set TCP_USER_TIMEOUT: %v", err) + } + keepaliveEnabled = true + } var ( isSecure bool authInfo credentials.AuthInfo ) - if creds := opts.TransportCredentials; creds != nil { + transportCreds := opts.TransportCredentials + perRPCCreds := opts.PerRPCCredentials + + if b := opts.CredsBundle; b != nil { + if t := b.TransportCredentials(); t != nil { + transportCreds = t + } + if t := b.PerRPCCredentials(); t != nil { + perRPCCreds = append(perRPCCreds, t) + } + } + if transportCreds != nil { scheme = "https" - conn, authInfo, err = creds.ClientHandshake(connectCtx, addr.Authority, conn) + conn, authInfo, err = transportCreds.ClientHandshake(connectCtx, addr.Authority, conn) if err != nil { return nil, connectionErrorf(isTemporary(err), err, "transport: authentication handshake failed: %v", err) } isSecure = true } - kp := opts.KeepaliveParams - // Validate keepalive parameters. - if kp.Time == 0 { - kp.Time = defaultClientKeepaliveTime - } - if kp.Timeout == 0 { - kp.Timeout = defaultClientKeepaliveTimeout - } dynamicWindow := true icwz := int32(initialWindowSize) if opts.InitialConnWindowSize >= defaultWindowSize { icwz = opts.InitialConnWindowSize dynamicWindow = false } - var buf bytes.Buffer - writeBufSize := defaultWriteBufSize - if opts.WriteBufferSize > 0 { - writeBufSize = opts.WriteBufferSize - } - readBufSize := defaultReadBufSize - if opts.ReadBufferSize > 0 { - readBufSize = opts.ReadBufferSize + writeBufSize := opts.WriteBufferSize + readBufSize := opts.ReadBufferSize + maxHeaderListSize := defaultClientMaxHeaderListSize + if opts.MaxHeaderListSize != nil { + maxHeaderListSize = *opts.MaxHeaderListSize } t := &http2Client{ - ctx: ctx, - cancel: cancel, - userAgent: opts.UserAgent, - md: addr.Metadata, - conn: conn, - remoteAddr: conn.RemoteAddr(), - localAddr: conn.LocalAddr(), - authInfo: authInfo, - // The client initiated stream id is odd starting from 1. - nextID: 1, - goAway: make(chan struct{}), - awakenKeepalive: make(chan struct{}, 1), - hBuf: &buf, - hEnc: hpack.NewEncoder(&buf), - framer: newFramer(conn, writeBufSize, readBufSize), - controlBuf: newControlBuffer(), - fc: &inFlow{limit: uint32(icwz)}, - sendQuotaPool: newQuotaPool(defaultWindowSize), - localSendQuota: newQuotaPool(defaultLocalSendQuota), - scheme: scheme, - state: reachable, - activeStreams: make(map[uint32]*Stream), - isSecure: isSecure, - creds: opts.PerRPCCredentials, - maxStreams: defaultMaxStreamsClient, - streamsQuota: newQuotaPool(defaultMaxStreamsClient), - streamSendQuota: defaultWindowSize, - kp: kp, - statsHandler: opts.StatsHandler, - initialWindowSize: initialWindowSize, - onSuccess: onSuccess, - } + ctx: ctx, + ctxDone: ctx.Done(), // Cache Done chan. + cancel: cancel, + userAgent: opts.UserAgent, + md: addr.Metadata, + conn: conn, + remoteAddr: conn.RemoteAddr(), + localAddr: conn.LocalAddr(), + authInfo: authInfo, + readerDone: make(chan struct{}), + writerDone: make(chan struct{}), + goAway: make(chan struct{}), + framer: newFramer(conn, writeBufSize, readBufSize, maxHeaderListSize), + fc: &trInFlow{limit: uint32(icwz)}, + scheme: scheme, + activeStreams: make(map[uint32]*Stream), + isSecure: isSecure, + perRPCCreds: perRPCCreds, + kp: kp, + statsHandler: opts.StatsHandler, + initialWindowSize: initialWindowSize, + onPrefaceReceipt: onPrefaceReceipt, + nextID: 1, + maxConcurrentStreams: defaultMaxStreamsClient, + streamQuota: defaultMaxStreamsClient, + streamsQuotaAvailable: make(chan struct{}, 1), + czData: new(channelzData), + onGoAway: onGoAway, + onClose: onClose, + keepaliveEnabled: keepaliveEnabled, + bufferPool: newBufferPool(), + } + t.controlBuf = newControlBuffer(t.ctxDone) if opts.InitialWindowSize >= defaultWindowSize { t.initialWindowSize = opts.InitialWindowSize dynamicWindow = false @@ -239,9 +271,6 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne updateFlowControl: t.updateFlowControl, } } - // Make sure awakenKeepalive can't be written upon. - // keepalive routine will make it writable, if need be. - t.awakenKeepalive <- struct{}{} if t.statsHandler != nil { t.ctx = t.statsHandler.TagConn(t.ctx, &stats.ConnTagInfo{ RemoteAddr: t.remoteAddr, @@ -252,10 +281,18 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne } t.statsHandler.HandleConn(t.ctx, connBegin) } + if channelz.IsOn() { + t.channelzID = channelz.RegisterNormalSocket(t, opts.ChannelzParentID, fmt.Sprintf("%s -> %s", t.localAddr, t.remoteAddr)) + } + if t.keepaliveEnabled { + t.kpDormancyCond = sync.NewCond(&t.mu) + go t.keepalive() + } // Start the reader goroutine for incoming message. Each transport has // a dedicated goroutine which reads HTTP2 frame from network. Then it // dispatches the frame to the corresponding stream entity. go t.reader() + // Send connection preface to server. n, err := t.conn.Write(clientPreface) if err != nil { @@ -266,14 +303,21 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne t.Close() return nil, connectionErrorf(true, err, "transport: preface mismatch, wrote %d bytes; want %d", n, len(clientPreface)) } + var ss []http2.Setting + if t.initialWindowSize != defaultWindowSize { - err = t.framer.fr.WriteSettings(http2.Setting{ + ss = append(ss, http2.Setting{ ID: http2.SettingInitialWindowSize, Val: uint32(t.initialWindowSize), }) - } else { - err = t.framer.fr.WriteSettings() } + if opts.MaxHeaderListSize != nil { + ss = append(ss, http2.Setting{ + ID: http2.SettingMaxHeaderListSize, + Val: *opts.MaxHeaderListSize, + }) + } + err = t.framer.fr.WriteSettings(ss...) if err != nil { t.Close() return nil, connectionErrorf(true, err, "transport: failed to write initial settings frame: %v", err) @@ -285,32 +329,37 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr TargetInfo, opts Conne return nil, connectionErrorf(true, err, "transport: failed to write window update: %v", err) } } - t.framer.writer.Flush() + + if err := t.framer.writer.Flush(); err != nil { + return nil, err + } go func() { - loopyWriter(t.ctx, t.controlBuf, t.itemHandler) - t.conn.Close() + t.loopy = newLoopyWriter(clientSide, t.framer, t.controlBuf, t.bdpEst) + err := t.loopy.run() + if err != nil { + errorf("transport: loopyWriter.run returning. Err: %v", err) + } + // If it's a connection error, let reader goroutine handle it + // since there might be data in the buffers. + if _, ok := err.(net.Error); !ok { + t.conn.Close() + } + close(t.writerDone) }() - if t.kp.Time != infinity { - go t.keepalive() - } return t, nil } func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *Stream { // TODO(zhaoq): Handle uint32 overflow of Stream.id. s := &Stream{ - id: t.nextID, done: make(chan struct{}), - goAway: make(chan struct{}), method: callHdr.Method, sendCompress: callHdr.SendCompress, buf: newRecvBuffer(), - fc: &inFlow{limit: uint32(t.initialWindowSize)}, - sendQuotaPool: newQuotaPool(int(t.streamSendQuota)), headerChan: make(chan struct{}), contentSubtype: callHdr.ContentSubtype, } - t.nextID += 2 + s.wq = newWriteQuota(defaultWriteQuota, s.done) s.requestRead = func(n int) { t.adjustWindow(s, uint32(n)) } @@ -320,26 +369,22 @@ func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *Stream { s.ctx = ctx s.trReader = &transportReader{ reader: &recvBufferReader{ - ctx: s.ctx, - goAway: s.goAway, - recv: s.buf, + ctx: s.ctx, + ctxDone: s.ctx.Done(), + recv: s.buf, + closeStream: func(err error) { + t.CloseStream(s, err) + }, + freeBuffer: t.bufferPool.put, }, windowHandler: func(n int) { t.updateWindow(s, uint32(n)) }, } - s.waiters = waiters{ - ctx: s.ctx, - tctx: t.ctx, - done: s.done, - goAway: s.goAway, - } return s } -// NewStream creates a stream and registers it into the transport as "active" -// streams. -func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Stream, err error) { +func (t *http2Client) getPeer() *peer.Peer { pr := &peer.Peer{ Addr: t.remoteAddr, } @@ -347,71 +392,17 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea if t.authInfo != nil { pr.AuthInfo = t.authInfo } - ctx = peer.NewContext(ctx, pr) - var ( - authData = make(map[string]string) - audience string - ) - // Create an audience string only if needed. - if len(t.creds) > 0 || callHdr.Creds != nil { - // Construct URI required to get auth request metadata. - // Omit port if it is the default one. - host := strings.TrimSuffix(callHdr.Host, ":443") - pos := strings.LastIndex(callHdr.Method, "/") - if pos == -1 { - pos = len(callHdr.Method) - } - audience = "https://" + host + callHdr.Method[:pos] - } - for _, c := range t.creds { - data, err := c.GetRequestMetadata(ctx, audience) - if err != nil { - if _, ok := status.FromError(err); ok { - return nil, err - } + return pr +} - return nil, streamErrorf(codes.Unauthenticated, "transport: %v", err) - } - for k, v := range data { - // Capital header names are illegal in HTTP/2. - k = strings.ToLower(k) - authData[k] = v - } - } - callAuthData := map[string]string{} - // Check if credentials.PerRPCCredentials were provided via call options. - // Note: if these credentials are provided both via dial options and call - // options, then both sets of credentials will be applied. - if callCreds := callHdr.Creds; callCreds != nil { - if !t.isSecure && callCreds.RequireTransportSecurity() { - return nil, streamErrorf(codes.Unauthenticated, "transport: cannot send secure credentials on an insecure connection") - } - data, err := callCreds.GetRequestMetadata(ctx, audience) - if err != nil { - return nil, streamErrorf(codes.Internal, "transport: %v", err) - } - for k, v := range data { - // Capital header names are illegal in HTTP/2 - k = strings.ToLower(k) - callAuthData[k] = v - } - } - t.mu.Lock() - if t.activeStreams == nil { - t.mu.Unlock() - return nil, ErrConnClosing - } - if t.state == draining { - t.mu.Unlock() - return nil, errStreamDrain - } - if t.state != reachable { - t.mu.Unlock() - return nil, ErrConnClosing +func (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) ([]hpack.HeaderField, error) { + aud := t.createAudience(callHdr) + authData, err := t.getTrAuthData(ctx, aud) + if err != nil { + return nil, err } - t.mu.Unlock() - // Get a quota of 1 from streamsQuota. - if _, _, err := t.streamsQuota.get(1, waiters{ctx: ctx, tctx: t.ctx}); err != nil { + callAuthData, err := t.getCallAuthData(ctx, aud, callHdr) + if err != nil { return nil, err } // TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields @@ -427,6 +418,9 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: contentType(callHdr.ContentSubtype)}) headerFields = append(headerFields, hpack.HeaderField{Name: "user-agent", Value: t.userAgent}) headerFields = append(headerFields, hpack.HeaderField{Name: "te", Value: "trailers"}) + if callHdr.PreviousAttempts > 0 { + headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-previous-rpc-attempts", Value: strconv.Itoa(callHdr.PreviousAttempts)}) + } if callHdr.SendCompress != "" { headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-encoding", Value: callHdr.SendCompress}) @@ -434,7 +428,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea if dl, ok := ctx.Deadline(); ok { // Send out timeout regardless its value. The server can detect timeout context by itself. // TODO(mmukhi): Perhaps this field should be updated when actually writing out to the wire. - timeout := dl.Sub(time.Now()) + timeout := time.Until(dl) headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-timeout", Value: encodeTimeout(timeout)}) } for k, v := range authData { @@ -452,6 +446,15 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea if md, added, ok := metadata.FromOutgoingContextRaw(ctx); ok { var k string + for k, vv := range md { + // HTTP doesn't allow you to set pseudoheaders after non pseudoheaders were set. + if isReservedHeader(k) { + continue + } + for _, v := range vv { + headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)}) + } + } for _, vv := range added { for i, v := range vv { if i%2 == 0 { @@ -465,15 +468,6 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea headerFields = append(headerFields, hpack.HeaderField{Name: strings.ToLower(k), Value: encodeMetadataHeader(k, v)}) } } - for k, vv := range md { - // HTTP doesn't allow you to set pseudoheaders after non pseudoheaders were set. - if isReservedHeader(k) { - continue - } - for _, v := range vv { - headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)}) - } - } } if md, ok := t.md.(*metadata.MD); ok { for k, vv := range *md { @@ -485,38 +479,195 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea } } } - t.mu.Lock() - if t.state == draining { - t.mu.Unlock() - t.streamsQuota.add(1) - return nil, errStreamDrain + return headerFields, nil +} + +func (t *http2Client) createAudience(callHdr *CallHdr) string { + // Create an audience string only if needed. + if len(t.perRPCCreds) == 0 && callHdr.Creds == nil { + return "" } - if t.state != reachable { - t.mu.Unlock() - return nil, ErrConnClosing + // Construct URI required to get auth request metadata. + // Omit port if it is the default one. + host := strings.TrimSuffix(callHdr.Host, ":443") + pos := strings.LastIndex(callHdr.Method, "/") + if pos == -1 { + pos = len(callHdr.Method) + } + return "https://" + host + callHdr.Method[:pos] +} + +func (t *http2Client) getTrAuthData(ctx context.Context, audience string) (map[string]string, error) { + if len(t.perRPCCreds) == 0 { + return nil, nil + } + authData := map[string]string{} + for _, c := range t.perRPCCreds { + data, err := c.GetRequestMetadata(ctx, audience) + if err != nil { + if _, ok := status.FromError(err); ok { + return nil, err + } + + return nil, status.Errorf(codes.Unauthenticated, "transport: %v", err) + } + for k, v := range data { + // Capital header names are illegal in HTTP/2. + k = strings.ToLower(k) + authData[k] = v + } + } + return authData, nil +} + +func (t *http2Client) getCallAuthData(ctx context.Context, audience string, callHdr *CallHdr) (map[string]string, error) { + var callAuthData map[string]string + // Check if credentials.PerRPCCredentials were provided via call options. + // Note: if these credentials are provided both via dial options and call + // options, then both sets of credentials will be applied. + if callCreds := callHdr.Creds; callCreds != nil { + if !t.isSecure && callCreds.RequireTransportSecurity() { + return nil, status.Error(codes.Unauthenticated, "transport: cannot send secure credentials on an insecure connection") + } + data, err := callCreds.GetRequestMetadata(ctx, audience) + if err != nil { + return nil, status.Errorf(codes.Internal, "transport: %v", err) + } + callAuthData = make(map[string]string, len(data)) + for k, v := range data { + // Capital header names are illegal in HTTP/2 + k = strings.ToLower(k) + callAuthData[k] = v + } + } + return callAuthData, nil +} + +// NewStream creates a stream and registers it into the transport as "active" +// streams. +func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Stream, err error) { + ctx = peer.NewContext(ctx, t.getPeer()) + headerFields, err := t.createHeaderFields(ctx, callHdr) + if err != nil { + return nil, err } s := t.newStream(ctx, callHdr) - t.activeStreams[s.id] = s - // If the number of active streams change from 0 to 1, then check if keepalive - // has gone dormant. If so, wake it up. - if len(t.activeStreams) == 1 { - select { - case t.awakenKeepalive <- struct{}{}: - t.controlBuf.put(&ping{data: [8]byte{}}) - // Fill the awakenKeepalive channel again as this channel must be - // kept non-writable except at the point that the keepalive() - // goroutine is waiting either to be awaken or shutdown. - t.awakenKeepalive <- struct{}{} - default: + cleanup := func(err error) { + if s.swapState(streamDone) == streamDone { + // If it was already done, return. + return + } + // The stream was unprocessed by the server. + atomic.StoreUint32(&s.unprocessed, 1) + s.write(recvMsg{err: err}) + close(s.done) + // If headerChan isn't closed, then close it. + if atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) { + close(s.headerChan) } } - t.controlBuf.put(&headerFrame{ - streamID: s.id, + hdr := &headerFrame{ hf: headerFields, endStream: false, - }) - t.mu.Unlock() - + initStream: func(id uint32) error { + t.mu.Lock() + if state := t.state; state != reachable { + t.mu.Unlock() + // Do a quick cleanup. + err := error(errStreamDrain) + if state == closing { + err = ErrConnClosing + } + cleanup(err) + return err + } + t.activeStreams[id] = s + if channelz.IsOn() { + atomic.AddInt64(&t.czData.streamsStarted, 1) + atomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano()) + } + // If the keepalive goroutine has gone dormant, wake it up. + if t.kpDormant { + t.kpDormancyCond.Signal() + } + t.mu.Unlock() + return nil + }, + onOrphaned: cleanup, + wq: s.wq, + } + firstTry := true + var ch chan struct{} + checkForStreamQuota := func(it interface{}) bool { + if t.streamQuota <= 0 { // Can go negative if server decreases it. + if firstTry { + t.waitingStreams++ + } + ch = t.streamsQuotaAvailable + return false + } + if !firstTry { + t.waitingStreams-- + } + t.streamQuota-- + h := it.(*headerFrame) + h.streamID = t.nextID + t.nextID += 2 + s.id = h.streamID + s.fc = &inFlow{limit: uint32(t.initialWindowSize)} + if t.streamQuota > 0 && t.waitingStreams > 0 { + select { + case t.streamsQuotaAvailable <- struct{}{}: + default: + } + } + return true + } + var hdrListSizeErr error + checkForHeaderListSize := func(it interface{}) bool { + if t.maxSendHeaderListSize == nil { + return true + } + hdrFrame := it.(*headerFrame) + var sz int64 + for _, f := range hdrFrame.hf { + if sz += int64(f.Size()); sz > int64(*t.maxSendHeaderListSize) { + hdrListSizeErr = status.Errorf(codes.Internal, "header list size to send violates the maximum size (%d bytes) set by server", *t.maxSendHeaderListSize) + return false + } + } + return true + } + for { + success, err := t.controlBuf.executeAndPut(func(it interface{}) bool { + if !checkForStreamQuota(it) { + return false + } + if !checkForHeaderListSize(it) { + return false + } + return true + }, hdr) + if err != nil { + return nil, err + } + if success { + break + } + if hdrListSizeErr != nil { + return nil, hdrListSizeErr + } + firstTry = false + select { + case <-ch: + case <-s.ctx.Done(): + return nil, ContextErr(s.ctx.Err()) + case <-t.goAway: + return nil, errStreamDrain + case <-t.ctx.Done(): + return nil, ErrConnClosing + } + } if t.statsHandler != nil { outHeader := &stats.OutHeader{ Client: true, @@ -533,86 +684,110 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (_ *Strea // CloseStream clears the footprint of a stream when the stream is not needed any more. // This must not be executed in reader's goroutine. func (t *http2Client) CloseStream(s *Stream, err error) { - t.mu.Lock() - if t.activeStreams == nil { - t.mu.Unlock() - return - } + var ( + rst bool + rstCode http2.ErrCode + ) if err != nil { - // notify in-flight streams, before the deletion - s.write(recvMsg{err: err}) + rst = true + rstCode = http2.ErrCodeCancel } - delete(t.activeStreams, s.id) - if t.state == draining && len(t.activeStreams) == 0 { - // The transport is draining and s is the last live stream on t. - t.mu.Unlock() - t.Close() + t.closeStream(s, err, rst, rstCode, status.Convert(err), nil, false) +} + +func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2.ErrCode, st *status.Status, mdata map[string][]string, eosReceived bool) { + // Set stream status to done. + if s.swapState(streamDone) == streamDone { + // If it was already done, return. If multiple closeStream calls + // happen simultaneously, wait for the first to finish. + <-s.done return } - t.mu.Unlock() - // rstStream is true in case the stream is being closed at the client-side - // and the server needs to be intimated about it by sending a RST_STREAM - // frame. - // To make sure this frame is written to the wire before the headers of the - // next stream waiting for streamsQuota, we add to streamsQuota pool only - // after having acquired the writableChan to send RST_STREAM out (look at - // the controller() routine). - var rstStream bool - var rstError http2.ErrCode - defer func() { - // In case, the client doesn't have to send RST_STREAM to server - // we can safely add back to streamsQuota pool now. - if !rstStream { - t.streamsQuota.add(1) - return - } - t.controlBuf.put(&resetStream{s.id, rstError}) - }() - s.mu.Lock() - rstStream = s.rstStream - rstError = s.rstError - if s.state == streamDone { - s.mu.Unlock() - return + // status and trailers can be updated here without any synchronization because the stream goroutine will + // only read it after it sees an io.EOF error from read or write and we'll write those errors + // only after updating this. + s.status = st + if len(mdata) > 0 { + s.trailer = mdata } - if !s.headerDone { + if err != nil { + // This will unblock reads eventually. + s.write(recvMsg{err: err}) + } + // If headerChan isn't closed, then close it. + if atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) { + s.noHeaders = true close(s.headerChan) - s.headerDone = true } - s.state = streamDone - s.mu.Unlock() - if err != nil && !rstStream { - rstStream = true - rstError = http2.ErrCodeCancel + cleanup := &cleanupStream{ + streamID: s.id, + onWrite: func() { + t.mu.Lock() + if t.activeStreams != nil { + delete(t.activeStreams, s.id) + } + t.mu.Unlock() + if channelz.IsOn() { + if eosReceived { + atomic.AddInt64(&t.czData.streamsSucceeded, 1) + } else { + atomic.AddInt64(&t.czData.streamsFailed, 1) + } + } + }, + rst: rst, + rstCode: rstCode, + } + addBackStreamQuota := func(interface{}) bool { + t.streamQuota++ + if t.streamQuota > 0 && t.waitingStreams > 0 { + select { + case t.streamsQuotaAvailable <- struct{}{}: + default: + } + } + return true } + t.controlBuf.executeAndPut(addBackStreamQuota, cleanup) + // This will unblock write. + close(s.done) } // Close kicks off the shutdown process of the transport. This should be called // only once on a transport. Once it is called, the transport should not be // accessed any more. +// +// This method blocks until the addrConn that initiated this transport is +// re-connected. This happens because t.onClose() begins reconnect logic at the +// addrConn level and blocks until the addrConn is successfully connected. func (t *http2Client) Close() error { t.mu.Lock() + // Make sure we only Close once. if t.state == closing { t.mu.Unlock() return nil } + // Call t.onClose before setting the state to closing to prevent the client + // from attempting to create new streams ASAP. + t.onClose() t.state = closing - t.mu.Unlock() - t.cancel() - err := t.conn.Close() - t.mu.Lock() streams := t.activeStreams t.activeStreams = nil + if t.kpDormant { + // If the keepalive goroutine is blocked on this condition variable, we + // should unblock it so that the goroutine eventually exits. + t.kpDormancyCond.Signal() + } t.mu.Unlock() + t.controlBuf.finish() + t.cancel() + err := t.conn.Close() + if channelz.IsOn() { + channelz.RemoveEntry(t.channelzID) + } // Notify all active streams. for _, s := range streams { - s.mu.Lock() - if !s.headerDone { - close(s.headerChan) - s.headerDone = true - } - s.mu.Unlock() - s.write(recvMsg{err: ErrConnClosing}) + t.closeStream(s, ErrConnClosing, false, http2.ErrCodeNo, status.New(codes.Unavailable, ErrConnClosing.Desc), nil, false) } if t.statsHandler != nil { connEnd := &stats.ConnEnd{ @@ -628,170 +803,78 @@ func (t *http2Client) Close() error { // stream is closed. If there are no active streams, the transport is closed // immediately. This does nothing if the transport is already draining or // closing. -func (t *http2Client) GracefulClose() error { +func (t *http2Client) GracefulClose() { t.mu.Lock() - switch t.state { - case closing, draining: + // Make sure we move to draining only from active. + if t.state == draining || t.state == closing { t.mu.Unlock() - return nil + return } t.state = draining active := len(t.activeStreams) t.mu.Unlock() if active == 0 { - return t.Close() + t.Close() + return } - return nil + t.controlBuf.put(&incomingGoAway{}) } // Write formats the data into HTTP2 data frame(s) and sends it out. The caller // should proceed only if Write returns nil. func (t *http2Client) Write(s *Stream, hdr []byte, data []byte, opts *Options) error { - select { - case <-s.ctx.Done(): - return ContextErr(s.ctx.Err()) - case <-s.done: - return io.EOF - case <-t.ctx.Done(): - return ErrConnClosing - default: - } - - if hdr == nil && data == nil && opts.Last { - // stream.CloseSend uses this to send an empty frame with endStream=True - t.controlBuf.put(&dataFrame{streamID: s.id, endStream: true, f: func() {}}) - return nil - } - // Add data to header frame so that we can equally distribute data across frames. - emptyLen := http2MaxFrameLen - len(hdr) - if emptyLen > len(data) { - emptyLen = len(data) - } - hdr = append(hdr, data[:emptyLen]...) - data = data[emptyLen:] - var ( - streamQuota int - streamQuotaVer uint32 - err error - ) - for idx, r := range [][]byte{hdr, data} { - for len(r) > 0 { - size := http2MaxFrameLen - if size > len(r) { - size = len(r) - } - if streamQuota == 0 { // Used up all the locally cached stream quota. - // Get all the stream quota there is. - streamQuota, streamQuotaVer, err = s.sendQuotaPool.get(math.MaxInt32, s.waiters) - if err != nil { - return err - } - } - if size > streamQuota { - size = streamQuota - } - - // Get size worth quota from transport. - tq, _, err := t.sendQuotaPool.get(size, s.waiters) - if err != nil { - return err - } - if tq < size { - size = tq - } - ltq, _, err := t.localSendQuota.get(size, s.waiters) - if err != nil { - // Add the acquired quota back to transport. - t.sendQuotaPool.add(tq) - return err - } - // even if ltq is smaller than size we don't adjust size since - // ltq is only a soft limit. - streamQuota -= size - p := r[:size] - var endStream bool - // See if this is the last frame to be written. - if opts.Last { - if len(r)-size == 0 { // No more data in r after this iteration. - if idx == 0 { // We're writing data header. - if len(data) == 0 { // There's no data to follow. - endStream = true - } - } else { // We're writing data. - endStream = true - } - } - } - success := func() { - ltq := ltq - t.controlBuf.put(&dataFrame{streamID: s.id, endStream: endStream, d: p, f: func() { t.localSendQuota.add(ltq) }}) - r = r[size:] - } - failure := func() { // The stream quota version must have changed. - // Our streamQuota cache is invalidated now, so give it back. - s.sendQuotaPool.lockedAdd(streamQuota + size) - } - if !s.sendQuotaPool.compareAndExecute(streamQuotaVer, success, failure) { - // Couldn't send this chunk out. - t.sendQuotaPool.add(size) - t.localSendQuota.add(ltq) - streamQuota = 0 - } + if opts.Last { + // If it's the last message, update stream state. + if !s.compareAndSwapState(streamActive, streamWriteDone) { + return errStreamDone } + } else if s.getState() != streamActive { + return errStreamDone } - if streamQuota > 0 { // Add the left over quota back to stream. - s.sendQuotaPool.add(streamQuota) - } - if !opts.Last { - return nil - } - s.mu.Lock() - if s.state != streamDone { - s.state = streamWriteDone + df := &dataFrame{ + streamID: s.id, + endStream: opts.Last, + } + if hdr != nil || data != nil { // If it's not an empty data frame. + // Add some data to grpc message header so that we can equally + // distribute bytes across frames. + emptyLen := http2MaxFrameLen - len(hdr) + if emptyLen > len(data) { + emptyLen = len(data) + } + hdr = append(hdr, data[:emptyLen]...) + data = data[emptyLen:] + df.h, df.d = hdr, data + // TODO(mmukhi): The above logic in this if can be moved to loopyWriter's data handler. + if err := s.wq.get(int32(len(hdr) + len(data))); err != nil { + return err + } } - s.mu.Unlock() - return nil + return t.controlBuf.put(df) } -func (t *http2Client) getStream(f http2.Frame) (*Stream, bool) { +func (t *http2Client) getStream(f http2.Frame) *Stream { t.mu.Lock() - defer t.mu.Unlock() - s, ok := t.activeStreams[f.Header().StreamID] - return s, ok + s := t.activeStreams[f.Header().StreamID] + t.mu.Unlock() + return s } // adjustWindow sends out extra window update over the initial window size // of stream if the application is requesting data larger in size than // the window. func (t *http2Client) adjustWindow(s *Stream, n uint32) { - s.mu.Lock() - defer s.mu.Unlock() - if s.state == streamDone { - return - } if w := s.fc.maybeAdjust(n); w > 0 { - // Piggyback connection's window update along. - if cw := t.fc.resetPendingUpdate(); cw > 0 { - t.controlBuf.put(&windowUpdate{0, cw}) - } - t.controlBuf.put(&windowUpdate{s.id, w}) + t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w}) } } -// updateWindow adjusts the inbound quota for the stream and the transport. -// Window updates will deliver to the controller for sending when -// the cumulative quota exceeds the corresponding threshold. +// updateWindow adjusts the inbound quota for the stream. +// Window updates will be sent out when the cumulative quota +// exceeds the corresponding threshold. func (t *http2Client) updateWindow(s *Stream, n uint32) { - s.mu.Lock() - defer s.mu.Unlock() - if s.state == streamDone { - return - } if w := s.fc.onRead(n); w > 0 { - if cw := t.fc.resetPendingUpdate(); cw > 0 { - t.controlBuf.put(&windowUpdate{0, cw}) - } - t.controlBuf.put(&windowUpdate{s.id, w}) + t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w}) } } @@ -803,14 +886,17 @@ func (t *http2Client) updateFlowControl(n uint32) { for _, s := range t.activeStreams { s.fc.newLimit(n) } - t.initialWindowSize = int32(n) t.mu.Unlock() - t.controlBuf.put(&windowUpdate{0, t.fc.newLimit(n)}) - t.controlBuf.put(&settings{ + updateIWS := func(interface{}) bool { + t.initialWindowSize = int32(n) + return true + } + t.controlBuf.executeAndPut(updateIWS, &outgoingWindowUpdate{streamID: 0, increment: t.fc.newLimit(n)}) + t.controlBuf.put(&outgoingSettings{ ss: []http2.Setting{ { ID: http2.SettingInitialWindowSize, - Val: uint32(n), + Val: n, }, }, }) @@ -820,7 +906,7 @@ func (t *http2Client) handleData(f *http2.DataFrame) { size := f.Header().Length var sendBDPPing bool if t.bdpEst != nil { - sendBDPPing = t.bdpEst.add(uint32(size)) + sendBDPPing = t.bdpEst.add(size) } // Decouple connection's flow control from application's read. // An update on connection's flow control should not depend on @@ -831,142 +917,128 @@ func (t *http2Client) handleData(f *http2.DataFrame) { // active(fast) streams from starving in presence of slow or // inactive streams. // - // Furthermore, if a bdpPing is being sent out we can piggyback - // connection's window update for the bytes we just received. + if w := t.fc.onData(size); w > 0 { + t.controlBuf.put(&outgoingWindowUpdate{ + streamID: 0, + increment: w, + }) + } if sendBDPPing { - if size != 0 { // Could've been an empty data frame. - t.controlBuf.put(&windowUpdate{0, uint32(size)}) + // Avoid excessive ping detection (e.g. in an L7 proxy) + // by sending a window update prior to the BDP ping. + + if w := t.fc.reset(); w > 0 { + t.controlBuf.put(&outgoingWindowUpdate{ + streamID: 0, + increment: w, + }) } + t.controlBuf.put(bdpPing) - } else { - if err := t.fc.onData(uint32(size)); err != nil { - t.Close() - return - } - if w := t.fc.onRead(uint32(size)); w > 0 { - t.controlBuf.put(&windowUpdate{0, w}) - } } // Select the right stream to dispatch. - s, ok := t.getStream(f) - if !ok { + s := t.getStream(f) + if s == nil { return } if size > 0 { - s.mu.Lock() - if s.state == streamDone { - s.mu.Unlock() - return - } - if err := s.fc.onData(uint32(size)); err != nil { - s.rstStream = true - s.rstError = http2.ErrCodeFlowControl - s.finish(status.New(codes.Internal, err.Error())) - s.mu.Unlock() - s.write(recvMsg{err: io.EOF}) + if err := s.fc.onData(size); err != nil { + t.closeStream(s, io.EOF, true, http2.ErrCodeFlowControl, status.New(codes.Internal, err.Error()), nil, false) return } if f.Header().Flags.Has(http2.FlagDataPadded) { - if w := s.fc.onRead(uint32(size) - uint32(len(f.Data()))); w > 0 { - t.controlBuf.put(&windowUpdate{s.id, w}) + if w := s.fc.onRead(size - uint32(len(f.Data()))); w > 0 { + t.controlBuf.put(&outgoingWindowUpdate{s.id, w}) } } - s.mu.Unlock() // TODO(bradfitz, zhaoq): A copy is required here because there is no // guarantee f.Data() is consumed before the arrival of next frame. // Can this copy be eliminated? if len(f.Data()) > 0 { - data := make([]byte, len(f.Data())) - copy(data, f.Data()) - s.write(recvMsg{data: data}) + buffer := t.bufferPool.get() + buffer.Reset() + buffer.Write(f.Data()) + s.write(recvMsg{buffer: buffer}) } } // The server has closed the stream without sending trailers. Record that // the read direction is closed, and set the status appropriately. if f.FrameHeader.Flags.Has(http2.FlagDataEndStream) { - s.mu.Lock() - if s.state == streamDone { - s.mu.Unlock() - return - } - s.finish(status.New(codes.Internal, "server closed the stream without sending trailers")) - s.mu.Unlock() - s.write(recvMsg{err: io.EOF}) + t.closeStream(s, io.EOF, false, http2.ErrCodeNo, status.New(codes.Internal, "server closed the stream without sending trailers"), nil, true) } } func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) { - s, ok := t.getStream(f) - if !ok { - return - } - s.mu.Lock() - if s.state == streamDone { - s.mu.Unlock() + s := t.getStream(f) + if s == nil { return } - if !s.headerDone { - close(s.headerChan) - s.headerDone = true - } - - code := http2.ErrCode(f.ErrCode) - if code == http2.ErrCodeRefusedStream { + if f.ErrCode == http2.ErrCodeRefusedStream { // The stream was unprocessed by the server. - s.unprocessed = true + atomic.StoreUint32(&s.unprocessed, 1) } - statusCode, ok := http2ErrConvTab[code] + statusCode, ok := http2ErrConvTab[f.ErrCode] if !ok { warningf("transport: http2Client.handleRSTStream found no mapped gRPC status for the received http2 error %v", f.ErrCode) statusCode = codes.Unknown } - s.finish(status.Newf(statusCode, "stream terminated by RST_STREAM with error code: %v", f.ErrCode)) - s.mu.Unlock() - s.write(recvMsg{err: io.EOF}) + if statusCode == codes.Canceled { + if d, ok := s.ctx.Deadline(); ok && !d.After(time.Now()) { + // Our deadline was already exceeded, and that was likely the cause + // of this cancelation. Alter the status code accordingly. + statusCode = codes.DeadlineExceeded + } + } + t.closeStream(s, io.EOF, false, http2.ErrCodeNo, status.Newf(statusCode, "stream terminated by RST_STREAM with error code: %v", f.ErrCode), nil, false) } func (t *http2Client) handleSettings(f *http2.SettingsFrame, isFirst bool) { if f.IsAck() { return } - var rs []http2.Setting - var ps []http2.Setting - isMaxConcurrentStreamsMissing := true + var maxStreams *uint32 + var ss []http2.Setting + var updateFuncs []func() f.ForeachSetting(func(s http2.Setting) error { - if s.ID == http2.SettingMaxConcurrentStreams { - isMaxConcurrentStreamsMissing = false - } - if t.isRestrictive(s) { - rs = append(rs, s) - } else { - ps = append(ps, s) + switch s.ID { + case http2.SettingMaxConcurrentStreams: + maxStreams = new(uint32) + *maxStreams = s.Val + case http2.SettingMaxHeaderListSize: + updateFuncs = append(updateFuncs, func() { + t.maxSendHeaderListSize = new(uint32) + *t.maxSendHeaderListSize = s.Val + }) + default: + ss = append(ss, s) } return nil }) - if isFirst && isMaxConcurrentStreamsMissing { - // This means server is imposing no limits on - // maximum number of concurrent streams initiated by client. - // So we must remove our self-imposed limit. - ps = append(ps, http2.Setting{ - ID: http2.SettingMaxConcurrentStreams, - Val: math.MaxUint32, - }) - } - t.applySettings(rs) - t.controlBuf.put(&settingsAck{}) - t.applySettings(ps) -} - -func (t *http2Client) isRestrictive(s http2.Setting) bool { - switch s.ID { - case http2.SettingMaxConcurrentStreams: - return int(s.Val) < t.maxStreams - case http2.SettingInitialWindowSize: - // Note: we don't acquire a lock here to read streamSendQuota - // because the same goroutine updates it later. - return s.Val < t.streamSendQuota + if isFirst && maxStreams == nil { + maxStreams = new(uint32) + *maxStreams = math.MaxUint32 + } + sf := &incomingSettings{ + ss: ss, + } + if maxStreams != nil { + updateStreamQuota := func() { + delta := int64(*maxStreams) - int64(t.maxConcurrentStreams) + t.maxConcurrentStreams = *maxStreams + t.streamQuota += delta + if delta > 0 && t.waitingStreams > 0 { + close(t.streamsQuotaAvailable) // wake all of them up. + t.streamsQuotaAvailable = make(chan struct{}, 1) + } + } + updateFuncs = append(updateFuncs, updateStreamQuota) } - return false + t.controlBuf.executeAndPut(func(interface{}) bool { + for _, f := range updateFuncs { + f() + } + return true + }, sf) } func (t *http2Client) handlePing(f *http2.PingFrame) { @@ -984,7 +1056,7 @@ func (t *http2Client) handlePing(f *http2.PingFrame) { func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) { t.mu.Lock() - if t.state != reachable && t.state != draining { + if t.state == closing { t.mu.Unlock() return } @@ -1018,6 +1090,11 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) { default: t.setGoAwayReason(f) close(t.goAway) + t.controlBuf.put(&incomingGoAway{}) + // Notify the clientconn about the GOAWAY before we set the state to + // draining, to allow the client to stop attempting to create streams + // before disallowing new streams on this connection. + t.onGoAway(t.goAwayReason) t.state = draining } // All streams with IDs greater than the GoAwayId @@ -1029,11 +1106,8 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) { for streamID, stream := range t.activeStreams { if streamID > id && streamID <= upperLimit { // The stream was unprocessed by the server. - stream.mu.Lock() - stream.unprocessed = true - stream.finish(statusGoAway) - stream.mu.Unlock() - close(stream.goAway) + atomic.StoreUint32(&stream.unprocessed, 1) + t.closeStream(stream, errStreamDrain, false, http2.ErrCodeNo, statusGoAway, nil, false) } } t.prevGoAwayID = id @@ -1065,41 +1139,38 @@ func (t *http2Client) GetGoAwayReason() GoAwayReason { } func (t *http2Client) handleWindowUpdate(f *http2.WindowUpdateFrame) { - id := f.Header().StreamID - incr := f.Increment - if id == 0 { - t.sendQuotaPool.add(int(incr)) - return - } - if s, ok := t.getStream(f); ok { - s.sendQuotaPool.add(int(incr)) - } + t.controlBuf.put(&incomingWindowUpdate{ + streamID: f.Header().StreamID, + increment: f.Increment, + }) } // operateHeaders takes action on the decoded headers. func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { - s, ok := t.getStream(frame) - if !ok { + s := t.getStream(frame) + if s == nil { return } - s.mu.Lock() - s.bytesReceived = true - s.mu.Unlock() - var state decodeState - if err := state.decodeResponseHeader(frame); err != nil { - s.mu.Lock() - if !s.headerDone { - close(s.headerChan) - s.headerDone = true - } - s.mu.Unlock() - s.write(recvMsg{err: err}) - // Something wrong. Stops reading even when there is remaining. + endStream := frame.StreamEnded() + atomic.StoreUint32(&s.bytesReceived, 1) + initialHeader := atomic.LoadUint32(&s.headerChanClosed) == 0 + + if !initialHeader && !endStream { + // As specified by gRPC over HTTP2, a HEADERS frame (and associated CONTINUATION frames) can only appear at the start or end of a stream. Therefore, second HEADERS frame must have EOS bit set. + st := status.New(codes.Internal, "a HEADERS frame cannot appear in the middle of a stream") + t.closeStream(s, st.Err(), true, http2.ErrCodeProtocol, st, nil, false) return } - endStream := frame.StreamEnded() - var isHeader bool + state := &decodeState{} + // Initialize isGRPC value to be !initialHeader, since if a gRPC Response-Headers has already been received, then it means that the peer is speaking gRPC and we are in gRPC mode. + state.data.isGRPC = !initialHeader + if err := state.decodeHeader(frame); err != nil { + t.closeStream(s, err, true, http2.ErrCodeProtocol, status.Convert(err), nil, endStream) + return + } + + isHeader := false defer func() { if t.statsHandler != nil { if isHeader { @@ -1118,39 +1189,32 @@ func (t *http2Client) operateHeaders(frame *http2.MetaHeadersFrame) { } }() - s.mu.Lock() - if !s.headerDone { + // If headerChan hasn't been closed yet + if atomic.CompareAndSwapUint32(&s.headerChanClosed, 0, 1) { if !endStream { - // Headers frame is not actually a trailers-only frame. + // HEADERS frame block carries a Response-Headers. isHeader = true - s.recvCompress = state.encoding - if len(state.mdata) > 0 { - s.header = state.mdata + // These values can be set without any synchronization because + // stream goroutine will read it only after seeing a closed + // headerChan which we'll close after setting this. + s.recvCompress = state.data.encoding + if len(state.data.mdata) > 0 { + s.header = state.data.mdata } + } else { + // HEADERS frame block carries a Trailers-Only. + s.noHeaders = true } close(s.headerChan) - s.headerDone = true } - if !endStream || s.state == streamDone { - s.mu.Unlock() + + if !endStream { return } - if len(state.mdata) > 0 { - s.trailer = state.mdata - } - s.finish(state.status()) - s.mu.Unlock() - s.write(recvMsg{err: io.EOF}) -} -func handleMalformedHTTP2(s *Stream, err error) { - s.mu.Lock() - if !s.headerDone { - close(s.headerChan) - s.headerDone = true - } - s.mu.Unlock() - s.write(recvMsg{err: err}) + // if client received END_STREAM from server while stream was still active, send RST_STREAM + rst := s.getState() == streamActive + t.closeStream(s, io.EOF, rst, http2.ErrCodeNo, state.status(), state.data.mdata, true) } // reader runs as a separate goroutine in charge of reading data from network @@ -1160,25 +1224,32 @@ func handleMalformedHTTP2(s *Stream, err error) { // optimal. // TODO(zhaoq): Check the validity of the incoming frame sequence. func (t *http2Client) reader() { + defer close(t.readerDone) // Check the validity of server preface. frame, err := t.framer.fr.ReadFrame() if err != nil { - t.Close() + t.Close() // this kicks off resetTransport, so must be last before return return } - atomic.CompareAndSwapUint32(&t.activity, 0, 1) + t.conn.SetReadDeadline(time.Time{}) // reset deadline once we get the settings frame (we didn't time out, yay!) + if t.keepaliveEnabled { + atomic.CompareAndSwapUint32(&t.activity, 0, 1) + } sf, ok := frame.(*http2.SettingsFrame) if !ok { - t.Close() + t.Close() // this kicks off resetTransport, so must be last before return return } - t.onSuccess() + t.onPrefaceReceipt() t.handleSettings(sf, true) // loop to keep reading incoming messages on this transport. for { + t.controlBuf.throttle() frame, err := t.framer.fr.ReadFrame() - atomic.CompareAndSwapUint32(&t.activity, 0, 1) + if t.keepaliveEnabled { + atomic.CompareAndSwapUint32(&t.activity, 0, 1) + } if err != nil { // Abort an active stream if the http2.Framer returns a // http2.StreamError. This can happen only if the server's response @@ -1189,7 +1260,9 @@ func (t *http2Client) reader() { t.mu.Unlock() if s != nil { // use error detail to provide better err message - handleMalformedHTTP2(s, streamErrorf(http2ErrConvTab[se.Code], "%v", t.framer.fr.ErrorDetail())) + code := http2ErrConvTab[se.Code] + msg := t.framer.fr.ErrorDetail().Error() + t.closeStream(s, status.Error(code, msg), true, http2.ErrCodeProtocol, status.New(code, msg), nil, false) } continue } else { @@ -1219,109 +1292,6 @@ func (t *http2Client) reader() { } } -func (t *http2Client) applySettings(ss []http2.Setting) { - for _, s := range ss { - switch s.ID { - case http2.SettingMaxConcurrentStreams: - // TODO(zhaoq): This is a hack to avoid significant refactoring of the - // code to deal with the unrealistic int32 overflow. Probably will try - // to find a better way to handle this later. - if s.Val > math.MaxInt32 { - s.Val = math.MaxInt32 - } - ms := t.maxStreams - t.maxStreams = int(s.Val) - t.streamsQuota.add(int(s.Val) - ms) - case http2.SettingInitialWindowSize: - t.mu.Lock() - for _, stream := range t.activeStreams { - // Adjust the sending quota for each stream. - stream.sendQuotaPool.addAndUpdate(int(s.Val) - int(t.streamSendQuota)) - } - t.streamSendQuota = s.Val - t.mu.Unlock() - } - } -} - -// TODO(mmukhi): A lot of this code(and code in other places in the tranpsort layer) -// is duplicated between the client and the server. -// The transport layer needs to be refactored to take care of this. -func (t *http2Client) itemHandler(i item) (err error) { - defer func() { - if err != nil { - errorf(" error in itemHandler: %v", err) - } - }() - switch i := i.(type) { - case *dataFrame: - if err := t.framer.fr.WriteData(i.streamID, i.endStream, i.d); err != nil { - return err - } - i.f() - return nil - case *headerFrame: - t.hBuf.Reset() - for _, f := range i.hf { - t.hEnc.WriteField(f) - } - endHeaders := false - first := true - for !endHeaders { - size := t.hBuf.Len() - if size > http2MaxFrameLen { - size = http2MaxFrameLen - } else { - endHeaders = true - } - if first { - first = false - err = t.framer.fr.WriteHeaders(http2.HeadersFrameParam{ - StreamID: i.streamID, - BlockFragment: t.hBuf.Next(size), - EndStream: i.endStream, - EndHeaders: endHeaders, - }) - } else { - err = t.framer.fr.WriteContinuation( - i.streamID, - endHeaders, - t.hBuf.Next(size), - ) - } - if err != nil { - return err - } - } - return nil - case *windowUpdate: - return t.framer.fr.WriteWindowUpdate(i.streamID, i.increment) - case *settings: - return t.framer.fr.WriteSettings(i.ss...) - case *settingsAck: - return t.framer.fr.WriteSettingsAck() - case *resetStream: - // If the server needs to be to intimated about stream closing, - // then we need to make sure the RST_STREAM frame is written to - // the wire before the headers of the next stream waiting on - // streamQuota. We ensure this by adding to the streamsQuota pool - // only after having acquired the writableChan to send RST_STREAM. - err := t.framer.fr.WriteRSTStream(i.streamID, i.code) - t.streamsQuota.add(1) - return err - case *flushIO: - return t.framer.writer.Flush() - case *ping: - if !i.ack { - t.bdpEst.timesnap(i.data) - } - return t.framer.fr.WritePing(i.ack, i.data) - default: - errorf("transport: http2Client.controller got unexpected item type %v", i) - return fmt.Errorf("transport: http2Client.controller got unexpected item type %v", i) - } -} - // keepalive running in a separate goroutune makes sure the connection is alive by sending pings. func (t *http2Client) keepalive() { p := &ping{data: [8]byte{}} @@ -1333,26 +1303,32 @@ func (t *http2Client) keepalive() { timer.Reset(t.kp.Time) continue } - // Check if keepalive should go dormant. t.mu.Lock() - if len(t.activeStreams) < 1 && !t.kp.PermitWithoutStream { - // Make awakenKeepalive writable. - <-t.awakenKeepalive + if t.state == closing { + // If the transport is closing, we should exit from the + // keepalive goroutine here. If not, we could have a race + // between the call to Signal() from Close() and the call to + // Wait() here, whereby the keepalive goroutine ends up + // blocking on the condition variable which will never be + // signalled again. t.mu.Unlock() - select { - case <-t.awakenKeepalive: - // If the control gets here a ping has been sent - // need to reset the timer with keepalive.Timeout. - case <-t.ctx.Done(): - return - } - } else { - t.mu.Unlock() - // Send ping. - t.controlBuf.put(p) + return + } + if len(t.activeStreams) < 1 && !t.kp.PermitWithoutStream { + t.kpDormant = true + t.kpDormancyCond.Wait() } + t.kpDormant = false + t.mu.Unlock() + + if channelz.IsOn() { + atomic.AddInt64(&t.czData.kpCount, 1) + } + // We get here either because we were dormant and a new stream was + // created which unblocked the Wait() call, or because the + // keepalive timer expired. In both cases, we need to send a ping. + t.controlBuf.put(p) - // By the time control gets here a ping has been sent one way or the other. timer.Reset(t.kp.Timeout) select { case <-timer.C: @@ -1360,6 +1336,7 @@ func (t *http2Client) keepalive() { timer.Reset(t.kp.Time) continue } + infof("transport: closing client transport due to idleness.") t.Close() return case <-t.ctx.Done(): @@ -1384,3 +1361,54 @@ func (t *http2Client) Error() <-chan struct{} { func (t *http2Client) GoAway() <-chan struct{} { return t.goAway } + +func (t *http2Client) ChannelzMetric() *channelz.SocketInternalMetric { + s := channelz.SocketInternalMetric{ + StreamsStarted: atomic.LoadInt64(&t.czData.streamsStarted), + StreamsSucceeded: atomic.LoadInt64(&t.czData.streamsSucceeded), + StreamsFailed: atomic.LoadInt64(&t.czData.streamsFailed), + MessagesSent: atomic.LoadInt64(&t.czData.msgSent), + MessagesReceived: atomic.LoadInt64(&t.czData.msgRecv), + KeepAlivesSent: atomic.LoadInt64(&t.czData.kpCount), + LastLocalStreamCreatedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastStreamCreatedTime)), + LastMessageSentTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgSentTime)), + LastMessageReceivedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgRecvTime)), + LocalFlowControlWindow: int64(t.fc.getSize()), + SocketOptions: channelz.GetSocketOption(t.conn), + LocalAddr: t.localAddr, + RemoteAddr: t.remoteAddr, + // RemoteName : + } + if au, ok := t.authInfo.(credentials.ChannelzSecurityInfo); ok { + s.Security = au.GetSecurityValue() + } + s.RemoteFlowControlWindow = t.getOutFlowWindow() + return &s +} + +func (t *http2Client) RemoteAddr() net.Addr { return t.remoteAddr } + +func (t *http2Client) IncrMsgSent() { + atomic.AddInt64(&t.czData.msgSent, 1) + atomic.StoreInt64(&t.czData.lastMsgSentTime, time.Now().UnixNano()) +} + +func (t *http2Client) IncrMsgRecv() { + atomic.AddInt64(&t.czData.msgRecv, 1) + atomic.StoreInt64(&t.czData.lastMsgRecvTime, time.Now().UnixNano()) +} + +func (t *http2Client) getOutFlowWindow() int64 { + resp := make(chan uint32, 1) + timer := time.NewTimer(time.Second) + defer timer.Stop() + t.controlBuf.put(&outFlowControlSizeRequest{resp}) + select { + case sz := <-resp: + return int64(sz) + case <-t.ctxDone: + return -1 + case <-timer.C: + return -2 + } +} diff --git a/vendor/google.golang.org/grpc/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go similarity index 58% rename from vendor/google.golang.org/grpc/transport/http2_server.go rename to vendor/google.golang.org/grpc/internal/transport/http2_server.go index eb73b722a9..33686a11ab 100644 --- a/vendor/google.golang.org/grpc/transport/http2_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go @@ -20,11 +20,11 @@ package transport import ( "bytes" + "context" "errors" "fmt" "io" "math" - "math/rand" "net" "strconv" "sync" @@ -32,11 +32,16 @@ import ( "time" "github.com/golang/protobuf/proto" - "golang.org/x/net/context" "golang.org/x/net/http2" "golang.org/x/net/http2/hpack" + + spb "google.golang.org/genproto/googleapis/rpc/status" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal" + "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/grpcrand" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" @@ -45,35 +50,39 @@ import ( "google.golang.org/grpc/tap" ) -// ErrIllegalHeaderWrite indicates that setting header is illegal because of -// the stream's state. -var ErrIllegalHeaderWrite = errors.New("transport: the stream is done or WriteHeader was already called") +var ( + // ErrIllegalHeaderWrite indicates that setting header is illegal because of + // the stream's state. + ErrIllegalHeaderWrite = errors.New("transport: the stream is done or WriteHeader was already called") + // ErrHeaderListSizeLimitViolation indicates that the header list size is larger + // than the limit set by peer. + ErrHeaderListSizeLimitViolation = errors.New("transport: trying to send header list size larger than the limit set by peer") + // statusRawProto is a function to get to the raw status proto wrapped in a + // status.Status without a proto.Clone(). + statusRawProto = internal.StatusRawProto.(func(*status.Status) *spb.Status) +) // http2Server implements the ServerTransport interface with HTTP2. type http2Server struct { ctx context.Context - cancel context.CancelFunc + done chan struct{} conn net.Conn + loopy *loopyWriter + readerDone chan struct{} // sync point to enable testing. + writerDone chan struct{} // sync point to enable testing. remoteAddr net.Addr localAddr net.Addr maxStreamID uint32 // max stream ID ever seen authInfo credentials.AuthInfo // auth info about the connection inTapHandle tap.ServerInHandle framer *framer - hBuf *bytes.Buffer // the buffer for HPACK encoding - hEnc *hpack.Encoder // HPACK encoder // The max number of concurrent streams. maxStreams uint32 // controlBuf delivers all the control related tasks (e.g., window // updates, reset streams, and various settings) to the controller. controlBuf *controlBuffer - fc *inFlow - // sendQuotaPool provides flow control to outbound message. - sendQuotaPool *quotaPool - // localSendQuota limits the amount of data that can be scheduled - // for writing before it is actually written out. - localSendQuota *quotaPool - stats stats.Handler + fc *trInFlow + stats stats.Handler // Flag to keep track of reading activity on transport. // 1 is true and 0 is false. activity uint32 // Accessed atomically. @@ -89,9 +98,10 @@ type http2Server struct { // Flag to signify that number of ping strikes should be reset to 0. // This is set whenever data or header frames are sent. // 1 means yes. - resetPingStrikes uint32 // Accessed atomically. - initialWindowSize int32 - bdpEst *bdpEstimator + resetPingStrikes uint32 // Accessed atomically. + initialWindowSize int32 + bdpEst *bdpEstimator + maxSendHeaderListSize *uint32 mu sync.Mutex // guard the following @@ -104,29 +114,33 @@ type http2Server struct { drainChan chan struct{} state transportState activeStreams map[uint32]*Stream - // the per-stream outbound flow control window size set by the peer. - streamSendQuota uint32 // idle is the time instant when the connection went idle. // This is either the beginning of the connection or when the number of // RPCs go down to 0. // When the connection is busy, this value is set to 0. idle time.Time + + // Fields below are for channelz metric collection. + channelzID int64 // channelz unique identification number + czData *channelzData + bufferPool *bufferPool } // newHTTP2Server constructs a ServerTransport based on HTTP2. ConnectionError is // returned if something goes wrong. func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err error) { - writeBufSize := defaultWriteBufSize - if config.WriteBufferSize > 0 { - writeBufSize = config.WriteBufferSize - } - readBufSize := defaultReadBufSize - if config.ReadBufferSize > 0 { - readBufSize = config.ReadBufferSize + writeBufSize := config.WriteBufferSize + readBufSize := config.ReadBufferSize + maxHeaderListSize := defaultServerMaxHeaderListSize + if config.MaxHeaderListSize != nil { + maxHeaderListSize = *config.MaxHeaderListSize } - framer := newFramer(conn, writeBufSize, readBufSize) + framer := newFramer(conn, writeBufSize, readBufSize, maxHeaderListSize) // Send initial settings as connection preface to client. - var isettings []http2.Setting + isettings := []http2.Setting{{ + ID: http2.SettingMaxFrameSize, + Val: http2MaxFrameLen, + }} // TODO(zhaoq): Have a better way to signal "no limit" because 0 is // permitted in the HTTP2 spec. maxStreams := config.MaxStreams @@ -154,6 +168,12 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err ID: http2.SettingInitialWindowSize, Val: uint32(iwz)}) } + if config.MaxHeaderListSize != nil { + isettings = append(isettings, http2.Setting{ + ID: http2.SettingMaxHeaderListSize, + Val: *config.MaxHeaderListSize, + }) + } if err := framer.fr.WriteSettings(isettings...); err != nil { return nil, connectionErrorf(false, err, "transport: %v", err) } @@ -185,33 +205,31 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err if kep.MinTime == 0 { kep.MinTime = defaultKeepalivePolicyMinTime } - var buf bytes.Buffer - ctx, cancel := context.WithCancel(context.Background()) + done := make(chan struct{}) t := &http2Server{ - ctx: ctx, - cancel: cancel, + ctx: context.Background(), + done: done, conn: conn, remoteAddr: conn.RemoteAddr(), localAddr: conn.LocalAddr(), authInfo: config.AuthInfo, framer: framer, - hBuf: &buf, - hEnc: hpack.NewEncoder(&buf), + readerDone: make(chan struct{}), + writerDone: make(chan struct{}), maxStreams: maxStreams, inTapHandle: config.InTapHandle, - controlBuf: newControlBuffer(), - fc: &inFlow{limit: uint32(icwz)}, - sendQuotaPool: newQuotaPool(defaultWindowSize), - localSendQuota: newQuotaPool(defaultLocalSendQuota), + fc: &trInFlow{limit: uint32(icwz)}, state: reachable, activeStreams: make(map[uint32]*Stream), - streamSendQuota: defaultWindowSize, stats: config.StatsHandler, kp: kp, idle: time.Now(), kep: kep, initialWindowSize: iwz, + czData: new(channelzData), + bufferPool: newBufferPool(), } + t.controlBuf = newControlBuffer(t.done) if dynamicWindow { t.bdpEst = &bdpEstimator{ bdp: initialWindowSize, @@ -226,6 +244,9 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err connBegin := &stats.ConnBegin{} t.stats.HandleConn(t.ctx, connBegin) } + if channelz.IsOn() { + t.channelzID = channelz.RegisterNormalSocket(t, config.ChannelzParentID, fmt.Sprintf("%s -> %s", t.remoteAddr, t.localAddr)) + } t.framer.writer.Flush() defer func() { @@ -258,25 +279,34 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err t.handleSettings(sf) go func() { - loopyWriter(t.ctx, t.controlBuf, t.itemHandler) + t.loopy = newLoopyWriter(serverSide, t.framer, t.controlBuf, t.bdpEst) + t.loopy.ssGoAwayHandler = t.outgoingGoAwayHandler + if err := t.loopy.run(); err != nil { + errorf("transport: loopyWriter.run returning. Err: %v", err) + } t.conn.Close() + close(t.writerDone) }() go t.keepalive() return t, nil } // operateHeader takes action on the decoded headers. -func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(*Stream), traceCtx func(context.Context, string) context.Context) (close bool) { +func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func(*Stream), traceCtx func(context.Context, string) context.Context) (fatal bool) { streamID := frame.Header().StreamID - - var state decodeState - for _, hf := range frame.Fields { - if err := state.processHeaderField(hf); err != nil { - if se, ok := err.(StreamError); ok { - t.controlBuf.put(&resetStream{streamID, statusCodeConvTab[se.Code]}) - } - return + state := &decodeState{ + serverSide: true, + } + if err := state.decodeHeader(frame); err != nil { + if se, ok := status.FromError(err); ok { + t.controlBuf.put(&cleanupStream{ + streamID: streamID, + rst: true, + rstCode: statusCodeConvTab[se.Code()], + onWrite: func() {}, + }) } + return false } buf := newRecvBuffer() @@ -285,17 +315,16 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( st: t, buf: buf, fc: &inFlow{limit: uint32(t.initialWindowSize)}, - recvCompress: state.encoding, - method: state.method, - contentSubtype: state.contentSubtype, + recvCompress: state.data.encoding, + method: state.data.method, + contentSubtype: state.data.contentSubtype, } - if frame.StreamEnded() { // s is just created by the caller. No lock needed. s.state = streamReadDone } - if state.timeoutSet { - s.ctx, s.cancel = context.WithTimeout(t.ctx, state.timeout) + if state.data.timeoutSet { + s.ctx, s.cancel = context.WithTimeout(t.ctx, state.data.timeout) } else { s.ctx, s.cancel = context.WithCancel(t.ctx) } @@ -307,55 +336,68 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( pr.AuthInfo = t.authInfo } s.ctx = peer.NewContext(s.ctx, pr) - // Cache the current stream to the context so that the server application - // can find out. Required when the server wants to send some metadata - // back to the client (unary call only). - s.ctx = newContextWithStream(s.ctx, s) // Attach the received metadata to the context. - if len(state.mdata) > 0 { - s.ctx = metadata.NewIncomingContext(s.ctx, state.mdata) + if len(state.data.mdata) > 0 { + s.ctx = metadata.NewIncomingContext(s.ctx, state.data.mdata) } - if state.statsTags != nil { - s.ctx = stats.SetIncomingTags(s.ctx, state.statsTags) + if state.data.statsTags != nil { + s.ctx = stats.SetIncomingTags(s.ctx, state.data.statsTags) } - if state.statsTrace != nil { - s.ctx = stats.SetIncomingTrace(s.ctx, state.statsTrace) + if state.data.statsTrace != nil { + s.ctx = stats.SetIncomingTrace(s.ctx, state.data.statsTrace) } if t.inTapHandle != nil { var err error info := &tap.Info{ - FullMethodName: state.method, + FullMethodName: state.data.method, } s.ctx, err = t.inTapHandle(s.ctx, info) if err != nil { warningf("transport: http2Server.operateHeaders got an error from InTapHandle: %v", err) - t.controlBuf.put(&resetStream{s.id, http2.ErrCodeRefusedStream}) - return + t.controlBuf.put(&cleanupStream{ + streamID: s.id, + rst: true, + rstCode: http2.ErrCodeRefusedStream, + onWrite: func() {}, + }) + s.cancel() + return false } } t.mu.Lock() if t.state != reachable { t.mu.Unlock() - return + s.cancel() + return false } if uint32(len(t.activeStreams)) >= t.maxStreams { t.mu.Unlock() - t.controlBuf.put(&resetStream{streamID, http2.ErrCodeRefusedStream}) - return + t.controlBuf.put(&cleanupStream{ + streamID: streamID, + rst: true, + rstCode: http2.ErrCodeRefusedStream, + onWrite: func() {}, + }) + s.cancel() + return false } if streamID%2 != 1 || streamID <= t.maxStreamID { t.mu.Unlock() // illegal gRPC stream id. errorf("transport: http2Server.HandleStreams received an illegal stream id: %v", streamID) + s.cancel() return true } t.maxStreamID = streamID - s.sendQuotaPool = newQuotaPool(int(t.streamSendQuota)) t.activeStreams[streamID] = s if len(t.activeStreams) == 1 { t.idle = time.Time{} } t.mu.Unlock() + if channelz.IsOn() { + atomic.AddInt64(&t.czData.streamsStarted, 1) + atomic.StoreInt64(&t.czData.lastStreamCreatedTime, time.Now().UnixNano()) + } s.requestRead = func(n int) { t.adjustWindow(s, uint32(n)) } @@ -371,39 +413,53 @@ func (t *http2Server) operateHeaders(frame *http2.MetaHeadersFrame, handle func( } t.stats.HandleRPC(s.ctx, inHeader) } + s.ctxDone = s.ctx.Done() + s.wq = newWriteQuota(defaultWriteQuota, s.ctxDone) s.trReader = &transportReader{ reader: &recvBufferReader{ - ctx: s.ctx, - recv: s.buf, + ctx: s.ctx, + ctxDone: s.ctxDone, + recv: s.buf, + freeBuffer: t.bufferPool.put, }, windowHandler: func(n int) { t.updateWindow(s, uint32(n)) }, } - s.waiters = waiters{ - ctx: s.ctx, - tctx: t.ctx, - } + // Register the stream with loopy. + t.controlBuf.put(®isterStream{ + streamID: s.id, + wq: s.wq, + }) handle(s) - return + return false } // HandleStreams receives incoming streams using the given handler. This is // typically run in a separate goroutine. // traceCtx attaches trace to ctx and returns the new context. func (t *http2Server) HandleStreams(handle func(*Stream), traceCtx func(context.Context, string) context.Context) { + defer close(t.readerDone) for { + t.controlBuf.throttle() frame, err := t.framer.fr.ReadFrame() atomic.StoreUint32(&t.activity, 1) if err != nil { if se, ok := err.(http2.StreamError); ok { + warningf("transport: http2Server.HandleStreams encountered http2.StreamError: %v", se) t.mu.Lock() s := t.activeStreams[se.StreamID] t.mu.Unlock() if s != nil { - t.closeStream(s) + t.closeStream(s, true, se.Code, false) + } else { + t.controlBuf.put(&cleanupStream{ + streamID: se.StreamID, + rst: true, + rstCode: se.Code, + onWrite: func() {}, + }) } - t.controlBuf.put(&resetStream{se.StreamID, se.Code}) continue } if err == io.EOF || err == io.ErrUnexpectedEOF { @@ -457,33 +513,20 @@ func (t *http2Server) getStream(f http2.Frame) (*Stream, bool) { // of stream if the application is requesting data larger in size than // the window. func (t *http2Server) adjustWindow(s *Stream, n uint32) { - s.mu.Lock() - defer s.mu.Unlock() - if s.state == streamDone { - return - } if w := s.fc.maybeAdjust(n); w > 0 { - if cw := t.fc.resetPendingUpdate(); cw > 0 { - t.controlBuf.put(&windowUpdate{0, cw}) - } - t.controlBuf.put(&windowUpdate{s.id, w}) + t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, increment: w}) } + } // updateWindow adjusts the inbound quota for the stream and the transport. // Window updates will deliver to the controller for sending when // the cumulative quota exceeds the corresponding threshold. func (t *http2Server) updateWindow(s *Stream, n uint32) { - s.mu.Lock() - defer s.mu.Unlock() - if s.state == streamDone { - return - } if w := s.fc.onRead(n); w > 0 { - if cw := t.fc.resetPendingUpdate(); cw > 0 { - t.controlBuf.put(&windowUpdate{0, cw}) - } - t.controlBuf.put(&windowUpdate{s.id, w}) + t.controlBuf.put(&outgoingWindowUpdate{streamID: s.id, + increment: w, + }) } } @@ -497,12 +540,15 @@ func (t *http2Server) updateFlowControl(n uint32) { } t.initialWindowSize = int32(n) t.mu.Unlock() - t.controlBuf.put(&windowUpdate{0, t.fc.newLimit(n)}) - t.controlBuf.put(&settings{ + t.controlBuf.put(&outgoingWindowUpdate{ + streamID: 0, + increment: t.fc.newLimit(n), + }) + t.controlBuf.put(&outgoingSettings{ ss: []http2.Setting{ { ID: http2.SettingInitialWindowSize, - Val: uint32(n), + Val: n, }, }, }) @@ -513,7 +559,7 @@ func (t *http2Server) handleData(f *http2.DataFrame) { size := f.Header().Length var sendBDPPing bool if t.bdpEst != nil { - sendBDPPing = t.bdpEst.add(uint32(size)) + sendBDPPing = t.bdpEst.add(size) } // Decouple connection's flow control from application's read. // An update on connection's flow control should not depend on @@ -523,23 +569,22 @@ func (t *http2Server) handleData(f *http2.DataFrame) { // Decoupling the connection flow control will prevent other // active(fast) streams from starving in presence of slow or // inactive streams. - // - // Furthermore, if a bdpPing is being sent out we can piggyback - // connection's window update for the bytes we just received. + if w := t.fc.onData(size); w > 0 { + t.controlBuf.put(&outgoingWindowUpdate{ + streamID: 0, + increment: w, + }) + } if sendBDPPing { - if size != 0 { // Could be an empty frame. - t.controlBuf.put(&windowUpdate{0, uint32(size)}) + // Avoid excessive ping detection (e.g. in an L7 proxy) + // by sending a window update prior to the BDP ping. + if w := t.fc.reset(); w > 0 { + t.controlBuf.put(&outgoingWindowUpdate{ + streamID: 0, + increment: w, + }) } t.controlBuf.put(bdpPing) - } else { - if err := t.fc.onData(uint32(size)); err != nil { - errorf("transport: http2Server %v", err) - t.Close() - return - } - if w := t.fc.onRead(uint32(size)); w > 0 { - t.controlBuf.put(&windowUpdate{0, w}) - } } // Select the right stream to dispatch. s, ok := t.getStream(f) @@ -547,92 +592,73 @@ func (t *http2Server) handleData(f *http2.DataFrame) { return } if size > 0 { - s.mu.Lock() - if s.state == streamDone { - s.mu.Unlock() - return - } - if err := s.fc.onData(uint32(size)); err != nil { - s.mu.Unlock() - t.closeStream(s) - t.controlBuf.put(&resetStream{s.id, http2.ErrCodeFlowControl}) + if err := s.fc.onData(size); err != nil { + t.closeStream(s, true, http2.ErrCodeFlowControl, false) return } if f.Header().Flags.Has(http2.FlagDataPadded) { - if w := s.fc.onRead(uint32(size) - uint32(len(f.Data()))); w > 0 { - t.controlBuf.put(&windowUpdate{s.id, w}) + if w := s.fc.onRead(size - uint32(len(f.Data()))); w > 0 { + t.controlBuf.put(&outgoingWindowUpdate{s.id, w}) } } - s.mu.Unlock() // TODO(bradfitz, zhaoq): A copy is required here because there is no // guarantee f.Data() is consumed before the arrival of next frame. // Can this copy be eliminated? if len(f.Data()) > 0 { - data := make([]byte, len(f.Data())) - copy(data, f.Data()) - s.write(recvMsg{data: data}) + buffer := t.bufferPool.get() + buffer.Reset() + buffer.Write(f.Data()) + s.write(recvMsg{buffer: buffer}) } } if f.Header().Flags.Has(http2.FlagDataEndStream) { // Received the end of stream from the client. - s.mu.Lock() - if s.state != streamDone { - s.state = streamReadDone - } - s.mu.Unlock() + s.compareAndSwapState(streamActive, streamReadDone) s.write(recvMsg{err: io.EOF}) } } func (t *http2Server) handleRSTStream(f *http2.RSTStreamFrame) { - s, ok := t.getStream(f) - if !ok { + // If the stream is not deleted from the transport's active streams map, then do a regular close stream. + if s, ok := t.getStream(f); ok { + t.closeStream(s, false, 0, false) return } - t.closeStream(s) + // If the stream is already deleted from the active streams map, then put a cleanupStream item into controlbuf to delete the stream from loopy writer's established streams map. + t.controlBuf.put(&cleanupStream{ + streamID: f.Header().StreamID, + rst: false, + rstCode: 0, + onWrite: func() {}, + }) } func (t *http2Server) handleSettings(f *http2.SettingsFrame) { if f.IsAck() { return } - var rs []http2.Setting - var ps []http2.Setting + var ss []http2.Setting + var updateFuncs []func() f.ForeachSetting(func(s http2.Setting) error { - if t.isRestrictive(s) { - rs = append(rs, s) - } else { - ps = append(ps, s) + switch s.ID { + case http2.SettingMaxHeaderListSize: + updateFuncs = append(updateFuncs, func() { + t.maxSendHeaderListSize = new(uint32) + *t.maxSendHeaderListSize = s.Val + }) + default: + ss = append(ss, s) } return nil }) - t.applySettings(rs) - t.controlBuf.put(&settingsAck{}) - t.applySettings(ps) -} - -func (t *http2Server) isRestrictive(s http2.Setting) bool { - switch s.ID { - case http2.SettingInitialWindowSize: - // Note: we don't acquire a lock here to read streamSendQuota - // because the same goroutine updates it later. - return s.Val < t.streamSendQuota - } - return false -} - -func (t *http2Server) applySettings(ss []http2.Setting) { - for _, s := range ss { - if s.ID == http2.SettingInitialWindowSize { - t.mu.Lock() - for _, stream := range t.activeStreams { - stream.sendQuotaPool.addAndUpdate(int(s.Val) - int(t.streamSendQuota)) - } - t.streamSendQuota = s.Val - t.mu.Unlock() + t.controlBuf.executeAndPut(func(interface{}) bool { + for _, f := range updateFuncs { + f() } - - } + return true + }, &incomingSettings{ + ss: ss, + }) } const ( @@ -691,33 +717,46 @@ func (t *http2Server) handlePing(f *http2.PingFrame) { } func (t *http2Server) handleWindowUpdate(f *http2.WindowUpdateFrame) { - id := f.Header().StreamID - incr := f.Increment - if id == 0 { - t.sendQuotaPool.add(int(incr)) - return + t.controlBuf.put(&incomingWindowUpdate{ + streamID: f.Header().StreamID, + increment: f.Increment, + }) +} + +func appendHeaderFieldsFromMD(headerFields []hpack.HeaderField, md metadata.MD) []hpack.HeaderField { + for k, vv := range md { + if isReservedHeader(k) { + // Clients don't tolerate reading restricted headers after some non restricted ones were sent. + continue + } + for _, v := range vv { + headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)}) + } } - if s, ok := t.getStream(f); ok { - s.sendQuotaPool.add(int(incr)) + return headerFields +} + +func (t *http2Server) checkForHeaderListSize(it interface{}) bool { + if t.maxSendHeaderListSize == nil { + return true + } + hdrFrame := it.(*headerFrame) + var sz int64 + for _, f := range hdrFrame.hf { + if sz += int64(f.Size()); sz > int64(*t.maxSendHeaderListSize) { + errorf("header list size to send violates the maximum size (%d bytes) set by client", *t.maxSendHeaderListSize) + return false + } } + return true } // WriteHeader sends the header metedata md back to the client. func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error { - select { - case <-s.ctx.Done(): - return ContextErr(s.ctx.Err()) - case <-t.ctx.Done(): - return ErrConnClosing - default: - } - - s.mu.Lock() - if s.headerOk || s.state == streamDone { - s.mu.Unlock() + if s.updateHeaderSent() || s.getState() == streamDone { return ErrIllegalHeaderWrite } - s.headerOk = true + s.hdrMu.Lock() if md.Len() > 0 { if s.header.Len() > 0 { s.header = metadata.Join(s.header, md) @@ -725,8 +764,19 @@ func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error { s.header = md } } - md = s.header - s.mu.Unlock() + if err := t.writeHeaderLocked(s); err != nil { + s.hdrMu.Unlock() + return err + } + s.hdrMu.Unlock() + return nil +} + +func (t *http2Server) setResetPingStrikes() { + atomic.StoreUint32(&t.resetPingStrikes, 1) +} + +func (t *http2Server) writeHeaderLocked(s *Stream) error { // TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields // first and create a slice of that exact size. headerFields := make([]hpack.HeaderField, 0, 2) // at least :status, content-type will be there if none else. @@ -735,20 +785,20 @@ func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error { if s.sendCompress != "" { headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-encoding", Value: s.sendCompress}) } - for k, vv := range md { - if isReservedHeader(k) { - // Clients don't tolerate reading restricted headers after some non restricted ones were sent. - continue - } - for _, v := range vv { - headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)}) - } - } - t.controlBuf.put(&headerFrame{ + headerFields = appendHeaderFieldsFromMD(headerFields, s.header) + success, err := t.controlBuf.executeAndPut(t.checkForHeaderListSize, &headerFrame{ streamID: s.id, hf: headerFields, endStream: false, + onWrite: t.setResetPingStrikes, }) + if !success { + if err != nil { + return err + } + t.closeStream(s, true, http2.ErrCodeInternal, false) + return ErrHeaderListSizeLimitViolation + } if t.stats != nil { // Note: WireLength is not set in outHeader. // TODO(mmukhi): Revisit this later, if needed. @@ -763,163 +813,109 @@ func (t *http2Server) WriteHeader(s *Stream, md metadata.MD) error { // TODO(zhaoq): Now it indicates the end of entire stream. Revisit if early // OK is adopted. func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error { - select { - case <-t.ctx.Done(): - return ErrConnClosing - default: - } - - var headersSent, hasHeader bool - s.mu.Lock() - if s.state == streamDone { - s.mu.Unlock() + if s.getState() == streamDone { return nil } - if s.headerOk { - headersSent = true - } - if s.header.Len() > 0 { - hasHeader = true - } - s.mu.Unlock() - - if !headersSent && hasHeader { - t.WriteHeader(s, nil) - headersSent = true - } - + s.hdrMu.Lock() // TODO(mmukhi): Benchmark if the performance gets better if count the metadata and other header fields // first and create a slice of that exact size. headerFields := make([]hpack.HeaderField, 0, 2) // grpc-status and grpc-message will be there if none else. - if !headersSent { - headerFields = append(headerFields, hpack.HeaderField{Name: ":status", Value: "200"}) - headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: contentType(s.contentSubtype)}) + if !s.updateHeaderSent() { // No headers have been sent. + if len(s.header) > 0 { // Send a separate header frame. + if err := t.writeHeaderLocked(s); err != nil { + s.hdrMu.Unlock() + return err + } + } else { // Send a trailer only response. + headerFields = append(headerFields, hpack.HeaderField{Name: ":status", Value: "200"}) + headerFields = append(headerFields, hpack.HeaderField{Name: "content-type", Value: contentType(s.contentSubtype)}) + } } headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-status", Value: strconv.Itoa(int(st.Code()))}) headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-message", Value: encodeGrpcMessage(st.Message())}) - if p := st.Proto(); p != nil && len(p.Details) > 0 { + if p := statusRawProto(st); p != nil && len(p.Details) > 0 { stBytes, err := proto.Marshal(p) if err != nil { // TODO: return error instead, when callers are able to handle it. - panic(err) + grpclog.Errorf("transport: failed to marshal rpc status: %v, error: %v", p, err) + } else { + headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-status-details-bin", Value: encodeBinHeader(stBytes)}) } - - headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-status-details-bin", Value: encodeBinHeader(stBytes)}) } // Attach the trailer metadata. - for k, vv := range s.trailer { - // Clients don't tolerate reading restricted headers after some non restricted ones were sent. - if isReservedHeader(k) { - continue - } - for _, v := range vv { - headerFields = append(headerFields, hpack.HeaderField{Name: k, Value: encodeMetadataHeader(k, v)}) - } - } - t.controlBuf.put(&headerFrame{ + headerFields = appendHeaderFieldsFromMD(headerFields, s.trailer) + trailingHeader := &headerFrame{ streamID: s.id, hf: headerFields, endStream: true, - }) + onWrite: t.setResetPingStrikes, + } + s.hdrMu.Unlock() + success, err := t.controlBuf.execute(t.checkForHeaderListSize, trailingHeader) + if !success { + if err != nil { + return err + } + t.closeStream(s, true, http2.ErrCodeInternal, false) + return ErrHeaderListSizeLimitViolation + } + // Send a RST_STREAM after the trailers if the client has not already half-closed. + rst := s.getState() == streamActive + t.finishStream(s, rst, http2.ErrCodeNo, trailingHeader, true) if t.stats != nil { t.stats.HandleRPC(s.Context(), &stats.OutTrailer{}) } - t.closeStream(s) return nil } // Write converts the data into HTTP2 data frame and sends it out. Non-nil error // is returns if it fails (e.g., framing error, transport error). func (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) error { - select { - case <-s.ctx.Done(): - return ContextErr(s.ctx.Err()) - case <-t.ctx.Done(): - return ErrConnClosing - default: - } - - var writeHeaderFrame bool - s.mu.Lock() - if !s.headerOk { - writeHeaderFrame = true - } - s.mu.Unlock() - if writeHeaderFrame { - t.WriteHeader(s, nil) + if !s.isHeaderSent() { // Headers haven't been written yet. + if err := t.WriteHeader(s, nil); err != nil { + if _, ok := err.(ConnectionError); ok { + return err + } + // TODO(mmukhi, dfawley): Make sure this is the right code to return. + return status.Errorf(codes.Internal, "transport: %v", err) + } + } else { + // Writing headers checks for this condition. + if s.getState() == streamDone { + // TODO(mmukhi, dfawley): Should the server write also return io.EOF? + s.cancel() + select { + case <-t.done: + return ErrConnClosing + default: + } + return ContextErr(s.ctx.Err()) + } } - // Add data to header frame so that we can equally distribute data across frames. + // Add some data to header frame so that we can equally distribute bytes across frames. emptyLen := http2MaxFrameLen - len(hdr) if emptyLen > len(data) { emptyLen = len(data) } hdr = append(hdr, data[:emptyLen]...) data = data[emptyLen:] - var ( - streamQuota int - streamQuotaVer uint32 - err error - ) - for _, r := range [][]byte{hdr, data} { - for len(r) > 0 { - size := http2MaxFrameLen - if size > len(r) { - size = len(r) - } - if streamQuota == 0 { // Used up all the locally cached stream quota. - // Get all the stream quota there is. - streamQuota, streamQuotaVer, err = s.sendQuotaPool.get(math.MaxInt32, s.waiters) - if err != nil { - return err - } - } - if size > streamQuota { - size = streamQuota - } - // Get size worth quota from transport. - tq, _, err := t.sendQuotaPool.get(size, s.waiters) - if err != nil { - return err - } - if tq < size { - size = tq - } - ltq, _, err := t.localSendQuota.get(size, s.waiters) - if err != nil { - // Add the acquired quota back to transport. - t.sendQuotaPool.add(tq) - return err - } - // even if ltq is smaller than size we don't adjust size since, - // ltq is only a soft limit. - streamQuota -= size - p := r[:size] - success := func() { - ltq := ltq - t.controlBuf.put(&dataFrame{streamID: s.id, endStream: false, d: p, f: func() { - t.localSendQuota.add(ltq) - }}) - r = r[size:] - } - failure := func() { // The stream quota version must have changed. - // Our streamQuota cache is invalidated now, so give it back. - s.sendQuotaPool.lockedAdd(streamQuota + size) - } - if !s.sendQuotaPool.compareAndExecute(streamQuotaVer, success, failure) { - // Couldn't send this chunk out. - t.sendQuotaPool.add(size) - t.localSendQuota.add(ltq) - streamQuota = 0 - } - } + df := &dataFrame{ + streamID: s.id, + h: hdr, + d: data, + onEachWrite: t.setResetPingStrikes, } - if streamQuota > 0 { - // ADd the left over quota back to stream. - s.sendQuotaPool.add(streamQuota) + if err := s.wq.get(int32(len(hdr) + len(data))); err != nil { + select { + case <-t.done: + return ErrConnClosing + default: + } + return ContextErr(s.ctx.Err()) } - return nil + return t.controlBuf.put(df) } // keepalive running in a separate goroutine does the following: @@ -964,7 +960,7 @@ func (t *http2Server) keepalive() { // The connection has been idle for a duration of keepalive.MaxConnectionIdle or more. // Gracefully close the connection. t.drain(http2.ErrCodeNo, []byte{}) - // Reseting the timer so that the clean-up doesn't deadlock. + // Resetting the timer so that the clean-up doesn't deadlock. maxIdle.Reset(infinity) return } @@ -975,10 +971,11 @@ func (t *http2Server) keepalive() { select { case <-maxAge.C: // Close the connection after grace period. + infof("transport: closing server transport due to maximum connection age.") t.Close() - // Reseting the timer so that the clean-up doesn't deadlock. + // Resetting the timer so that the clean-up doesn't deadlock. maxAge.Reset(infinity) - case <-t.ctx.Done(): + case <-t.done: } return case <-keepalive.C: @@ -988,150 +985,24 @@ func (t *http2Server) keepalive() { continue } if pingSent { + infof("transport: closing server transport due to idleness.") t.Close() - // Reseting the timer so that the clean-up doesn't deadlock. + // Resetting the timer so that the clean-up doesn't deadlock. keepalive.Reset(infinity) return } pingSent = true + if channelz.IsOn() { + atomic.AddInt64(&t.czData.kpCount, 1) + } t.controlBuf.put(p) keepalive.Reset(t.kp.Timeout) - case <-t.ctx.Done(): + case <-t.done: return } } } -var goAwayPing = &ping{data: [8]byte{1, 6, 1, 8, 0, 3, 3, 9}} - -// TODO(mmukhi): A lot of this code(and code in other places in the tranpsort layer) -// is duplicated between the client and the server. -// The transport layer needs to be refactored to take care of this. -func (t *http2Server) itemHandler(i item) error { - switch i := i.(type) { - case *dataFrame: - // Reset ping strikes when sending data since this might cause - // the peer to send ping. - atomic.StoreUint32(&t.resetPingStrikes, 1) - if err := t.framer.fr.WriteData(i.streamID, i.endStream, i.d); err != nil { - return err - } - i.f() - return nil - case *headerFrame: - t.hBuf.Reset() - for _, f := range i.hf { - t.hEnc.WriteField(f) - } - first := true - endHeaders := false - for !endHeaders { - size := t.hBuf.Len() - if size > http2MaxFrameLen { - size = http2MaxFrameLen - } else { - endHeaders = true - } - var err error - if first { - first = false - err = t.framer.fr.WriteHeaders(http2.HeadersFrameParam{ - StreamID: i.streamID, - BlockFragment: t.hBuf.Next(size), - EndStream: i.endStream, - EndHeaders: endHeaders, - }) - } else { - err = t.framer.fr.WriteContinuation( - i.streamID, - endHeaders, - t.hBuf.Next(size), - ) - } - if err != nil { - return err - } - } - atomic.StoreUint32(&t.resetPingStrikes, 1) - return nil - case *windowUpdate: - return t.framer.fr.WriteWindowUpdate(i.streamID, i.increment) - case *settings: - return t.framer.fr.WriteSettings(i.ss...) - case *settingsAck: - return t.framer.fr.WriteSettingsAck() - case *resetStream: - return t.framer.fr.WriteRSTStream(i.streamID, i.code) - case *goAway: - t.mu.Lock() - if t.state == closing { - t.mu.Unlock() - // The transport is closing. - return fmt.Errorf("transport: Connection closing") - } - sid := t.maxStreamID - if !i.headsUp { - // Stop accepting more streams now. - t.state = draining - if len(t.activeStreams) == 0 { - i.closeConn = true - } - t.mu.Unlock() - if err := t.framer.fr.WriteGoAway(sid, i.code, i.debugData); err != nil { - return err - } - if i.closeConn { - // Abruptly close the connection following the GoAway (via - // loopywriter). But flush out what's inside the buffer first. - t.controlBuf.put(&flushIO{closeTr: true}) - } - return nil - } - t.mu.Unlock() - // For a graceful close, send out a GoAway with stream ID of MaxUInt32, - // Follow that with a ping and wait for the ack to come back or a timer - // to expire. During this time accept new streams since they might have - // originated before the GoAway reaches the client. - // After getting the ack or timer expiration send out another GoAway this - // time with an ID of the max stream server intends to process. - if err := t.framer.fr.WriteGoAway(math.MaxUint32, http2.ErrCodeNo, []byte{}); err != nil { - return err - } - if err := t.framer.fr.WritePing(false, goAwayPing.data); err != nil { - return err - } - go func() { - timer := time.NewTimer(time.Minute) - defer timer.Stop() - select { - case <-t.drainChan: - case <-timer.C: - case <-t.ctx.Done(): - return - } - t.controlBuf.put(&goAway{code: i.code, debugData: i.debugData}) - }() - return nil - case *flushIO: - if err := t.framer.writer.Flush(); err != nil { - return err - } - if i.closeTr { - return ErrConnClosing - } - return nil - case *ping: - if !i.ack { - t.bdpEst.timesnap(i.data) - } - return t.framer.fr.WritePing(i.ack, i.data) - default: - err := status.Errorf(codes.Internal, "transport: http2Server.controller got unexpected item type %t", i) - errorf("%v", err) - return err - } -} - // Close starts shutting down the http2Server transport. // TODO(zhaoq): Now the destruction is not blocked on any pending streams. This // could cause some resource issue. Revisit this later. @@ -1145,8 +1016,12 @@ func (t *http2Server) Close() error { streams := t.activeStreams t.activeStreams = nil t.mu.Unlock() - t.cancel() + t.controlBuf.finish() + close(t.done) err := t.conn.Close() + if channelz.IsOn() { + channelz.RemoveEntry(t.channelzID) + } // Cancel all active streams. for _, s := range streams { s.cancel() @@ -1158,29 +1033,61 @@ func (t *http2Server) Close() error { return err } -// closeStream clears the footprint of a stream when the stream is not needed -// any more. -func (t *http2Server) closeStream(s *Stream) { - t.mu.Lock() - delete(t.activeStreams, s.id) - if len(t.activeStreams) == 0 { - t.idle = time.Now() - } - if t.state == draining && len(t.activeStreams) == 0 { - defer t.controlBuf.put(&flushIO{closeTr: true}) - } - t.mu.Unlock() +// deleteStream deletes the stream s from transport's active streams. +func (t *http2Server) deleteStream(s *Stream, eosReceived bool) { // In case stream sending and receiving are invoked in separate // goroutines (e.g., bi-directional streaming), cancel needs to be // called to interrupt the potential blocking on other goroutines. s.cancel() - s.mu.Lock() - if s.state == streamDone { - s.mu.Unlock() + + t.mu.Lock() + if _, ok := t.activeStreams[s.id]; ok { + delete(t.activeStreams, s.id) + if len(t.activeStreams) == 0 { + t.idle = time.Now() + } + } + t.mu.Unlock() + + if channelz.IsOn() { + if eosReceived { + atomic.AddInt64(&t.czData.streamsSucceeded, 1) + } else { + atomic.AddInt64(&t.czData.streamsFailed, 1) + } + } +} + +// finishStream closes the stream and puts the trailing headerFrame into controlbuf. +func (t *http2Server) finishStream(s *Stream, rst bool, rstCode http2.ErrCode, hdr *headerFrame, eosReceived bool) { + oldState := s.swapState(streamDone) + if oldState == streamDone { + // If the stream was already done, return. return } - s.state = streamDone - s.mu.Unlock() + + hdr.cleanup = &cleanupStream{ + streamID: s.id, + rst: rst, + rstCode: rstCode, + onWrite: func() { + t.deleteStream(s, eosReceived) + }, + } + t.controlBuf.put(hdr) +} + +// closeStream clears the footprint of a stream when the stream is not needed any more. +func (t *http2Server) closeStream(s *Stream, rst bool, rstCode http2.ErrCode, eosReceived bool) { + s.swapState(streamDone) + t.deleteStream(s, eosReceived) + + t.controlBuf.put(&cleanupStream{ + streamID: s.id, + rst: rst, + rstCode: rstCode, + onWrite: func() {}, + }) } func (t *http2Server) RemoteAddr() net.Addr { @@ -1201,7 +1108,111 @@ func (t *http2Server) drain(code http2.ErrCode, debugData []byte) { t.controlBuf.put(&goAway{code: code, debugData: debugData, headsUp: true}) } -var rgen = rand.New(rand.NewSource(time.Now().UnixNano())) +var goAwayPing = &ping{data: [8]byte{1, 6, 1, 8, 0, 3, 3, 9}} + +// Handles outgoing GoAway and returns true if loopy needs to put itself +// in draining mode. +func (t *http2Server) outgoingGoAwayHandler(g *goAway) (bool, error) { + t.mu.Lock() + if t.state == closing { // TODO(mmukhi): This seems unnecessary. + t.mu.Unlock() + // The transport is closing. + return false, ErrConnClosing + } + sid := t.maxStreamID + if !g.headsUp { + // Stop accepting more streams now. + t.state = draining + if len(t.activeStreams) == 0 { + g.closeConn = true + } + t.mu.Unlock() + if err := t.framer.fr.WriteGoAway(sid, g.code, g.debugData); err != nil { + return false, err + } + if g.closeConn { + // Abruptly close the connection following the GoAway (via + // loopywriter). But flush out what's inside the buffer first. + t.framer.writer.Flush() + return false, fmt.Errorf("transport: Connection closing") + } + return true, nil + } + t.mu.Unlock() + // For a graceful close, send out a GoAway with stream ID of MaxUInt32, + // Follow that with a ping and wait for the ack to come back or a timer + // to expire. During this time accept new streams since they might have + // originated before the GoAway reaches the client. + // After getting the ack or timer expiration send out another GoAway this + // time with an ID of the max stream server intends to process. + if err := t.framer.fr.WriteGoAway(math.MaxUint32, http2.ErrCodeNo, []byte{}); err != nil { + return false, err + } + if err := t.framer.fr.WritePing(false, goAwayPing.data); err != nil { + return false, err + } + go func() { + timer := time.NewTimer(time.Minute) + defer timer.Stop() + select { + case <-t.drainChan: + case <-timer.C: + case <-t.done: + return + } + t.controlBuf.put(&goAway{code: g.code, debugData: g.debugData}) + }() + return false, nil +} + +func (t *http2Server) ChannelzMetric() *channelz.SocketInternalMetric { + s := channelz.SocketInternalMetric{ + StreamsStarted: atomic.LoadInt64(&t.czData.streamsStarted), + StreamsSucceeded: atomic.LoadInt64(&t.czData.streamsSucceeded), + StreamsFailed: atomic.LoadInt64(&t.czData.streamsFailed), + MessagesSent: atomic.LoadInt64(&t.czData.msgSent), + MessagesReceived: atomic.LoadInt64(&t.czData.msgRecv), + KeepAlivesSent: atomic.LoadInt64(&t.czData.kpCount), + LastRemoteStreamCreatedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastStreamCreatedTime)), + LastMessageSentTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgSentTime)), + LastMessageReceivedTimestamp: time.Unix(0, atomic.LoadInt64(&t.czData.lastMsgRecvTime)), + LocalFlowControlWindow: int64(t.fc.getSize()), + SocketOptions: channelz.GetSocketOption(t.conn), + LocalAddr: t.localAddr, + RemoteAddr: t.remoteAddr, + // RemoteName : + } + if au, ok := t.authInfo.(credentials.ChannelzSecurityInfo); ok { + s.Security = au.GetSecurityValue() + } + s.RemoteFlowControlWindow = t.getOutFlowWindow() + return &s +} + +func (t *http2Server) IncrMsgSent() { + atomic.AddInt64(&t.czData.msgSent, 1) + atomic.StoreInt64(&t.czData.lastMsgSentTime, time.Now().UnixNano()) +} + +func (t *http2Server) IncrMsgRecv() { + atomic.AddInt64(&t.czData.msgRecv, 1) + atomic.StoreInt64(&t.czData.lastMsgRecvTime, time.Now().UnixNano()) +} + +func (t *http2Server) getOutFlowWindow() int64 { + resp := make(chan uint32, 1) + timer := time.NewTimer(time.Second) + defer timer.Stop() + t.controlBuf.put(&outFlowControlSizeRequest{resp}) + select { + case sz := <-resp: + return int64(sz) + case <-t.done: + return -1 + case <-timer.C: + return -2 + } +} func getJitter(v time.Duration) time.Duration { if v == infinity { @@ -1209,6 +1220,6 @@ func getJitter(v time.Duration) time.Duration { } // Generate a jitter between +/- 10% of the value. r := int64(v / 10) - j := rgen.Int63n(2*r) - r + j := grpcrand.Int63n(2*r) - r return time.Duration(j) } diff --git a/vendor/google.golang.org/grpc/transport/http_util.go b/vendor/google.golang.org/grpc/internal/transport/http_util.go similarity index 60% rename from vendor/google.golang.org/grpc/transport/http_util.go rename to vendor/google.golang.org/grpc/internal/transport/http_util.go index de37e38ec9..8f5f3349d9 100644 --- a/vendor/google.golang.org/grpc/transport/http_util.go +++ b/vendor/google.golang.org/grpc/internal/transport/http_util.go @@ -24,11 +24,13 @@ import ( "encoding/base64" "fmt" "io" + "math" "net" "net/http" "strconv" "strings" "time" + "unicode/utf8" "github.com/golang/protobuf/proto" "golang.org/x/net/http2" @@ -43,9 +45,6 @@ const ( http2MaxFrameLen = 16384 // 16KB frame // http://http2.github.io/http2-spec/#SettingValues http2InitHeaderTableSize = 4096 - // http2IOBufSize specifies the buffer size for sending frames. - defaultWriteBufSize = 32 * 1024 - defaultReadBufSize = 32 * 1024 // baseContentType is the base content-type for gRPC. This is a valid // content-type on it's own, but can also include a content-subtype such as // "proto" as a suffix after "+" or ";". See @@ -79,7 +78,8 @@ var ( codes.ResourceExhausted: http2.ErrCodeEnhanceYourCalm, codes.PermissionDenied: http2.ErrCodeInadequateSecurity, } - httpStatusConvTab = map[int]codes.Code{ + // HTTPStatusConvTab is the HTTP status code to gRPC error code conversion table. + HTTPStatusConvTab = map[int]codes.Code{ // 400 Bad Request - INTERNAL. http.StatusBadRequest: codes.Internal, // 401 Unauthorized - UNAUTHENTICATED. @@ -99,9 +99,7 @@ var ( } ) -// Records the states during HPACK decoding. Must be reset once the -// decoding of the entire headers are finished. -type decodeState struct { +type parsedHeaderData struct { encoding string // statusGen caches the stream status received from the trailer the server // sent. Client side only. Do not access directly. After all trailers are @@ -121,6 +119,30 @@ type decodeState struct { statsTags []byte statsTrace []byte contentSubtype string + + // isGRPC field indicates whether the peer is speaking gRPC (otherwise HTTP). + // + // We are in gRPC mode (peer speaking gRPC) if: + // * We are client side and have already received a HEADER frame that indicates gRPC peer. + // * The header contains valid a content-type, i.e. a string starts with "application/grpc" + // And we should handle error specific to gRPC. + // + // Otherwise (i.e. a content-type string starts without "application/grpc", or does not exist), we + // are in HTTP fallback mode, and should handle error specific to HTTP. + isGRPC bool + grpcErr error + httpErr error + contentTypeErr string +} + +// decodeState configures decoding criteria and records the decoded data. +type decodeState struct { + // whether decoding on server side or not + serverSide bool + + // Records the states during HPACK decoding. It will be filled with info parsed from HTTP HEADERS + // frame once decodeHeader function has been invoked and returned. + data parsedHeaderData } // isReservedHeader checks whether hdr belongs to HTTP2 headers @@ -132,12 +154,16 @@ func isReservedHeader(hdr string) bool { } switch hdr { case "content-type", + "user-agent", "grpc-message-type", "grpc-encoding", "grpc-message", "grpc-status", "grpc-timeout", "grpc-status-details-bin", + // Intentionally exclude grpc-previous-rpc-attempts and + // grpc-retry-pushback-ms, which are "reserved", but their API + // intentionally works via metadata. "te": return true default: @@ -145,11 +171,11 @@ func isReservedHeader(hdr string) bool { } } -// isWhitelistedPseudoHeader checks whether hdr belongs to HTTP2 pseudoheaders -// that should be propagated into metadata visible to users. -func isWhitelistedPseudoHeader(hdr string) bool { +// isWhitelistedHeader checks whether hdr should be propagated into metadata +// visible to users, even though it is classified as "reserved", above. +func isWhitelistedHeader(hdr string) bool { switch hdr { - case ":authority": + case ":authority", "user-agent": return true default: return false @@ -197,11 +223,11 @@ func contentType(contentSubtype string) string { } func (d *decodeState) status() *status.Status { - if d.statusGen == nil { + if d.data.statusGen == nil { // No status-details were provided; generate status using code/msg. - d.statusGen = status.New(codes.Code(int32(*(d.rawStatusCode))), d.rawStatusMsg) + d.data.statusGen = status.New(codes.Code(int32(*(d.data.rawStatusCode))), d.data.rawStatusMsg) } - return d.statusGen + return d.data.statusGen } const binHdrSuffix = "-bin" @@ -233,124 +259,164 @@ func decodeMetadataHeader(k, v string) (string, error) { return v, nil } -func (d *decodeState) decodeResponseHeader(frame *http2.MetaHeadersFrame) error { +func (d *decodeState) decodeHeader(frame *http2.MetaHeadersFrame) error { + // frame.Truncated is set to true when framer detects that the current header + // list size hits MaxHeaderListSize limit. + if frame.Truncated { + return status.Error(codes.Internal, "peer header list size exceeded limit") + } + for _, hf := range frame.Fields { - if err := d.processHeaderField(hf); err != nil { - return err - } + d.processHeaderField(hf) } - // If grpc status exists, no need to check further. - if d.rawStatusCode != nil || d.statusGen != nil { + if d.data.isGRPC { + if d.data.grpcErr != nil { + return d.data.grpcErr + } + if d.serverSide { + return nil + } + if d.data.rawStatusCode == nil && d.data.statusGen == nil { + // gRPC status doesn't exist. + // Set rawStatusCode to be unknown and return nil error. + // So that, if the stream has ended this Unknown status + // will be propagated to the user. + // Otherwise, it will be ignored. In which case, status from + // a later trailer, that has StreamEnded flag set, is propagated. + code := int(codes.Unknown) + d.data.rawStatusCode = &code + } return nil } - // If grpc status doesn't exist and http status doesn't exist, - // then it's a malformed header. - if d.httpStatus == nil { - return streamErrorf(codes.Internal, "malformed header: doesn't contain status(gRPC or HTTP)") + // HTTP fallback mode + if d.data.httpErr != nil { + return d.data.httpErr } - if *(d.httpStatus) != http.StatusOK { - code, ok := httpStatusConvTab[*(d.httpStatus)] + var ( + code = codes.Internal // when header does not include HTTP status, return INTERNAL + ok bool + ) + + if d.data.httpStatus != nil { + code, ok = HTTPStatusConvTab[*(d.data.httpStatus)] if !ok { code = codes.Unknown } - return streamErrorf(code, http.StatusText(*(d.httpStatus))) } - // gRPC status doesn't exist and http status is OK. - // Set rawStatusCode to be unknown and return nil error. - // So that, if the stream has ended this Unknown status - // will be propogated to the user. - // Otherwise, it will be ignored. In which case, status from - // a later trailer, that has StreamEnded flag set, is propogated. - code := int(codes.Unknown) - d.rawStatusCode = &code - return nil + return status.Error(code, d.constructHTTPErrMsg()) +} + +// constructErrMsg constructs error message to be returned in HTTP fallback mode. +// Format: HTTP status code and its corresponding message + content-type error message. +func (d *decodeState) constructHTTPErrMsg() string { + var errMsgs []string + + if d.data.httpStatus == nil { + errMsgs = append(errMsgs, "malformed header: missing HTTP status") + } else { + errMsgs = append(errMsgs, fmt.Sprintf("%s: HTTP status code %d", http.StatusText(*(d.data.httpStatus)), *d.data.httpStatus)) + } + if d.data.contentTypeErr == "" { + errMsgs = append(errMsgs, "transport: missing content-type field") + } else { + errMsgs = append(errMsgs, d.data.contentTypeErr) + } + + return strings.Join(errMsgs, "; ") } func (d *decodeState) addMetadata(k, v string) { - if d.mdata == nil { - d.mdata = make(map[string][]string) + if d.data.mdata == nil { + d.data.mdata = make(map[string][]string) } - d.mdata[k] = append(d.mdata[k], v) + d.data.mdata[k] = append(d.data.mdata[k], v) } -func (d *decodeState) processHeaderField(f hpack.HeaderField) error { +func (d *decodeState) processHeaderField(f hpack.HeaderField) { switch f.Name { case "content-type": contentSubtype, validContentType := contentSubtype(f.Value) if !validContentType { - return streamErrorf(codes.Internal, "transport: received the unexpected content-type %q", f.Value) + d.data.contentTypeErr = fmt.Sprintf("transport: received the unexpected content-type %q", f.Value) + return } - d.contentSubtype = contentSubtype + d.data.contentSubtype = contentSubtype // TODO: do we want to propagate the whole content-type in the metadata, // or come up with a way to just propagate the content-subtype if it was set? // ie {"content-type": "application/grpc+proto"} or {"content-subtype": "proto"} // in the metadata? d.addMetadata(f.Name, f.Value) + d.data.isGRPC = true case "grpc-encoding": - d.encoding = f.Value + d.data.encoding = f.Value case "grpc-status": code, err := strconv.Atoi(f.Value) if err != nil { - return streamErrorf(codes.Internal, "transport: malformed grpc-status: %v", err) + d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed grpc-status: %v", err) + return } - d.rawStatusCode = &code + d.data.rawStatusCode = &code case "grpc-message": - d.rawStatusMsg = decodeGrpcMessage(f.Value) + d.data.rawStatusMsg = decodeGrpcMessage(f.Value) case "grpc-status-details-bin": v, err := decodeBinHeader(f.Value) if err != nil { - return streamErrorf(codes.Internal, "transport: malformed grpc-status-details-bin: %v", err) + d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed grpc-status-details-bin: %v", err) + return } s := &spb.Status{} if err := proto.Unmarshal(v, s); err != nil { - return streamErrorf(codes.Internal, "transport: malformed grpc-status-details-bin: %v", err) + d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed grpc-status-details-bin: %v", err) + return } - d.statusGen = status.FromProto(s) + d.data.statusGen = status.FromProto(s) case "grpc-timeout": - d.timeoutSet = true + d.data.timeoutSet = true var err error - if d.timeout, err = decodeTimeout(f.Value); err != nil { - return streamErrorf(codes.Internal, "transport: malformed time-out: %v", err) + if d.data.timeout, err = decodeTimeout(f.Value); err != nil { + d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed time-out: %v", err) } case ":path": - d.method = f.Value + d.data.method = f.Value case ":status": code, err := strconv.Atoi(f.Value) if err != nil { - return streamErrorf(codes.Internal, "transport: malformed http-status: %v", err) + d.data.httpErr = status.Errorf(codes.Internal, "transport: malformed http-status: %v", err) + return } - d.httpStatus = &code + d.data.httpStatus = &code case "grpc-tags-bin": v, err := decodeBinHeader(f.Value) if err != nil { - return streamErrorf(codes.Internal, "transport: malformed grpc-tags-bin: %v", err) + d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed grpc-tags-bin: %v", err) + return } - d.statsTags = v + d.data.statsTags = v d.addMetadata(f.Name, string(v)) case "grpc-trace-bin": v, err := decodeBinHeader(f.Value) if err != nil { - return streamErrorf(codes.Internal, "transport: malformed grpc-trace-bin: %v", err) + d.data.grpcErr = status.Errorf(codes.Internal, "transport: malformed grpc-trace-bin: %v", err) + return } - d.statsTrace = v + d.data.statsTrace = v d.addMetadata(f.Name, string(v)) default: - if isReservedHeader(f.Name) && !isWhitelistedPseudoHeader(f.Name) { + if isReservedHeader(f.Name) && !isWhitelistedHeader(f.Name) { break } v, err := decodeMetadataHeader(f.Name, f.Value) if err != nil { errorf("Failed to decode metadata header (%q, %q): %v", f.Name, f.Value, err) - return nil + return } - d.addMetadata(f.Name, string(v)) + d.addMetadata(f.Name, v) } - return nil } type timeoutUnit uint8 @@ -423,6 +489,10 @@ func decodeTimeout(s string) (time.Duration, error) { if size < 2 { return 0, fmt.Errorf("transport: timeout string is too short: %q", s) } + if size > 9 { + // Spec allows for 8 digits plus the unit. + return 0, fmt.Errorf("transport: timeout string is too long: %q", s) + } unit := timeoutUnit(s[size-1]) d, ok := timeoutUnitToDuration(unit) if !ok { @@ -432,21 +502,27 @@ func decodeTimeout(s string) (time.Duration, error) { if err != nil { return 0, err } + const maxHours = math.MaxInt64 / int64(time.Hour) + if d == time.Hour && t > maxHours { + // This timeout would overflow math.MaxInt64; clamp it. + return time.Duration(math.MaxInt64), nil + } return d * time.Duration(t), nil } const ( spaceByte = ' ' - tildaByte = '~' + tildeByte = '~' percentByte = '%' ) // encodeGrpcMessage is used to encode status code in header field -// "grpc-message". -// It checks to see if each individual byte in msg is an -// allowable byte, and then either percent encoding or passing it through. -// When percent encoding, the byte is converted into hexadecimal notation -// with a '%' prepended. +// "grpc-message". It does percent encoding and also replaces invalid utf-8 +// characters with Unicode replacement character. +// +// It checks to see if each individual byte in msg is an allowable byte, and +// then either percent encoding or passing it through. When percent encoding, +// the byte is converted into hexadecimal notation with a '%' prepended. func encodeGrpcMessage(msg string) string { if msg == "" { return "" @@ -454,7 +530,7 @@ func encodeGrpcMessage(msg string) string { lenMsg := len(msg) for i := 0; i < lenMsg; i++ { c := msg[i] - if !(c >= spaceByte && c < tildaByte && c != percentByte) { + if !(c >= spaceByte && c <= tildeByte && c != percentByte) { return encodeGrpcMessageUnchecked(msg) } } @@ -463,14 +539,26 @@ func encodeGrpcMessage(msg string) string { func encodeGrpcMessageUnchecked(msg string) string { var buf bytes.Buffer - lenMsg := len(msg) - for i := 0; i < lenMsg; i++ { - c := msg[i] - if c >= spaceByte && c < tildaByte && c != percentByte { - buf.WriteByte(c) - } else { - buf.WriteString(fmt.Sprintf("%%%02X", c)) + for len(msg) > 0 { + r, size := utf8.DecodeRuneInString(msg) + for _, b := range []byte(string(r)) { + if size > 1 { + // If size > 1, r is not ascii. Always do percent encoding. + buf.WriteString(fmt.Sprintf("%%%02X", b)) + continue + } + + // The for loop is necessary even if size == 1. r could be + // utf8.RuneError. + // + // fmt.Sprintf("%%%02X", utf8.RuneError) gives "%FFFD". + if b >= spaceByte && b <= tildeByte && b != percentByte { + buf.WriteByte(b) + } else { + buf.WriteString(fmt.Sprintf("%%%02X", b)) + } } + msg = msg[size:] } return buf.String() } @@ -509,22 +597,81 @@ func decodeGrpcMessageUnchecked(msg string) string { return buf.String() } +type bufWriter struct { + buf []byte + offset int + batchSize int + conn net.Conn + err error + + onFlush func() +} + +func newBufWriter(conn net.Conn, batchSize int) *bufWriter { + return &bufWriter{ + buf: make([]byte, batchSize*2), + batchSize: batchSize, + conn: conn, + } +} + +func (w *bufWriter) Write(b []byte) (n int, err error) { + if w.err != nil { + return 0, w.err + } + if w.batchSize == 0 { // Buffer has been disabled. + return w.conn.Write(b) + } + for len(b) > 0 { + nn := copy(w.buf[w.offset:], b) + b = b[nn:] + w.offset += nn + n += nn + if w.offset >= w.batchSize { + err = w.Flush() + } + } + return n, err +} + +func (w *bufWriter) Flush() error { + if w.err != nil { + return w.err + } + if w.offset == 0 { + return nil + } + if w.onFlush != nil { + w.onFlush() + } + _, w.err = w.conn.Write(w.buf[:w.offset]) + w.offset = 0 + return w.err +} + type framer struct { - numWriters int32 - reader io.Reader - writer *bufio.Writer - fr *http2.Framer + writer *bufWriter + fr *http2.Framer } -func newFramer(conn net.Conn, writeBufferSize, readBufferSize int) *framer { +func newFramer(conn net.Conn, writeBufferSize, readBufferSize int, maxHeaderListSize uint32) *framer { + if writeBufferSize < 0 { + writeBufferSize = 0 + } + var r io.Reader = conn + if readBufferSize > 0 { + r = bufio.NewReaderSize(r, readBufferSize) + } + w := newBufWriter(conn, writeBufferSize) f := &framer{ - reader: bufio.NewReaderSize(conn, readBufferSize), - writer: bufio.NewWriterSize(conn, writeBufferSize), + writer: w, + fr: http2.NewFramer(w, r), } - f.fr = http2.NewFramer(f.writer, f.reader) + f.fr.SetMaxReadFrameSize(http2MaxFrameLen) // Opt-in to Frame reuse API on framer to reduce garbage. // Frames aren't safe to read from after a subsequent call to ReadFrame. f.fr.SetReuseFrames() + f.fr.MaxHeaderListSize = maxHeaderListSize f.fr.ReadMetaHeaders = hpack.NewDecoder(http2InitHeaderTableSize, nil) return f } diff --git a/vendor/google.golang.org/grpc/transport/log.go b/vendor/google.golang.org/grpc/internal/transport/log.go similarity index 90% rename from vendor/google.golang.org/grpc/transport/log.go rename to vendor/google.golang.org/grpc/internal/transport/log.go index ac8e358c5c..879df80c4d 100644 --- a/vendor/google.golang.org/grpc/transport/log.go +++ b/vendor/google.golang.org/grpc/internal/transport/log.go @@ -42,9 +42,3 @@ func errorf(format string, args ...interface{}) { grpclog.Errorf(format, args...) } } - -func fatalf(format string, args ...interface{}) { - if grpclog.V(logLevel) { - grpclog.Fatalf(format, args...) - } -} diff --git a/vendor/google.golang.org/grpc/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go similarity index 61% rename from vendor/google.golang.org/grpc/transport/transport.go rename to vendor/google.golang.org/grpc/internal/transport/transport.go index e68f89ec45..1c1d106709 100644 --- a/vendor/google.golang.org/grpc/transport/transport.go +++ b/vendor/google.golang.org/grpc/internal/transport/transport.go @@ -19,16 +19,18 @@ // Package transport defines and implements message oriented communication // channel to complete various transactions (e.g., an RPC). It is meant for // grpc-internal usage and is not intended to be imported directly by users. -package transport // import "google.golang.org/grpc/transport" +package transport import ( + "bytes" + "context" + "errors" "fmt" "io" "net" "sync" + "sync/atomic" - "golang.org/x/net/context" - "golang.org/x/net/http2" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" "google.golang.org/grpc/keepalive" @@ -38,10 +40,32 @@ import ( "google.golang.org/grpc/tap" ) +type bufferPool struct { + pool sync.Pool +} + +func newBufferPool() *bufferPool { + return &bufferPool{ + pool: sync.Pool{ + New: func() interface{} { + return new(bytes.Buffer) + }, + }, + } +} + +func (p *bufferPool) get() *bytes.Buffer { + return p.pool.Get().(*bytes.Buffer) +} + +func (p *bufferPool) put(b *bytes.Buffer) { + p.pool.Put(b) +} + // recvMsg represents the received msg from the transport. All transport // protocol specific info has been removed. type recvMsg struct { - data []byte + buffer *bytes.Buffer // nil: received some data // io.EOF: stream is completed. data is nil. // other non-nil error: transport failure. data is nil. @@ -57,6 +81,7 @@ type recvBuffer struct { c chan recvMsg mu sync.Mutex backlog []recvMsg + err error } func newRecvBuffer() *recvBuffer { @@ -68,6 +93,13 @@ func newRecvBuffer() *recvBuffer { func (b *recvBuffer) put(r recvMsg) { b.mu.Lock() + if b.err != nil { + b.mu.Unlock() + // An error had occurred earlier, don't accept more + // data or errors. + return + } + b.err = r.err if len(b.backlog) == 0 { select { case b.c <- r: @@ -104,11 +136,13 @@ func (b *recvBuffer) get() <-chan recvMsg { // recvBufferReader implements io.Reader interface to read the data from // recvBuffer. type recvBufferReader struct { - ctx context.Context - goAway chan struct{} - recv *recvBuffer - last []byte // Stores the remaining data in the previous calls. - err error + closeStream func(error) // Closes the client transport stream with the given error and nil trailer metadata. + ctx context.Context + ctxDone <-chan struct{} // cache of ctx.Done() (for performance). + recv *recvBuffer + last *bytes.Buffer // Stores the remaining data in the previous calls. + err error + freeBuffer func(*bytes.Buffer) } // Read reads the next len(p) bytes from last. If last is drained, it tries to @@ -118,88 +152,75 @@ func (r *recvBufferReader) Read(p []byte) (n int, err error) { if r.err != nil { return 0, r.err } - n, r.err = r.read(p) + if r.last != nil { + // Read remaining data left in last call. + copied, _ := r.last.Read(p) + if r.last.Len() == 0 { + r.freeBuffer(r.last) + r.last = nil + } + return copied, nil + } + if r.closeStream != nil { + n, r.err = r.readClient(p) + } else { + n, r.err = r.read(p) + } return n, r.err } func (r *recvBufferReader) read(p []byte) (n int, err error) { - if r.last != nil && len(r.last) > 0 { - // Read remaining data left in last call. - copied := copy(p, r.last) - r.last = r.last[copied:] - return copied, nil - } select { - case <-r.ctx.Done(): + case <-r.ctxDone: return 0, ContextErr(r.ctx.Err()) - case <-r.goAway: - return 0, errStreamDrain case m := <-r.recv.get(): - r.recv.load() - if m.err != nil { - return 0, m.err - } - copied := copy(p, m.data) - r.last = m.data[copied:] - return copied, nil + return r.readAdditional(m, p) } } -// All items in an out of a controlBuffer should be the same type. -type item interface { - item() -} - -// controlBuffer is an unbounded channel of item. -type controlBuffer struct { - c chan item - mu sync.Mutex - backlog []item -} - -func newControlBuffer() *controlBuffer { - b := &controlBuffer{ - c: make(chan item, 1), +func (r *recvBufferReader) readClient(p []byte) (n int, err error) { + // If the context is canceled, then closes the stream with nil metadata. + // closeStream writes its error parameter to r.recv as a recvMsg. + // r.readAdditional acts on that message and returns the necessary error. + select { + case <-r.ctxDone: + // Note that this adds the ctx error to the end of recv buffer, and + // reads from the head. This will delay the error until recv buffer is + // empty, thus will delay ctx cancellation in Recv(). + // + // It's done this way to fix a race between ctx cancel and trailer. The + // race was, stream.Recv() may return ctx error if ctxDone wins the + // race, but stream.Trailer() may return a non-nil md because the stream + // was not marked as done when trailer is received. This closeStream + // call will mark stream as done, thus fix the race. + // + // TODO: delaying ctx error seems like a unnecessary side effect. What + // we really want is to mark the stream as done, and return ctx error + // faster. + r.closeStream(ContextErr(r.ctx.Err())) + m := <-r.recv.get() + return r.readAdditional(m, p) + case m := <-r.recv.get(): + return r.readAdditional(m, p) } - return b } -func (b *controlBuffer) put(r item) { - b.mu.Lock() - if len(b.backlog) == 0 { - select { - case b.c <- r: - b.mu.Unlock() - return - default: - } +func (r *recvBufferReader) readAdditional(m recvMsg, p []byte) (n int, err error) { + r.recv.load() + if m.err != nil { + return 0, m.err } - b.backlog = append(b.backlog, r) - b.mu.Unlock() -} - -func (b *controlBuffer) load() { - b.mu.Lock() - if len(b.backlog) > 0 { - select { - case b.c <- b.backlog[0]: - b.backlog[0] = nil - b.backlog = b.backlog[1:] - default: - } + copied, _ := m.buffer.Read(p) + if m.buffer.Len() == 0 { + r.freeBuffer(m.buffer) + r.last = nil + } else { + r.last = m.buffer } - b.mu.Unlock() -} - -// get returns the channel that receives an item in the buffer. -// -// Upon receipt of an item, the caller should call load to send another -// item onto the channel if there is any. -func (b *controlBuffer) get() <-chan item { - return b.c + return copied, nil } -type streamState uint8 +type streamState uint32 const ( streamActive streamState = iota @@ -214,56 +235,91 @@ type Stream struct { st ServerTransport // nil for client side Stream ctx context.Context // the associated context of the stream cancel context.CancelFunc // always nil for client side Stream - done chan struct{} // closed when the final status arrives - goAway chan struct{} // closed when a GOAWAY control message is received + done chan struct{} // closed at the end of stream to unblock writers. On the client side. + ctxDone <-chan struct{} // same as done chan but for server side. Cache of ctx.Done() (for performance) method string // the associated RPC method of the stream recvCompress string sendCompress string buf *recvBuffer trReader io.Reader fc *inFlow - recvQuota uint32 - waiters waiters + wq *writeQuota // Callback to state application's intentions to read data. This // is used to adjust flow control, if needed. requestRead func(int) - sendQuotaPool *quotaPool - headerChan chan struct{} // closed to indicate the end of header metadata. - headerDone bool // set when headerChan is closed. Used to avoid closing headerChan multiple times. - header metadata.MD // the received header metadata. - trailer metadata.MD // the key-value map of trailer metadata. + headerChan chan struct{} // closed to indicate the end of header metadata. + headerChanClosed uint32 // set when headerChan is closed. Used to avoid closing headerChan multiple times. + + // hdrMu protects header and trailer metadata on the server-side. + hdrMu sync.Mutex + // On client side, header keeps the received header metadata. + // + // On server side, header keeps the header set by SetHeader(). The complete + // header will merged into this after t.WriteHeader() is called. + header metadata.MD + trailer metadata.MD // the key-value map of trailer metadata. + + noHeaders bool // set if the client never received headers (set only after the stream is done). - mu sync.RWMutex // guard the following - headerOk bool // becomes true from the first header is about to send - state streamState + // On the server-side, headerSent is atomically set to 1 when the headers are sent out. + headerSent uint32 - status *status.Status // the status error received from the server + state streamState - rstStream bool // indicates whether a RST_STREAM frame needs to be sent - rstError http2.ErrCode // the error that needs to be sent along with the RST_STREAM frame + // On client-side it is the status error received from the server. + // On server-side it is unused. + status *status.Status - bytesReceived bool // indicates whether any bytes have been received on this stream - unprocessed bool // set if the server sends a refused stream or GOAWAY including this stream + bytesReceived uint32 // indicates whether any bytes have been received on this stream + unprocessed uint32 // set if the server sends a refused stream or GOAWAY including this stream // contentSubtype is the content-subtype for requests. // this must be lowercase or the behavior is undefined. contentSubtype string } +// isHeaderSent is only valid on the server-side. +func (s *Stream) isHeaderSent() bool { + return atomic.LoadUint32(&s.headerSent) == 1 +} + +// updateHeaderSent updates headerSent and returns true +// if it was alreay set. It is valid only on server-side. +func (s *Stream) updateHeaderSent() bool { + return atomic.SwapUint32(&s.headerSent, 1) == 1 +} + +func (s *Stream) swapState(st streamState) streamState { + return streamState(atomic.SwapUint32((*uint32)(&s.state), uint32(st))) +} + +func (s *Stream) compareAndSwapState(oldState, newState streamState) bool { + return atomic.CompareAndSwapUint32((*uint32)(&s.state), uint32(oldState), uint32(newState)) +} + +func (s *Stream) getState() streamState { + return streamState(atomic.LoadUint32((*uint32)(&s.state))) +} + func (s *Stream) waitOnHeader() error { if s.headerChan == nil { // On the server headerChan is always nil since a stream originates // only after having received headers. return nil } - wc := s.waiters select { - case <-wc.ctx.Done(): - return ContextErr(wc.ctx.Err()) - case <-wc.goAway: - return errStreamDrain + case <-s.ctx.Done(): + // We prefer success over failure when reading messages because we delay + // context error in stream.Read(). To keep behavior consistent, we also + // prefer success here. + select { + case <-s.headerChan: + return nil + default: + } + return ContextErr(s.ctx.Err()) case <-s.headerChan: return nil } @@ -283,48 +339,60 @@ func (s *Stream) SetSendCompress(str string) { s.sendCompress = str } -// Done returns a chanel which is closed when it receives the final status +// Done returns a channel which is closed when it receives the final status // from the server. func (s *Stream) Done() <-chan struct{} { return s.done } -// GoAway returns a channel which is closed when the server sent GoAways signal -// before this stream was initiated. -func (s *Stream) GoAway() <-chan struct{} { - return s.goAway -} - -// Header acquires the key-value pairs of header metadata once it -// is available. It blocks until i) the metadata is ready or ii) there is no -// header metadata or iii) the stream is canceled/expired. +// Header returns the header metadata of the stream. +// +// On client side, it acquires the key-value pairs of header metadata once it is +// available. It blocks until i) the metadata is ready or ii) there is no header +// metadata or iii) the stream is canceled/expired. +// +// On server side, it returns the out header after t.WriteHeader is called. func (s *Stream) Header() (metadata.MD, error) { + if s.headerChan == nil && s.header != nil { + // On server side, return the header in stream. It will be the out + // header after t.WriteHeader is called. + return s.header.Copy(), nil + } err := s.waitOnHeader() // Even if the stream is closed, header is returned if available. select { case <-s.headerChan: + if s.header == nil { + return nil, nil + } return s.header.Copy(), nil default: } return nil, err } +// TrailersOnly blocks until a header or trailers-only frame is received and +// then returns true if the stream was trailers-only. If the stream ends +// before headers are received, returns true, nil. If a context error happens +// first, returns it as a status error. Client-side only. +func (s *Stream) TrailersOnly() (bool, error) { + err := s.waitOnHeader() + if err != nil { + return false, err + } + return s.noHeaders, nil +} + // Trailer returns the cached trailer metedata. Note that if it is not called // after the entire stream is done, it could return an empty MD. Client // side only. +// It can be safely read only after stream has ended that is either read +// or write have returned io.EOF. func (s *Stream) Trailer() metadata.MD { - s.mu.RLock() c := s.trailer.Copy() - s.mu.RUnlock() return c } -// ServerTransport returns the underlying ServerTransport for the stream. -// The client side stream always returns nil. -func (s *Stream) ServerTransport() ServerTransport { - return s.st -} - // ContentSubtype returns the content-subtype for a request. For example, a // content-subtype of "proto" will result in a content-type of // "application/grpc+proto". This will always be lowercase. See @@ -345,36 +413,48 @@ func (s *Stream) Method() string { } // Status returns the status received from the server. +// Status can be read safely only after the stream has ended, +// that is, after Done() is closed. func (s *Stream) Status() *status.Status { return s.status } // SetHeader sets the header metadata. This can be called multiple times. // Server side only. +// This should not be called in parallel to other data writes. func (s *Stream) SetHeader(md metadata.MD) error { - s.mu.Lock() - if s.headerOk || s.state == streamDone { - s.mu.Unlock() - return ErrIllegalHeaderWrite - } if md.Len() == 0 { - s.mu.Unlock() return nil } + if s.isHeaderSent() || s.getState() == streamDone { + return ErrIllegalHeaderWrite + } + s.hdrMu.Lock() s.header = metadata.Join(s.header, md) - s.mu.Unlock() + s.hdrMu.Unlock() return nil } +// SendHeader sends the given header metadata. The given metadata is +// combined with any metadata set by previous calls to SetHeader and +// then written to the transport stream. +func (s *Stream) SendHeader(md metadata.MD) error { + return s.st.WriteHeader(s, md) +} + // SetTrailer sets the trailer metadata which will be sent with the RPC status // by the server. This can be called multiple times. Server side only. +// This should not be called parallel to other data writes. func (s *Stream) SetTrailer(md metadata.MD) error { if md.Len() == 0 { return nil } - s.mu.Lock() + if s.getState() == streamDone { + return ErrIllegalHeaderWrite + } + s.hdrMu.Lock() s.trailer = metadata.Join(s.trailer, md) - s.mu.Unlock() + s.hdrMu.Unlock() return nil } @@ -414,29 +494,15 @@ func (t *transportReader) Read(p []byte) (n int, err error) { return } -// finish sets the stream's state and status, and closes the done channel. -// s.mu must be held by the caller. st must always be non-nil. -func (s *Stream) finish(st *status.Status) { - s.status = st - s.state = streamDone - close(s.done) -} - // BytesReceived indicates whether any bytes have been received on this stream. func (s *Stream) BytesReceived() bool { - s.mu.Lock() - br := s.bytesReceived - s.mu.Unlock() - return br + return atomic.LoadUint32(&s.bytesReceived) == 1 } // Unprocessed indicates whether the server did not process this stream -- // i.e. it sent a refused stream or GOAWAY including this stream ID. func (s *Stream) Unprocessed() bool { - s.mu.Lock() - br := s.unprocessed - s.mu.Unlock() - return br + return atomic.LoadUint32(&s.unprocessed) == 1 } // GoString is implemented by Stream so context.String() won't @@ -445,21 +511,6 @@ func (s *Stream) GoString() string { return fmt.Sprintf("", s, s.method) } -// The key to save transport.Stream in the context. -type streamKey struct{} - -// newContextWithStream creates a new context from ctx and attaches stream -// to it. -func newContextWithStream(ctx context.Context, stream *Stream) context.Context { - return context.WithValue(ctx, streamKey{}, stream) -} - -// StreamFromContext returns the stream saved in ctx. -func StreamFromContext(ctx context.Context) (s *Stream, ok bool) { - s, ok = ctx.Value(streamKey{}).(*Stream) - return -} - // state of transport type transportState int @@ -481,6 +532,8 @@ type ServerConfig struct { InitialConnWindowSize int32 WriteBufferSize int ReadBufferSize int + ChannelzParentID int64 + MaxHeaderListSize *uint32 } // NewServerTransport creates a ServerTransport with conn or non-nil error @@ -493,17 +546,18 @@ func NewServerTransport(protocol string, conn net.Conn, config *ServerConfig) (S type ConnectOptions struct { // UserAgent is the application user agent. UserAgent string - // Authority is the :authority pseudo-header to use. This field has no effect if - // TransportCredentials is set. - Authority string // Dialer specifies how to dial a network address. Dialer func(context.Context, string) (net.Conn, error) // FailOnNonTempDialError specifies if gRPC fails on non-temporary dial errors. FailOnNonTempDialError bool // PerRPCCredentials stores the PerRPCCredentials required to issue RPCs. PerRPCCredentials []credentials.PerRPCCredentials - // TransportCredentials stores the Authenticator required to setup a client connection. + // TransportCredentials stores the Authenticator required to setup a client + // connection. Only one of TransportCredentials and CredsBundle is non-nil. TransportCredentials credentials.TransportCredentials + // CredsBundle is the credentials bundle to be used. Only one of + // TransportCredentials and CredsBundle is non-nil. + CredsBundle credentials.Bundle // KeepaliveParams stores the keepalive parameters. KeepaliveParams keepalive.ClientParameters // StatsHandler stores the handler for stats. @@ -516,6 +570,10 @@ type ConnectOptions struct { WriteBufferSize int // ReadBufferSize sets the size of read buffer, which in turn determines how much data can be read at most for one read syscall. ReadBufferSize int + // ChannelzParentID sets the addrConn id which initiate the creation of this client transport. + ChannelzParentID int64 + // MaxHeaderListSize sets the max (uncompressed) size of header list that is prepared to be received. + MaxHeaderListSize *uint32 } // TargetInfo contains the information of the target such as network address and metadata. @@ -527,8 +585,8 @@ type TargetInfo struct { // NewClientTransport establishes the transport with the required ConnectOptions // and returns it to the caller. -func NewClientTransport(connectCtx, ctx context.Context, target TargetInfo, opts ConnectOptions, onSuccess func()) (ClientTransport, error) { - return newHTTP2Client(connectCtx, ctx, target, opts, onSuccess) +func NewClientTransport(connectCtx, ctx context.Context, target TargetInfo, opts ConnectOptions, onPrefaceReceipt func(), onGoAway func(GoAwayReason), onClose func()) (ClientTransport, error) { + return newHTTP2Client(connectCtx, ctx, target, opts, onPrefaceReceipt, onGoAway, onClose) } // Options provides additional hints and information for message @@ -537,11 +595,6 @@ type Options struct { // Last indicates whether this write is the last piece for // this stream. Last bool - - // Delay is a hint to the transport implementation for whether - // the data could be buffered for a batching write. The - // transport implementation may ignore the hint. - Delay bool } // CallHdr carries the information of a particular RPC. @@ -559,14 +612,6 @@ type CallHdr struct { // Creds specifies credentials.PerRPCCredentials for a call. Creds credentials.PerRPCCredentials - // Flush indicates whether a new stream command should be sent - // to the peer without waiting for the first data. This is - // only a hint. - // If it's true, the transport may modify the flush decision - // for performance purposes. - // If it's false, new stream will never be flushed. - Flush bool - // ContentSubtype specifies the content-subtype for a request. For example, a // content-subtype of "proto" will result in a content-type of // "application/grpc+proto". The value of ContentSubtype must be all @@ -574,6 +619,8 @@ type CallHdr struct { // https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests // for more details. ContentSubtype string + + PreviousAttempts int // value of grpc-previous-rpc-attempts header to set } // ClientTransport is the common interface for all gRPC client-side transport @@ -584,9 +631,12 @@ type ClientTransport interface { // is called only once. Close() error - // GracefulClose starts to tear down the transport. It stops accepting - // new RPCs and wait the completion of the pending RPCs. - GracefulClose() error + // GracefulClose starts to tear down the transport: the transport will stop + // accepting new RPCs and NewStream will return error. Once all streams are + // finished, the transport will close. + // + // It does not block. + GracefulClose() // Write sends the data for the given stream. A nil stream indicates // the write is to be performed on the transport as a whole. @@ -615,6 +665,15 @@ type ClientTransport interface { // GetGoAwayReason returns the reason why GoAway frame was received. GetGoAwayReason() GoAwayReason + + // RemoteAddr returns the remote network address. + RemoteAddr() net.Addr + + // IncrMsgSent increments the number of message sent through this transport. + IncrMsgSent() + + // IncrMsgRecv increments the number of message received through this transport. + IncrMsgRecv() } // ServerTransport is the common interface for all gRPC server-side transport @@ -648,14 +707,12 @@ type ServerTransport interface { // Drain notifies the client this ServerTransport stops accepting new RPCs. Drain() -} -// streamErrorf creates an StreamError with the specified error code and description. -func streamErrorf(c codes.Code, format string, a ...interface{}) StreamError { - return StreamError{ - Code: c, - Desc: fmt.Sprintf(format, a...), - } + // IncrMsgSent increments the number of message sent through this transport. + IncrMsgSent() + + // IncrMsgRecv increments the number of message received through this transport. + IncrMsgRecv() } // connectionErrorf creates an ConnectionError with the specified error description. @@ -700,33 +757,15 @@ var ( // errStreamDrain indicates that the stream is rejected because the // connection is draining. This could be caused by goaway or balancer // removing the address. - errStreamDrain = streamErrorf(codes.Unavailable, "the connection is draining") + errStreamDrain = status.Error(codes.Unavailable, "the connection is draining") + // errStreamDone is returned from write at the client side to indiacte application + // layer of an error. + errStreamDone = errors.New("the stream is done") // StatusGoAway indicates that the server sent a GOAWAY that included this // stream's ID in unprocessed RPCs. statusGoAway = status.New(codes.Unavailable, "the stream is rejected because server is draining the connection") ) -// TODO: See if we can replace StreamError with status package errors. - -// StreamError is an error that only affects one stream within a connection. -type StreamError struct { - Code codes.Code - Desc string -} - -func (e StreamError) Error() string { - return fmt.Sprintf("stream error: code = %s desc = %q", e.Code, e.Desc) -} - -// waiters are passed to quotaPool get methods to -// wait on in addition to waiting on quota. -type waiters struct { - ctx context.Context - tctx context.Context - done chan struct{} - goAway chan struct{} -} - // GoAwayReason contains the reason for the GoAway frame received. type GoAwayReason uint8 @@ -741,38 +780,37 @@ const ( GoAwayTooManyPings GoAwayReason = 2 ) -// loopyWriter is run in a separate go routine. It is the single code path that will -// write data on wire. -func loopyWriter(ctx context.Context, cbuf *controlBuffer, handler func(item) error) { - for { - select { - case i := <-cbuf.get(): - cbuf.load() - if err := handler(i); err != nil { - errorf("transport: Error while handling item. Err: %v", err) - return - } - case <-ctx.Done(): - return - } - hasData: - for { - select { - case i := <-cbuf.get(): - cbuf.load() - if err := handler(i); err != nil { - errorf("transport: Error while handling item. Err: %v", err) - return - } - case <-ctx.Done(): - return - default: - if err := handler(&flushIO{}); err != nil { - errorf("transport: Error while flushing. Err: %v", err) - return - } - break hasData - } - } +// channelzData is used to store channelz related data for http2Client and http2Server. +// These fields cannot be embedded in the original structs (e.g. http2Client), since to do atomic +// operation on int64 variable on 32-bit machine, user is responsible to enforce memory alignment. +// Here, by grouping those int64 fields inside a struct, we are enforcing the alignment. +type channelzData struct { + kpCount int64 + // The number of streams that have started, including already finished ones. + streamsStarted int64 + // Client side: The number of streams that have ended successfully by receiving + // EoS bit set frame from server. + // Server side: The number of streams that have ended successfully by sending + // frame with EoS bit set. + streamsSucceeded int64 + streamsFailed int64 + // lastStreamCreatedTime stores the timestamp that the last stream gets created. It is of int64 type + // instead of time.Time since it's more costly to atomically update time.Time variable than int64 + // variable. The same goes for lastMsgSentTime and lastMsgRecvTime. + lastStreamCreatedTime int64 + msgSent int64 + msgRecv int64 + lastMsgSentTime int64 + lastMsgRecvTime int64 +} + +// ContextErr converts the error from context package into a status error. +func ContextErr(err error) error { + switch err { + case context.DeadlineExceeded: + return status.Error(codes.DeadlineExceeded, err.Error()) + case context.Canceled: + return status.Error(codes.Canceled, err.Error()) } + return status.Errorf(codes.Internal, "Unexpected error from context packet: %v", err) } diff --git a/vendor/google.golang.org/grpc/keepalive/keepalive.go b/vendor/google.golang.org/grpc/keepalive/keepalive.go index f8adc7e6d4..34d31b5e7d 100644 --- a/vendor/google.golang.org/grpc/keepalive/keepalive.go +++ b/vendor/google.golang.org/grpc/keepalive/keepalive.go @@ -16,7 +16,8 @@ * */ -// Package keepalive defines configurable parameters for point-to-point healthcheck. +// Package keepalive defines configurable parameters for point-to-point +// healthcheck. package keepalive import ( @@ -24,42 +25,61 @@ import ( ) // ClientParameters is used to set keepalive parameters on the client-side. -// These configure how the client will actively probe to notice when a connection is broken -// and send pings so intermediaries will be aware of the liveness of the connection. -// Make sure these parameters are set in coordination with the keepalive policy on the server, -// as incompatible settings can result in closing of connection. +// These configure how the client will actively probe to notice when a +// connection is broken and send pings so intermediaries will be aware of the +// liveness of the connection. Make sure these parameters are set in +// coordination with the keepalive policy on the server, as incompatible +// settings can result in closing of connection. type ClientParameters struct { - // After a duration of this time if the client doesn't see any activity it pings the server to see if the transport is still alive. + // After a duration of this time if the client doesn't see any activity it + // pings the server to see if the transport is still alive. + // If set below 10s, a minimum value of 10s will be used instead. Time time.Duration // The current default value is infinity. - // After having pinged for keepalive check, the client waits for a duration of Timeout and if no activity is seen even after that - // the connection is closed. + // After having pinged for keepalive check, the client waits for a duration + // of Timeout and if no activity is seen even after that the connection is + // closed. Timeout time.Duration // The current default value is 20 seconds. - // If true, client runs keepalive checks even with no active RPCs. + // If true, client sends keepalive pings even with no active RPCs. If false, + // when there are no active RPCs, Time and Timeout will be ignored and no + // keepalive pings will be sent. PermitWithoutStream bool // false by default. } -// ServerParameters is used to set keepalive and max-age parameters on the server-side. +// ServerParameters is used to set keepalive and max-age parameters on the +// server-side. type ServerParameters struct { - // MaxConnectionIdle is a duration for the amount of time after which an idle connection would be closed by sending a GoAway. - // Idleness duration is defined since the most recent time the number of outstanding RPCs became zero or the connection establishment. + // MaxConnectionIdle is a duration for the amount of time after which an + // idle connection would be closed by sending a GoAway. Idleness duration is + // defined since the most recent time the number of outstanding RPCs became + // zero or the connection establishment. MaxConnectionIdle time.Duration // The current default value is infinity. - // MaxConnectionAge is a duration for the maximum amount of time a connection may exist before it will be closed by sending a GoAway. - // A random jitter of +/-10% will be added to MaxConnectionAge to spread out connection storms. + // MaxConnectionAge is a duration for the maximum amount of time a + // connection may exist before it will be closed by sending a GoAway. A + // random jitter of +/-10% will be added to MaxConnectionAge to spread out + // connection storms. MaxConnectionAge time.Duration // The current default value is infinity. - // MaxConnectinoAgeGrace is an additive period after MaxConnectionAge after which the connection will be forcibly closed. + // MaxConnectionAgeGrace is an additive period after MaxConnectionAge after + // which the connection will be forcibly closed. MaxConnectionAgeGrace time.Duration // The current default value is infinity. - // After a duration of this time if the server doesn't see any activity it pings the client to see if the transport is still alive. + // After a duration of this time if the server doesn't see any activity it + // pings the client to see if the transport is still alive. + // If set below 1s, a minimum value of 1s will be used instead. Time time.Duration // The current default value is 2 hours. - // After having pinged for keepalive check, the server waits for a duration of Timeout and if no activity is seen even after that - // the connection is closed. + // After having pinged for keepalive check, the server waits for a duration + // of Timeout and if no activity is seen even after that the connection is + // closed. Timeout time.Duration // The current default value is 20 seconds. } -// EnforcementPolicy is used to set keepalive enforcement policy on the server-side. -// Server will close connection with a client that violates this policy. +// EnforcementPolicy is used to set keepalive enforcement policy on the +// server-side. Server will close connection with a client that violates this +// policy. type EnforcementPolicy struct { - // MinTime is the minimum amount of time a client should wait before sending a keepalive ping. + // MinTime is the minimum amount of time a client should wait before sending + // a keepalive ping. MinTime time.Duration // The current default value is 5 minutes. - // If true, server expects keepalive pings even when there are no active streams(RPCs). + // If true, server allows keepalive pings even when there are no active + // streams(RPCs). If false, and client sends ping when there are no active + // streams, server will send GOAWAY and close the connection. PermitWithoutStream bool // false by default. } diff --git a/vendor/google.golang.org/grpc/metadata/metadata.go b/vendor/google.golang.org/grpc/metadata/metadata.go index e7c994673c..cf6d1b9478 100644 --- a/vendor/google.golang.org/grpc/metadata/metadata.go +++ b/vendor/google.golang.org/grpc/metadata/metadata.go @@ -22,13 +22,14 @@ package metadata // import "google.golang.org/grpc/metadata" import ( + "context" "fmt" "strings" - - "golang.org/x/net/context" ) -// DecodeKeyValue returns k, v, nil. It is deprecated and should not be used. +// DecodeKeyValue returns k, v, nil. +// +// Deprecated: use k and v directly instead. func DecodeKeyValue(k, v string) (string, string, error) { return k, v, nil } @@ -95,6 +96,30 @@ func (md MD) Copy() MD { return Join(md) } +// Get obtains the values for a given key. +func (md MD) Get(k string) []string { + k = strings.ToLower(k) + return md[k] +} + +// Set sets the value of a given key with a slice of values. +func (md MD) Set(k string, vals ...string) { + if len(vals) == 0 { + return + } + k = strings.ToLower(k) + md[k] = vals +} + +// Append adds the values to key k, not overwriting what was already stored at that key. +func (md MD) Append(k string, vals ...string) { + if len(vals) == 0 { + return + } + k = strings.ToLower(k) + md[k] = append(md[k], vals...) +} + // Join joins any number of mds into a single MD. // The order of values for each key is determined by the order in which // the mds containing those values are presented to Join. diff --git a/vendor/google.golang.org/grpc/naming/dns_resolver.go b/vendor/google.golang.org/grpc/naming/dns_resolver.go index 7e69a2ca0a..c9f79dc533 100644 --- a/vendor/google.golang.org/grpc/naming/dns_resolver.go +++ b/vendor/google.golang.org/grpc/naming/dns_resolver.go @@ -19,13 +19,13 @@ package naming import ( + "context" "errors" "fmt" "net" "strconv" "time" - "golang.org/x/net/context" "google.golang.org/grpc/grpclog" ) @@ -37,6 +37,9 @@ const ( var ( errMissingAddr = errors.New("missing address") errWatcherClose = errors.New("watcher has been closed") + + lookupHost = net.DefaultResolver.LookupHost + lookupSRV = net.DefaultResolver.LookupSRV ) // NewDNSResolverWithFreq creates a DNS Resolver that can resolve DNS names, and @@ -73,8 +76,8 @@ func formatIP(addr string) (addrIP string, ok bool) { // parseTarget takes the user input target string, returns formatted host and port info. // If target doesn't specify a port, set the port to be the defaultPort. -// If target is in IPv6 format and host-name is enclosed in sqarue brackets, brackets -// are strippd when setting the host. +// If target is in IPv6 format and host-name is enclosed in square brackets, brackets +// are stripped when setting the host. // examples: // target: "www.google.com" returns host: "www.google.com", port: "443" // target: "ipv4-host:80" returns host: "ipv4-host", port: "80" @@ -153,10 +156,10 @@ type ipWatcher struct { updateChan chan *Update } -// Next returns the adrress resolution Update for the target. For IP address, -// the resolution is itself, thus polling name server is unncessary. Therefore, +// Next returns the address resolution Update for the target. For IP address, +// the resolution is itself, thus polling name server is unnecessary. Therefore, // Next() will return an Update the first time it is called, and will be blocked -// for all following calls as no Update exisits until watcher is closed. +// for all following calls as no Update exists until watcher is closed. func (i *ipWatcher) Next() ([]*Update, error) { u, ok := <-i.updateChan if !ok { @@ -218,7 +221,7 @@ func (w *dnsWatcher) lookupSRV() map[string]*Update { for _, s := range srvs { lbAddrs, err := lookupHost(w.ctx, s.Target) if err != nil { - grpclog.Warningf("grpc: failed load banlacer address dns lookup due to %v.\n", err) + grpclog.Warningf("grpc: failed load balancer address dns lookup due to %v.\n", err) continue } for _, a := range lbAddrs { diff --git a/vendor/google.golang.org/grpc/naming/naming.go b/vendor/google.golang.org/grpc/naming/naming.go index 1af7e32f86..f4c1c8b689 100644 --- a/vendor/google.golang.org/grpc/naming/naming.go +++ b/vendor/google.golang.org/grpc/naming/naming.go @@ -17,21 +17,26 @@ */ // Package naming defines the naming API and related data structures for gRPC. -// The interface is EXPERIMENTAL and may be suject to change. +// +// This package is deprecated: please use package resolver instead. package naming // Operation defines the corresponding operations for a name resolution change. +// +// Deprecated: please use package resolver. type Operation uint8 const ( // Add indicates a new address is added. Add Operation = iota - // Delete indicates an exisiting address is deleted. + // Delete indicates an existing address is deleted. Delete ) // Update defines a name resolution update. Notice that it is not valid having both // empty string Addr and nil Metadata in an Update. +// +// Deprecated: please use package resolver. type Update struct { // Op indicates the operation of the update. Op Operation @@ -43,12 +48,16 @@ type Update struct { } // Resolver creates a Watcher for a target to track its resolution changes. +// +// Deprecated: please use package resolver. type Resolver interface { // Resolve creates a Watcher for target. Resolve(target string) (Watcher, error) } // Watcher watches for the updates on the specified target. +// +// Deprecated: please use package resolver. type Watcher interface { // Next blocks until an update or error happens. It may return one or more // updates. The first call should get the full set of the results. It should diff --git a/vendor/google.golang.org/grpc/peer/peer.go b/vendor/google.golang.org/grpc/peer/peer.go index 317b8b9d09..e01d219ffb 100644 --- a/vendor/google.golang.org/grpc/peer/peer.go +++ b/vendor/google.golang.org/grpc/peer/peer.go @@ -21,9 +21,9 @@ package peer import ( + "context" "net" - "golang.org/x/net/context" "google.golang.org/grpc/credentials" ) diff --git a/vendor/google.golang.org/grpc/picker_wrapper.go b/vendor/google.golang.org/grpc/picker_wrapper.go index 4d0082593d..45baa2ae13 100644 --- a/vendor/google.golang.org/grpc/picker_wrapper.go +++ b/vendor/google.golang.org/grpc/picker_wrapper.go @@ -19,14 +19,16 @@ package grpc import ( + "context" + "io" "sync" - "golang.org/x/net/context" "google.golang.org/grpc/balancer" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" ) // pickerWrapper is a wrapper of balancer.Picker. It blocks on certain pick @@ -74,6 +76,23 @@ func (bp *pickerWrapper) updatePicker(p balancer.Picker) { bp.mu.Unlock() } +func doneChannelzWrapper(acw *acBalancerWrapper, done func(balancer.DoneInfo)) func(balancer.DoneInfo) { + acw.mu.Lock() + ac := acw.ac + acw.mu.Unlock() + ac.incrCallsStarted() + return func(b balancer.DoneInfo) { + if b.Err != nil && b.Err != io.EOF { + ac.incrCallsFailed() + } else { + ac.incrCallsSucceeded() + } + if done != nil { + done(b) + } + } +} + // pick returns the transport that will be used for the RPC. // It may block in the following cases: // - there's no picker @@ -82,10 +101,7 @@ func (bp *pickerWrapper) updatePicker(p balancer.Picker) { // - the subConn returned by the current picker is not READY // When one of these situations happens, pick blocks until the picker gets updated. func (bp *pickerWrapper) pick(ctx context.Context, failfast bool, opts balancer.PickOptions) (transport.ClientTransport, func(balancer.DoneInfo), error) { - var ( - p balancer.Picker - ch chan struct{} - ) + var ch chan struct{} for { bp.mu.Lock() @@ -104,6 +120,14 @@ func (bp *pickerWrapper) pick(ctx context.Context, failfast bool, opts balancer. bp.mu.Unlock() select { case <-ctx.Done(): + if connectionErr := bp.connectionError(); connectionErr != nil { + switch ctx.Err() { + case context.DeadlineExceeded: + return nil, nil, status.Errorf(codes.DeadlineExceeded, "latest connection error: %v", connectionErr) + case context.Canceled: + return nil, nil, status.Errorf(codes.Canceled, "latest connection error: %v", connectionErr) + } + } return nil, nil, ctx.Err() case <-ch: } @@ -111,7 +135,7 @@ func (bp *pickerWrapper) pick(ctx context.Context, failfast bool, opts balancer. } ch = bp.blockingCh - p = bp.picker + p := bp.picker bp.mu.Unlock() subConn, done, err := p.Pick(ctx, opts) @@ -125,20 +149,35 @@ func (bp *pickerWrapper) pick(ctx context.Context, failfast bool, opts balancer. continue } return nil, nil, status.Errorf(codes.Unavailable, "%v, latest connection error: %v", err, bp.connectionError()) + case context.DeadlineExceeded: + return nil, nil, status.Error(codes.DeadlineExceeded, err.Error()) + case context.Canceled: + return nil, nil, status.Error(codes.Canceled, err.Error()) default: + if _, ok := status.FromError(err); ok { + return nil, nil, err + } // err is some other error. - return nil, nil, toRPCErr(err) + return nil, nil, status.Error(codes.Unknown, err.Error()) } } acw, ok := subConn.(*acBalancerWrapper) if !ok { - grpclog.Infof("subconn returned from pick is not *acBalancerWrapper") + grpclog.Error("subconn returned from pick is not *acBalancerWrapper") continue } if t, ok := acw.getAddrConn().getReadyTransport(); ok { + if channelz.IsOn() { + return t, doneChannelzWrapper(acw, done), nil + } return t, done, nil } + if done != nil { + // Calling done with nil error, no bytes sent and no bytes received. + // DoneInfo with default value works. + done(balancer.DoneInfo{}) + } grpclog.Infof("blockingPicker: the picked transport is not ready, loop back to repick") // If ok == false, ac.state is not READY. // A valid picker always returns READY subConn. This means the state of ac diff --git a/vendor/google.golang.org/grpc/pickfirst.go b/vendor/google.golang.org/grpc/pickfirst.go index bf659d49d2..ed05b02ed9 100644 --- a/vendor/google.golang.org/grpc/pickfirst.go +++ b/vendor/google.golang.org/grpc/pickfirst.go @@ -19,7 +19,8 @@ package grpc import ( - "golang.org/x/net/context" + "context" + "google.golang.org/grpc/balancer" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/grpclog" @@ -50,13 +51,18 @@ type pickfirstBalancer struct { func (b *pickfirstBalancer) HandleResolvedAddrs(addrs []resolver.Address, err error) { if err != nil { - grpclog.Infof("pickfirstBalancer: HandleResolvedAddrs called with error %v", err) + if grpclog.V(2) { + grpclog.Infof("pickfirstBalancer: HandleResolvedAddrs called with error %v", err) + } return } if b.sc == nil { b.sc, err = b.cc.NewSubConn(addrs, balancer.NewSubConnOptions{}) if err != nil { - grpclog.Errorf("pickfirstBalancer: failed to NewSubConn: %v", err) + //TODO(yuxuanli): why not change the cc state to Idle? + if grpclog.V(2) { + grpclog.Errorf("pickfirstBalancer: failed to NewSubConn: %v", err) + } return } b.cc.UpdateBalancerState(connectivity.Idle, &picker{sc: b.sc}) @@ -68,9 +74,13 @@ func (b *pickfirstBalancer) HandleResolvedAddrs(addrs []resolver.Address, err er } func (b *pickfirstBalancer) HandleSubConnStateChange(sc balancer.SubConn, s connectivity.State) { - grpclog.Infof("pickfirstBalancer: HandleSubConnStateChange: %p, %v", sc, s) + if grpclog.V(2) { + grpclog.Infof("pickfirstBalancer: HandleSubConnStateChange: %p, %v", sc, s) + } if b.sc != sc { - grpclog.Infof("pickfirstBalancer: ignored state change because sc is not recognized") + if grpclog.V(2) { + grpclog.Infof("pickfirstBalancer: ignored state change because sc is not recognized") + } return } if s == connectivity.Shutdown { diff --git a/vendor/google.golang.org/grpc/preloader.go b/vendor/google.golang.org/grpc/preloader.go new file mode 100644 index 0000000000..76acbbcc93 --- /dev/null +++ b/vendor/google.golang.org/grpc/preloader.go @@ -0,0 +1,64 @@ +/* + * + * Copyright 2019 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package grpc + +import ( + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +// PreparedMsg is responsible for creating a Marshalled and Compressed object. +// +// This API is EXPERIMENTAL. +type PreparedMsg struct { + // Struct for preparing msg before sending them + encodedData []byte + hdr []byte + payload []byte +} + +// Encode marshalls and compresses the message using the codec and compressor for the stream. +func (p *PreparedMsg) Encode(s Stream, msg interface{}) error { + ctx := s.Context() + rpcInfo, ok := rpcInfoFromContext(ctx) + if !ok { + return status.Errorf(codes.Internal, "grpc: unable to get rpcInfo") + } + + // check if the context has the relevant information to prepareMsg + if rpcInfo.preloaderInfo == nil { + return status.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo is nil") + } + if rpcInfo.preloaderInfo.codec == nil { + return status.Errorf(codes.Internal, "grpc: rpcInfo.preloaderInfo.codec is nil") + } + + // prepare the msg + data, err := encode(rpcInfo.preloaderInfo.codec, msg) + if err != nil { + return err + } + p.encodedData = data + compData, err := compress(data, rpcInfo.preloaderInfo.cp, rpcInfo.preloaderInfo.comp) + if err != nil { + return err + } + p.hdr, p.payload = msgHeader(data, compData) + return nil +} diff --git a/vendor/google.golang.org/grpc/proxy.go b/vendor/google.golang.org/grpc/proxy.go index 2d40236e21..f8f69bfb70 100644 --- a/vendor/google.golang.org/grpc/proxy.go +++ b/vendor/google.golang.org/grpc/proxy.go @@ -20,6 +20,8 @@ package grpc import ( "bufio" + "context" + "encoding/base64" "errors" "fmt" "io" @@ -27,10 +29,10 @@ import ( "net/http" "net/http/httputil" "net/url" - - "golang.org/x/net/context" ) +const proxyAuthHeaderKey = "Proxy-Authorization" + var ( // errDisabled indicates that proxy is disabled for the address. errDisabled = errors.New("proxy is disabled for the address") @@ -38,7 +40,7 @@ var ( httpProxyFromEnvironment = http.ProxyFromEnvironment ) -func mapAddress(ctx context.Context, address string) (string, error) { +func mapAddress(ctx context.Context, address string) (*url.URL, error) { req := &http.Request{ URL: &url.URL{ Scheme: "https", @@ -47,12 +49,12 @@ func mapAddress(ctx context.Context, address string) (string, error) { } url, err := httpProxyFromEnvironment(req) if err != nil { - return "", err + return nil, err } if url == nil { - return "", errDisabled + return nil, errDisabled } - return url.Host, nil + return url, nil } // To read a response from a net.Conn, http.ReadResponse() takes a bufio.Reader. @@ -69,18 +71,28 @@ func (c *bufConn) Read(b []byte) (int, error) { return c.r.Read(b) } -func doHTTPConnectHandshake(ctx context.Context, conn net.Conn, addr string) (_ net.Conn, err error) { +func basicAuth(username, password string) string { + auth := username + ":" + password + return base64.StdEncoding.EncodeToString([]byte(auth)) +} + +func doHTTPConnectHandshake(ctx context.Context, conn net.Conn, backendAddr string, proxyURL *url.URL) (_ net.Conn, err error) { defer func() { if err != nil { conn.Close() } }() - req := (&http.Request{ + req := &http.Request{ Method: http.MethodConnect, - URL: &url.URL{Host: addr}, + URL: &url.URL{Host: backendAddr}, Header: map[string][]string{"User-Agent": {grpcUA}}, - }) + } + if t := proxyURL.User; t != nil { + u := t.Username() + p, _ := t.Password() + req.Header.Add(proxyAuthHeaderKey, "Basic "+basicAuth(u, p)) + } if err := sendHTTPRequest(ctx, req, conn); err != nil { return nil, fmt.Errorf("failed to write the HTTP request: %v", err) @@ -108,23 +120,33 @@ func doHTTPConnectHandshake(ctx context.Context, conn net.Conn, addr string) (_ // provided dialer, does HTTP CONNECT handshake and returns the connection. func newProxyDialer(dialer func(context.Context, string) (net.Conn, error)) func(context.Context, string) (net.Conn, error) { return func(ctx context.Context, addr string) (conn net.Conn, err error) { - var skipHandshake bool - newAddr, err := mapAddress(ctx, addr) + var newAddr string + proxyURL, err := mapAddress(ctx, addr) if err != nil { if err != errDisabled { return nil, err } - skipHandshake = true newAddr = addr + } else { + newAddr = proxyURL.Host } conn, err = dialer(ctx, newAddr) if err != nil { return } - if !skipHandshake { - conn, err = doHTTPConnectHandshake(ctx, conn, addr) + if proxyURL != nil { + // proxy is disabled if proxyURL is nil. + conn, err = doHTTPConnectHandshake(ctx, conn, addr, proxyURL) } return } } + +func sendHTTPRequest(ctx context.Context, req *http.Request, conn net.Conn) error { + req = req.WithContext(ctx) + if err := req.Write(conn); err != nil { + return fmt.Errorf("failed to write the HTTP request: %v", err) + } + return nil +} diff --git a/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go b/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go index a543a709a6..297492e87a 100644 --- a/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go +++ b/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go @@ -1,6 +1,6 @@ /* * - * Copyright 2017 gRPC authors. + * Copyright 2018 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,10 +21,10 @@ package dns import ( + "context" "encoding/json" "errors" "fmt" - "math/rand" "net" "os" "strconv" @@ -32,8 +32,9 @@ import ( "sync" "time" - "golang.org/x/net/context" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal/backoff" + "google.golang.org/grpc/internal/grpcrand" "google.golang.org/grpc/resolver" ) @@ -42,29 +43,68 @@ func init() { } const ( - defaultPort = "443" - defaultFreq = time.Minute * 30 - golang = "GO" + defaultPort = "443" + defaultFreq = time.Minute * 30 + defaultDNSSvrPort = "53" + golang = "GO" + // txtPrefix is the prefix string to be prepended to the host name for txt record lookup. + txtPrefix = "_grpc_config." // In DNS, service config is encoded in a TXT record via the mechanism // described in RFC-1464 using the attribute name grpc_config. txtAttribute = "grpc_config=" ) -var errMissingAddr = errors.New("missing address") +var ( + errMissingAddr = errors.New("dns resolver: missing address") + + // Addresses ending with a colon that is supposed to be the separator + // between host and port is not allowed. E.g. "::" is a valid address as + // it is an IPv6 address (host only) and "[::]:" is invalid as it ends with + // a colon as the host and port separator + errEndsWithColon = errors.New("dns resolver: missing port after port-separator colon") +) + +var ( + defaultResolver netResolver = net.DefaultResolver + // To prevent excessive re-resolution, we enforce a rate limit on DNS + // resolution requests. + minDNSResRate = 30 * time.Second +) + +var customAuthorityDialler = func(authority string) func(ctx context.Context, network, address string) (net.Conn, error) { + return func(ctx context.Context, network, address string) (net.Conn, error) { + var dialer net.Dialer + return dialer.DialContext(ctx, network, authority) + } +} + +var customAuthorityResolver = func(authority string) (netResolver, error) { + host, port, err := parseTarget(authority, defaultDNSSvrPort) + if err != nil { + return nil, err + } + + authorityWithPort := net.JoinHostPort(host, port) + + return &net.Resolver{ + PreferGo: true, + Dial: customAuthorityDialler(authorityWithPort), + }, nil +} // NewBuilder creates a dnsBuilder which is used to factory DNS resolvers. func NewBuilder() resolver.Builder { - return &dnsBuilder{freq: defaultFreq} + return &dnsBuilder{minFreq: defaultFreq} } type dnsBuilder struct { - // frequency of polling the DNS server. - freq time.Duration + // minimum frequency of polling the DNS server. + minFreq time.Duration } // Build creates and starts a DNS resolver that watches the name resolution of the target. func (b *dnsBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts resolver.BuildOption) (resolver.Resolver, error) { - host, port, err := parseTarget(target.Endpoint) + host, port, err := parseTarget(target.Endpoint, defaultPort) if err != nil { return nil, err } @@ -87,14 +127,25 @@ func (b *dnsBuilder) Build(target resolver.Target, cc resolver.ClientConn, opts // DNS address (non-IP). ctx, cancel := context.WithCancel(context.Background()) d := &dnsResolver{ - freq: b.freq, - host: host, - port: port, - ctx: ctx, - cancel: cancel, - cc: cc, - t: time.NewTimer(0), - rn: make(chan struct{}, 1), + freq: b.minFreq, + backoff: backoff.Exponential{MaxDelay: b.minFreq}, + host: host, + port: port, + ctx: ctx, + cancel: cancel, + cc: cc, + t: time.NewTimer(0), + rn: make(chan struct{}, 1), + disableServiceConfig: opts.DisableServiceConfig, + } + + if target.Authority == "" { + d.resolver = defaultResolver + } else { + d.resolver, err = customAuthorityResolver(target.Authority) + if err != nil { + return nil, err + } } d.wg.Add(1) @@ -107,6 +158,12 @@ func (b *dnsBuilder) Scheme() string { return "dns" } +type netResolver interface { + LookupHost(ctx context.Context, host string) (addrs []string, err error) + LookupSRV(ctx context.Context, service, proto, name string) (cname string, addrs []*net.SRV, err error) + LookupTXT(ctx context.Context, name string) (txts []string, err error) +} + // ipResolver watches for the name resolution update for an IP address. type ipResolver struct { cc resolver.ClientConn @@ -142,12 +199,15 @@ func (i *ipResolver) watcher() { // dnsResolver watches for the name resolution update for a non-IP target. type dnsResolver struct { - freq time.Duration - host string - port string - ctx context.Context - cancel context.CancelFunc - cc resolver.ClientConn + freq time.Duration + backoff backoff.Exponential + retryCount int + host string + port string + resolver netResolver + ctx context.Context + cancel context.CancelFunc + cc resolver.ClientConn // rn channel is used by ResolveNow() to force an immediate resolution of the target. rn chan struct{} t *time.Timer @@ -157,7 +217,8 @@ type dnsResolver struct { // If Close() doesn't wait for watcher() goroutine finishes, race detector sometimes // will warns lookup (READ the lookup function pointers) inside watcher() goroutine // has data race with replaceNetFunc (WRITE the lookup function pointers). - wg sync.WaitGroup + wg sync.WaitGroup + disableServiceConfig bool } // ResolveNow invoke an immediate resolution of the target that this dnsResolver watches. @@ -183,26 +244,49 @@ func (d *dnsResolver) watcher() { return case <-d.t.C: case <-d.rn: + if !d.t.Stop() { + // Before resetting a timer, it should be stopped to prevent racing with + // reads on it's channel. + <-d.t.C + } } + result, sc := d.lookup() - // Next lookup should happen after an interval defined by d.freq. - d.t.Reset(d.freq) - d.cc.NewServiceConfig(string(sc)) + // Next lookup should happen within an interval defined by d.freq. It may be + // more often due to exponential retry on empty address list. + if len(result) == 0 { + d.retryCount++ + d.t.Reset(d.backoff.Backoff(d.retryCount)) + } else { + d.retryCount = 0 + d.t.Reset(d.freq) + } + d.cc.NewServiceConfig(sc) d.cc.NewAddress(result) + + // Sleep to prevent excessive re-resolutions. Incoming resolution requests + // will be queued in d.rn. + t := time.NewTimer(minDNSResRate) + select { + case <-t.C: + case <-d.ctx.Done(): + t.Stop() + return + } } } func (d *dnsResolver) lookupSRV() []resolver.Address { var newAddrs []resolver.Address - _, srvs, err := lookupSRV(d.ctx, "grpclb", "tcp", d.host) + _, srvs, err := d.resolver.LookupSRV(d.ctx, "grpclb", "tcp", d.host) if err != nil { grpclog.Infof("grpc: failed dns SRV record lookup due to %v.\n", err) return nil } for _, s := range srvs { - lbAddrs, err := lookupHost(d.ctx, s.Target) + lbAddrs, err := d.resolver.LookupHost(d.ctx, s.Target) if err != nil { - grpclog.Warningf("grpc: failed load banlacer address dns lookup due to %v.\n", err) + grpclog.Infof("grpc: failed load balancer address dns lookup due to %v.\n", err) continue } for _, a := range lbAddrs { @@ -219,9 +303,9 @@ func (d *dnsResolver) lookupSRV() []resolver.Address { } func (d *dnsResolver) lookupTXT() string { - ss, err := lookupTXT(d.ctx, d.host) + ss, err := d.resolver.LookupTXT(d.ctx, txtPrefix+d.host) if err != nil { - grpclog.Warningf("grpc: failed dns TXT record lookup due to %v.\n", err) + grpclog.Infof("grpc: failed dns TXT record lookup due to %v.\n", err) return "" } var res string @@ -239,7 +323,7 @@ func (d *dnsResolver) lookupTXT() string { func (d *dnsResolver) lookupHost() []resolver.Address { var newAddrs []resolver.Address - addrs, err := lookupHost(d.ctx, d.host) + addrs, err := d.resolver.LookupHost(d.ctx, d.host) if err != nil { grpclog.Warningf("grpc: failed dns A record lookup due to %v.\n", err) return nil @@ -257,10 +341,12 @@ func (d *dnsResolver) lookupHost() []resolver.Address { } func (d *dnsResolver) lookup() ([]resolver.Address, string) { - var newAddrs []resolver.Address - newAddrs = d.lookupSRV() + newAddrs := d.lookupSRV() // Support fallback to non-balancer address. newAddrs = append(newAddrs, d.lookupHost()...) + if d.disableServiceConfig { + return newAddrs, "" + } sc := d.lookupTXT() return newAddrs, canaryingSC(sc) } @@ -279,17 +365,16 @@ func formatIP(addr string) (addrIP string, ok bool) { return "[" + addr + "]", true } -// parseTarget takes the user input target string, returns formatted host and port info. +// parseTarget takes the user input target string and default port, returns formatted host and port info. // If target doesn't specify a port, set the port to be the defaultPort. -// If target is in IPv6 format and host-name is enclosed in sqarue brackets, brackets -// are strippd when setting the host. +// If target is in IPv6 format and host-name is enclosed in square brackets, brackets +// are stripped when setting the host. // examples: -// target: "www.google.com" returns host: "www.google.com", port: "443" -// target: "ipv4-host:80" returns host: "ipv4-host", port: "80" -// target: "[ipv6-host]" returns host: "ipv6-host", port: "443" -// target: ":80" returns host: "localhost", port: "80" -// target: ":" returns host: "localhost", port: "443" -func parseTarget(target string) (host, port string, err error) { +// target: "www.google.com" defaultPort: "443" returns host: "www.google.com", port: "443" +// target: "ipv4-host:80" defaultPort: "443" returns host: "ipv4-host", port: "80" +// target: "[ipv6-host]" defaultPort: "443" returns host: "ipv6-host", port: "443" +// target: ":80" defaultPort: "443" returns host: "localhost", port: "80" +func parseTarget(target, defaultPort string) (host, port string, err error) { if target == "" { return "", "", errMissingAddr } @@ -298,15 +383,15 @@ func parseTarget(target string) (host, port string, err error) { return target, defaultPort, nil } if host, port, err = net.SplitHostPort(target); err == nil { + if port == "" { + // If the port field is empty (target ends with colon), e.g. "[::1]:", this is an error. + return "", "", errEndsWithColon + } // target has port, i.e ipv4-host:port, [ipv6-host]:port, host-name:port if host == "" { // Keep consistent with net.Dial(): If the host is empty, as in ":80", the local system is assumed. host = "localhost" } - if port == "" { - // If the port field is empty(target ends with colon), e.g. "[::1]:", defaultPort is used. - port = defaultPort - } return host, port, nil } if host, port, err = net.SplitHostPort(target + ":" + defaultPort); err == nil { @@ -339,12 +424,7 @@ func chosenByPercentage(a *int) bool { if a == nil { return true } - s := rand.NewSource(time.Now().UnixNano()) - r := rand.New(s) - if r.Intn(100)+1 > *a { - return false - } - return true + return grpcrand.Intn(100)+1 <= *a } func canaryingSC(js string) string { diff --git a/vendor/google.golang.org/grpc/resolver/dns/go17.go b/vendor/google.golang.org/grpc/resolver/dns/go17.go deleted file mode 100644 index b466bc8f6d..0000000000 --- a/vendor/google.golang.org/grpc/resolver/dns/go17.go +++ /dev/null @@ -1,35 +0,0 @@ -// +build go1.6, !go1.8 - -/* - * - * Copyright 2017 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package dns - -import ( - "net" - - "golang.org/x/net/context" -) - -var ( - lookupHost = func(ctx context.Context, host string) ([]string, error) { return net.LookupHost(host) } - lookupSRV = func(ctx context.Context, service, proto, name string) (string, []*net.SRV, error) { - return net.LookupSRV(service, proto, name) - } - lookupTXT = func(ctx context.Context, name string) ([]string, error) { return net.LookupTXT(name) } -) diff --git a/vendor/google.golang.org/grpc/resolver/passthrough/passthrough.go b/vendor/google.golang.org/grpc/resolver/passthrough/passthrough.go index b76010d74d..893d5d12cb 100644 --- a/vendor/google.golang.org/grpc/resolver/passthrough/passthrough.go +++ b/vendor/google.golang.org/grpc/resolver/passthrough/passthrough.go @@ -45,7 +45,7 @@ type passthroughResolver struct { } func (r *passthroughResolver) start() { - r.cc.NewAddress([]resolver.Address{{Addr: r.target.Endpoint}}) + r.cc.UpdateState(resolver.State{Addresses: []resolver.Address{{Addr: r.target.Endpoint}}}) } func (*passthroughResolver) ResolveNow(o resolver.ResolveNowOption) {} diff --git a/vendor/google.golang.org/grpc/resolver/resolver.go b/vendor/google.golang.org/grpc/resolver/resolver.go index 9efcffb3aa..e83da346a5 100644 --- a/vendor/google.golang.org/grpc/resolver/resolver.go +++ b/vendor/google.golang.org/grpc/resolver/resolver.go @@ -20,6 +20,10 @@ // All APIs in this package are experimental. package resolver +import ( + "google.golang.org/grpc/serviceconfig" +) + var ( // m is a map from scheme to resolver builder. m = make(map[string]Builder) @@ -29,37 +33,41 @@ var ( // TODO(bar) install dns resolver in init(){}. -// Register registers the resolver builder to the resolver map. -// b.Scheme will be used as the scheme registered with this builder. +// Register registers the resolver builder to the resolver map. b.Scheme will be +// used as the scheme registered with this builder. +// +// NOTE: this function must only be called during initialization time (i.e. in +// an init() function), and is not thread-safe. If multiple Resolvers are +// registered with the same name, the one registered last will take effect. func Register(b Builder) { m[b.Scheme()] = b } // Get returns the resolver builder registered with the given scheme. -// If no builder is register with the scheme, the default scheme will -// be used. -// If the default scheme is not modified, "passthrough" will be the default -// scheme, and the preinstalled dns resolver will be used. -// If the default scheme is modified, and a resolver is registered with -// the scheme, that resolver will be returned. -// If the default scheme is modified, and no resolver is registered with -// the scheme, nil will be returned. +// +// If no builder is register with the scheme, nil will be returned. func Get(scheme string) Builder { if b, ok := m[scheme]; ok { return b } - if b, ok := m[defaultScheme]; ok { - return b - } return nil } -// SetDefaultScheme sets the default scheme that will be used. -// The default default scheme is "passthrough". +// SetDefaultScheme sets the default scheme that will be used. The default +// default scheme is "passthrough". +// +// NOTE: this function must only be called during initialization time (i.e. in +// an init() function), and is not thread-safe. The scheme set last overrides +// previously set values. func SetDefaultScheme(scheme string) { defaultScheme = scheme } +// GetDefaultScheme gets the default scheme that will be used. +func GetDefaultScheme() string { + return defaultScheme +} + // AddressType indicates the address type returned by name resolution. type AddressType uint8 @@ -90,6 +98,18 @@ type Address struct { // BuildOption includes additional information for the builder to create // the resolver. type BuildOption struct { + // DisableServiceConfig indicates whether resolver should fetch service config data. + DisableServiceConfig bool +} + +// State contains the current Resolver state relevant to the ClientConn. +type State struct { + Addresses []Address // Resolved addresses for the target + // ServiceConfig is the parsed service config; obtained from + // serviceconfig.Parse. + ServiceConfig serviceconfig.Config + + // TODO: add Err error } // ClientConn contains the callbacks for resolver to notify any updates @@ -100,17 +120,38 @@ type BuildOption struct { // testing, the new implementation should embed this interface. This allows // gRPC to add new methods to this interface. type ClientConn interface { + // UpdateState updates the state of the ClientConn appropriately. + UpdateState(State) // NewAddress is called by resolver to notify ClientConn a new list // of resolved addresses. // The address list should be the complete list of resolved addresses. + // + // Deprecated: Use UpdateState instead. NewAddress(addresses []Address) // NewServiceConfig is called by resolver to notify ClientConn a new // service config. The service config should be provided as a json string. + // + // Deprecated: Use UpdateState instead. NewServiceConfig(serviceConfig string) } // Target represents a target for gRPC, as specified in: // https://github.com/grpc/grpc/blob/master/doc/naming.md. +// It is parsed from the target string that gets passed into Dial or DialContext by the user. And +// grpc passes it to the resolver and the balancer. +// +// If the target follows the naming spec, and the parsed scheme is registered with grpc, we will +// parse the target string according to the spec. e.g. "dns://some_authority/foo.bar" will be parsed +// into &Target{Scheme: "dns", Authority: "some_authority", Endpoint: "foo.bar"} +// +// If the target does not contain a scheme, we will apply the default scheme, and set the Target to +// be the full target string. e.g. "foo.bar" will be parsed into +// &Target{Scheme: resolver.GetDefaultScheme(), Endpoint: "foo.bar"}. +// +// If the parsed scheme is not registered (i.e. no corresponding resolver available to resolve the +// endpoint), we set the Scheme to be the default scheme, and set the Endpoint to be the full target +// string. e.g. target string "unknown_scheme://authority/endpoint" will be parsed into +// &Target{Scheme: resolver.GetDefaultScheme(), Endpoint: "unknown_scheme://authority/endpoint"}. type Target struct { Scheme string Authority string diff --git a/vendor/google.golang.org/grpc/resolver_conn_wrapper.go b/vendor/google.golang.org/grpc/resolver_conn_wrapper.go index 3e9c7594cc..6934905b0f 100644 --- a/vendor/google.golang.org/grpc/resolver_conn_wrapper.go +++ b/vendor/google.golang.org/grpc/resolver_conn_wrapper.go @@ -21,8 +21,10 @@ package grpc import ( "fmt" "strings" + "sync/atomic" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal/channelz" "google.golang.org/grpc/resolver" ) @@ -33,11 +35,12 @@ type ccResolverWrapper struct { resolver resolver.Resolver addrCh chan []resolver.Address scCh chan string - done chan struct{} + done uint32 // accessed atomically; set to 1 when closed. + curState resolver.State } // split2 returns the values from strings.SplitN(s, sep, 2). -// If sep is not found, it returns ("", s, false) instead. +// If sep is not found, it returns ("", "", false) instead. func split2(s, sep string) (string, string, bool) { spl := strings.SplitN(s, sep, 2) if len(spl) < 2 { @@ -48,6 +51,9 @@ func split2(s, sep string) (string, string, bool) { // parseTarget splits target into a struct containing scheme, authority and // endpoint. +// +// If target is not a valid scheme://authority/endpoint, it returns {Endpoint: +// target}. func parseTarget(target string) (ret resolver.Target) { var ok bool ret.Scheme, ret.Endpoint, ok = split2(target, "://") @@ -62,99 +68,101 @@ func parseTarget(target string) (ret resolver.Target) { } // newCCResolverWrapper parses cc.target for scheme and gets the resolver -// builder for this scheme. It then builds the resolver and starts the -// monitoring goroutine for it. +// builder for this scheme and builds the resolver. The monitoring goroutine +// for it is not started yet and can be created by calling start(). // // If withResolverBuilder dial option is set, the specified resolver will be // used instead. func newCCResolverWrapper(cc *ClientConn) (*ccResolverWrapper, error) { - grpclog.Infof("dialing to target with scheme: %q", cc.parsedTarget.Scheme) - rb := cc.dopts.resolverBuilder if rb == nil { - rb = resolver.Get(cc.parsedTarget.Scheme) - if rb == nil { - return nil, fmt.Errorf("could not get resolver for scheme: %q", cc.parsedTarget.Scheme) - } + return nil, fmt.Errorf("could not get resolver for scheme: %q", cc.parsedTarget.Scheme) } ccr := &ccResolverWrapper{ cc: cc, addrCh: make(chan []resolver.Address, 1), scCh: make(chan string, 1), - done: make(chan struct{}), } var err error - ccr.resolver, err = rb.Build(cc.parsedTarget, ccr, resolver.BuildOption{}) + ccr.resolver, err = rb.Build(cc.parsedTarget, ccr, resolver.BuildOption{DisableServiceConfig: cc.dopts.disableServiceConfig}) if err != nil { return nil, err } return ccr, nil } -func (ccr *ccResolverWrapper) start() { - go ccr.watcher() -} - -// watcher processes address updates and service config updates sequencially. -// Otherwise, we need to resolve possible races between address and service -// config (e.g. they specify different balancer types). -func (ccr *ccResolverWrapper) watcher() { - for { - select { - case <-ccr.done: - return - default: - } - - select { - case addrs := <-ccr.addrCh: - select { - case <-ccr.done: - return - default: - } - grpclog.Infof("ccResolverWrapper: sending new addresses to cc: %v", addrs) - ccr.cc.handleResolvedAddrs(addrs, nil) - case sc := <-ccr.scCh: - select { - case <-ccr.done: - return - default: - } - grpclog.Infof("ccResolverWrapper: got new service config: %v", sc) - ccr.cc.handleServiceConfig(sc) - case <-ccr.done: - return - } - } -} - func (ccr *ccResolverWrapper) resolveNow(o resolver.ResolveNowOption) { ccr.resolver.ResolveNow(o) } func (ccr *ccResolverWrapper) close() { ccr.resolver.Close() - close(ccr.done) + atomic.StoreUint32(&ccr.done, 1) +} + +func (ccr *ccResolverWrapper) isDone() bool { + return atomic.LoadUint32(&ccr.done) == 1 } -// NewAddress is called by the resolver implemenetion to send addresses to gRPC. +func (ccr *ccResolverWrapper) UpdateState(s resolver.State) { + if ccr.isDone() { + return + } + grpclog.Infof("ccResolverWrapper: sending update to cc: %v", s) + if channelz.IsOn() { + ccr.addChannelzTraceEvent(s) + } + ccr.cc.updateResolverState(s) + ccr.curState = s +} + +// NewAddress is called by the resolver implementation to send addresses to gRPC. func (ccr *ccResolverWrapper) NewAddress(addrs []resolver.Address) { - select { - case <-ccr.addrCh: - default: + if ccr.isDone() { + return + } + grpclog.Infof("ccResolverWrapper: sending new addresses to cc: %v", addrs) + if channelz.IsOn() { + ccr.addChannelzTraceEvent(resolver.State{Addresses: addrs, ServiceConfig: ccr.curState.ServiceConfig}) } - ccr.addrCh <- addrs + ccr.curState.Addresses = addrs + ccr.cc.updateResolverState(ccr.curState) } -// NewServiceConfig is called by the resolver implemenetion to send service -// configs to gPRC. +// NewServiceConfig is called by the resolver implementation to send service +// configs to gRPC. func (ccr *ccResolverWrapper) NewServiceConfig(sc string) { - select { - case <-ccr.scCh: - default: + if ccr.isDone() { + return + } + grpclog.Infof("ccResolverWrapper: got new service config: %v", sc) + c, err := parseServiceConfig(sc) + if err != nil { + return + } + if channelz.IsOn() { + ccr.addChannelzTraceEvent(resolver.State{Addresses: ccr.curState.Addresses, ServiceConfig: c}) + } + ccr.curState.ServiceConfig = c + ccr.cc.updateResolverState(ccr.curState) +} + +func (ccr *ccResolverWrapper) addChannelzTraceEvent(s resolver.State) { + var updates []string + oldSC, oldOK := ccr.curState.ServiceConfig.(*ServiceConfig) + newSC, newOK := s.ServiceConfig.(*ServiceConfig) + if oldOK != newOK || (oldOK && newOK && oldSC.rawJSONString != newSC.rawJSONString) { + updates = append(updates, "service config updated") + } + if len(ccr.curState.Addresses) > 0 && len(s.Addresses) == 0 { + updates = append(updates, "resolver returned an empty address list") + } else if len(ccr.curState.Addresses) == 0 && len(s.Addresses) > 0 { + updates = append(updates, "resolver returned new addresses") } - ccr.scCh <- sc + channelz.AddTraceEvent(ccr.cc.channelzID, &channelz.TraceEventDesc{ + Desc: fmt.Sprintf("Resolver state updated: %+v (%v)", s, strings.Join(updates, "; ")), + Severity: channelz.CtINFO, + }) } diff --git a/vendor/google.golang.org/grpc/rpc_util.go b/vendor/google.golang.org/grpc/rpc_util.go index de254a031b..088c3f1b25 100644 --- a/vendor/google.golang.org/grpc/rpc_util.go +++ b/vendor/google.golang.org/grpc/rpc_util.go @@ -21,27 +21,31 @@ package grpc import ( "bytes" "compress/gzip" + "context" "encoding/binary" + "fmt" "io" "io/ioutil" "math" + "net/url" "strings" "sync" "time" - "golang.org/x/net/context" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" "google.golang.org/grpc/encoding" "google.golang.org/grpc/encoding/proto" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" "google.golang.org/grpc/stats" "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" ) // Compressor defines the interface gRPC uses to compress a message. +// +// Deprecated: use package encoding. type Compressor interface { // Do compresses p into w. Do(w io.Writer, p []byte) error @@ -54,14 +58,34 @@ type gzipCompressor struct { } // NewGZIPCompressor creates a Compressor based on GZIP. +// +// Deprecated: use package encoding/gzip. func NewGZIPCompressor() Compressor { + c, _ := NewGZIPCompressorWithLevel(gzip.DefaultCompression) + return c +} + +// NewGZIPCompressorWithLevel is like NewGZIPCompressor but specifies the gzip compression level instead +// of assuming DefaultCompression. +// +// The error returned will be nil if the level is valid. +// +// Deprecated: use package encoding/gzip. +func NewGZIPCompressorWithLevel(level int) (Compressor, error) { + if level < gzip.DefaultCompression || level > gzip.BestCompression { + return nil, fmt.Errorf("grpc: invalid compression level: %d", level) + } return &gzipCompressor{ pool: sync.Pool{ New: func() interface{} { - return gzip.NewWriter(ioutil.Discard) + w, err := gzip.NewWriterLevel(ioutil.Discard, level) + if err != nil { + panic(err) + } + return w }, }, - } + }, nil } func (c *gzipCompressor) Do(w io.Writer, p []byte) error { @@ -79,6 +103,8 @@ func (c *gzipCompressor) Type() string { } // Decompressor defines the interface gRPC uses to decompress a message. +// +// Deprecated: use package encoding. type Decompressor interface { // Do reads the data from r and uncompress them. Do(r io.Reader) ([]byte, error) @@ -91,6 +117,8 @@ type gzipDecompressor struct { } // NewGZIPDecompressor creates a Decompressor based on GZIP. +// +// Deprecated: use package encoding/gzip. func NewGZIPDecompressor() Decompressor { return &gzipDecompressor{} } @@ -127,17 +155,20 @@ func (d *gzipDecompressor) Type() string { type callInfo struct { compressorType string failFast bool - stream *clientStream - traceInfo traceInfo // in trace.go + stream ClientStream maxReceiveMessageSize *int maxSendMessageSize *int creds credentials.PerRPCCredentials contentSubtype string codec baseCodec + maxRetryRPCBufferSize int } func defaultCallInfo() *callInfo { - return &callInfo{failFast: true} + return &callInfo{ + failFast: true, + maxRetryRPCBufferSize: 256 * 1024, // 256KB + } } // CallOption configures a Call before it starts or extracts information from @@ -200,8 +231,8 @@ func (o TrailerCallOption) after(c *callInfo) { } } -// Peer returns a CallOption that retrieves peer information for a -// unary RPC. +// Peer returns a CallOption that retrieves peer information for a unary RPC. +// The peer field will be populated *after* the RPC completes. func Peer(p *peer.Peer) CallOption { return PeerCallOption{PeerAddr: p} } @@ -222,8 +253,8 @@ func (o PeerCallOption) after(c *callInfo) { } } -// FailFast configures the action to take when an RPC is attempted on broken -// connections or unreachable servers. If failFast is true, the RPC will fail +// WaitForReady configures the action to take when an RPC is attempted on broken +// connections or unreachable servers. If waitForReady is false, the RPC will fail // immediately. Otherwise, the RPC client will block the call until a // connection is available (or the call is canceled or times out) and will // retry the call if it fails due to a transient error. gRPC will not retry if @@ -231,7 +262,14 @@ func (o PeerCallOption) after(c *callInfo) { // the data. Please refer to // https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md. // -// By default, RPCs are "Fail Fast". +// By default, RPCs don't "wait for ready". +func WaitForReady(waitForReady bool) CallOption { + return FailFastCallOption{FailFast: !waitForReady} +} + +// FailFast is the opposite of WaitForReady. +// +// Deprecated: use WaitForReady. func FailFast(failFast bool) CallOption { return FailFastCallOption{FailFast: failFast} } @@ -247,7 +285,7 @@ func (o FailFastCallOption) before(c *callInfo) error { c.failFast = o.FailFast return nil } -func (o FailFastCallOption) after(c *callInfo) { return } +func (o FailFastCallOption) after(c *callInfo) {} // MaxCallRecvMsgSize returns a CallOption which sets the maximum message size the client can receive. func MaxCallRecvMsgSize(s int) CallOption { @@ -265,7 +303,7 @@ func (o MaxRecvMsgSizeCallOption) before(c *callInfo) error { c.maxReceiveMessageSize = &o.MaxRecvMsgSize return nil } -func (o MaxRecvMsgSizeCallOption) after(c *callInfo) { return } +func (o MaxRecvMsgSizeCallOption) after(c *callInfo) {} // MaxCallSendMsgSize returns a CallOption which sets the maximum message size the client can send. func MaxCallSendMsgSize(s int) CallOption { @@ -283,7 +321,7 @@ func (o MaxSendMsgSizeCallOption) before(c *callInfo) error { c.maxSendMessageSize = &o.MaxSendMsgSize return nil } -func (o MaxSendMsgSizeCallOption) after(c *callInfo) { return } +func (o MaxSendMsgSizeCallOption) after(c *callInfo) {} // PerRPCCredentials returns a CallOption that sets credentials.PerRPCCredentials // for a call. @@ -302,7 +340,7 @@ func (o PerRPCCredsCallOption) before(c *callInfo) error { c.creds = o.Creds return nil } -func (o PerRPCCredsCallOption) after(c *callInfo) { return } +func (o PerRPCCredsCallOption) after(c *callInfo) {} // UseCompressor returns a CallOption which sets the compressor used when // sending the request. If WithCompressor is also set, UseCompressor has @@ -323,7 +361,7 @@ func (o CompressorCallOption) before(c *callInfo) error { c.compressorType = o.CompressorType return nil } -func (o CompressorCallOption) after(c *callInfo) { return } +func (o CompressorCallOption) after(c *callInfo) {} // CallContentSubtype returns a CallOption that will set the content-subtype // for a call. For example, if content-subtype is "json", the Content-Type over @@ -332,13 +370,13 @@ func (o CompressorCallOption) after(c *callInfo) { return } // https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for // more details. // -// If CallCustomCodec is not also used, the content-subtype will be used to -// look up the Codec to use in the registry controlled by RegisterCodec. See -// the documention on RegisterCodec for details on registration. The lookup -// of content-subtype is case-insensitive. If no such Codec is found, the call +// If ForceCodec is not also used, the content-subtype will be used to look up +// the Codec to use in the registry controlled by RegisterCodec. See the +// documentation on RegisterCodec for details on registration. The lookup of +// content-subtype is case-insensitive. If no such Codec is found, the call // will result in an error with code codes.Internal. // -// If CallCustomCodec is also used, that Codec will be used for all request and +// If ForceCodec is also used, that Codec will be used for all request and // response messages, with the content-subtype set to the given contentSubtype // here for requests. func CallContentSubtype(contentSubtype string) CallOption { @@ -356,9 +394,9 @@ func (o ContentSubtypeCallOption) before(c *callInfo) error { c.contentSubtype = o.ContentSubtype return nil } -func (o ContentSubtypeCallOption) after(c *callInfo) { return } +func (o ContentSubtypeCallOption) after(c *callInfo) {} -// CallCustomCodec returns a CallOption that will set the given Codec to be +// ForceCodec returns a CallOption that will set the given Codec to be // used for all request and response messages for a call. The result of calling // String() will be used as the content-subtype in a case-insensitive manner. // @@ -370,12 +408,37 @@ func (o ContentSubtypeCallOption) after(c *callInfo) { return } // // This function is provided for advanced users; prefer to use only // CallContentSubtype to select a registered codec instead. +// +// This is an EXPERIMENTAL API. +func ForceCodec(codec encoding.Codec) CallOption { + return ForceCodecCallOption{Codec: codec} +} + +// ForceCodecCallOption is a CallOption that indicates the codec used for +// marshaling messages. +// +// This is an EXPERIMENTAL API. +type ForceCodecCallOption struct { + Codec encoding.Codec +} + +func (o ForceCodecCallOption) before(c *callInfo) error { + c.codec = o.Codec + return nil +} +func (o ForceCodecCallOption) after(c *callInfo) {} + +// CallCustomCodec behaves like ForceCodec, but accepts a grpc.Codec instead of +// an encoding.Codec. +// +// Deprecated: use ForceCodec instead. func CallCustomCodec(codec Codec) CallOption { return CustomCodecCallOption{Codec: codec} } // CustomCodecCallOption is a CallOption that indicates the codec used for // marshaling messages. +// // This is an EXPERIMENTAL API. type CustomCodecCallOption struct { Codec Codec @@ -385,14 +448,35 @@ func (o CustomCodecCallOption) before(c *callInfo) error { c.codec = o.Codec return nil } -func (o CustomCodecCallOption) after(c *callInfo) { return } +func (o CustomCodecCallOption) after(c *callInfo) {} + +// MaxRetryRPCBufferSize returns a CallOption that limits the amount of memory +// used for buffering this RPC's requests for retry purposes. +// +// This API is EXPERIMENTAL. +func MaxRetryRPCBufferSize(bytes int) CallOption { + return MaxRetryRPCBufferSizeCallOption{bytes} +} + +// MaxRetryRPCBufferSizeCallOption is a CallOption indicating the amount of +// memory to be used for caching this RPC for retry purposes. +// This is an EXPERIMENTAL API. +type MaxRetryRPCBufferSizeCallOption struct { + MaxRetryRPCBufferSize int +} + +func (o MaxRetryRPCBufferSizeCallOption) before(c *callInfo) error { + c.maxRetryRPCBufferSize = o.MaxRetryRPCBufferSize + return nil +} +func (o MaxRetryRPCBufferSizeCallOption) after(c *callInfo) {} // The format of the payload: compressed or not? type payloadFormat uint8 const ( - compressionNone payloadFormat = iota // no compression - compressionMade + compressionNone payloadFormat = 0 // no compression + compressionMade payloadFormat = 1 // compressed ) // parser reads complete gRPC messages from the underlying reader. @@ -416,7 +500,7 @@ type parser struct { // * io.EOF, when no messages remain // * io.ErrUnexpectedEOF // * of type transport.ConnectionError -// * of type transport.StreamError +// * an error from the status package // No other error values or types must be returned, which also means // that the underlying io.Reader must not return an incompatible // error. @@ -449,65 +533,85 @@ func (p *parser) recvMsg(maxReceiveMessageSize int) (pf payloadFormat, msg []byt return pf, msg, nil } -// encode serializes msg and returns a buffer of message header and a buffer of msg. -// If msg is nil, it generates the message header and an empty msg buffer. -// TODO(ddyihai): eliminate extra Compressor parameter. -func encode(c baseCodec, msg interface{}, cp Compressor, outPayload *stats.OutPayload, compressor encoding.Compressor) ([]byte, []byte, error) { - var ( - b []byte - cbuf *bytes.Buffer - ) - const ( - payloadLen = 1 - sizeLen = 4 - ) - if msg != nil { - var err error - b, err = c.Marshal(msg) +// encode serializes msg and returns a buffer containing the message, or an +// error if it is too large to be transmitted by grpc. If msg is nil, it +// generates an empty message. +func encode(c baseCodec, msg interface{}) ([]byte, error) { + if msg == nil { // NOTE: typed nils will not be caught by this check + return nil, nil + } + b, err := c.Marshal(msg) + if err != nil { + return nil, status.Errorf(codes.Internal, "grpc: error while marshaling: %v", err.Error()) + } + if uint(len(b)) > math.MaxUint32 { + return nil, status.Errorf(codes.ResourceExhausted, "grpc: message too large (%d bytes)", len(b)) + } + return b, nil +} + +// compress returns the input bytes compressed by compressor or cp. If both +// compressors are nil, returns nil. +// +// TODO(dfawley): eliminate cp parameter by wrapping Compressor in an encoding.Compressor. +func compress(in []byte, cp Compressor, compressor encoding.Compressor) ([]byte, error) { + if compressor == nil && cp == nil { + return nil, nil + } + wrapErr := func(err error) error { + return status.Errorf(codes.Internal, "grpc: error while compressing: %v", err.Error()) + } + cbuf := &bytes.Buffer{} + if compressor != nil { + z, err := compressor.Compress(cbuf) if err != nil { - return nil, nil, status.Errorf(codes.Internal, "grpc: error while marshaling: %v", err.Error()) + return nil, wrapErr(err) } - if outPayload != nil { - outPayload.Payload = msg - // TODO truncate large payload. - outPayload.Data = b - outPayload.Length = len(b) + if _, err := z.Write(in); err != nil { + return nil, wrapErr(err) } - if compressor != nil || cp != nil { - cbuf = new(bytes.Buffer) - // Has compressor, check Compressor is set by UseCompressor first. - if compressor != nil { - z, _ := compressor.Compress(cbuf) - if _, err := z.Write(b); err != nil { - return nil, nil, status.Errorf(codes.Internal, "grpc: error while compressing: %v", err.Error()) - } - z.Close() - } else { - // If Compressor is not set by UseCompressor, use default Compressor - if err := cp.Do(cbuf, b); err != nil { - return nil, nil, status.Errorf(codes.Internal, "grpc: error while compressing: %v", err.Error()) - } - } - b = cbuf.Bytes() + if err := z.Close(); err != nil { + return nil, wrapErr(err) + } + } else { + if err := cp.Do(cbuf, in); err != nil { + return nil, wrapErr(err) } } - if uint(len(b)) > math.MaxUint32 { - return nil, nil, status.Errorf(codes.ResourceExhausted, "grpc: message too large (%d bytes)", len(b)) - } + return cbuf.Bytes(), nil +} + +const ( + payloadLen = 1 + sizeLen = 4 + headerLen = payloadLen + sizeLen +) - bufHeader := make([]byte, payloadLen+sizeLen) - if compressor != nil || cp != nil { - bufHeader[0] = byte(compressionMade) +// msgHeader returns a 5-byte header for the message being transmitted and the +// payload, which is compData if non-nil or data otherwise. +func msgHeader(data, compData []byte) (hdr []byte, payload []byte) { + hdr = make([]byte, headerLen) + if compData != nil { + hdr[0] = byte(compressionMade) + data = compData } else { - bufHeader[0] = byte(compressionNone) + hdr[0] = byte(compressionNone) } - // Write length of b into buf - binary.BigEndian.PutUint32(bufHeader[payloadLen:], uint32(len(b))) - if outPayload != nil { - outPayload.WireLength = payloadLen + sizeLen + len(b) + // Write length of payload into buf + binary.BigEndian.PutUint32(hdr[payloadLen:], uint32(len(data))) + return hdr, data +} + +func outPayload(client bool, msg interface{}, data, payload []byte, t time.Time) *stats.OutPayload { + return &stats.OutPayload{ + Client: client, + Payload: msg, + Data: data, + Length: len(data), + WireLength: len(payload) + headerLen, + SentTime: t, } - return bufHeader, b, nil } func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool) *status.Status { @@ -526,20 +630,22 @@ func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool return nil } -// For the two compressor parameters, both should not be set, but if they are, -// dc takes precedence over compressor. -// TODO(dfawley): wrap the old compressor/decompressor using the new API? -func recv(p *parser, c baseCodec, s *transport.Stream, dc Decompressor, m interface{}, maxReceiveMessageSize int, inPayload *stats.InPayload, compressor encoding.Compressor) error { +type payloadInfo struct { + wireLength int // The compressed length got from wire. + uncompressedBytes []byte +} + +func recvAndDecompress(p *parser, s *transport.Stream, dc Decompressor, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor) ([]byte, error) { pf, d, err := p.recvMsg(maxReceiveMessageSize) if err != nil { - return err + return nil, err } - if inPayload != nil { - inPayload.WireLength = len(d) + if payInfo != nil { + payInfo.wireLength = len(d) } if st := checkRecvPayload(pf, s.RecvCompress(), compressor != nil || dc != nil); st != nil { - return st.Err() + return nil, st.Err() } if pf == compressionMade { @@ -548,45 +654,74 @@ func recv(p *parser, c baseCodec, s *transport.Stream, dc Decompressor, m interf if dc != nil { d, err = dc.Do(bytes.NewReader(d)) if err != nil { - return status.Errorf(codes.Internal, "grpc: failed to decompress the received message %v", err) + return nil, status.Errorf(codes.Internal, "grpc: failed to decompress the received message %v", err) } } else { dcReader, err := compressor.Decompress(bytes.NewReader(d)) if err != nil { - return status.Errorf(codes.Internal, "grpc: failed to decompress the received message %v", err) + return nil, status.Errorf(codes.Internal, "grpc: failed to decompress the received message %v", err) } - d, err = ioutil.ReadAll(dcReader) + // Read from LimitReader with limit max+1. So if the underlying + // reader is over limit, the result will be bigger than max. + d, err = ioutil.ReadAll(io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1)) if err != nil { - return status.Errorf(codes.Internal, "grpc: failed to decompress the received message %v", err) + return nil, status.Errorf(codes.Internal, "grpc: failed to decompress the received message %v", err) } } } if len(d) > maxReceiveMessageSize { // TODO: Revisit the error code. Currently keep it consistent with java // implementation. - return status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max (%d vs. %d)", len(d), maxReceiveMessageSize) + return nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max (%d vs. %d)", len(d), maxReceiveMessageSize) + } + return d, nil +} + +// For the two compressor parameters, both should not be set, but if they are, +// dc takes precedence over compressor. +// TODO(dfawley): wrap the old compressor/decompressor using the new API? +func recv(p *parser, c baseCodec, s *transport.Stream, dc Decompressor, m interface{}, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor) error { + d, err := recvAndDecompress(p, s, dc, maxReceiveMessageSize, payInfo, compressor) + if err != nil { + return err } if err := c.Unmarshal(d, m); err != nil { return status.Errorf(codes.Internal, "grpc: failed to unmarshal the received message %v", err) } - if inPayload != nil { - inPayload.RecvTime = time.Now() - inPayload.Payload = m - // TODO truncate large payload. - inPayload.Data = d - inPayload.Length = len(d) + if payInfo != nil { + payInfo.uncompressedBytes = d } return nil } +// Information about RPC type rpcInfo struct { - failfast bool + failfast bool + preloaderInfo *compressorInfo +} + +// Information about Preloader +// Responsible for storing codec, and compressors +// If stream (s) has context s.Context which stores rpcInfo that has non nil +// pointers to codec, and compressors, then we can use preparedMsg for Async message prep +// and reuse marshalled bytes +type compressorInfo struct { + codec baseCodec + cp Compressor + comp encoding.Compressor } type rpcInfoContextKey struct{} -func newContextWithRPCInfo(ctx context.Context, failfast bool) context.Context { - return context.WithValue(ctx, rpcInfoContextKey{}, &rpcInfo{failfast: failfast}) +func newContextWithRPCInfo(ctx context.Context, failfast bool, codec baseCodec, cp Compressor, comp encoding.Compressor) context.Context { + return context.WithValue(ctx, rpcInfoContextKey{}, &rpcInfo{ + failfast: failfast, + preloaderInfo: &compressorInfo{ + codec: codec, + cp: cp, + comp: comp, + }, + }) } func rpcInfoFromContext(ctx context.Context) (s *rpcInfo, ok bool) { @@ -597,23 +732,17 @@ func rpcInfoFromContext(ctx context.Context) (s *rpcInfo, ok bool) { // Code returns the error code for err if it was produced by the rpc system. // Otherwise, it returns codes.Unknown. // -// Deprecated: use status.FromError and Code method instead. +// Deprecated: use status.Code instead. func Code(err error) codes.Code { - if s, ok := status.FromError(err); ok { - return s.Code() - } - return codes.Unknown + return status.Code(err) } // ErrorDesc returns the error description of err if it was produced by the rpc system. // Otherwise, it returns err.Error() or empty string when err is nil. // -// Deprecated: use status.FromError and Message method instead. +// Deprecated: use status.Convert and Message method instead. func ErrorDesc(err error) string { - if s, ok := status.FromError(err); ok { - return s.Message() - } - return err.Error() + return status.Convert(err).Message() } // Errorf returns an error containing an error code and a description; @@ -624,6 +753,31 @@ func Errorf(c codes.Code, format string, a ...interface{}) error { return status.Errorf(c, format, a...) } +// toRPCErr converts an error into an error from the status package. +func toRPCErr(err error) error { + if err == nil || err == io.EOF { + return err + } + if err == io.ErrUnexpectedEOF { + return status.Error(codes.Internal, err.Error()) + } + if _, ok := status.FromError(err); ok { + return err + } + switch e := err.(type) { + case transport.ConnectionError: + return status.Error(codes.Unavailable, e.Desc) + default: + switch err { + case context.DeadlineExceeded: + return status.Error(codes.DeadlineExceeded, err.Error()) + case context.Canceled: + return status.Error(codes.Canceled, err.Error()) + } + } + return status.Error(codes.Unknown, err.Error()) +} + // setCallInfoCodec should only be called after CallOptions have been applied. func setCallInfoCodec(c *callInfo) error { if c.codec != nil { @@ -645,6 +799,53 @@ func setCallInfoCodec(c *callInfo) error { return nil } +// parseDialTarget returns the network and address to pass to dialer +func parseDialTarget(target string) (net string, addr string) { + net = "tcp" + + m1 := strings.Index(target, ":") + m2 := strings.Index(target, ":/") + + // handle unix:addr which will fail with url.Parse + if m1 >= 0 && m2 < 0 { + if n := target[0:m1]; n == "unix" { + net = n + addr = target[m1+1:] + return net, addr + } + } + if m2 >= 0 { + t, err := url.Parse(target) + if err != nil { + return net, target + } + scheme := t.Scheme + addr = t.Path + if scheme == "unix" { + net = scheme + if addr == "" { + addr = t.Host + } + return net, addr + } + } + + return net, target +} + +// channelzData is used to store channelz related data for ClientConn, addrConn and Server. +// These fields cannot be embedded in the original structs (e.g. ClientConn), since to do atomic +// operation on int64 variable on 32-bit machine, user is responsible to enforce memory alignment. +// Here, by grouping those int64 fields inside a struct, we are enforcing the alignment. +type channelzData struct { + callsStarted int64 + callsFailed int64 + callsSucceeded int64 + // lastCallStartedTime stores the timestamp that last call starts. It is of int64 type instead of + // time.Time since it's more costly to atomically update time.Time variable than int64 variable. + lastCallStartedTime int64 +} + // The SupportPackageIsVersion variables are referenced from generated protocol // buffer files to ensure compatibility with the gRPC version used. The latest // support package version is 5. @@ -659,7 +860,4 @@ const ( SupportPackageIsVersion5 = true ) -// Version is the current grpc version. -const Version = "1.11.0-dev" - const grpcUA = "grpc-go/" + Version diff --git a/vendor/google.golang.org/grpc/server.go b/vendor/google.golang.org/grpc/server.go index 997b24fa3e..f064b73e55 100644 --- a/vendor/google.golang.org/grpc/server.go +++ b/vendor/google.golang.org/grpc/server.go @@ -19,7 +19,7 @@ package grpc import ( - "bytes" + "context" "errors" "fmt" "io" @@ -30,25 +30,26 @@ import ( "runtime" "strings" "sync" + "sync/atomic" "time" - "io/ioutil" - - "golang.org/x/net/context" - "golang.org/x/net/http2" "golang.org/x/net/trace" + "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" "google.golang.org/grpc/encoding" "google.golang.org/grpc/encoding/proto" "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/internal" + "google.golang.org/grpc/internal/binarylog" + "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/grpcsync" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/metadata" + "google.golang.org/grpc/peer" "google.golang.org/grpc/stats" "google.golang.org/grpc/status" "google.golang.org/grpc/tap" - "google.golang.org/grpc/transport" ) const ( @@ -56,6 +57,8 @@ const ( defaultServerMaxSendMessageSize = math.MaxInt32 ) +var statusOK = status.New(codes.OK, "") + type methodHandler func(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor UnaryServerInterceptor) (interface{}, error) // MethodDesc represents an RPC service's method specification. @@ -86,25 +89,27 @@ type service struct { // Server is a gRPC server to serve RPC requests. type Server struct { - opts options + opts serverOptions mu sync.Mutex // guards following lis map[net.Listener]bool - conns map[io.Closer]bool + conns map[transport.ServerTransport]bool serve bool drain bool cv *sync.Cond // signaled when connections close for GracefulStop m map[string]*service // service name -> service info events trace.EventLog - quit chan struct{} - done chan struct{} - quitOnce sync.Once - doneOnce sync.Once - serveWG sync.WaitGroup // counts active Serve goroutines for GracefulStop + quit *grpcsync.Event + done *grpcsync.Event + channelzRemoveOnce sync.Once + serveWG sync.WaitGroup // counts active Serve goroutines for GracefulStop + + channelzID int64 // channelz unique identification number + czData *channelzData } -type options struct { +type serverOptions struct { creds credentials.TransportCredentials codec baseCodec cp Compressor @@ -116,7 +121,6 @@ type options struct { maxConcurrentStreams uint32 maxReceiveMessageSize int maxSendMessageSize int - useHandlerImpl bool // use http.Handler-based server unknownStreamDesc *StreamDesc keepaliveParams keepalive.ServerParameters keepalivePolicy keepalive.EnforcementPolicy @@ -125,70 +129,110 @@ type options struct { writeBufferSize int readBufferSize int connectionTimeout time.Duration + maxHeaderListSize *uint32 } -var defaultServerOptions = options{ +var defaultServerOptions = serverOptions{ maxReceiveMessageSize: defaultServerMaxReceiveMessageSize, maxSendMessageSize: defaultServerMaxSendMessageSize, connectionTimeout: 120 * time.Second, + writeBufferSize: defaultWriteBufSize, + readBufferSize: defaultReadBufSize, } // A ServerOption sets options such as credentials, codec and keepalive parameters, etc. -type ServerOption func(*options) +type ServerOption interface { + apply(*serverOptions) +} + +// EmptyServerOption does not alter the server configuration. It can be embedded +// in another structure to build custom server options. +// +// This API is EXPERIMENTAL. +type EmptyServerOption struct{} + +func (EmptyServerOption) apply(*serverOptions) {} + +// funcServerOption wraps a function that modifies serverOptions into an +// implementation of the ServerOption interface. +type funcServerOption struct { + f func(*serverOptions) +} + +func (fdo *funcServerOption) apply(do *serverOptions) { + fdo.f(do) +} + +func newFuncServerOption(f func(*serverOptions)) *funcServerOption { + return &funcServerOption{ + f: f, + } +} -// WriteBufferSize lets you set the size of write buffer, this determines how much data can be batched -// before doing a write on the wire. +// WriteBufferSize determines how much data can be batched before doing a write on the wire. +// The corresponding memory allocation for this buffer will be twice the size to keep syscalls low. +// The default value for this buffer is 32KB. +// Zero will disable the write buffer such that each write will be on underlying connection. +// Note: A Send call may not directly translate to a write. func WriteBufferSize(s int) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.writeBufferSize = s - } + }) } // ReadBufferSize lets you set the size of read buffer, this determines how much data can be read at most // for one read syscall. +// The default value for this buffer is 32KB. +// Zero will disable read buffer for a connection so data framer can access the underlying +// conn directly. func ReadBufferSize(s int) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.readBufferSize = s - } + }) } // InitialWindowSize returns a ServerOption that sets window size for stream. // The lower bound for window size is 64K and any value smaller than that will be ignored. func InitialWindowSize(s int32) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.initialWindowSize = s - } + }) } // InitialConnWindowSize returns a ServerOption that sets window size for a connection. // The lower bound for window size is 64K and any value smaller than that will be ignored. func InitialConnWindowSize(s int32) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.initialConnWindowSize = s - } + }) } // KeepaliveParams returns a ServerOption that sets keepalive and max-age parameters for the server. func KeepaliveParams(kp keepalive.ServerParameters) ServerOption { - return func(o *options) { - o.keepaliveParams = kp + if kp.Time > 0 && kp.Time < time.Second { + grpclog.Warning("Adjusting keepalive ping interval to minimum period of 1s") + kp.Time = time.Second } + + return newFuncServerOption(func(o *serverOptions) { + o.keepaliveParams = kp + }) } // KeepaliveEnforcementPolicy returns a ServerOption that sets keepalive enforcement policy for the server. func KeepaliveEnforcementPolicy(kep keepalive.EnforcementPolicy) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.keepalivePolicy = kep - } + }) } // CustomCodec returns a ServerOption that sets a codec for message marshaling and unmarshaling. // // This will override any lookups by content-subtype for Codecs registered with RegisterCodec. func CustomCodec(codec Codec) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.codec = codec - } + }) } // RPCCompressor returns a ServerOption that sets a compressor for outbound @@ -199,9 +243,9 @@ func CustomCodec(codec Codec) ServerOption { // // Deprecated: use encoding.RegisterCompressor instead. func RPCCompressor(cp Compressor) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.cp = cp - } + }) } // RPCDecompressor returns a ServerOption that sets a decompressor for inbound @@ -210,13 +254,15 @@ func RPCCompressor(cp Compressor) ServerOption { // // Deprecated: use encoding.RegisterCompressor instead. func RPCDecompressor(dc Decompressor) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.dc = dc - } + }) } // MaxMsgSize returns a ServerOption to set the max message size in bytes the server can receive. -// If this is not set, gRPC uses the default limit. Deprecated: use MaxRecvMsgSize instead. +// If this is not set, gRPC uses the default limit. +// +// Deprecated: use MaxRecvMsgSize instead. func MaxMsgSize(m int) ServerOption { return MaxRecvMsgSize(m) } @@ -224,73 +270,73 @@ func MaxMsgSize(m int) ServerOption { // MaxRecvMsgSize returns a ServerOption to set the max message size in bytes the server can receive. // If this is not set, gRPC uses the default 4MB. func MaxRecvMsgSize(m int) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.maxReceiveMessageSize = m - } + }) } // MaxSendMsgSize returns a ServerOption to set the max message size in bytes the server can send. -// If this is not set, gRPC uses the default 4MB. +// If this is not set, gRPC uses the default `math.MaxInt32`. func MaxSendMsgSize(m int) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.maxSendMessageSize = m - } + }) } // MaxConcurrentStreams returns a ServerOption that will apply a limit on the number // of concurrent streams to each ServerTransport. func MaxConcurrentStreams(n uint32) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.maxConcurrentStreams = n - } + }) } // Creds returns a ServerOption that sets credentials for server connections. func Creds(c credentials.TransportCredentials) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.creds = c - } + }) } // UnaryInterceptor returns a ServerOption that sets the UnaryServerInterceptor for the // server. Only one unary interceptor can be installed. The construction of multiple // interceptors (e.g., chaining) can be implemented at the caller. func UnaryInterceptor(i UnaryServerInterceptor) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { if o.unaryInt != nil { panic("The unary server interceptor was already set and may not be reset.") } o.unaryInt = i - } + }) } // StreamInterceptor returns a ServerOption that sets the StreamServerInterceptor for the // server. Only one stream interceptor can be installed. func StreamInterceptor(i StreamServerInterceptor) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { if o.streamInt != nil { panic("The stream server interceptor was already set and may not be reset.") } o.streamInt = i - } + }) } // InTapHandle returns a ServerOption that sets the tap handle for all the server // transport to be created. Only one can be installed. func InTapHandle(h tap.ServerInHandle) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { if o.inTapHandle != nil { panic("The tap handle was already set and may not be reset.") } o.inTapHandle = h - } + }) } // StatsHandler returns a ServerOption that sets the stats handler for the server. func StatsHandler(h stats.Handler) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.statsHandler = h - } + }) } // UnknownServiceHandler returns a ServerOption that allows for adding a custom @@ -300,7 +346,7 @@ func StatsHandler(h stats.Handler) ServerOption { // The handling function has full access to the Context of the request and the // stream, and the invocation bypasses interceptors. func UnknownServiceHandler(streamHandler StreamHandler) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.unknownStreamDesc = &StreamDesc{ StreamName: "unknown_service_handler", Handler: streamHandler, @@ -308,7 +354,7 @@ func UnknownServiceHandler(streamHandler StreamHandler) ServerOption { ClientStreams: true, ServerStreams: true, } - } + }) } // ConnectionTimeout returns a ServerOption that sets the timeout for @@ -318,9 +364,17 @@ func UnknownServiceHandler(streamHandler StreamHandler) ServerOption { // // This API is EXPERIMENTAL. func ConnectionTimeout(d time.Duration) ServerOption { - return func(o *options) { + return newFuncServerOption(func(o *serverOptions) { o.connectionTimeout = d - } + }) +} + +// MaxHeaderListSize returns a ServerOption that sets the max (uncompressed) size +// of header list that the server is prepared to accept. +func MaxHeaderListSize(s uint32) ServerOption { + return newFuncServerOption(func(o *serverOptions) { + o.maxHeaderListSize = &s + }) } // NewServer creates a gRPC server which has no service registered and has not @@ -328,21 +382,26 @@ func ConnectionTimeout(d time.Duration) ServerOption { func NewServer(opt ...ServerOption) *Server { opts := defaultServerOptions for _, o := range opt { - o(&opts) + o.apply(&opts) } s := &Server{ - lis: make(map[net.Listener]bool), - opts: opts, - conns: make(map[io.Closer]bool), - m: make(map[string]*service), - quit: make(chan struct{}), - done: make(chan struct{}), + lis: make(map[net.Listener]bool), + opts: opts, + conns: make(map[transport.ServerTransport]bool), + m: make(map[string]*service), + quit: grpcsync.NewEvent(), + done: grpcsync.NewEvent(), + czData: new(channelzData), } s.cv = sync.NewCond(&s.mu) if EnableTracing { _, file, line, _ := runtime.Caller(1) s.events = trace.NewEventLog("grpc.Server", fmt.Sprintf("%s:%d", file, line)) } + + if channelz.IsOn() { + s.channelzID = channelz.RegisterServer(&channelzServer{s}, "") + } return s } @@ -458,6 +517,26 @@ func (s *Server) useTransportAuthenticator(rawConn net.Conn) (net.Conn, credenti return s.opts.creds.ServerHandshake(rawConn) } +type listenSocket struct { + net.Listener + channelzID int64 +} + +func (l *listenSocket) ChannelzMetric() *channelz.SocketInternalMetric { + return &channelz.SocketInternalMetric{ + SocketOptions: channelz.GetSocketOption(l.Listener), + LocalAddr: l.Listener.Addr(), + } +} + +func (l *listenSocket) Close() error { + err := l.Listener.Close() + if channelz.IsOn() { + channelz.RemoveEntry(l.channelzID) + } + return err +} + // Serve accepts incoming connections on the listener lis, creating a new // ServerTransport and service goroutine for each. The service goroutines // read gRPC requests and then call the registered handlers to reply to them. @@ -478,21 +557,25 @@ func (s *Server) Serve(lis net.Listener) error { s.serveWG.Add(1) defer func() { s.serveWG.Done() - select { - // Stop or GracefulStop called; block until done and return nil. - case <-s.quit: - <-s.done - default: + if s.quit.HasFired() { + // Stop or GracefulStop called; block until done and return nil. + <-s.done.Done() } }() - s.lis[lis] = true + ls := &listenSocket{Listener: lis} + s.lis[ls] = true + + if channelz.IsOn() { + ls.channelzID = channelz.RegisterListenSocket(ls, s.channelzID, lis.Addr().String()) + } s.mu.Unlock() + defer func() { s.mu.Lock() - if s.lis != nil && s.lis[lis] { - lis.Close() - delete(s.lis, lis) + if s.lis != nil && s.lis[ls] { + ls.Close() + delete(s.lis, ls) } s.mu.Unlock() }() @@ -519,7 +602,7 @@ func (s *Server) Serve(lis net.Listener) error { timer := time.NewTimer(tempDelay) select { case <-timer.C: - case <-s.quit: + case <-s.quit.Done(): timer.Stop() return nil } @@ -529,10 +612,8 @@ func (s *Server) Serve(lis net.Listener) error { s.printf("done serving; Accept = %v", err) s.mu.Unlock() - select { - case <-s.quit: + if s.quit.HasFired() { return nil - default: } return err } @@ -553,50 +634,39 @@ func (s *Server) Serve(lis net.Listener) error { // handleRawConn forks a goroutine to handle a just-accepted connection that // has not had any I/O performed on it yet. func (s *Server) handleRawConn(rawConn net.Conn) { + if s.quit.HasFired() { + rawConn.Close() + return + } rawConn.SetDeadline(time.Now().Add(s.opts.connectionTimeout)) conn, authInfo, err := s.useTransportAuthenticator(rawConn) if err != nil { - s.mu.Lock() - s.errorf("ServerHandshake(%q) failed: %v", rawConn.RemoteAddr(), err) - s.mu.Unlock() - grpclog.Warningf("grpc: Server.Serve failed to complete security handshake from %q: %v", rawConn.RemoteAddr(), err) - // If serverHandshake returns ErrConnDispatched, keep rawConn open. + // ErrConnDispatched means that the connection was dispatched away from + // gRPC; those connections should be left open. if err != credentials.ErrConnDispatched { + s.mu.Lock() + s.errorf("ServerHandshake(%q) failed: %v", rawConn.RemoteAddr(), err) + s.mu.Unlock() + grpclog.Warningf("grpc: Server.Serve failed to complete security handshake from %q: %v", rawConn.RemoteAddr(), err) rawConn.Close() } rawConn.SetDeadline(time.Time{}) return } - s.mu.Lock() - if s.conns == nil { - s.mu.Unlock() - conn.Close() + // Finish handshaking (HTTP2) + st := s.newHTTP2Transport(conn, authInfo) + if st == nil { return } - s.mu.Unlock() - - var serve func() - c := conn.(io.Closer) - if s.opts.useHandlerImpl { - serve = func() { s.serveUsingHandler(conn) } - } else { - // Finish handshaking (HTTP2) - st := s.newHTTP2Transport(conn, authInfo) - if st == nil { - return - } - c = st - serve = func() { s.serveStreams(st) } - } rawConn.SetDeadline(time.Time{}) - if !s.addConn(c) { + if !s.addConn(st) { return } go func() { - serve() - s.removeConn(c) + s.serveStreams(st) + s.removeConn(st) }() } @@ -614,6 +684,8 @@ func (s *Server) newHTTP2Transport(c net.Conn, authInfo credentials.AuthInfo) tr InitialConnWindowSize: s.opts.initialConnWindowSize, WriteBufferSize: s.opts.writeBufferSize, ReadBufferSize: s.opts.readBufferSize, + ChannelzParentID: s.channelzID, + MaxHeaderListSize: s.opts.maxHeaderListSize, } st, err := transport.NewServerTransport("http2", c, config) if err != nil { @@ -624,6 +696,7 @@ func (s *Server) newHTTP2Transport(c net.Conn, authInfo credentials.AuthInfo) tr grpclog.Warningln("grpc: Server.Serve failed to create ServerTransport: ", err) return nil } + return st } @@ -648,27 +721,6 @@ func (s *Server) serveStreams(st transport.ServerTransport) { var _ http.Handler = (*Server)(nil) -// serveUsingHandler is called from handleRawConn when s is configured -// to handle requests via the http.Handler interface. It sets up a -// net/http.Server to handle the just-accepted conn. The http.Server -// is configured to route all incoming requests (all HTTP/2 streams) -// to ServeHTTP, which creates a new ServerTransport for each stream. -// serveUsingHandler blocks until conn closes. -// -// This codepath is only used when Server.TestingUseHandlerImpl has -// been configured. This lets the end2end tests exercise the ServeHTTP -// method as one of the environment types. -// -// conn is the *tls.Conn that's already been authenticated. -func (s *Server) serveUsingHandler(conn net.Conn) { - h2s := &http2.Server{ - MaxConcurrentStreams: s.opts.maxConcurrentStreams, - } - h2s.ServeConn(conn, &http2.ServeConnOpts{ - Handler: s, - }) -} - // ServeHTTP implements the Go standard library's http.Handler // interface by responding to the gRPC request r, by looking up // the requested gRPC method in the gRPC server s. @@ -709,6 +761,9 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { // traceInfo returns a traceInfo and associates it with stream, if tracing is enabled. // If tracing is not enabled, it returns nil. func (s *Server) traceInfo(st transport.ServerTransport, stream *transport.Stream) (trInfo *traceInfo) { + if !EnableTracing { + return nil + } tr, ok := trace.FromContext(stream.Context()) if !ok { return nil @@ -716,65 +771,98 @@ func (s *Server) traceInfo(st transport.ServerTransport, stream *transport.Strea trInfo = &traceInfo{ tr: tr, + firstLine: firstLine{ + client: false, + remoteAddr: st.RemoteAddr(), + }, } - trInfo.firstLine.client = false - trInfo.firstLine.remoteAddr = st.RemoteAddr() - if dl, ok := stream.Context().Deadline(); ok { - trInfo.firstLine.deadline = dl.Sub(time.Now()) + trInfo.firstLine.deadline = time.Until(dl) } return trInfo } -func (s *Server) addConn(c io.Closer) bool { +func (s *Server) addConn(st transport.ServerTransport) bool { s.mu.Lock() defer s.mu.Unlock() if s.conns == nil { - c.Close() + st.Close() return false } if s.drain { // Transport added after we drained our existing conns: drain it // immediately. - c.(transport.ServerTransport).Drain() + st.Drain() } - s.conns[c] = true + s.conns[st] = true return true } -func (s *Server) removeConn(c io.Closer) { +func (s *Server) removeConn(st transport.ServerTransport) { s.mu.Lock() defer s.mu.Unlock() if s.conns != nil { - delete(s.conns, c) + delete(s.conns, st) s.cv.Broadcast() } } -func (s *Server) sendResponse(t transport.ServerTransport, stream *transport.Stream, msg interface{}, cp Compressor, opts *transport.Options, comp encoding.Compressor) error { - var ( - outPayload *stats.OutPayload - ) - if s.opts.statsHandler != nil { - outPayload = &stats.OutPayload{} +func (s *Server) channelzMetric() *channelz.ServerInternalMetric { + return &channelz.ServerInternalMetric{ + CallsStarted: atomic.LoadInt64(&s.czData.callsStarted), + CallsSucceeded: atomic.LoadInt64(&s.czData.callsSucceeded), + CallsFailed: atomic.LoadInt64(&s.czData.callsFailed), + LastCallStartedTimestamp: time.Unix(0, atomic.LoadInt64(&s.czData.lastCallStartedTime)), } - hdr, data, err := encode(s.getCodec(stream.ContentSubtype()), msg, cp, outPayload, comp) +} + +func (s *Server) incrCallsStarted() { + atomic.AddInt64(&s.czData.callsStarted, 1) + atomic.StoreInt64(&s.czData.lastCallStartedTime, time.Now().UnixNano()) +} + +func (s *Server) incrCallsSucceeded() { + atomic.AddInt64(&s.czData.callsSucceeded, 1) +} + +func (s *Server) incrCallsFailed() { + atomic.AddInt64(&s.czData.callsFailed, 1) +} + +func (s *Server) sendResponse(t transport.ServerTransport, stream *transport.Stream, msg interface{}, cp Compressor, opts *transport.Options, comp encoding.Compressor) error { + data, err := encode(s.getCodec(stream.ContentSubtype()), msg) if err != nil { grpclog.Errorln("grpc: server failed to encode response: ", err) return err } - if len(data) > s.opts.maxSendMessageSize { - return status.Errorf(codes.ResourceExhausted, "grpc: trying to send message larger than max (%d vs. %d)", len(data), s.opts.maxSendMessageSize) + compData, err := compress(data, cp, comp) + if err != nil { + grpclog.Errorln("grpc: server failed to compress response: ", err) + return err + } + hdr, payload := msgHeader(data, compData) + // TODO(dfawley): should we be checking len(data) instead? + if len(payload) > s.opts.maxSendMessageSize { + return status.Errorf(codes.ResourceExhausted, "grpc: trying to send message larger than max (%d vs. %d)", len(payload), s.opts.maxSendMessageSize) } - err = t.Write(stream, hdr, data, opts) - if err == nil && outPayload != nil { - outPayload.SentTime = time.Now() - s.opts.statsHandler.HandleRPC(stream.Context(), outPayload) + err = t.Write(stream, hdr, payload, opts) + if err == nil && s.opts.statsHandler != nil { + s.opts.statsHandler.HandleRPC(stream.Context(), outPayload(false, msg, data, payload, time.Now())) } return err } func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport.Stream, srv *service, md *MethodDesc, trInfo *traceInfo) (err error) { + if channelz.IsOn() { + s.incrCallsStarted() + defer func() { + if err != nil && err != io.EOF { + s.incrCallsFailed() + } else { + s.incrCallsSucceeded() + } + }() + } sh := s.opts.statsHandler if sh != nil { beginTime := time.Now() @@ -795,7 +883,6 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. } if trInfo != nil { defer trInfo.tr.Finish() - trInfo.firstLine.client = false trInfo.tr.LazyLog(&trInfo.firstLine, false) defer func() { if err != nil && err != io.EOF { @@ -805,6 +892,30 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. }() } + binlog := binarylog.GetMethodLogger(stream.Method()) + if binlog != nil { + ctx := stream.Context() + md, _ := metadata.FromIncomingContext(ctx) + logEntry := &binarylog.ClientHeader{ + Header: md, + MethodName: stream.Method(), + PeerAddr: nil, + } + if deadline, ok := ctx.Deadline(); ok { + logEntry.Timeout = time.Until(deadline) + if logEntry.Timeout < 0 { + logEntry.Timeout = 0 + } + } + if a := md[":authority"]; len(a) > 0 { + logEntry.Authority = a[0] + } + if peer, ok := peer.FromContext(ctx); ok { + logEntry.PeerAddr = peer.Addr + } + binlog.Log(logEntry) + } + // comp and cp are used for compression. decomp and dc are used for // decompression. If comp and decomp are both set, they are the same; // however they are kept separate to ensure that at most one of the @@ -841,85 +952,47 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. } } - p := &parser{r: stream} - pf, req, err := p.recvMsg(s.opts.maxReceiveMessageSize) - if err == io.EOF { - // The entire stream is done (for unary RPC only). - return err - } - if err == io.ErrUnexpectedEOF { - err = status.Errorf(codes.Internal, io.ErrUnexpectedEOF.Error()) + var payInfo *payloadInfo + if sh != nil || binlog != nil { + payInfo = &payloadInfo{} } + d, err := recvAndDecompress(&parser{r: stream}, stream, dc, s.opts.maxReceiveMessageSize, payInfo, decomp) if err != nil { if st, ok := status.FromError(err); ok { if e := t.WriteStatus(stream, st); e != nil { grpclog.Warningf("grpc: Server.processUnaryRPC failed to write status %v", e) } - } else { - switch st := err.(type) { - case transport.ConnectionError: - // Nothing to do here. - case transport.StreamError: - if e := t.WriteStatus(stream, status.New(st.Code, st.Desc)); e != nil { - grpclog.Warningf("grpc: Server.processUnaryRPC failed to write status %v", e) - } - default: - panic(fmt.Sprintf("grpc: Unexpected error (%T) from recvMsg: %v", st, st)) - } } return err } - if st := checkRecvPayload(pf, stream.RecvCompress(), dc != nil || decomp != nil); st != nil { - if e := t.WriteStatus(stream, st); e != nil { - grpclog.Warningf("grpc: Server.processUnaryRPC failed to write status %v", e) - } - return st.Err() - } - var inPayload *stats.InPayload - if sh != nil { - inPayload = &stats.InPayload{ - RecvTime: time.Now(), - } + if channelz.IsOn() { + t.IncrMsgRecv() } df := func(v interface{}) error { - if inPayload != nil { - inPayload.WireLength = len(req) - } - if pf == compressionMade { - var err error - if dc != nil { - req, err = dc.Do(bytes.NewReader(req)) - if err != nil { - return status.Errorf(codes.Internal, err.Error()) - } - } else { - tmp, _ := decomp.Decompress(bytes.NewReader(req)) - req, err = ioutil.ReadAll(tmp) - if err != nil { - return status.Errorf(codes.Internal, "grpc: failed to decompress the received message %v", err) - } - } - } - if len(req) > s.opts.maxReceiveMessageSize { - // TODO: Revisit the error code. Currently keep it consistent with - // java implementation. - return status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max (%d vs. %d)", len(req), s.opts.maxReceiveMessageSize) - } - if err := s.getCodec(stream.ContentSubtype()).Unmarshal(req, v); err != nil { + if err := s.getCodec(stream.ContentSubtype()).Unmarshal(d, v); err != nil { return status.Errorf(codes.Internal, "grpc: error unmarshalling request: %v", err) } - if inPayload != nil { - inPayload.Payload = v - inPayload.Data = req - inPayload.Length = len(req) - sh.HandleRPC(stream.Context(), inPayload) + if sh != nil { + sh.HandleRPC(stream.Context(), &stats.InPayload{ + RecvTime: time.Now(), + Payload: v, + WireLength: payInfo.wireLength, + Data: d, + Length: len(d), + }) + } + if binlog != nil { + binlog.Log(&binarylog.ClientMessage{ + Message: d, + }) } if trInfo != nil { trInfo.tr.LazyLog(&payload{sent: false, msg: v}, true) } return nil } - reply, appErr := md.Handler(srv.server, stream.Context(), df, s.opts.unaryInt) + ctx := NewContextWithServerTransportStream(stream.Context(), stream) + reply, appErr := md.Handler(srv.server, ctx, df, s.opts.unaryInt) if appErr != nil { appStatus, ok := status.FromError(appErr) if !ok { @@ -934,15 +1007,25 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. if e := t.WriteStatus(stream, appStatus); e != nil { grpclog.Warningf("grpc: Server.processUnaryRPC failed to write status: %v", e) } + if binlog != nil { + if h, _ := stream.Header(); h.Len() > 0 { + // Only log serverHeader if there was header. Otherwise it can + // be trailer only. + binlog.Log(&binarylog.ServerHeader{ + Header: h, + }) + } + binlog.Log(&binarylog.ServerTrailer{ + Trailer: stream.Trailer(), + Err: appErr, + }) + } return appErr } if trInfo != nil { trInfo.tr.LazyLog(stringer("OK"), false) } - opts := &transport.Options{ - Last: true, - Delay: false, - } + opts := &transport.Options{Last: true} if err := s.sendResponse(t, stream, reply, cp, opts, comp); err != nil { if err == io.EOF { @@ -957,26 +1040,61 @@ func (s *Server) processUnaryRPC(t transport.ServerTransport, stream *transport. switch st := err.(type) { case transport.ConnectionError: // Nothing to do here. - case transport.StreamError: - if e := t.WriteStatus(stream, status.New(st.Code, st.Desc)); e != nil { - grpclog.Warningf("grpc: Server.processUnaryRPC failed to write status %v", e) - } default: panic(fmt.Sprintf("grpc: Unexpected error (%T) from sendResponse: %v", st, st)) } } + if binlog != nil { + h, _ := stream.Header() + binlog.Log(&binarylog.ServerHeader{ + Header: h, + }) + binlog.Log(&binarylog.ServerTrailer{ + Trailer: stream.Trailer(), + Err: appErr, + }) + } return err } + if binlog != nil { + h, _ := stream.Header() + binlog.Log(&binarylog.ServerHeader{ + Header: h, + }) + binlog.Log(&binarylog.ServerMessage{ + Message: reply, + }) + } + if channelz.IsOn() { + t.IncrMsgSent() + } if trInfo != nil { trInfo.tr.LazyLog(&payload{sent: true, msg: reply}, true) } // TODO: Should we be logging if writing status failed here, like above? // Should the logging be in WriteStatus? Should we ignore the WriteStatus // error or allow the stats handler to see it? - return t.WriteStatus(stream, status.New(codes.OK, "")) + err = t.WriteStatus(stream, statusOK) + if binlog != nil { + binlog.Log(&binarylog.ServerTrailer{ + Trailer: stream.Trailer(), + Err: appErr, + }) + } + return err } func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transport.Stream, srv *service, sd *StreamDesc, trInfo *traceInfo) (err error) { + if channelz.IsOn() { + s.incrCallsStarted() + defer func() { + if err != nil && err != io.EOF { + s.incrCallsFailed() + } else { + s.incrCallsSucceeded() + } + }() + } sh := s.opts.statsHandler if sh != nil { beginTime := time.Now() @@ -995,17 +1113,42 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp sh.HandleRPC(stream.Context(), end) }() } + ctx := NewContextWithServerTransportStream(stream.Context(), stream) ss := &serverStream{ - t: t, - s: stream, - p: &parser{r: stream}, - codec: s.getCodec(stream.ContentSubtype()), + ctx: ctx, + t: t, + s: stream, + p: &parser{r: stream}, + codec: s.getCodec(stream.ContentSubtype()), maxReceiveMessageSize: s.opts.maxReceiveMessageSize, maxSendMessageSize: s.opts.maxSendMessageSize, trInfo: trInfo, statsHandler: sh, } + ss.binlog = binarylog.GetMethodLogger(stream.Method()) + if ss.binlog != nil { + md, _ := metadata.FromIncomingContext(ctx) + logEntry := &binarylog.ClientHeader{ + Header: md, + MethodName: stream.Method(), + PeerAddr: nil, + } + if deadline, ok := ctx.Deadline(); ok { + logEntry.Timeout = time.Until(deadline) + if logEntry.Timeout < 0 { + logEntry.Timeout = 0 + } + } + if a := md[":authority"]; len(a) > 0 { + logEntry.Authority = a[0] + } + if peer, ok := peer.FromContext(ss.Context()); ok { + logEntry.PeerAddr = peer.Addr + } + ss.binlog.Log(logEntry) + } + // If dc is set and matches the stream's compression, use it. Otherwise, try // to find a matching registered compressor for decomp. if rc := stream.RecvCompress(); s.opts.dc != nil && s.opts.dc.Type() == rc { @@ -1065,12 +1208,7 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp if appErr != nil { appStatus, ok := status.FromError(appErr) if !ok { - switch err := appErr.(type) { - case transport.StreamError: - appStatus = status.New(err.Code, err.Desc) - default: - appStatus = status.New(codes.Unknown, appErr.Error()) - } + appStatus = status.New(codes.Unknown, appErr.Error()) appErr = appStatus.Err() } if trInfo != nil { @@ -1080,6 +1218,12 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp ss.mu.Unlock() } t.WriteStatus(ss.s, appStatus) + if ss.binlog != nil { + ss.binlog.Log(&binarylog.ServerTrailer{ + Trailer: ss.s.Trailer(), + Err: appErr, + }) + } // TODO: Should we log an error from WriteStatus here and below? return appErr } @@ -1088,8 +1232,14 @@ func (s *Server) processStreamingRPC(t transport.ServerTransport, stream *transp ss.trInfo.tr.LazyLog(stringer("OK"), false) ss.mu.Unlock() } - return t.WriteStatus(ss.s, status.New(codes.OK, "")) - + err = t.WriteStatus(ss.s, statusOK) + if ss.binlog != nil { + ss.binlog.Log(&binarylog.ServerTrailer{ + Trailer: ss.s.Trailer(), + Err: appErr, + }) + } + return err } func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Stream, trInfo *traceInfo) { @@ -1118,47 +1268,33 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str } service := sm[:pos] method := sm[pos+1:] - srv, ok := s.m[service] - if !ok { - if unknownDesc := s.opts.unknownStreamDesc; unknownDesc != nil { - s.processStreamingRPC(t, stream, nil, unknownDesc, trInfo) + + srv, knownService := s.m[service] + if knownService { + if md, ok := srv.md[method]; ok { + s.processUnaryRPC(t, stream, srv, md, trInfo) return } - if trInfo != nil { - trInfo.tr.LazyLog(&fmtStringer{"Unknown service %v", []interface{}{service}}, true) - trInfo.tr.SetError() - } - errDesc := fmt.Sprintf("unknown service %v", service) - if err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil { - if trInfo != nil { - trInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{err}}, true) - trInfo.tr.SetError() - } - grpclog.Warningf("grpc: Server.handleStream failed to write status: %v", err) - } - if trInfo != nil { - trInfo.tr.Finish() + if sd, ok := srv.sd[method]; ok { + s.processStreamingRPC(t, stream, srv, sd, trInfo) + return } - return } - // Unary RPC or Streaming RPC? - if md, ok := srv.md[method]; ok { - s.processUnaryRPC(t, stream, srv, md, trInfo) + // Unknown service, or known server unknown method. + if unknownDesc := s.opts.unknownStreamDesc; unknownDesc != nil { + s.processStreamingRPC(t, stream, nil, unknownDesc, trInfo) return } - if sd, ok := srv.sd[method]; ok { - s.processStreamingRPC(t, stream, srv, sd, trInfo) - return + var errDesc string + if !knownService { + errDesc = fmt.Sprintf("unknown service %v", service) + } else { + errDesc = fmt.Sprintf("unknown method %v for service %v", method, service) } if trInfo != nil { - trInfo.tr.LazyLog(&fmtStringer{"Unknown method %v", []interface{}{method}}, true) + trInfo.tr.LazyPrintf("%s", errDesc) trInfo.tr.SetError() } - if unknownDesc := s.opts.unknownStreamDesc; unknownDesc != nil { - s.processStreamingRPC(t, stream, nil, unknownDesc, trInfo) - return - } - errDesc := fmt.Sprintf("unknown method %v", method) if err := t.WriteStatus(stream, status.New(codes.Unimplemented, errDesc)); err != nil { if trInfo != nil { trInfo.tr.LazyLog(&fmtStringer{"%v", []interface{}{err}}, true) @@ -1171,23 +1307,61 @@ func (s *Server) handleStream(t transport.ServerTransport, stream *transport.Str } } +// The key to save ServerTransportStream in the context. +type streamKey struct{} + +// NewContextWithServerTransportStream creates a new context from ctx and +// attaches stream to it. +// +// This API is EXPERIMENTAL. +func NewContextWithServerTransportStream(ctx context.Context, stream ServerTransportStream) context.Context { + return context.WithValue(ctx, streamKey{}, stream) +} + +// ServerTransportStream is a minimal interface that a transport stream must +// implement. This can be used to mock an actual transport stream for tests of +// handler code that use, for example, grpc.SetHeader (which requires some +// stream to be in context). +// +// See also NewContextWithServerTransportStream. +// +// This API is EXPERIMENTAL. +type ServerTransportStream interface { + Method() string + SetHeader(md metadata.MD) error + SendHeader(md metadata.MD) error + SetTrailer(md metadata.MD) error +} + +// ServerTransportStreamFromContext returns the ServerTransportStream saved in +// ctx. Returns nil if the given context has no stream associated with it +// (which implies it is not an RPC invocation context). +// +// This API is EXPERIMENTAL. +func ServerTransportStreamFromContext(ctx context.Context) ServerTransportStream { + s, _ := ctx.Value(streamKey{}).(ServerTransportStream) + return s +} + // Stop stops the gRPC server. It immediately closes all open // connections and listeners. // It cancels all active RPCs on the server side and the corresponding // pending RPCs on the client side will get notified by connection // errors. func (s *Server) Stop() { - s.quitOnce.Do(func() { - close(s.quit) - }) + s.quit.Fire() defer func() { s.serveWG.Wait() - s.doneOnce.Do(func() { - close(s.done) - }) + s.done.Fire() }() + s.channelzRemoveOnce.Do(func() { + if channelz.IsOn() { + channelz.RemoveEntry(s.channelzID) + } + }) + s.mu.Lock() listeners := s.lis s.lis = nil @@ -1216,28 +1390,27 @@ func (s *Server) Stop() { // accepting new connections and RPCs and blocks until all the pending RPCs are // finished. func (s *Server) GracefulStop() { - s.quitOnce.Do(func() { - close(s.quit) - }) - - defer func() { - s.doneOnce.Do(func() { - close(s.done) - }) - }() + s.quit.Fire() + defer s.done.Fire() + s.channelzRemoveOnce.Do(func() { + if channelz.IsOn() { + channelz.RemoveEntry(s.channelzID) + } + }) s.mu.Lock() if s.conns == nil { s.mu.Unlock() return } + for lis := range s.lis { lis.Close() } s.lis = nil if !s.drain { - for c := range s.conns { - c.(transport.ServerTransport).Drain() + for st := range s.conns { + st.Drain() } s.drain = true } @@ -1259,12 +1432,6 @@ func (s *Server) GracefulStop() { s.mu.Unlock() } -func init() { - internal.TestingUseHandlerImpl = func(arg interface{}) { - arg.(*Server).opts.useHandlerImpl = true - } -} - // contentSubtype must be lowercase // cannot return nil func (s *Server) getCodec(contentSubtype string) baseCodec { @@ -1291,8 +1458,8 @@ func SetHeader(ctx context.Context, md metadata.MD) error { if md.Len() == 0 { return nil } - stream, ok := transport.StreamFromContext(ctx) - if !ok { + stream := ServerTransportStreamFromContext(ctx) + if stream == nil { return status.Errorf(codes.Internal, "grpc: failed to fetch the stream from the context %v", ctx) } return stream.SetHeader(md) @@ -1301,15 +1468,11 @@ func SetHeader(ctx context.Context, md metadata.MD) error { // SendHeader sends header metadata. It may be called at most once. // The provided md and headers set by SetHeader() will be sent. func SendHeader(ctx context.Context, md metadata.MD) error { - stream, ok := transport.StreamFromContext(ctx) - if !ok { + stream := ServerTransportStreamFromContext(ctx) + if stream == nil { return status.Errorf(codes.Internal, "grpc: failed to fetch the stream from the context %v", ctx) } - t := stream.ServerTransport() - if t == nil { - grpclog.Fatalf("grpc: SendHeader: %v has no ServerTransport to send header metadata.", stream) - } - if err := t.WriteHeader(stream, md); err != nil { + if err := stream.SendHeader(md); err != nil { return toRPCErr(err) } return nil @@ -1321,9 +1484,27 @@ func SetTrailer(ctx context.Context, md metadata.MD) error { if md.Len() == 0 { return nil } - stream, ok := transport.StreamFromContext(ctx) - if !ok { + stream := ServerTransportStreamFromContext(ctx) + if stream == nil { return status.Errorf(codes.Internal, "grpc: failed to fetch the stream from the context %v", ctx) } return stream.SetTrailer(md) } + +// Method returns the method string for the server context. The returned +// string is in the format of "/service/method". +func Method(ctx context.Context) (string, bool) { + s := ServerTransportStreamFromContext(ctx) + if s == nil { + return "", false + } + return s.Method(), true +} + +type channelzServer struct { + s *Server +} + +func (c *channelzServer) ChannelzMetric() *channelz.ServerInternalMetric { + return c.s.channelzMetric() +} diff --git a/vendor/google.golang.org/grpc/service_config.go b/vendor/google.golang.org/grpc/service_config.go index 53fa88f379..686ad7ba61 100644 --- a/vendor/google.golang.org/grpc/service_config.go +++ b/vendor/google.golang.org/grpc/service_config.go @@ -25,14 +25,19 @@ import ( "strings" "time" + "google.golang.org/grpc/balancer" + "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal" + "google.golang.org/grpc/serviceconfig" ) const maxInt = int(^uint(0) >> 1) // MethodConfig defines the configuration recommended by the service providers for a // particular method. -// DEPRECATED: Users should not use this struct. Service config should be received +// +// Deprecated: Users should not use this struct. Service config should be received // through name resolver, as specified here // https://github.com/grpc/grpc/blob/master/doc/service_config.md type MethodConfig struct { @@ -55,22 +60,123 @@ type MethodConfig struct { // MaxRespSize is the maximum allowed payload size for an individual response in a // stream (server->client) in bytes. MaxRespSize *int + // RetryPolicy configures retry options for the method. + retryPolicy *retryPolicy +} + +type lbConfig struct { + name string + cfg serviceconfig.LoadBalancingConfig } // ServiceConfig is provided by the service provider and contains parameters for how // clients that connect to the service should behave. -// DEPRECATED: Users should not use this struct. Service config should be received +// +// Deprecated: Users should not use this struct. Service config should be received // through name resolver, as specified here // https://github.com/grpc/grpc/blob/master/doc/service_config.md type ServiceConfig struct { - // LB is the load balancer the service providers recommends. The balancer specified - // via grpc.WithBalancer will override this. + serviceconfig.Config + + // LB is the load balancer the service providers recommends. The balancer + // specified via grpc.WithBalancer will override this. This is deprecated; + // lbConfigs is preferred. If lbConfig and LB are both present, lbConfig + // will be used. LB *string - // Methods contains a map for the methods in this service. - // If there is an exact match for a method (i.e. /service/method) in the map, use the corresponding MethodConfig. - // If there's no exact match, look for the default config for the service (/service/) and use the corresponding MethodConfig if it exists. - // Otherwise, the method has no MethodConfig to use. + + // lbConfig is the service config's load balancing configuration. If + // lbConfig and LB are both present, lbConfig will be used. + lbConfig *lbConfig + + // Methods contains a map for the methods in this service. If there is an + // exact match for a method (i.e. /service/method) in the map, use the + // corresponding MethodConfig. If there's no exact match, look for the + // default config for the service (/service/) and use the corresponding + // MethodConfig if it exists. Otherwise, the method has no MethodConfig to + // use. Methods map[string]MethodConfig + + // If a retryThrottlingPolicy is provided, gRPC will automatically throttle + // retry attempts and hedged RPCs when the client’s ratio of failures to + // successes exceeds a threshold. + // + // For each server name, the gRPC client will maintain a token_count which is + // initially set to maxTokens, and can take values between 0 and maxTokens. + // + // Every outgoing RPC (regardless of service or method invoked) will change + // token_count as follows: + // + // - Every failed RPC will decrement the token_count by 1. + // - Every successful RPC will increment the token_count by tokenRatio. + // + // If token_count is less than or equal to maxTokens / 2, then RPCs will not + // be retried and hedged RPCs will not be sent. + retryThrottling *retryThrottlingPolicy + // healthCheckConfig must be set as one of the requirement to enable LB channel + // health check. + healthCheckConfig *healthCheckConfig + // rawJSONString stores service config json string that get parsed into + // this service config struct. + rawJSONString string +} + +// healthCheckConfig defines the go-native version of the LB channel health check config. +type healthCheckConfig struct { + // serviceName is the service name to use in the health-checking request. + ServiceName string +} + +// retryPolicy defines the go-native version of the retry policy defined by the +// service config here: +// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#integration-with-service-config +type retryPolicy struct { + // MaxAttempts is the maximum number of attempts, including the original RPC. + // + // This field is required and must be two or greater. + maxAttempts int + + // Exponential backoff parameters. The initial retry attempt will occur at + // random(0, initialBackoffMS). In general, the nth attempt will occur at + // random(0, + // min(initialBackoffMS*backoffMultiplier**(n-1), maxBackoffMS)). + // + // These fields are required and must be greater than zero. + initialBackoff time.Duration + maxBackoff time.Duration + backoffMultiplier float64 + + // The set of status codes which may be retried. + // + // Status codes are specified as strings, e.g., "UNAVAILABLE". + // + // This field is required and must be non-empty. + // Note: a set is used to store this for easy lookup. + retryableStatusCodes map[codes.Code]bool +} + +type jsonRetryPolicy struct { + MaxAttempts int + InitialBackoff string + MaxBackoff string + BackoffMultiplier float64 + RetryableStatusCodes []codes.Code +} + +// retryThrottlingPolicy defines the go-native version of the retry throttling +// policy defined by the service config here: +// https://github.com/grpc/proposal/blob/master/A6-client-retries.md#integration-with-service-config +type retryThrottlingPolicy struct { + // The number of tokens starts at maxTokens. The token_count will always be + // between 0 and maxTokens. + // + // This field is required and must be greater than zero. + MaxTokens float64 + // The amount of tokens to add on each successful RPC. Typically this will + // be some number between 0 and 1, e.g., 0.1. + // + // This field is required and must be greater than zero. Up to 3 decimal + // places are supported. + TokenRatio float64 } func parseDuration(s *string) (*time.Duration, error) { @@ -140,29 +246,83 @@ type jsonMC struct { Timeout *string MaxRequestMessageBytes *int64 MaxResponseMessageBytes *int64 + RetryPolicy *jsonRetryPolicy } +type loadBalancingConfig map[string]json.RawMessage + // TODO(lyuxuan): delete this struct after cleaning up old service config implementation. type jsonSC struct { LoadBalancingPolicy *string + LoadBalancingConfig *[]loadBalancingConfig MethodConfig *[]jsonMC + RetryThrottling *retryThrottlingPolicy + HealthCheckConfig *healthCheckConfig +} + +func init() { + internal.ParseServiceConfig = func(sc string) (interface{}, error) { + return parseServiceConfig(sc) + } } -func parseServiceConfig(js string) (ServiceConfig, error) { +func parseServiceConfig(js string) (*ServiceConfig, error) { + if len(js) == 0 { + return nil, fmt.Errorf("no JSON service config provided") + } var rsc jsonSC err := json.Unmarshal([]byte(js), &rsc) if err != nil { grpclog.Warningf("grpc: parseServiceConfig error unmarshaling %s due to %v", js, err) - return ServiceConfig{}, err + return nil, err } sc := ServiceConfig{ - LB: rsc.LoadBalancingPolicy, - Methods: make(map[string]MethodConfig), + LB: rsc.LoadBalancingPolicy, + Methods: make(map[string]MethodConfig), + retryThrottling: rsc.RetryThrottling, + healthCheckConfig: rsc.HealthCheckConfig, + rawJSONString: js, } - if rsc.MethodConfig == nil { - return sc, nil + if rsc.LoadBalancingConfig != nil { + for i, lbcfg := range *rsc.LoadBalancingConfig { + if len(lbcfg) != 1 { + err := fmt.Errorf("invalid loadBalancingConfig: entry %v does not contain exactly 1 policy/config pair: %q", i, lbcfg) + grpclog.Warningf(err.Error()) + return nil, err + } + var name string + var jsonCfg json.RawMessage + for name, jsonCfg = range lbcfg { + } + builder := balancer.Get(name) + if builder == nil { + continue + } + sc.lbConfig = &lbConfig{name: name} + if parser, ok := builder.(balancer.ConfigParser); ok { + var err error + sc.lbConfig.cfg, err = parser.ParseConfig(jsonCfg) + if err != nil { + return nil, fmt.Errorf("error parsing loadBalancingConfig for policy %q: %v", name, err) + } + } else if string(jsonCfg) != "{}" { + grpclog.Warningf("non-empty balancer configuration %q, but balancer does not implement ParseConfig", string(jsonCfg)) + } + break + } + if sc.lbConfig == nil { + // We had a loadBalancingConfig field but did not encounter a + // supported policy. The config is considered invalid in this + // case. + err := fmt.Errorf("invalid loadBalancingConfig: no supported policies found") + grpclog.Warningf(err.Error()) + return nil, err + } } + if rsc.MethodConfig == nil { + return &sc, nil + } for _, m := range *rsc.MethodConfig { if m.Name == nil { continue @@ -170,13 +330,17 @@ func parseServiceConfig(js string) (ServiceConfig, error) { d, err := parseDuration(m.Timeout) if err != nil { grpclog.Warningf("grpc: parseServiceConfig error unmarshaling %s due to %v", js, err) - return ServiceConfig{}, err + return nil, err } mc := MethodConfig{ WaitForReady: m.WaitForReady, Timeout: d, } + if mc.retryPolicy, err = convertRetryPolicy(m.RetryPolicy); err != nil { + grpclog.Warningf("grpc: parseServiceConfig error unmarshaling %s due to %v", js, err) + return nil, err + } if m.MaxRequestMessageBytes != nil { if *m.MaxRequestMessageBytes > int64(maxInt) { mc.MaxReqSize = newInt(maxInt) @@ -198,7 +362,54 @@ func parseServiceConfig(js string) (ServiceConfig, error) { } } - return sc, nil + if sc.retryThrottling != nil { + if mt := sc.retryThrottling.MaxTokens; mt <= 0 || mt > 1000 { + return nil, fmt.Errorf("invalid retry throttling config: maxTokens (%v) out of range (0, 1000]", mt) + } + if tr := sc.retryThrottling.TokenRatio; tr <= 0 { + return nil, fmt.Errorf("invalid retry throttling config: tokenRatio (%v) may not be negative", tr) + } + } + return &sc, nil +} + +func convertRetryPolicy(jrp *jsonRetryPolicy) (p *retryPolicy, err error) { + if jrp == nil { + return nil, nil + } + ib, err := parseDuration(&jrp.InitialBackoff) + if err != nil { + return nil, err + } + mb, err := parseDuration(&jrp.MaxBackoff) + if err != nil { + return nil, err + } + + if jrp.MaxAttempts <= 1 || + *ib <= 0 || + *mb <= 0 || + jrp.BackoffMultiplier <= 0 || + len(jrp.RetryableStatusCodes) == 0 { + grpclog.Warningf("grpc: ignoring retry policy %v due to illegal configuration", jrp) + return nil, nil + } + + rp := &retryPolicy{ + maxAttempts: jrp.MaxAttempts, + initialBackoff: *ib, + maxBackoff: *mb, + backoffMultiplier: jrp.BackoffMultiplier, + retryableStatusCodes: make(map[codes.Code]bool), + } + if rp.maxAttempts > 5 { + // TODO(retry): Make the max maxAttempts configurable. + rp.maxAttempts = 5 + } + for _, code := range jrp.RetryableStatusCodes { + rp.retryableStatusCodes[code] = true + } + return rp, nil } func min(a, b *int) *int { diff --git a/vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go b/vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go new file mode 100644 index 0000000000..53b27875a1 --- /dev/null +++ b/vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go @@ -0,0 +1,48 @@ +/* + * + * Copyright 2019 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package serviceconfig defines types and methods for operating on gRPC +// service configs. +// +// This package is EXPERIMENTAL. +package serviceconfig + +import ( + "google.golang.org/grpc/internal" +) + +// Config represents an opaque data structure holding a service config. +type Config interface { + isConfig() +} + +// LoadBalancingConfig represents an opaque data structure holding a load +// balancer config. +type LoadBalancingConfig interface { + isLoadBalancingConfig() +} + +// Parse parses the JSON service config provided into an internal form or +// returns an error if the config is invalid. +func Parse(ServiceConfigJSON string) (Config, error) { + c, err := internal.ParseServiceConfig(ServiceConfigJSON) + if err != nil { + return nil, err + } + return c.(Config), err +} diff --git a/vendor/google.golang.org/grpc/stats/handlers.go b/vendor/google.golang.org/grpc/stats/handlers.go index 05b384c693..dc03731e45 100644 --- a/vendor/google.golang.org/grpc/stats/handlers.go +++ b/vendor/google.golang.org/grpc/stats/handlers.go @@ -19,9 +19,8 @@ package stats import ( + "context" "net" - - "golang.org/x/net/context" ) // ConnTagInfo defines the relevant information needed by connection context tagger. diff --git a/vendor/google.golang.org/grpc/stats/stats.go b/vendor/google.golang.org/grpc/stats/stats.go index 3f13190a0a..f3f593c844 100644 --- a/vendor/google.golang.org/grpc/stats/stats.go +++ b/vendor/google.golang.org/grpc/stats/stats.go @@ -24,10 +24,11 @@ package stats // import "google.golang.org/grpc/stats" import ( + "context" "net" "time" - "golang.org/x/net/context" + "google.golang.org/grpc/metadata" ) // RPCStats contains stats information about RPCs. @@ -173,6 +174,9 @@ type End struct { BeginTime time.Time // EndTime is the time when the RPC ends. EndTime time.Time + // Trailer contains the trailer metadata received from the server. This + // field is only valid if this End is from the client side. + Trailer metadata.MD // Error is the error the RPC ended with. It is an error generated from // status.Status and can be converted back to status.Status using // status.FromError if non-nil. diff --git a/vendor/google.golang.org/grpc/status/status.go b/vendor/google.golang.org/grpc/status/status.go index 3a42dc6de0..a1348e9b16 100644 --- a/vendor/google.golang.org/grpc/status/status.go +++ b/vendor/google.golang.org/grpc/status/status.go @@ -28,6 +28,7 @@ package status import ( + "context" "errors" "fmt" @@ -35,8 +36,15 @@ import ( "github.com/golang/protobuf/ptypes" spb "google.golang.org/genproto/googleapis/rpc/status" "google.golang.org/grpc/codes" + "google.golang.org/grpc/internal" ) +func init() { + internal.StatusRawProto = statusRawProto +} + +func statusRawProto(s *Status) *spb.Status { return s.s } + // statusError is an alias of a status proto. It implements error and Status, // and a nil statusError should never be returned by this package. type statusError spb.Status @@ -46,10 +54,21 @@ func (se *statusError) Error() string { return fmt.Sprintf("rpc error: code = %s desc = %s", codes.Code(p.GetCode()), p.GetMessage()) } -func (se *statusError) status() *Status { +func (se *statusError) GRPCStatus() *Status { return &Status{s: (*spb.Status)(se)} } +// Is implements future error.Is functionality. +// A statusError is equivalent if the code and message are identical. +func (se *statusError) Is(target error) bool { + tse, ok := target.(*statusError) + if !ok { + return false + } + + return proto.Equal((*spb.Status)(se), (*spb.Status)(tse)) +} + // Status represents an RPC status code, message, and details. It is immutable // and should be created with New, Newf, or FromProto. type Status struct { @@ -120,14 +139,16 @@ func FromProto(s *spb.Status) *Status { } // FromError returns a Status representing err if it was produced from this -// package. Otherwise, ok is false and a Status is returned with codes.Unknown -// and the original error message. +// package or has a method `GRPCStatus() *Status`. Otherwise, ok is false and a +// Status is returned with codes.Unknown and the original error message. func FromError(err error) (s *Status, ok bool) { if err == nil { - return &Status{s: &spb.Status{Code: int32(codes.OK)}}, true + return nil, true } - if se, ok := err.(*statusError); ok { - return se.status(), true + if se, ok := err.(interface { + GRPCStatus() *Status + }); ok { + return se.GRPCStatus(), true } return New(codes.Unknown, err.Error()), false } @@ -182,8 +203,26 @@ func Code(err error) codes.Code { if err == nil { return codes.OK } - if se, ok := err.(*statusError); ok { - return se.status().Code() + if se, ok := err.(interface { + GRPCStatus() *Status + }); ok { + return se.GRPCStatus().Code() } return codes.Unknown } + +// FromContextError converts a context error into a Status. It returns a +// Status with codes.OK if err is nil, or a Status with codes.Unknown if err is +// non-nil and not a context error. +func FromContextError(err error) *Status { + switch err { + case nil: + return nil + case context.DeadlineExceeded: + return New(codes.DeadlineExceeded, err.Error()) + case context.Canceled: + return New(codes.Canceled, err.Error()) + default: + return New(codes.Unknown, err.Error()) + } +} diff --git a/vendor/google.golang.org/grpc/stream.go b/vendor/google.golang.org/grpc/stream.go index 34d7414f91..134a624a15 100644 --- a/vendor/google.golang.org/grpc/stream.go +++ b/vendor/google.golang.org/grpc/stream.go @@ -19,20 +19,28 @@ package grpc import ( + "context" "errors" "io" + "math" + "strconv" "sync" "time" - "golang.org/x/net/context" "golang.org/x/net/trace" "google.golang.org/grpc/balancer" "google.golang.org/grpc/codes" "google.golang.org/grpc/encoding" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal/balancerload" + "google.golang.org/grpc/internal/binarylog" + "google.golang.org/grpc/internal/channelz" + "google.golang.org/grpc/internal/grpcrand" + "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/metadata" + "google.golang.org/grpc/peer" "google.golang.org/grpc/stats" "google.golang.org/grpc/status" - "google.golang.org/grpc/transport" ) // StreamHandler defines the handler called by gRPC server to complete the @@ -54,31 +62,20 @@ type StreamDesc struct { // Stream defines the common interface a client or server stream has to satisfy. // -// All errors returned from Stream are compatible with the status package. +// Deprecated: See ClientStream and ServerStream documentation instead. type Stream interface { - // Context returns the context for this stream. + // Deprecated: See ClientStream and ServerStream documentation instead. Context() context.Context - // SendMsg blocks until it sends m, the stream is done or the stream - // breaks. - // On error, it aborts the stream and returns an RPC status on client - // side. On server side, it simply returns the error to the caller. - // SendMsg is called by generated code. Also Users can call SendMsg - // directly when it is really needed in their use cases. - // It's safe to have a goroutine calling SendMsg and another goroutine calling - // recvMsg on the same stream at the same time. - // But it is not safe to call SendMsg on the same stream in different goroutines. + // Deprecated: See ClientStream and ServerStream documentation instead. SendMsg(m interface{}) error - // RecvMsg blocks until it receives a message or the stream is - // done. On client side, it returns io.EOF when the stream is done. On - // any other error, it aborts the stream and returns an RPC status. On - // server side, it simply returns the error to the caller. - // It's safe to have a goroutine calling SendMsg and another goroutine calling - // recvMsg on the same stream at the same time. - // But it is not safe to call RecvMsg on the same stream in different goroutines. + // Deprecated: See ClientStream and ServerStream documentation instead. RecvMsg(m interface{}) error } -// ClientStream defines the interface a client stream has to satisfy. +// ClientStream defines the client-side behavior of a streaming RPC. +// +// All errors returned from ClientStream methods are compatible with the +// status package. type ClientStream interface { // Header returns the header metadata received from the server if there // is any. It blocks if the metadata is not ready to read. @@ -88,23 +85,64 @@ type ClientStream interface { // stream.Recv has returned a non-nil error (including io.EOF). Trailer() metadata.MD // CloseSend closes the send direction of the stream. It closes the stream - // when non-nil error is met. + // when non-nil error is met. It is also not safe to call CloseSend + // concurrently with SendMsg. CloseSend() error - // Stream.SendMsg() may return a non-nil error when something wrong happens sending - // the request. The returned error indicates the status of this sending, not the final - // status of the RPC. + // Context returns the context for this stream. + // + // It should not be called until after Header or RecvMsg has returned. Once + // called, subsequent client-side retries are disabled. + Context() context.Context + // SendMsg is generally called by generated code. On error, SendMsg aborts + // the stream. If the error was generated by the client, the status is + // returned directly; otherwise, io.EOF is returned and the status of + // the stream may be discovered using RecvMsg. + // + // SendMsg blocks until: + // - There is sufficient flow control to schedule m with the transport, or + // - The stream is done, or + // - The stream breaks. // - // Always call Stream.RecvMsg() to drain the stream and get the final - // status, otherwise there could be leaked resources. - Stream + // SendMsg does not wait until the message is received by the server. An + // untimely stream closure may result in lost messages. To ensure delivery, + // users should ensure the RPC completed successfully using RecvMsg. + // + // It is safe to have a goroutine calling SendMsg and another goroutine + // calling RecvMsg on the same stream at the same time, but it is not safe + // to call SendMsg on the same stream in different goroutines. It is also + // not safe to call CloseSend concurrently with SendMsg. + SendMsg(m interface{}) error + // RecvMsg blocks until it receives a message into m or the stream is + // done. It returns io.EOF when the stream completes successfully. On + // any other error, the stream is aborted and the error contains the RPC + // status. + // + // It is safe to have a goroutine calling SendMsg and another goroutine + // calling RecvMsg on the same stream at the same time, but it is not + // safe to call RecvMsg on the same stream in different goroutines. + RecvMsg(m interface{}) error } // NewStream creates a new Stream for the client side. This is typically -// called by generated code. +// called by generated code. ctx is used for the lifetime of the stream. +// +// To ensure resources are not leaked due to the stream returned, one of the following +// actions must be performed: +// +// 1. Call Close on the ClientConn. +// 2. Cancel the context provided. +// 3. Call RecvMsg until a non-nil error is returned. A protobuf-generated +// client-streaming RPC, for instance, might use the helper function +// CloseAndRecv (note that CloseSend does not Recv, therefore is not +// guaranteed to release all resources). +// 4. Receive a non-nil, non-io.EOF error from Header or SendMsg. +// +// If none of the above happen, a goroutine and a context will be leaked, and grpc +// will not call the optionally-configured stats handler with a stats.End message. func (cc *ClientConn) NewStream(ctx context.Context, desc *StreamDesc, method string, opts ...CallOption) (ClientStream, error) { // allow interceptor to see all applicable call options, which means those // configured as defaults from dial option as well as per-call options - opts = append(cc.dopts.callOptions, opts...) + opts = combine(cc.dopts.callOptions, opts) if cc.dopts.streamInt != nil { return cc.dopts.streamInt(ctx, desc, cc, method, newClientStream, opts...) @@ -112,16 +150,26 @@ func (cc *ClientConn) NewStream(ctx context.Context, desc *StreamDesc, method st return newClientStream(ctx, desc, cc, method, opts...) } -// NewClientStream creates a new Stream for the client side. This is typically -// called by generated code. -// -// DEPRECATED: Use ClientConn.NewStream instead. +// NewClientStream is a wrapper for ClientConn.NewStream. func NewClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (ClientStream, error) { return cc.NewStream(ctx, desc, method, opts...) } func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, method string, opts ...CallOption) (_ ClientStream, err error) { + if channelz.IsOn() { + cc.incrCallsStarted() + defer func() { + if err != nil { + cc.incrCallsFailed() + } + }() + } c := defaultCallInfo() + // Provide an opportunity for the first RPC to see the first service config + // provided by the resolver. + if err := cc.waitForResolvedAddrs(ctx); err != nil { + return nil, err + } mc := cc.GetMethodConfig(method) if mc.WaitForReady != nil { c.failFast = !*mc.WaitForReady @@ -156,13 +204,8 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth } callHdr := &transport.CallHdr{ - Host: cc.authority, - Method: method, - // If it's not client streaming, we should already have the request to be sent, - // so we don't flush the header. - // If it's client streaming, the user may never send a request or send it any - // time soon, so we ask the transport to flush the header. - Flush: desc.ClientStreams, + Host: cc.authority, + Method: method, ContentSubtype: c.contentSubtype, } @@ -187,26 +230,21 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth if c.creds != nil { callHdr.Creds = c.creds } - var trInfo traceInfo + var trInfo *traceInfo if EnableTracing { - trInfo.tr = trace.New("grpc.Sent."+methodFamily(method), method) - trInfo.firstLine.client = true + trInfo = &traceInfo{ + tr: trace.New("grpc.Sent."+methodFamily(method), method), + firstLine: firstLine{ + client: true, + }, + } if deadline, ok := ctx.Deadline(); ok { - trInfo.firstLine.deadline = deadline.Sub(time.Now()) + trInfo.firstLine.deadline = time.Until(deadline) } trInfo.tr.LazyLog(&trInfo.firstLine, false) ctx = trace.NewContext(ctx, trInfo.tr) - defer func() { - if err != nil { - // Need to call tr.finish() if error is returned. - // Because tr will not be returned to caller. - trInfo.tr.LazyPrintf("RPC: [%v]", err) - trInfo.tr.SetError() - trInfo.tr.Finish() - } - }() } - ctx = newContextWithRPCInfo(ctx, c.failFast) + ctx = newContextWithRPCInfo(ctx, c.failFast, c.codec, cp, comp) sh := cc.dopts.copts.StatsHandler var beginTime time.Time if sh != nil { @@ -218,79 +256,59 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth FailFast: c.failFast, } sh.HandleRPC(ctx, begin) - defer func() { - if err != nil { - // Only handle end stats if err != nil. - end := &stats.End{ - Client: true, - Error: err, - BeginTime: beginTime, - EndTime: time.Now(), - } - sh.HandleRPC(ctx, end) - } - }() } - var ( - t transport.ClientTransport - s *transport.Stream - done func(balancer.DoneInfo) - ) - for { - // Check to make sure the context has expired. This will prevent us from - // looping forever if an error occurs for wait-for-ready RPCs where no data - // is sent on the wire. - select { - case <-ctx.Done(): - return nil, toRPCErr(ctx.Err()) - default: - } + cs := &clientStream{ + callHdr: callHdr, + ctx: ctx, + methodConfig: &mc, + opts: opts, + callInfo: c, + cc: cc, + desc: desc, + codec: c.codec, + cp: cp, + comp: comp, + cancel: cancel, + beginTime: beginTime, + firstAttempt: true, + } + if !cc.dopts.disableRetry { + cs.retryThrottler = cc.retryThrottler.Load().(*retryThrottler) + } + cs.binlog = binarylog.GetMethodLogger(method) - t, done, err = cc.getTransport(ctx, c.failFast) - if err != nil { - return nil, err - } + cs.callInfo.stream = cs + // Only this initial attempt has stats/tracing. + // TODO(dfawley): move to newAttempt when per-attempt stats are implemented. + if err := cs.newAttemptLocked(sh, trInfo); err != nil { + cs.finish(err) + return nil, err + } - s, err = t.NewStream(ctx, callHdr) - if err != nil { - if done != nil { - done(balancer.DoneInfo{Err: err}) - done = nil - } - // In the event of any error from NewStream, we never attempted to write - // anything to the wire, so we can retry indefinitely for non-fail-fast - // RPCs. - if !c.failFast { - continue + op := func(a *csAttempt) error { return a.newStream() } + if err := cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) }); err != nil { + cs.finish(err) + return nil, err + } + + if cs.binlog != nil { + md, _ := metadata.FromOutgoingContext(ctx) + logEntry := &binarylog.ClientHeader{ + OnClientSide: true, + Header: md, + MethodName: method, + Authority: cs.cc.authority, + } + if deadline, ok := ctx.Deadline(); ok { + logEntry.Timeout = time.Until(deadline) + if logEntry.Timeout < 0 { + logEntry.Timeout = 0 } - return nil, toRPCErr(err) } - break + cs.binlog.Log(logEntry) } - cs := &clientStream{ - opts: opts, - c: c, - desc: desc, - codec: c.codec, - cp: cp, - comp: comp, - cancel: cancel, - attempt: &csAttempt{ - t: t, - s: s, - p: &parser{r: s}, - done: done, - dc: cc.dopts.dc, - ctx: ctx, - trInfo: trInfo, - statsHandler: sh, - beginTime: beginTime, - }, - } - cs.c.stream = cs - cs.attempt.cs = cs if desc != unaryStreamDesc { // Listen on cc and stream contexts to cleanup when the user closes the // ClientConn or cancels the stream context. In all other cases, an error @@ -309,11 +327,59 @@ func newClientStream(ctx context.Context, desc *StreamDesc, cc *ClientConn, meth return cs, nil } +// newAttemptLocked creates a new attempt with a transport. +// If it succeeds, then it replaces clientStream's attempt with this new attempt. +func (cs *clientStream) newAttemptLocked(sh stats.Handler, trInfo *traceInfo) (retErr error) { + newAttempt := &csAttempt{ + cs: cs, + dc: cs.cc.dopts.dc, + statsHandler: sh, + trInfo: trInfo, + } + defer func() { + if retErr != nil { + // This attempt is not set in the clientStream, so it's finish won't + // be called. Call it here for stats and trace in case they are not + // nil. + newAttempt.finish(retErr) + } + }() + + if err := cs.ctx.Err(); err != nil { + return toRPCErr(err) + } + t, done, err := cs.cc.getTransport(cs.ctx, cs.callInfo.failFast, cs.callHdr.Method) + if err != nil { + return err + } + if trInfo != nil { + trInfo.firstLine.SetRemoteAddr(t.RemoteAddr()) + } + newAttempt.t = t + newAttempt.done = done + cs.attempt = newAttempt + return nil +} + +func (a *csAttempt) newStream() error { + cs := a.cs + cs.callHdr.PreviousAttempts = cs.numRetries + s, err := a.t.NewStream(cs.ctx, cs.callHdr) + if err != nil { + return toRPCErr(err) + } + cs.attempt.s = s + cs.attempt.p = &parser{r: s} + return nil +} + // clientStream implements a client side Stream. type clientStream struct { - opts []CallOption - c *callInfo - desc *StreamDesc + callHdr *transport.CallHdr + opts []CallOption + callInfo *callInfo + cc *ClientConn + desc *StreamDesc codec baseCodec cp Compressor @@ -321,13 +387,41 @@ type clientStream struct { cancel context.CancelFunc // cancels all attempts - sentLast bool // sent an end stream + sentLast bool // sent an end stream + beginTime time.Time + + methodConfig *MethodConfig + + ctx context.Context // the application's context, wrapped by stats/tracing + + retryThrottler *retryThrottler // The throttler active when the RPC began. - mu sync.Mutex // guards finished - finished bool // TODO: replace with atomic cmpxchg or sync.Once? + binlog *binarylog.MethodLogger // Binary logger, can be nil. + // serverHeaderBinlogged is a boolean for whether server header has been + // logged. Server header will be logged when the first time one of those + // happens: stream.Header(), stream.Recv(). + // + // It's only read and used by Recv() and Header(), so it doesn't need to be + // synchronized. + serverHeaderBinlogged bool - attempt *csAttempt // the active client stream attempt + mu sync.Mutex + firstAttempt bool // if true, transparent retry is valid + numRetries int // exclusive of transparent retry attempt(s) + numRetriesSincePushback int // retries since pushback; to reset backoff + finished bool // TODO: replace with atomic cmpxchg or sync.Once? + // attempt is the active client stream attempt. + // The only place where it is written is the newAttemptLocked method and this method never writes nil. + // So, attempt can be nil only inside newClientStream function when clientStream is first created. + // One of the first things done after clientStream's creation, is to call newAttemptLocked which either + // assigns a non nil value to the attempt or returns an error. If an error is returned from newAttemptLocked, + // then newClientStream calls finish on the clientStream and returns. So, finish method is the only + // place where we need to check if the attempt is nil. + attempt *csAttempt // TODO(hedging): hedging will have multiple attempts simultaneously. + committed bool // active attempt committed for retry? + buffer []func(a *csAttempt) error // operations to replay on retry + bufferSize int // current size of buffer } // csAttempt implements a single transport stream attempt within a @@ -339,53 +433,358 @@ type csAttempt struct { p *parser done func(balancer.DoneInfo) + finished bool dc Decompressor decomp encoding.Compressor decompSet bool - ctx context.Context // the application's context, wrapped by stats/tracing - mu sync.Mutex // guards trInfo.tr + // trInfo may be nil (if EnableTracing is false). // trInfo.tr is set when created (if EnableTracing is true), // and cleared when the finish method is called. - trInfo traceInfo + trInfo *traceInfo statsHandler stats.Handler - beginTime time.Time +} + +func (cs *clientStream) commitAttemptLocked() { + cs.committed = true + cs.buffer = nil +} + +func (cs *clientStream) commitAttempt() { + cs.mu.Lock() + cs.commitAttemptLocked() + cs.mu.Unlock() +} + +// shouldRetry returns nil if the RPC should be retried; otherwise it returns +// the error that should be returned by the operation. +func (cs *clientStream) shouldRetry(err error) error { + if cs.attempt.s == nil && !cs.callInfo.failFast { + // In the event of any error from NewStream (attempt.s == nil), we + // never attempted to write anything to the wire, so we can retry + // indefinitely for non-fail-fast RPCs. + return nil + } + if cs.finished || cs.committed { + // RPC is finished or committed; cannot retry. + return err + } + // Wait for the trailers. + if cs.attempt.s != nil { + <-cs.attempt.s.Done() + } + if cs.firstAttempt && (cs.attempt.s == nil || cs.attempt.s.Unprocessed()) { + // First attempt, stream unprocessed: transparently retry. + cs.firstAttempt = false + return nil + } + cs.firstAttempt = false + if cs.cc.dopts.disableRetry { + return err + } + + pushback := 0 + hasPushback := false + if cs.attempt.s != nil { + if to, toErr := cs.attempt.s.TrailersOnly(); toErr != nil || !to { + return err + } + + // TODO(retry): Move down if the spec changes to not check server pushback + // before considering this a failure for throttling. + sps := cs.attempt.s.Trailer()["grpc-retry-pushback-ms"] + if len(sps) == 1 { + var e error + if pushback, e = strconv.Atoi(sps[0]); e != nil || pushback < 0 { + grpclog.Infof("Server retry pushback specified to abort (%q).", sps[0]) + cs.retryThrottler.throttle() // This counts as a failure for throttling. + return err + } + hasPushback = true + } else if len(sps) > 1 { + grpclog.Warningf("Server retry pushback specified multiple values (%q); not retrying.", sps) + cs.retryThrottler.throttle() // This counts as a failure for throttling. + return err + } + } + + var code codes.Code + if cs.attempt.s != nil { + code = cs.attempt.s.Status().Code() + } else { + code = status.Convert(err).Code() + } + + rp := cs.methodConfig.retryPolicy + if rp == nil || !rp.retryableStatusCodes[code] { + return err + } + + // Note: the ordering here is important; we count this as a failure + // only if the code matched a retryable code. + if cs.retryThrottler.throttle() { + return err + } + if cs.numRetries+1 >= rp.maxAttempts { + return err + } + + var dur time.Duration + if hasPushback { + dur = time.Millisecond * time.Duration(pushback) + cs.numRetriesSincePushback = 0 + } else { + fact := math.Pow(rp.backoffMultiplier, float64(cs.numRetriesSincePushback)) + cur := float64(rp.initialBackoff) * fact + if max := float64(rp.maxBackoff); cur > max { + cur = max + } + dur = time.Duration(grpcrand.Int63n(int64(cur))) + cs.numRetriesSincePushback++ + } + + // TODO(dfawley): we could eagerly fail here if dur puts us past the + // deadline, but unsure if it is worth doing. + t := time.NewTimer(dur) + select { + case <-t.C: + cs.numRetries++ + return nil + case <-cs.ctx.Done(): + t.Stop() + return status.FromContextError(cs.ctx.Err()).Err() + } +} + +// Returns nil if a retry was performed and succeeded; error otherwise. +func (cs *clientStream) retryLocked(lastErr error) error { + for { + cs.attempt.finish(lastErr) + if err := cs.shouldRetry(lastErr); err != nil { + cs.commitAttemptLocked() + return err + } + if err := cs.newAttemptLocked(nil, nil); err != nil { + return err + } + if lastErr = cs.replayBufferLocked(); lastErr == nil { + return nil + } + } } func (cs *clientStream) Context() context.Context { - // TODO(retry): commit the current attempt (the context has peer-aware data). - return cs.attempt.context() + cs.commitAttempt() + // No need to lock before using attempt, since we know it is committed and + // cannot change. + return cs.attempt.s.Context() +} + +func (cs *clientStream) withRetry(op func(a *csAttempt) error, onSuccess func()) error { + cs.mu.Lock() + for { + if cs.committed { + cs.mu.Unlock() + return op(cs.attempt) + } + a := cs.attempt + cs.mu.Unlock() + err := op(a) + cs.mu.Lock() + if a != cs.attempt { + // We started another attempt already. + continue + } + if err == io.EOF { + <-a.s.Done() + } + if err == nil || (err == io.EOF && a.s.Status().Code() == codes.OK) { + onSuccess() + cs.mu.Unlock() + return err + } + if err := cs.retryLocked(err); err != nil { + cs.mu.Unlock() + return err + } + } } func (cs *clientStream) Header() (metadata.MD, error) { - m, err := cs.attempt.header() + var m metadata.MD + err := cs.withRetry(func(a *csAttempt) error { + var err error + m, err = a.s.Header() + return toRPCErr(err) + }, cs.commitAttemptLocked) if err != nil { - // TODO(retry): maybe retry on error or commit attempt on success. - err = toRPCErr(err) cs.finish(err) + return nil, err + } + if cs.binlog != nil && !cs.serverHeaderBinlogged { + // Only log if binary log is on and header has not been logged. + logEntry := &binarylog.ServerHeader{ + OnClientSide: true, + Header: m, + PeerAddr: nil, + } + if peer, ok := peer.FromContext(cs.Context()); ok { + logEntry.PeerAddr = peer.Addr + } + cs.binlog.Log(logEntry) + cs.serverHeaderBinlogged = true } return m, err } func (cs *clientStream) Trailer() metadata.MD { - // TODO(retry): on error, maybe retry (trailers-only). - return cs.attempt.trailer() + // On RPC failure, we never need to retry, because usage requires that + // RecvMsg() returned a non-nil error before calling this function is valid. + // We would have retried earlier if necessary. + // + // Commit the attempt anyway, just in case users are not following those + // directions -- it will prevent races and should not meaningfully impact + // performance. + cs.commitAttempt() + if cs.attempt.s == nil { + return nil + } + return cs.attempt.s.Trailer() +} + +func (cs *clientStream) replayBufferLocked() error { + a := cs.attempt + for _, f := range cs.buffer { + if err := f(a); err != nil { + return err + } + } + return nil +} + +func (cs *clientStream) bufferForRetryLocked(sz int, op func(a *csAttempt) error) { + // Note: we still will buffer if retry is disabled (for transparent retries). + if cs.committed { + return + } + cs.bufferSize += sz + if cs.bufferSize > cs.callInfo.maxRetryRPCBufferSize { + cs.commitAttemptLocked() + return + } + cs.buffer = append(cs.buffer, op) } func (cs *clientStream) SendMsg(m interface{}) (err error) { - // TODO(retry): buffer message for replaying if not committed. - return cs.attempt.sendMsg(m) + defer func() { + if err != nil && err != io.EOF { + // Call finish on the client stream for errors generated by this SendMsg + // call, as these indicate problems created by this client. (Transport + // errors are converted to an io.EOF error in csAttempt.sendMsg; the real + // error will be returned from RecvMsg eventually in that case, or be + // retried.) + cs.finish(err) + } + }() + if cs.sentLast { + return status.Errorf(codes.Internal, "SendMsg called after CloseSend") + } + if !cs.desc.ClientStreams { + cs.sentLast = true + } + + // load hdr, payload, data + hdr, payload, data, err := prepareMsg(m, cs.codec, cs.cp, cs.comp) + if err != nil { + return err + } + + // TODO(dfawley): should we be checking len(data) instead? + if len(payload) > *cs.callInfo.maxSendMessageSize { + return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payload), *cs.callInfo.maxSendMessageSize) + } + msgBytes := data // Store the pointer before setting to nil. For binary logging. + op := func(a *csAttempt) error { + err := a.sendMsg(m, hdr, payload, data) + // nil out the message and uncomp when replaying; they are only needed for + // stats which is disabled for subsequent attempts. + m, data = nil, nil + return err + } + err = cs.withRetry(op, func() { cs.bufferForRetryLocked(len(hdr)+len(payload), op) }) + if cs.binlog != nil && err == nil { + cs.binlog.Log(&binarylog.ClientMessage{ + OnClientSide: true, + Message: msgBytes, + }) + } + return } -func (cs *clientStream) RecvMsg(m interface{}) (err error) { - // TODO(retry): maybe retry on error or commit attempt on success. - return cs.attempt.recvMsg(m) +func (cs *clientStream) RecvMsg(m interface{}) error { + if cs.binlog != nil && !cs.serverHeaderBinlogged { + // Call Header() to binary log header if it's not already logged. + cs.Header() + } + var recvInfo *payloadInfo + if cs.binlog != nil { + recvInfo = &payloadInfo{} + } + err := cs.withRetry(func(a *csAttempt) error { + return a.recvMsg(m, recvInfo) + }, cs.commitAttemptLocked) + if cs.binlog != nil && err == nil { + cs.binlog.Log(&binarylog.ServerMessage{ + OnClientSide: true, + Message: recvInfo.uncompressedBytes, + }) + } + if err != nil || !cs.desc.ServerStreams { + // err != nil or non-server-streaming indicates end of stream. + cs.finish(err) + + if cs.binlog != nil { + // finish will not log Trailer. Log Trailer here. + logEntry := &binarylog.ServerTrailer{ + OnClientSide: true, + Trailer: cs.Trailer(), + Err: err, + } + if logEntry.Err == io.EOF { + logEntry.Err = nil + } + if peer, ok := peer.FromContext(cs.Context()); ok { + logEntry.PeerAddr = peer.Addr + } + cs.binlog.Log(logEntry) + } + } + return err } func (cs *clientStream) CloseSend() error { - cs.attempt.closeSend() + if cs.sentLast { + // TODO: return an error and finish the stream instead, due to API misuse? + return nil + } + cs.sentLast = true + op := func(a *csAttempt) error { + a.t.Write(a.s, nil, nil, &transport.Options{Last: true}) + // Always return nil; io.EOF is the only error that might make sense + // instead, but there is no need to signal the client to call RecvMsg + // as the only use left for the stream after CloseSend is to call + // RecvMsg. This also matches historical behavior. + return nil + } + cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) }) + if cs.binlog != nil { + cs.binlog.Log(&binarylog.ClientHalfClose{ + OnClientSide: true, + }) + } + // We never returned an error here for reasons. return nil } @@ -400,95 +799,73 @@ func (cs *clientStream) finish(err error) { return } cs.finished = true + cs.commitAttemptLocked() cs.mu.Unlock() - // TODO(retry): commit current attempt if necessary. - cs.attempt.finish(err) - for _, o := range cs.opts { - o.after(cs.c) + // For binary logging. only log cancel in finish (could be caused by RPC ctx + // canceled or ClientConn closed). Trailer will be logged in RecvMsg. + // + // Only one of cancel or trailer needs to be logged. In the cases where + // users don't call RecvMsg, users must have already canceled the RPC. + if cs.binlog != nil && status.Code(err) == codes.Canceled { + cs.binlog.Log(&binarylog.Cancel{ + OnClientSide: true, + }) + } + if err == nil { + cs.retryThrottler.successfulRPC() + } + if channelz.IsOn() { + if err != nil { + cs.cc.incrCallsFailed() + } else { + cs.cc.incrCallsSucceeded() + } + } + if cs.attempt != nil { + cs.attempt.finish(err) + // after functions all rely upon having a stream. + if cs.attempt.s != nil { + for _, o := range cs.opts { + o.after(cs.callInfo) + } + } } cs.cancel() } -func (a *csAttempt) context() context.Context { - return a.s.Context() -} - -func (a *csAttempt) header() (metadata.MD, error) { - return a.s.Header() -} - -func (a *csAttempt) trailer() metadata.MD { - return a.s.Trailer() -} - -func (a *csAttempt) sendMsg(m interface{}) (err error) { - // TODO Investigate how to signal the stats handling party. - // generate error stats if err != nil && err != io.EOF? +func (a *csAttempt) sendMsg(m interface{}, hdr, payld, data []byte) error { cs := a.cs - defer func() { - // For non-client-streaming RPCs, we return nil instead of EOF on success - // because the generated code requires it. finish is not called; RecvMsg() - // will call it with the stream's status independently. - if err == io.EOF && !cs.desc.ClientStreams { - err = nil - } - if err != nil && err != io.EOF { - // Call finish on the client stream for errors generated by this SendMsg - // call, as these indicate problems created by this client. (Transport - // errors are converted to an io.EOF error below; the real error will be - // returned from RecvMsg eventually in that case, or be retried.) - cs.finish(err) - } - }() - // TODO: Check cs.sentLast and error if we already ended the stream. - if EnableTracing { + if a.trInfo != nil { a.mu.Lock() if a.trInfo.tr != nil { a.trInfo.tr.LazyLog(&payload{sent: true, msg: m}, true) } a.mu.Unlock() } - var outPayload *stats.OutPayload - if a.statsHandler != nil { - outPayload = &stats.OutPayload{ - Client: true, + if err := a.t.Write(a.s, hdr, payld, &transport.Options{Last: !cs.desc.ClientStreams}); err != nil { + if !cs.desc.ClientStreams { + // For non-client-streaming RPCs, we return nil instead of EOF on error + // because the generated code requires it. finish is not called; RecvMsg() + // will call it with the stream's status independently. + return nil } + return io.EOF } - hdr, data, err := encode(cs.codec, m, cs.cp, outPayload, cs.comp) - if err != nil { - return err - } - if len(data) > *cs.c.maxSendMessageSize { - return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(data), *cs.c.maxSendMessageSize) + if a.statsHandler != nil { + a.statsHandler.HandleRPC(cs.ctx, outPayload(true, m, data, payld, time.Now())) } - if !cs.desc.ClientStreams { - cs.sentLast = true + if channelz.IsOn() { + a.t.IncrMsgSent() } - err = a.t.Write(a.s, hdr, data, &transport.Options{Last: !cs.desc.ClientStreams}) - if err == nil { - if outPayload != nil { - outPayload.SentTime = time.Now() - a.statsHandler.HandleRPC(a.ctx, outPayload) - } - return nil - } - return io.EOF + return nil } -func (a *csAttempt) recvMsg(m interface{}) (err error) { +func (a *csAttempt) recvMsg(m interface{}, payInfo *payloadInfo) (err error) { cs := a.cs - defer func() { - if err != nil || !cs.desc.ServerStreams { - // err != nil or non-server-streaming indicates end of stream. - cs.finish(err) - } - }() - var inPayload *stats.InPayload - if a.statsHandler != nil { - inPayload = &stats.InPayload{ - Client: true, - } + if a.statsHandler != nil && payInfo == nil { + payInfo = &payloadInfo{} } + if !a.decompSet { // Block until we receive headers containing received message encoding. if ct := a.s.RecvCompress(); ct != "" && ct != encoding.Identity { @@ -505,7 +882,7 @@ func (a *csAttempt) recvMsg(m interface{}) (err error) { // Only initialize this state once per stream. a.decompSet = true } - err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.c.maxReceiveMessageSize, inPayload, a.decomp) + err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decomp) if err != nil { if err == io.EOF { if statusErr := a.s.Status().Err(); statusErr != nil { @@ -515,24 +892,34 @@ func (a *csAttempt) recvMsg(m interface{}) (err error) { } return toRPCErr(err) } - if EnableTracing { + if a.trInfo != nil { a.mu.Lock() if a.trInfo.tr != nil { a.trInfo.tr.LazyLog(&payload{sent: false, msg: m}, true) } a.mu.Unlock() } - if inPayload != nil { - a.statsHandler.HandleRPC(a.ctx, inPayload) + if a.statsHandler != nil { + a.statsHandler.HandleRPC(cs.ctx, &stats.InPayload{ + Client: true, + RecvTime: time.Now(), + Payload: m, + // TODO truncate large payload. + Data: payInfo.uncompressedBytes, + WireLength: payInfo.wireLength, + Length: len(payInfo.uncompressedBytes), + }) + } + if channelz.IsOn() { + a.t.IncrMsgRecv() } if cs.desc.ServerStreams { // Subsequent messages should be received by subsequent RecvMsg calls. return nil } - // Special handling for non-server-stream rpcs. // This recv expects EOF or errors, so we don't collect inPayload. - err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.c.maxReceiveMessageSize, nil, a.decomp) + err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decomp) if err == nil { return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want ")) } @@ -542,39 +929,47 @@ func (a *csAttempt) recvMsg(m interface{}) (err error) { return toRPCErr(err) } -func (a *csAttempt) closeSend() { - cs := a.cs - if cs.sentLast { - return - } - cs.sentLast = true - cs.attempt.t.Write(cs.attempt.s, nil, nil, &transport.Options{Last: true}) - // We ignore errors from Write. Any error it would return would also be - // returned by a subsequent RecvMsg call, and the user is supposed to always - // finish the stream by calling RecvMsg until it returns err != nil. -} - func (a *csAttempt) finish(err error) { a.mu.Lock() - a.t.CloseStream(a.s, err) + if a.finished { + a.mu.Unlock() + return + } + a.finished = true + if err == io.EOF { + // Ending a stream with EOF indicates a success. + err = nil + } + var tr metadata.MD + if a.s != nil { + a.t.CloseStream(a.s, err) + tr = a.s.Trailer() + } if a.done != nil { + br := false + if a.s != nil { + br = a.s.BytesReceived() + } a.done(balancer.DoneInfo{ Err: err, - BytesSent: true, - BytesReceived: a.s.BytesReceived(), + Trailer: tr, + BytesSent: a.s != nil, + BytesReceived: br, + ServerLoad: balancerload.Parse(tr), }) } if a.statsHandler != nil { end := &stats.End{ Client: true, - BeginTime: a.beginTime, + BeginTime: a.cs.beginTime, EndTime: time.Now(), + Trailer: tr, Error: err, } - a.statsHandler.HandleRPC(a.ctx, end) + a.statsHandler.HandleRPC(a.cs.ctx, end) } - if a.trInfo.tr != nil { + if a.trInfo != nil && a.trInfo.tr != nil { if err == nil { a.trInfo.tr.LazyPrintf("RPC: [OK]") } else { @@ -587,7 +982,299 @@ func (a *csAttempt) finish(err error) { a.mu.Unlock() } -// ServerStream defines the interface a server stream has to satisfy. +// newClientStream creates a ClientStream with the specified transport, on the +// given addrConn. +// +// It's expected that the given transport is either the same one in addrConn, or +// is already closed. To avoid race, transport is specified separately, instead +// of using ac.transpot. +// +// Main difference between this and ClientConn.NewStream: +// - no retry +// - no service config (or wait for service config) +// - no tracing or stats +func newNonRetryClientStream(ctx context.Context, desc *StreamDesc, method string, t transport.ClientTransport, ac *addrConn, opts ...CallOption) (_ ClientStream, err error) { + if t == nil { + // TODO: return RPC error here? + return nil, errors.New("transport provided is nil") + } + // defaultCallInfo contains unnecessary info(i.e. failfast, maxRetryRPCBufferSize), so we just initialize an empty struct. + c := &callInfo{} + + // Possible context leak: + // The cancel function for the child context we create will only be called + // when RecvMsg returns a non-nil error, if the ClientConn is closed, or if + // an error is generated by SendMsg. + // https://github.com/grpc/grpc-go/issues/1818. + ctx, cancel := context.WithCancel(ctx) + defer func() { + if err != nil { + cancel() + } + }() + + for _, o := range opts { + if err := o.before(c); err != nil { + return nil, toRPCErr(err) + } + } + c.maxReceiveMessageSize = getMaxSize(nil, c.maxReceiveMessageSize, defaultClientMaxReceiveMessageSize) + c.maxSendMessageSize = getMaxSize(nil, c.maxSendMessageSize, defaultServerMaxSendMessageSize) + if err := setCallInfoCodec(c); err != nil { + return nil, err + } + + callHdr := &transport.CallHdr{ + Host: ac.cc.authority, + Method: method, + ContentSubtype: c.contentSubtype, + } + + // Set our outgoing compression according to the UseCompressor CallOption, if + // set. In that case, also find the compressor from the encoding package. + // Otherwise, use the compressor configured by the WithCompressor DialOption, + // if set. + var cp Compressor + var comp encoding.Compressor + if ct := c.compressorType; ct != "" { + callHdr.SendCompress = ct + if ct != encoding.Identity { + comp = encoding.GetCompressor(ct) + if comp == nil { + return nil, status.Errorf(codes.Internal, "grpc: Compressor is not installed for requested grpc-encoding %q", ct) + } + } + } else if ac.cc.dopts.cp != nil { + callHdr.SendCompress = ac.cc.dopts.cp.Type() + cp = ac.cc.dopts.cp + } + if c.creds != nil { + callHdr.Creds = c.creds + } + + // Use a special addrConnStream to avoid retry. + as := &addrConnStream{ + callHdr: callHdr, + ac: ac, + ctx: ctx, + cancel: cancel, + opts: opts, + callInfo: c, + desc: desc, + codec: c.codec, + cp: cp, + comp: comp, + t: t, + } + + as.callInfo.stream = as + s, err := as.t.NewStream(as.ctx, as.callHdr) + if err != nil { + err = toRPCErr(err) + return nil, err + } + as.s = s + as.p = &parser{r: s} + ac.incrCallsStarted() + if desc != unaryStreamDesc { + // Listen on cc and stream contexts to cleanup when the user closes the + // ClientConn or cancels the stream context. In all other cases, an error + // should already be injected into the recv buffer by the transport, which + // the client will eventually receive, and then we will cancel the stream's + // context in clientStream.finish. + go func() { + select { + case <-ac.ctx.Done(): + as.finish(status.Error(codes.Canceled, "grpc: the SubConn is closing")) + case <-ctx.Done(): + as.finish(toRPCErr(ctx.Err())) + } + }() + } + return as, nil +} + +type addrConnStream struct { + s *transport.Stream + ac *addrConn + callHdr *transport.CallHdr + cancel context.CancelFunc + opts []CallOption + callInfo *callInfo + t transport.ClientTransport + ctx context.Context + sentLast bool + desc *StreamDesc + codec baseCodec + cp Compressor + comp encoding.Compressor + decompSet bool + dc Decompressor + decomp encoding.Compressor + p *parser + mu sync.Mutex + finished bool +} + +func (as *addrConnStream) Header() (metadata.MD, error) { + m, err := as.s.Header() + if err != nil { + as.finish(toRPCErr(err)) + } + return m, err +} + +func (as *addrConnStream) Trailer() metadata.MD { + return as.s.Trailer() +} + +func (as *addrConnStream) CloseSend() error { + if as.sentLast { + // TODO: return an error and finish the stream instead, due to API misuse? + return nil + } + as.sentLast = true + + as.t.Write(as.s, nil, nil, &transport.Options{Last: true}) + // Always return nil; io.EOF is the only error that might make sense + // instead, but there is no need to signal the client to call RecvMsg + // as the only use left for the stream after CloseSend is to call + // RecvMsg. This also matches historical behavior. + return nil +} + +func (as *addrConnStream) Context() context.Context { + return as.s.Context() +} + +func (as *addrConnStream) SendMsg(m interface{}) (err error) { + defer func() { + if err != nil && err != io.EOF { + // Call finish on the client stream for errors generated by this SendMsg + // call, as these indicate problems created by this client. (Transport + // errors are converted to an io.EOF error in csAttempt.sendMsg; the real + // error will be returned from RecvMsg eventually in that case, or be + // retried.) + as.finish(err) + } + }() + if as.sentLast { + return status.Errorf(codes.Internal, "SendMsg called after CloseSend") + } + if !as.desc.ClientStreams { + as.sentLast = true + } + + // load hdr, payload, data + hdr, payld, _, err := prepareMsg(m, as.codec, as.cp, as.comp) + if err != nil { + return err + } + + // TODO(dfawley): should we be checking len(data) instead? + if len(payld) > *as.callInfo.maxSendMessageSize { + return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payld), *as.callInfo.maxSendMessageSize) + } + + if err := as.t.Write(as.s, hdr, payld, &transport.Options{Last: !as.desc.ClientStreams}); err != nil { + if !as.desc.ClientStreams { + // For non-client-streaming RPCs, we return nil instead of EOF on error + // because the generated code requires it. finish is not called; RecvMsg() + // will call it with the stream's status independently. + return nil + } + return io.EOF + } + + if channelz.IsOn() { + as.t.IncrMsgSent() + } + return nil +} + +func (as *addrConnStream) RecvMsg(m interface{}) (err error) { + defer func() { + if err != nil || !as.desc.ServerStreams { + // err != nil or non-server-streaming indicates end of stream. + as.finish(err) + } + }() + + if !as.decompSet { + // Block until we receive headers containing received message encoding. + if ct := as.s.RecvCompress(); ct != "" && ct != encoding.Identity { + if as.dc == nil || as.dc.Type() != ct { + // No configured decompressor, or it does not match the incoming + // message encoding; attempt to find a registered compressor that does. + as.dc = nil + as.decomp = encoding.GetCompressor(ct) + } + } else { + // No compression is used; disable our decompressor. + as.dc = nil + } + // Only initialize this state once per stream. + as.decompSet = true + } + err = recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp) + if err != nil { + if err == io.EOF { + if statusErr := as.s.Status().Err(); statusErr != nil { + return statusErr + } + return io.EOF // indicates successful end of stream. + } + return toRPCErr(err) + } + + if channelz.IsOn() { + as.t.IncrMsgRecv() + } + if as.desc.ServerStreams { + // Subsequent messages should be received by subsequent RecvMsg calls. + return nil + } + + // Special handling for non-server-stream rpcs. + // This recv expects EOF or errors, so we don't collect inPayload. + err = recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp) + if err == nil { + return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want ")) + } + if err == io.EOF { + return as.s.Status().Err() // non-server streaming Recv returns nil on success + } + return toRPCErr(err) +} + +func (as *addrConnStream) finish(err error) { + as.mu.Lock() + if as.finished { + as.mu.Unlock() + return + } + as.finished = true + if err == io.EOF { + // Ending a stream with EOF indicates a success. + err = nil + } + if as.s != nil { + as.t.CloseStream(as.s, err) + } + + if err != nil { + as.ac.incrCallsFailed() + } else { + as.ac.incrCallsSucceeded() + } + as.cancel() + as.mu.Unlock() +} + +// ServerStream defines the server-side behavior of a streaming RPC. +// +// All errors returned from ServerStream methods are compatible with the +// status package. type ServerStream interface { // SetHeader sets the header metadata. It may be called multiple times. // When call multiple times, all the provided metadata will be merged. @@ -603,11 +1290,37 @@ type ServerStream interface { // SetTrailer sets the trailer metadata which will be sent with the RPC status. // When called more than once, all the provided metadata will be merged. SetTrailer(metadata.MD) - Stream + // Context returns the context for this stream. + Context() context.Context + // SendMsg sends a message. On error, SendMsg aborts the stream and the + // error is returned directly. + // + // SendMsg blocks until: + // - There is sufficient flow control to schedule m with the transport, or + // - The stream is done, or + // - The stream breaks. + // + // SendMsg does not wait until the message is received by the client. An + // untimely stream closure may result in lost messages. + // + // It is safe to have a goroutine calling SendMsg and another goroutine + // calling RecvMsg on the same stream at the same time, but it is not safe + // to call SendMsg on the same stream in different goroutines. + SendMsg(m interface{}) error + // RecvMsg blocks until it receives a message into m or the stream is + // done. It returns io.EOF when the client has performed a CloseSend. On + // any non-EOF error, the stream is aborted and the error contains the + // RPC status. + // + // It is safe to have a goroutine calling SendMsg and another goroutine + // calling RecvMsg on the same stream at the same time, but it is not + // safe to call RecvMsg on the same stream in different goroutines. + RecvMsg(m interface{}) error } // serverStream implements a server side Stream. type serverStream struct { + ctx context.Context t transport.ServerTransport s *transport.Stream p *parser @@ -624,11 +1337,20 @@ type serverStream struct { statsHandler stats.Handler + binlog *binarylog.MethodLogger + // serverHeaderBinlogged indicates whether server header has been logged. It + // will happen when one of the following two happens: stream.SendHeader(), + // stream.Send(). + // + // It's only checked in send and sendHeader, doesn't need to be + // synchronized. + serverHeaderBinlogged bool + mu sync.Mutex // protects trInfo.tr after the service handler runs. } func (ss *serverStream) Context() context.Context { - return ss.s.Context() + return ss.ctx } func (ss *serverStream) SetHeader(md metadata.MD) error { @@ -639,7 +1361,15 @@ func (ss *serverStream) SetHeader(md metadata.MD) error { } func (ss *serverStream) SendHeader(md metadata.MD) error { - return ss.t.WriteHeader(ss.s, md) + err := ss.t.WriteHeader(ss.s, md) + if ss.binlog != nil && !ss.serverHeaderBinlogged { + h, _ := ss.s.Header() + ss.binlog.Log(&binarylog.ServerHeader{ + Header: h, + }) + ss.serverHeaderBinlogged = true + } + return err } func (ss *serverStream) SetTrailer(md metadata.MD) { @@ -647,7 +1377,6 @@ func (ss *serverStream) SetTrailer(md metadata.MD) { return } ss.s.SetTrailer(md) - return } func (ss *serverStream) SendMsg(m interface{}) (err error) { @@ -667,25 +1396,45 @@ func (ss *serverStream) SendMsg(m interface{}) (err error) { if err != nil && err != io.EOF { st, _ := status.FromError(toRPCErr(err)) ss.t.WriteStatus(ss.s, st) + // Non-user specified status was sent out. This should be an error + // case (as a server side Cancel maybe). + // + // This is not handled specifically now. User will return a final + // status from the service handler, we will log that error instead. + // This behavior is similar to an interceptor. + } + if channelz.IsOn() && err == nil { + ss.t.IncrMsgSent() } }() - var outPayload *stats.OutPayload - if ss.statsHandler != nil { - outPayload = &stats.OutPayload{} - } - hdr, data, err := encode(ss.codec, m, ss.cp, outPayload, ss.comp) + + // load hdr, payload, data + hdr, payload, data, err := prepareMsg(m, ss.codec, ss.cp, ss.comp) if err != nil { return err } - if len(data) > ss.maxSendMessageSize { - return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(data), ss.maxSendMessageSize) + + // TODO(dfawley): should we be checking len(data) instead? + if len(payload) > ss.maxSendMessageSize { + return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payload), ss.maxSendMessageSize) } - if err := ss.t.Write(ss.s, hdr, data, &transport.Options{Last: false}); err != nil { + if err := ss.t.Write(ss.s, hdr, payload, &transport.Options{Last: false}); err != nil { return toRPCErr(err) } - if outPayload != nil { - outPayload.SentTime = time.Now() - ss.statsHandler.HandleRPC(ss.s.Context(), outPayload) + if ss.binlog != nil { + if !ss.serverHeaderBinlogged { + h, _ := ss.s.Header() + ss.binlog.Log(&binarylog.ServerHeader{ + Header: h, + }) + ss.serverHeaderBinlogged = true + } + ss.binlog.Log(&binarylog.ServerMessage{ + Message: data, + }) + } + if ss.statsHandler != nil { + ss.statsHandler.HandleRPC(ss.s.Context(), outPayload(false, m, data, payload, time.Now())) } return nil } @@ -707,14 +1456,26 @@ func (ss *serverStream) RecvMsg(m interface{}) (err error) { if err != nil && err != io.EOF { st, _ := status.FromError(toRPCErr(err)) ss.t.WriteStatus(ss.s, st) + // Non-user specified status was sent out. This should be an error + // case (as a server side Cancel maybe). + // + // This is not handled specifically now. User will return a final + // status from the service handler, we will log that error instead. + // This behavior is similar to an interceptor. + } + if channelz.IsOn() && err == nil { + ss.t.IncrMsgRecv() } }() - var inPayload *stats.InPayload - if ss.statsHandler != nil { - inPayload = &stats.InPayload{} + var payInfo *payloadInfo + if ss.statsHandler != nil || ss.binlog != nil { + payInfo = &payloadInfo{} } - if err := recv(ss.p, ss.codec, ss.s, ss.dc, m, ss.maxReceiveMessageSize, inPayload, ss.decomp); err != nil { + if err := recv(ss.p, ss.codec, ss.s, ss.dc, m, ss.maxReceiveMessageSize, payInfo, ss.decomp); err != nil { if err == io.EOF { + if ss.binlog != nil { + ss.binlog.Log(&binarylog.ClientHalfClose{}) + } return err } if err == io.ErrUnexpectedEOF { @@ -722,8 +1483,20 @@ func (ss *serverStream) RecvMsg(m interface{}) (err error) { } return toRPCErr(err) } - if inPayload != nil { - ss.statsHandler.HandleRPC(ss.s.Context(), inPayload) + if ss.statsHandler != nil { + ss.statsHandler.HandleRPC(ss.s.Context(), &stats.InPayload{ + RecvTime: time.Now(), + Payload: m, + // TODO truncate large payload. + Data: payInfo.uncompressedBytes, + WireLength: payInfo.wireLength, + Length: len(payInfo.uncompressedBytes), + }) + } + if ss.binlog != nil { + ss.binlog.Log(&binarylog.ClientMessage{ + Message: payInfo.uncompressedBytes, + }) } return nil } @@ -731,9 +1504,26 @@ func (ss *serverStream) RecvMsg(m interface{}) (err error) { // MethodFromServerStream returns the method string for the input stream. // The returned string is in the format of "/service/method". func MethodFromServerStream(stream ServerStream) (string, bool) { - s, ok := transport.StreamFromContext(stream.Context()) - if !ok { - return "", ok + return Method(stream.Context()) +} + +// prepareMsg returns the hdr, payload and data +// using the compressors passed or using the +// passed preparedmsg +func prepareMsg(m interface{}, codec baseCodec, cp Compressor, comp encoding.Compressor) (hdr, payload, data []byte, err error) { + if preparedMsg, ok := m.(*PreparedMsg); ok { + return preparedMsg.hdr, preparedMsg.payload, preparedMsg.encodedData, nil + } + // The input interface is not a prepared msg. + // Marshal and Compress the data at this point + data, err = encode(codec, m) + if err != nil { + return nil, nil, nil, err + } + compData, err := compress(data, cp, comp) + if err != nil { + return nil, nil, nil, err } - return s.Method(), ok + hdr, payload = msgHeader(data, compData) + return hdr, payload, data, nil } diff --git a/vendor/google.golang.org/grpc/tap/tap.go b/vendor/google.golang.org/grpc/tap/tap.go index 22b8fb50de..584360f681 100644 --- a/vendor/google.golang.org/grpc/tap/tap.go +++ b/vendor/google.golang.org/grpc/tap/tap.go @@ -21,7 +21,7 @@ package tap import ( - "golang.org/x/net/context" + "context" ) // Info defines the relevant information needed by the handles. diff --git a/vendor/google.golang.org/grpc/trace.go b/vendor/google.golang.org/grpc/trace.go index c1c96dedcb..0a57b99948 100644 --- a/vendor/google.golang.org/grpc/trace.go +++ b/vendor/google.golang.org/grpc/trace.go @@ -24,6 +24,7 @@ import ( "io" "net" "strings" + "sync" "time" "golang.org/x/net/trace" @@ -53,13 +54,25 @@ type traceInfo struct { } // firstLine is the first line of an RPC trace. +// It may be mutated after construction; remoteAddr specifically may change +// during client-side use. type firstLine struct { + mu sync.Mutex client bool // whether this is a client (outgoing) RPC remoteAddr net.Addr deadline time.Duration // may be zero } +func (f *firstLine) SetRemoteAddr(addr net.Addr) { + f.mu.Lock() + f.remoteAddr = addr + f.mu.Unlock() +} + func (f *firstLine) String() string { + f.mu.Lock() + defer f.mu.Unlock() + var line bytes.Buffer io.WriteString(&line, "RPC: ") if f.client { diff --git a/vendor/google.golang.org/grpc/transport/control.go b/vendor/google.golang.org/grpc/transport/control.go deleted file mode 100644 index 0474b09074..0000000000 --- a/vendor/google.golang.org/grpc/transport/control.go +++ /dev/null @@ -1,334 +0,0 @@ -/* - * - * Copyright 2014 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package transport - -import ( - "fmt" - "io" - "math" - "sync" - "time" - - "golang.org/x/net/http2" - "golang.org/x/net/http2/hpack" -) - -const ( - // The default value of flow control window size in HTTP2 spec. - defaultWindowSize = 65535 - // The initial window size for flow control. - initialWindowSize = defaultWindowSize // for an RPC - infinity = time.Duration(math.MaxInt64) - defaultClientKeepaliveTime = infinity - defaultClientKeepaliveTimeout = time.Duration(20 * time.Second) - defaultMaxStreamsClient = 100 - defaultMaxConnectionIdle = infinity - defaultMaxConnectionAge = infinity - defaultMaxConnectionAgeGrace = infinity - defaultServerKeepaliveTime = time.Duration(2 * time.Hour) - defaultServerKeepaliveTimeout = time.Duration(20 * time.Second) - defaultKeepalivePolicyMinTime = time.Duration(5 * time.Minute) - // max window limit set by HTTP2 Specs. - maxWindowSize = math.MaxInt32 - // defaultLocalSendQuota sets is default value for number of data - // bytes that each stream can schedule before some of it being - // flushed out. - defaultLocalSendQuota = 128 * 1024 -) - -// The following defines various control items which could flow through -// the control buffer of transport. They represent different aspects of -// control tasks, e.g., flow control, settings, streaming resetting, etc. - -type headerFrame struct { - streamID uint32 - hf []hpack.HeaderField - endStream bool -} - -func (*headerFrame) item() {} - -type continuationFrame struct { - streamID uint32 - endHeaders bool - headerBlockFragment []byte -} - -type dataFrame struct { - streamID uint32 - endStream bool - d []byte - f func() -} - -func (*dataFrame) item() {} - -func (*continuationFrame) item() {} - -type windowUpdate struct { - streamID uint32 - increment uint32 -} - -func (*windowUpdate) item() {} - -type settings struct { - ss []http2.Setting -} - -func (*settings) item() {} - -type settingsAck struct { -} - -func (*settingsAck) item() {} - -type resetStream struct { - streamID uint32 - code http2.ErrCode -} - -func (*resetStream) item() {} - -type goAway struct { - code http2.ErrCode - debugData []byte - headsUp bool - closeConn bool -} - -func (*goAway) item() {} - -type flushIO struct { - closeTr bool -} - -func (*flushIO) item() {} - -type ping struct { - ack bool - data [8]byte -} - -func (*ping) item() {} - -// quotaPool is a pool which accumulates the quota and sends it to acquire() -// when it is available. -type quotaPool struct { - mu sync.Mutex - c chan struct{} - version uint32 - quota int -} - -// newQuotaPool creates a quotaPool which has quota q available to consume. -func newQuotaPool(q int) *quotaPool { - qb := "aPool{ - quota: q, - c: make(chan struct{}, 1), - } - return qb -} - -// add cancels the pending quota sent on acquired, incremented by v and sends -// it back on acquire. -func (qb *quotaPool) add(v int) { - qb.mu.Lock() - defer qb.mu.Unlock() - qb.lockedAdd(v) -} - -func (qb *quotaPool) lockedAdd(v int) { - var wakeUp bool - if qb.quota <= 0 { - wakeUp = true // Wake up potential waiters. - } - qb.quota += v - if wakeUp && qb.quota > 0 { - select { - case qb.c <- struct{}{}: - default: - } - } -} - -func (qb *quotaPool) addAndUpdate(v int) { - qb.mu.Lock() - qb.lockedAdd(v) - qb.version++ - qb.mu.Unlock() -} - -func (qb *quotaPool) get(v int, wc waiters) (int, uint32, error) { - qb.mu.Lock() - if qb.quota > 0 { - if v > qb.quota { - v = qb.quota - } - qb.quota -= v - ver := qb.version - qb.mu.Unlock() - return v, ver, nil - } - qb.mu.Unlock() - for { - select { - case <-wc.ctx.Done(): - return 0, 0, ContextErr(wc.ctx.Err()) - case <-wc.tctx.Done(): - return 0, 0, ErrConnClosing - case <-wc.done: - return 0, 0, io.EOF - case <-wc.goAway: - return 0, 0, errStreamDrain - case <-qb.c: - qb.mu.Lock() - if qb.quota > 0 { - if v > qb.quota { - v = qb.quota - } - qb.quota -= v - ver := qb.version - if qb.quota > 0 { - select { - case qb.c <- struct{}{}: - default: - } - } - qb.mu.Unlock() - return v, ver, nil - - } - qb.mu.Unlock() - } - } -} - -func (qb *quotaPool) compareAndExecute(version uint32, success, failure func()) bool { - qb.mu.Lock() - if version == qb.version { - success() - qb.mu.Unlock() - return true - } - failure() - qb.mu.Unlock() - return false -} - -// inFlow deals with inbound flow control -type inFlow struct { - mu sync.Mutex - // The inbound flow control limit for pending data. - limit uint32 - // pendingData is the overall data which have been received but not been - // consumed by applications. - pendingData uint32 - // The amount of data the application has consumed but grpc has not sent - // window update for them. Used to reduce window update frequency. - pendingUpdate uint32 - // delta is the extra window update given by receiver when an application - // is reading data bigger in size than the inFlow limit. - delta uint32 -} - -// newLimit updates the inflow window to a new value n. -// It assumes that n is always greater than the old limit. -func (f *inFlow) newLimit(n uint32) uint32 { - f.mu.Lock() - defer f.mu.Unlock() - d := n - f.limit - f.limit = n - return d -} - -func (f *inFlow) maybeAdjust(n uint32) uint32 { - if n > uint32(math.MaxInt32) { - n = uint32(math.MaxInt32) - } - f.mu.Lock() - defer f.mu.Unlock() - // estSenderQuota is the receiver's view of the maximum number of bytes the sender - // can send without a window update. - estSenderQuota := int32(f.limit - (f.pendingData + f.pendingUpdate)) - // estUntransmittedData is the maximum number of bytes the sends might not have put - // on the wire yet. A value of 0 or less means that we have already received all or - // more bytes than the application is requesting to read. - estUntransmittedData := int32(n - f.pendingData) // Casting into int32 since it could be negative. - // This implies that unless we send a window update, the sender won't be able to send all the bytes - // for this message. Therefore we must send an update over the limit since there's an active read - // request from the application. - if estUntransmittedData > estSenderQuota { - // Sender's window shouldn't go more than 2^31 - 1 as speecified in the HTTP spec. - if f.limit+n > maxWindowSize { - f.delta = maxWindowSize - f.limit - } else { - // Send a window update for the whole message and not just the difference between - // estUntransmittedData and estSenderQuota. This will be helpful in case the message - // is padded; We will fallback on the current available window(at least a 1/4th of the limit). - f.delta = n - } - return f.delta - } - return 0 -} - -// onData is invoked when some data frame is received. It updates pendingData. -func (f *inFlow) onData(n uint32) error { - f.mu.Lock() - defer f.mu.Unlock() - f.pendingData += n - if f.pendingData+f.pendingUpdate > f.limit+f.delta { - return fmt.Errorf("received %d-bytes data exceeding the limit %d bytes", f.pendingData+f.pendingUpdate, f.limit) - } - return nil -} - -// onRead is invoked when the application reads the data. It returns the window size -// to be sent to the peer. -func (f *inFlow) onRead(n uint32) uint32 { - f.mu.Lock() - defer f.mu.Unlock() - if f.pendingData == 0 { - return 0 - } - f.pendingData -= n - if n > f.delta { - n -= f.delta - f.delta = 0 - } else { - f.delta -= n - n = 0 - } - f.pendingUpdate += n - if f.pendingUpdate >= f.limit/4 { - wu := f.pendingUpdate - f.pendingUpdate = 0 - return wu - } - return 0 -} - -func (f *inFlow) resetPendingUpdate() uint32 { - f.mu.Lock() - defer f.mu.Unlock() - n := f.pendingUpdate - f.pendingUpdate = 0 - return n -} diff --git a/vendor/google.golang.org/grpc/transport/go16.go b/vendor/google.golang.org/grpc/transport/go16.go deleted file mode 100644 index 5babcf9b87..0000000000 --- a/vendor/google.golang.org/grpc/transport/go16.go +++ /dev/null @@ -1,51 +0,0 @@ -// +build go1.6,!go1.7 - -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package transport - -import ( - "net" - "net/http" - - "google.golang.org/grpc/codes" - - "golang.org/x/net/context" -) - -// dialContext connects to the address on the named network. -func dialContext(ctx context.Context, network, address string) (net.Conn, error) { - return (&net.Dialer{Cancel: ctx.Done()}).Dial(network, address) -} - -// ContextErr converts the error from context package into a StreamError. -func ContextErr(err error) StreamError { - switch err { - case context.DeadlineExceeded: - return streamErrorf(codes.DeadlineExceeded, "%v", err) - case context.Canceled: - return streamErrorf(codes.Canceled, "%v", err) - } - return streamErrorf(codes.Internal, "Unexpected error from context packet: %v", err) -} - -// contextFromRequest returns a background context. -func contextFromRequest(r *http.Request) context.Context { - return context.Background() -} diff --git a/vendor/google.golang.org/grpc/transport/go17.go b/vendor/google.golang.org/grpc/transport/go17.go deleted file mode 100644 index b7fa6bdb9c..0000000000 --- a/vendor/google.golang.org/grpc/transport/go17.go +++ /dev/null @@ -1,52 +0,0 @@ -// +build go1.7 - -/* - * - * Copyright 2016 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package transport - -import ( - "context" - "net" - "net/http" - - "google.golang.org/grpc/codes" - - netctx "golang.org/x/net/context" -) - -// dialContext connects to the address on the named network. -func dialContext(ctx context.Context, network, address string) (net.Conn, error) { - return (&net.Dialer{}).DialContext(ctx, network, address) -} - -// ContextErr converts the error from context package into a StreamError. -func ContextErr(err error) StreamError { - switch err { - case context.DeadlineExceeded, netctx.DeadlineExceeded: - return streamErrorf(codes.DeadlineExceeded, "%v", err) - case context.Canceled, netctx.Canceled: - return streamErrorf(codes.Canceled, "%v", err) - } - return streamErrorf(codes.Internal, "Unexpected error from context packet: %v", err) -} - -// contextFromRequest returns a context from the HTTP Request. -func contextFromRequest(r *http.Request) context.Context { - return r.Context() -} diff --git a/vendor/google.golang.org/grpc/naming/go18.go b/vendor/google.golang.org/grpc/version.go similarity index 76% rename from vendor/google.golang.org/grpc/naming/go18.go rename to vendor/google.golang.org/grpc/version.go index b5a0f84274..483ef8968a 100644 --- a/vendor/google.golang.org/grpc/naming/go18.go +++ b/vendor/google.golang.org/grpc/version.go @@ -1,8 +1,6 @@ -// +build go1.8 - /* * - * Copyright 2017 gRPC authors. + * Copyright 2018 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,11 +16,7 @@ * */ -package naming - -import "net" +package grpc -var ( - lookupHost = net.DefaultResolver.LookupHost - lookupSRV = net.DefaultResolver.LookupSRV -) +// Version is the current grpc version. +const Version = "1.24.0" diff --git a/vendor/google.golang.org/grpc/vet.sh b/vendor/google.golang.org/grpc/vet.sh index 2ad94fed9c..2d79b1c694 100644 --- a/vendor/google.golang.org/grpc/vet.sh +++ b/vendor/google.golang.org/grpc/vet.sh @@ -1,5 +1,10 @@ #!/bin/bash +if [[ `uname -a` = *"Darwin"* ]]; then + echo "It seems you are running on Mac. This script does not work on Mac. See https://github.com/grpc/grpc-go/issues/2047" + exit 1 +fi + set -ex # Exit on error; debugging enabled. set -o pipefail # Fail a pipe if any sub-command fails. @@ -8,24 +13,43 @@ die() { exit 1 } -PATH="$GOPATH/bin:$GOROOT/bin:$PATH" +fail_on_output() { + tee /dev/stderr | (! read) +} -# Check proto in manual runs or cron runs. -if [[ "$TRAVIS" != "true" || "$TRAVIS_EVENT_TYPE" = "cron" ]]; then - check_proto="true" -fi +# Check to make sure it's safe to modify the user's git repo. +git status --porcelain | fail_on_output -if [ "$1" = "-install" ]; then - go get -d \ - google.golang.org/grpc/... - go get -u \ - github.com/golang/lint/golint \ - golang.org/x/tools/cmd/goimports \ - honnef.co/go/tools/cmd/staticcheck \ - github.com/client9/misspell/cmd/misspell \ - github.com/golang/protobuf/protoc-gen-go - if [[ "$check_proto" = "true" ]]; then - if [[ "$TRAVIS" = "true" ]]; then +# Undo any edits made by this script. +cleanup() { + git reset --hard HEAD +} +trap cleanup EXIT + +PATH="${GOPATH}/bin:${GOROOT}/bin:${PATH}" + +if [[ "$1" = "-install" ]]; then + # Check for module support + if go help mod >& /dev/null; then + go install \ + golang.org/x/lint/golint \ + golang.org/x/tools/cmd/goimports \ + honnef.co/go/tools/cmd/staticcheck \ + github.com/client9/misspell/cmd/misspell \ + github.com/golang/protobuf/protoc-gen-go + else + # Ye olde `go get` incantation. + # Note: this gets the latest version of all tools (vs. the pinned versions + # with Go modules). + go get -u \ + golang.org/x/lint/golint \ + golang.org/x/tools/cmd/goimports \ + honnef.co/go/tools/cmd/staticcheck \ + github.com/client9/misspell/cmd/misspell \ + github.com/golang/protobuf/protoc-gen-go + fi + if [[ -z "${VET_SKIP_PROTO}" ]]; then + if [[ "${TRAVIS}" = "true" ]]; then PROTOBUF_VERSION=3.3.0 PROTOC_FILENAME=protoc-${PROTOBUF_VERSION}-linux-x86_64.zip pushd /home/travis @@ -42,43 +66,70 @@ elif [[ "$#" -ne 0 ]]; then die "Unknown argument(s): $*" fi -# TODO: Remove this check and the mangling below once "context" is imported -# directly. -if git status --porcelain | read; then - die "Uncommitted or untracked files found; commit changes first" -fi +# - Ensure all source files contain a copyright message. +(! git grep -L "\(Copyright [0-9]\{4,\} gRPC authors\)\|DO NOT EDIT" -- '*.go') -git ls-files "*.go" | xargs grep -L "\(Copyright [0-9]\{4,\} gRPC authors\)\|DO NOT EDIT" 2>&1 | tee /dev/stderr | (! read) -gofmt -s -d -l . 2>&1 | tee /dev/stderr | (! read) -goimports -l . 2>&1 | tee /dev/stderr | (! read) -golint ./... 2>&1 | (grep -vE "(_mock|\.pb)\.go:" || true) | tee /dev/stderr | (! read) +# - Make sure all tests in grpc and grpc/test use leakcheck via Teardown. +(! grep 'func Test[^(]' *_test.go) +(! grep 'func Test[^(]' test/*.go) -# Undo any edits made by this script. -cleanup() { - git reset --hard HEAD -} -trap cleanup EXIT +# - Do not import math/rand for real library code. Use internal/grpcrand for +# thread safety. +git grep -l '"math/rand"' -- "*.go" 2>&1 | (! grep -v '^examples\|^stress\|grpcrand\|wrr_test') + +# - Ensure all ptypes proto packages are renamed when importing. +(! git grep "\(import \|^\s*\)\"github.com/golang/protobuf/ptypes/" -- "*.go") + +# - Check imports that are illegal in appengine (until Go 1.11). +# TODO: Remove when we drop Go 1.10 support +go list -f {{.Dir}} ./... | xargs go run test/go_vet/vet.go + +# - gofmt, goimports, golint (with exceptions for generated code), go vet. +gofmt -s -d -l . 2>&1 | fail_on_output +goimports -l . 2>&1 | (! grep -vE "(_mock|\.pb)\.go") | fail_on_output +golint ./... 2>&1 | (! grep -vE "(_mock|\.pb)\.go:") +go vet -all . + +# - Check that generated proto files are up to date. +if [[ -z "${VET_SKIP_PROTO}" ]]; then + PATH="/home/travis/bin:${PATH}" make proto && \ + git status --porcelain 2>&1 | fail_on_output || \ + (git status; git --no-pager diff; exit 1) +fi -# Rewrite golang.org/x/net/context -> context imports (see grpc/grpc-go#1484). -# TODO: Remove this mangling once "context" is imported directly (grpc/grpc-go#711). -git ls-files "*.go" | xargs sed -i 's:"golang.org/x/net/context":"context":' -set +o pipefail -# TODO: Stop filtering pb.go files once golang/protobuf#214 is fixed. -go tool vet -all . 2>&1 | grep -vE '(clientconn|transport\/transport_test).go:.*cancel (function|var)' | grep -vF '.pb.go:' | tee /dev/stderr | (! read) -set -o pipefail -git reset --hard HEAD - -if [[ "$check_proto" = "true" ]]; then - PATH="/home/travis/bin:$PATH" make proto && \ - git status --porcelain 2>&1 | (! read) || \ +# - Check that our module is tidy. +if go help mod >& /dev/null; then + go mod tidy && \ + git status --porcelain 2>&1 | fail_on_output || \ (git status; git --no-pager diff; exit 1) fi -# TODO(menghanl): fix errors in transport_test. -staticcheck -ignore ' -google.golang.org/grpc/transport/transport_test.go:SA2002 +# - Collection of static analysis checks +# TODO(dfawley): don't use deprecated functions in examples. +staticcheck -go 1.9 -checks 'inherit,-ST1015' -ignore ' +google.golang.org/grpc/balancer.go:SA1019 +google.golang.org/grpc/balancer/grpclb/grpclb_remote_balancer.go:SA1019 +google.golang.org/grpc/balancer/roundrobin/roundrobin_test.go:SA1019 +google.golang.org/grpc/xds/internal/balancer/edsbalancer/balancergroup.go:SA1019 +google.golang.org/grpc/xds/internal/resolver/xds_resolver.go:SA1019 +google.golang.org/grpc/xds/internal/balancer/xds.go:SA1019 +google.golang.org/grpc/xds/internal/balancer/xds_client.go:SA1019 +google.golang.org/grpc/balancer_conn_wrappers.go:SA1019 +google.golang.org/grpc/balancer_test.go:SA1019 google.golang.org/grpc/benchmark/benchmain/main.go:SA1019 +google.golang.org/grpc/benchmark/worker/benchmark_client.go:SA1019 +google.golang.org/grpc/clientconn.go:S1024 +google.golang.org/grpc/clientconn_state_transition_test.go:SA1019 +google.golang.org/grpc/clientconn_test.go:SA1019 +google.golang.org/grpc/examples/features/debugging/client/main.go:SA1019 +google.golang.org/grpc/examples/features/load_balancing/client/main.go:SA1019 +google.golang.org/grpc/internal/transport/handler_server.go:SA1019 +google.golang.org/grpc/internal/transport/handler_server_test.go:SA1019 +google.golang.org/grpc/resolver/dns/dns_resolver.go:SA1019 google.golang.org/grpc/stats/stats_test.go:SA1019 +google.golang.org/grpc/test/balancer_test.go:SA1019 +google.golang.org/grpc/test/channelz_test.go:SA1019 google.golang.org/grpc/test/end2end_test.go:SA1019 +google.golang.org/grpc/test/healthcheck_test.go:SA1019 ' ./... misspell -error . diff --git a/vendor/gopkg.in/yaml.v2/decode.go b/vendor/gopkg.in/yaml.v2/decode.go index e4e56e28e0..5310876555 100644 --- a/vendor/gopkg.in/yaml.v2/decode.go +++ b/vendor/gopkg.in/yaml.v2/decode.go @@ -229,6 +229,10 @@ type decoder struct { mapType reflect.Type terrors []string strict bool + + decodeCount int + aliasCount int + aliasDepth int } var ( @@ -314,7 +318,39 @@ func (d *decoder) prepare(n *node, out reflect.Value) (newout reflect.Value, unm return out, false, false } +const ( + // 400,000 decode operations is ~500kb of dense object declarations, or ~5kb of dense object declarations with 10000% alias expansion + alias_ratio_range_low = 400000 + // 4,000,000 decode operations is ~5MB of dense object declarations, or ~4.5MB of dense object declarations with 10% alias expansion + alias_ratio_range_high = 4000000 + // alias_ratio_range is the range over which we scale allowed alias ratios + alias_ratio_range = float64(alias_ratio_range_high - alias_ratio_range_low) +) + +func allowedAliasRatio(decodeCount int) float64 { + switch { + case decodeCount <= alias_ratio_range_low: + // allow 99% to come from alias expansion for small-to-medium documents + return 0.99 + case decodeCount >= alias_ratio_range_high: + // allow 10% to come from alias expansion for very large documents + return 0.10 + default: + // scale smoothly from 99% down to 10% over the range. + // this maps to 396,000 - 400,000 allowed alias-driven decodes over the range. + // 400,000 decode operations is ~100MB of allocations in worst-case scenarios (single-item maps). + return 0.99 - 0.89*(float64(decodeCount-alias_ratio_range_low)/alias_ratio_range) + } +} + func (d *decoder) unmarshal(n *node, out reflect.Value) (good bool) { + d.decodeCount++ + if d.aliasDepth > 0 { + d.aliasCount++ + } + if d.aliasCount > 100 && d.decodeCount > 1000 && float64(d.aliasCount)/float64(d.decodeCount) > allowedAliasRatio(d.decodeCount) { + failf("document contains excessive aliasing") + } switch n.kind { case documentNode: return d.document(n, out) @@ -353,7 +389,9 @@ func (d *decoder) alias(n *node, out reflect.Value) (good bool) { failf("anchor '%s' value contains itself", n.value) } d.aliases[n] = true + d.aliasDepth++ good = d.unmarshal(n.alias, out) + d.aliasDepth-- delete(d.aliases, n) return good } diff --git a/vendor/gopkg.in/yaml.v2/resolve.go b/vendor/gopkg.in/yaml.v2/resolve.go index 6c151db6fb..4120e0c916 100644 --- a/vendor/gopkg.in/yaml.v2/resolve.go +++ b/vendor/gopkg.in/yaml.v2/resolve.go @@ -81,7 +81,7 @@ func resolvableTag(tag string) bool { return false } -var yamlStyleFloat = regexp.MustCompile(`^[-+]?[0-9]*\.?[0-9]+([eE][-+][0-9]+)?$`) +var yamlStyleFloat = regexp.MustCompile(`^[-+]?(\.[0-9]+|[0-9]+(\.[0-9]*)?)([eE][-+]?[0-9]+)?$`) func resolve(tag string, in string) (rtag string, out interface{}) { if !resolvableTag(tag) { diff --git a/vendor/gopkg.in/yaml.v2/scannerc.go b/vendor/gopkg.in/yaml.v2/scannerc.go index 077fd1dd2d..570b8ecd10 100644 --- a/vendor/gopkg.in/yaml.v2/scannerc.go +++ b/vendor/gopkg.in/yaml.v2/scannerc.go @@ -906,6 +906,9 @@ func yaml_parser_remove_simple_key(parser *yaml_parser_t) bool { return true } +// max_flow_level limits the flow_level +const max_flow_level = 10000 + // Increase the flow level and resize the simple key list if needed. func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { // Reset the simple key on the next level. @@ -913,6 +916,11 @@ func yaml_parser_increase_flow_level(parser *yaml_parser_t) bool { // Increase the flow level. parser.flow_level++ + if parser.flow_level > max_flow_level { + return yaml_parser_set_scanner_error(parser, + "while increasing flow level", parser.simple_keys[len(parser.simple_keys)-1].mark, + fmt.Sprintf("exceeded max depth of %d", max_flow_level)) + } return true } @@ -925,6 +933,9 @@ func yaml_parser_decrease_flow_level(parser *yaml_parser_t) bool { return true } +// max_indents limits the indents stack size +const max_indents = 10000 + // Push the current indentation level to the stack and set the new level // the current column is greater than the indentation level. In this case, // append or insert the specified token into the token queue. @@ -939,6 +950,11 @@ func yaml_parser_roll_indent(parser *yaml_parser_t, column, number int, typ yaml // indentation level. parser.indents = append(parser.indents, parser.indent) parser.indent = column + if len(parser.indents) > max_indents { + return yaml_parser_set_scanner_error(parser, + "while increasing indent level", parser.simple_keys[len(parser.simple_keys)-1].mark, + fmt.Sprintf("exceeded max depth of %d", max_indents)) + } // Create a token and insert it into the queue. token := yaml_token_t{ diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go index 542d8268ae..b87f74e520 100644 --- a/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.pb.go @@ -989,40 +989,39 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 545 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x51, 0x4d, 0x8b, 0x13, 0x3f, - 0x18, 0x6f, 0xfe, 0xdb, 0x42, 0x9b, 0x76, 0xf9, 0xcb, 0xe0, 0xa1, 0x14, 0x99, 0x96, 0x9e, 0x2a, - 0x62, 0x62, 0x57, 0x59, 0xbc, 0xee, 0xec, 0x41, 0x0a, 0xbe, 0x2c, 0x41, 0x3c, 0x88, 0x07, 0xd3, - 0xf6, 0xd9, 0x69, 0x6c, 0x27, 0x19, 0x92, 0x4c, 0x41, 0x4f, 0x5e, 0xbc, 0x0b, 0x7e, 0xa9, 0x1e, - 0xf7, 0xb8, 0xa7, 0x62, 0x47, 0xf0, 0xe8, 0x67, 0x90, 0x99, 0xe9, 0xec, 0xcc, 0x5a, 0x8b, 0xab, - 0xb7, 0x3c, 0xbf, 0x27, 0xbf, 0xb7, 0x04, 0xb3, 0xf9, 0x63, 0x43, 0x84, 0xa2, 0xf3, 0x68, 0x0c, - 0x5a, 0x82, 0x05, 0x43, 0x97, 0x20, 0xa7, 0x4a, 0xd3, 0xed, 0x82, 0x87, 0x82, 0xf2, 0x69, 0x20, - 0x8c, 0x11, 0x4a, 0x6a, 0xf0, 0x85, 0xb1, 0x9a, 0x5b, 0xa1, 0x24, 0x5d, 0x0e, 0xf9, 0x22, 0x9c, - 0xf1, 0x21, 0xf5, 0x41, 0x82, 0xe6, 0x16, 0xa6, 0x24, 0xd4, 0xca, 0x2a, 0xe7, 0x6e, 0x46, 0x25, - 0x3c, 0x14, 0xe4, 0xb7, 0x54, 0x92, 0x53, 0x3b, 0xf7, 0x7d, 0x61, 0x67, 0xd1, 0x98, 0x4c, 0x54, - 0x40, 0x7d, 0xe5, 0x2b, 0x9a, 0x2a, 0x8c, 0xa3, 0xf3, 0x74, 0x4a, 0x87, 0xf4, 0x94, 0x29, 0x77, - 0x1e, 0x15, 0xa1, 0x02, 0x3e, 0x99, 0x09, 0x09, 0xfa, 0x3d, 0x0d, 0xe7, 0x7e, 0x02, 0x18, 0x1a, - 0x80, 0xe5, 0x74, 0xb9, 0x93, 0xa7, 0x43, 0xf7, 0xb1, 0x74, 0x24, 0xad, 0x08, 0x60, 0x87, 0x70, - 0xfc, 0x27, 0x82, 0x99, 0xcc, 0x20, 0xe0, 0x3b, 0xbc, 0x87, 0xfb, 0x78, 0x91, 0x15, 0x0b, 0x2a, - 0xa4, 0x35, 0x56, 0xff, 0x4a, 0xea, 0x7f, 0x42, 0xb8, 0x39, 0x92, 0xc2, 0x0a, 0xbe, 0x10, 0x1f, - 0x40, 0x3b, 0x3d, 0x5c, 0x95, 0x3c, 0x80, 0x36, 0xea, 0xa1, 0x41, 0xc3, 0x6b, 0xad, 0xd6, 0xdd, - 0x4a, 0xbc, 0xee, 0x56, 0x9f, 0xf3, 0x00, 0x58, 0xba, 0x71, 0x5e, 0xe2, 0x9a, 0x8e, 0x16, 0x60, - 0xda, 0xff, 0xf5, 0x0e, 0x06, 0xcd, 0x23, 0x4a, 0x6e, 0xfc, 0xde, 0x84, 0x45, 0x0b, 0xf0, 0x0e, - 0xb7, 0x9a, 0xb5, 0x64, 0x32, 0x2c, 0x13, 0xeb, 0xff, 0x40, 0xb8, 0x5d, 0xca, 0x71, 0xaa, 0xe4, - 0xb9, 0xf0, 0xa3, 0x4c, 0xc0, 0x79, 0x8b, 0xeb, 0xc9, 0xeb, 0x4e, 0xb9, 0xe5, 0x69, 0xb0, 0xe6, - 0xd1, 0x83, 0x92, 0xeb, 0x55, 0x59, 0x12, 0xce, 0xfd, 0x04, 0x30, 0x24, 0xb9, 0x4d, 0x96, 0x43, - 0xf2, 0x62, 0xfc, 0x0e, 0x26, 0xf6, 0x19, 0x58, 0xee, 0x39, 0x5b, 0x5b, 0x5c, 0x60, 0xec, 0x4a, - 0xd5, 0x09, 0x71, 0x4b, 0x14, 0xee, 0x79, 0xb7, 0xe3, 0xbf, 0xe8, 0x56, 0x0a, 0xef, 0xdd, 0xde, - 0x7a, 0xb5, 0x4a, 0xa0, 0x61, 0xd7, 0x1c, 0xfa, 0xdf, 0x11, 0xbe, 0xb3, 0xaf, 0xf0, 0x53, 0x61, - 0xac, 0xf3, 0x66, 0xa7, 0x34, 0xb9, 0x59, 0xe9, 0x84, 0x9d, 0x56, 0xbe, 0xb5, 0x8d, 0x51, 0xcf, - 0x91, 0x52, 0xe1, 0x19, 0xae, 0x09, 0x0b, 0x41, 0xde, 0xf4, 0xf4, 0xdf, 0x9a, 0x5e, 0x4b, 0x5d, - 0xfc, 0xec, 0x28, 0x51, 0x66, 0x99, 0x41, 0xff, 0x0b, 0xc2, 0xd5, 0xe4, 0xab, 0x9d, 0x7b, 0xb8, - 0xc1, 0x43, 0xf1, 0x44, 0xab, 0x28, 0x34, 0x6d, 0xd4, 0x3b, 0x18, 0x34, 0xbc, 0xc3, 0x78, 0xdd, - 0x6d, 0x9c, 0x9c, 0x8d, 0x32, 0x90, 0x15, 0x7b, 0x67, 0x88, 0x9b, 0x3c, 0x14, 0xaf, 0x40, 0x27, - 0x39, 0xb2, 0x94, 0x0d, 0xef, 0xff, 0x78, 0xdd, 0x6d, 0x9e, 0x9c, 0x8d, 0x72, 0x98, 0x95, 0xef, - 0x24, 0xfa, 0x1a, 0x8c, 0x8a, 0xf4, 0x04, 0x4c, 0xfb, 0xa0, 0xd0, 0x67, 0x39, 0xc8, 0x8a, 0xbd, - 0x47, 0x56, 0x1b, 0xb7, 0x72, 0xb1, 0x71, 0x2b, 0x97, 0x1b, 0xb7, 0xf2, 0x31, 0x76, 0xd1, 0x2a, - 0x76, 0xd1, 0x45, 0xec, 0xa2, 0xcb, 0xd8, 0x45, 0x5f, 0x63, 0x17, 0x7d, 0xfe, 0xe6, 0x56, 0x5e, - 0xd7, 0xf3, 0xd2, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x1d, 0xfb, 0x23, 0x89, 0xaa, 0x04, 0x00, - 0x00, + // 531 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x51, 0x4d, 0x8b, 0x13, 0x31, + 0x18, 0x6e, 0x6c, 0x0b, 0x6d, 0xda, 0x45, 0x19, 0x3c, 0x94, 0x22, 0xd3, 0xd2, 0x53, 0x45, 0x4c, + 0xec, 0x22, 0x8b, 0xd7, 0x9d, 0x3d, 0x48, 0xc1, 0x8f, 0x25, 0x88, 0x07, 0xf1, 0x60, 0xda, 0xbe, + 0x3b, 0x8d, 0xed, 0x4c, 0x86, 0x24, 0x53, 0xd0, 0x93, 0x17, 0xef, 0x82, 0x7f, 0xaa, 0xc7, 0x3d, + 0xee, 0xa9, 0xd8, 0x11, 0x3c, 0xfa, 0x1b, 0x24, 0x33, 0x9d, 0x9d, 0x59, 0xeb, 0xe2, 0xea, 0x2d, + 0xef, 0xf3, 0xe6, 0xf9, 0x4a, 0x30, 0x5b, 0x3c, 0xd1, 0x44, 0x48, 0xba, 0x88, 0x27, 0xa0, 0x42, + 0x30, 0xa0, 0xe9, 0x0a, 0xc2, 0x99, 0x54, 0x74, 0xb7, 0xe0, 0x91, 0xa0, 0x7c, 0x16, 0x08, 0xad, + 0x85, 0x0c, 0x15, 0xf8, 0x42, 0x1b, 0xc5, 0x8d, 0x90, 0x21, 0x5d, 0x8d, 0xf8, 0x32, 0x9a, 0xf3, + 0x11, 0xf5, 0x21, 0x04, 0xc5, 0x0d, 0xcc, 0x48, 0xa4, 0xa4, 0x91, 0xce, 0xfd, 0x8c, 0x4a, 0x78, + 0x24, 0xc8, 0x1f, 0xa9, 0x24, 0xa7, 0x76, 0x1f, 0xfa, 0xc2, 0xcc, 0xe3, 0x09, 0x99, 0xca, 0x80, + 0xfa, 0xd2, 0x97, 0x34, 0x55, 0x98, 0xc4, 0x67, 0xe9, 0x94, 0x0e, 0xe9, 0x29, 0x53, 0xee, 0x3e, + 0x2e, 0x42, 0x05, 0x7c, 0x3a, 0x17, 0x21, 0xa8, 0x0f, 0x34, 0x5a, 0xf8, 0x16, 0xd0, 0x34, 0x00, + 0xc3, 0xe9, 0x6a, 0x2f, 0x4f, 0x97, 0x5e, 0xc7, 0x52, 0x71, 0x68, 0x44, 0x00, 0x7b, 0x84, 0xa3, + 0xbf, 0x11, 0xf4, 0x74, 0x0e, 0x01, 0xff, 0x9d, 0x37, 0xf8, 0x8c, 0x70, 0x6b, 0x1c, 0x0a, 0x23, + 0xf8, 0x52, 0x7c, 0x04, 0xe5, 0xf4, 0x71, 0x2d, 0xe4, 0x01, 0x74, 0x50, 0x1f, 0x0d, 0x9b, 0x5e, + 0x7b, 0xbd, 0xe9, 0x55, 0x92, 0x4d, 0xaf, 0xf6, 0x82, 0x07, 0xc0, 0xd2, 0x8d, 0xf3, 0x0a, 0xd7, + 0x55, 0xbc, 0x04, 0xdd, 0xb9, 0xd5, 0xaf, 0x0e, 0x5b, 0x87, 0x94, 0xdc, 0xf8, 0xe9, 0x08, 0x8b, + 0x97, 0xe0, 0x1d, 0xec, 0x34, 0xeb, 0x76, 0xd2, 0x2c, 0x13, 0x1b, 0xfc, 0x44, 0xb8, 0x53, 0xca, + 0x71, 0x22, 0xc3, 0x33, 0xe1, 0xc7, 0x99, 0x80, 0xf3, 0x0e, 0x37, 0xec, 0x43, 0xcd, 0xb8, 0xe1, + 0x69, 0xb0, 0xd6, 0xe1, 0xa3, 0x92, 0xeb, 0x65, 0x5f, 0x12, 0x2d, 0x7c, 0x0b, 0x68, 0x62, 0x6f, + 0x93, 0xd5, 0x88, 0xbc, 0x9c, 0xbc, 0x87, 0xa9, 0x79, 0x0e, 0x86, 0x7b, 0xce, 0xce, 0x16, 0x17, + 0x18, 0xbb, 0x54, 0x75, 0x22, 0xdc, 0x16, 0x85, 0x7b, 0xde, 0xed, 0xe8, 0x1f, 0xba, 0x95, 0xc2, + 0x7b, 0x77, 0x77, 0x5e, 0xed, 0x12, 0xa8, 0xd9, 0x15, 0x87, 0xc1, 0x0f, 0x84, 0xef, 0x5d, 0x57, + 0xf8, 0x99, 0xd0, 0xc6, 0x79, 0xbb, 0x57, 0x9a, 0xdc, 0xac, 0xb4, 0x65, 0xa7, 0x95, 0xef, 0xec, + 0x62, 0x34, 0x72, 0xa4, 0x54, 0x78, 0x8e, 0xeb, 0xc2, 0x40, 0x90, 0x37, 0x3d, 0xf9, 0xbf, 0xa6, + 0x57, 0x52, 0x17, 0x3f, 0x3b, 0xb6, 0xca, 0x2c, 0x33, 0x18, 0x7c, 0x45, 0xb8, 0x66, 0xbf, 0xda, + 0x79, 0x80, 0x9b, 0x3c, 0x12, 0x4f, 0x95, 0x8c, 0x23, 0xdd, 0x41, 0xfd, 0xea, 0xb0, 0xe9, 0x1d, + 0x24, 0x9b, 0x5e, 0xf3, 0xf8, 0x74, 0x9c, 0x81, 0xac, 0xd8, 0x3b, 0x23, 0xdc, 0xe2, 0x91, 0x78, + 0x0d, 0xca, 0xe6, 0xc8, 0x52, 0x36, 0xbd, 0xdb, 0xc9, 0xa6, 0xd7, 0x3a, 0x3e, 0x1d, 0xe7, 0x30, + 0x2b, 0xdf, 0xb1, 0xfa, 0x0a, 0xb4, 0x8c, 0xd5, 0x14, 0x74, 0xa7, 0x5a, 0xe8, 0xb3, 0x1c, 0x64, + 0xc5, 0xde, 0x23, 0xeb, 0xad, 0x5b, 0x39, 0xdf, 0xba, 0x95, 0x8b, 0xad, 0x5b, 0xf9, 0x94, 0xb8, + 0x68, 0x9d, 0xb8, 0xe8, 0x3c, 0x71, 0xd1, 0x45, 0xe2, 0xa2, 0x6f, 0x89, 0x8b, 0xbe, 0x7c, 0x77, + 0x2b, 0x6f, 0x1a, 0x79, 0xe9, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa2, 0x06, 0xa3, 0xcb, 0x75, + 0x04, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto index 4f0e400e79..e17b559689 100644 --- a/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto +++ b/vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto @@ -24,7 +24,6 @@ package k8s.io.api.admissionregistration.v1alpha1; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1alpha1"; diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go index af35e1e254..8b289c4c50 100644 --- a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.pb.go @@ -2088,63 +2088,60 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 916 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x54, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xf6, 0xd6, 0x8e, 0x6c, 0x8f, 0x6d, 0xd1, 0x0c, 0x20, 0x99, 0xa8, 0xda, 0xb5, 0x7c, 0x40, - 0x96, 0x50, 0x76, 0x71, 0x8a, 0x10, 0x42, 0x20, 0x94, 0x8d, 0x54, 0x88, 0x94, 0xb4, 0x66, 0x02, - 0xad, 0x84, 0x38, 0x30, 0x5e, 0xbf, 0xd8, 0x83, 0xf7, 0x97, 0x66, 0x66, 0xdd, 0xe6, 0x86, 0xc4, - 0x3f, 0x80, 0xc4, 0x1f, 0xc1, 0x5f, 0xc1, 0x3d, 0x37, 0x7a, 0x41, 0xf4, 0xb4, 0x22, 0xcb, 0x99, - 0x03, 0xd7, 0x9e, 0xd0, 0xce, 0xae, 0xbd, 0x76, 0x1c, 0xa7, 0xee, 0x85, 0x03, 0x37, 0xcf, 0xf7, - 0xde, 0xf7, 0xbd, 0xf7, 0x3d, 0xbf, 0xb7, 0xe8, 0xcb, 0xe9, 0x47, 0xc2, 0x64, 0x81, 0x35, 0x8d, - 0x86, 0xc0, 0x7d, 0x90, 0x20, 0xac, 0x19, 0xf8, 0xa3, 0x80, 0x5b, 0x79, 0x80, 0x86, 0xcc, 0xa2, - 0x23, 0x8f, 0x09, 0xc1, 0x02, 0x9f, 0xc3, 0x98, 0x09, 0xc9, 0xa9, 0x64, 0x81, 0x6f, 0xcd, 0xfa, - 0x43, 0x90, 0xb4, 0x6f, 0x8d, 0xc1, 0x07, 0x4e, 0x25, 0x8c, 0xcc, 0x90, 0x07, 0x32, 0xc0, 0xbd, - 0x8c, 0x69, 0xd2, 0x90, 0x99, 0x37, 0x32, 0xcd, 0x9c, 0xb9, 0xb7, 0x3f, 0x66, 0x72, 0x12, 0x0d, - 0x4d, 0x27, 0xf0, 0xac, 0x71, 0x30, 0x0e, 0x2c, 0x25, 0x30, 0x8c, 0xce, 0xd5, 0x4b, 0x3d, 0xd4, - 0xaf, 0x4c, 0x78, 0xaf, 0xbb, 0xd4, 0x92, 0x13, 0x70, 0xb0, 0x66, 0x6b, 0xc5, 0xf7, 0x4e, 0x8b, - 0x1c, 0x78, 0x26, 0xc1, 0x4f, 0x6b, 0x8b, 0x7d, 0x1a, 0x32, 0x01, 0x7c, 0x06, 0xdc, 0x0a, 0xa7, - 0xe3, 0x34, 0x26, 0x56, 0x13, 0x36, 0x79, 0xd9, 0xfb, 0xa0, 0x90, 0xf3, 0xa8, 0x33, 0x61, 0x3e, - 0xf0, 0x8b, 0x42, 0xc3, 0x03, 0x49, 0x6f, 0x6a, 0xc2, 0xda, 0xc4, 0xe2, 0x91, 0x2f, 0x99, 0x07, - 0x6b, 0x84, 0x0f, 0x5f, 0x45, 0x10, 0xce, 0x04, 0x3c, 0xba, 0xc6, 0xbb, 0xbf, 0x89, 0x17, 0x49, - 0xe6, 0x5a, 0xcc, 0x97, 0x42, 0xf2, 0xeb, 0xa4, 0xee, 0xef, 0x1a, 0xba, 0x77, 0x1a, 0x49, 0x2a, - 0x99, 0x3f, 0x7e, 0x02, 0xc3, 0x49, 0x10, 0x4c, 0x8f, 0x02, 0xff, 0x9c, 0x8d, 0xa3, 0xec, 0xef, - 0xc1, 0xdf, 0xa1, 0x5a, 0xea, 0x6c, 0x44, 0x25, 0x6d, 0x6b, 0x1d, 0xad, 0xd7, 0x38, 0x78, 0xdf, - 0x2c, 0xfe, 0xd3, 0x45, 0x21, 0x33, 0x9c, 0x8e, 0x53, 0x40, 0x98, 0x69, 0xb6, 0x39, 0xeb, 0x9b, - 0x8f, 0x86, 0xdf, 0x83, 0x23, 0x4f, 0x41, 0x52, 0x1b, 0x5f, 0xc6, 0x46, 0x29, 0x89, 0x0d, 0x54, - 0x60, 0x64, 0xa1, 0x8a, 0xcf, 0x50, 0x2d, 0xaf, 0x2c, 0xda, 0x77, 0x3a, 0xe5, 0x5e, 0xe3, 0xa0, - 0x6f, 0x6e, 0xbb, 0x35, 0x66, 0xce, 0xb4, 0x2b, 0x69, 0x09, 0x52, 0x7b, 0x9a, 0x0b, 0x75, 0xff, - 0xd6, 0x50, 0xe7, 0x36, 0x5f, 0x27, 0x4c, 0x48, 0xfc, 0xed, 0x9a, 0x37, 0x73, 0x3b, 0x6f, 0x29, - 0x5b, 0x39, 0xbb, 0x9b, 0x3b, 0xab, 0xcd, 0x91, 0x25, 0x5f, 0x53, 0xb4, 0xc3, 0x24, 0x78, 0x73, - 0x53, 0x0f, 0xb6, 0x37, 0x75, 0x5b, 0xe3, 0x76, 0x2b, 0x2f, 0xb9, 0x73, 0x9c, 0x8a, 0x93, 0xac, - 0x46, 0xf7, 0x67, 0x0d, 0x55, 0x48, 0xe4, 0x02, 0x7e, 0x0f, 0xd5, 0x69, 0xc8, 0x3e, 0xe7, 0x41, - 0x14, 0x8a, 0xb6, 0xd6, 0x29, 0xf7, 0xea, 0x76, 0x2b, 0x89, 0x8d, 0xfa, 0xe1, 0xe0, 0x38, 0x03, - 0x49, 0x11, 0xc7, 0x7d, 0xd4, 0xa0, 0x21, 0x7b, 0x0c, 0x5c, 0x2d, 0xbe, 0x6a, 0xb4, 0x6e, 0xbf, - 0x91, 0xc4, 0x46, 0xe3, 0x70, 0x70, 0x3c, 0x87, 0xc9, 0x72, 0x4e, 0xaa, 0xcf, 0x41, 0x04, 0x11, - 0x77, 0x40, 0xb4, 0xcb, 0x85, 0x3e, 0x99, 0x83, 0xa4, 0x88, 0x77, 0x7f, 0xd1, 0x10, 0x4e, 0xbb, - 0x7a, 0xc2, 0xe4, 0xe4, 0x51, 0x08, 0x99, 0x03, 0x81, 0x3f, 0x43, 0x28, 0x58, 0xbc, 0xf2, 0x26, - 0x0d, 0xb5, 0x1f, 0x0b, 0xf4, 0x65, 0x6c, 0xb4, 0x16, 0xaf, 0xaf, 0x2e, 0x42, 0x20, 0x4b, 0x14, - 0x3c, 0x40, 0x15, 0x1e, 0xb9, 0xd0, 0xbe, 0xb3, 0xf6, 0xa7, 0xbd, 0x62, 0xb2, 0x69, 0x33, 0x76, - 0x33, 0x9f, 0xa0, 0x1a, 0x18, 0x51, 0x4a, 0xdd, 0x1f, 0x35, 0x74, 0xf7, 0x0c, 0xf8, 0x8c, 0x39, - 0x40, 0xe0, 0x1c, 0x38, 0xf8, 0x0e, 0x60, 0x0b, 0xd5, 0x7d, 0xea, 0x81, 0x08, 0xa9, 0x03, 0x6a, - 0x41, 0xea, 0xf6, 0x6e, 0xce, 0xad, 0x3f, 0x9c, 0x07, 0x48, 0x91, 0x83, 0x3b, 0xa8, 0x92, 0x3e, - 0x54, 0x5f, 0xf5, 0xa2, 0x4e, 0x9a, 0x4b, 0x54, 0x04, 0xdf, 0x43, 0x95, 0x90, 0xca, 0x49, 0xbb, - 0xac, 0x32, 0x6a, 0x69, 0x74, 0x40, 0xe5, 0x84, 0x28, 0xb4, 0xfb, 0x87, 0x86, 0xf4, 0xc7, 0xd4, - 0x65, 0xa3, 0xff, 0xdd, 0x3d, 0xfe, 0xa3, 0xa1, 0xee, 0xed, 0xce, 0xfe, 0x83, 0x8b, 0xf4, 0x56, - 0x2f, 0xf2, 0x8b, 0xed, 0x6d, 0xdd, 0xde, 0xfa, 0x86, 0x9b, 0xfc, 0xad, 0x8c, 0xaa, 0x79, 0xfa, - 0x62, 0x33, 0xb4, 0x8d, 0x9b, 0xf1, 0x14, 0x35, 0x1d, 0x97, 0x81, 0x2f, 0x33, 0xe9, 0x7c, 0xb7, - 0x3f, 0x7d, 0xed, 0xd1, 0x1f, 0x2d, 0x89, 0xd8, 0x6f, 0xe5, 0x85, 0x9a, 0xcb, 0x28, 0x59, 0x29, - 0x84, 0x29, 0xda, 0x49, 0x4f, 0x20, 0xbb, 0xe6, 0xc6, 0xc1, 0x27, 0xaf, 0x77, 0x4d, 0xab, 0xa7, - 0x5d, 0x4c, 0x22, 0x8d, 0x09, 0x92, 0x29, 0xe3, 0x13, 0xd4, 0x3a, 0xa7, 0xcc, 0x8d, 0x38, 0x0c, - 0x02, 0x97, 0x39, 0x17, 0xed, 0x8a, 0x1a, 0xc3, 0xbb, 0x49, 0x6c, 0xb4, 0x1e, 0x2c, 0x07, 0x5e, - 0xc6, 0xc6, 0xee, 0x0a, 0xa0, 0x4e, 0x7f, 0x95, 0x8c, 0x9f, 0xa1, 0xdd, 0xc5, 0xc9, 0x9d, 0x81, - 0x0b, 0x8e, 0x0c, 0x78, 0x7b, 0x47, 0x8d, 0xeb, 0xfe, 0x96, 0xdb, 0x42, 0x87, 0xe0, 0xce, 0xa9, - 0xf6, 0xdb, 0x49, 0x6c, 0xec, 0x3e, 0xbc, 0xae, 0x48, 0xd6, 0x8b, 0x74, 0x7f, 0xd5, 0xd0, 0x9b, - 0x37, 0x8c, 0x19, 0x53, 0x54, 0x15, 0xd9, 0xc7, 0x23, 0xdf, 0xda, 0x8f, 0xb7, 0x1f, 0xe2, 0xf5, - 0xaf, 0x8e, 0xdd, 0x48, 0x62, 0xa3, 0x3a, 0x47, 0xe7, 0xba, 0xb8, 0x87, 0x6a, 0x0e, 0xb5, 0x23, - 0x7f, 0x94, 0x7f, 0xf6, 0x9a, 0x76, 0x33, 0xdd, 0xf2, 0xa3, 0xc3, 0x0c, 0x23, 0x8b, 0x28, 0x7e, - 0x07, 0x95, 0x23, 0xee, 0xe6, 0x5f, 0x98, 0x6a, 0x12, 0x1b, 0xe5, 0xaf, 0xc9, 0x09, 0x49, 0x31, - 0x7b, 0xff, 0xf2, 0x4a, 0x2f, 0x3d, 0xbf, 0xd2, 0x4b, 0x2f, 0xae, 0xf4, 0xd2, 0x0f, 0x89, 0xae, - 0x5d, 0x26, 0xba, 0xf6, 0x3c, 0xd1, 0xb5, 0x17, 0x89, 0xae, 0xfd, 0x99, 0xe8, 0xda, 0x4f, 0x7f, - 0xe9, 0xa5, 0x6f, 0xaa, 0x79, 0x6b, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x78, 0x57, 0x76, 0x28, - 0x10, 0x0a, 0x00, 0x00, + // 872 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x54, 0xcf, 0x8f, 0xdb, 0x44, + 0x14, 0x8e, 0x9b, 0xac, 0x92, 0x4c, 0x12, 0xd1, 0x1d, 0x40, 0x0a, 0xab, 0xca, 0x8e, 0x72, 0x40, + 0x91, 0x50, 0x6d, 0xb2, 0x20, 0x84, 0x10, 0x08, 0xad, 0x57, 0x2a, 0xac, 0xb4, 0x6d, 0xc3, 0x2c, + 0xb4, 0x12, 0xe2, 0xc0, 0xc4, 0x79, 0xeb, 0x0c, 0xf1, 0x2f, 0x8d, 0xc7, 0x29, 0x7b, 0x43, 0xe2, + 0x1f, 0x40, 0xe2, 0x8f, 0xe0, 0xaf, 0xe0, 0xbe, 0x37, 0x7a, 0x41, 0xf4, 0x64, 0xb1, 0xe6, 0xcc, + 0x81, 0x6b, 0x4f, 0x68, 0xec, 0x49, 0x9c, 0x6c, 0xba, 0x69, 0x7a, 0xe1, 0xc0, 0xcd, 0xf3, 0xbd, + 0xf9, 0xbe, 0xf7, 0xbe, 0xe7, 0xf7, 0x06, 0x7d, 0x31, 0xfb, 0x30, 0x36, 0x59, 0x68, 0xcd, 0x92, + 0x31, 0xf0, 0x00, 0x04, 0xc4, 0xd6, 0x1c, 0x82, 0x49, 0xc8, 0x2d, 0x15, 0xa0, 0x11, 0xb3, 0xe8, + 0xc4, 0x67, 0x71, 0xcc, 0xc2, 0x80, 0x83, 0xcb, 0x62, 0xc1, 0xa9, 0x60, 0x61, 0x60, 0xcd, 0x87, + 0x63, 0x10, 0x74, 0x68, 0xb9, 0x10, 0x00, 0xa7, 0x02, 0x26, 0x66, 0xc4, 0x43, 0x11, 0xe2, 0x41, + 0xc1, 0x34, 0x69, 0xc4, 0xcc, 0x17, 0x32, 0x4d, 0xc5, 0x3c, 0xb8, 0xeb, 0x32, 0x31, 0x4d, 0xc6, + 0xa6, 0x13, 0xfa, 0x96, 0x1b, 0xba, 0xa1, 0x95, 0x0b, 0x8c, 0x93, 0xf3, 0xfc, 0x94, 0x1f, 0xf2, + 0xaf, 0x42, 0xf8, 0xe0, 0xfd, 0xb2, 0x24, 0x9f, 0x3a, 0x53, 0x16, 0x00, 0xbf, 0xb0, 0xa2, 0x99, + 0x2b, 0x81, 0xd8, 0xf2, 0x41, 0x50, 0x6b, 0xbe, 0x51, 0xce, 0x81, 0x75, 0x13, 0x8b, 0x27, 0x81, + 0x60, 0x3e, 0x6c, 0x10, 0x3e, 0x78, 0x19, 0x21, 0x76, 0xa6, 0xe0, 0xd3, 0xeb, 0xbc, 0xfe, 0xef, + 0x1a, 0xba, 0x73, 0x3f, 0x11, 0x54, 0xb0, 0xc0, 0x7d, 0x0c, 0xe3, 0x69, 0x18, 0xce, 0x8e, 0xc3, + 0xe0, 0x9c, 0xb9, 0x49, 0x61, 0x1b, 0x7f, 0x8b, 0x1a, 0xb2, 0xc8, 0x09, 0x15, 0xb4, 0xab, 0xf5, + 0xb4, 0x41, 0xeb, 0xf0, 0x5d, 0xb3, 0xec, 0xd5, 0x32, 0x97, 0x19, 0xcd, 0x5c, 0x09, 0xc4, 0xa6, + 0xbc, 0x6d, 0xce, 0x87, 0xe6, 0xc3, 0xf1, 0x77, 0xe0, 0x88, 0xfb, 0x20, 0xa8, 0x8d, 0x2f, 0x53, + 0xa3, 0x92, 0xa5, 0x06, 0x2a, 0x31, 0xb2, 0x54, 0xc5, 0x67, 0xa8, 0xa1, 0x32, 0xc7, 0xdd, 0x5b, + 0xbd, 0xea, 0xa0, 0x75, 0x38, 0x34, 0x77, 0xfd, 0x1b, 0xa6, 0x62, 0xda, 0x35, 0x99, 0x82, 0x34, + 0x9e, 0x28, 0xa1, 0xfe, 0xdf, 0x1a, 0xea, 0x6d, 0xf3, 0x75, 0xca, 0x62, 0x81, 0xbf, 0xd9, 0xf0, + 0x66, 0xee, 0xe6, 0x4d, 0xb2, 0x73, 0x67, 0xb7, 0x95, 0xb3, 0xc6, 0x02, 0x59, 0xf1, 0x35, 0x43, + 0x7b, 0x4c, 0x80, 0xbf, 0x30, 0x75, 0x6f, 0x77, 0x53, 0xdb, 0x0a, 0xb7, 0x3b, 0x2a, 0xe5, 0xde, + 0x89, 0x14, 0x27, 0x45, 0x8e, 0xfe, 0xcf, 0x1a, 0xaa, 0x91, 0xc4, 0x03, 0xfc, 0x0e, 0x6a, 0xd2, + 0x88, 0x7d, 0xc6, 0xc3, 0x24, 0x8a, 0xbb, 0x5a, 0xaf, 0x3a, 0x68, 0xda, 0x9d, 0x2c, 0x35, 0x9a, + 0x47, 0xa3, 0x93, 0x02, 0x24, 0x65, 0x1c, 0x0f, 0x51, 0x8b, 0x46, 0xec, 0x11, 0x70, 0x59, 0x4a, + 0x51, 0x68, 0xd3, 0x7e, 0x2d, 0x4b, 0x8d, 0xd6, 0xd1, 0xe8, 0x64, 0x01, 0x93, 0xd5, 0x3b, 0x52, + 0x9f, 0x43, 0x1c, 0x26, 0xdc, 0x81, 0xb8, 0x5b, 0x2d, 0xf5, 0xc9, 0x02, 0x24, 0x65, 0xbc, 0xff, + 0x8b, 0x86, 0xb0, 0xac, 0xea, 0x31, 0x13, 0xd3, 0x87, 0x11, 0x14, 0x0e, 0x62, 0xfc, 0x29, 0x42, + 0xe1, 0xf2, 0xa4, 0x8a, 0x34, 0xf2, 0xf9, 0x58, 0xa2, 0xcf, 0x53, 0xa3, 0xb3, 0x3c, 0x7d, 0x79, + 0x11, 0x01, 0x59, 0xa1, 0xe0, 0x11, 0xaa, 0xf1, 0xc4, 0x83, 0xee, 0xad, 0x8d, 0x9f, 0xf6, 0x92, + 0xce, 0xca, 0x62, 0xec, 0xb6, 0xea, 0x60, 0xde, 0x30, 0x92, 0x2b, 0xf5, 0x7f, 0xd4, 0xd0, 0xed, + 0x33, 0xe0, 0x73, 0xe6, 0x00, 0x81, 0x73, 0xe0, 0x10, 0x38, 0x80, 0x2d, 0xd4, 0x0c, 0xa8, 0x0f, + 0x71, 0x44, 0x1d, 0xc8, 0x07, 0xa4, 0x69, 0xef, 0x2b, 0x6e, 0xf3, 0xc1, 0x22, 0x40, 0xca, 0x3b, + 0xb8, 0x87, 0x6a, 0xf2, 0x90, 0xd7, 0xd5, 0x2c, 0xf3, 0xc8, 0xbb, 0x24, 0x8f, 0xe0, 0x3b, 0xa8, + 0x16, 0x51, 0x31, 0xed, 0x56, 0xf3, 0x1b, 0x0d, 0x19, 0x1d, 0x51, 0x31, 0x25, 0x39, 0xda, 0xff, + 0x43, 0x43, 0xfa, 0x23, 0xea, 0xb1, 0xc9, 0xff, 0x6e, 0x1f, 0xff, 0xd1, 0x50, 0x7f, 0xbb, 0xb3, + 0xff, 0x60, 0x23, 0xfd, 0xf5, 0x8d, 0xfc, 0x7c, 0x77, 0x5b, 0xdb, 0x4b, 0xbf, 0x61, 0x27, 0x7f, + 0xab, 0xa2, 0xba, 0xba, 0xbe, 0x9c, 0x0c, 0xed, 0xc6, 0xc9, 0x78, 0x82, 0xda, 0x8e, 0xc7, 0x20, + 0x10, 0x85, 0xb4, 0x9a, 0xed, 0x4f, 0x5e, 0xb9, 0xf5, 0xc7, 0x2b, 0x22, 0xf6, 0x1b, 0x2a, 0x51, + 0x7b, 0x15, 0x25, 0x6b, 0x89, 0x30, 0x45, 0x7b, 0x72, 0x05, 0x8a, 0x6d, 0x6e, 0x1d, 0x7e, 0xfc, + 0x6a, 0xdb, 0xb4, 0xbe, 0xda, 0x65, 0x27, 0x64, 0x2c, 0x26, 0x85, 0x32, 0x3e, 0x45, 0x9d, 0x73, + 0xca, 0xbc, 0x84, 0xc3, 0x28, 0xf4, 0x98, 0x73, 0xd1, 0xad, 0xe5, 0x6d, 0x78, 0x3b, 0x4b, 0x8d, + 0xce, 0xbd, 0xd5, 0xc0, 0xf3, 0xd4, 0xd8, 0x5f, 0x03, 0xf2, 0xd5, 0x5f, 0x27, 0xe3, 0xef, 0xd1, + 0xfe, 0x72, 0xe5, 0xce, 0xc0, 0x03, 0x47, 0x84, 0xbc, 0xbb, 0x97, 0xb7, 0xeb, 0xbd, 0x1d, 0xa7, + 0x85, 0x8e, 0xc1, 0x5b, 0x50, 0xed, 0x37, 0xb3, 0xd4, 0xd8, 0x7f, 0x70, 0x5d, 0x91, 0x6c, 0x26, + 0xe9, 0xff, 0xaa, 0xa1, 0xd7, 0x5f, 0xd0, 0x66, 0x4c, 0x51, 0x3d, 0x2e, 0x1e, 0x0f, 0x35, 0xb5, + 0x1f, 0xed, 0xde, 0xc4, 0xeb, 0xaf, 0x8e, 0xdd, 0xca, 0x52, 0xa3, 0xbe, 0x40, 0x17, 0xba, 0x78, + 0x80, 0x1a, 0x0e, 0xb5, 0x93, 0x60, 0xa2, 0x9e, 0xbd, 0xb6, 0xdd, 0x96, 0x53, 0x7e, 0x7c, 0x54, + 0x60, 0x64, 0x19, 0xc5, 0x6f, 0xa1, 0x6a, 0xc2, 0x3d, 0xf5, 0xc2, 0xd4, 0xb3, 0xd4, 0xa8, 0x7e, + 0x45, 0x4e, 0x89, 0xc4, 0xec, 0xbb, 0x97, 0x57, 0x7a, 0xe5, 0xe9, 0x95, 0x5e, 0x79, 0x76, 0xa5, + 0x57, 0x7e, 0xc8, 0x74, 0xed, 0x32, 0xd3, 0xb5, 0xa7, 0x99, 0xae, 0x3d, 0xcb, 0x74, 0xed, 0xcf, + 0x4c, 0xd7, 0x7e, 0xfa, 0x4b, 0xaf, 0x7c, 0x5d, 0x57, 0xa5, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, + 0xeb, 0x1f, 0xdb, 0x50, 0x68, 0x09, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto index 118be06f83..2866b87388 100644 --- a/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto @@ -21,12 +21,9 @@ syntax = 'proto2'; package k8s.io.api.admissionregistration.v1beta1; -import "k8s.io/api/core/v1/generated.proto"; -import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1beta1"; diff --git a/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go index b71a5e55d7..d8c1e4f625 100644 --- a/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.deepcopy.go @@ -149,8 +149,12 @@ func (in *ServiceReference) DeepCopyInto(out *ServiceReference) { *out = *in if in.Path != nil { in, out := &in.Path, &out.Path - *out = new(string) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } } return } @@ -244,13 +248,21 @@ func (in *Webhook) DeepCopyInto(out *Webhook) { } if in.FailurePolicy != nil { in, out := &in.FailurePolicy, &out.FailurePolicy - *out = new(FailurePolicyType) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(FailurePolicyType) + **out = **in + } } if in.NamespaceSelector != nil { in, out := &in.NamespaceSelector, &out.NamespaceSelector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } return } @@ -270,13 +282,21 @@ func (in *WebhookClientConfig) DeepCopyInto(out *WebhookClientConfig) { *out = *in if in.URL != nil { in, out := &in.URL, &out.URL - *out = new(string) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } } if in.Service != nil { in, out := &in.Service, &out.Service - *out = new(ServiceReference) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ServiceReference) + (*in).DeepCopyInto(*out) + } } if in.CABundle != nil { in, out := &in.CABundle, &out.CABundle diff --git a/vendor/k8s.io/api/apps/v1/generated.pb.go b/vendor/k8s.io/api/apps/v1/generated.pb.go index 1823a84404..eac6ef2a12 100644 --- a/vendor/k8s.io/api/apps/v1/generated.pb.go +++ b/vendor/k8s.io/api/apps/v1/generated.pb.go @@ -61,7 +61,6 @@ import fmt "fmt" import math "math" import k8s_io_api_core_v1 "k8s.io/api/core/v1" - import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -6812,134 +6811,133 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 2051 bytes of a gzipped FileDescriptorProto + // 2037 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x24, 0x47, 0x1d, 0x75, 0xcf, 0x87, 0x3d, 0x2e, 0xaf, 0xed, 0xdd, 0xb2, 0xb1, 0x27, 0xbb, 0x64, 0x66, 0x19, - 0x60, 0xe3, 0xcd, 0x66, 0x7b, 0xf0, 0x66, 0x13, 0xa1, 0x2c, 0x02, 0x79, 0xc6, 0x21, 0x84, 0x78, - 0x6c, 0x53, 0x5e, 0xef, 0x61, 0x09, 0x12, 0x35, 0x33, 0xb5, 0xe3, 0x8e, 0xfb, 0x4b, 0xdd, 0xd5, - 0xc3, 0x8e, 0xb8, 0x20, 0x24, 0x38, 0x71, 0xe0, 0x3f, 0x41, 0x08, 0xc1, 0x0d, 0x45, 0x88, 0xcb, - 0x5e, 0x90, 0x22, 0x2e, 0xe4, 0x64, 0xb1, 0x93, 0x13, 0x42, 0x39, 0x72, 0xc9, 0x05, 0x54, 0xd5, - 0xd5, 0xdf, 0xd5, 0x9e, 0xb1, 0x37, 0xeb, 0xa0, 0x68, 0x6f, 0x9e, 0xaa, 0xf7, 0x7b, 0xfd, 0xab, - 0xaa, 0x5f, 0xd5, 0x7b, 0x5d, 0x6d, 0x70, 0xef, 0xf8, 0xdb, 0xae, 0xaa, 0x59, 0xcd, 0x63, 0xaf, - 0x4b, 0x1c, 0x93, 0x50, 0xe2, 0x36, 0x87, 0xc4, 0xec, 0x5b, 0x4e, 0x53, 0x74, 0x60, 0x5b, 0x6b, - 0x62, 0xdb, 0x76, 0x9b, 0xc3, 0xcd, 0xe6, 0x80, 0x98, 0xc4, 0xc1, 0x94, 0xf4, 0x55, 0xdb, 0xb1, - 0xa8, 0x05, 0xa1, 0x8f, 0x51, 0xb1, 0xad, 0xa9, 0x0c, 0xa3, 0x0e, 0x37, 0xaf, 0xde, 0x1e, 0x68, - 0xf4, 0xc8, 0xeb, 0xaa, 0x3d, 0xcb, 0x68, 0x0e, 0xac, 0x81, 0xd5, 0xe4, 0xd0, 0xae, 0xf7, 0x88, - 0xff, 0xe2, 0x3f, 0xf8, 0x5f, 0x3e, 0xc5, 0xd5, 0x46, 0xec, 0x31, 0x3d, 0xcb, 0x21, 0x92, 0xc7, - 0x5c, 0xbd, 0x19, 0xc3, 0xd8, 0x96, 0xae, 0xf5, 0x46, 0xcd, 0xe1, 0x66, 0x97, 0x50, 0x9c, 0x85, - 0xde, 0x8d, 0xa0, 0x06, 0xee, 0x1d, 0x69, 0x26, 0x71, 0x46, 0x4d, 0xfb, 0x78, 0xc0, 0x1a, 0xdc, - 0xa6, 0x41, 0x28, 0x96, 0x3d, 0xa0, 0x99, 0x17, 0xe5, 0x78, 0x26, 0xd5, 0x0c, 0x92, 0x09, 0x78, - 0x73, 0x52, 0x80, 0xdb, 0x3b, 0x22, 0x06, 0xce, 0xc4, 0xbd, 0x9e, 0x17, 0xe7, 0x51, 0x4d, 0x6f, - 0x6a, 0x26, 0x75, 0xa9, 0x93, 0x0e, 0x6a, 0xfc, 0x47, 0x01, 0xb0, 0x6d, 0x99, 0xd4, 0xb1, 0x74, - 0x9d, 0x38, 0x88, 0x0c, 0x35, 0x57, 0xb3, 0x4c, 0xf8, 0x53, 0x50, 0x61, 0xe3, 0xe9, 0x63, 0x8a, - 0xab, 0xca, 0x75, 0x65, 0x63, 0xe1, 0xce, 0xb7, 0xd4, 0x68, 0x3d, 0x42, 0x7a, 0xd5, 0x3e, 0x1e, - 0xb0, 0x06, 0x57, 0x65, 0x68, 0x75, 0xb8, 0xa9, 0xee, 0x75, 0x3f, 0x20, 0x3d, 0xda, 0x21, 0x14, - 0xb7, 0xe0, 0x93, 0x93, 0xfa, 0xcc, 0xf8, 0xa4, 0x0e, 0xa2, 0x36, 0x14, 0xb2, 0xc2, 0x3d, 0x50, - 0xe2, 0xec, 0x05, 0xce, 0x7e, 0x3b, 0x97, 0x5d, 0x0c, 0x5a, 0x45, 0xf8, 0x67, 0x6f, 0x3f, 0xa6, - 0xc4, 0x64, 0xe9, 0xb5, 0x2e, 0x09, 0xea, 0xd2, 0x36, 0xa6, 0x18, 0x71, 0x22, 0xf8, 0x1a, 0xa8, - 0x38, 0x22, 0xfd, 0x6a, 0xf1, 0xba, 0xb2, 0x51, 0x6c, 0x5d, 0x16, 0xa8, 0x4a, 0x30, 0x2c, 0x14, - 0x22, 0x1a, 0x7f, 0x55, 0xc0, 0x5a, 0x76, 0xdc, 0x3b, 0x9a, 0x4b, 0xe1, 0xfb, 0x99, 0xb1, 0xab, - 0xd3, 0x8d, 0x9d, 0x45, 0xf3, 0x91, 0x87, 0x0f, 0x0e, 0x5a, 0x62, 0xe3, 0x7e, 0x0f, 0x94, 0x35, - 0x4a, 0x0c, 0xb7, 0x5a, 0xb8, 0x5e, 0xdc, 0x58, 0xb8, 0x73, 0x43, 0xcd, 0x96, 0xb9, 0x9a, 0x4d, - 0xac, 0xb5, 0x28, 0x28, 0xcb, 0xef, 0xb2, 0x60, 0xe4, 0x73, 0x34, 0xfe, 0xab, 0x80, 0xf9, 0x6d, - 0x4c, 0x0c, 0xcb, 0x3c, 0x20, 0xf4, 0x02, 0x16, 0xad, 0x0d, 0x4a, 0xae, 0x4d, 0x7a, 0x62, 0xd1, - 0xbe, 0x26, 0xcb, 0x3d, 0x4c, 0xe7, 0xc0, 0x26, 0xbd, 0x68, 0xa1, 0xd8, 0x2f, 0xc4, 0x83, 0xe1, - 0x7b, 0x60, 0xd6, 0xa5, 0x98, 0x7a, 0x2e, 0x5f, 0xa6, 0x85, 0x3b, 0x5f, 0x3f, 0x9d, 0x86, 0x43, - 0x5b, 0x4b, 0x82, 0x68, 0xd6, 0xff, 0x8d, 0x04, 0x45, 0xe3, 0x5f, 0x05, 0x00, 0x43, 0x6c, 0xdb, - 0x32, 0xfb, 0x1a, 0x65, 0xf5, 0xfb, 0x16, 0x28, 0xd1, 0x91, 0x4d, 0xf8, 0x34, 0xcc, 0xb7, 0x6e, - 0x04, 0x59, 0xdc, 0x1f, 0xd9, 0xe4, 0xb3, 0x93, 0xfa, 0x5a, 0x36, 0x82, 0xf5, 0x20, 0x1e, 0x03, - 0x77, 0xc2, 0xfc, 0x0a, 0x3c, 0xfa, 0x6e, 0xf2, 0xd1, 0x9f, 0x9d, 0xd4, 0x25, 0xe7, 0x8a, 0x1a, - 0x32, 0x25, 0x13, 0x84, 0x43, 0x00, 0x75, 0xec, 0xd2, 0xfb, 0x0e, 0x36, 0x5d, 0xff, 0x49, 0x9a, - 0x41, 0xc4, 0xc8, 0x5f, 0x9d, 0x6e, 0x79, 0x58, 0x44, 0xeb, 0xaa, 0xc8, 0x02, 0xee, 0x64, 0xd8, - 0x90, 0xe4, 0x09, 0xf0, 0x06, 0x98, 0x75, 0x08, 0x76, 0x2d, 0xb3, 0x5a, 0xe2, 0xa3, 0x08, 0x27, - 0x10, 0xf1, 0x56, 0x24, 0x7a, 0xe1, 0x4d, 0x30, 0x67, 0x10, 0xd7, 0xc5, 0x03, 0x52, 0x2d, 0x73, - 0xe0, 0xb2, 0x00, 0xce, 0x75, 0xfc, 0x66, 0x14, 0xf4, 0x37, 0x7e, 0xaf, 0x80, 0xc5, 0x70, 0xe6, - 0x2e, 0x60, 0xab, 0xb4, 0x92, 0x5b, 0xe5, 0xe5, 0x53, 0xeb, 0x24, 0x67, 0x87, 0x7c, 0x58, 0x8c, - 0xe5, 0xcc, 0x8a, 0x10, 0xfe, 0x04, 0x54, 0x5c, 0xa2, 0x93, 0x1e, 0xb5, 0x1c, 0x91, 0xf3, 0xeb, - 0x53, 0xe6, 0x8c, 0xbb, 0x44, 0x3f, 0x10, 0xa1, 0xad, 0x4b, 0x2c, 0xe9, 0xe0, 0x17, 0x0a, 0x29, - 0xe1, 0x8f, 0x40, 0x85, 0x12, 0xc3, 0xd6, 0x31, 0x25, 0x62, 0x9b, 0x24, 0xea, 0x9b, 0x95, 0x0b, - 0x23, 0xdb, 0xb7, 0xfa, 0xf7, 0x05, 0x8c, 0x6f, 0x94, 0x70, 0x1e, 0x82, 0x56, 0x14, 0xd2, 0xc0, - 0x63, 0xb0, 0xe4, 0xd9, 0x7d, 0x86, 0xa4, 0xec, 0xe8, 0x1e, 0x8c, 0x44, 0xf9, 0xdc, 0x3a, 0x75, - 0x42, 0x0e, 0x13, 0x21, 0xad, 0x35, 0xf1, 0x80, 0xa5, 0x64, 0x3b, 0x4a, 0x51, 0xc3, 0x2d, 0xb0, - 0x6c, 0x68, 0x26, 0x22, 0xb8, 0x3f, 0x3a, 0x20, 0x3d, 0xcb, 0xec, 0xbb, 0xbc, 0x80, 0xca, 0xad, - 0x75, 0x41, 0xb0, 0xdc, 0x49, 0x76, 0xa3, 0x34, 0x1e, 0xee, 0x80, 0xd5, 0xe0, 0x9c, 0xfd, 0x81, - 0xe6, 0x52, 0xcb, 0x19, 0xed, 0x68, 0x86, 0x46, 0xab, 0xb3, 0x9c, 0xa7, 0x3a, 0x3e, 0xa9, 0xaf, - 0x22, 0x49, 0x3f, 0x92, 0x46, 0x35, 0x7e, 0x33, 0x0b, 0x96, 0x53, 0xa7, 0x01, 0x7c, 0x00, 0xd6, - 0x7a, 0x9e, 0xe3, 0x10, 0x93, 0xee, 0x7a, 0x46, 0x97, 0x38, 0x07, 0xbd, 0x23, 0xd2, 0xf7, 0x74, - 0xd2, 0xe7, 0x2b, 0x5a, 0x6e, 0xd5, 0x44, 0xae, 0x6b, 0x6d, 0x29, 0x0a, 0xe5, 0x44, 0xc3, 0x1f, - 0x02, 0x68, 0xf2, 0xa6, 0x8e, 0xe6, 0xba, 0x21, 0x67, 0x81, 0x73, 0x86, 0x1b, 0x70, 0x37, 0x83, - 0x40, 0x92, 0x28, 0x96, 0x63, 0x9f, 0xb8, 0x9a, 0x43, 0xfa, 0xe9, 0x1c, 0x8b, 0xc9, 0x1c, 0xb7, - 0xa5, 0x28, 0x94, 0x13, 0x0d, 0xdf, 0x00, 0x0b, 0xfe, 0xd3, 0xf8, 0x9c, 0x8b, 0xc5, 0x59, 0x11, - 0x64, 0x0b, 0xbb, 0x51, 0x17, 0x8a, 0xe3, 0xd8, 0xd0, 0xac, 0xae, 0x4b, 0x9c, 0x21, 0xe9, 0xbf, - 0xe3, 0x7b, 0x00, 0x26, 0x94, 0x65, 0x2e, 0x94, 0xe1, 0xd0, 0xf6, 0x32, 0x08, 0x24, 0x89, 0x62, - 0x43, 0xf3, 0xab, 0x26, 0x33, 0xb4, 0xd9, 0xe4, 0xd0, 0x0e, 0xa5, 0x28, 0x94, 0x13, 0xcd, 0x6a, - 0xcf, 0x4f, 0x79, 0x6b, 0x88, 0x35, 0x1d, 0x77, 0x75, 0x52, 0x9d, 0x4b, 0xd6, 0xde, 0x6e, 0xb2, - 0x1b, 0xa5, 0xf1, 0xf0, 0x1d, 0x70, 0xc5, 0x6f, 0x3a, 0x34, 0x71, 0x48, 0x52, 0xe1, 0x24, 0x2f, - 0x09, 0x92, 0x2b, 0xbb, 0x69, 0x00, 0xca, 0xc6, 0xc0, 0xb7, 0xc0, 0x52, 0xcf, 0xd2, 0x75, 0x5e, - 0x8f, 0x6d, 0xcb, 0x33, 0x69, 0x75, 0x9e, 0xb3, 0x40, 0xb6, 0x87, 0xda, 0x89, 0x1e, 0x94, 0x42, - 0xc2, 0x87, 0x00, 0xf4, 0x02, 0x39, 0x70, 0xab, 0x20, 0x5f, 0xe8, 0xb3, 0x3a, 0x14, 0x09, 0x70, - 0xd8, 0xe4, 0xa2, 0x18, 0x5b, 0xe3, 0x43, 0x05, 0xac, 0xe7, 0xec, 0x71, 0xf8, 0xbd, 0x84, 0xea, - 0xdd, 0x4a, 0xa9, 0xde, 0xb5, 0x9c, 0xb0, 0x98, 0xf4, 0xf5, 0xc0, 0x22, 0xf3, 0x1d, 0x9a, 0x39, - 0xf0, 0x21, 0xe2, 0x04, 0x7b, 0x55, 0x96, 0x3b, 0x8a, 0x03, 0xa3, 0x63, 0xf8, 0xca, 0xf8, 0xa4, - 0xbe, 0x98, 0xe8, 0x43, 0x49, 0xce, 0xc6, 0x2f, 0x0b, 0x00, 0x6c, 0x13, 0x5b, 0xb7, 0x46, 0x06, - 0x31, 0x2f, 0xc2, 0xb5, 0x6c, 0x27, 0x5c, 0x4b, 0x43, 0xba, 0x10, 0x61, 0x3e, 0xb9, 0xb6, 0x65, - 0x27, 0x65, 0x5b, 0xbe, 0x31, 0x81, 0xe7, 0x74, 0xdf, 0xf2, 0x8f, 0x22, 0x58, 0x89, 0xc0, 0x91, - 0x71, 0xb9, 0x97, 0x58, 0xc2, 0x57, 0x52, 0x4b, 0xb8, 0x2e, 0x09, 0x79, 0x6e, 0xce, 0xe5, 0xf3, - 0x77, 0x10, 0xf0, 0x03, 0xb0, 0xc4, 0xac, 0x8a, 0x5f, 0x08, 0xdc, 0x08, 0xcd, 0x9e, 0xd9, 0x08, - 0x85, 0x42, 0xb6, 0x93, 0x60, 0x42, 0x29, 0xe6, 0x1c, 0xe3, 0x35, 0xf7, 0xbc, 0x8d, 0x57, 0xe3, - 0x0f, 0x0a, 0x58, 0x8a, 0x96, 0xe9, 0x02, 0x6c, 0x52, 0x3b, 0x69, 0x93, 0x6a, 0xa7, 0xd7, 0x65, - 0x8e, 0x4f, 0xfa, 0x7b, 0x29, 0x9e, 0x35, 0x37, 0x4a, 0x1b, 0xec, 0x85, 0xca, 0xd6, 0xb5, 0x1e, - 0x76, 0x85, 0xac, 0x5e, 0xf2, 0x5f, 0xa6, 0xfc, 0x36, 0x14, 0xf6, 0x26, 0x2c, 0x55, 0xe1, 0xf9, - 0x5a, 0xaa, 0xe2, 0xe7, 0x63, 0xa9, 0xee, 0x83, 0x8a, 0x1b, 0x98, 0xa9, 0x12, 0xa7, 0xbc, 0x31, - 0x69, 0x3b, 0x0b, 0x1f, 0x15, 0xb2, 0x86, 0x0e, 0x2a, 0x64, 0x92, 0x79, 0xa7, 0xf2, 0x17, 0xe9, - 0x9d, 0xd8, 0x16, 0xb6, 0xb1, 0xe7, 0x92, 0x3e, 0xaf, 0xfb, 0x4a, 0xb4, 0x85, 0xf7, 0x79, 0x2b, - 0x12, 0xbd, 0xf0, 0x10, 0xac, 0xdb, 0x8e, 0x35, 0x70, 0x88, 0xeb, 0x6e, 0x13, 0xdc, 0xd7, 0x35, - 0x93, 0x04, 0x03, 0xf0, 0x55, 0xef, 0xda, 0xf8, 0xa4, 0xbe, 0xbe, 0x2f, 0x87, 0xa0, 0xbc, 0xd8, - 0xc6, 0x9f, 0x4b, 0xe0, 0x72, 0xfa, 0x44, 0xcc, 0x31, 0x22, 0xca, 0xb9, 0x8c, 0xc8, 0x6b, 0xb1, - 0x12, 0xf5, 0x5d, 0x5a, 0xec, 0x9d, 0x3f, 0x53, 0xa6, 0x5b, 0x60, 0x59, 0x18, 0x8f, 0xa0, 0x53, - 0x58, 0xb1, 0x70, 0x79, 0x0e, 0x93, 0xdd, 0x28, 0x8d, 0x67, 0xf6, 0x22, 0x72, 0x0d, 0x01, 0x49, - 0x29, 0x69, 0x2f, 0xb6, 0xd2, 0x00, 0x94, 0x8d, 0x81, 0x1d, 0xb0, 0xe2, 0x99, 0x59, 0x2a, 0xbf, - 0x5c, 0xae, 0x09, 0xaa, 0x95, 0xc3, 0x2c, 0x04, 0xc9, 0xe2, 0xe0, 0x8f, 0x13, 0x8e, 0x63, 0x96, - 0x1f, 0x04, 0xaf, 0x9c, 0x5e, 0xd1, 0x53, 0x5b, 0x0e, 0x78, 0x0f, 0x2c, 0x3a, 0xdc, 0x50, 0x06, - 0x59, 0xfa, 0xa6, 0xec, 0x2b, 0x22, 0x6c, 0x11, 0xc5, 0x3b, 0x51, 0x12, 0x2b, 0xf1, 0x51, 0x95, - 0x69, 0x7d, 0x54, 0xe3, 0x4f, 0x0a, 0x80, 0xd9, 0x2d, 0x38, 0xf1, 0xe5, 0x3e, 0x13, 0x11, 0x93, - 0xc8, 0xbe, 0xdc, 0xe1, 0xdc, 0x9a, 0xec, 0x70, 0xa2, 0x13, 0x74, 0x3a, 0x8b, 0x23, 0x66, 0xe0, - 0x62, 0x2e, 0x66, 0xa6, 0xb0, 0x38, 0x51, 0x3e, 0xcf, 0x66, 0x71, 0x62, 0x3c, 0xa7, 0x5b, 0x9c, - 0x7f, 0x17, 0xc0, 0x4a, 0x04, 0x9e, 0xda, 0xe2, 0x48, 0x42, 0x5e, 0x5c, 0xce, 0x4c, 0xbe, 0x9c, - 0x61, 0xb6, 0x23, 0x9a, 0xba, 0xff, 0x13, 0xdb, 0x11, 0x25, 0x94, 0x63, 0x3b, 0x7e, 0x57, 0x88, - 0x67, 0xfd, 0xa5, 0xb7, 0x1d, 0xcf, 0x7e, 0xb9, 0xd2, 0xf8, 0x4b, 0x11, 0x5c, 0x4e, 0x6f, 0xc1, - 0x84, 0x0e, 0x2a, 0x13, 0x75, 0x70, 0x1f, 0xac, 0x3e, 0xf2, 0x74, 0x7d, 0xc4, 0xa7, 0x21, 0x26, - 0x86, 0xbe, 0x82, 0x7e, 0x55, 0x44, 0xae, 0x7e, 0x5f, 0x82, 0x41, 0xd2, 0xc8, 0x1c, 0x4d, 0x2f, - 0x9e, 0x4b, 0xd3, 0x33, 0x6a, 0x53, 0x3a, 0x83, 0xda, 0x48, 0xf5, 0xb9, 0x7c, 0x0e, 0x7d, 0x9e, - 0x5a, 0x50, 0x25, 0xc7, 0xd5, 0xc4, 0x77, 0xf8, 0x5f, 0x2b, 0x60, 0x4d, 0xfe, 0xfa, 0x0c, 0x75, - 0xb0, 0x64, 0xe0, 0xc7, 0xf1, 0xcb, 0x8b, 0x49, 0x82, 0xe1, 0x51, 0x4d, 0x57, 0xfd, 0xaf, 0x3b, - 0xea, 0xbb, 0x26, 0xdd, 0x73, 0x0e, 0xa8, 0xa3, 0x99, 0x03, 0x5f, 0x60, 0x3b, 0x09, 0x2e, 0x94, - 0xe2, 0x6e, 0x7c, 0xa2, 0x80, 0xf5, 0x1c, 0x95, 0xbb, 0xd8, 0x4c, 0xe0, 0x43, 0x50, 0x31, 0xf0, - 0xe3, 0x03, 0xcf, 0x19, 0x04, 0x92, 0x7c, 0xf6, 0xe7, 0xf0, 0x8d, 0xdc, 0x11, 0x2c, 0x28, 0xe4, - 0x6b, 0xec, 0x81, 0xeb, 0x89, 0x41, 0xb2, 0x4d, 0x43, 0x1e, 0x79, 0x3a, 0xdf, 0x3f, 0xc2, 0x53, - 0xdc, 0x02, 0xf3, 0x36, 0x76, 0xa8, 0x16, 0x9a, 0xd1, 0x72, 0x6b, 0x71, 0x7c, 0x52, 0x9f, 0xdf, - 0x0f, 0x1a, 0x51, 0xd4, 0xdf, 0xf8, 0x55, 0x01, 0x2c, 0xc4, 0x48, 0x2e, 0x40, 0xdf, 0xdf, 0x4e, - 0xe8, 0xbb, 0xf4, 0x8b, 0x49, 0x7c, 0x54, 0x79, 0x02, 0xdf, 0x49, 0x09, 0xfc, 0x37, 0x27, 0x11, - 0x9d, 0xae, 0xf0, 0x9f, 0x16, 0xc0, 0x6a, 0x0c, 0x1d, 0x49, 0xfc, 0x77, 0x12, 0x12, 0xbf, 0x91, - 0x92, 0xf8, 0xaa, 0x2c, 0xe6, 0x85, 0xc6, 0x4f, 0xd6, 0xf8, 0x3f, 0x2a, 0x60, 0x39, 0x36, 0x77, - 0x17, 0x20, 0xf2, 0xdb, 0x49, 0x91, 0xaf, 0x4f, 0xa8, 0x97, 0x1c, 0x95, 0x7f, 0x52, 0x4e, 0xe4, - 0xfd, 0xa5, 0x97, 0xf9, 0x9f, 0x83, 0xd5, 0xa1, 0xa5, 0x7b, 0x06, 0x69, 0xeb, 0x58, 0x33, 0x02, - 0x00, 0x53, 0x32, 0x36, 0x89, 0x37, 0xa5, 0xf4, 0xc4, 0x71, 0x35, 0x97, 0x12, 0x93, 0x3e, 0x88, - 0x22, 0x23, 0x2d, 0x7e, 0x20, 0xa1, 0x43, 0xd2, 0x87, 0xc0, 0x37, 0xc0, 0x02, 0xd3, 0x54, 0xad, - 0x47, 0x76, 0xb1, 0x11, 0xd4, 0x54, 0xf8, 0x7d, 0xe0, 0x20, 0xea, 0x42, 0x71, 0x1c, 0x3c, 0x02, - 0x2b, 0xb6, 0xd5, 0xef, 0x60, 0x13, 0x0f, 0x08, 0x3b, 0xff, 0xf7, 0xf9, 0xff, 0x42, 0xf0, 0x7b, - 0x87, 0xf9, 0xd6, 0x9b, 0xc1, 0x0b, 0xe9, 0x7e, 0x16, 0xc2, 0x3c, 0xbb, 0xa4, 0x99, 0xef, 0x67, - 0x19, 0x25, 0x34, 0x32, 0x9f, 0xb3, 0xe6, 0x32, 0xff, 0x03, 0x20, 0x2b, 0xae, 0x73, 0x7e, 0xd0, - 0xca, 0xbb, 0x51, 0xa9, 0x9c, 0xeb, 0x6b, 0xd4, 0xa7, 0x25, 0x70, 0x25, 0x73, 0x40, 0x7e, 0x81, - 0x77, 0x1a, 0x19, 0xb7, 0x54, 0x3c, 0x83, 0x5b, 0xda, 0x02, 0xcb, 0xe2, 0x43, 0x58, 0xca, 0x6c, - 0x85, 0x76, 0xb4, 0x9d, 0xec, 0x46, 0x69, 0xbc, 0xec, 0x4e, 0xa5, 0x7c, 0xc6, 0x3b, 0x95, 0x78, - 0x16, 0xe2, 0xff, 0x37, 0xfc, 0xaa, 0xcb, 0x66, 0x21, 0xfe, 0x8d, 0x23, 0x8d, 0x87, 0xdf, 0x0d, - 0x4a, 0x2a, 0x64, 0x98, 0xe3, 0x0c, 0xa9, 0x1a, 0x09, 0x09, 0x52, 0xe8, 0x67, 0xfa, 0xd8, 0xf3, - 0xbe, 0xe4, 0x63, 0xcf, 0xc6, 0x84, 0x52, 0x9e, 0xde, 0x2a, 0xfe, 0x4d, 0x01, 0x2f, 0xe5, 0xee, - 0x01, 0xb8, 0x95, 0xd0, 0xd9, 0xdb, 0x29, 0x9d, 0x7d, 0x39, 0x37, 0x30, 0x26, 0xb6, 0x86, 0xfc, - 0x42, 0xe4, 0xee, 0xc4, 0x0b, 0x11, 0x89, 0x8b, 0x9a, 0x7c, 0x33, 0xd2, 0xda, 0x78, 0xf2, 0xb4, - 0x36, 0xf3, 0xd1, 0xd3, 0xda, 0xcc, 0xc7, 0x4f, 0x6b, 0x33, 0xbf, 0x18, 0xd7, 0x94, 0x27, 0xe3, - 0x9a, 0xf2, 0xd1, 0xb8, 0xa6, 0x7c, 0x3c, 0xae, 0x29, 0xff, 0x1c, 0xd7, 0x94, 0xdf, 0x7e, 0x52, - 0x9b, 0x79, 0x58, 0x18, 0x6e, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x70, 0x5f, 0xbf, 0x58, 0x3d, - 0x26, 0x00, 0x00, + 0x60, 0xe3, 0x64, 0xb3, 0x3d, 0xec, 0x66, 0x13, 0xa1, 0x2c, 0x02, 0x79, 0xc6, 0x21, 0x84, 0x78, + 0x6c, 0x53, 0x5e, 0xef, 0x61, 0x09, 0x12, 0xe5, 0xe9, 0xda, 0x71, 0xc7, 0xfd, 0xa5, 0xee, 0xea, + 0x61, 0x47, 0x5c, 0x10, 0x12, 0x9c, 0x38, 0xf0, 0x9f, 0x20, 0x84, 0xe0, 0x86, 0x22, 0xc4, 0x65, + 0x2f, 0x48, 0x11, 0x17, 0x72, 0xb2, 0xd8, 0xc9, 0x09, 0xa1, 0x1c, 0xb9, 0xe4, 0x02, 0xaa, 0xea, + 0xea, 0xef, 0x6a, 0xcf, 0xd8, 0x9b, 0x75, 0x50, 0x94, 0x9b, 0xa7, 0xea, 0xfd, 0x5e, 0xff, 0xaa, + 0xea, 0x57, 0xf5, 0x5e, 0x57, 0x1b, 0xdc, 0x3b, 0xfe, 0xb6, 0xa7, 0xea, 0x76, 0xfb, 0xd8, 0x3f, + 0x24, 0xae, 0x45, 0x28, 0xf1, 0xda, 0x43, 0x62, 0x69, 0xb6, 0xdb, 0x16, 0x1d, 0xd8, 0xd1, 0xdb, + 0xd8, 0x71, 0xbc, 0xf6, 0xf0, 0x76, 0x7b, 0x40, 0x2c, 0xe2, 0x62, 0x4a, 0x34, 0xd5, 0x71, 0x6d, + 0x6a, 0x43, 0x18, 0x60, 0x54, 0xec, 0xe8, 0x2a, 0xc3, 0xa8, 0xc3, 0xdb, 0x57, 0x6f, 0x0d, 0x74, + 0x7a, 0xe4, 0x1f, 0xaa, 0x7d, 0xdb, 0x6c, 0x0f, 0xec, 0x81, 0xdd, 0xe6, 0xd0, 0x43, 0xff, 0x11, + 0xff, 0xc5, 0x7f, 0xf0, 0xbf, 0x02, 0x8a, 0xab, 0xad, 0xc4, 0x63, 0xfa, 0xb6, 0x4b, 0x24, 0x8f, + 0xb9, 0x7a, 0x37, 0xc6, 0x98, 0xb8, 0x7f, 0xa4, 0x5b, 0xc4, 0x1d, 0xb5, 0x9d, 0xe3, 0x01, 0x6b, + 0xf0, 0xda, 0x26, 0xa1, 0x58, 0x16, 0xd5, 0x2e, 0x8a, 0x72, 0x7d, 0x8b, 0xea, 0x26, 0xc9, 0x05, + 0xbc, 0x31, 0x29, 0xc0, 0xeb, 0x1f, 0x11, 0x13, 0xe7, 0xe2, 0x5e, 0x2b, 0x8a, 0xf3, 0xa9, 0x6e, + 0xb4, 0x75, 0x8b, 0x7a, 0xd4, 0xcd, 0x06, 0xb5, 0xfe, 0xa3, 0x00, 0xd8, 0xb5, 0x2d, 0xea, 0xda, + 0x86, 0x41, 0x5c, 0x44, 0x86, 0xba, 0xa7, 0xdb, 0x16, 0xfc, 0x29, 0xa8, 0xb1, 0xf1, 0x68, 0x98, + 0xe2, 0xba, 0x72, 0x5d, 0xd9, 0x58, 0xb8, 0xf3, 0x2d, 0x35, 0x9e, 0xe4, 0x88, 0x5e, 0x75, 0x8e, + 0x07, 0xac, 0xc1, 0x53, 0x19, 0x5a, 0x1d, 0xde, 0x56, 0x77, 0x0f, 0xdf, 0x27, 0x7d, 0xda, 0x23, + 0x14, 0x77, 0xe0, 0x93, 0x93, 0xe6, 0xcc, 0xf8, 0xa4, 0x09, 0xe2, 0x36, 0x14, 0xb1, 0xc2, 0x5d, + 0x50, 0xe1, 0xec, 0x25, 0xce, 0x7e, 0xab, 0x90, 0x5d, 0x0c, 0x5a, 0x45, 0xf8, 0x67, 0x6f, 0x3d, + 0xa6, 0xc4, 0x62, 0xe9, 0x75, 0x2e, 0x09, 0xea, 0xca, 0x16, 0xa6, 0x18, 0x71, 0x22, 0xf8, 0x2a, + 0xa8, 0xb9, 0x22, 0xfd, 0x7a, 0xf9, 0xba, 0xb2, 0x51, 0xee, 0x5c, 0x16, 0xa8, 0x5a, 0x38, 0x2c, + 0x14, 0x21, 0x5a, 0x7f, 0x55, 0xc0, 0x5a, 0x7e, 0xdc, 0xdb, 0xba, 0x47, 0xe1, 0x7b, 0xb9, 0xb1, + 0xab, 0xd3, 0x8d, 0x9d, 0x45, 0xf3, 0x91, 0x47, 0x0f, 0x0e, 0x5b, 0x12, 0xe3, 0x7e, 0x17, 0x54, + 0x75, 0x4a, 0x4c, 0xaf, 0x5e, 0xba, 0x5e, 0xde, 0x58, 0xb8, 0x73, 0x43, 0xcd, 0xd7, 0xae, 0x9a, + 0x4f, 0xac, 0xb3, 0x28, 0x28, 0xab, 0xef, 0xb0, 0x60, 0x14, 0x70, 0xb4, 0xfe, 0xab, 0x80, 0xf9, + 0x2d, 0x4c, 0x4c, 0xdb, 0xda, 0x27, 0xf4, 0x02, 0x16, 0xad, 0x0b, 0x2a, 0x9e, 0x43, 0xfa, 0x62, + 0xd1, 0xbe, 0x26, 0xcb, 0x3d, 0x4a, 0x67, 0xdf, 0x21, 0xfd, 0x78, 0xa1, 0xd8, 0x2f, 0xc4, 0x83, + 0xe1, 0xbb, 0x60, 0xd6, 0xa3, 0x98, 0xfa, 0x1e, 0x5f, 0xa6, 0x85, 0x3b, 0x5f, 0x3f, 0x9d, 0x86, + 0x43, 0x3b, 0x4b, 0x82, 0x68, 0x36, 0xf8, 0x8d, 0x04, 0x45, 0xeb, 0x5f, 0x25, 0x00, 0x23, 0x6c, + 0xd7, 0xb6, 0x34, 0x9d, 0xb2, 0xfa, 0x7d, 0x13, 0x54, 0xe8, 0xc8, 0x21, 0x7c, 0x1a, 0xe6, 0x3b, + 0x37, 0xc2, 0x2c, 0xee, 0x8f, 0x1c, 0xf2, 0xe9, 0x49, 0x73, 0x2d, 0x1f, 0xc1, 0x7a, 0x10, 0x8f, + 0x81, 0xdb, 0x51, 0x7e, 0x25, 0x1e, 0x7d, 0x37, 0xfd, 0xe8, 0x4f, 0x4f, 0x9a, 0x92, 0xc3, 0x42, + 0x8d, 0x98, 0xd2, 0x09, 0xc2, 0x21, 0x80, 0x06, 0xf6, 0xe8, 0x7d, 0x17, 0x5b, 0x5e, 0xf0, 0x24, + 0xdd, 0x24, 0x62, 0xe4, 0xaf, 0x4c, 0xb7, 0x3c, 0x2c, 0xa2, 0x73, 0x55, 0x64, 0x01, 0xb7, 0x73, + 0x6c, 0x48, 0xf2, 0x04, 0x78, 0x03, 0xcc, 0xba, 0x04, 0x7b, 0xb6, 0x55, 0xaf, 0xf0, 0x51, 0x44, + 0x13, 0x88, 0x78, 0x2b, 0x12, 0xbd, 0xf0, 0x65, 0x30, 0x67, 0x12, 0xcf, 0xc3, 0x03, 0x52, 0xaf, + 0x72, 0xe0, 0xb2, 0x00, 0xce, 0xf5, 0x82, 0x66, 0x14, 0xf6, 0xb7, 0x7e, 0xaf, 0x80, 0xc5, 0x68, + 0xe6, 0x2e, 0x60, 0xab, 0x74, 0xd2, 0x5b, 0xe5, 0xc5, 0x53, 0xeb, 0xa4, 0x60, 0x87, 0x7c, 0x50, + 0x4e, 0xe4, 0xcc, 0x8a, 0x10, 0xfe, 0x04, 0xd4, 0x3c, 0x62, 0x90, 0x3e, 0xb5, 0x5d, 0x91, 0xf3, + 0x6b, 0x53, 0xe6, 0x8c, 0x0f, 0x89, 0xb1, 0x2f, 0x42, 0x3b, 0x97, 0x58, 0xd2, 0xe1, 0x2f, 0x14, + 0x51, 0xc2, 0x1f, 0x81, 0x1a, 0x25, 0xa6, 0x63, 0x60, 0x4a, 0xc4, 0x36, 0x49, 0xd5, 0x37, 0x2b, + 0x17, 0x46, 0xb6, 0x67, 0x6b, 0xf7, 0x05, 0x8c, 0x6f, 0x94, 0x68, 0x1e, 0xc2, 0x56, 0x14, 0xd1, + 0xc0, 0x63, 0xb0, 0xe4, 0x3b, 0x1a, 0x43, 0x52, 0x76, 0x74, 0x0f, 0x46, 0xa2, 0x7c, 0x6e, 0x9e, + 0x3a, 0x21, 0x07, 0xa9, 0x90, 0xce, 0x9a, 0x78, 0xc0, 0x52, 0xba, 0x1d, 0x65, 0xa8, 0xe1, 0x26, + 0x58, 0x36, 0x75, 0x0b, 0x11, 0xac, 0x8d, 0xf6, 0x49, 0xdf, 0xb6, 0x34, 0x8f, 0x17, 0x50, 0xb5, + 0xb3, 0x2e, 0x08, 0x96, 0x7b, 0xe9, 0x6e, 0x94, 0xc5, 0xc3, 0x6d, 0xb0, 0x1a, 0x9e, 0xb3, 0x3f, + 0xd0, 0x3d, 0x6a, 0xbb, 0xa3, 0x6d, 0xdd, 0xd4, 0x69, 0x7d, 0x96, 0xf3, 0xd4, 0xc7, 0x27, 0xcd, + 0x55, 0x24, 0xe9, 0x47, 0xd2, 0xa8, 0xd6, 0x6f, 0x66, 0xc1, 0x72, 0xe6, 0x34, 0x80, 0x0f, 0xc0, + 0x5a, 0xdf, 0x77, 0x5d, 0x62, 0xd1, 0x1d, 0xdf, 0x3c, 0x24, 0xee, 0x7e, 0xff, 0x88, 0x68, 0xbe, + 0x41, 0x34, 0xbe, 0xa2, 0xd5, 0x4e, 0x43, 0xe4, 0xba, 0xd6, 0x95, 0xa2, 0x50, 0x41, 0x34, 0xfc, + 0x21, 0x80, 0x16, 0x6f, 0xea, 0xe9, 0x9e, 0x17, 0x71, 0x96, 0x38, 0x67, 0xb4, 0x01, 0x77, 0x72, + 0x08, 0x24, 0x89, 0x62, 0x39, 0x6a, 0xc4, 0xd3, 0x5d, 0xa2, 0x65, 0x73, 0x2c, 0xa7, 0x73, 0xdc, + 0x92, 0xa2, 0x50, 0x41, 0x34, 0x7c, 0x1d, 0x2c, 0x04, 0x4f, 0xe3, 0x73, 0x2e, 0x16, 0x67, 0x45, + 0x90, 0x2d, 0xec, 0xc4, 0x5d, 0x28, 0x89, 0x63, 0x43, 0xb3, 0x0f, 0x3d, 0xe2, 0x0e, 0x89, 0xf6, + 0x76, 0xe0, 0x01, 0x98, 0x50, 0x56, 0xb9, 0x50, 0x46, 0x43, 0xdb, 0xcd, 0x21, 0x90, 0x24, 0x8a, + 0x0d, 0x2d, 0xa8, 0x9a, 0xdc, 0xd0, 0x66, 0xd3, 0x43, 0x3b, 0x90, 0xa2, 0x50, 0x41, 0x34, 0xab, + 0xbd, 0x20, 0xe5, 0xcd, 0x21, 0xd6, 0x0d, 0x7c, 0x68, 0x90, 0xfa, 0x5c, 0xba, 0xf6, 0x76, 0xd2, + 0xdd, 0x28, 0x8b, 0x87, 0x6f, 0x83, 0x2b, 0x41, 0xd3, 0x81, 0x85, 0x23, 0x92, 0x1a, 0x27, 0x79, + 0x41, 0x90, 0x5c, 0xd9, 0xc9, 0x02, 0x50, 0x3e, 0x06, 0xbe, 0x09, 0x96, 0xfa, 0xb6, 0x61, 0xf0, + 0x7a, 0xec, 0xda, 0xbe, 0x45, 0xeb, 0xf3, 0x9c, 0x05, 0xb2, 0x3d, 0xd4, 0x4d, 0xf5, 0xa0, 0x0c, + 0x12, 0x3e, 0x04, 0xa0, 0x1f, 0xca, 0x81, 0x57, 0x07, 0xc5, 0x42, 0x9f, 0xd7, 0xa1, 0x58, 0x80, + 0xa3, 0x26, 0x0f, 0x25, 0xd8, 0x5a, 0x1f, 0x28, 0x60, 0xbd, 0x60, 0x8f, 0xc3, 0xef, 0xa5, 0x54, + 0xef, 0x66, 0x46, 0xf5, 0xae, 0x15, 0x84, 0x25, 0xa4, 0xaf, 0x0f, 0x16, 0x99, 0xef, 0xd0, 0xad, + 0x41, 0x00, 0x11, 0x27, 0xd8, 0x2b, 0xb2, 0xdc, 0x51, 0x12, 0x18, 0x1f, 0xc3, 0x57, 0xc6, 0x27, + 0xcd, 0xc5, 0x54, 0x1f, 0x4a, 0x73, 0xb6, 0x7e, 0x59, 0x02, 0x60, 0x8b, 0x38, 0x86, 0x3d, 0x32, + 0x89, 0x75, 0x11, 0xae, 0x65, 0x2b, 0xe5, 0x5a, 0x5a, 0xd2, 0x85, 0x88, 0xf2, 0x29, 0xb4, 0x2d, + 0xdb, 0x19, 0xdb, 0xf2, 0x8d, 0x09, 0x3c, 0xa7, 0xfb, 0x96, 0x7f, 0x94, 0xc1, 0x4a, 0x0c, 0x8e, + 0x8d, 0xcb, 0xbd, 0xd4, 0x12, 0xbe, 0x94, 0x59, 0xc2, 0x75, 0x49, 0xc8, 0x73, 0x73, 0x2e, 0x9f, + 0xbd, 0x83, 0x80, 0xef, 0x83, 0x25, 0x66, 0x55, 0x82, 0x42, 0xe0, 0x46, 0x68, 0xf6, 0xcc, 0x46, + 0x28, 0x12, 0xb2, 0xed, 0x14, 0x13, 0xca, 0x30, 0x17, 0x18, 0xaf, 0xb9, 0xe7, 0x6d, 0xbc, 0x5a, + 0x7f, 0x50, 0xc0, 0x52, 0xbc, 0x4c, 0x17, 0x60, 0x93, 0xba, 0x69, 0x9b, 0xd4, 0x38, 0xbd, 0x2e, + 0x0b, 0x7c, 0xd2, 0xdf, 0x2b, 0xc9, 0xac, 0xb9, 0x51, 0xda, 0x60, 0x2f, 0x54, 0x8e, 0xa1, 0xf7, + 0xb1, 0x27, 0x64, 0xf5, 0x52, 0xf0, 0x32, 0x15, 0xb4, 0xa1, 0xa8, 0x37, 0x65, 0xa9, 0x4a, 0xcf, + 0xd7, 0x52, 0x95, 0x3f, 0x1b, 0x4b, 0x75, 0x1f, 0xd4, 0xbc, 0xd0, 0x4c, 0x55, 0x38, 0xe5, 0x8d, + 0x49, 0xdb, 0x59, 0xf8, 0xa8, 0x88, 0x35, 0x72, 0x50, 0x11, 0x93, 0xcc, 0x3b, 0x55, 0x3f, 0x4f, + 0xef, 0xc4, 0xb6, 0xb0, 0x83, 0x7d, 0x8f, 0x68, 0xbc, 0xee, 0x6b, 0xf1, 0x16, 0xde, 0xe3, 0xad, + 0x48, 0xf4, 0xc2, 0x03, 0xb0, 0xee, 0xb8, 0xf6, 0xc0, 0x25, 0x9e, 0xb7, 0x45, 0xb0, 0x66, 0xe8, + 0x16, 0x09, 0x07, 0x10, 0xa8, 0xde, 0xb5, 0xf1, 0x49, 0x73, 0x7d, 0x4f, 0x0e, 0x41, 0x45, 0xb1, + 0xad, 0x3f, 0x57, 0xc0, 0xe5, 0xec, 0x89, 0x58, 0x60, 0x44, 0x94, 0x73, 0x19, 0x91, 0x57, 0x13, + 0x25, 0x1a, 0xb8, 0xb4, 0xc4, 0x3b, 0x7f, 0xae, 0x4c, 0x37, 0xc1, 0xb2, 0x30, 0x1e, 0x61, 0xa7, + 0xb0, 0x62, 0xd1, 0xf2, 0x1c, 0xa4, 0xbb, 0x51, 0x16, 0xcf, 0xec, 0x45, 0xec, 0x1a, 0x42, 0x92, + 0x4a, 0xda, 0x5e, 0x6c, 0x66, 0x01, 0x28, 0x1f, 0x03, 0x7b, 0x60, 0xc5, 0xb7, 0xf2, 0x54, 0x41, + 0xb9, 0x5c, 0x13, 0x54, 0x2b, 0x07, 0x79, 0x08, 0x92, 0xc5, 0xc1, 0x1f, 0xa7, 0x1c, 0xc7, 0x2c, + 0x3f, 0x08, 0x5e, 0x3a, 0xbd, 0xa2, 0xa7, 0xb6, 0x1c, 0xf0, 0x1e, 0x58, 0x74, 0xb9, 0xa1, 0x0c, + 0xb3, 0x0c, 0x4c, 0xd9, 0x57, 0x44, 0xd8, 0x22, 0x4a, 0x76, 0xa2, 0x34, 0x56, 0xe2, 0xa3, 0x6a, + 0xd3, 0xfa, 0xa8, 0xd6, 0x9f, 0x14, 0x00, 0xf3, 0x5b, 0x70, 0xe2, 0xcb, 0x7d, 0x2e, 0x22, 0x21, + 0x91, 0x9a, 0xdc, 0xe1, 0xdc, 0x9c, 0xec, 0x70, 0xe2, 0x13, 0x74, 0x3a, 0x8b, 0x23, 0x66, 0xe0, + 0x62, 0x2e, 0x66, 0xa6, 0xb0, 0x38, 0x71, 0x3e, 0xcf, 0x66, 0x71, 0x12, 0x3c, 0xa7, 0x5b, 0x9c, + 0x7f, 0x97, 0xc0, 0x4a, 0x0c, 0x9e, 0xda, 0xe2, 0x48, 0x42, 0xbe, 0xbc, 0x9c, 0x99, 0x7c, 0x39, + 0xc3, 0x6c, 0x47, 0x3c, 0x75, 0xff, 0x27, 0xb6, 0x23, 0x4e, 0xa8, 0xc0, 0x76, 0xfc, 0xae, 0x94, + 0xcc, 0xfa, 0x0b, 0x6f, 0x3b, 0x9e, 0xfd, 0x72, 0xa5, 0xf5, 0x97, 0x32, 0xb8, 0x9c, 0xdd, 0x82, + 0x29, 0x1d, 0x54, 0x26, 0xea, 0xe0, 0x1e, 0x58, 0x7d, 0xe4, 0x1b, 0xc6, 0x88, 0x4f, 0x43, 0x42, + 0x0c, 0x03, 0x05, 0xfd, 0xaa, 0x88, 0x5c, 0xfd, 0xbe, 0x04, 0x83, 0xa4, 0x91, 0x05, 0x9a, 0x5e, + 0x3e, 0x97, 0xa6, 0xe7, 0xd4, 0xa6, 0x72, 0x06, 0xb5, 0x91, 0xea, 0x73, 0xf5, 0x1c, 0xfa, 0x3c, + 0xb5, 0xa0, 0x4a, 0x8e, 0xab, 0x89, 0xef, 0xf0, 0xbf, 0x56, 0xc0, 0x9a, 0xfc, 0xf5, 0x19, 0x1a, + 0x60, 0xc9, 0xc4, 0x8f, 0x93, 0x97, 0x17, 0x93, 0x04, 0xc3, 0xa7, 0xba, 0xa1, 0x06, 0x5f, 0x77, + 0xd4, 0x77, 0x2c, 0xba, 0xeb, 0xee, 0x53, 0x57, 0xb7, 0x06, 0x81, 0xc0, 0xf6, 0x52, 0x5c, 0x28, + 0xc3, 0xdd, 0xfa, 0x58, 0x01, 0xeb, 0x05, 0x2a, 0x77, 0xb1, 0x99, 0xc0, 0x87, 0xa0, 0x66, 0xe2, + 0xc7, 0xfb, 0xbe, 0x3b, 0x08, 0x25, 0xf9, 0xec, 0xcf, 0xe1, 0x1b, 0xb9, 0x27, 0x58, 0x50, 0xc4, + 0xd7, 0xda, 0x05, 0xd7, 0x53, 0x83, 0x64, 0x9b, 0x86, 0x3c, 0xf2, 0x0d, 0xbe, 0x7f, 0x84, 0xa7, + 0xb8, 0x09, 0xe6, 0x1d, 0xec, 0x52, 0x3d, 0x32, 0xa3, 0xd5, 0xce, 0xe2, 0xf8, 0xa4, 0x39, 0xbf, + 0x17, 0x36, 0xa2, 0xb8, 0xbf, 0xf5, 0xab, 0x12, 0x58, 0x48, 0x90, 0x5c, 0x80, 0xbe, 0xbf, 0x95, + 0xd2, 0x77, 0xe9, 0x17, 0x93, 0xe4, 0xa8, 0x8a, 0x04, 0xbe, 0x97, 0x11, 0xf8, 0x6f, 0x4e, 0x22, + 0x3a, 0x5d, 0xe1, 0x3f, 0x29, 0x81, 0xd5, 0x04, 0x3a, 0x96, 0xf8, 0xef, 0xa4, 0x24, 0x7e, 0x23, + 0x23, 0xf1, 0x75, 0x59, 0xcc, 0x97, 0x1a, 0x3f, 0x59, 0xe3, 0xff, 0xa8, 0x80, 0xe5, 0xc4, 0xdc, + 0x5d, 0x80, 0xc8, 0x6f, 0xa5, 0x45, 0xbe, 0x39, 0xa1, 0x5e, 0x0a, 0x54, 0xfe, 0x49, 0x35, 0x95, + 0xf7, 0x17, 0x5e, 0xe6, 0x7f, 0x0e, 0x56, 0x87, 0xb6, 0xe1, 0x9b, 0xa4, 0x6b, 0x60, 0xdd, 0x0c, + 0x01, 0x4c, 0xc9, 0xd8, 0x24, 0xbe, 0x2c, 0xa5, 0x27, 0xae, 0xa7, 0x7b, 0x94, 0x58, 0xf4, 0x41, + 0x1c, 0x19, 0x6b, 0xf1, 0x03, 0x09, 0x1d, 0x92, 0x3e, 0x04, 0xbe, 0x0e, 0x16, 0x98, 0xa6, 0xea, + 0x7d, 0xb2, 0x83, 0xcd, 0xb0, 0xa6, 0xa2, 0xef, 0x03, 0xfb, 0x71, 0x17, 0x4a, 0xe2, 0xe0, 0x11, + 0x58, 0x71, 0x6c, 0xad, 0x87, 0x2d, 0x3c, 0x20, 0xec, 0xfc, 0xdf, 0xb3, 0x0d, 0xbd, 0x3f, 0xe2, + 0xf7, 0x0e, 0xf3, 0x9d, 0x37, 0xc2, 0x17, 0xd2, 0xbd, 0x3c, 0x84, 0x79, 0x76, 0x49, 0x33, 0xdf, + 0xcf, 0x32, 0x4a, 0x68, 0xe6, 0x3e, 0x67, 0xcd, 0xe5, 0xfe, 0x07, 0x40, 0x56, 0x5c, 0xe7, 0xfc, + 0xa0, 0x55, 0x74, 0xa3, 0x52, 0x3b, 0xd7, 0xd7, 0xa8, 0x4f, 0x2a, 0xe0, 0x4a, 0xee, 0x80, 0xfc, + 0x1c, 0xef, 0x34, 0x72, 0x6e, 0xa9, 0x7c, 0x06, 0xb7, 0xb4, 0x09, 0x96, 0xc5, 0x87, 0xb0, 0x8c, + 0xd9, 0x8a, 0xec, 0x68, 0x37, 0xdd, 0x8d, 0xb2, 0x78, 0xd9, 0x9d, 0x4a, 0xf5, 0x8c, 0x77, 0x2a, + 0xc9, 0x2c, 0xc4, 0xff, 0x6f, 0x04, 0x55, 0x97, 0xcf, 0x42, 0xfc, 0x1b, 0x47, 0x16, 0x0f, 0xbf, + 0x1b, 0x96, 0x54, 0xc4, 0x30, 0xc7, 0x19, 0x32, 0x35, 0x12, 0x11, 0x64, 0xd0, 0xcf, 0xf4, 0xb1, + 0xe7, 0x3d, 0xc9, 0xc7, 0x9e, 0x8d, 0x09, 0xa5, 0x3c, 0xbd, 0x55, 0xfc, 0x9b, 0x02, 0x5e, 0x28, + 0xdc, 0x03, 0x70, 0x33, 0xa5, 0xb3, 0xb7, 0x32, 0x3a, 0xfb, 0x62, 0x61, 0x60, 0x42, 0x6c, 0x4d, + 0xf9, 0x85, 0xc8, 0xdd, 0x89, 0x17, 0x22, 0x12, 0x17, 0x35, 0xf9, 0x66, 0xa4, 0xb3, 0xf1, 0xe4, + 0x69, 0x63, 0xe6, 0xc3, 0xa7, 0x8d, 0x99, 0x8f, 0x9e, 0x36, 0x66, 0x7e, 0x31, 0x6e, 0x28, 0x4f, + 0xc6, 0x0d, 0xe5, 0xc3, 0x71, 0x43, 0xf9, 0x68, 0xdc, 0x50, 0xfe, 0x39, 0x6e, 0x28, 0xbf, 0xfd, + 0xb8, 0x31, 0xf3, 0xb0, 0x34, 0xbc, 0xfd, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x6b, 0x01, + 0x7b, 0x12, 0x26, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/apps/v1/generated.proto b/vendor/k8s.io/api/apps/v1/generated.proto index 38d7c08cc8..c8a957ac68 100644 --- a/vendor/k8s.io/api/apps/v1/generated.proto +++ b/vendor/k8s.io/api/apps/v1/generated.proto @@ -22,7 +22,6 @@ syntax = 'proto2'; package k8s.io.api.apps.v1; import "k8s.io/api/core/v1/generated.proto"; -import "k8s.io/api/policy/v1beta1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; diff --git a/vendor/k8s.io/api/apps/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/apps/v1/zz_generated.deepcopy.go index 885203fca9..ccbb290615 100644 --- a/vendor/k8s.io/api/apps/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/apps/v1/zz_generated.deepcopy.go @@ -21,8 +21,8 @@ limitations under the License. package v1 import ( - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core_v1 "k8s.io/api/core/v1" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" ) @@ -170,15 +170,23 @@ func (in *DaemonSetSpec) DeepCopyInto(out *DaemonSetSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(metav1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -198,8 +206,12 @@ func (in *DaemonSetStatus) DeepCopyInto(out *DaemonSetStatus) { *out = *in if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -226,8 +238,12 @@ func (in *DaemonSetUpdateStrategy) DeepCopyInto(out *DaemonSetUpdateStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - *out = new(RollingUpdateDaemonSet) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDaemonSet) + (*in).DeepCopyInto(*out) + } } return } @@ -326,25 +342,41 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(metav1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) in.Strategy.DeepCopyInto(&out.Strategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.ProgressDeadlineSeconds != nil { in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -371,8 +403,12 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -392,8 +428,12 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - *out = new(RollingUpdateDeployment) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDeployment) + (*in).DeepCopyInto(*out) + } } return } @@ -491,13 +531,21 @@ func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(metav1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) return @@ -541,8 +589,12 @@ func (in *RollingUpdateDaemonSet) DeepCopyInto(out *RollingUpdateDaemonSet) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } return } @@ -562,13 +614,21 @@ func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } if in.MaxSurge != nil { in, out := &in.MaxSurge, &out.MaxSurge - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } return } @@ -588,8 +648,12 @@ func (in *RollingUpdateStatefulSetStrategy) DeepCopyInto(out *RollingUpdateState *out = *in if in.Partition != nil { in, out := &in.Partition, &out.Partition - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -687,18 +751,26 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(metav1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) if in.VolumeClaimTemplates != nil { in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates - *out = make([]corev1.PersistentVolumeClaim, len(*in)) + *out = make([]core_v1.PersistentVolumeClaim, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -706,8 +778,12 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -727,8 +803,12 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) { *out = *in if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -755,8 +835,12 @@ func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - *out = new(RollingUpdateStatefulSetStrategy) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateStatefulSetStrategy) + (*in).DeepCopyInto(*out) + } } return } diff --git a/vendor/k8s.io/api/apps/v1beta1/generated.pb.go b/vendor/k8s.io/api/apps/v1beta1/generated.pb.go index 6083082596..ef9aa8e09f 100644 --- a/vendor/k8s.io/api/apps/v1beta1/generated.pb.go +++ b/vendor/k8s.io/api/apps/v1beta1/generated.pb.go @@ -54,7 +54,6 @@ import fmt "fmt" import math "math" import k8s_io_api_core_v1 "k8s.io/api/core/v1" - import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -5170,122 +5169,122 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 1871 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x4f, 0x6f, 0x1b, 0xc7, - 0x15, 0xd7, 0x52, 0xa4, 0x44, 0x3d, 0x45, 0x94, 0x3d, 0x52, 0x2d, 0x46, 0x69, 0x29, 0x61, 0x1b, - 0x24, 0x72, 0x12, 0x2d, 0x63, 0x25, 0x0d, 0x12, 0xbb, 0x08, 0x2a, 0xca, 0x6e, 0xe2, 0x40, 0xaa, - 0x94, 0xa1, 0x94, 0xa2, 0x69, 0x0b, 0x64, 0xb8, 0x1c, 0xd3, 0x1b, 0xed, 0x3f, 0xec, 0x0e, 0x59, - 0x13, 0xbd, 0xf4, 0x03, 0x14, 0x48, 0xcf, 0xfd, 0x14, 0x3d, 0x16, 0xed, 0xad, 0x27, 0x5f, 0x0a, - 0x04, 0xbd, 0x34, 0x27, 0xa1, 0xa6, 0xaf, 0x6d, 0x6f, 0xbd, 0x18, 0x28, 0x50, 0xcc, 0xec, 0xec, - 0xff, 0x5d, 0x89, 0x2a, 0x20, 0x1d, 0x72, 0xe3, 0xce, 0x7b, 0xef, 0xf7, 0xde, 0xcc, 0xbc, 0xf7, - 0xe6, 0xfd, 0x08, 0x3f, 0x3a, 0x7d, 0xdf, 0xd7, 0x0c, 0xa7, 0x7d, 0x3a, 0xec, 0x51, 0xcf, 0xa6, - 0x8c, 0xfa, 0xed, 0x11, 0xb5, 0xfb, 0x8e, 0xd7, 0x96, 0x02, 0xe2, 0x1a, 0x6d, 0xe2, 0xba, 0x7e, - 0x7b, 0x74, 0xa7, 0x47, 0x19, 0xb9, 0xd3, 0x1e, 0x50, 0x9b, 0x7a, 0x84, 0xd1, 0xbe, 0xe6, 0x7a, - 0x0e, 0x73, 0xd0, 0x5a, 0xa0, 0xa8, 0x11, 0xd7, 0xd0, 0xb8, 0xa2, 0x26, 0x15, 0xd7, 0xb7, 0x07, - 0x06, 0x7b, 0x3c, 0xec, 0x69, 0xba, 0x63, 0xb5, 0x07, 0xce, 0xc0, 0x69, 0x0b, 0xfd, 0xde, 0xf0, - 0x91, 0xf8, 0x12, 0x1f, 0xe2, 0x57, 0x80, 0xb3, 0xae, 0x26, 0x1c, 0xea, 0x8e, 0x47, 0xdb, 0xa3, - 0x9c, 0xaf, 0xf5, 0xdb, 0x09, 0x1d, 0xd7, 0x31, 0x0d, 0x7d, 0x5c, 0x16, 0xd6, 0xfa, 0xbb, 0xb1, - 0xaa, 0x45, 0xf4, 0xc7, 0x86, 0x4d, 0xbd, 0x71, 0xdb, 0x3d, 0x1d, 0xf0, 0x05, 0xbf, 0x6d, 0x51, - 0x46, 0x8a, 0x1c, 0xb4, 0xcb, 0xac, 0xbc, 0xa1, 0xcd, 0x0c, 0x8b, 0xe6, 0x0c, 0xde, 0xbb, 0xc8, - 0xc0, 0xd7, 0x1f, 0x53, 0x8b, 0xe4, 0xec, 0xde, 0x29, 0xb3, 0x1b, 0x32, 0xc3, 0x6c, 0x1b, 0x36, - 0xf3, 0x99, 0x97, 0x35, 0x52, 0xff, 0xa3, 0x00, 0xda, 0x73, 0x6c, 0xe6, 0x39, 0xa6, 0x49, 0x3d, - 0x4c, 0x47, 0x86, 0x6f, 0x38, 0x36, 0xfa, 0x02, 0xea, 0x7c, 0x3f, 0x7d, 0xc2, 0x48, 0x53, 0xd9, - 0x54, 0xb6, 0x16, 0x77, 0xde, 0xd6, 0xe2, 0x4b, 0x89, 0xe0, 0x35, 0xf7, 0x74, 0xc0, 0x17, 0x7c, - 0x8d, 0x6b, 0x6b, 0xa3, 0x3b, 0xda, 0x61, 0xef, 0x4b, 0xaa, 0xb3, 0x03, 0xca, 0x48, 0x07, 0x3d, - 0x3d, 0xdb, 0x98, 0x99, 0x9c, 0x6d, 0x40, 0xbc, 0x86, 0x23, 0x54, 0x74, 0x08, 0x55, 0x81, 0x5e, - 0x11, 0xe8, 0xdb, 0xa5, 0xe8, 0x72, 0xd3, 0x1a, 0x26, 0xbf, 0x7a, 0xf0, 0x84, 0x51, 0x9b, 0x87, - 0xd7, 0x79, 0x49, 0x42, 0x57, 0xef, 0x13, 0x46, 0xb0, 0x00, 0x42, 0x6f, 0x41, 0xdd, 0x93, 0xe1, - 0x37, 0x67, 0x37, 0x95, 0xad, 0xd9, 0xce, 0x0d, 0xa9, 0x55, 0x0f, 0xb7, 0x85, 0x23, 0x0d, 0xf5, - 0xa9, 0x02, 0xb7, 0xf2, 0xfb, 0xde, 0x37, 0x7c, 0x86, 0x7e, 0x91, 0xdb, 0xbb, 0x36, 0xdd, 0xde, - 0xb9, 0xb5, 0xd8, 0x79, 0xe4, 0x38, 0x5c, 0x49, 0xec, 0xfb, 0x08, 0x6a, 0x06, 0xa3, 0x96, 0xdf, - 0xac, 0x6c, 0xce, 0x6e, 0x2d, 0xee, 0xbc, 0xa9, 0x95, 0xe4, 0xba, 0x96, 0x8f, 0xae, 0xb3, 0x24, - 0x71, 0x6b, 0x0f, 0x39, 0x02, 0x0e, 0x80, 0xd4, 0xdf, 0x56, 0x00, 0xee, 0x53, 0xd7, 0x74, 0xc6, - 0x16, 0xb5, 0xd9, 0x35, 0x5c, 0xdd, 0x43, 0xa8, 0xfa, 0x2e, 0xd5, 0xe5, 0xd5, 0xbd, 0x5e, 0xba, - 0x83, 0x38, 0xa8, 0xae, 0x4b, 0xf5, 0xf8, 0xd2, 0xf8, 0x17, 0x16, 0x10, 0xe8, 0x53, 0x98, 0xf3, - 0x19, 0x61, 0x43, 0x5f, 0x5c, 0xd9, 0xe2, 0xce, 0xed, 0x69, 0xc0, 0x84, 0x41, 0xa7, 0x21, 0xe1, - 0xe6, 0x82, 0x6f, 0x2c, 0x81, 0xd4, 0xbf, 0xcf, 0xc2, 0x4a, 0xac, 0xbc, 0xe7, 0xd8, 0x7d, 0x83, - 0xf1, 0x94, 0xbe, 0x07, 0x55, 0x36, 0x76, 0xa9, 0x38, 0x93, 0x85, 0xce, 0xeb, 0x61, 0x30, 0xc7, - 0x63, 0x97, 0xbe, 0x38, 0xdb, 0x58, 0x2b, 0x30, 0xe1, 0x22, 0x2c, 0x8c, 0xd0, 0x7e, 0x14, 0x67, - 0x45, 0x98, 0xbf, 0x9b, 0x76, 0xfe, 0xe2, 0x6c, 0xa3, 0xa0, 0xd7, 0x68, 0x11, 0x52, 0x3a, 0x44, - 0xf4, 0x1a, 0xcc, 0x79, 0x94, 0xf8, 0x8e, 0xdd, 0xac, 0x0a, 0xb4, 0x68, 0x2b, 0x58, 0xac, 0x62, - 0x29, 0x45, 0xb7, 0x61, 0xde, 0xa2, 0xbe, 0x4f, 0x06, 0xb4, 0x59, 0x13, 0x8a, 0xcb, 0x52, 0x71, - 0xfe, 0x20, 0x58, 0xc6, 0xa1, 0x1c, 0x7d, 0x09, 0x0d, 0x93, 0xf8, 0xec, 0xc4, 0xed, 0x13, 0x46, - 0x8f, 0x0d, 0x8b, 0x36, 0xe7, 0xc4, 0x81, 0xbe, 0x31, 0xdd, 0xdd, 0x73, 0x8b, 0xce, 0x2d, 0x89, - 0xde, 0xd8, 0x4f, 0x21, 0xe1, 0x0c, 0x32, 0x1a, 0x01, 0xe2, 0x2b, 0xc7, 0x1e, 0xb1, 0xfd, 0xe0, - 0xa0, 0xb8, 0xbf, 0xf9, 0x4b, 0xfb, 0x5b, 0x97, 0xfe, 0xd0, 0x7e, 0x0e, 0x0d, 0x17, 0x78, 0x50, - 0xff, 0xa8, 0x40, 0x23, 0xbe, 0xa6, 0x6b, 0xa8, 0xd5, 0x8f, 0xd3, 0xb5, 0xfa, 0xfd, 0x29, 0x92, - 0xb3, 0xa4, 0x46, 0xff, 0x59, 0x01, 0x14, 0x2b, 0x61, 0xc7, 0x34, 0x7b, 0x44, 0x3f, 0x45, 0x9b, - 0x50, 0xb5, 0x89, 0x15, 0xe6, 0x64, 0x54, 0x20, 0x3f, 0x21, 0x16, 0xc5, 0x42, 0x82, 0xbe, 0x52, - 0x00, 0x0d, 0xc5, 0xd1, 0xf7, 0x77, 0x6d, 0xdb, 0x61, 0x84, 0x9f, 0x46, 0x18, 0xd0, 0xde, 0x14, - 0x01, 0x85, 0xbe, 0xb4, 0x93, 0x1c, 0xca, 0x03, 0x9b, 0x79, 0xe3, 0xf8, 0x16, 0xf2, 0x0a, 0xb8, - 0xc0, 0x35, 0xfa, 0x39, 0x80, 0x27, 0x31, 0x8f, 0x1d, 0x59, 0xb6, 0xe5, 0x3d, 0x20, 0x74, 0xbf, - 0xe7, 0xd8, 0x8f, 0x8c, 0x41, 0xdc, 0x58, 0x70, 0x04, 0x81, 0x13, 0x70, 0xeb, 0x0f, 0x60, 0xad, - 0x24, 0x4e, 0x74, 0x03, 0x66, 0x4f, 0xe9, 0x38, 0x38, 0x2a, 0xcc, 0x7f, 0xa2, 0x55, 0xa8, 0x8d, - 0x88, 0x39, 0xa4, 0x41, 0x4d, 0xe2, 0xe0, 0xe3, 0x6e, 0xe5, 0x7d, 0x45, 0xfd, 0x43, 0x2d, 0x99, - 0x29, 0xbc, 0xdf, 0xa0, 0x2d, 0xfe, 0x3c, 0xb8, 0xa6, 0xa1, 0x13, 0x5f, 0x60, 0xd4, 0x3a, 0x2f, - 0x05, 0x4f, 0x43, 0xb0, 0x86, 0x23, 0x29, 0xfa, 0x25, 0xd4, 0x7d, 0x6a, 0x52, 0x9d, 0x39, 0x9e, - 0x6c, 0x71, 0xef, 0x4c, 0x99, 0x53, 0xa4, 0x47, 0xcd, 0xae, 0x34, 0x0d, 0xe0, 0xc3, 0x2f, 0x1c, - 0x41, 0xa2, 0x4f, 0xa1, 0xce, 0xa8, 0xe5, 0x9a, 0x84, 0x51, 0x79, 0x7a, 0xa9, 0xbc, 0xe2, 0xbd, - 0x83, 0x83, 0x1d, 0x39, 0xfd, 0x63, 0xa9, 0x26, 0xba, 0x67, 0x94, 0xa7, 0xe1, 0x2a, 0x8e, 0x60, - 0xd0, 0xcf, 0xa0, 0xee, 0x33, 0xfe, 0xaa, 0x0f, 0xc6, 0xa2, 0xa3, 0x9c, 0xf7, 0xac, 0x24, 0xfb, - 0x68, 0x60, 0x12, 0x43, 0x87, 0x2b, 0x38, 0x82, 0x43, 0xbb, 0xb0, 0x6c, 0x19, 0x36, 0xa6, 0xa4, - 0x3f, 0xee, 0x52, 0xdd, 0xb1, 0xfb, 0xbe, 0x68, 0x45, 0xb5, 0xce, 0x9a, 0x34, 0x5a, 0x3e, 0x48, - 0x8b, 0x71, 0x56, 0x1f, 0xed, 0xc3, 0x6a, 0xf8, 0xec, 0x7e, 0x6c, 0xf8, 0xcc, 0xf1, 0xc6, 0xfb, - 0x86, 0x65, 0x30, 0xd1, 0xa0, 0x6a, 0x9d, 0xe6, 0xe4, 0x6c, 0x63, 0x15, 0x17, 0xc8, 0x71, 0xa1, - 0x15, 0xef, 0x9d, 0x2e, 0x19, 0xfa, 0xb4, 0x2f, 0x1a, 0x4e, 0x3d, 0xee, 0x9d, 0x47, 0x62, 0x15, - 0x4b, 0x29, 0xfa, 0x69, 0x2a, 0x4d, 0xeb, 0x97, 0x4b, 0xd3, 0x46, 0x79, 0x8a, 0xa2, 0x13, 0x58, - 0x73, 0x3d, 0x67, 0xe0, 0x51, 0xdf, 0xbf, 0x4f, 0x49, 0xdf, 0x34, 0x6c, 0x1a, 0x9e, 0xcc, 0x82, - 0xd8, 0xd1, 0x2b, 0x93, 0xb3, 0x8d, 0xb5, 0xa3, 0x62, 0x15, 0x5c, 0x66, 0xab, 0xfe, 0xa5, 0x0a, - 0x37, 0xb2, 0x6f, 0x1c, 0xfa, 0x04, 0x90, 0xd3, 0xf3, 0xa9, 0x37, 0xa2, 0xfd, 0x8f, 0x82, 0xc1, - 0x8d, 0x4f, 0x37, 0x8a, 0x98, 0x6e, 0xa2, 0xba, 0x3d, 0xcc, 0x69, 0xe0, 0x02, 0xab, 0x60, 0x3e, - 0x92, 0x05, 0x50, 0x11, 0x81, 0x26, 0xe6, 0xa3, 0x5c, 0x11, 0xec, 0xc2, 0xb2, 0xac, 0xfd, 0x50, - 0x28, 0x92, 0x35, 0x71, 0xef, 0x27, 0x69, 0x31, 0xce, 0xea, 0xa3, 0x8f, 0xe0, 0x26, 0x19, 0x11, - 0xc3, 0x24, 0x3d, 0x93, 0x46, 0x20, 0x55, 0x01, 0xf2, 0xb2, 0x04, 0xb9, 0xb9, 0x9b, 0x55, 0xc0, - 0x79, 0x1b, 0x74, 0x00, 0x2b, 0x43, 0x3b, 0x0f, 0x15, 0xe4, 0xe1, 0x2b, 0x12, 0x6a, 0xe5, 0x24, - 0xaf, 0x82, 0x8b, 0xec, 0xd0, 0x17, 0x00, 0x7a, 0xf8, 0x30, 0xfb, 0xcd, 0x39, 0xd1, 0x49, 0xdf, - 0x9a, 0xa2, 0x5e, 0xa2, 0xd7, 0x3c, 0xee, 0x62, 0xd1, 0x92, 0x8f, 0x13, 0x98, 0xe8, 0x1e, 0x2c, - 0x79, 0xbc, 0x02, 0xa2, 0x50, 0xe7, 0x45, 0xa8, 0xdf, 0x91, 0x66, 0x4b, 0x38, 0x29, 0xc4, 0x69, - 0x5d, 0x74, 0x17, 0x1a, 0xba, 0x63, 0x9a, 0x22, 0xf3, 0xf7, 0x9c, 0xa1, 0xcd, 0x44, 0xf2, 0xd6, - 0x3a, 0x88, 0xbf, 0xcc, 0x7b, 0x29, 0x09, 0xce, 0x68, 0xaa, 0x7f, 0x56, 0x92, 0xcf, 0x4c, 0x58, - 0xce, 0xe8, 0x6e, 0x6a, 0xf4, 0x79, 0x2d, 0x33, 0xfa, 0xdc, 0xca, 0x5b, 0x24, 0x26, 0x1f, 0x03, - 0x96, 0x78, 0xf2, 0x1b, 0xf6, 0x20, 0xb8, 0x70, 0xd9, 0x12, 0xdf, 0x3e, 0xb7, 0x94, 0x22, 0xed, - 0xc4, 0xc3, 0x78, 0x53, 0xec, 0x3c, 0x29, 0xc4, 0x69, 0x64, 0xf5, 0x43, 0x68, 0xa4, 0xeb, 0x30, - 0x35, 0xd3, 0x2b, 0x17, 0xce, 0xf4, 0xcf, 0x15, 0x58, 0x2b, 0xf1, 0x8e, 0x4c, 0x68, 0x58, 0xe4, - 0x49, 0x22, 0x47, 0x2e, 0x9c, 0x8d, 0x39, 0x6b, 0xd2, 0x02, 0xd6, 0xa4, 0x3d, 0xb4, 0xd9, 0xa1, - 0xd7, 0x65, 0x9e, 0x61, 0x0f, 0x82, 0x7b, 0x38, 0x48, 0x61, 0xe1, 0x0c, 0x36, 0xfa, 0x1c, 0xea, - 0x16, 0x79, 0xd2, 0x1d, 0x7a, 0x83, 0xa2, 0xf3, 0x9a, 0xce, 0x8f, 0x78, 0x3f, 0x0e, 0x24, 0x0a, - 0x8e, 0xf0, 0xd4, 0x43, 0xd8, 0x4c, 0x6d, 0x92, 0xb7, 0x0a, 0xfa, 0x68, 0x68, 0x76, 0x69, 0x7c, - 0xe1, 0x6f, 0xc2, 0x82, 0x4b, 0x3c, 0x66, 0x44, 0xed, 0xa2, 0xd6, 0x59, 0x9a, 0x9c, 0x6d, 0x2c, - 0x1c, 0x85, 0x8b, 0x38, 0x96, 0xab, 0xff, 0x55, 0xa0, 0xd6, 0xd5, 0x89, 0x49, 0xaf, 0x81, 0x3a, - 0xdc, 0x4f, 0x51, 0x07, 0xb5, 0x34, 0x89, 0x44, 0x3c, 0xa5, 0xac, 0x61, 0x3f, 0xc3, 0x1a, 0x5e, - 0xbd, 0x00, 0xe7, 0x7c, 0xc2, 0xf0, 0x01, 0x2c, 0x44, 0xee, 0x52, 0x5d, 0x52, 0xb9, 0xa8, 0x4b, - 0xaa, 0xbf, 0xaf, 0xc0, 0x62, 0xc2, 0xc5, 0xe5, 0xac, 0xf9, 0x71, 0x27, 0x06, 0x0d, 0xde, 0x86, - 0x76, 0xa6, 0xd9, 0x88, 0x16, 0x0e, 0x15, 0xc1, 0xfc, 0x16, 0xbf, 0xde, 0xf9, 0x59, 0xe3, 0x43, - 0x68, 0x30, 0xe2, 0x0d, 0x28, 0x0b, 0x65, 0xe2, 0xc0, 0x16, 0xe2, 0x49, 0xff, 0x38, 0x25, 0xc5, - 0x19, 0xed, 0xf5, 0x7b, 0xb0, 0x94, 0x72, 0x76, 0xa9, 0x21, 0xec, 0x2b, 0x7e, 0x38, 0x71, 0x72, - 0x5e, 0x43, 0x76, 0x7d, 0x92, 0xca, 0xae, 0xad, 0xf2, 0xc3, 0x4c, 0x94, 0x4c, 0x59, 0x8e, 0xe1, - 0x4c, 0x8e, 0xbd, 0x31, 0x15, 0xda, 0xf9, 0x99, 0xf6, 0xaf, 0x0a, 0xac, 0x26, 0xb4, 0x63, 0x6e, - 0xfa, 0xc3, 0x54, 0x83, 0xde, 0xca, 0x34, 0xe8, 0x66, 0x91, 0xcd, 0x95, 0x91, 0xd3, 0x62, 0x76, - 0x37, 0x7b, 0xd5, 0xec, 0xee, 0x0a, 0x48, 0xb1, 0xfa, 0x27, 0x05, 0x96, 0x13, 0x67, 0x77, 0x0d, - 0x8c, 0xf1, 0x61, 0x9a, 0x31, 0xbe, 0x3a, 0x4d, 0xd2, 0x94, 0x50, 0xc6, 0xbf, 0xd6, 0x52, 0xc1, - 0x7f, 0xeb, 0x49, 0xcc, 0xaf, 0x61, 0x75, 0xe4, 0x98, 0x43, 0x8b, 0xee, 0x99, 0xc4, 0xb0, 0x42, - 0x05, 0x3e, 0x31, 0xce, 0x66, 0xff, 0x18, 0x8a, 0xe0, 0xa9, 0xe7, 0x1b, 0x3e, 0xa3, 0x36, 0xfb, - 0x2c, 0xb6, 0xec, 0x7c, 0x57, 0x3a, 0x59, 0xfd, 0xac, 0x00, 0x0e, 0x17, 0x3a, 0x41, 0x3f, 0x80, - 0x45, 0x3e, 0x30, 0x1b, 0x3a, 0xe5, 0xdc, 0x5b, 0x26, 0xd6, 0x8a, 0x04, 0x5a, 0xec, 0xc6, 0x22, - 0x9c, 0xd4, 0x43, 0x8f, 0x61, 0xc5, 0x75, 0xfa, 0x07, 0xc4, 0x26, 0x03, 0xca, 0xc7, 0x8c, 0x23, - 0xf1, 0x07, 0xb2, 0x60, 0x36, 0x0b, 0x9d, 0xf7, 0xc2, 0xc9, 0xf4, 0x28, 0xaf, 0xf2, 0x82, 0x53, - 0x84, 0xfc, 0xb2, 0x28, 0xea, 0x22, 0x48, 0xe4, 0x41, 0x63, 0x28, 0x9f, 0x7b, 0x49, 0xf4, 0x82, - 0xff, 0x5b, 0x76, 0xa6, 0xc9, 0xb0, 0x93, 0x94, 0x65, 0xdc, 0xfd, 0xd3, 0xeb, 0x38, 0xe3, 0xa1, - 0x94, 0xb8, 0xd5, 0xff, 0x1f, 0xe2, 0xa6, 0xfe, 0xbb, 0x0a, 0x37, 0x73, 0xad, 0x12, 0xfd, 0xf8, - 0x1c, 0x86, 0x73, 0xeb, 0xca, 0xd8, 0x4d, 0x6e, 0x40, 0x9f, 0xbd, 0xc4, 0x80, 0xbe, 0x0b, 0xcb, - 0xfa, 0xd0, 0xf3, 0xa8, 0xcd, 0x32, 0xac, 0x26, 0xa2, 0x46, 0x7b, 0x69, 0x31, 0xce, 0xea, 0x17, - 0xb1, 0xab, 0xda, 0x25, 0xd9, 0x55, 0x32, 0x0a, 0x39, 0x21, 0x07, 0x69, 0x97, 0x8f, 0x42, 0x0e, - 0xca, 0x59, 0x7d, 0x3e, 0x1d, 0x04, 0xa8, 0x11, 0xc2, 0x7c, 0x7a, 0x3a, 0x38, 0x49, 0x49, 0x71, - 0x46, 0xbb, 0x80, 0xa9, 0x2c, 0x4c, 0xcb, 0x54, 0x10, 0x49, 0x91, 0x30, 0x10, 0x35, 0xbe, 0x3d, - 0x4d, 0x2e, 0x4f, 0xcd, 0xc2, 0xd4, 0xbf, 0x29, 0xf0, 0x72, 0x69, 0x11, 0xa0, 0xdd, 0xd4, 0x93, - 0xbb, 0x9d, 0x79, 0x72, 0xbf, 0x57, 0x6a, 0x98, 0x78, 0x77, 0xbd, 0x62, 0x6a, 0xf4, 0xc1, 0x74, - 0xd4, 0xa8, 0x60, 0x6e, 0xbf, 0x98, 0x23, 0x75, 0xb6, 0x9f, 0x3e, 0x6b, 0xcd, 0x7c, 0xfd, 0xac, - 0x35, 0xf3, 0xcd, 0xb3, 0xd6, 0xcc, 0x6f, 0x26, 0x2d, 0xe5, 0xe9, 0xa4, 0xa5, 0x7c, 0x3d, 0x69, - 0x29, 0xdf, 0x4c, 0x5a, 0xca, 0x3f, 0x26, 0x2d, 0xe5, 0x77, 0xcf, 0x5b, 0x33, 0x9f, 0xcf, 0x4b, - 0x8f, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x9d, 0x5d, 0x9e, 0x04, 0x8c, 0x1b, 0x00, 0x00, + // 1859 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xcd, 0x6f, 0x24, 0x47, + 0x15, 0x77, 0x8f, 0x67, 0xec, 0xf1, 0x73, 0x3c, 0xde, 0x2d, 0x9b, 0xf5, 0xc4, 0x81, 0xb1, 0xd5, + 0x44, 0x89, 0xf3, 0xe1, 0x9e, 0xac, 0x13, 0xa2, 0x64, 0x17, 0x45, 0x78, 0xbc, 0x4b, 0xb2, 0x91, + 0x8d, 0x9d, 0xb2, 0x1d, 0x44, 0x00, 0x29, 0x35, 0x3d, 0xb5, 0xb3, 0x1d, 0xf7, 0x97, 0xba, 0x6b, + 0x86, 0x1d, 0x71, 0xe1, 0x0f, 0x40, 0x0a, 0x67, 0xfe, 0x0a, 0x8e, 0x08, 0x6e, 0x9c, 0xf6, 0x82, + 0x14, 0x71, 0x21, 0x27, 0x8b, 0x9d, 0x5c, 0x81, 0x1b, 0x97, 0x95, 0x90, 0x50, 0x55, 0x57, 0x7f, + 0x77, 0xdb, 0x6d, 0xa4, 0xf5, 0x21, 0xb7, 0xe9, 0x7a, 0xef, 0xfd, 0x5e, 0x7d, 0xbc, 0xaf, 0xdf, + 0xc0, 0x8f, 0xce, 0xde, 0xf3, 0x35, 0xc3, 0xe9, 0x9e, 0x8d, 0xfa, 0xd4, 0xb3, 0x29, 0xa3, 0x7e, + 0x77, 0x4c, 0xed, 0x81, 0xe3, 0x75, 0xa5, 0x80, 0xb8, 0x46, 0x97, 0xb8, 0xae, 0xdf, 0x1d, 0xdf, + 0xee, 0x53, 0x46, 0x6e, 0x77, 0x87, 0xd4, 0xa6, 0x1e, 0x61, 0x74, 0xa0, 0xb9, 0x9e, 0xc3, 0x1c, + 0xb4, 0x16, 0x28, 0x6a, 0xc4, 0x35, 0x34, 0xae, 0xa8, 0x49, 0xc5, 0xf5, 0xed, 0xa1, 0xc1, 0x1e, + 0x8d, 0xfa, 0x9a, 0xee, 0x58, 0xdd, 0xa1, 0x33, 0x74, 0xba, 0x42, 0xbf, 0x3f, 0x7a, 0x28, 0xbe, + 0xc4, 0x87, 0xf8, 0x15, 0xe0, 0xac, 0xab, 0x09, 0x87, 0xba, 0xe3, 0xd1, 0xee, 0x38, 0xe7, 0x6b, + 0xfd, 0x9d, 0x58, 0xc7, 0x22, 0xfa, 0x23, 0xc3, 0xa6, 0xde, 0xa4, 0xeb, 0x9e, 0x0d, 0xf9, 0x82, + 0xdf, 0xb5, 0x28, 0x23, 0x45, 0x56, 0xdd, 0x32, 0x2b, 0x6f, 0x64, 0x33, 0xc3, 0xa2, 0x39, 0x83, + 0x77, 0x2f, 0x33, 0xf0, 0xf5, 0x47, 0xd4, 0x22, 0x39, 0xbb, 0xb7, 0xcb, 0xec, 0x46, 0xcc, 0x30, + 0xbb, 0x86, 0xcd, 0x7c, 0xe6, 0x65, 0x8d, 0xd4, 0xff, 0x28, 0x80, 0xf6, 0x1c, 0x9b, 0x79, 0x8e, + 0x69, 0x52, 0x0f, 0xd3, 0xb1, 0xe1, 0x1b, 0x8e, 0x8d, 0x3e, 0x87, 0x26, 0x3f, 0xcf, 0x80, 0x30, + 0xd2, 0x56, 0x36, 0x95, 0xad, 0xc5, 0x9d, 0xb7, 0xb4, 0xf8, 0xa6, 0x23, 0x78, 0xcd, 0x3d, 0x1b, + 0xf2, 0x05, 0x5f, 0xe3, 0xda, 0xda, 0xf8, 0xb6, 0x76, 0xd8, 0xff, 0x82, 0xea, 0xec, 0x80, 0x32, + 0xd2, 0x43, 0x4f, 0xce, 0x37, 0x66, 0xa6, 0xe7, 0x1b, 0x10, 0xaf, 0xe1, 0x08, 0x15, 0x1d, 0x42, + 0x5d, 0xa0, 0xd7, 0x04, 0xfa, 0x76, 0x29, 0xba, 0x3c, 0xb4, 0x86, 0xc9, 0xaf, 0xee, 0x3f, 0x66, + 0xd4, 0xe6, 0xdb, 0xeb, 0xbd, 0x20, 0xa1, 0xeb, 0xf7, 0x08, 0x23, 0x58, 0x00, 0xa1, 0x37, 0xa1, + 0xe9, 0xc9, 0xed, 0xb7, 0x67, 0x37, 0x95, 0xad, 0xd9, 0xde, 0x0d, 0xa9, 0xd5, 0x0c, 0x8f, 0x85, + 0x23, 0x0d, 0xf5, 0x89, 0x02, 0xb7, 0xf2, 0xe7, 0xde, 0x37, 0x7c, 0x86, 0x7e, 0x91, 0x3b, 0xbb, + 0x56, 0xed, 0xec, 0xdc, 0x5a, 0x9c, 0x3c, 0x72, 0x1c, 0xae, 0x24, 0xce, 0x7d, 0x04, 0x0d, 0x83, + 0x51, 0xcb, 0x6f, 0xd7, 0x36, 0x67, 0xb7, 0x16, 0x77, 0xde, 0xd0, 0x4a, 0x02, 0x58, 0xcb, 0xef, + 0xae, 0xb7, 0x24, 0x71, 0x1b, 0x0f, 0x38, 0x02, 0x0e, 0x80, 0xd4, 0xdf, 0xd6, 0x00, 0xee, 0x51, + 0xd7, 0x74, 0x26, 0x16, 0xb5, 0xd9, 0x35, 0x3c, 0xdd, 0x03, 0xa8, 0xfb, 0x2e, 0xd5, 0xe5, 0xd3, + 0xbd, 0x5a, 0x7a, 0x82, 0x78, 0x53, 0xc7, 0x2e, 0xd5, 0xe3, 0x47, 0xe3, 0x5f, 0x58, 0x40, 0xa0, + 0x4f, 0x60, 0xce, 0x67, 0x84, 0x8d, 0x7c, 0xf1, 0x64, 0x8b, 0x3b, 0xaf, 0x55, 0x01, 0x13, 0x06, + 0xbd, 0x96, 0x84, 0x9b, 0x0b, 0xbe, 0xb1, 0x04, 0x52, 0xff, 0x3e, 0x0b, 0x2b, 0xb1, 0xf2, 0x9e, + 0x63, 0x0f, 0x0c, 0xc6, 0x43, 0xfa, 0x2e, 0xd4, 0xd9, 0xc4, 0xa5, 0xe2, 0x4e, 0x16, 0x7a, 0xaf, + 0x86, 0x9b, 0x39, 0x99, 0xb8, 0xf4, 0xd9, 0xf9, 0xc6, 0x5a, 0x81, 0x09, 0x17, 0x61, 0x61, 0x84, + 0xf6, 0xa3, 0x7d, 0xd6, 0x84, 0xf9, 0x3b, 0x69, 0xe7, 0xcf, 0xce, 0x37, 0x0a, 0x0a, 0x88, 0x16, + 0x21, 0xa5, 0xb7, 0x88, 0x5e, 0x81, 0x39, 0x8f, 0x12, 0xdf, 0xb1, 0xdb, 0x75, 0x81, 0x16, 0x1d, + 0x05, 0x8b, 0x55, 0x2c, 0xa5, 0xe8, 0x35, 0x98, 0xb7, 0xa8, 0xef, 0x93, 0x21, 0x6d, 0x37, 0x84, + 0xe2, 0xb2, 0x54, 0x9c, 0x3f, 0x08, 0x96, 0x71, 0x28, 0x47, 0x5f, 0x40, 0xcb, 0x24, 0x3e, 0x3b, + 0x75, 0x07, 0x84, 0xd1, 0x13, 0xc3, 0xa2, 0xed, 0x39, 0x71, 0xa1, 0xaf, 0x57, 0x7b, 0x7b, 0x6e, + 0xd1, 0xbb, 0x25, 0xd1, 0x5b, 0xfb, 0x29, 0x24, 0x9c, 0x41, 0x46, 0x63, 0x40, 0x7c, 0xe5, 0xc4, + 0x23, 0xb6, 0x1f, 0x5c, 0x14, 0xf7, 0x37, 0x7f, 0x65, 0x7f, 0xeb, 0xd2, 0x1f, 0xda, 0xcf, 0xa1, + 0xe1, 0x02, 0x0f, 0xea, 0x1f, 0x15, 0x68, 0xc5, 0xcf, 0x74, 0x0d, 0xb9, 0xfa, 0x51, 0x3a, 0x57, + 0xbf, 0x5f, 0x21, 0x38, 0x4b, 0x72, 0xf4, 0x9f, 0x35, 0x40, 0xb1, 0x12, 0x76, 0x4c, 0xb3, 0x4f, + 0xf4, 0x33, 0xb4, 0x09, 0x75, 0x9b, 0x58, 0x61, 0x4c, 0x46, 0x09, 0xf2, 0x13, 0x62, 0x51, 0x2c, + 0x24, 0xe8, 0x4b, 0x05, 0xd0, 0x48, 0x5c, 0xfd, 0x60, 0xd7, 0xb6, 0x1d, 0x46, 0xf8, 0x6d, 0x84, + 0x1b, 0xda, 0xab, 0xb0, 0xa1, 0xd0, 0x97, 0x76, 0x9a, 0x43, 0xb9, 0x6f, 0x33, 0x6f, 0x12, 0xbf, + 0x42, 0x5e, 0x01, 0x17, 0xb8, 0x46, 0x3f, 0x07, 0xf0, 0x24, 0xe6, 0x89, 0x23, 0xd3, 0xb6, 0xbc, + 0x06, 0x84, 0xee, 0xf7, 0x1c, 0xfb, 0xa1, 0x31, 0x8c, 0x0b, 0x0b, 0x8e, 0x20, 0x70, 0x02, 0x6e, + 0xfd, 0x3e, 0xac, 0x95, 0xec, 0x13, 0xdd, 0x80, 0xd9, 0x33, 0x3a, 0x09, 0xae, 0x0a, 0xf3, 0x9f, + 0x68, 0x15, 0x1a, 0x63, 0x62, 0x8e, 0x68, 0x90, 0x93, 0x38, 0xf8, 0xb8, 0x53, 0x7b, 0x4f, 0x51, + 0xff, 0xd0, 0x48, 0x46, 0x0a, 0xaf, 0x37, 0x68, 0x8b, 0xb7, 0x07, 0xd7, 0x34, 0x74, 0xe2, 0x0b, + 0x8c, 0x46, 0xef, 0x85, 0xa0, 0x35, 0x04, 0x6b, 0x38, 0x92, 0xa2, 0x5f, 0x42, 0xd3, 0xa7, 0x26, + 0xd5, 0x99, 0xe3, 0xc9, 0x12, 0xf7, 0x76, 0xc5, 0x98, 0x22, 0x7d, 0x6a, 0x1e, 0x4b, 0xd3, 0x00, + 0x3e, 0xfc, 0xc2, 0x11, 0x24, 0xfa, 0x04, 0x9a, 0x8c, 0x5a, 0xae, 0x49, 0x18, 0x95, 0xb7, 0x97, + 0x8a, 0x2b, 0x5e, 0x3b, 0x38, 0xd8, 0x91, 0x33, 0x38, 0x91, 0x6a, 0xa2, 0x7a, 0x46, 0x71, 0x1a, + 0xae, 0xe2, 0x08, 0x06, 0xfd, 0x0c, 0x9a, 0x3e, 0xe3, 0x5d, 0x7d, 0x38, 0x11, 0x15, 0xe5, 0xa2, + 0xb6, 0x92, 0xac, 0xa3, 0x81, 0x49, 0x0c, 0x1d, 0xae, 0xe0, 0x08, 0x0e, 0xed, 0xc2, 0xb2, 0x65, + 0xd8, 0x98, 0x92, 0xc1, 0xe4, 0x98, 0xea, 0x8e, 0x3d, 0xf0, 0x45, 0x29, 0x6a, 0xf4, 0xd6, 0xa4, + 0xd1, 0xf2, 0x41, 0x5a, 0x8c, 0xb3, 0xfa, 0x68, 0x1f, 0x56, 0xc3, 0xb6, 0xfb, 0x91, 0xe1, 0x33, + 0xc7, 0x9b, 0xec, 0x1b, 0x96, 0xc1, 0x44, 0x81, 0x6a, 0xf4, 0xda, 0xd3, 0xf3, 0x8d, 0x55, 0x5c, + 0x20, 0xc7, 0x85, 0x56, 0xbc, 0x76, 0xba, 0x64, 0xe4, 0xd3, 0x81, 0x28, 0x38, 0xcd, 0xb8, 0x76, + 0x1e, 0x89, 0x55, 0x2c, 0xa5, 0xe8, 0xa7, 0xa9, 0x30, 0x6d, 0x5e, 0x2d, 0x4c, 0x5b, 0xe5, 0x21, + 0x8a, 0x4e, 0x61, 0xcd, 0xf5, 0x9c, 0xa1, 0x47, 0x7d, 0xff, 0x1e, 0x25, 0x03, 0xd3, 0xb0, 0x69, + 0x78, 0x33, 0x0b, 0xe2, 0x44, 0x2f, 0x4d, 0xcf, 0x37, 0xd6, 0x8e, 0x8a, 0x55, 0x70, 0x99, 0xad, + 0xfa, 0x97, 0x3a, 0xdc, 0xc8, 0xf6, 0x38, 0xf4, 0x31, 0x20, 0xa7, 0xef, 0x53, 0x6f, 0x4c, 0x07, + 0x1f, 0x06, 0x83, 0x1b, 0x9f, 0x6e, 0x14, 0x31, 0xdd, 0x44, 0x79, 0x7b, 0x98, 0xd3, 0xc0, 0x05, + 0x56, 0xc1, 0x7c, 0x24, 0x13, 0xa0, 0x26, 0x36, 0x9a, 0x98, 0x8f, 0x72, 0x49, 0xb0, 0x0b, 0xcb, + 0x32, 0xf7, 0x43, 0xa1, 0x08, 0xd6, 0xc4, 0xbb, 0x9f, 0xa6, 0xc5, 0x38, 0xab, 0x8f, 0x3e, 0x84, + 0x9b, 0x64, 0x4c, 0x0c, 0x93, 0xf4, 0x4d, 0x1a, 0x81, 0xd4, 0x05, 0xc8, 0x8b, 0x12, 0xe4, 0xe6, + 0x6e, 0x56, 0x01, 0xe7, 0x6d, 0xd0, 0x01, 0xac, 0x8c, 0xec, 0x3c, 0x54, 0x10, 0x87, 0x2f, 0x49, + 0xa8, 0x95, 0xd3, 0xbc, 0x0a, 0x2e, 0xb2, 0x43, 0x9f, 0x03, 0xe8, 0x61, 0x63, 0xf6, 0xdb, 0x73, + 0xa2, 0x92, 0xbe, 0x59, 0x21, 0x5f, 0xa2, 0x6e, 0x1e, 0x57, 0xb1, 0x68, 0xc9, 0xc7, 0x09, 0x4c, + 0x74, 0x17, 0x96, 0x3c, 0x9e, 0x01, 0xd1, 0x56, 0xe7, 0xc5, 0x56, 0xbf, 0x23, 0xcd, 0x96, 0x70, + 0x52, 0x88, 0xd3, 0xba, 0xe8, 0x0e, 0xb4, 0x74, 0xc7, 0x34, 0x45, 0xe4, 0xef, 0x39, 0x23, 0x9b, + 0x89, 0xe0, 0x6d, 0xf4, 0x10, 0xef, 0xcc, 0x7b, 0x29, 0x09, 0xce, 0x68, 0xaa, 0x7f, 0x56, 0x92, + 0x6d, 0x26, 0x4c, 0x67, 0x74, 0x27, 0x35, 0xfa, 0xbc, 0x92, 0x19, 0x7d, 0x6e, 0xe5, 0x2d, 0x12, + 0x93, 0x8f, 0x01, 0x4b, 0x3c, 0xf8, 0x0d, 0x7b, 0x18, 0x3c, 0xb8, 0x2c, 0x89, 0x6f, 0x5d, 0x98, + 0x4a, 0x91, 0x76, 0xa2, 0x31, 0xde, 0x14, 0x27, 0x4f, 0x0a, 0x71, 0x1a, 0x59, 0xfd, 0x00, 0x5a, + 0xe9, 0x3c, 0x4c, 0xcd, 0xf4, 0xca, 0xa5, 0x33, 0xfd, 0x37, 0x0a, 0xac, 0x95, 0x78, 0x47, 0x26, + 0xb4, 0x2c, 0xf2, 0x38, 0x11, 0x23, 0x97, 0xce, 0xc6, 0x9c, 0x35, 0x69, 0x01, 0x6b, 0xd2, 0x1e, + 0xd8, 0xec, 0xd0, 0x3b, 0x66, 0x9e, 0x61, 0x0f, 0x83, 0x77, 0x38, 0x48, 0x61, 0xe1, 0x0c, 0x36, + 0xfa, 0x0c, 0x9a, 0x16, 0x79, 0x7c, 0x3c, 0xf2, 0x86, 0x45, 0xf7, 0x55, 0xcd, 0x8f, 0xe8, 0x1f, + 0x07, 0x12, 0x05, 0x47, 0x78, 0xea, 0x21, 0x6c, 0xa6, 0x0e, 0xc9, 0x4b, 0x05, 0x7d, 0x38, 0x32, + 0x8f, 0x69, 0xfc, 0xe0, 0x6f, 0xc0, 0x82, 0x4b, 0x3c, 0x66, 0x44, 0xe5, 0xa2, 0xd1, 0x5b, 0x9a, + 0x9e, 0x6f, 0x2c, 0x1c, 0x85, 0x8b, 0x38, 0x96, 0xab, 0xff, 0x55, 0xa0, 0x71, 0xac, 0x13, 0x93, + 0x5e, 0x03, 0x75, 0xb8, 0x97, 0xa2, 0x0e, 0x6a, 0x69, 0x10, 0x89, 0xfd, 0x94, 0xb2, 0x86, 0xfd, + 0x0c, 0x6b, 0x78, 0xf9, 0x12, 0x9c, 0x8b, 0x09, 0xc3, 0xfb, 0xb0, 0x10, 0xb9, 0x4b, 0x55, 0x49, + 0xe5, 0xb2, 0x2a, 0xa9, 0xfe, 0xbe, 0x06, 0x8b, 0x09, 0x17, 0x57, 0xb3, 0xe6, 0xd7, 0x9d, 0x18, + 0x34, 0x78, 0x19, 0xda, 0xa9, 0x72, 0x10, 0x2d, 0x1c, 0x2a, 0x82, 0xf9, 0x2d, 0xee, 0xde, 0xf9, + 0x59, 0xe3, 0x03, 0x68, 0x31, 0xe2, 0x0d, 0x29, 0x0b, 0x65, 0xe2, 0xc2, 0x16, 0xe2, 0x49, 0xff, + 0x24, 0x25, 0xc5, 0x19, 0xed, 0xf5, 0xbb, 0xb0, 0x94, 0x72, 0x76, 0xa5, 0x21, 0xec, 0x4b, 0x7e, + 0x39, 0x71, 0x70, 0x5e, 0x43, 0x74, 0x7d, 0x9c, 0x8a, 0xae, 0xad, 0xf2, 0xcb, 0x4c, 0xa4, 0x4c, + 0x59, 0x8c, 0xe1, 0x4c, 0x8c, 0xbd, 0x5e, 0x09, 0xed, 0xe2, 0x48, 0xfb, 0x57, 0x0d, 0x56, 0x13, + 0xda, 0x31, 0x37, 0xfd, 0x61, 0xaa, 0x40, 0x6f, 0x65, 0x0a, 0x74, 0xbb, 0xc8, 0xe6, 0xb9, 0x91, + 0xd3, 0x62, 0x76, 0x37, 0xfb, 0xbc, 0xd9, 0xdd, 0x73, 0x20, 0xc5, 0xea, 0x9f, 0x14, 0x58, 0x4e, + 0xdc, 0xdd, 0x35, 0x30, 0xc6, 0x07, 0x69, 0xc6, 0xf8, 0x72, 0x95, 0xa0, 0x29, 0xa1, 0x8c, 0x7f, + 0x6d, 0xa4, 0x36, 0xff, 0xad, 0x27, 0x31, 0xbf, 0x86, 0xd5, 0xb1, 0x63, 0x8e, 0x2c, 0xba, 0x67, + 0x12, 0xc3, 0x0a, 0x15, 0xf8, 0xc4, 0x38, 0x9b, 0xfd, 0x63, 0x28, 0x82, 0xa7, 0x9e, 0x6f, 0xf8, + 0x8c, 0xda, 0xec, 0xd3, 0xd8, 0xb2, 0xf7, 0x5d, 0xe9, 0x64, 0xf5, 0xd3, 0x02, 0x38, 0x5c, 0xe8, + 0x04, 0xfd, 0x00, 0x16, 0xf9, 0xc0, 0x6c, 0xe8, 0x94, 0x73, 0x6f, 0x19, 0x58, 0x2b, 0x12, 0x68, + 0xf1, 0x38, 0x16, 0xe1, 0xa4, 0x1e, 0x7a, 0x04, 0x2b, 0xae, 0x33, 0x38, 0x20, 0x36, 0x19, 0x52, + 0x3e, 0x66, 0x1c, 0x39, 0xa6, 0xa1, 0x4f, 0x04, 0xb3, 0x59, 0xe8, 0xbd, 0x1b, 0x4e, 0xa6, 0x47, + 0x79, 0x95, 0x67, 0x9c, 0x22, 0xe4, 0x97, 0x45, 0x52, 0x17, 0x41, 0x22, 0x0f, 0x5a, 0x23, 0xd9, + 0xee, 0x25, 0xd1, 0x0b, 0xfe, 0x6f, 0xd9, 0xa9, 0x12, 0x61, 0xa7, 0x29, 0xcb, 0xb8, 0xfa, 0xa7, + 0xd7, 0x71, 0xc6, 0x43, 0x29, 0x71, 0x6b, 0xfe, 0x3f, 0xc4, 0x4d, 0xfd, 0x77, 0x1d, 0x6e, 0xe6, + 0x4a, 0x25, 0xfa, 0xf1, 0x05, 0x0c, 0xe7, 0xd6, 0x73, 0x63, 0x37, 0xb9, 0x01, 0x7d, 0xf6, 0x0a, + 0x03, 0xfa, 0x2e, 0x2c, 0xeb, 0x23, 0xcf, 0xa3, 0x36, 0xcb, 0xb0, 0x9a, 0x88, 0x1a, 0xed, 0xa5, + 0xc5, 0x38, 0xab, 0x5f, 0xc4, 0xae, 0x1a, 0x57, 0x64, 0x57, 0xc9, 0x5d, 0xc8, 0x09, 0x39, 0x08, + 0xbb, 0xfc, 0x2e, 0xe4, 0xa0, 0x9c, 0xd5, 0xe7, 0xd3, 0x41, 0x80, 0x1a, 0x21, 0xcc, 0xa7, 0xa7, + 0x83, 0xd3, 0x94, 0x14, 0x67, 0xb4, 0x0b, 0x98, 0xca, 0x42, 0x55, 0xa6, 0x82, 0x48, 0x8a, 0x84, + 0x81, 0xc8, 0xf1, 0xed, 0x2a, 0xb1, 0x5c, 0x99, 0x85, 0xa9, 0x7f, 0x53, 0xe0, 0xc5, 0xd2, 0x24, + 0x40, 0xbb, 0xa9, 0x96, 0xbb, 0x9d, 0x69, 0xb9, 0xdf, 0x2b, 0x35, 0x4c, 0xf4, 0x5d, 0xaf, 0x98, + 0x1a, 0xbd, 0x5f, 0x8d, 0x1a, 0x15, 0xcc, 0xed, 0x97, 0x73, 0xa4, 0xde, 0xf6, 0x93, 0xa7, 0x9d, + 0x99, 0xaf, 0x9e, 0x76, 0x66, 0xbe, 0x7e, 0xda, 0x99, 0xf9, 0xcd, 0xb4, 0xa3, 0x3c, 0x99, 0x76, + 0x94, 0xaf, 0xa6, 0x1d, 0xe5, 0xeb, 0x69, 0x47, 0xf9, 0xc7, 0xb4, 0xa3, 0xfc, 0xee, 0x9b, 0xce, + 0xcc, 0x67, 0xf3, 0xd2, 0xe3, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe9, 0x89, 0x29, 0x5c, 0x61, + 0x1b, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/apps/v1beta1/generated.proto b/vendor/k8s.io/api/apps/v1beta1/generated.proto index ba6134d538..6f41f06bcc 100644 --- a/vendor/k8s.io/api/apps/v1beta1/generated.proto +++ b/vendor/k8s.io/api/apps/v1beta1/generated.proto @@ -22,7 +22,6 @@ syntax = 'proto2'; package k8s.io.api.apps.v1beta1; import "k8s.io/api/core/v1/generated.proto"; -import "k8s.io/api/policy/v1beta1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; diff --git a/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go index 93892bfd0b..dd37f8dd84 100644 --- a/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/apps/v1beta1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1beta1 import ( - corev1 "k8s.io/api/core/v1" + core_v1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -204,30 +204,50 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) in.Strategy.DeepCopyInto(&out.Strategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.RollbackTo != nil { in, out := &in.RollbackTo, &out.RollbackTo - *out = new(RollbackConfig) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(RollbackConfig) + **out = **in + } } if in.ProgressDeadlineSeconds != nil { in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -254,8 +274,12 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -275,8 +299,12 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - *out = new(RollingUpdateDeployment) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDeployment) + (*in).DeepCopyInto(*out) + } } return } @@ -312,13 +340,21 @@ func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } if in.MaxSurge != nil { in, out := &in.MaxSurge, &out.MaxSurge - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } return } @@ -338,8 +374,12 @@ func (in *RollingUpdateStatefulSetStrategy) DeepCopyInto(out *RollingUpdateState *out = *in if in.Partition != nil { in, out := &in.Partition, &out.Partition - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -504,18 +544,26 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) if in.VolumeClaimTemplates != nil { in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates - *out = make([]corev1.PersistentVolumeClaim, len(*in)) + *out = make([]core_v1.PersistentVolumeClaim, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -523,8 +571,12 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -544,13 +596,21 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) { *out = *in if in.ObservedGeneration != nil { in, out := &in.ObservedGeneration, &out.ObservedGeneration - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -577,8 +637,12 @@ func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - *out = new(RollingUpdateStatefulSetStrategy) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateStatefulSetStrategy) + (*in).DeepCopyInto(*out) + } } return } diff --git a/vendor/k8s.io/api/apps/v1beta2/generated.pb.go b/vendor/k8s.io/api/apps/v1beta2/generated.pb.go index 49f9f87713..72d832c340 100644 --- a/vendor/k8s.io/api/apps/v1beta2/generated.pb.go +++ b/vendor/k8s.io/api/apps/v1beta2/generated.pb.go @@ -64,7 +64,6 @@ import fmt "fmt" import math "math" import k8s_io_api_core_v1 "k8s.io/api/core/v1" - import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -7445,142 +7444,141 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 2186 bytes of a gzipped FileDescriptorProto + // 2176 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcb, 0x6f, 0x1c, 0xb7, - 0x19, 0xf7, 0xec, 0x43, 0x5a, 0x51, 0x96, 0x64, 0x53, 0xaa, 0xb4, 0x91, 0xdb, 0x95, 0xb1, 0x09, - 0x1c, 0x39, 0xb6, 0x66, 0x6d, 0xe5, 0x81, 0xc4, 0x2e, 0xda, 0x6a, 0xa5, 0xd4, 0x76, 0xa0, 0x57, + 0x19, 0xd7, 0xec, 0x43, 0x5a, 0x51, 0x91, 0x64, 0x53, 0xaa, 0xb4, 0x91, 0xdb, 0x95, 0xb1, 0x09, + 0x1c, 0x25, 0xb6, 0x66, 0x6d, 0xe5, 0x81, 0xc4, 0x2e, 0xda, 0x6a, 0xa5, 0xd4, 0x76, 0xa0, 0x57, 0x28, 0xcb, 0x40, 0x83, 0x16, 0x35, 0xb5, 0x4b, 0xaf, 0x26, 0x9a, 0x17, 0x66, 0x38, 0x5b, 0x2f, 0x7a, 0xe9, 0xa9, 0x40, 0x81, 0x02, 0x6d, 0xaf, 0xfd, 0x27, 0x7a, 0x2b, 0x8a, 0xf6, 0x56, 0x04, 0x85, 0x2f, 0x05, 0x82, 0x5e, 0x92, 0x93, 0x50, 0x6f, 0x4e, 0x45, 0xd1, 0x4b, 0x81, 0x5e, 0x02, 0x14, 0x28, 0xc8, 0xe1, 0x3c, 0x38, 0x0f, 0xef, 0x48, 0xb1, 0x95, 0x22, 0xc8, 0x6d, 0x87, 0xfc, - 0x7d, 0x3f, 0x7e, 0x24, 0xbf, 0x8f, 0xdf, 0x6f, 0x38, 0x0b, 0xbe, 0x77, 0xf4, 0xb6, 0xab, 0x6a, - 0x56, 0xeb, 0xc8, 0x3b, 0x20, 0x8e, 0x49, 0x28, 0x71, 0x5b, 0x7d, 0x62, 0x76, 0x2d, 0xa7, 0x25, - 0x3a, 0xb0, 0xad, 0xb5, 0xb0, 0x6d, 0xbb, 0xad, 0xfe, 0xcd, 0x03, 0x42, 0xf1, 0x6a, 0xab, 0x47, - 0x4c, 0xe2, 0x60, 0x4a, 0xba, 0xaa, 0xed, 0x58, 0xd4, 0x82, 0x0b, 0x3e, 0x50, 0xc5, 0xb6, 0xa6, - 0x32, 0xa0, 0x2a, 0x80, 0x8b, 0x2b, 0x3d, 0x8d, 0x1e, 0x7a, 0x07, 0x6a, 0xc7, 0x32, 0x5a, 0x3d, - 0xab, 0x67, 0xb5, 0x38, 0xfe, 0xc0, 0x7b, 0xc4, 0x9f, 0xf8, 0x03, 0xff, 0xe5, 0xf3, 0x2c, 0x36, - 0x63, 0x03, 0x76, 0x2c, 0x87, 0xb4, 0xfa, 0x37, 0x93, 0x63, 0x2d, 0x5e, 0x8d, 0x61, 0x6c, 0x4b, - 0xd7, 0x3a, 0x03, 0xe1, 0x56, 0x1a, 0xfa, 0x46, 0x04, 0x35, 0x70, 0xe7, 0x50, 0x33, 0x89, 0x33, - 0x68, 0xd9, 0x47, 0x3d, 0xd6, 0xe0, 0xb6, 0x0c, 0x42, 0x71, 0xd6, 0x00, 0xad, 0x3c, 0x2b, 0xc7, - 0x33, 0xa9, 0x66, 0x90, 0x94, 0xc1, 0x5b, 0xa3, 0x0c, 0xdc, 0xce, 0x21, 0x31, 0x70, 0xca, 0xee, - 0xf5, 0x3c, 0x3b, 0x8f, 0x6a, 0x7a, 0x4b, 0x33, 0xa9, 0x4b, 0x9d, 0xa4, 0x51, 0xf3, 0x3f, 0x0a, - 0x80, 0xeb, 0x96, 0x49, 0x1d, 0x4b, 0xd7, 0x89, 0x83, 0x48, 0x5f, 0x73, 0x35, 0xcb, 0x84, 0x0f, - 0x41, 0x8d, 0xcd, 0xa7, 0x8b, 0x29, 0xae, 0x2b, 0x97, 0x95, 0xe5, 0xc9, 0xd5, 0x1b, 0x6a, 0xb4, - 0x29, 0x21, 0xbd, 0x6a, 0x1f, 0xf5, 0x58, 0x83, 0xab, 0x32, 0xb4, 0xda, 0xbf, 0xa9, 0xee, 0x1c, - 0x7c, 0x48, 0x3a, 0x74, 0x8b, 0x50, 0xdc, 0x86, 0x4f, 0x8e, 0x97, 0xce, 0x0d, 0x8f, 0x97, 0x40, - 0xd4, 0x86, 0x42, 0x56, 0xb8, 0x03, 0x2a, 0x9c, 0xbd, 0xc4, 0xd9, 0x57, 0x72, 0xd9, 0xc5, 0xa4, - 0x55, 0x84, 0x7f, 0xf2, 0xee, 0x63, 0x4a, 0x4c, 0xe6, 0x5e, 0xfb, 0xbc, 0xa0, 0xae, 0x6c, 0x60, - 0x8a, 0x11, 0x27, 0x82, 0xd7, 0x41, 0xcd, 0x11, 0xee, 0xd7, 0xcb, 0x97, 0x95, 0xe5, 0x72, 0xfb, - 0x82, 0x40, 0xd5, 0x82, 0x69, 0xa1, 0x10, 0xd1, 0x7c, 0xa2, 0x80, 0xf9, 0xf4, 0xbc, 0x37, 0x35, - 0x97, 0xc2, 0x1f, 0xa6, 0xe6, 0xae, 0x16, 0x9b, 0x3b, 0xb3, 0xe6, 0x33, 0x0f, 0x07, 0x0e, 0x5a, - 0x62, 0xf3, 0xde, 0x05, 0x55, 0x8d, 0x12, 0xc3, 0xad, 0x97, 0x2e, 0x97, 0x97, 0x27, 0x57, 0xaf, - 0xa9, 0x39, 0xb1, 0xae, 0xa6, 0xbd, 0x6b, 0x4f, 0x09, 0xde, 0xea, 0x3d, 0xc6, 0x80, 0x7c, 0xa2, - 0xe6, 0x2f, 0x4a, 0x60, 0x62, 0x03, 0x13, 0xc3, 0x32, 0xf7, 0x08, 0x3d, 0x83, 0x9d, 0xbb, 0x0b, - 0x2a, 0xae, 0x4d, 0x3a, 0x62, 0xe7, 0xae, 0xe4, 0x4e, 0x20, 0xf4, 0x69, 0xcf, 0x26, 0x9d, 0x68, - 0xcb, 0xd8, 0x13, 0xe2, 0x0c, 0x70, 0x17, 0x8c, 0xb9, 0x14, 0x53, 0xcf, 0xe5, 0x1b, 0x36, 0xb9, - 0xba, 0x5c, 0x80, 0x8b, 0xe3, 0xdb, 0xd3, 0x82, 0x6d, 0xcc, 0x7f, 0x46, 0x82, 0xa7, 0xf9, 0x8f, - 0x12, 0x80, 0x21, 0x76, 0xdd, 0x32, 0xbb, 0x1a, 0x65, 0xe1, 0x7c, 0x0b, 0x54, 0xe8, 0xc0, 0x26, - 0x7c, 0x41, 0x26, 0xda, 0x57, 0x02, 0x57, 0xee, 0x0f, 0x6c, 0xf2, 0xf9, 0xf1, 0xd2, 0x7c, 0xda, - 0x82, 0xf5, 0x20, 0x6e, 0x03, 0x37, 0x43, 0x27, 0x4b, 0xdc, 0xfa, 0x0d, 0x79, 0xe8, 0xcf, 0x8f, - 0x97, 0x32, 0x8e, 0x19, 0x35, 0x64, 0x92, 0x1d, 0x84, 0x7d, 0x00, 0x75, 0xec, 0xd2, 0xfb, 0x0e, - 0x36, 0x5d, 0x7f, 0x24, 0xcd, 0x20, 0x62, 0xfa, 0xaf, 0x15, 0xdb, 0x28, 0x66, 0xd1, 0x5e, 0x14, - 0x5e, 0xc0, 0xcd, 0x14, 0x1b, 0xca, 0x18, 0x01, 0x5e, 0x01, 0x63, 0x0e, 0xc1, 0xae, 0x65, 0xd6, - 0x2b, 0x7c, 0x16, 0xe1, 0x02, 0x22, 0xde, 0x8a, 0x44, 0x2f, 0xbc, 0x0a, 0xc6, 0x0d, 0xe2, 0xba, - 0xb8, 0x47, 0xea, 0x55, 0x0e, 0x9c, 0x11, 0xc0, 0xf1, 0x2d, 0xbf, 0x19, 0x05, 0xfd, 0xcd, 0xdf, - 0x2b, 0x60, 0x2a, 0x5c, 0xb9, 0x33, 0xc8, 0x9c, 0x3b, 0x72, 0xe6, 0x34, 0x47, 0x07, 0x4b, 0x4e, - 0xc2, 0x7c, 0x54, 0x8e, 0x39, 0xce, 0xc2, 0x11, 0xfe, 0x08, 0xd4, 0x5c, 0xa2, 0x93, 0x0e, 0xb5, - 0x1c, 0xe1, 0xf8, 0xeb, 0x05, 0x1d, 0xc7, 0x07, 0x44, 0xdf, 0x13, 0xa6, 0xed, 0xf3, 0xcc, 0xf3, - 0xe0, 0x09, 0x85, 0x94, 0xf0, 0x7d, 0x50, 0xa3, 0xc4, 0xb0, 0x75, 0x4c, 0x89, 0xc8, 0x9a, 0x97, - 0xe3, 0xce, 0xb3, 0x98, 0x61, 0x64, 0xbb, 0x56, 0xf7, 0xbe, 0x80, 0xf1, 0x94, 0x09, 0x17, 0x23, - 0x68, 0x45, 0x21, 0x0d, 0xb4, 0xc1, 0xb4, 0x67, 0x77, 0x19, 0x92, 0xb2, 0xe3, 0xbc, 0x37, 0x10, - 0x31, 0x74, 0x63, 0xf4, 0xaa, 0xec, 0x4b, 0x76, 0xed, 0x79, 0x31, 0xca, 0xb4, 0xdc, 0x8e, 0x12, - 0xfc, 0x70, 0x0d, 0xcc, 0x18, 0x9a, 0x89, 0x08, 0xee, 0x0e, 0xf6, 0x48, 0xc7, 0x32, 0xbb, 0x2e, - 0x0f, 0xa5, 0x6a, 0x7b, 0x41, 0x10, 0xcc, 0x6c, 0xc9, 0xdd, 0x28, 0x89, 0x87, 0x9b, 0x60, 0x2e, - 0x38, 0x80, 0xef, 0x6a, 0x2e, 0xb5, 0x9c, 0xc1, 0xa6, 0x66, 0x68, 0xb4, 0x3e, 0xc6, 0x79, 0xea, - 0xc3, 0xe3, 0xa5, 0x39, 0x94, 0xd1, 0x8f, 0x32, 0xad, 0x9a, 0xbf, 0x19, 0x03, 0x33, 0x89, 0x73, - 0x01, 0x3e, 0x00, 0xf3, 0x1d, 0xcf, 0x71, 0x88, 0x49, 0xb7, 0x3d, 0xe3, 0x80, 0x38, 0x7b, 0x9d, - 0x43, 0xd2, 0xf5, 0x74, 0xd2, 0xe5, 0xdb, 0x5a, 0x6d, 0x37, 0x84, 0xaf, 0xf3, 0xeb, 0x99, 0x28, - 0x94, 0x63, 0x0d, 0xdf, 0x03, 0xd0, 0xe4, 0x4d, 0x5b, 0x9a, 0xeb, 0x86, 0x9c, 0x25, 0xce, 0x19, - 0xa6, 0xe2, 0x76, 0x0a, 0x81, 0x32, 0xac, 0x98, 0x8f, 0x5d, 0xe2, 0x6a, 0x0e, 0xe9, 0x26, 0x7d, - 0x2c, 0xcb, 0x3e, 0x6e, 0x64, 0xa2, 0x50, 0x8e, 0x35, 0x7c, 0x13, 0x4c, 0xfa, 0xa3, 0xf1, 0x35, - 0x17, 0x9b, 0x33, 0x2b, 0xc8, 0x26, 0xb7, 0xa3, 0x2e, 0x14, 0xc7, 0xb1, 0xa9, 0x59, 0x07, 0x2e, - 0x71, 0xfa, 0xa4, 0x7b, 0xc7, 0x17, 0x07, 0xac, 0x82, 0x56, 0x79, 0x05, 0x0d, 0xa7, 0xb6, 0x93, - 0x42, 0xa0, 0x0c, 0x2b, 0x36, 0x35, 0x3f, 0x6a, 0x52, 0x53, 0x1b, 0x93, 0xa7, 0xb6, 0x9f, 0x89, - 0x42, 0x39, 0xd6, 0x2c, 0xf6, 0x7c, 0x97, 0xd7, 0xfa, 0x58, 0xd3, 0xf1, 0x81, 0x4e, 0xea, 0xe3, - 0x72, 0xec, 0x6d, 0xcb, 0xdd, 0x28, 0x89, 0x87, 0x77, 0xc0, 0x45, 0xbf, 0x69, 0xdf, 0xc4, 0x21, - 0x49, 0x8d, 0x93, 0xbc, 0x24, 0x48, 0x2e, 0x6e, 0x27, 0x01, 0x28, 0x6d, 0x03, 0x6f, 0x81, 0xe9, - 0x8e, 0xa5, 0xeb, 0x3c, 0x1e, 0xd7, 0x2d, 0xcf, 0xa4, 0xf5, 0x09, 0xce, 0x02, 0x59, 0x0e, 0xad, - 0x4b, 0x3d, 0x28, 0x81, 0x84, 0x3f, 0x06, 0xa0, 0x13, 0x14, 0x06, 0xb7, 0x0e, 0x46, 0x28, 0x80, - 0x74, 0x59, 0x8a, 0x2a, 0x73, 0xd8, 0xe4, 0xa2, 0x18, 0x65, 0xf3, 0x23, 0x05, 0x2c, 0xe4, 0x24, - 0x3a, 0xfc, 0xae, 0x54, 0x04, 0xaf, 0x25, 0x8a, 0xe0, 0xa5, 0x1c, 0xb3, 0x58, 0x25, 0x3c, 0x04, - 0x53, 0x4c, 0x90, 0x68, 0x66, 0xcf, 0x87, 0x88, 0xb3, 0xac, 0x95, 0x3b, 0x01, 0x14, 0x47, 0x47, - 0xa7, 0xf2, 0xc5, 0xe1, 0xf1, 0xd2, 0x94, 0xd4, 0x87, 0x64, 0xe2, 0xe6, 0x2f, 0x4b, 0x00, 0x6c, - 0x10, 0x5b, 0xb7, 0x06, 0x06, 0x31, 0xcf, 0x42, 0xd3, 0xdc, 0x93, 0x34, 0xcd, 0xab, 0xf9, 0x5b, - 0x12, 0x3a, 0x95, 0x2b, 0x6a, 0xde, 0x4f, 0x88, 0x9a, 0xab, 0x45, 0xc8, 0x9e, 0xad, 0x6a, 0x3e, - 0x29, 0x83, 0xd9, 0x08, 0x1c, 0xc9, 0x9a, 0xdb, 0xd2, 0x8e, 0xbe, 0x9a, 0xd8, 0xd1, 0x85, 0x0c, - 0x93, 0x17, 0xa6, 0x6b, 0x9e, 0xbf, 0xbe, 0x80, 0x1f, 0x82, 0x69, 0x26, 0x64, 0xfc, 0x90, 0xe0, - 0x32, 0x69, 0xec, 0xc4, 0x32, 0x29, 0x2c, 0x6e, 0x9b, 0x12, 0x13, 0x4a, 0x30, 0xe7, 0xc8, 0xb2, - 0xf1, 0x17, 0x2d, 0xcb, 0x9a, 0x7f, 0x50, 0xc0, 0x74, 0xb4, 0x4d, 0x67, 0x20, 0xa2, 0xee, 0xca, - 0x22, 0xea, 0xe5, 0x02, 0xc1, 0x99, 0xa3, 0xa2, 0x3e, 0xa9, 0xc4, 0x5d, 0xe7, 0x32, 0x6a, 0x99, - 0xbd, 0x82, 0xd9, 0xba, 0xd6, 0xc1, 0xae, 0xa8, 0xb7, 0xe7, 0xfd, 0xd7, 0x2f, 0xbf, 0x0d, 0x85, - 0xbd, 0x92, 0xe0, 0x2a, 0xbd, 0x58, 0xc1, 0x55, 0x7e, 0x3e, 0x82, 0xeb, 0x07, 0xa0, 0xe6, 0x06, - 0x52, 0xab, 0xc2, 0x29, 0xaf, 0x15, 0x4a, 0x6c, 0xa1, 0xb2, 0x42, 0xea, 0x50, 0x5f, 0x85, 0x74, - 0x59, 0xca, 0xaa, 0xfa, 0x65, 0x2a, 0x2b, 0x96, 0xcc, 0x36, 0xf6, 0x5c, 0xd2, 0xe5, 0x19, 0x50, - 0x8b, 0x92, 0x79, 0x97, 0xb7, 0x22, 0xd1, 0x0b, 0xf7, 0xc1, 0x82, 0xed, 0x58, 0x3d, 0x87, 0xb8, - 0xee, 0x06, 0xc1, 0x5d, 0x5d, 0x33, 0x49, 0x30, 0x01, 0xbf, 0x26, 0x5e, 0x1a, 0x1e, 0x2f, 0x2d, - 0xec, 0x66, 0x43, 0x50, 0x9e, 0x6d, 0xf3, 0xcf, 0x15, 0x70, 0x21, 0x79, 0x36, 0xe6, 0xc8, 0x14, - 0xe5, 0x54, 0x32, 0xe5, 0x7a, 0x2c, 0x4e, 0x7d, 0x0d, 0x17, 0xbb, 0x2a, 0x48, 0xc5, 0xea, 0x1a, - 0x98, 0x11, 0xb2, 0x24, 0xe8, 0x14, 0x42, 0x2d, 0xdc, 0x9e, 0x7d, 0xb9, 0x1b, 0x25, 0xf1, 0x4c, - 0x7c, 0x44, 0x9a, 0x22, 0x20, 0xa9, 0xc8, 0xe2, 0x63, 0x2d, 0x09, 0x40, 0x69, 0x1b, 0xb8, 0x05, - 0x66, 0x3d, 0x33, 0x4d, 0xe5, 0x87, 0xcb, 0x25, 0x41, 0x35, 0xbb, 0x9f, 0x86, 0xa0, 0x2c, 0x3b, - 0xf8, 0x50, 0xd2, 0x23, 0x63, 0xfc, 0x48, 0xb8, 0x5e, 0x20, 0xac, 0x0b, 0x0b, 0x12, 0x78, 0x1b, - 0x4c, 0x39, 0x5c, 0x73, 0x06, 0xae, 0xfa, 0xba, 0xed, 0x1b, 0xc2, 0x6c, 0x0a, 0xc5, 0x3b, 0x91, - 0x8c, 0xcd, 0x90, 0x5a, 0xb5, 0xa2, 0x52, 0xab, 0xf9, 0x27, 0x05, 0xc0, 0x74, 0x1e, 0x8e, 0xbc, - 0x09, 0x48, 0x59, 0xc4, 0x2a, 0xa6, 0x96, 0xad, 0x7f, 0x6e, 0x14, 0xd4, 0x3f, 0xd1, 0x81, 0x5a, - 0x4c, 0x00, 0x89, 0x65, 0x38, 0x9b, 0x4b, 0x9d, 0xa2, 0x02, 0x28, 0x72, 0xea, 0x39, 0x08, 0xa0, - 0x18, 0xd9, 0xb3, 0x05, 0xd0, 0x3f, 0x4b, 0x60, 0x36, 0x02, 0x17, 0x16, 0x40, 0x19, 0x26, 0x5f, - 0x5f, 0xec, 0x8c, 0xbe, 0xd8, 0x61, 0xa2, 0x24, 0x5a, 0xba, 0xff, 0x27, 0x51, 0x12, 0x79, 0x95, - 0x23, 0x4a, 0x7e, 0x57, 0x8a, 0xbb, 0xfe, 0x95, 0x17, 0x25, 0x5f, 0xfc, 0x4e, 0xa6, 0xf9, 0x97, - 0x32, 0xb8, 0x90, 0xcc, 0x43, 0xa9, 0x40, 0x2a, 0x23, 0x0b, 0xe4, 0x2e, 0x98, 0x7b, 0xe4, 0xe9, - 0xfa, 0x80, 0x2f, 0x43, 0xac, 0x4a, 0xfa, 0xa5, 0xf5, 0x9b, 0xc2, 0x72, 0xee, 0xfb, 0x19, 0x18, - 0x94, 0x69, 0x99, 0x53, 0xec, 0xcb, 0xa7, 0x2a, 0xf6, 0xa9, 0x0a, 0x54, 0x39, 0x41, 0x05, 0xca, - 0x2c, 0xdc, 0xd5, 0x53, 0x14, 0xee, 0x93, 0x55, 0xda, 0x8c, 0x83, 0x6b, 0xe4, 0xab, 0xff, 0xcf, - 0x15, 0x30, 0x9f, 0xfd, 0xc2, 0x0d, 0x75, 0x30, 0x6d, 0xe0, 0xc7, 0xf1, 0x8b, 0x8f, 0x51, 0x45, - 0xc4, 0xa3, 0x9a, 0xae, 0xfa, 0x9f, 0x8c, 0xd4, 0x7b, 0x26, 0xdd, 0x71, 0xf6, 0xa8, 0xa3, 0x99, - 0x3d, 0xbf, 0xf2, 0x6e, 0x49, 0x5c, 0x28, 0xc1, 0xdd, 0xfc, 0x4c, 0x01, 0x0b, 0x39, 0x95, 0xef, - 0x6c, 0x3d, 0x81, 0x1f, 0x80, 0x9a, 0x81, 0x1f, 0xef, 0x79, 0x4e, 0x2f, 0xab, 0x56, 0x17, 0x1b, - 0x87, 0x67, 0xf3, 0x96, 0x60, 0x41, 0x21, 0x5f, 0x73, 0x07, 0x5c, 0x96, 0x26, 0xc9, 0x32, 0x87, - 0x3c, 0xf2, 0x74, 0x9e, 0x44, 0x42, 0x6c, 0x5c, 0x03, 0x13, 0x36, 0x76, 0xa8, 0x16, 0x4a, 0xd5, - 0x6a, 0x7b, 0x6a, 0x78, 0xbc, 0x34, 0xb1, 0x1b, 0x34, 0xa2, 0xa8, 0xbf, 0xf9, 0x5f, 0x05, 0x54, - 0xf7, 0x3a, 0x58, 0x27, 0x67, 0x50, 0xed, 0x37, 0xa4, 0x6a, 0x9f, 0x7f, 0x93, 0xce, 0xfd, 0xc9, - 0x2d, 0xf4, 0x9b, 0x89, 0x42, 0xff, 0xca, 0x08, 0x9e, 0x67, 0xd7, 0xf8, 0x77, 0xc0, 0x44, 0x38, - 0xdc, 0xc9, 0x0e, 0xa0, 0xe6, 0x6f, 0x4b, 0x60, 0x32, 0x36, 0xc4, 0x09, 0x8f, 0xaf, 0x87, 0xd2, - 0xb1, 0xcf, 0x12, 0x73, 0xb5, 0xc8, 0x44, 0xd4, 0xe0, 0x88, 0x7f, 0xd7, 0xa4, 0x4e, 0xfc, 0x05, - 0x2f, 0x7d, 0xf2, 0x7f, 0x07, 0x4c, 0x53, 0xec, 0xf4, 0x08, 0x0d, 0xfa, 0xf8, 0x82, 0x4d, 0x44, - 0xb7, 0x13, 0xf7, 0xa5, 0x5e, 0x94, 0x40, 0x2f, 0xde, 0x06, 0x53, 0xd2, 0x60, 0xf0, 0x02, 0x28, - 0x1f, 0x91, 0x81, 0x2f, 0x7b, 0x10, 0xfb, 0x09, 0xe7, 0x40, 0xb5, 0x8f, 0x75, 0xcf, 0x8f, 0xf3, - 0x09, 0xe4, 0x3f, 0xdc, 0x2a, 0xbd, 0xad, 0x34, 0x7f, 0xc5, 0x16, 0x27, 0x0a, 0xce, 0x33, 0x88, - 0xae, 0xf7, 0xa4, 0xe8, 0xca, 0xff, 0xa8, 0x17, 0x4f, 0x99, 0xbc, 0x18, 0x43, 0x89, 0x18, 0x7b, - 0xad, 0x10, 0xdb, 0xb3, 0x23, 0xed, 0x5f, 0x25, 0x30, 0x17, 0x43, 0x47, 0x72, 0xf2, 0xdb, 0x92, - 0x9c, 0x5c, 0x4e, 0xc8, 0xc9, 0x7a, 0x96, 0xcd, 0xd7, 0x7a, 0x72, 0xb4, 0x9e, 0xfc, 0xa3, 0x02, - 0x66, 0x62, 0x6b, 0x77, 0x06, 0x82, 0xf2, 0x9e, 0x2c, 0x28, 0x5f, 0x29, 0x12, 0x34, 0x39, 0x8a, - 0xf2, 0xaf, 0x55, 0xc9, 0xf9, 0xaf, 0xbc, 0xa4, 0xfc, 0x29, 0x98, 0xeb, 0x5b, 0xba, 0x67, 0x90, - 0x75, 0x1d, 0x6b, 0x46, 0x00, 0x60, 0xaa, 0xa9, 0x9c, 0x7c, 0x97, 0x0b, 0xe9, 0x89, 0xe3, 0x6a, - 0x2e, 0x25, 0x26, 0x7d, 0x10, 0x59, 0x46, 0xba, 0xef, 0x41, 0x06, 0x1d, 0xca, 0x1c, 0x04, 0xbe, - 0x09, 0x26, 0x99, 0x7e, 0xd3, 0x3a, 0x64, 0x1b, 0x1b, 0x41, 0x60, 0x85, 0x9f, 0xb0, 0xf6, 0xa2, - 0x2e, 0x14, 0xc7, 0xc1, 0x43, 0x30, 0x6b, 0x5b, 0xdd, 0x2d, 0x6c, 0xe2, 0x1e, 0x61, 0x32, 0x63, - 0x97, 0xff, 0x8f, 0x87, 0x5f, 0x7e, 0x4d, 0xb4, 0xdf, 0x0a, 0x6e, 0x45, 0x76, 0xd3, 0x10, 0xf6, - 0x92, 0x98, 0xd1, 0xcc, 0x93, 0x3a, 0x8b, 0x12, 0x3a, 0xa9, 0xcf, 0xae, 0xfe, 0x1d, 0xf1, 0x6a, - 0x91, 0x08, 0x3b, 0xe5, 0x87, 0xd7, 0xbc, 0xbb, 0xbd, 0xda, 0xa9, 0xbe, 0x9a, 0xfe, 0xbb, 0x02, - 0x2e, 0xa6, 0x8e, 0xca, 0x2f, 0xf1, 0x76, 0x2d, 0x25, 0xcf, 0xcb, 0x27, 0x90, 0xe7, 0x6b, 0x60, - 0x46, 0x7c, 0xb0, 0x4d, 0xa8, 0xfb, 0xf0, 0xfd, 0x67, 0x5d, 0xee, 0x46, 0x49, 0x7c, 0xd6, 0xed, - 0x5e, 0xf5, 0x84, 0xb7, 0x7b, 0x71, 0x2f, 0xc4, 0x1f, 0x90, 0xfc, 0xd0, 0x4b, 0x7b, 0x21, 0xfe, - 0x87, 0x94, 0xc4, 0x33, 0x85, 0xe0, 0xb3, 0x86, 0x0c, 0xe3, 0xb2, 0x42, 0xd8, 0x97, 0x7a, 0x51, - 0x02, 0xfd, 0x85, 0x3e, 0x4a, 0xe2, 0x8c, 0x8f, 0x92, 0x2b, 0x45, 0xe2, 0xb9, 0xf8, 0xbb, 0xc9, - 0xdf, 0x14, 0xf0, 0x52, 0x6e, 0x22, 0xc0, 0x35, 0xa9, 0xec, 0xae, 0x24, 0xca, 0xee, 0xb7, 0x72, - 0x0d, 0x63, 0xb5, 0xd7, 0xc9, 0xbe, 0x9a, 0x7b, 0xa7, 0xd8, 0xd5, 0x5c, 0x86, 0x76, 0x1f, 0x7d, - 0x47, 0xd7, 0x5e, 0x79, 0xf2, 0xb4, 0x71, 0xee, 0xe3, 0xa7, 0x8d, 0x73, 0x9f, 0x3e, 0x6d, 0x9c, - 0xfb, 0xd9, 0xb0, 0xa1, 0x3c, 0x19, 0x36, 0x94, 0x8f, 0x87, 0x0d, 0xe5, 0xd3, 0x61, 0x43, 0xf9, - 0xfb, 0xb0, 0xa1, 0xfc, 0xfa, 0xb3, 0xc6, 0xb9, 0x0f, 0xc6, 0xc5, 0x88, 0xff, 0x0b, 0x00, 0x00, - 0xff, 0xff, 0xe4, 0x8f, 0x6a, 0x57, 0x17, 0x29, 0x00, 0x00, + 0x7d, 0x3f, 0x7e, 0x24, 0xbf, 0x8f, 0xdf, 0x6f, 0x38, 0x0b, 0xbe, 0x77, 0xfc, 0xb6, 0xab, 0x6a, + 0x56, 0xeb, 0xd8, 0x3b, 0x24, 0x8e, 0x49, 0x28, 0x71, 0x5b, 0x7d, 0x62, 0x76, 0x2d, 0xa7, 0x25, + 0x3a, 0xb0, 0xad, 0xb5, 0xb0, 0x6d, 0xbb, 0xad, 0xfe, 0x8d, 0x43, 0x42, 0xf1, 0x5a, 0xab, 0x47, + 0x4c, 0xe2, 0x60, 0x4a, 0xba, 0xaa, 0xed, 0x58, 0xd4, 0x82, 0x8b, 0x3e, 0x50, 0xc5, 0xb6, 0xa6, + 0x32, 0xa0, 0x2a, 0x80, 0x4b, 0xab, 0x3d, 0x8d, 0x1e, 0x79, 0x87, 0x6a, 0xc7, 0x32, 0x5a, 0x3d, + 0xab, 0x67, 0xb5, 0x38, 0xfe, 0xd0, 0x7b, 0xc8, 0x9f, 0xf8, 0x03, 0xff, 0xe5, 0xf3, 0x2c, 0x35, + 0x63, 0x03, 0x76, 0x2c, 0x87, 0xb4, 0xfa, 0x37, 0x92, 0x63, 0x2d, 0xbd, 0x11, 0x61, 0x0c, 0xdc, + 0x39, 0xd2, 0x4c, 0xe2, 0x0c, 0x5a, 0xf6, 0x71, 0x8f, 0x35, 0xb8, 0x2d, 0x83, 0x50, 0x9c, 0x65, + 0xd5, 0xca, 0xb3, 0x72, 0x3c, 0x93, 0x6a, 0x06, 0x49, 0x19, 0xbc, 0x35, 0xca, 0xc0, 0xed, 0x1c, + 0x11, 0x03, 0xa7, 0xec, 0x5e, 0xcf, 0xb3, 0xf3, 0xa8, 0xa6, 0xb7, 0x34, 0x93, 0xba, 0xd4, 0x49, + 0x1a, 0x35, 0xff, 0xa3, 0x00, 0xb8, 0x61, 0x99, 0xd4, 0xb1, 0x74, 0x9d, 0x38, 0x88, 0xf4, 0x35, + 0x57, 0xb3, 0x4c, 0xf8, 0x00, 0xd4, 0xd8, 0x7c, 0xba, 0x98, 0xe2, 0xba, 0x72, 0x59, 0x59, 0x99, + 0x5a, 0xbb, 0xae, 0x46, 0x2b, 0x1d, 0xd2, 0xab, 0xf6, 0x71, 0x8f, 0x35, 0xb8, 0x2a, 0x43, 0xab, + 0xfd, 0x1b, 0xea, 0xee, 0xe1, 0x87, 0xa4, 0x43, 0xb7, 0x09, 0xc5, 0x6d, 0xf8, 0xf8, 0x64, 0x79, + 0x6c, 0x78, 0xb2, 0x0c, 0xa2, 0x36, 0x14, 0xb2, 0xc2, 0x5d, 0x50, 0xe1, 0xec, 0x25, 0xce, 0xbe, + 0x9a, 0xcb, 0x2e, 0x26, 0xad, 0x22, 0xfc, 0x93, 0x77, 0x1f, 0x51, 0x62, 0x32, 0xf7, 0xda, 0x2f, + 0x08, 0xea, 0xca, 0x26, 0xa6, 0x18, 0x71, 0x22, 0x78, 0x0d, 0xd4, 0x1c, 0xe1, 0x7e, 0xbd, 0x7c, + 0x59, 0x59, 0x29, 0xb7, 0x2f, 0x08, 0x54, 0x2d, 0x98, 0x16, 0x0a, 0x11, 0xcd, 0xc7, 0x0a, 0x58, + 0x48, 0xcf, 0x7b, 0x4b, 0x73, 0x29, 0xfc, 0x61, 0x6a, 0xee, 0x6a, 0xb1, 0xb9, 0x33, 0x6b, 0x3e, + 0xf3, 0x70, 0xe0, 0xa0, 0x25, 0x36, 0xef, 0x3d, 0x50, 0xd5, 0x28, 0x31, 0xdc, 0x7a, 0xe9, 0x72, + 0x79, 0x65, 0x6a, 0xed, 0xaa, 0x9a, 0x13, 0xc0, 0x6a, 0xda, 0xbb, 0xf6, 0xb4, 0xe0, 0xad, 0xde, + 0x65, 0x0c, 0xc8, 0x27, 0x6a, 0xfe, 0xa2, 0x04, 0x26, 0x37, 0x31, 0x31, 0x2c, 0x73, 0x9f, 0xd0, + 0x73, 0xd8, 0xb9, 0x3b, 0xa0, 0xe2, 0xda, 0xa4, 0x23, 0x76, 0xee, 0x4a, 0xee, 0x04, 0x42, 0x9f, + 0xf6, 0x6d, 0xd2, 0x89, 0xb6, 0x8c, 0x3d, 0x21, 0xce, 0x00, 0xf7, 0xc0, 0xb8, 0x4b, 0x31, 0xf5, + 0x5c, 0xbe, 0x61, 0x53, 0x6b, 0x2b, 0x05, 0xb8, 0x38, 0xbe, 0x3d, 0x23, 0xd8, 0xc6, 0xfd, 0x67, + 0x24, 0x78, 0x9a, 0xff, 0x28, 0x01, 0x18, 0x62, 0x37, 0x2c, 0xb3, 0xab, 0x51, 0x16, 0xce, 0x37, + 0x41, 0x85, 0x0e, 0x6c, 0xc2, 0x17, 0x64, 0xb2, 0x7d, 0x25, 0x70, 0xe5, 0xde, 0xc0, 0x26, 0x9f, + 0x9f, 0x2c, 0x2f, 0xa4, 0x2d, 0x58, 0x0f, 0xe2, 0x36, 0x70, 0x2b, 0x74, 0xb2, 0xc4, 0xad, 0xdf, + 0x90, 0x87, 0xfe, 0xfc, 0x64, 0x39, 0xe3, 0xec, 0x50, 0x43, 0x26, 0xd9, 0x41, 0xd8, 0x07, 0x50, + 0xc7, 0x2e, 0xbd, 0xe7, 0x60, 0xd3, 0xf5, 0x47, 0xd2, 0x0c, 0x22, 0xa6, 0xff, 0x5a, 0xb1, 0x8d, + 0x62, 0x16, 0xed, 0x25, 0xe1, 0x05, 0xdc, 0x4a, 0xb1, 0xa1, 0x8c, 0x11, 0xe0, 0x15, 0x30, 0xee, + 0x10, 0xec, 0x5a, 0x66, 0xbd, 0xc2, 0x67, 0x11, 0x2e, 0x20, 0xe2, 0xad, 0x48, 0xf4, 0xc2, 0x57, + 0xc1, 0x84, 0x41, 0x5c, 0x17, 0xf7, 0x48, 0xbd, 0xca, 0x81, 0xb3, 0x02, 0x38, 0xb1, 0xed, 0x37, + 0xa3, 0xa0, 0xbf, 0xf9, 0x7b, 0x05, 0x4c, 0x87, 0x2b, 0x77, 0x0e, 0x99, 0x73, 0x5b, 0xce, 0x9c, + 0xe6, 0xe8, 0x60, 0xc9, 0x49, 0x98, 0x8f, 0xca, 0x31, 0xc7, 0x59, 0x38, 0xc2, 0x1f, 0x81, 0x9a, + 0x4b, 0x74, 0xd2, 0xa1, 0x96, 0x23, 0x1c, 0x7f, 0xbd, 0xa0, 0xe3, 0xf8, 0x90, 0xe8, 0xfb, 0xc2, + 0xb4, 0xfd, 0x02, 0xf3, 0x3c, 0x78, 0x42, 0x21, 0x25, 0x7c, 0x1f, 0xd4, 0x28, 0x31, 0x6c, 0x1d, + 0x53, 0x22, 0xb2, 0xe6, 0xa5, 0xb8, 0xf3, 0x2c, 0x66, 0x18, 0xd9, 0x9e, 0xd5, 0xbd, 0x27, 0x60, + 0x3c, 0x65, 0xc2, 0xc5, 0x08, 0x5a, 0x51, 0x48, 0x03, 0x6d, 0x30, 0xe3, 0xd9, 0x5d, 0x86, 0xa4, + 0xec, 0x38, 0xef, 0x0d, 0x44, 0x0c, 0x5d, 0x1f, 0xbd, 0x2a, 0x07, 0x92, 0x5d, 0x7b, 0x41, 0x8c, + 0x32, 0x23, 0xb7, 0xa3, 0x04, 0x3f, 0x5c, 0x07, 0xb3, 0x86, 0x66, 0x22, 0x82, 0xbb, 0x83, 0x7d, + 0xd2, 0xb1, 0xcc, 0xae, 0xcb, 0x43, 0xa9, 0xda, 0x5e, 0x14, 0x04, 0xb3, 0xdb, 0x72, 0x37, 0x4a, + 0xe2, 0xe1, 0x16, 0x98, 0x0f, 0x0e, 0xe0, 0x3b, 0x9a, 0x4b, 0x2d, 0x67, 0xb0, 0xa5, 0x19, 0x1a, + 0xad, 0x8f, 0x73, 0x9e, 0xfa, 0xf0, 0x64, 0x79, 0x1e, 0x65, 0xf4, 0xa3, 0x4c, 0xab, 0xe6, 0x6f, + 0xc6, 0xc1, 0x6c, 0xe2, 0x5c, 0x80, 0xf7, 0xc1, 0x42, 0xc7, 0x73, 0x1c, 0x62, 0xd2, 0x1d, 0xcf, + 0x38, 0x24, 0xce, 0x7e, 0xe7, 0x88, 0x74, 0x3d, 0x9d, 0x74, 0xf9, 0xb6, 0x56, 0xdb, 0x0d, 0xe1, + 0xeb, 0xc2, 0x46, 0x26, 0x0a, 0xe5, 0x58, 0xc3, 0xf7, 0x00, 0x34, 0x79, 0xd3, 0xb6, 0xe6, 0xba, + 0x21, 0x67, 0x89, 0x73, 0x86, 0xa9, 0xb8, 0x93, 0x42, 0xa0, 0x0c, 0x2b, 0xe6, 0x63, 0x97, 0xb8, + 0x9a, 0x43, 0xba, 0x49, 0x1f, 0xcb, 0xb2, 0x8f, 0x9b, 0x99, 0x28, 0x94, 0x63, 0x0d, 0xdf, 0x04, + 0x53, 0xfe, 0x68, 0x7c, 0xcd, 0xc5, 0xe6, 0xcc, 0x09, 0xb2, 0xa9, 0x9d, 0xa8, 0x0b, 0xc5, 0x71, + 0x6c, 0x6a, 0xd6, 0xa1, 0x4b, 0x9c, 0x3e, 0xe9, 0xde, 0xf6, 0xc5, 0x01, 0xab, 0xa0, 0x55, 0x5e, + 0x41, 0xc3, 0xa9, 0xed, 0xa6, 0x10, 0x28, 0xc3, 0x8a, 0x4d, 0xcd, 0x8f, 0x9a, 0xd4, 0xd4, 0xc6, + 0xe5, 0xa9, 0x1d, 0x64, 0xa2, 0x50, 0x8e, 0x35, 0x8b, 0x3d, 0xdf, 0xe5, 0xf5, 0x3e, 0xd6, 0x74, + 0x7c, 0xa8, 0x93, 0xfa, 0x84, 0x1c, 0x7b, 0x3b, 0x72, 0x37, 0x4a, 0xe2, 0xe1, 0x6d, 0x70, 0xd1, + 0x6f, 0x3a, 0x30, 0x71, 0x48, 0x52, 0xe3, 0x24, 0x2f, 0x0a, 0x92, 0x8b, 0x3b, 0x49, 0x00, 0x4a, + 0xdb, 0xc0, 0x9b, 0x60, 0xa6, 0x63, 0xe9, 0x3a, 0x8f, 0xc7, 0x0d, 0xcb, 0x33, 0x69, 0x7d, 0x92, + 0xb3, 0x40, 0x96, 0x43, 0x1b, 0x52, 0x0f, 0x4a, 0x20, 0xe1, 0x8f, 0x01, 0xe8, 0x04, 0x85, 0xc1, + 0xad, 0x83, 0x11, 0x0a, 0x20, 0x5d, 0x96, 0xa2, 0xca, 0x1c, 0x36, 0xb9, 0x28, 0x46, 0xd9, 0xfc, + 0x48, 0x01, 0x8b, 0x39, 0x89, 0x0e, 0xbf, 0x2b, 0x15, 0xc1, 0xab, 0x89, 0x22, 0x78, 0x29, 0xc7, + 0x2c, 0x56, 0x09, 0x8f, 0xc0, 0x34, 0x13, 0x24, 0x9a, 0xd9, 0xf3, 0x21, 0xe2, 0x2c, 0x6b, 0xe5, + 0x4e, 0x00, 0xc5, 0xd1, 0xd1, 0xa9, 0x7c, 0x71, 0x78, 0xb2, 0x3c, 0x2d, 0xf5, 0x21, 0x99, 0xb8, + 0xf9, 0xcb, 0x12, 0x00, 0x9b, 0xc4, 0xd6, 0xad, 0x81, 0x41, 0xcc, 0xf3, 0xd0, 0x34, 0x77, 0x25, + 0x4d, 0xf3, 0x4a, 0xfe, 0x96, 0x84, 0x4e, 0xe5, 0x8a, 0x9a, 0xf7, 0x13, 0xa2, 0xe6, 0xd5, 0x22, + 0x64, 0x4f, 0x57, 0x35, 0x9f, 0x94, 0xc1, 0x5c, 0x04, 0x8e, 0x64, 0xcd, 0x2d, 0x69, 0x47, 0x5f, + 0x49, 0xec, 0xe8, 0x62, 0x86, 0xc9, 0x73, 0xd3, 0x35, 0xcf, 0x5e, 0x5f, 0xc0, 0x0f, 0xc1, 0x0c, + 0x13, 0x32, 0x7e, 0x48, 0x70, 0x99, 0x34, 0x7e, 0x6a, 0x99, 0x14, 0x16, 0xb7, 0x2d, 0x89, 0x09, + 0x25, 0x98, 0x73, 0x64, 0xd9, 0xc4, 0xf3, 0x96, 0x65, 0xcd, 0x3f, 0x28, 0x60, 0x26, 0xda, 0xa6, + 0x73, 0x10, 0x51, 0x77, 0x64, 0x11, 0xf5, 0x52, 0x81, 0xe0, 0xcc, 0x51, 0x51, 0x9f, 0x54, 0xe2, + 0xae, 0x73, 0x19, 0xb5, 0xc2, 0x5e, 0xc1, 0x6c, 0x5d, 0xeb, 0x60, 0x57, 0xd4, 0xdb, 0x17, 0xfc, + 0xd7, 0x2f, 0xbf, 0x0d, 0x85, 0xbd, 0x92, 0xe0, 0x2a, 0x3d, 0x5f, 0xc1, 0x55, 0x7e, 0x36, 0x82, + 0xeb, 0x07, 0xa0, 0xe6, 0x06, 0x52, 0xab, 0xc2, 0x29, 0xaf, 0x16, 0x4a, 0x6c, 0xa1, 0xb2, 0x42, + 0xea, 0x50, 0x5f, 0x85, 0x74, 0x59, 0xca, 0xaa, 0xfa, 0x65, 0x2a, 0x2b, 0x96, 0xcc, 0x36, 0xf6, + 0x5c, 0xd2, 0xe5, 0x19, 0x50, 0x8b, 0x92, 0x79, 0x8f, 0xb7, 0x22, 0xd1, 0x0b, 0x0f, 0xc0, 0xa2, + 0xed, 0x58, 0x3d, 0x87, 0xb8, 0xee, 0x26, 0xc1, 0x5d, 0x5d, 0x33, 0x49, 0x30, 0x01, 0xbf, 0x26, + 0x5e, 0x1a, 0x9e, 0x2c, 0x2f, 0xee, 0x65, 0x43, 0x50, 0x9e, 0x6d, 0xf3, 0xcf, 0x15, 0x70, 0x21, + 0x79, 0x36, 0xe6, 0xc8, 0x14, 0xe5, 0x4c, 0x32, 0xe5, 0x5a, 0x2c, 0x4e, 0x7d, 0x0d, 0x17, 0xbb, + 0x2a, 0x48, 0xc5, 0xea, 0x3a, 0x98, 0x15, 0xb2, 0x24, 0xe8, 0x14, 0x42, 0x2d, 0xdc, 0x9e, 0x03, + 0xb9, 0x1b, 0x25, 0xf1, 0x4c, 0x7c, 0x44, 0x9a, 0x22, 0x20, 0xa9, 0xc8, 0xe2, 0x63, 0x3d, 0x09, + 0x40, 0x69, 0x1b, 0xb8, 0x0d, 0xe6, 0x3c, 0x33, 0x4d, 0xe5, 0x87, 0xcb, 0x25, 0x41, 0x35, 0x77, + 0x90, 0x86, 0xa0, 0x2c, 0x3b, 0xf8, 0x40, 0xd2, 0x23, 0xe3, 0xfc, 0x48, 0xb8, 0x56, 0x20, 0xac, + 0x0b, 0x0b, 0x12, 0x78, 0x0b, 0x4c, 0x3b, 0x5c, 0x73, 0x06, 0xae, 0xfa, 0xba, 0xed, 0x1b, 0xc2, + 0x6c, 0x1a, 0xc5, 0x3b, 0x91, 0x8c, 0xcd, 0x90, 0x5a, 0xb5, 0xa2, 0x52, 0xab, 0xf9, 0x27, 0x05, + 0xc0, 0x74, 0x1e, 0x8e, 0xbc, 0x09, 0x48, 0x59, 0xc4, 0x2a, 0xa6, 0x96, 0xad, 0x7f, 0xae, 0x17, + 0xd4, 0x3f, 0xd1, 0x81, 0x5a, 0x4c, 0x00, 0x89, 0x65, 0x38, 0x9f, 0x4b, 0x9d, 0xa2, 0x02, 0x28, + 0x72, 0xea, 0x19, 0x08, 0xa0, 0x18, 0xd9, 0xd3, 0x05, 0xd0, 0x3f, 0x4b, 0x60, 0x2e, 0x02, 0x17, + 0x16, 0x40, 0x19, 0x26, 0x5f, 0x5f, 0xec, 0x8c, 0xbe, 0xd8, 0x61, 0xa2, 0x24, 0x5a, 0xba, 0xff, + 0x27, 0x51, 0x12, 0x79, 0x95, 0x23, 0x4a, 0x7e, 0x57, 0x8a, 0xbb, 0xfe, 0x95, 0x17, 0x25, 0x5f, + 0xfc, 0x4e, 0xa6, 0xf9, 0x97, 0x32, 0xb8, 0x90, 0xcc, 0x43, 0xa9, 0x40, 0x2a, 0x23, 0x0b, 0xe4, + 0x1e, 0x98, 0x7f, 0xe8, 0xe9, 0xfa, 0x80, 0x2f, 0x43, 0xac, 0x4a, 0xfa, 0xa5, 0xf5, 0x9b, 0xc2, + 0x72, 0xfe, 0xfb, 0x19, 0x18, 0x94, 0x69, 0x99, 0x53, 0xec, 0xcb, 0x67, 0x2a, 0xf6, 0xa9, 0x0a, + 0x54, 0x39, 0x45, 0x05, 0xca, 0x2c, 0xdc, 0xd5, 0x33, 0x14, 0xee, 0xd3, 0x55, 0xda, 0x8c, 0x83, + 0x6b, 0xe4, 0xab, 0xff, 0xcf, 0x15, 0xb0, 0x90, 0xfd, 0xc2, 0x0d, 0x75, 0x30, 0x63, 0xe0, 0x47, + 0xf1, 0x8b, 0x8f, 0x51, 0x45, 0xc4, 0xa3, 0x9a, 0xae, 0xfa, 0x9f, 0x8c, 0xd4, 0xbb, 0x26, 0xdd, + 0x75, 0xf6, 0xa9, 0xa3, 0x99, 0x3d, 0xbf, 0xf2, 0x6e, 0x4b, 0x5c, 0x28, 0xc1, 0xdd, 0xfc, 0x4c, + 0x01, 0x8b, 0x39, 0x95, 0xef, 0x7c, 0x3d, 0x81, 0x1f, 0x80, 0x9a, 0x81, 0x1f, 0xed, 0x7b, 0x4e, + 0x2f, 0xab, 0x56, 0x17, 0x1b, 0x87, 0x67, 0xf3, 0xb6, 0x60, 0x41, 0x21, 0x5f, 0x73, 0x17, 0x5c, + 0x96, 0x26, 0xc9, 0x32, 0x87, 0x3c, 0xf4, 0x74, 0x9e, 0x44, 0x42, 0x6c, 0x5c, 0x05, 0x93, 0x36, + 0x76, 0xa8, 0x16, 0x4a, 0xd5, 0x6a, 0x7b, 0x7a, 0x78, 0xb2, 0x3c, 0xb9, 0x17, 0x34, 0xa2, 0xa8, + 0xbf, 0xf9, 0x5f, 0x05, 0x54, 0xf7, 0x3b, 0x58, 0x27, 0xe7, 0x50, 0xed, 0x37, 0xa5, 0x6a, 0x9f, + 0x7f, 0x93, 0xce, 0xfd, 0xc9, 0x2d, 0xf4, 0x5b, 0x89, 0x42, 0xff, 0xf2, 0x08, 0x9e, 0xa7, 0xd7, + 0xf8, 0x77, 0xc0, 0x64, 0x38, 0xdc, 0xe9, 0x0e, 0xa0, 0xe6, 0x6f, 0x4b, 0x60, 0x2a, 0x36, 0xc4, + 0x29, 0x8f, 0xaf, 0x07, 0xd2, 0xb1, 0xcf, 0x12, 0x73, 0xad, 0xc8, 0x44, 0xd4, 0xe0, 0x88, 0x7f, + 0xd7, 0xa4, 0x4e, 0xfc, 0x05, 0x2f, 0x7d, 0xf2, 0x7f, 0x07, 0xcc, 0x50, 0xec, 0xf4, 0x08, 0x0d, + 0xfa, 0xf8, 0x82, 0x4d, 0x46, 0xb7, 0x13, 0xf7, 0xa4, 0x5e, 0x94, 0x40, 0x2f, 0xdd, 0x02, 0xd3, + 0xd2, 0x60, 0xf0, 0x02, 0x28, 0x1f, 0x93, 0x81, 0x2f, 0x7b, 0x10, 0xfb, 0x09, 0xe7, 0x41, 0xb5, + 0x8f, 0x75, 0xcf, 0x8f, 0xf3, 0x49, 0xe4, 0x3f, 0xdc, 0x2c, 0xbd, 0xad, 0x34, 0x7f, 0xc5, 0x16, + 0x27, 0x0a, 0xce, 0x73, 0x88, 0xae, 0xf7, 0xa4, 0xe8, 0xca, 0xff, 0xa8, 0x17, 0x4f, 0x99, 0xbc, + 0x18, 0x43, 0x89, 0x18, 0x7b, 0xad, 0x10, 0xdb, 0xd3, 0x23, 0xed, 0x5f, 0x25, 0x30, 0x1f, 0x43, + 0x47, 0x72, 0xf2, 0xdb, 0x92, 0x9c, 0x5c, 0x49, 0xc8, 0xc9, 0x7a, 0x96, 0xcd, 0xd7, 0x7a, 0x72, + 0xb4, 0x9e, 0xfc, 0xa3, 0x02, 0x66, 0x63, 0x6b, 0x77, 0x0e, 0x82, 0xf2, 0xae, 0x2c, 0x28, 0x5f, + 0x2e, 0x12, 0x34, 0x39, 0x8a, 0xf2, 0xaf, 0x55, 0xc9, 0xf9, 0xaf, 0xbc, 0xa4, 0xfc, 0x29, 0x98, + 0xef, 0x5b, 0xba, 0x67, 0x90, 0x0d, 0x1d, 0x6b, 0x46, 0x00, 0x60, 0xaa, 0xa9, 0x9c, 0x7c, 0x97, + 0x0b, 0xe9, 0x89, 0xe3, 0x6a, 0x2e, 0x25, 0x26, 0xbd, 0x1f, 0x59, 0x46, 0xba, 0xef, 0x7e, 0x06, + 0x1d, 0xca, 0x1c, 0x04, 0xbe, 0x09, 0xa6, 0x98, 0x7e, 0xd3, 0x3a, 0x64, 0x07, 0x1b, 0x41, 0x60, + 0x85, 0x9f, 0xb0, 0xf6, 0xa3, 0x2e, 0x14, 0xc7, 0xc1, 0x23, 0x30, 0x67, 0x5b, 0xdd, 0x6d, 0x6c, + 0xe2, 0x1e, 0x61, 0x32, 0x63, 0xcf, 0xd2, 0xb5, 0xce, 0x80, 0x5f, 0x7e, 0x4d, 0xb6, 0xdf, 0x0a, + 0x6e, 0x45, 0xf6, 0xd2, 0x10, 0xf6, 0x92, 0x98, 0xd1, 0xcc, 0x93, 0x3a, 0x8b, 0x12, 0x3a, 0xa9, + 0xcf, 0xae, 0xfe, 0x1d, 0xf1, 0x5a, 0x91, 0x08, 0x3b, 0xe3, 0x87, 0xd7, 0xbc, 0xbb, 0xbd, 0xda, + 0x99, 0xbe, 0x9a, 0xfe, 0xbb, 0x02, 0x2e, 0xa6, 0x8e, 0xca, 0x2f, 0xf1, 0x76, 0x2d, 0x25, 0xcf, + 0xcb, 0xa7, 0x90, 0xe7, 0xeb, 0x60, 0x56, 0x7c, 0xb0, 0x4d, 0xa8, 0xfb, 0xf0, 0xfd, 0x67, 0x43, + 0xee, 0x46, 0x49, 0x7c, 0xd6, 0xed, 0x5e, 0xf5, 0x94, 0xb7, 0x7b, 0x71, 0x2f, 0xc4, 0x1f, 0x90, + 0xfc, 0xd0, 0x4b, 0x7b, 0x21, 0xfe, 0x87, 0x94, 0xc4, 0x33, 0x85, 0xe0, 0xb3, 0x86, 0x0c, 0x13, + 0xb2, 0x42, 0x38, 0x90, 0x7a, 0x51, 0x02, 0xfd, 0x85, 0x3e, 0x4a, 0xe2, 0x8c, 0x8f, 0x92, 0xab, + 0x45, 0xe2, 0xb9, 0xf8, 0xbb, 0xc9, 0xdf, 0x14, 0xf0, 0x62, 0x6e, 0x22, 0xc0, 0x75, 0xa9, 0xec, + 0xae, 0x26, 0xca, 0xee, 0xb7, 0x72, 0x0d, 0x63, 0xb5, 0xd7, 0xc9, 0xbe, 0x9a, 0x7b, 0xa7, 0xd8, + 0xd5, 0x5c, 0x86, 0x76, 0x1f, 0x7d, 0x47, 0xd7, 0x5e, 0x7d, 0xfc, 0xa4, 0x31, 0xf6, 0xf1, 0x93, + 0xc6, 0xd8, 0xa7, 0x4f, 0x1a, 0x63, 0x3f, 0x1b, 0x36, 0x94, 0xc7, 0xc3, 0x86, 0xf2, 0xf1, 0xb0, + 0xa1, 0x7c, 0x3a, 0x6c, 0x28, 0x7f, 0x1f, 0x36, 0x94, 0x5f, 0x7f, 0xd6, 0x18, 0xfb, 0x60, 0x42, + 0x8c, 0xf8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x85, 0x43, 0x0a, 0xec, 0x28, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/apps/v1beta2/generated.proto b/vendor/k8s.io/api/apps/v1beta2/generated.proto index 7327c3369b..cc3656d284 100644 --- a/vendor/k8s.io/api/apps/v1beta2/generated.proto +++ b/vendor/k8s.io/api/apps/v1beta2/generated.proto @@ -22,7 +22,6 @@ syntax = 'proto2'; package k8s.io.api.apps.v1beta2; import "k8s.io/api/core/v1/generated.proto"; -import "k8s.io/api/policy/v1beta1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; diff --git a/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go b/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go index 8a0bad22ea..a3bd8afdc3 100644 --- a/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/apps/v1beta2/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1beta2 import ( - corev1 "k8s.io/api/core/v1" + core_v1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -170,15 +170,23 @@ func (in *DaemonSetSpec) DeepCopyInto(out *DaemonSetSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -198,8 +206,12 @@ func (in *DaemonSetStatus) DeepCopyInto(out *DaemonSetStatus) { *out = *in if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -226,8 +238,12 @@ func (in *DaemonSetUpdateStrategy) DeepCopyInto(out *DaemonSetUpdateStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - *out = new(RollingUpdateDaemonSet) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDaemonSet) + (*in).DeepCopyInto(*out) + } } return } @@ -326,25 +342,41 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) in.Strategy.DeepCopyInto(&out.Strategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.ProgressDeadlineSeconds != nil { in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -371,8 +403,12 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -392,8 +428,12 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - *out = new(RollingUpdateDeployment) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDeployment) + (*in).DeepCopyInto(*out) + } } return } @@ -491,13 +531,21 @@ func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) return @@ -541,8 +589,12 @@ func (in *RollingUpdateDaemonSet) DeepCopyInto(out *RollingUpdateDaemonSet) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } return } @@ -562,13 +614,21 @@ func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } if in.MaxSurge != nil { in, out := &in.MaxSurge, &out.MaxSurge - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } return } @@ -588,8 +648,12 @@ func (in *RollingUpdateStatefulSetStrategy) DeepCopyInto(out *RollingUpdateState *out = *in if in.Partition != nil { in, out := &in.Partition, &out.Partition - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -754,18 +818,26 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) if in.VolumeClaimTemplates != nil { in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates - *out = make([]corev1.PersistentVolumeClaim, len(*in)) + *out = make([]core_v1.PersistentVolumeClaim, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -773,8 +845,12 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) { in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -794,8 +870,12 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) { *out = *in if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -822,8 +902,12 @@ func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - *out = new(RollingUpdateStatefulSetStrategy) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateStatefulSetStrategy) + (*in).DeepCopyInto(*out) + } } return } diff --git a/vendor/k8s.io/api/authentication/v1/generated.pb.go b/vendor/k8s.io/api/authentication/v1/generated.pb.go index 29697280a6..2ce2e2d78e 100644 --- a/vendor/k8s.io/api/authentication/v1/generated.pb.go +++ b/vendor/k8s.io/api/authentication/v1/generated.pb.go @@ -2087,62 +2087,61 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 905 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xf6, 0xfa, 0x47, 0x64, 0x8f, 0x9b, 0x90, 0x4c, 0xa9, 0x64, 0x05, 0xb0, 0x8d, 0x91, 0x90, - 0x05, 0x74, 0xb7, 0x36, 0xa8, 0x54, 0x45, 0x42, 0xca, 0x12, 0x0b, 0x2c, 0x04, 0xad, 0xa6, 0x4d, - 0x40, 0x9c, 0x18, 0xdb, 0x2f, 0xce, 0xe0, 0xee, 0xec, 0x32, 0x3b, 0x6b, 0xea, 0x5b, 0xff, 0x04, - 0x8e, 0x20, 0x71, 0xe0, 0x8f, 0x40, 0xe2, 0xc8, 0x35, 0xc7, 0x8a, 0x53, 0x0f, 0xc8, 0x22, 0xcb, - 0xbf, 0xc0, 0x89, 0x13, 0x9a, 0xd9, 0x89, 0xd7, 0x3f, 0x12, 0xc7, 0xa7, 0xde, 0x3c, 0xef, 0x7d, - 0xef, 0x9b, 0xf7, 0xbe, 0xf9, 0xfc, 0x16, 0x75, 0x46, 0xf7, 0x42, 0x9b, 0xf9, 0xce, 0x28, 0xea, - 0x81, 0xe0, 0x20, 0x21, 0x74, 0xc6, 0xc0, 0x07, 0xbe, 0x70, 0x4c, 0x82, 0x06, 0xcc, 0xa1, 0x91, - 0x3c, 0x05, 0x2e, 0x59, 0x9f, 0x4a, 0xe6, 0x73, 0x67, 0xdc, 0x72, 0x86, 0xc0, 0x41, 0x50, 0x09, - 0x03, 0x3b, 0x10, 0xbe, 0xf4, 0xf1, 0xeb, 0x09, 0xda, 0xa6, 0x01, 0xb3, 0x17, 0xd1, 0xf6, 0xb8, - 0xb5, 0x7f, 0x7b, 0xc8, 0xe4, 0x69, 0xd4, 0xb3, 0xfb, 0xbe, 0xe7, 0x0c, 0xfd, 0xa1, 0xef, 0xe8, - 0xa2, 0x5e, 0x74, 0xa2, 0x4f, 0xfa, 0xa0, 0x7f, 0x25, 0x64, 0xfb, 0x1f, 0xa4, 0x57, 0x7b, 0xb4, - 0x7f, 0xca, 0x38, 0x88, 0x89, 0x13, 0x8c, 0x86, 0x2a, 0x10, 0x3a, 0x1e, 0x48, 0x7a, 0x49, 0x0b, - 0xfb, 0xce, 0x55, 0x55, 0x22, 0xe2, 0x92, 0x79, 0xb0, 0x52, 0x70, 0xf7, 0xba, 0x82, 0xb0, 0x7f, - 0x0a, 0x1e, 0x5d, 0xa9, 0x7b, 0xff, 0xaa, 0xba, 0x48, 0xb2, 0x27, 0x0e, 0xe3, 0x32, 0x94, 0x62, - 0xb9, 0xa8, 0xf1, 0xa7, 0x85, 0x5e, 0x75, 0xfd, 0x88, 0x0f, 0x1e, 0xf4, 0xbe, 0x83, 0xbe, 0x24, - 0x70, 0x02, 0x02, 0x78, 0x1f, 0x70, 0x1d, 0xe5, 0x47, 0x8c, 0x0f, 0x2a, 0x56, 0xdd, 0x6a, 0x96, - 0xdc, 0x1b, 0x67, 0xd3, 0x5a, 0x26, 0x9e, 0xd6, 0xf2, 0x9f, 0x33, 0x3e, 0x20, 0x3a, 0x83, 0xdb, - 0x08, 0xd1, 0x87, 0xdd, 0x63, 0x10, 0x21, 0xf3, 0x79, 0x25, 0xab, 0x71, 0xd8, 0xe0, 0xd0, 0xc1, - 0x2c, 0x43, 0xe6, 0x50, 0x8a, 0x95, 0x53, 0x0f, 0x2a, 0xb9, 0x45, 0xd6, 0x2f, 0xa9, 0x07, 0x44, - 0x67, 0xb0, 0x8b, 0x72, 0x51, 0xf7, 0xb0, 0x92, 0xd7, 0x80, 0x3b, 0x06, 0x90, 0x3b, 0xea, 0x1e, - 0xfe, 0x37, 0xad, 0xbd, 0x79, 0xd5, 0x84, 0x72, 0x12, 0x40, 0x68, 0x1f, 0x75, 0x0f, 0x89, 0x2a, - 0x6e, 0x7c, 0x88, 0x50, 0xe7, 0xa9, 0x14, 0xf4, 0x98, 0x3e, 0x89, 0x00, 0xd7, 0x50, 0x81, 0x49, - 0xf0, 0xc2, 0x8a, 0x55, 0xcf, 0x35, 0x4b, 0x6e, 0x29, 0x9e, 0xd6, 0x0a, 0x5d, 0x15, 0x20, 0x49, - 0xfc, 0x7e, 0xf1, 0xa7, 0x5f, 0x6b, 0x99, 0x67, 0x7f, 0xd5, 0x33, 0x8d, 0x5f, 0xb2, 0xe8, 0xc6, - 0x63, 0x7f, 0x04, 0x9c, 0xc0, 0xf7, 0x11, 0x84, 0x12, 0x7f, 0x8b, 0x8a, 0xea, 0x5d, 0x07, 0x54, - 0x52, 0xad, 0x44, 0xb9, 0x7d, 0xc7, 0x4e, 0x2d, 0x35, 0x6b, 0xc2, 0x0e, 0x46, 0x43, 0x15, 0x08, - 0x6d, 0x85, 0xb6, 0xc7, 0x2d, 0x3b, 0x91, 0xf3, 0x0b, 0x90, 0x34, 0xd5, 0x24, 0x8d, 0x91, 0x19, - 0x2b, 0x7e, 0x88, 0xf2, 0x61, 0x00, 0x7d, 0xad, 0x5f, 0xb9, 0x6d, 0xdb, 0xeb, 0x0c, 0x6b, 0xcf, - 0xf7, 0xf6, 0x28, 0x80, 0x7e, 0xaa, 0xa0, 0x3a, 0x11, 0xcd, 0x84, 0xbf, 0x46, 0x5b, 0xa1, 0xa4, - 0x32, 0x0a, 0xb5, 0xca, 0x8b, 0x1d, 0x5f, 0xc7, 0xa9, 0xeb, 0xdc, 0x1d, 0xc3, 0xba, 0x95, 0x9c, - 0x89, 0xe1, 0x6b, 0xfc, 0x6b, 0xa1, 0xdd, 0xe5, 0x16, 0xf0, 0xbb, 0xa8, 0x44, 0xa3, 0x01, 0x53, - 0xa6, 0xb9, 0x90, 0x78, 0x3b, 0x9e, 0xd6, 0x4a, 0x07, 0x17, 0x41, 0x92, 0xe6, 0x31, 0x47, 0x3b, - 0xbd, 0x05, 0xb7, 0x99, 0x1e, 0xdb, 0xeb, 0x7b, 0xbc, 0xcc, 0xa1, 0x2e, 0x8e, 0xa7, 0xb5, 0x9d, - 0xc5, 0x0c, 0x59, 0x62, 0xc7, 0x9f, 0xa0, 0x3d, 0x78, 0x1a, 0x30, 0xa1, 0x99, 0x1e, 0x41, 0xdf, - 0xe7, 0x83, 0x50, 0x7b, 0x2b, 0xe7, 0xde, 0x8a, 0xa7, 0xb5, 0xbd, 0xce, 0x72, 0x92, 0xac, 0xe2, - 0x1b, 0xbf, 0x59, 0x08, 0xaf, 0xaa, 0x84, 0xdf, 0x42, 0x05, 0xa9, 0xa2, 0xe6, 0x2f, 0xb2, 0x6d, - 0x44, 0x2b, 0x24, 0xd0, 0x24, 0x87, 0x27, 0xe8, 0x66, 0x4a, 0xf8, 0x98, 0x79, 0x10, 0x4a, 0xea, - 0x05, 0xe6, 0xb5, 0xdf, 0xd9, 0xcc, 0x4b, 0xaa, 0xcc, 0x7d, 0xcd, 0xd0, 0xdf, 0xec, 0xac, 0xd2, - 0x91, 0xcb, 0xee, 0x68, 0xfc, 0x9c, 0x45, 0x65, 0xd3, 0xf6, 0x98, 0xc1, 0x0f, 0x2f, 0xc1, 0xcb, - 0x0f, 0x16, 0xbc, 0x7c, 0x7b, 0x23, 0xdf, 0xa9, 0xd6, 0xae, 0xb4, 0xf2, 0x57, 0x4b, 0x56, 0x76, - 0x36, 0xa7, 0x5c, 0xef, 0xe4, 0xbb, 0xe8, 0x95, 0xa5, 0xfb, 0x37, 0x7a, 0xce, 0xc6, 0x1f, 0x16, - 0xda, 0x5b, 0xb9, 0x05, 0x7f, 0x84, 0xb6, 0xe7, 0x9a, 0x81, 0x64, 0x69, 0x16, 0xdd, 0x5b, 0x86, - 0x62, 0xfb, 0x60, 0x3e, 0x49, 0x16, 0xb1, 0xf8, 0x33, 0x94, 0x8f, 0x42, 0x10, 0x46, 0xb4, 0xb7, - 0xd7, 0x4f, 0x78, 0x14, 0x82, 0xe8, 0xf2, 0x13, 0x3f, 0x55, 0x4b, 0x45, 0x88, 0x66, 0x50, 0x13, - 0x80, 0x10, 0xbe, 0x30, 0xdb, 0x75, 0x36, 0x41, 0x47, 0x05, 0x49, 0x92, 0x6b, 0xfc, 0x9e, 0x45, - 0xc5, 0x0b, 0x16, 0xfc, 0x1e, 0x2a, 0xaa, 0x4a, 0xbd, 0x92, 0x93, 0xb1, 0x77, 0x4d, 0x91, 0xc6, - 0xa8, 0x38, 0x99, 0x21, 0xf0, 0x1b, 0x28, 0x17, 0xb1, 0x81, 0xd9, 0xf4, 0xe5, 0xb9, 0xd5, 0x4c, - 0x54, 0x1c, 0x37, 0xd0, 0xd6, 0x50, 0xf8, 0x51, 0xa0, 0x1e, 0x4b, 0x6d, 0x01, 0xa4, 0x74, 0xff, - 0x54, 0x47, 0x88, 0xc9, 0xe0, 0x63, 0x54, 0x00, 0xb5, 0x99, 0x2b, 0xf9, 0x7a, 0xae, 0x59, 0x6e, - 0xb7, 0x36, 0x9b, 0xd6, 0xd6, 0xdb, 0xbc, 0xc3, 0xa5, 0x98, 0xcc, 0x4d, 0xa5, 0x62, 0x24, 0xa1, - 0xdb, 0xef, 0x99, 0x8d, 0xaf, 0x31, 0x78, 0x17, 0xe5, 0x46, 0x30, 0x49, 0x26, 0x22, 0xea, 0x27, - 0xfe, 0x18, 0x15, 0xc6, 0xea, 0x63, 0x60, 0x54, 0x6e, 0xae, 0xbf, 0x37, 0xfd, 0x78, 0x90, 0xa4, - 0xec, 0x7e, 0xf6, 0x9e, 0xe5, 0x36, 0xcf, 0xce, 0xab, 0x99, 0xe7, 0xe7, 0xd5, 0xcc, 0x8b, 0xf3, - 0x6a, 0xe6, 0x59, 0x5c, 0xb5, 0xce, 0xe2, 0xaa, 0xf5, 0x3c, 0xae, 0x5a, 0x2f, 0xe2, 0xaa, 0xf5, - 0x77, 0x5c, 0xb5, 0x7e, 0xfc, 0xa7, 0x9a, 0xf9, 0x26, 0x3b, 0x6e, 0xfd, 0x1f, 0x00, 0x00, 0xff, - 0xff, 0x5f, 0x39, 0x60, 0xb1, 0xbd, 0x08, 0x00, 0x00, + // 892 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcf, 0x8f, 0xdb, 0x44, + 0x14, 0x8e, 0xf3, 0x63, 0xb5, 0x99, 0x74, 0x97, 0xdd, 0x29, 0x95, 0xa2, 0x05, 0xec, 0x60, 0x24, + 0x14, 0x01, 0xb5, 0x9b, 0x08, 0x95, 0xaa, 0x48, 0x48, 0x6b, 0x36, 0x82, 0x08, 0x41, 0xab, 0x69, + 0x77, 0x41, 0x9c, 0x98, 0xd8, 0x6f, 0xb3, 0x26, 0x78, 0x6c, 0xec, 0x71, 0x68, 0x6e, 0xfd, 0x13, + 0x38, 0x82, 0xc4, 0x81, 0x3f, 0x02, 0x89, 0x23, 0xd7, 0x3d, 0x56, 0x9c, 0x7a, 0x40, 0x11, 0x6b, + 0xfe, 0x05, 0x4e, 0x9c, 0xd0, 0x8c, 0x67, 0xe3, 0xfc, 0xd8, 0x4d, 0x73, 0xea, 0x2d, 0xf3, 0xde, + 0xf7, 0xbe, 0x79, 0xef, 0x9b, 0x2f, 0xcf, 0xa8, 0x37, 0xba, 0x97, 0x58, 0x7e, 0x68, 0x8f, 0xd2, + 0x01, 0xc4, 0x0c, 0x38, 0x24, 0xf6, 0x18, 0x98, 0x17, 0xc6, 0xb6, 0x4a, 0xd0, 0xc8, 0xb7, 0x69, + 0xca, 0xcf, 0x80, 0x71, 0xdf, 0xa5, 0xdc, 0x0f, 0x99, 0x3d, 0xee, 0xd8, 0x43, 0x60, 0x10, 0x53, + 0x0e, 0x9e, 0x15, 0xc5, 0x21, 0x0f, 0xf1, 0xeb, 0x39, 0xda, 0xa2, 0x91, 0x6f, 0x2d, 0xa2, 0xad, + 0x71, 0xe7, 0xe0, 0xf6, 0xd0, 0xe7, 0x67, 0xe9, 0xc0, 0x72, 0xc3, 0xc0, 0x1e, 0x86, 0xc3, 0xd0, + 0x96, 0x45, 0x83, 0xf4, 0x54, 0x9e, 0xe4, 0x41, 0xfe, 0xca, 0xc9, 0x0e, 0xde, 0x2f, 0xae, 0x0e, + 0xa8, 0x7b, 0xe6, 0x33, 0x88, 0x27, 0x76, 0x34, 0x1a, 0x8a, 0x40, 0x62, 0x07, 0xc0, 0xe9, 0x15, + 0x2d, 0x1c, 0xd8, 0xd7, 0x55, 0xc5, 0x29, 0xe3, 0x7e, 0x00, 0x2b, 0x05, 0x77, 0x5f, 0x54, 0x90, + 0xb8, 0x67, 0x10, 0xd0, 0xe5, 0x3a, 0xf3, 0x4f, 0x0d, 0xbd, 0xea, 0x84, 0x29, 0xf3, 0x1e, 0x0c, + 0xbe, 0x05, 0x97, 0x13, 0x38, 0x85, 0x18, 0x98, 0x0b, 0xb8, 0x85, 0xaa, 0x23, 0x9f, 0x79, 0x4d, + 0xad, 0xa5, 0xb5, 0xeb, 0xce, 0x8d, 0xf3, 0xa9, 0x51, 0xca, 0xa6, 0x46, 0xf5, 0x33, 0x9f, 0x79, + 0x44, 0x66, 0x70, 0x17, 0x21, 0xfa, 0xb0, 0x7f, 0x02, 0x71, 0xe2, 0x87, 0xac, 0x59, 0x96, 0x38, + 0xac, 0x70, 0xe8, 0x70, 0x96, 0x21, 0x73, 0x28, 0xc1, 0xca, 0x68, 0x00, 0xcd, 0xca, 0x22, 0xeb, + 0x17, 0x34, 0x00, 0x22, 0x33, 0xd8, 0x41, 0x95, 0xb4, 0x7f, 0xd4, 0xac, 0x4a, 0xc0, 0x1d, 0x05, + 0xa8, 0x1c, 0xf7, 0x8f, 0xfe, 0x9b, 0x1a, 0x6f, 0x5e, 0x37, 0x24, 0x9f, 0x44, 0x90, 0x58, 0xc7, + 0xfd, 0x23, 0x22, 0x8a, 0xcd, 0x0f, 0x10, 0xea, 0x3d, 0xe1, 0x31, 0x3d, 0xa1, 0xdf, 0xa5, 0x80, + 0x0d, 0x54, 0xf3, 0x39, 0x04, 0x49, 0x53, 0x6b, 0x55, 0xda, 0x75, 0xa7, 0x9e, 0x4d, 0x8d, 0x5a, + 0x5f, 0x04, 0x48, 0x1e, 0xbf, 0xbf, 0xfd, 0xd3, 0xaf, 0x46, 0xe9, 0xe9, 0x5f, 0xad, 0x92, 0xf9, + 0x4b, 0x19, 0xdd, 0x78, 0x1c, 0x8e, 0x80, 0x11, 0xf8, 0x3e, 0x85, 0x84, 0xe3, 0x6f, 0xd0, 0xb6, + 0x78, 0x22, 0x8f, 0x72, 0x2a, 0x95, 0x68, 0x74, 0xef, 0x58, 0x85, 0x3b, 0x66, 0x4d, 0x58, 0xd1, + 0x68, 0x28, 0x02, 0x89, 0x25, 0xd0, 0xd6, 0xb8, 0x63, 0xe5, 0x72, 0x7e, 0x0e, 0x9c, 0x16, 0x9a, + 0x14, 0x31, 0x32, 0x63, 0xc5, 0x0f, 0x51, 0x35, 0x89, 0xc0, 0x95, 0xfa, 0x35, 0xba, 0x96, 0xb5, + 0xce, 0x7b, 0xd6, 0x7c, 0x6f, 0x8f, 0x22, 0x70, 0x0b, 0x05, 0xc5, 0x89, 0x48, 0x26, 0xfc, 0x15, + 0xda, 0x4a, 0x38, 0xe5, 0x69, 0x22, 0x55, 0x5e, 0xec, 0xf8, 0x45, 0x9c, 0xb2, 0xce, 0xd9, 0x55, + 0xac, 0x5b, 0xf9, 0x99, 0x28, 0x3e, 0xf3, 0x5f, 0x0d, 0xed, 0x2d, 0xb7, 0x80, 0xdf, 0x45, 0x75, + 0x9a, 0x7a, 0xbe, 0x30, 0xcd, 0xa5, 0xc4, 0x3b, 0xd9, 0xd4, 0xa8, 0x1f, 0x5e, 0x06, 0x49, 0x91, + 0xc7, 0x0c, 0xed, 0x0e, 0x16, 0xdc, 0xa6, 0x7a, 0xec, 0xae, 0xef, 0xf1, 0x2a, 0x87, 0x3a, 0x38, + 0x9b, 0x1a, 0xbb, 0x8b, 0x19, 0xb2, 0xc4, 0x8e, 0x3f, 0x46, 0xfb, 0xf0, 0x24, 0xf2, 0x63, 0xc9, + 0xf4, 0x08, 0xdc, 0x90, 0x79, 0x89, 0xf4, 0x56, 0xc5, 0xb9, 0x95, 0x4d, 0x8d, 0xfd, 0xde, 0x72, + 0x92, 0xac, 0xe2, 0xcd, 0xdf, 0x34, 0x84, 0x57, 0x55, 0xc2, 0x6f, 0xa1, 0x1a, 0x17, 0x51, 0xf5, + 0x17, 0xd9, 0x51, 0xa2, 0xd5, 0x72, 0x68, 0x9e, 0xc3, 0x13, 0x74, 0xb3, 0x20, 0x7c, 0xec, 0x07, + 0x90, 0x70, 0x1a, 0x44, 0xea, 0xb5, 0xdf, 0xd9, 0xcc, 0x4b, 0xa2, 0xcc, 0x79, 0x4d, 0xd1, 0xdf, + 0xec, 0xad, 0xd2, 0x91, 0xab, 0xee, 0x30, 0x7f, 0x2e, 0xa3, 0x86, 0x6a, 0x7b, 0xec, 0xc3, 0x0f, + 0x2f, 0xc1, 0xcb, 0x0f, 0x16, 0xbc, 0x7c, 0x7b, 0x23, 0xdf, 0x89, 0xd6, 0xae, 0xb5, 0xf2, 0x97, + 0x4b, 0x56, 0xb6, 0x37, 0xa7, 0x5c, 0xef, 0xe4, 0xbb, 0xe8, 0x95, 0xa5, 0xfb, 0x37, 0x7a, 0x4e, + 0xf3, 0x0f, 0x0d, 0xed, 0xaf, 0xdc, 0x82, 0x3f, 0x44, 0x3b, 0x73, 0xcd, 0x40, 0xbe, 0x34, 0xb7, + 0x9d, 0x5b, 0x8a, 0x62, 0xe7, 0x70, 0x3e, 0x49, 0x16, 0xb1, 0xf8, 0x53, 0x54, 0x4d, 0x13, 0x88, + 0x95, 0x68, 0x6f, 0xaf, 0x9f, 0xf0, 0x38, 0x81, 0xb8, 0xcf, 0x4e, 0xc3, 0x42, 0x2d, 0x11, 0x21, + 0x92, 0x41, 0x4c, 0x00, 0x71, 0x1c, 0xc6, 0x6a, 0xbb, 0xce, 0x26, 0xe8, 0x89, 0x20, 0xc9, 0x73, + 0xe6, 0xef, 0x65, 0xb4, 0x7d, 0xc9, 0x82, 0xdf, 0x43, 0xdb, 0xa2, 0x52, 0xae, 0xe4, 0x7c, 0xec, + 0x3d, 0x55, 0x24, 0x31, 0x22, 0x4e, 0x66, 0x08, 0xfc, 0x06, 0xaa, 0xa4, 0xbe, 0xa7, 0x36, 0x7d, + 0x63, 0x6e, 0x35, 0x13, 0x11, 0xc7, 0x26, 0xda, 0x1a, 0xc6, 0x61, 0x1a, 0x89, 0xc7, 0x12, 0x5b, + 0x00, 0x09, 0xdd, 0x3f, 0x91, 0x11, 0xa2, 0x32, 0xf8, 0x04, 0xd5, 0x40, 0x6c, 0xe6, 0x66, 0xb5, + 0x55, 0x69, 0x37, 0xba, 0x9d, 0xcd, 0xa6, 0xb5, 0xe4, 0x36, 0xef, 0x31, 0x1e, 0x4f, 0xe6, 0xa6, + 0x12, 0x31, 0x92, 0xd3, 0x1d, 0x0c, 0xd4, 0xc6, 0x97, 0x18, 0xbc, 0x87, 0x2a, 0x23, 0x98, 0xe4, + 0x13, 0x11, 0xf1, 0x13, 0x7f, 0x84, 0x6a, 0x63, 0xf1, 0x31, 0x50, 0x2a, 0xb7, 0xd7, 0xdf, 0x5b, + 0x7c, 0x3c, 0x48, 0x5e, 0x76, 0xbf, 0x7c, 0x4f, 0x73, 0xda, 0xe7, 0x17, 0x7a, 0xe9, 0xd9, 0x85, + 0x5e, 0x7a, 0x7e, 0xa1, 0x97, 0x9e, 0x66, 0xba, 0x76, 0x9e, 0xe9, 0xda, 0xb3, 0x4c, 0xd7, 0x9e, + 0x67, 0xba, 0xf6, 0x77, 0xa6, 0x6b, 0x3f, 0xfe, 0xa3, 0x97, 0xbe, 0x2e, 0x8f, 0x3b, 0xff, 0x07, + 0x00, 0x00, 0xff, 0xff, 0x5e, 0x8d, 0x94, 0x78, 0x88, 0x08, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/authentication/v1/generated.proto b/vendor/k8s.io/api/authentication/v1/generated.proto index d20887f824..10c792171d 100644 --- a/vendor/k8s.io/api/authentication/v1/generated.proto +++ b/vendor/k8s.io/api/authentication/v1/generated.proto @@ -24,7 +24,6 @@ package k8s.io.api.authentication.v1; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1"; diff --git a/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go index f36c253b2e..4b9b941053 100644 --- a/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/authentication/v1/zz_generated.deepcopy.go @@ -98,13 +98,21 @@ func (in *TokenRequestSpec) DeepCopyInto(out *TokenRequestSpec) { } if in.ExpirationSeconds != nil { in, out := &in.ExpirationSeconds, &out.ExpirationSeconds - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.BoundObjectRef != nil { in, out := &in.BoundObjectRef, &out.BoundObjectRef - *out = new(BoundObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(BoundObjectReference) + **out = **in + } } return } @@ -209,15 +217,12 @@ func (in *UserInfo) DeepCopyInto(out *UserInfo) { in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { - var outVal []string if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal - *out = make(ExtraValue, len(*in)) - copy(*out, *in) + (*out)[key] = make([]string, len(val)) + copy((*out)[key], val) } - (*out)[key] = outVal } } return diff --git a/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go b/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go index 0efd6bf579..8503d212ba 100644 --- a/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go +++ b/vendor/k8s.io/api/authentication/v1beta1/generated.pb.go @@ -1257,46 +1257,45 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 650 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x4d, 0x4f, 0x14, 0x4d, - 0x10, 0xc7, 0x67, 0xf6, 0x85, 0x67, 0xb7, 0xf7, 0x41, 0xb1, 0x13, 0x93, 0xcd, 0x26, 0xce, 0xae, - 0xeb, 0x85, 0x44, 0xe9, 0x11, 0x24, 0x48, 0xf0, 0xe4, 0x28, 0x31, 0x98, 0x10, 0x93, 0x16, 0x3c, - 0xa8, 0x07, 0x7b, 0x67, 0x8b, 0xd9, 0x76, 0x99, 0x97, 0xf4, 0xf4, 0xac, 0x72, 0xe3, 0x23, 0x78, - 0xf4, 0x68, 0xe2, 0x27, 0x31, 0xf1, 0xc0, 0x91, 0x23, 0x07, 0x43, 0x64, 0xfc, 0x22, 0xa6, 0x7b, - 0x5a, 0x76, 0x61, 0x43, 0x80, 0xdb, 0xf4, 0xbf, 0xea, 0xff, 0x9b, 0xaa, 0xea, 0x2e, 0xf4, 0x72, - 0xb8, 0x9a, 0x12, 0x1e, 0xbb, 0xc3, 0xac, 0x07, 0x22, 0x02, 0x09, 0xa9, 0x3b, 0x82, 0xa8, 0x1f, - 0x0b, 0xd7, 0x04, 0x58, 0xc2, 0x5d, 0x96, 0xc9, 0x01, 0x44, 0x92, 0xfb, 0x4c, 0xf2, 0x38, 0x72, - 0x47, 0x8b, 0x3d, 0x90, 0x6c, 0xd1, 0x0d, 0x20, 0x02, 0xc1, 0x24, 0xf4, 0x49, 0x22, 0x62, 0x19, - 0xe3, 0xbb, 0x85, 0x85, 0xb0, 0x84, 0x93, 0xb3, 0x16, 0x62, 0x2c, 0xad, 0x85, 0x80, 0xcb, 0x41, - 0xd6, 0x23, 0x7e, 0x1c, 0xba, 0x41, 0x1c, 0xc4, 0xae, 0x76, 0xf6, 0xb2, 0x1d, 0x7d, 0xd2, 0x07, - 0xfd, 0x55, 0x10, 0x5b, 0xcb, 0xe3, 0x22, 0x42, 0xe6, 0x0f, 0x78, 0x04, 0x62, 0xcf, 0x4d, 0x86, - 0x81, 0x12, 0x52, 0x37, 0x04, 0xc9, 0xdc, 0xd1, 0x54, 0x1d, 0x2d, 0xf7, 0x22, 0x97, 0xc8, 0x22, - 0xc9, 0x43, 0x98, 0x32, 0xac, 0x5c, 0x66, 0x48, 0xfd, 0x01, 0x84, 0x6c, 0xca, 0xf7, 0xe8, 0x22, - 0x5f, 0x26, 0xf9, 0xae, 0xcb, 0x23, 0x99, 0x4a, 0x71, 0xde, 0xd4, 0x7d, 0x8c, 0xd0, 0xfa, 0x67, - 0x29, 0xd8, 0x1b, 0xb6, 0x9b, 0x01, 0x6e, 0xa3, 0x2a, 0x97, 0x10, 0xa6, 0x4d, 0xbb, 0x53, 0x9e, - 0xaf, 0x7b, 0xf5, 0xfc, 0xb8, 0x5d, 0xdd, 0x50, 0x02, 0x2d, 0xf4, 0xb5, 0xda, 0xd7, 0x6f, 0x6d, - 0x6b, 0xff, 0x57, 0xc7, 0xea, 0x7e, 0x2f, 0xa1, 0xc6, 0x56, 0x3c, 0x84, 0x88, 0xc2, 0x88, 0xc3, - 0x27, 0xfc, 0x01, 0xd5, 0xd4, 0x04, 0xfa, 0x4c, 0xb2, 0xa6, 0xdd, 0xb1, 0xe7, 0x1b, 0x4b, 0x0f, - 0xc9, 0xf8, 0x06, 0x4e, 0x0b, 0x22, 0xc9, 0x30, 0x50, 0x42, 0x4a, 0x54, 0x36, 0x19, 0x2d, 0x92, - 0x57, 0xbd, 0x8f, 0xe0, 0xcb, 0x4d, 0x90, 0xcc, 0xc3, 0x07, 0xc7, 0x6d, 0x2b, 0x3f, 0x6e, 0xa3, - 0xb1, 0x46, 0x4f, 0xa9, 0x78, 0x0b, 0x55, 0xd2, 0x04, 0xfc, 0x66, 0x49, 0xd3, 0x97, 0xc8, 0xa5, - 0xf7, 0x4b, 0x26, 0xea, 0x7b, 0x9d, 0x80, 0xef, 0xfd, 0x6f, 0xf8, 0x15, 0x75, 0xa2, 0x9a, 0x86, - 0xdf, 0xa3, 0x99, 0x54, 0x32, 0x99, 0xa5, 0xcd, 0xb2, 0xe6, 0x2e, 0x5f, 0x93, 0xab, 0xbd, 0xde, - 0x0d, 0x43, 0x9e, 0x29, 0xce, 0xd4, 0x30, 0xbb, 0x2b, 0xe8, 0xe6, 0xb9, 0x22, 0xf0, 0x3d, 0x54, - 0x95, 0x4a, 0xd2, 0x53, 0xaa, 0x7b, 0xb3, 0xc6, 0x59, 0x2d, 0xf2, 0x8a, 0x58, 0xf7, 0xa7, 0x8d, - 0x6e, 0x4d, 0xfd, 0x05, 0x3f, 0x41, 0xb3, 0x13, 0x15, 0x41, 0x5f, 0x23, 0x6a, 0xde, 0x6d, 0x83, - 0x98, 0x7d, 0x3a, 0x19, 0xa4, 0x67, 0x73, 0xf1, 0x26, 0xaa, 0x64, 0x29, 0x08, 0x33, 0xbe, 0xfb, - 0x57, 0x68, 0x73, 0x3b, 0x05, 0xb1, 0x11, 0xed, 0xc4, 0xe3, 0xb9, 0x29, 0x85, 0x6a, 0x8c, 0x6a, - 0x03, 0x84, 0x88, 0x85, 0x1e, 0xdb, 0x44, 0x1b, 0xeb, 0x4a, 0xa4, 0x45, 0xac, 0xfb, 0xa3, 0x84, - 0x6a, 0xff, 0x28, 0xf8, 0x01, 0xaa, 0x29, 0x67, 0xc4, 0x42, 0x30, 0xbd, 0xcf, 0x19, 0x93, 0xce, - 0x51, 0x3a, 0x3d, 0xcd, 0xc0, 0x77, 0x50, 0x39, 0xe3, 0x7d, 0x5d, 0x6d, 0xdd, 0x6b, 0x98, 0xc4, - 0xf2, 0xf6, 0xc6, 0x73, 0xaa, 0x74, 0xdc, 0x45, 0x33, 0x81, 0x88, 0xb3, 0x44, 0x5d, 0x9b, 0x7a, - 0xaa, 0x48, 0x0d, 0xff, 0x85, 0x56, 0xa8, 0x89, 0xe0, 0x77, 0xa8, 0x0a, 0xea, 0x6d, 0x37, 0x2b, - 0x9d, 0xf2, 0x7c, 0x63, 0x69, 0xe5, 0x1a, 0x2d, 0x13, 0xbd, 0x14, 0xeb, 0x91, 0x14, 0x7b, 0x13, - 0xad, 0x29, 0x8d, 0x16, 0xcc, 0x56, 0x60, 0x16, 0x47, 0xe7, 0xe0, 0x39, 0x54, 0x1e, 0xc2, 0x5e, - 0xd1, 0x16, 0x55, 0x9f, 0xf8, 0x19, 0xaa, 0x8e, 0xd4, 0x4e, 0x99, 0x79, 0x2f, 0x5c, 0xe1, 0xe7, - 0xe3, 0x45, 0xa4, 0x85, 0x77, 0xad, 0xb4, 0x6a, 0x7b, 0x0b, 0x07, 0x27, 0x8e, 0x75, 0x78, 0xe2, - 0x58, 0x47, 0x27, 0x8e, 0xb5, 0x9f, 0x3b, 0xf6, 0x41, 0xee, 0xd8, 0x87, 0xb9, 0x63, 0x1f, 0xe5, - 0x8e, 0xfd, 0x3b, 0x77, 0xec, 0x2f, 0x7f, 0x1c, 0xeb, 0xed, 0x7f, 0x06, 0xf2, 0x37, 0x00, 0x00, - 0xff, 0xff, 0x36, 0x0e, 0x35, 0x2a, 0x43, 0x05, 0x00, 0x00, + // 635 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0xcf, 0x4f, 0xd4, 0x40, + 0x14, 0x6e, 0xf7, 0x07, 0xee, 0xce, 0x8a, 0xe2, 0x24, 0x26, 0x9b, 0x4d, 0xec, 0xae, 0xeb, 0x85, + 0x44, 0x99, 0x0a, 0x21, 0x48, 0xf0, 0x64, 0x95, 0x18, 0x4c, 0x88, 0xc9, 0x08, 0x1e, 0xd4, 0x83, + 0xb3, 0xdd, 0x47, 0xb7, 0xae, 0xed, 0x34, 0xd3, 0x69, 0x95, 0x1b, 0x7f, 0x82, 0x47, 0x8f, 0x26, + 0xfe, 0x25, 0x26, 0x1e, 0x38, 0x72, 0xe4, 0x60, 0x88, 0xd4, 0x7f, 0xc4, 0xcc, 0x74, 0x64, 0x17, + 0x88, 0x01, 0x6e, 0xf3, 0xbe, 0xf7, 0xbe, 0x6f, 0xde, 0xf7, 0x66, 0x1e, 0x7a, 0x31, 0x5e, 0x4d, + 0x49, 0xc8, 0xdd, 0x71, 0x36, 0x00, 0x11, 0x83, 0x84, 0xd4, 0xcd, 0x21, 0x1e, 0x72, 0xe1, 0x9a, + 0x04, 0x4b, 0x42, 0x97, 0x65, 0x72, 0x04, 0xb1, 0x0c, 0x7d, 0x26, 0x43, 0x1e, 0xbb, 0xf9, 0xe2, + 0x00, 0x24, 0x5b, 0x74, 0x03, 0x88, 0x41, 0x30, 0x09, 0x43, 0x92, 0x08, 0x2e, 0x39, 0xbe, 0x5b, + 0x52, 0x08, 0x4b, 0x42, 0x72, 0x9a, 0x42, 0x0c, 0xa5, 0xb3, 0x10, 0x84, 0x72, 0x94, 0x0d, 0x88, + 0xcf, 0x23, 0x37, 0xe0, 0x01, 0x77, 0x35, 0x73, 0x90, 0xed, 0xe8, 0x48, 0x07, 0xfa, 0x54, 0x2a, + 0x76, 0x96, 0x27, 0x4d, 0x44, 0xcc, 0x1f, 0x85, 0x31, 0x88, 0x5d, 0x37, 0x19, 0x07, 0x0a, 0x48, + 0xdd, 0x08, 0x24, 0x73, 0xf3, 0x73, 0x7d, 0x74, 0xdc, 0xff, 0xb1, 0x44, 0x16, 0xcb, 0x30, 0x82, + 0x73, 0x84, 0x95, 0x8b, 0x08, 0xa9, 0x3f, 0x82, 0x88, 0x9d, 0xe5, 0xf5, 0x1f, 0x21, 0xb4, 0xfe, + 0x59, 0x0a, 0xf6, 0x9a, 0x7d, 0xcc, 0x00, 0x77, 0x51, 0x3d, 0x94, 0x10, 0xa5, 0x6d, 0xbb, 0x57, + 0x9d, 0x6f, 0x7a, 0xcd, 0xe2, 0xa8, 0x5b, 0xdf, 0x50, 0x00, 0x2d, 0xf1, 0xb5, 0xc6, 0xd7, 0x6f, + 0x5d, 0x6b, 0xef, 0x57, 0xcf, 0xea, 0x7f, 0xaf, 0xa0, 0xd6, 0x16, 0x1f, 0x43, 0x4c, 0x21, 0x0f, + 0xe1, 0x13, 0x7e, 0x8f, 0x1a, 0xca, 0xcc, 0x90, 0x49, 0xd6, 0xb6, 0x7b, 0xf6, 0x7c, 0x6b, 0xe9, + 0x21, 0x99, 0x0c, 0xf3, 0xa4, 0x27, 0x92, 0x8c, 0x03, 0x05, 0xa4, 0x44, 0x55, 0x93, 0x7c, 0x91, + 0xbc, 0x1c, 0x7c, 0x00, 0x5f, 0x6e, 0x82, 0x64, 0x1e, 0xde, 0x3f, 0xea, 0x5a, 0xc5, 0x51, 0x17, + 0x4d, 0x30, 0x7a, 0xa2, 0x8a, 0xb7, 0x50, 0x2d, 0x4d, 0xc0, 0x6f, 0x57, 0xb4, 0xfa, 0x12, 0xb9, + 0xf0, 0xa9, 0xc8, 0x54, 0x7f, 0xaf, 0x12, 0xf0, 0xbd, 0xeb, 0x46, 0xbf, 0xa6, 0x22, 0xaa, 0xd5, + 0xf0, 0x3b, 0x34, 0x93, 0x4a, 0x26, 0xb3, 0xb4, 0x5d, 0xd5, 0xba, 0xcb, 0x57, 0xd4, 0xd5, 0x5c, + 0xef, 0x86, 0x51, 0x9e, 0x29, 0x63, 0x6a, 0x34, 0xfb, 0x2b, 0xe8, 0xe6, 0x99, 0x26, 0xf0, 0x3d, + 0x54, 0x97, 0x0a, 0xd2, 0x53, 0x6a, 0x7a, 0xb3, 0x86, 0x59, 0x2f, 0xeb, 0xca, 0x5c, 0xff, 0xa7, + 0x8d, 0x6e, 0x9d, 0xbb, 0x05, 0x3f, 0x46, 0xb3, 0x53, 0x1d, 0xc1, 0x50, 0x4b, 0x34, 0xbc, 0xdb, + 0x46, 0x62, 0xf6, 0xc9, 0x74, 0x92, 0x9e, 0xae, 0xc5, 0x9b, 0xa8, 0x96, 0xa5, 0x20, 0xcc, 0xf8, + 0xee, 0x5f, 0xc2, 0xe6, 0x76, 0x0a, 0x62, 0x23, 0xde, 0xe1, 0x93, 0xb9, 0x29, 0x84, 0x6a, 0x19, + 0x65, 0x03, 0x84, 0xe0, 0x42, 0x8f, 0x6d, 0xca, 0xc6, 0xba, 0x02, 0x69, 0x99, 0xeb, 0xff, 0xa8, + 0xa0, 0xc6, 0x3f, 0x15, 0xfc, 0x00, 0x35, 0x14, 0x33, 0x66, 0x11, 0x18, 0xef, 0x73, 0x86, 0xa4, + 0x6b, 0x14, 0x4e, 0x4f, 0x2a, 0xf0, 0x1d, 0x54, 0xcd, 0xc2, 0xa1, 0xee, 0xb6, 0xe9, 0xb5, 0x4c, + 0x61, 0x75, 0x7b, 0xe3, 0x19, 0x55, 0x38, 0xee, 0xa3, 0x99, 0x40, 0xf0, 0x2c, 0x51, 0xcf, 0xa6, + 0xbe, 0x2a, 0x52, 0xc3, 0x7f, 0xae, 0x11, 0x6a, 0x32, 0xf8, 0x2d, 0xaa, 0x83, 0xfa, 0xdb, 0xed, + 0x5a, 0xaf, 0x3a, 0xdf, 0x5a, 0x5a, 0xb9, 0x82, 0x65, 0xa2, 0x97, 0x62, 0x3d, 0x96, 0x62, 0x77, + 0xca, 0x9a, 0xc2, 0x68, 0xa9, 0xd9, 0x09, 0xcc, 0xe2, 0xe8, 0x1a, 0x3c, 0x87, 0xaa, 0x63, 0xd8, + 0x2d, 0x6d, 0x51, 0x75, 0xc4, 0x4f, 0x51, 0x3d, 0x57, 0x3b, 0x65, 0xe6, 0xbd, 0x70, 0x89, 0xcb, + 0x27, 0x8b, 0x48, 0x4b, 0xee, 0x5a, 0x65, 0xd5, 0xf6, 0x16, 0xf6, 0x8f, 0x1d, 0xeb, 0xe0, 0xd8, + 0xb1, 0x0e, 0x8f, 0x1d, 0x6b, 0xaf, 0x70, 0xec, 0xfd, 0xc2, 0xb1, 0x0f, 0x0a, 0xc7, 0x3e, 0x2c, + 0x1c, 0xfb, 0x77, 0xe1, 0xd8, 0x5f, 0xfe, 0x38, 0xd6, 0x9b, 0x6b, 0x46, 0xe4, 0x6f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x39, 0x00, 0xe7, 0xfa, 0x0e, 0x05, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/authentication/v1beta1/generated.proto b/vendor/k8s.io/api/authentication/v1beta1/generated.proto index 4fb6448f78..a057bc591c 100644 --- a/vendor/k8s.io/api/authentication/v1beta1/generated.proto +++ b/vendor/k8s.io/api/authentication/v1beta1/generated.proto @@ -24,7 +24,6 @@ package k8s.io.api.authentication.v1beta1; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1beta1"; diff --git a/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go index 3a5f6d5a93..bb552ff63c 100644 --- a/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/authentication/v1beta1/zz_generated.deepcopy.go @@ -117,15 +117,12 @@ func (in *UserInfo) DeepCopyInto(out *UserInfo) { in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { - var outVal []string if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal - *out = make(ExtraValue, len(*in)) - copy(*out, *in) + (*out)[key] = make([]string, len(val)) + copy((*out)[key], val) } - (*out)[key] = outVal } } return diff --git a/vendor/k8s.io/api/authorization/v1/generated.pb.go b/vendor/k8s.io/api/authorization/v1/generated.pb.go index 508c58f1bb..e9145af026 100644 --- a/vendor/k8s.io/api/authorization/v1/generated.pb.go +++ b/vendor/k8s.io/api/authorization/v1/generated.pb.go @@ -3452,77 +3452,77 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 1152 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xf7, 0xae, 0xed, 0xd4, 0x1e, 0x37, 0x24, 0x9d, 0x28, 0xcd, 0x36, 0x15, 0x76, 0xb4, 0x48, - 0x90, 0x8a, 0xb2, 0x4b, 0x4c, 0xdb, 0x44, 0x95, 0x2a, 0x14, 0x2b, 0x11, 0x8a, 0xd4, 0x96, 0x6a, - 0xa2, 0x44, 0xa2, 0x08, 0xc4, 0x78, 0x3d, 0xb1, 0x97, 0xd8, 0xbb, 0xcb, 0xcc, 0xac, 0x43, 0x38, - 0x55, 0xe2, 0x0b, 0x70, 0xe4, 0xc0, 0x81, 0x6f, 0xc0, 0x05, 0x89, 0x1b, 0x07, 0x0e, 0x28, 0xc7, - 0x1e, 0x8b, 0x84, 0x2c, 0xb2, 0x9c, 0xf9, 0x0e, 0x68, 0x66, 0xc7, 0xde, 0x75, 0xb2, 0x76, 0x13, - 0x0e, 0xf4, 0xd2, 0xdb, 0xee, 0xfb, 0xfd, 0xde, 0x9f, 0x79, 0x7f, 0x66, 0x1e, 0xd8, 0x3a, 0xdc, - 0x60, 0x96, 0xeb, 0xdb, 0x87, 0x61, 0x93, 0x50, 0x8f, 0x70, 0xc2, 0xec, 0x3e, 0xf1, 0x5a, 0x3e, - 0xb5, 0x15, 0x80, 0x03, 0xd7, 0xc6, 0x21, 0xef, 0xf8, 0xd4, 0xfd, 0x06, 0x73, 0xd7, 0xf7, 0xec, - 0xfe, 0x9a, 0xdd, 0x26, 0x1e, 0xa1, 0x98, 0x93, 0x96, 0x15, 0x50, 0x9f, 0xfb, 0xf0, 0x66, 0x4c, - 0xb6, 0x70, 0xe0, 0x5a, 0x63, 0x64, 0xab, 0xbf, 0xb6, 0xfc, 0x5e, 0xdb, 0xe5, 0x9d, 0xb0, 0x69, - 0x39, 0x7e, 0xcf, 0x6e, 0xfb, 0x6d, 0xdf, 0x96, 0x3a, 0xcd, 0xf0, 0x40, 0xfe, 0xc9, 0x1f, 0xf9, - 0x15, 0xdb, 0x5a, 0xbe, 0x93, 0x38, 0xee, 0x61, 0xa7, 0xe3, 0x7a, 0x84, 0x1e, 0xdb, 0xc1, 0x61, - 0x5b, 0x08, 0x98, 0xdd, 0x23, 0x1c, 0x67, 0x44, 0xb0, 0x6c, 0x4f, 0xd2, 0xa2, 0xa1, 0xc7, 0xdd, - 0x1e, 0x39, 0xa7, 0x70, 0xef, 0x65, 0x0a, 0xcc, 0xe9, 0x90, 0x1e, 0x3e, 0xa7, 0xf7, 0xc1, 0x24, - 0xbd, 0x90, 0xbb, 0x5d, 0xdb, 0xf5, 0x38, 0xe3, 0xf4, 0xac, 0x92, 0xb9, 0x0e, 0xc0, 0xf6, 0xd7, - 0x9c, 0xe2, 0x7d, 0xdc, 0x0d, 0x09, 0xac, 0x81, 0xa2, 0xcb, 0x49, 0x8f, 0x19, 0xda, 0x4a, 0x7e, - 0xb5, 0xdc, 0x28, 0x47, 0x83, 0x5a, 0x71, 0x47, 0x08, 0x50, 0x2c, 0xbf, 0x5f, 0xfa, 0xfe, 0xc7, - 0x5a, 0xee, 0xd9, 0x9f, 0x2b, 0x39, 0xf3, 0x67, 0x1d, 0x18, 0x0f, 0x7d, 0x07, 0x77, 0x77, 0xc3, - 0xe6, 0x97, 0xc4, 0xe1, 0x9b, 0x8e, 0x43, 0x18, 0x43, 0xa4, 0xef, 0x92, 0x23, 0xf8, 0x05, 0x28, - 0x89, 0x74, 0xb4, 0x30, 0xc7, 0x86, 0xb6, 0xa2, 0xad, 0x56, 0xea, 0xef, 0x5b, 0x49, 0x21, 0x46, - 0xd1, 0x59, 0xc1, 0x61, 0x5b, 0x08, 0x98, 0x25, 0xd8, 0x56, 0x7f, 0xcd, 0xfa, 0x58, 0xda, 0x7a, - 0x44, 0x38, 0x6e, 0xc0, 0x93, 0x41, 0x2d, 0x17, 0x0d, 0x6a, 0x20, 0x91, 0xa1, 0x91, 0x55, 0xb8, - 0x0f, 0x0a, 0x2c, 0x20, 0x8e, 0xa1, 0x4b, 0xeb, 0x77, 0xac, 0x29, 0x65, 0xb6, 0x32, 0x22, 0xdc, - 0x0d, 0x88, 0xd3, 0xb8, 0xaa, 0x3c, 0x14, 0xc4, 0x1f, 0x92, 0xf6, 0xe0, 0xe7, 0x60, 0x86, 0x71, - 0xcc, 0x43, 0x66, 0xe4, 0xa5, 0xe5, 0x7b, 0x97, 0xb6, 0x2c, 0xb5, 0x1b, 0x6f, 0x28, 0xdb, 0x33, - 0xf1, 0x3f, 0x52, 0x56, 0xcd, 0x4f, 0xc1, 0xe2, 0x63, 0xdf, 0x43, 0x84, 0xf9, 0x21, 0x75, 0xc8, - 0x26, 0xe7, 0xd4, 0x6d, 0x86, 0x9c, 0x30, 0xb8, 0x02, 0x0a, 0x01, 0xe6, 0x1d, 0x99, 0xae, 0x72, - 0x12, 0xda, 0x13, 0xcc, 0x3b, 0x48, 0x22, 0x82, 0xd1, 0x27, 0xb4, 0x29, 0x8f, 0x9c, 0x62, 0xec, - 0x13, 0xda, 0x44, 0x12, 0x31, 0xbf, 0x02, 0x73, 0x29, 0xe3, 0x28, 0xec, 0xca, 0x8a, 0x0a, 0x68, - 0xac, 0xa2, 0x42, 0x83, 0xa1, 0x58, 0x0e, 0x1f, 0x80, 0x39, 0x2f, 0xd1, 0xd9, 0x43, 0x0f, 0x99, - 0xa1, 0x4b, 0xea, 0x42, 0x34, 0xa8, 0xa5, 0xcd, 0x09, 0x08, 0x9d, 0xe5, 0x9a, 0xbf, 0xea, 0x00, - 0x66, 0x9c, 0xc6, 0x06, 0x65, 0x0f, 0xf7, 0x08, 0x0b, 0xb0, 0x43, 0xd4, 0x91, 0xae, 0xa9, 0x80, - 0xcb, 0x8f, 0x87, 0x00, 0x4a, 0x38, 0x2f, 0x3f, 0x1c, 0x7c, 0x0b, 0x14, 0xdb, 0xd4, 0x0f, 0x03, - 0x59, 0x98, 0x72, 0x63, 0x56, 0x51, 0x8a, 0x1f, 0x09, 0x21, 0x8a, 0x31, 0x78, 0x0b, 0x5c, 0xe9, - 0x13, 0xca, 0x5c, 0xdf, 0x33, 0x0a, 0x92, 0x36, 0xa7, 0x68, 0x57, 0xf6, 0x63, 0x31, 0x1a, 0xe2, - 0xf0, 0x36, 0x28, 0x51, 0x15, 0xb8, 0x51, 0x94, 0xdc, 0x79, 0xc5, 0x2d, 0x8d, 0x32, 0x38, 0x62, - 0xc0, 0xbb, 0xa0, 0xc2, 0xc2, 0xe6, 0x48, 0x61, 0x46, 0x2a, 0x2c, 0x28, 0x85, 0xca, 0x6e, 0x02, - 0xa1, 0x34, 0x4f, 0x1c, 0x4b, 0x9c, 0xd1, 0xb8, 0x32, 0x7e, 0x2c, 0x91, 0x02, 0x24, 0x11, 0xf3, - 0x37, 0x0d, 0x5c, 0xbd, 0x5c, 0xc5, 0xde, 0x05, 0x65, 0x1c, 0xb8, 0xf2, 0xd8, 0xc3, 0x5a, 0xcd, - 0x8a, 0xbc, 0x6e, 0x3e, 0xd9, 0x89, 0x85, 0x28, 0xc1, 0x05, 0x79, 0x18, 0x8c, 0x68, 0xe9, 0x11, - 0x79, 0xe8, 0x92, 0xa1, 0x04, 0x87, 0xeb, 0x60, 0x76, 0xf8, 0x23, 0x8b, 0x64, 0x14, 0xa4, 0xc2, - 0xb5, 0x68, 0x50, 0x9b, 0x45, 0x69, 0x00, 0x8d, 0xf3, 0xcc, 0x5f, 0x74, 0xb0, 0xb4, 0x4b, 0xba, - 0x07, 0xaf, 0xe6, 0x2e, 0x78, 0x3a, 0x76, 0x17, 0x6c, 0x4c, 0x9f, 0xd8, 0xec, 0x28, 0x5f, 0xd9, - 0x7d, 0xf0, 0x83, 0x0e, 0x6e, 0x4e, 0x89, 0x09, 0x1e, 0x01, 0x48, 0xcf, 0x8d, 0x97, 0xca, 0xa3, - 0x3d, 0x35, 0x96, 0xf3, 0x53, 0xd9, 0xb8, 0x1e, 0x0d, 0x6a, 0x19, 0xd3, 0x8a, 0x32, 0x5c, 0xc0, - 0x6f, 0x35, 0xb0, 0xe8, 0x65, 0xdd, 0x54, 0x2a, 0xcd, 0xf5, 0xa9, 0xce, 0x33, 0xef, 0xb8, 0xc6, - 0x8d, 0x68, 0x50, 0xcb, 0xbe, 0xfe, 0x50, 0xb6, 0x2f, 0xf1, 0xca, 0x5c, 0x4f, 0xa5, 0x47, 0x0c, - 0xc8, 0xff, 0xd7, 0x57, 0x9f, 0x8c, 0xf5, 0xd5, 0xfa, 0x45, 0xfb, 0x2a, 0x15, 0xe4, 0xc4, 0xb6, - 0xfa, 0xec, 0x4c, 0x5b, 0xdd, 0xbd, 0x48, 0x5b, 0xa5, 0x0d, 0x4f, 0xef, 0xaa, 0x47, 0x60, 0x79, - 0x72, 0x40, 0x97, 0xbe, 0x9c, 0xcd, 0x9f, 0x74, 0xb0, 0xf0, 0xfa, 0x99, 0xbf, 0xcc, 0x58, 0xff, - 0x5e, 0x00, 0x4b, 0xaf, 0x47, 0x7a, 0xd2, 0xa2, 0x13, 0x32, 0x42, 0xd5, 0x33, 0x3e, 0x2a, 0xce, - 0x1e, 0x23, 0x14, 0x49, 0x04, 0x9a, 0x60, 0xa6, 0x1d, 0xbf, 0x6e, 0xf1, 0xfb, 0x03, 0x44, 0x82, - 0xd5, 0xd3, 0xa6, 0x10, 0xd8, 0x02, 0x45, 0x22, 0xf6, 0x56, 0xa3, 0xb8, 0x92, 0x5f, 0xad, 0xd4, - 0x3f, 0xfc, 0x2f, 0x9d, 0x61, 0xc9, 0xcd, 0x77, 0xdb, 0xe3, 0xf4, 0x38, 0x59, 0x27, 0xa4, 0x0c, - 0xc5, 0xc6, 0xe1, 0x9b, 0x20, 0x1f, 0xba, 0x2d, 0xf5, 0xda, 0x57, 0x14, 0x25, 0xbf, 0xb7, 0xb3, - 0x85, 0x84, 0x7c, 0x19, 0xab, 0xe5, 0x59, 0x9a, 0x80, 0xf3, 0x20, 0x7f, 0x48, 0x8e, 0xe3, 0x81, - 0x42, 0xe2, 0x13, 0x3e, 0x00, 0xc5, 0xbe, 0xd8, 0xab, 0x55, 0x7e, 0xdf, 0x99, 0x1a, 0x64, 0xb2, - 0x86, 0xa3, 0x58, 0xeb, 0xbe, 0xbe, 0xa1, 0x99, 0x7f, 0x68, 0xe0, 0xc6, 0xc4, 0xf6, 0x13, 0xeb, - 0x0e, 0xee, 0x76, 0xfd, 0x23, 0xd2, 0x92, 0x6e, 0x4b, 0xc9, 0xba, 0xb3, 0x19, 0x8b, 0xd1, 0x10, - 0x87, 0x6f, 0x83, 0x19, 0x4a, 0x30, 0xf3, 0x3d, 0xb5, 0x62, 0x8d, 0x3a, 0x17, 0x49, 0x29, 0x52, - 0x28, 0xdc, 0x04, 0x73, 0x44, 0xb8, 0x97, 0x71, 0x6d, 0x53, 0xea, 0x0f, 0x2b, 0xb5, 0xa4, 0x14, - 0xe6, 0xb6, 0xc7, 0x61, 0x74, 0x96, 0x2f, 0x5c, 0xb5, 0x88, 0xe7, 0x92, 0x96, 0xdc, 0xc1, 0x4a, - 0x89, 0xab, 0x2d, 0x29, 0x45, 0x0a, 0x35, 0xff, 0xd1, 0x81, 0x31, 0xe9, 0x6a, 0x83, 0x07, 0xc9, - 0x2e, 0x22, 0x41, 0xb9, 0x0e, 0x55, 0xea, 0xb7, 0x2e, 0x34, 0x20, 0x42, 0xa3, 0xb1, 0xa8, 0xdc, - 0xce, 0xa6, 0xa5, 0xa9, 0xd5, 0x45, 0xfe, 0x42, 0x0a, 0xe6, 0xbd, 0xf1, 0x9d, 0x39, 0x5e, 0xaa, - 0x2a, 0xf5, 0xdb, 0x17, 0x1d, 0x07, 0xe9, 0xcd, 0x50, 0xde, 0xe6, 0xcf, 0x00, 0x0c, 0x9d, 0xb3, - 0x0f, 0xeb, 0x00, 0xb8, 0x9e, 0xe3, 0xf7, 0x82, 0x2e, 0xe1, 0x44, 0xa6, 0xb7, 0x94, 0xdc, 0x83, - 0x3b, 0x23, 0x04, 0xa5, 0x58, 0x59, 0x75, 0x29, 0x5c, 0xae, 0x2e, 0x8d, 0xd5, 0x93, 0xd3, 0x6a, - 0xee, 0xf9, 0x69, 0x35, 0xf7, 0xe2, 0xb4, 0x9a, 0x7b, 0x16, 0x55, 0xb5, 0x93, 0xa8, 0xaa, 0x3d, - 0x8f, 0xaa, 0xda, 0x8b, 0xa8, 0xaa, 0xfd, 0x15, 0x55, 0xb5, 0xef, 0xfe, 0xae, 0xe6, 0x9e, 0xea, - 0xfd, 0xb5, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xd6, 0x0e, 0xab, 0x82, 0x7c, 0x0f, 0x00, 0x00, + // 1140 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4d, 0x6f, 0x1b, 0xc5, + 0x1b, 0xf7, 0xae, 0xed, 0xc4, 0x1e, 0x37, 0xff, 0xa4, 0x13, 0xa5, 0xd9, 0xa6, 0xfa, 0xdb, 0xd1, + 0x22, 0x41, 0x2a, 0xca, 0x2e, 0xb1, 0xda, 0x26, 0xaa, 0x54, 0xa1, 0x58, 0x89, 0x50, 0xa4, 0xb6, + 0x54, 0x13, 0x25, 0x12, 0x45, 0x20, 0xc6, 0xeb, 0x89, 0xbd, 0xc4, 0xde, 0x5d, 0x66, 0x66, 0x1d, + 0xc2, 0xa9, 0x12, 0x5f, 0x80, 0x23, 0x07, 0x0e, 0x7c, 0x03, 0x2e, 0x48, 0xdc, 0x38, 0x70, 0x40, + 0x39, 0xf6, 0x58, 0x24, 0x64, 0x91, 0xe5, 0xcc, 0x77, 0x40, 0x33, 0x3b, 0xf6, 0xae, 0x93, 0xb5, + 0x9b, 0x70, 0xa0, 0x97, 0xde, 0x76, 0x9f, 0xdf, 0xef, 0x79, 0x99, 0xe7, 0x65, 0xe6, 0x01, 0xdb, + 0x47, 0x9b, 0xcc, 0x72, 0x7d, 0xfb, 0x28, 0x6c, 0x12, 0xea, 0x11, 0x4e, 0x98, 0xdd, 0x27, 0x5e, + 0xcb, 0xa7, 0xb6, 0x02, 0x70, 0xe0, 0xda, 0x38, 0xe4, 0x1d, 0x9f, 0xba, 0x5f, 0x63, 0xee, 0xfa, + 0x9e, 0xdd, 0x5f, 0xb7, 0xdb, 0xc4, 0x23, 0x14, 0x73, 0xd2, 0xb2, 0x02, 0xea, 0x73, 0x1f, 0xde, + 0x8a, 0xc9, 0x16, 0x0e, 0x5c, 0x6b, 0x8c, 0x6c, 0xf5, 0xd7, 0x57, 0xde, 0x6b, 0xbb, 0xbc, 0x13, + 0x36, 0x2d, 0xc7, 0xef, 0xd9, 0x6d, 0xbf, 0xed, 0xdb, 0x52, 0xa7, 0x19, 0x1e, 0xca, 0x3f, 0xf9, + 0x23, 0xbf, 0x62, 0x5b, 0x2b, 0x77, 0x13, 0xc7, 0x3d, 0xec, 0x74, 0x5c, 0x8f, 0xd0, 0x13, 0x3b, + 0x38, 0x6a, 0x0b, 0x01, 0xb3, 0x7b, 0x84, 0xe3, 0x8c, 0x08, 0x56, 0xec, 0x49, 0x5a, 0x34, 0xf4, + 0xb8, 0xdb, 0x23, 0x17, 0x14, 0xee, 0xbf, 0x4a, 0x81, 0x39, 0x1d, 0xd2, 0xc3, 0xe7, 0xf5, 0xcc, + 0x0d, 0x00, 0x76, 0xbe, 0xe2, 0x14, 0x1f, 0xe0, 0x6e, 0x48, 0x60, 0x0d, 0x14, 0x5d, 0x4e, 0x7a, + 0xcc, 0xd0, 0x56, 0xf3, 0x6b, 0xe5, 0x46, 0x39, 0x1a, 0xd4, 0x8a, 0xbb, 0x42, 0x80, 0x62, 0xf9, + 0x83, 0xd2, 0x77, 0x3f, 0xd4, 0x72, 0xcf, 0xff, 0x58, 0xcd, 0x99, 0x3f, 0xe9, 0xc0, 0x78, 0xe4, + 0x3b, 0xb8, 0xbb, 0x17, 0x36, 0xbf, 0x20, 0x0e, 0xdf, 0x72, 0x1c, 0xc2, 0x18, 0x22, 0x7d, 0x97, + 0x1c, 0xc3, 0xcf, 0x41, 0x49, 0x9c, 0xac, 0x85, 0x39, 0x36, 0xb4, 0x55, 0x6d, 0xad, 0x52, 0x7f, + 0xdf, 0x4a, 0x72, 0x3a, 0x0a, 0xd0, 0x0a, 0x8e, 0xda, 0x42, 0xc0, 0x2c, 0xc1, 0xb6, 0xfa, 0xeb, + 0xd6, 0x47, 0xd2, 0xd6, 0x63, 0xc2, 0x71, 0x03, 0x9e, 0x0e, 0x6a, 0xb9, 0x68, 0x50, 0x03, 0x89, + 0x0c, 0x8d, 0xac, 0xc2, 0x03, 0x50, 0x60, 0x01, 0x71, 0x0c, 0x5d, 0x5a, 0xbf, 0x6b, 0x4d, 0xa9, + 0x98, 0x95, 0x11, 0xe1, 0x5e, 0x40, 0x9c, 0xc6, 0x35, 0xe5, 0xa1, 0x20, 0xfe, 0x90, 0xb4, 0x07, + 0x3f, 0x03, 0x33, 0x8c, 0x63, 0x1e, 0x32, 0x23, 0x2f, 0x2d, 0xdf, 0xbf, 0xb2, 0x65, 0xa9, 0xdd, + 0xf8, 0x9f, 0xb2, 0x3d, 0x13, 0xff, 0x23, 0x65, 0xd5, 0xfc, 0x04, 0x2c, 0x3d, 0xf1, 0x3d, 0x44, + 0x98, 0x1f, 0x52, 0x87, 0x6c, 0x71, 0x4e, 0xdd, 0x66, 0xc8, 0x09, 0x83, 0xab, 0xa0, 0x10, 0x60, + 0xde, 0x91, 0xe9, 0x2a, 0x27, 0xa1, 0x3d, 0xc5, 0xbc, 0x83, 0x24, 0x22, 0x18, 0x7d, 0x42, 0x9b, + 0xf2, 0xc8, 0x29, 0xc6, 0x01, 0xa1, 0x4d, 0x24, 0x11, 0xf3, 0x4b, 0x30, 0x9f, 0x32, 0x8e, 0xc2, + 0xae, 0xac, 0xa8, 0x80, 0xc6, 0x2a, 0x2a, 0x34, 0x18, 0x8a, 0xe5, 0xf0, 0x21, 0x98, 0xf7, 0x12, + 0x9d, 0x7d, 0xf4, 0x88, 0x19, 0xba, 0xa4, 0x2e, 0x46, 0x83, 0x5a, 0xda, 0x9c, 0x80, 0xd0, 0x79, + 0xae, 0xf9, 0x8b, 0x0e, 0x60, 0xc6, 0x69, 0x6c, 0x50, 0xf6, 0x70, 0x8f, 0xb0, 0x00, 0x3b, 0x44, + 0x1d, 0xe9, 0xba, 0x0a, 0xb8, 0xfc, 0x64, 0x08, 0xa0, 0x84, 0xf3, 0xea, 0xc3, 0xc1, 0xb7, 0x40, + 0xb1, 0x4d, 0xfd, 0x30, 0x90, 0x85, 0x29, 0x37, 0xe6, 0x14, 0xa5, 0xf8, 0xa1, 0x10, 0xa2, 0x18, + 0x83, 0xb7, 0xc1, 0x6c, 0x9f, 0x50, 0xe6, 0xfa, 0x9e, 0x51, 0x90, 0xb4, 0x79, 0x45, 0x9b, 0x3d, + 0x88, 0xc5, 0x68, 0x88, 0xc3, 0x3b, 0xa0, 0x44, 0x55, 0xe0, 0x46, 0x51, 0x72, 0x17, 0x14, 0xb7, + 0x34, 0xca, 0xe0, 0x88, 0x01, 0xef, 0x81, 0x0a, 0x0b, 0x9b, 0x23, 0x85, 0x19, 0xa9, 0xb0, 0xa8, + 0x14, 0x2a, 0x7b, 0x09, 0x84, 0xd2, 0x3c, 0x71, 0x2c, 0x71, 0x46, 0x63, 0x76, 0xfc, 0x58, 0x22, + 0x05, 0x48, 0x22, 0xe6, 0xaf, 0x1a, 0xb8, 0x76, 0xb5, 0x8a, 0xbd, 0x0b, 0xca, 0x38, 0x70, 0xe5, + 0xb1, 0x87, 0xb5, 0x9a, 0x13, 0x79, 0xdd, 0x7a, 0xba, 0x1b, 0x0b, 0x51, 0x82, 0x0b, 0xf2, 0x30, + 0x18, 0xd1, 0xd2, 0x23, 0xf2, 0xd0, 0x25, 0x43, 0x09, 0x0e, 0x37, 0xc0, 0xdc, 0xf0, 0x47, 0x16, + 0xc9, 0x28, 0x48, 0x85, 0xeb, 0xd1, 0xa0, 0x36, 0x87, 0xd2, 0x00, 0x1a, 0xe7, 0x99, 0x3f, 0xeb, + 0x60, 0x79, 0x8f, 0x74, 0x0f, 0x5f, 0xcf, 0x5d, 0xf0, 0x6c, 0xec, 0x2e, 0xd8, 0x9c, 0x3e, 0xb1, + 0xd9, 0x51, 0xbe, 0xb6, 0xfb, 0xe0, 0x7b, 0x1d, 0xdc, 0x9a, 0x12, 0x13, 0x3c, 0x06, 0x90, 0x5e, + 0x18, 0x2f, 0x95, 0x47, 0x7b, 0x6a, 0x2c, 0x17, 0xa7, 0xb2, 0x71, 0x23, 0x1a, 0xd4, 0x32, 0xa6, + 0x15, 0x65, 0xb8, 0x80, 0xdf, 0x68, 0x60, 0xc9, 0xcb, 0xba, 0xa9, 0x54, 0x9a, 0xeb, 0x53, 0x9d, + 0x67, 0xde, 0x71, 0x8d, 0x9b, 0xd1, 0xa0, 0x96, 0x7d, 0xfd, 0xa1, 0x6c, 0x5f, 0xe2, 0x95, 0xb9, + 0x91, 0x4a, 0x8f, 0x18, 0x90, 0xff, 0xae, 0xaf, 0x3e, 0x1e, 0xeb, 0xab, 0x8d, 0xcb, 0xf6, 0x55, + 0x2a, 0xc8, 0x89, 0x6d, 0xf5, 0xe9, 0xb9, 0xb6, 0xba, 0x77, 0x99, 0xb6, 0x4a, 0x1b, 0x9e, 0xde, + 0x55, 0x8f, 0xc1, 0xca, 0xe4, 0x80, 0xae, 0x7c, 0x39, 0x9b, 0x3f, 0xea, 0x60, 0xf1, 0xcd, 0x33, + 0x7f, 0x95, 0xb1, 0xfe, 0xad, 0x00, 0x96, 0xdf, 0x8c, 0xf4, 0xa4, 0x45, 0x27, 0x64, 0x84, 0xaa, + 0x67, 0x7c, 0x54, 0x9c, 0x7d, 0x46, 0x28, 0x92, 0x08, 0x34, 0xc1, 0x4c, 0x3b, 0x7e, 0xdd, 0xe2, + 0xf7, 0x07, 0x88, 0x04, 0xab, 0xa7, 0x4d, 0x21, 0xb0, 0x05, 0x8a, 0x44, 0xec, 0xad, 0x46, 0x71, + 0x35, 0xbf, 0x56, 0xa9, 0x7f, 0xf0, 0x6f, 0x3a, 0xc3, 0x92, 0x9b, 0xef, 0x8e, 0xc7, 0xe9, 0x49, + 0xb2, 0x4e, 0x48, 0x19, 0x8a, 0x8d, 0xc3, 0xff, 0x83, 0x7c, 0xe8, 0xb6, 0xd4, 0x6b, 0x5f, 0x51, + 0x94, 0xfc, 0xfe, 0xee, 0x36, 0x12, 0xf2, 0x15, 0xac, 0x96, 0x67, 0x69, 0x02, 0x2e, 0x80, 0xfc, + 0x11, 0x39, 0x89, 0x07, 0x0a, 0x89, 0x4f, 0xf8, 0x10, 0x14, 0xfb, 0x62, 0xaf, 0x56, 0xf9, 0x7d, + 0x67, 0x6a, 0x90, 0xc9, 0x1a, 0x8e, 0x62, 0xad, 0x07, 0xfa, 0xa6, 0x66, 0xfe, 0xae, 0x81, 0x9b, + 0x13, 0xdb, 0x4f, 0xac, 0x3b, 0xb8, 0xdb, 0xf5, 0x8f, 0x49, 0x4b, 0xba, 0x2d, 0x25, 0xeb, 0xce, + 0x56, 0x2c, 0x46, 0x43, 0x1c, 0xbe, 0x0d, 0x66, 0x28, 0xc1, 0xcc, 0xf7, 0xd4, 0x8a, 0x35, 0xea, + 0x5c, 0x24, 0xa5, 0x48, 0xa1, 0x70, 0x0b, 0xcc, 0x13, 0xe1, 0x5e, 0xc6, 0xb5, 0x43, 0xa9, 0x3f, + 0xac, 0xd4, 0xb2, 0x52, 0x98, 0xdf, 0x19, 0x87, 0xd1, 0x79, 0xbe, 0x70, 0xd5, 0x22, 0x9e, 0x4b, + 0x5a, 0x72, 0x07, 0x2b, 0x25, 0xae, 0xb6, 0xa5, 0x14, 0x29, 0xd4, 0xfc, 0x5b, 0x07, 0xc6, 0xa4, + 0xab, 0x0d, 0x1e, 0x26, 0xbb, 0x88, 0x04, 0xe5, 0x3a, 0x54, 0xa9, 0xdf, 0xbe, 0xd4, 0x80, 0x08, + 0x8d, 0xc6, 0x92, 0x72, 0x3b, 0x97, 0x96, 0xa6, 0x56, 0x17, 0xf9, 0x0b, 0x29, 0x58, 0xf0, 0xc6, + 0x77, 0xe6, 0x78, 0xa9, 0xaa, 0xd4, 0xef, 0x5c, 0x76, 0x1c, 0xa4, 0x37, 0x43, 0x79, 0x5b, 0x38, + 0x07, 0x30, 0x74, 0xc1, 0x3e, 0xac, 0x03, 0xe0, 0x7a, 0x8e, 0xdf, 0x0b, 0xba, 0x84, 0x13, 0x99, + 0xde, 0x52, 0x72, 0x0f, 0xee, 0x8e, 0x10, 0x94, 0x62, 0x65, 0xd5, 0xa5, 0x70, 0xb5, 0xba, 0x34, + 0xd6, 0x4e, 0xcf, 0xaa, 0xb9, 0x17, 0x67, 0xd5, 0xdc, 0xcb, 0xb3, 0x6a, 0xee, 0x79, 0x54, 0xd5, + 0x4e, 0xa3, 0xaa, 0xf6, 0x22, 0xaa, 0x6a, 0x2f, 0xa3, 0xaa, 0xf6, 0x67, 0x54, 0xd5, 0xbe, 0xfd, + 0xab, 0x9a, 0x7b, 0xa6, 0xf7, 0xd7, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x85, 0x45, 0x74, + 0x47, 0x0f, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/authorization/v1/generated.proto b/vendor/k8s.io/api/authorization/v1/generated.proto index d87b03dbf8..f68a04e49e 100644 --- a/vendor/k8s.io/api/authorization/v1/generated.proto +++ b/vendor/k8s.io/api/authorization/v1/generated.proto @@ -24,7 +24,6 @@ package k8s.io.api.authorization.v1; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1"; diff --git a/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go index 1d11b38b08..999933d749 100644 --- a/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/authorization/v1/zz_generated.deepcopy.go @@ -199,13 +199,21 @@ func (in *SelfSubjectAccessReviewSpec) DeepCopyInto(out *SelfSubjectAccessReview *out = *in if in.ResourceAttributes != nil { in, out := &in.ResourceAttributes, &out.ResourceAttributes - *out = new(ResourceAttributes) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ResourceAttributes) + **out = **in + } } if in.NonResourceAttributes != nil { in, out := &in.NonResourceAttributes, &out.NonResourceAttributes - *out = new(NonResourceAttributes) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(NonResourceAttributes) + **out = **in + } } return } @@ -297,13 +305,21 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { *out = *in if in.ResourceAttributes != nil { in, out := &in.ResourceAttributes, &out.ResourceAttributes - *out = new(ResourceAttributes) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ResourceAttributes) + **out = **in + } } if in.NonResourceAttributes != nil { in, out := &in.NonResourceAttributes, &out.NonResourceAttributes - *out = new(NonResourceAttributes) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(NonResourceAttributes) + **out = **in + } } if in.Groups != nil { in, out := &in.Groups, &out.Groups @@ -314,15 +330,12 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { - var outVal []string if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal - *out = make(ExtraValue, len(*in)) - copy(*out, *in) + (*out)[key] = make([]string, len(val)) + copy((*out)[key], val) } - (*out)[key] = outVal } } return diff --git a/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go b/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go index 1f8abde4f0..75ee6cf918 100644 --- a/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go +++ b/vendor/k8s.io/api/authorization/v1beta1/generated.pb.go @@ -3452,78 +3452,77 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 1154 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4d, 0x6f, 0x1b, 0xc5, - 0x1b, 0xf7, 0xfa, 0x25, 0xb1, 0xc7, 0xcd, 0x3f, 0xe9, 0x44, 0x69, 0xb6, 0xf9, 0x0b, 0xdb, 0x32, - 0x12, 0x0a, 0xa2, 0xdd, 0x25, 0xa1, 0x90, 0x12, 0xe8, 0x21, 0x56, 0x22, 0x14, 0xa9, 0x2d, 0xd5, - 0x44, 0xc9, 0x81, 0x4a, 0xc0, 0x78, 0x3d, 0xb1, 0x17, 0xdb, 0xbb, 0xcb, 0xcc, 0xac, 0x43, 0x10, - 0x87, 0x1e, 0x39, 0x72, 0xe4, 0xc8, 0x89, 0xef, 0xc0, 0x05, 0x09, 0x4e, 0x39, 0xf6, 0x18, 0x24, - 0x64, 0x91, 0xe5, 0x43, 0x70, 0x45, 0x33, 0x3b, 0xf6, 0xae, 0xe3, 0x75, 0x1c, 0xe7, 0x40, 0x2f, - 0xbd, 0xed, 0x3c, 0xbf, 0xe7, 0x6d, 0x9e, 0x97, 0xd9, 0x1f, 0xd8, 0x6f, 0x3f, 0x64, 0x86, 0xed, - 0x9a, 0x6d, 0xbf, 0x4e, 0xa8, 0x43, 0x38, 0x61, 0x66, 0x8f, 0x38, 0x0d, 0x97, 0x9a, 0x0a, 0xc0, - 0x9e, 0x6d, 0x62, 0x9f, 0xb7, 0x5c, 0x6a, 0x7f, 0x8b, 0xb9, 0xed, 0x3a, 0x66, 0x6f, 0xa3, 0x4e, - 0x38, 0xde, 0x30, 0x9b, 0xc4, 0x21, 0x14, 0x73, 0xd2, 0x30, 0x3c, 0xea, 0x72, 0x17, 0x56, 0x42, - 0x0b, 0x03, 0x7b, 0xb6, 0x31, 0x62, 0x61, 0x28, 0x8b, 0xb5, 0xfb, 0x4d, 0x9b, 0xb7, 0xfc, 0xba, - 0x61, 0xb9, 0x5d, 0xb3, 0xe9, 0x36, 0x5d, 0x53, 0x1a, 0xd6, 0xfd, 0x63, 0x79, 0x92, 0x07, 0xf9, - 0x15, 0x3a, 0x5c, 0x7b, 0x10, 0xa5, 0xd0, 0xc5, 0x56, 0xcb, 0x76, 0x08, 0x3d, 0x35, 0xbd, 0x76, - 0x53, 0x08, 0x98, 0xd9, 0x25, 0x1c, 0x9b, 0xbd, 0xb1, 0x34, 0xd6, 0xcc, 0x49, 0x56, 0xd4, 0x77, - 0xb8, 0xdd, 0x25, 0x63, 0x06, 0x1f, 0x4c, 0x33, 0x60, 0x56, 0x8b, 0x74, 0xf1, 0x98, 0xdd, 0x7b, - 0x93, 0xec, 0x7c, 0x6e, 0x77, 0x4c, 0xdb, 0xe1, 0x8c, 0xd3, 0xcb, 0x46, 0xd5, 0x2d, 0x00, 0xf6, - 0xbe, 0xe1, 0x14, 0x1f, 0xe1, 0x8e, 0x4f, 0x60, 0x19, 0xe4, 0x6c, 0x4e, 0xba, 0x4c, 0xd7, 0x2a, - 0x99, 0xf5, 0x42, 0xad, 0x10, 0xf4, 0xcb, 0xb9, 0x7d, 0x21, 0x40, 0xa1, 0x7c, 0x3b, 0xff, 0xe3, - 0x4f, 0xe5, 0xd4, 0x8b, 0x3f, 0x2b, 0xa9, 0xea, 0xaf, 0x69, 0xa0, 0x3f, 0x76, 0x2d, 0xdc, 0x39, - 0xf0, 0xeb, 0x5f, 0x11, 0x8b, 0xef, 0x58, 0x16, 0x61, 0x0c, 0x91, 0x9e, 0x4d, 0x4e, 0xe0, 0x97, - 0x20, 0x2f, 0xca, 0xd1, 0xc0, 0x1c, 0xeb, 0x5a, 0x45, 0x5b, 0x2f, 0x6e, 0xbe, 0x6b, 0x44, 0xdd, - 0x18, 0x66, 0x67, 0x78, 0xed, 0xa6, 0x10, 0x30, 0x43, 0x68, 0x1b, 0xbd, 0x0d, 0xe3, 0x53, 0xe9, - 0xeb, 0x09, 0xe1, 0xb8, 0x06, 0xcf, 0xfa, 0xe5, 0x54, 0xd0, 0x2f, 0x83, 0x48, 0x86, 0x86, 0x5e, - 0xe1, 0x73, 0x90, 0x65, 0x1e, 0xb1, 0xf4, 0xb4, 0xf4, 0xfe, 0xa1, 0x31, 0xad, 0xd7, 0x46, 0x42, - 0x9a, 0x07, 0x1e, 0xb1, 0x6a, 0xb7, 0x54, 0x98, 0xac, 0x38, 0x21, 0xe9, 0x14, 0x5a, 0x60, 0x8e, - 0x71, 0xcc, 0x7d, 0xa6, 0x67, 0xa4, 0xfb, 0x8f, 0x6e, 0xe6, 0x5e, 0xba, 0xa8, 0xfd, 0x4f, 0x05, - 0x98, 0x0b, 0xcf, 0x48, 0xb9, 0xae, 0x3e, 0x07, 0x2b, 0x4f, 0x5d, 0x07, 0x11, 0xe6, 0xfa, 0xd4, - 0x22, 0x3b, 0x9c, 0x53, 0xbb, 0xee, 0x73, 0xc2, 0x60, 0x05, 0x64, 0x3d, 0xcc, 0x5b, 0xb2, 0x70, - 0x85, 0x28, 0xbf, 0x67, 0x98, 0xb7, 0x90, 0x44, 0x84, 0x46, 0x8f, 0xd0, 0xba, 0xbc, 0x7c, 0x4c, - 0xe3, 0x88, 0xd0, 0x3a, 0x92, 0x48, 0xf5, 0x6b, 0xb0, 0x18, 0x73, 0x8e, 0xfc, 0x8e, 0xec, 0xad, - 0x80, 0x46, 0x7a, 0x2b, 0x2c, 0x18, 0x0a, 0xe5, 0xf0, 0x11, 0x58, 0x74, 0x22, 0x9b, 0x43, 0xf4, - 0x98, 0xe9, 0x69, 0xa9, 0xba, 0x1c, 0xf4, 0xcb, 0x71, 0x77, 0x02, 0x42, 0x97, 0x75, 0xc5, 0x40, - 0xc0, 0x84, 0xdb, 0x98, 0xa0, 0xe0, 0xe0, 0x2e, 0x61, 0x1e, 0xb6, 0x88, 0xba, 0xd2, 0x6d, 0x95, - 0x70, 0xe1, 0xe9, 0x00, 0x40, 0x91, 0xce, 0xf4, 0xcb, 0xc1, 0x37, 0x41, 0xae, 0x49, 0x5d, 0xdf, - 0x93, 0xdd, 0x29, 0xd4, 0x16, 0x94, 0x4a, 0xee, 0x13, 0x21, 0x44, 0x21, 0x06, 0xdf, 0x06, 0xf3, - 0x3d, 0x42, 0x99, 0xed, 0x3a, 0x7a, 0x56, 0xaa, 0x2d, 0x2a, 0xb5, 0xf9, 0xa3, 0x50, 0x8c, 0x06, - 0x38, 0xbc, 0x07, 0xf2, 0x54, 0x25, 0xae, 0xe7, 0xa4, 0xee, 0x92, 0xd2, 0xcd, 0x0f, 0x2b, 0x38, - 0xd4, 0x80, 0xef, 0x83, 0x22, 0xf3, 0xeb, 0x43, 0x83, 0x39, 0x69, 0xb0, 0xac, 0x0c, 0x8a, 0x07, - 0x11, 0x84, 0xe2, 0x7a, 0xe2, 0x5a, 0xe2, 0x8e, 0xfa, 0xfc, 0xe8, 0xb5, 0x44, 0x09, 0x90, 0x44, - 0xaa, 0xbf, 0x6b, 0xe0, 0xd6, 0x6c, 0x1d, 0x7b, 0x07, 0x14, 0xb0, 0x67, 0xcb, 0x6b, 0x0f, 0x7a, - 0xb5, 0x20, 0xea, 0xba, 0xf3, 0x6c, 0x3f, 0x14, 0xa2, 0x08, 0x17, 0xca, 0x83, 0x64, 0xc4, 0x5c, - 0x0f, 0x95, 0x07, 0x21, 0x19, 0x8a, 0x70, 0xb8, 0x05, 0x16, 0x06, 0x07, 0xd9, 0x24, 0x3d, 0x2b, - 0x0d, 0x6e, 0x07, 0xfd, 0xf2, 0x02, 0x8a, 0x03, 0x68, 0x54, 0xaf, 0xfa, 0x5b, 0x1a, 0xac, 0x1e, - 0x90, 0xce, 0xf1, 0xab, 0x79, 0x15, 0xbe, 0x18, 0x79, 0x15, 0x1e, 0x5d, 0x63, 0x6d, 0x93, 0x53, - 0x7d, 0xb5, 0x2f, 0xc3, 0xcf, 0x69, 0xf0, 0xff, 0x2b, 0x12, 0x83, 0xdf, 0x01, 0x48, 0xc7, 0x16, - 0x4d, 0x55, 0xf4, 0xc1, 0xf4, 0x84, 0xc6, 0x97, 0xb4, 0x76, 0x27, 0xe8, 0x97, 0x13, 0x96, 0x17, - 0x25, 0xc4, 0x81, 0xdf, 0x6b, 0x60, 0xc5, 0x49, 0x7a, 0xb8, 0x54, 0xd5, 0xb7, 0xa6, 0x67, 0x90, - 0xf8, 0xee, 0xd5, 0xee, 0x06, 0xfd, 0x72, 0xf2, 0x93, 0x88, 0x92, 0x03, 0x8a, 0x27, 0xe7, 0x4e, - 0xac, 0x50, 0x62, 0x69, 0xfe, 0xbb, 0x59, 0xfb, 0x7c, 0x64, 0xd6, 0x3e, 0x9e, 0x69, 0xd6, 0x62, - 0x99, 0x4e, 0x1c, 0xb5, 0xfa, 0xa5, 0x51, 0xdb, 0xbe, 0xf6, 0xa8, 0xc5, 0xbd, 0x5f, 0x3d, 0x69, - 0x4f, 0xc0, 0xda, 0xe4, 0xac, 0x66, 0x7e, 0xba, 0xab, 0xbf, 0xa4, 0xc1, 0xf2, 0x6b, 0x3a, 0x70, - 0xb3, 0xa5, 0x3f, 0xcf, 0x82, 0xd5, 0xd7, 0x0b, 0x7f, 0xf5, 0xc2, 0x8b, 0x9f, 0xa8, 0xcf, 0x08, - 0x55, 0x3f, 0xfe, 0x61, 0xaf, 0x0e, 0x19, 0xa1, 0x48, 0x22, 0xb0, 0x32, 0xe0, 0x06, 0xe1, 0x0f, - 0x0b, 0x88, 0x4a, 0xab, 0x7f, 0xa1, 0x22, 0x06, 0x36, 0xc8, 0x11, 0xc1, 0x78, 0xf5, 0x5c, 0x25, - 0xb3, 0x5e, 0xdc, 0xdc, 0xbd, 0xf1, 0xac, 0x18, 0x92, 0x38, 0xef, 0x39, 0x9c, 0x9e, 0x46, 0x1c, - 0x44, 0xca, 0x50, 0x18, 0x01, 0xbe, 0x01, 0x32, 0xbe, 0xdd, 0x50, 0x14, 0xa1, 0xa8, 0x54, 0x32, - 0x87, 0xfb, 0xbb, 0x48, 0xc8, 0xd7, 0x8e, 0x15, 0xf7, 0x96, 0x2e, 0xe0, 0x12, 0xc8, 0xb4, 0xc9, - 0x69, 0xb8, 0x67, 0x48, 0x7c, 0xc2, 0x1a, 0xc8, 0xf5, 0x04, 0x2d, 0x57, 0x75, 0xbe, 0x37, 0x3d, - 0xd3, 0x88, 0xca, 0xa3, 0xd0, 0x74, 0x3b, 0xfd, 0x50, 0xab, 0xfe, 0xa1, 0x81, 0xbb, 0x13, 0x07, - 0x52, 0x10, 0x25, 0xdc, 0xe9, 0xb8, 0x27, 0xa4, 0x21, 0x63, 0xe7, 0x23, 0xa2, 0xb4, 0x13, 0x8a, - 0xd1, 0x00, 0x87, 0x6f, 0x81, 0x39, 0x4a, 0x30, 0x73, 0x1d, 0x45, 0xce, 0x86, 0xb3, 0x8c, 0xa4, - 0x14, 0x29, 0x14, 0xee, 0x80, 0x45, 0x22, 0xc2, 0xcb, 0xe4, 0xf6, 0x28, 0x75, 0x07, 0x1d, 0x5b, - 0x55, 0x06, 0x8b, 0x7b, 0xa3, 0x30, 0xba, 0xac, 0x2f, 0x42, 0x35, 0x88, 0x63, 0x93, 0x86, 0x64, - 0x6f, 0xf9, 0x28, 0xd4, 0xae, 0x94, 0x22, 0x85, 0x56, 0xff, 0x49, 0x03, 0x7d, 0xd2, 0xb3, 0x07, - 0xdb, 0x11, 0x8b, 0x91, 0xa0, 0x24, 0x52, 0xc5, 0x4d, 0xe3, 0xfa, 0x2b, 0x23, 0xcc, 0x6a, 0x2b, - 0x2a, 0xf6, 0x42, 0x5c, 0x1a, 0x63, 0x3e, 0xf2, 0x08, 0x4f, 0xc0, 0x92, 0x33, 0x4a, 0xb9, 0x43, - 0x4e, 0x56, 0xdc, 0xdc, 0x98, 0x69, 0x41, 0x64, 0x48, 0x5d, 0x85, 0x5c, 0xba, 0x04, 0x30, 0x34, - 0x16, 0x04, 0x6e, 0x02, 0x60, 0x3b, 0x96, 0xdb, 0xf5, 0x3a, 0x84, 0x13, 0x59, 0xe8, 0x7c, 0xf4, - 0x5a, 0xee, 0x0f, 0x11, 0x14, 0xd3, 0x4a, 0xea, 0x50, 0x76, 0xb6, 0x0e, 0xd5, 0xee, 0x9f, 0x5d, - 0x94, 0x52, 0x2f, 0x2f, 0x4a, 0xa9, 0xf3, 0x8b, 0x52, 0xea, 0x45, 0x50, 0xd2, 0xce, 0x82, 0x92, - 0xf6, 0x32, 0x28, 0x69, 0xe7, 0x41, 0x49, 0xfb, 0x2b, 0x28, 0x69, 0x3f, 0xfc, 0x5d, 0x4a, 0x7d, - 0x36, 0xaf, 0x6e, 0xf8, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcc, 0xb3, 0x5e, 0x05, 0xd9, 0x0f, - 0x00, 0x00, + // 1137 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcb, 0x6f, 0x1b, 0x45, + 0x18, 0xf7, 0xfa, 0x91, 0xd8, 0xe3, 0x86, 0xa4, 0x13, 0xa5, 0xd9, 0x06, 0x61, 0x5b, 0x46, 0x42, + 0x41, 0xb4, 0xbb, 0x24, 0x2a, 0xa4, 0x04, 0x7a, 0x88, 0x95, 0x08, 0x45, 0x6a, 0x4b, 0x35, 0x51, + 0x72, 0xa0, 0x12, 0x30, 0xbb, 0x9e, 0xd8, 0x8b, 0xed, 0xdd, 0x65, 0x66, 0xd6, 0x21, 0x88, 0x43, + 0x8f, 0x1c, 0x39, 0x72, 0xe4, 0xc4, 0xff, 0xc0, 0x05, 0x09, 0x4e, 0x39, 0xf6, 0x18, 0x24, 0x64, + 0x91, 0xe5, 0x8f, 0xe0, 0x8a, 0x66, 0x76, 0xec, 0x5d, 0x27, 0x9b, 0x38, 0xce, 0x81, 0x5e, 0x7a, + 0xdb, 0xf9, 0x7e, 0xdf, 0xfb, 0xb5, 0x1f, 0xd8, 0xed, 0x3c, 0x64, 0x86, 0xe3, 0x99, 0x9d, 0xc0, + 0x22, 0xd4, 0x25, 0x9c, 0x30, 0xb3, 0x4f, 0xdc, 0xa6, 0x47, 0x4d, 0x05, 0x60, 0xdf, 0x31, 0x71, + 0xc0, 0xdb, 0x1e, 0x75, 0xbe, 0xc3, 0xdc, 0xf1, 0x5c, 0xb3, 0xbf, 0x66, 0x11, 0x8e, 0xd7, 0xcc, + 0x16, 0x71, 0x09, 0xc5, 0x9c, 0x34, 0x0d, 0x9f, 0x7a, 0xdc, 0x83, 0xb5, 0x48, 0xc2, 0xc0, 0xbe, + 0x63, 0x8c, 0x49, 0x18, 0x4a, 0x62, 0xe5, 0x7e, 0xcb, 0xe1, 0xed, 0xc0, 0x32, 0x6c, 0xaf, 0x67, + 0xb6, 0xbc, 0x96, 0x67, 0x4a, 0x41, 0x2b, 0x38, 0x94, 0x2f, 0xf9, 0x90, 0x5f, 0x91, 0xc2, 0x95, + 0x07, 0xb1, 0x0b, 0x3d, 0x6c, 0xb7, 0x1d, 0x97, 0xd0, 0x63, 0xd3, 0xef, 0xb4, 0x04, 0x81, 0x99, + 0x3d, 0xc2, 0xb1, 0xd9, 0xbf, 0xe0, 0xc6, 0x8a, 0x79, 0x99, 0x14, 0x0d, 0x5c, 0xee, 0xf4, 0xc8, + 0x05, 0x81, 0x0f, 0x27, 0x09, 0x30, 0xbb, 0x4d, 0x7a, 0xf8, 0xbc, 0x5c, 0x7d, 0x03, 0x80, 0x9d, + 0x6f, 0x39, 0xc5, 0x07, 0xb8, 0x1b, 0x10, 0x58, 0x05, 0x05, 0x87, 0x93, 0x1e, 0xd3, 0xb5, 0x5a, + 0x6e, 0xb5, 0xd4, 0x28, 0x85, 0x83, 0x6a, 0x61, 0x57, 0x10, 0x50, 0x44, 0xdf, 0x2c, 0xfe, 0xf4, + 0x73, 0x35, 0xf3, 0xe2, 0xaf, 0x5a, 0xa6, 0xfe, 0x5b, 0x16, 0xe8, 0x8f, 0x3d, 0x1b, 0x77, 0xf7, + 0x02, 0xeb, 0x6b, 0x62, 0xf3, 0x2d, 0xdb, 0x26, 0x8c, 0x21, 0xd2, 0x77, 0xc8, 0x11, 0xfc, 0x0a, + 0x14, 0x45, 0x64, 0x4d, 0xcc, 0xb1, 0xae, 0xd5, 0xb4, 0xd5, 0xf2, 0xfa, 0xfb, 0x46, 0x9c, 0xd8, + 0x91, 0x83, 0x86, 0xdf, 0x69, 0x09, 0x02, 0x33, 0x04, 0xb7, 0xd1, 0x5f, 0x33, 0x3e, 0x93, 0xba, + 0x9e, 0x10, 0x8e, 0x1b, 0xf0, 0x64, 0x50, 0xcd, 0x84, 0x83, 0x2a, 0x88, 0x69, 0x68, 0xa4, 0x15, + 0x3e, 0x07, 0x79, 0xe6, 0x13, 0x5b, 0xcf, 0x4a, 0xed, 0x1f, 0x19, 0x93, 0xca, 0x66, 0xa4, 0xb8, + 0xb9, 0xe7, 0x13, 0xbb, 0x71, 0x4b, 0x99, 0xc9, 0x8b, 0x17, 0x92, 0x4a, 0xa1, 0x0d, 0x66, 0x18, + 0xc7, 0x3c, 0x60, 0x7a, 0x4e, 0xaa, 0xff, 0xf8, 0x66, 0xea, 0xa5, 0x8a, 0xc6, 0x1b, 0xca, 0xc0, + 0x4c, 0xf4, 0x46, 0x4a, 0x75, 0xfd, 0x39, 0x58, 0x7a, 0xea, 0xb9, 0x88, 0x30, 0x2f, 0xa0, 0x36, + 0xd9, 0xe2, 0x9c, 0x3a, 0x56, 0xc0, 0x09, 0x83, 0x35, 0x90, 0xf7, 0x31, 0x6f, 0xcb, 0xc4, 0x95, + 0x62, 0xff, 0x9e, 0x61, 0xde, 0x46, 0x12, 0x11, 0x1c, 0x7d, 0x42, 0x2d, 0x19, 0x7c, 0x82, 0xe3, + 0x80, 0x50, 0x0b, 0x49, 0xa4, 0xfe, 0x0d, 0x98, 0x4f, 0x28, 0x47, 0x41, 0x57, 0xd6, 0x56, 0x40, + 0x63, 0xb5, 0x15, 0x12, 0x0c, 0x45, 0x74, 0xf8, 0x08, 0xcc, 0xbb, 0xb1, 0xcc, 0x3e, 0x7a, 0xcc, + 0xf4, 0xac, 0x64, 0x5d, 0x0c, 0x07, 0xd5, 0xa4, 0x3a, 0x01, 0xa1, 0xf3, 0xbc, 0xa2, 0x21, 0x60, + 0x4a, 0x34, 0x26, 0x28, 0xb9, 0xb8, 0x47, 0x98, 0x8f, 0x6d, 0xa2, 0x42, 0xba, 0xad, 0x1c, 0x2e, + 0x3d, 0x1d, 0x02, 0x28, 0xe6, 0x99, 0x1c, 0x1c, 0x7c, 0x1b, 0x14, 0x5a, 0xd4, 0x0b, 0x7c, 0x59, + 0x9d, 0x52, 0x63, 0x4e, 0xb1, 0x14, 0x3e, 0x15, 0x44, 0x14, 0x61, 0xf0, 0x5d, 0x30, 0xdb, 0x27, + 0x94, 0x39, 0x9e, 0xab, 0xe7, 0x25, 0xdb, 0xbc, 0x62, 0x9b, 0x3d, 0x88, 0xc8, 0x68, 0x88, 0xc3, + 0x7b, 0xa0, 0x48, 0x95, 0xe3, 0x7a, 0x41, 0xf2, 0x2e, 0x28, 0xde, 0xe2, 0x28, 0x83, 0x23, 0x0e, + 0xf8, 0x01, 0x28, 0xb3, 0xc0, 0x1a, 0x09, 0xcc, 0x48, 0x81, 0x45, 0x25, 0x50, 0xde, 0x8b, 0x21, + 0x94, 0xe4, 0x13, 0x61, 0x89, 0x18, 0xf5, 0xd9, 0xf1, 0xb0, 0x44, 0x0a, 0x90, 0x44, 0xea, 0x7f, + 0x68, 0xe0, 0xd6, 0x74, 0x15, 0x7b, 0x0f, 0x94, 0xb0, 0xef, 0xc8, 0xb0, 0x87, 0xb5, 0x9a, 0x13, + 0x79, 0xdd, 0x7a, 0xb6, 0x1b, 0x11, 0x51, 0x8c, 0x0b, 0xe6, 0xa1, 0x33, 0xa2, 0xaf, 0x47, 0xcc, + 0x43, 0x93, 0x0c, 0xc5, 0x38, 0xdc, 0x00, 0x73, 0xc3, 0x87, 0x2c, 0x92, 0x9e, 0x97, 0x02, 0xb7, + 0xc3, 0x41, 0x75, 0x0e, 0x25, 0x01, 0x34, 0xce, 0x57, 0xff, 0x3d, 0x0b, 0x96, 0xf7, 0x48, 0xf7, + 0xf0, 0xd5, 0x6c, 0x85, 0x2f, 0xc7, 0xb6, 0xc2, 0xa3, 0x6b, 0x8c, 0x6d, 0xba, 0xab, 0xaf, 0x76, + 0x33, 0xfc, 0x92, 0x05, 0x6f, 0x5e, 0xe1, 0x18, 0xfc, 0x1e, 0x40, 0x7a, 0x61, 0xd0, 0x54, 0x46, + 0x1f, 0x4c, 0x76, 0xe8, 0xe2, 0x90, 0x36, 0xee, 0x84, 0x83, 0x6a, 0xca, 0xf0, 0xa2, 0x14, 0x3b, + 0xf0, 0x07, 0x0d, 0x2c, 0xb9, 0x69, 0x8b, 0x4b, 0x65, 0x7d, 0x63, 0xb2, 0x07, 0xa9, 0x7b, 0xaf, + 0x71, 0x37, 0x1c, 0x54, 0xd3, 0x57, 0x22, 0x4a, 0x37, 0x28, 0x56, 0xce, 0x9d, 0x44, 0xa2, 0xc4, + 0xd0, 0xfc, 0x7f, 0xbd, 0xf6, 0xc5, 0x58, 0xaf, 0x7d, 0x32, 0x55, 0xaf, 0x25, 0x3c, 0xbd, 0xb4, + 0xd5, 0xac, 0x73, 0xad, 0xb6, 0x79, 0xed, 0x56, 0x4b, 0x6a, 0xbf, 0xba, 0xd3, 0x9e, 0x80, 0x95, + 0xcb, 0xbd, 0x9a, 0x7a, 0x75, 0xd7, 0x7f, 0xcd, 0x82, 0xc5, 0xd7, 0xe7, 0xc0, 0xcd, 0x86, 0xfe, + 0x34, 0x0f, 0x96, 0x5f, 0x0f, 0xfc, 0xd5, 0x03, 0x2f, 0x7e, 0xa2, 0x01, 0x23, 0x54, 0xfd, 0xf8, + 0x47, 0xb5, 0xda, 0x67, 0x84, 0x22, 0x89, 0xc0, 0xda, 0xf0, 0x36, 0x88, 0x7e, 0x58, 0x40, 0x64, + 0x5a, 0xfd, 0x0b, 0xd5, 0x61, 0xe0, 0x80, 0x02, 0x11, 0x17, 0xaf, 0x5e, 0xa8, 0xe5, 0x56, 0xcb, + 0xeb, 0xdb, 0x37, 0xee, 0x15, 0x43, 0x1e, 0xce, 0x3b, 0x2e, 0xa7, 0xc7, 0xf1, 0x0d, 0x22, 0x69, + 0x28, 0xb2, 0x00, 0xdf, 0x02, 0xb9, 0xc0, 0x69, 0xaa, 0x13, 0xa1, 0xac, 0x58, 0x72, 0xfb, 0xbb, + 0xdb, 0x48, 0xd0, 0x57, 0x0e, 0xd5, 0xed, 0x2d, 0x55, 0xc0, 0x05, 0x90, 0xeb, 0x90, 0xe3, 0x68, + 0xce, 0x90, 0xf8, 0x84, 0x0d, 0x50, 0xe8, 0x8b, 0xb3, 0x5c, 0xe5, 0xf9, 0xde, 0x64, 0x4f, 0xe3, + 0x53, 0x1e, 0x45, 0xa2, 0x9b, 0xd9, 0x87, 0x5a, 0xfd, 0x4f, 0x0d, 0xdc, 0xbd, 0xb4, 0x21, 0xc5, + 0xa1, 0x84, 0xbb, 0x5d, 0xef, 0x88, 0x34, 0xa5, 0xed, 0x62, 0x7c, 0x28, 0x6d, 0x45, 0x64, 0x34, + 0xc4, 0xe1, 0x3b, 0x60, 0x86, 0x12, 0xcc, 0x3c, 0x57, 0x1d, 0x67, 0xa3, 0x5e, 0x46, 0x92, 0x8a, + 0x14, 0x0a, 0xb7, 0xc0, 0x3c, 0x11, 0xe6, 0xa5, 0x73, 0x3b, 0x94, 0x7a, 0xc3, 0x8a, 0x2d, 0x2b, + 0x81, 0xf9, 0x9d, 0x71, 0x18, 0x9d, 0xe7, 0x17, 0xa6, 0x9a, 0xc4, 0x75, 0x48, 0x53, 0x5e, 0x6f, + 0xc5, 0xd8, 0xd4, 0xb6, 0xa4, 0x22, 0x85, 0xd6, 0xff, 0xcd, 0x02, 0xfd, 0xb2, 0xb5, 0x07, 0x3b, + 0xf1, 0x15, 0x23, 0x41, 0x79, 0x48, 0x95, 0xd7, 0x8d, 0xeb, 0x8f, 0x8c, 0x10, 0x6b, 0x2c, 0x29, + 0xdb, 0x73, 0x49, 0x6a, 0xe2, 0xf2, 0x91, 0x4f, 0x78, 0x04, 0x16, 0xdc, 0xf1, 0x93, 0x3b, 0xba, + 0xc9, 0xca, 0xeb, 0x6b, 0x53, 0x0d, 0x88, 0x34, 0xa9, 0x2b, 0x93, 0x0b, 0xe7, 0x00, 0x86, 0x2e, + 0x18, 0x81, 0xeb, 0x00, 0x38, 0xae, 0xed, 0xf5, 0xfc, 0x2e, 0xe1, 0x44, 0x26, 0xba, 0x18, 0x6f, + 0xcb, 0xdd, 0x11, 0x82, 0x12, 0x5c, 0x69, 0x15, 0xca, 0x4f, 0x57, 0xa1, 0xc6, 0xfd, 0x93, 0xb3, + 0x4a, 0xe6, 0xe5, 0x59, 0x25, 0x73, 0x7a, 0x56, 0xc9, 0xbc, 0x08, 0x2b, 0xda, 0x49, 0x58, 0xd1, + 0x5e, 0x86, 0x15, 0xed, 0x34, 0xac, 0x68, 0x7f, 0x87, 0x15, 0xed, 0xc7, 0x7f, 0x2a, 0x99, 0xcf, + 0x67, 0x55, 0x84, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xc5, 0xba, 0xf8, 0x96, 0xa4, 0x0f, 0x00, + 0x00, } diff --git a/vendor/k8s.io/api/authorization/v1beta1/generated.proto b/vendor/k8s.io/api/authorization/v1beta1/generated.proto index 98656fbaca..3876a3eeb9 100644 --- a/vendor/k8s.io/api/authorization/v1beta1/generated.proto +++ b/vendor/k8s.io/api/authorization/v1beta1/generated.proto @@ -24,7 +24,6 @@ package k8s.io.api.authorization.v1beta1; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1beta1"; diff --git a/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go index 58b2dfe753..eb14973cdd 100644 --- a/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/authorization/v1beta1/zz_generated.deepcopy.go @@ -199,13 +199,21 @@ func (in *SelfSubjectAccessReviewSpec) DeepCopyInto(out *SelfSubjectAccessReview *out = *in if in.ResourceAttributes != nil { in, out := &in.ResourceAttributes, &out.ResourceAttributes - *out = new(ResourceAttributes) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ResourceAttributes) + **out = **in + } } if in.NonResourceAttributes != nil { in, out := &in.NonResourceAttributes, &out.NonResourceAttributes - *out = new(NonResourceAttributes) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(NonResourceAttributes) + **out = **in + } } return } @@ -297,13 +305,21 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { *out = *in if in.ResourceAttributes != nil { in, out := &in.ResourceAttributes, &out.ResourceAttributes - *out = new(ResourceAttributes) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ResourceAttributes) + **out = **in + } } if in.NonResourceAttributes != nil { in, out := &in.NonResourceAttributes, &out.NonResourceAttributes - *out = new(NonResourceAttributes) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(NonResourceAttributes) + **out = **in + } } if in.Groups != nil { in, out := &in.Groups, &out.Groups @@ -314,15 +330,12 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) { in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { - var outVal []string if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal - *out = make(ExtraValue, len(*in)) - copy(*out, *in) + (*out)[key] = make([]string, len(val)) + copy((*out)[key], val) } - (*out)[key] = outVal } } return diff --git a/vendor/k8s.io/api/autoscaling/v1/generated.pb.go b/vendor/k8s.io/api/autoscaling/v1/generated.pb.go index 84c40a9f49..8d67ef976d 100644 --- a/vendor/k8s.io/api/autoscaling/v1/generated.pb.go +++ b/vendor/k8s.io/api/autoscaling/v1/generated.pb.go @@ -4323,98 +4323,97 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 1485 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcb, 0x6f, 0x14, 0x47, - 0x13, 0xf7, 0x3e, 0x6c, 0xec, 0x5e, 0x63, 0xf3, 0x35, 0x08, 0x8c, 0xf9, 0xd8, 0xb1, 0xe6, 0x43, - 0x88, 0x2f, 0x09, 0x33, 0xb1, 0x21, 0x88, 0x1c, 0xbd, 0x9b, 0x10, 0x50, 0xbc, 0x60, 0xda, 0x86, - 0x90, 0x87, 0x22, 0xda, 0xb3, 0xcd, 0xba, 0xf1, 0xce, 0xcc, 0xaa, 0xa7, 0x77, 0x85, 0x91, 0x22, - 0x25, 0x87, 0x9c, 0x13, 0x45, 0x4a, 0x94, 0x63, 0xfe, 0x81, 0x9c, 0x39, 0x27, 0x52, 0x24, 0x8e, - 0x1c, 0x72, 0xe0, 0x34, 0x0a, 0x93, 0x63, 0xfe, 0x03, 0x4e, 0x51, 0x3f, 0x76, 0x76, 0x66, 0x77, - 0x67, 0xfd, 0xc0, 0x58, 0xc9, 0x6d, 0x7a, 0xaa, 0xea, 0x57, 0xdd, 0x55, 0xd5, 0xf5, 0x68, 0x50, - 0xd9, 0xba, 0x1a, 0x58, 0xd4, 0xb7, 0xb7, 0xda, 0x1b, 0x84, 0x79, 0x84, 0x93, 0xc0, 0xee, 0x10, - 0xaf, 0xee, 0x33, 0x5b, 0x13, 0x70, 0x8b, 0xda, 0xb8, 0xcd, 0xfd, 0xc0, 0xc1, 0x4d, 0xea, 0x35, - 0xec, 0xce, 0xa2, 0xdd, 0x20, 0x1e, 0x61, 0x98, 0x93, 0xba, 0xd5, 0x62, 0x3e, 0xf7, 0xe1, 0x69, - 0xc5, 0x6a, 0xe1, 0x16, 0xb5, 0x12, 0xac, 0x56, 0x67, 0x71, 0xfe, 0x62, 0x83, 0xf2, 0xcd, 0xf6, - 0x86, 0xe5, 0xf8, 0xae, 0xdd, 0xf0, 0x1b, 0xbe, 0x2d, 0x25, 0x36, 0xda, 0x0f, 0xe4, 0x4a, 0x2e, - 0xe4, 0x97, 0x42, 0x9a, 0x37, 0x13, 0x4a, 0x1d, 0x9f, 0x91, 0x21, 0xda, 0xe6, 0x2f, 0xf7, 0x78, - 0x5c, 0xec, 0x6c, 0x52, 0x8f, 0xb0, 0x6d, 0xbb, 0xb5, 0xd5, 0x90, 0x42, 0x8c, 0x04, 0x7e, 0x9b, - 0x39, 0x64, 0x4f, 0x52, 0x81, 0xed, 0x12, 0x8e, 0x87, 0xe9, 0xb2, 0xb3, 0xa4, 0x58, 0xdb, 0xe3, - 0xd4, 0x1d, 0x54, 0x73, 0x65, 0x27, 0x81, 0xc0, 0xd9, 0x24, 0x2e, 0x1e, 0x90, 0xbb, 0x94, 0x25, - 0xd7, 0xe6, 0xb4, 0x69, 0x53, 0x8f, 0x07, 0x9c, 0xf5, 0x0b, 0x99, 0xdf, 0xe7, 0xc0, 0x99, 0x2a, - 0xf3, 0x83, 0xe0, 0x2e, 0x61, 0x01, 0xf5, 0xbd, 0x5b, 0x1b, 0x0f, 0x89, 0xc3, 0x11, 0x79, 0x40, - 0x18, 0xf1, 0x1c, 0x02, 0x17, 0x40, 0x71, 0x8b, 0x7a, 0xf5, 0xb9, 0xdc, 0x42, 0xee, 0xc2, 0x54, - 0x65, 0xfa, 0x69, 0x68, 0x8c, 0x45, 0xa1, 0x51, 0xfc, 0x90, 0x7a, 0x75, 0x24, 0x29, 0x82, 0xc3, - 0xc3, 0x2e, 0x99, 0xcb, 0xa7, 0x39, 0x6e, 0x62, 0x97, 0x20, 0x49, 0x81, 0x4b, 0x00, 0xe0, 0x16, - 0xd5, 0x0a, 0xe6, 0x0a, 0x92, 0x0f, 0x6a, 0x3e, 0xb0, 0xbc, 0x7a, 0x43, 0x53, 0x50, 0x82, 0xcb, - 0xfc, 0xa1, 0x00, 0x4e, 0xbc, 0xff, 0x88, 0x13, 0xe6, 0xe1, 0x66, 0x8d, 0x70, 0x46, 0x9d, 0x35, - 0xe9, 0x14, 0x01, 0xe6, 0xca, 0xb5, 0x50, 0xa0, 0xb7, 0x15, 0x83, 0xd5, 0x62, 0x0a, 0x4a, 0x70, - 0x41, 0x1f, 0xcc, 0xa8, 0xd5, 0x1a, 0x69, 0x12, 0x87, 0xfb, 0x4c, 0x6e, 0xb6, 0xb4, 0x74, 0xc9, - 0xea, 0x45, 0x5d, 0x6c, 0x32, 0xab, 0xb5, 0xd5, 0x10, 0x3f, 0x02, 0x4b, 0x78, 0xd4, 0xea, 0x2c, - 0x5a, 0x2b, 0x78, 0x83, 0x34, 0xbb, 0xa2, 0x15, 0x18, 0x85, 0xc6, 0x4c, 0x2d, 0x05, 0x87, 0xfa, - 0xe0, 0x21, 0x06, 0x25, 0x8e, 0x59, 0x83, 0xf0, 0xbb, 0xb8, 0xd9, 0x26, 0xf2, 0xc8, 0xa5, 0x25, - 0x6b, 0x94, 0x36, 0xab, 0x1b, 0x75, 0xd6, 0xed, 0x36, 0xf6, 0x38, 0xe5, 0xdb, 0x95, 0xd9, 0x28, - 0x34, 0x4a, 0xeb, 0x3d, 0x18, 0x94, 0xc4, 0x84, 0x1d, 0x00, 0xd5, 0x72, 0xb9, 0x43, 0x18, 0x6e, - 0x10, 0xa5, 0xa9, 0xb8, 0x2f, 0x4d, 0x27, 0xa3, 0xd0, 0x80, 0xeb, 0x03, 0x68, 0x68, 0x88, 0x06, - 0xf3, 0xa7, 0x41, 0xc7, 0x70, 0xcc, 0xdb, 0xc1, 0xbf, 0xc3, 0x31, 0x9b, 0x60, 0xda, 0x69, 0x33, - 0x46, 0xbc, 0x57, 0xf2, 0xcc, 0x09, 0x7d, 0xac, 0xe9, 0x6a, 0x02, 0x0b, 0xa5, 0x90, 0xe1, 0x36, - 0x38, 0xae, 0xd7, 0x07, 0xe0, 0xa0, 0x53, 0x51, 0x68, 0x1c, 0xaf, 0x0e, 0xc2, 0xa1, 0x61, 0x3a, - 0xcc, 0x27, 0x79, 0x70, 0xea, 0xba, 0xcf, 0xe8, 0x63, 0xdf, 0xe3, 0xb8, 0xb9, 0xea, 0xd7, 0x97, - 0x75, 0x42, 0x25, 0x0c, 0xde, 0x07, 0x93, 0xc2, 0x7a, 0x75, 0xcc, 0xb1, 0xf4, 0x51, 0x69, 0xe9, - 0xed, 0xdd, 0xd9, 0x5a, 0x25, 0x86, 0x1a, 0xe1, 0xb8, 0xe7, 0xd5, 0xde, 0x3f, 0x14, 0xa3, 0xc2, - 0x7b, 0xa0, 0x18, 0xb4, 0x88, 0xa3, 0x3d, 0x79, 0xc5, 0xca, 0x4c, 0xec, 0x56, 0xc6, 0x1e, 0xd7, - 0x5a, 0xc4, 0xe9, 0xe5, 0x11, 0xb1, 0x42, 0x12, 0x11, 0xde, 0x07, 0x13, 0x81, 0x8c, 0x35, 0xed, - 0xb6, 0xab, 0xfb, 0xc0, 0x96, 0xf2, 0x95, 0x19, 0x8d, 0x3e, 0xa1, 0xd6, 0x48, 0xe3, 0x9a, 0x5f, - 0x17, 0xc0, 0x42, 0x86, 0x64, 0xd5, 0xf7, 0xea, 0x94, 0x53, 0xdf, 0x83, 0xd7, 0x41, 0x91, 0x6f, - 0xb7, 0xba, 0x21, 0x7e, 0xb9, 0xbb, 0xd1, 0xf5, 0xed, 0x16, 0x79, 0x19, 0x1a, 0xe7, 0x76, 0x92, - 0x17, 0x7c, 0x48, 0x22, 0xc0, 0x95, 0xf8, 0x40, 0xf9, 0x14, 0x96, 0xde, 0xd6, 0xcb, 0xd0, 0x18, - 0x52, 0xcc, 0xac, 0x18, 0x29, 0xbd, 0x79, 0x91, 0x11, 0x9a, 0x38, 0xe0, 0xeb, 0x0c, 0x7b, 0x81, - 0xd2, 0x44, 0xdd, 0x6e, 0x84, 0xbf, 0xb1, 0x3b, 0x27, 0x0b, 0x89, 0xca, 0xbc, 0xde, 0x05, 0x5c, - 0x19, 0x40, 0x43, 0x43, 0x34, 0xc0, 0xf3, 0x60, 0x82, 0x11, 0x1c, 0xf8, 0x9e, 0x0c, 0xee, 0xa9, - 0x9e, 0x71, 0x91, 0xfc, 0x8b, 0x34, 0x15, 0xfe, 0x1f, 0x1c, 0x71, 0x49, 0x10, 0xe0, 0x06, 0x99, - 0x1b, 0x97, 0x8c, 0xb3, 0x9a, 0xf1, 0x48, 0x4d, 0xfd, 0x46, 0x5d, 0xba, 0xf9, 0x7b, 0x0e, 0x9c, - 0xc9, 0xb0, 0xe3, 0x0a, 0x0d, 0x38, 0xfc, 0x6c, 0x20, 0x8a, 0xad, 0x5d, 0x66, 0x0c, 0x1a, 0xa8, - 0x18, 0x3e, 0xa6, 0x75, 0x4f, 0x76, 0xff, 0x24, 0x22, 0xf8, 0x23, 0x30, 0x4e, 0x39, 0x71, 0x85, - 0x57, 0x0a, 0x17, 0x4a, 0x4b, 0x4b, 0x7b, 0x0f, 0xb3, 0xca, 0x51, 0x0d, 0x3f, 0x7e, 0x43, 0x00, - 0x21, 0x85, 0x67, 0xfe, 0x95, 0xcf, 0x3c, 0x96, 0x08, 0x73, 0xd8, 0x01, 0x33, 0x72, 0xa5, 0x52, - 0x31, 0x22, 0x0f, 0xf4, 0xe1, 0x46, 0x5d, 0xa2, 0x11, 0xc5, 0xbb, 0x72, 0x52, 0xef, 0x62, 0x66, - 0x2d, 0x85, 0x8a, 0xfa, 0xb4, 0xc0, 0x45, 0x50, 0x72, 0xa9, 0x87, 0x48, 0xab, 0x49, 0x1d, 0xac, - 0x82, 0x71, 0x5c, 0x95, 0x9f, 0x5a, 0xef, 0x37, 0x4a, 0xf2, 0xc0, 0x77, 0x40, 0xc9, 0xc5, 0x8f, - 0x62, 0x91, 0x82, 0x14, 0x39, 0xae, 0xf5, 0x95, 0x6a, 0x3d, 0x12, 0x4a, 0xf2, 0xc1, 0x87, 0xa0, - 0xac, 0x6a, 0x4a, 0x75, 0xf5, 0xce, 0x1d, 0x4e, 0x9b, 0xf4, 0x31, 0x16, 0x71, 0xb4, 0x4a, 0x98, - 0x43, 0x3c, 0x2e, 0x42, 0xa3, 0x28, 0x91, 0xcc, 0x28, 0x34, 0xca, 0xeb, 0x23, 0x39, 0xd1, 0x0e, - 0x48, 0xe6, 0x2f, 0x05, 0x70, 0x76, 0x64, 0x1a, 0x80, 0xd7, 0x00, 0xf4, 0x37, 0x02, 0xc2, 0x3a, - 0xa4, 0xfe, 0x81, 0xea, 0x8b, 0x44, 0x83, 0x22, 0x6c, 0x5e, 0x50, 0x35, 0xf1, 0xd6, 0x00, 0x15, - 0x0d, 0x91, 0x80, 0x0e, 0x38, 0x2a, 0xee, 0x85, 0xb2, 0x32, 0xd5, 0xbd, 0xd0, 0xde, 0x2e, 0xdd, - 0x7f, 0xa2, 0xd0, 0x38, 0xba, 0x92, 0x04, 0x41, 0x69, 0x4c, 0xb8, 0x0c, 0x66, 0x75, 0xb2, 0xef, - 0xb3, 0xfa, 0x29, 0x6d, 0xf5, 0xd9, 0x6a, 0x9a, 0x8c, 0xfa, 0xf9, 0x05, 0x44, 0x9d, 0x04, 0x94, - 0x91, 0x7a, 0x0c, 0x51, 0x4c, 0x43, 0xbc, 0x97, 0x26, 0xa3, 0x7e, 0x7e, 0xe8, 0x02, 0x43, 0xa3, - 0x66, 0x7a, 0x70, 0x5c, 0x42, 0xfe, 0x2f, 0x0a, 0x0d, 0xa3, 0x3a, 0x9a, 0x15, 0xed, 0x84, 0x25, - 0xda, 0x40, 0xdd, 0x3b, 0xc8, 0x0b, 0x72, 0x39, 0x95, 0x7a, 0x17, 0xfa, 0x52, 0xef, 0xb1, 0x64, - 0xa3, 0x98, 0x48, 0xb3, 0xb7, 0xc1, 0x84, 0x2f, 0x6f, 0x86, 0xf6, 0xcb, 0xc5, 0x11, 0xd7, 0x29, - 0x2e, 0x69, 0x31, 0x50, 0x05, 0x88, 0x5c, 0xa6, 0xaf, 0x96, 0x06, 0x82, 0x37, 0x40, 0xb1, 0xe5, - 0xd7, 0xbb, 0x85, 0xe8, 0xcd, 0x11, 0x80, 0xab, 0x7e, 0x3d, 0x48, 0xc1, 0x4d, 0x8a, 0x1d, 0x8b, - 0xbf, 0x48, 0x42, 0xc0, 0x8f, 0xc1, 0x64, 0xb7, 0xe0, 0xeb, 0xee, 0xc0, 0x1e, 0x01, 0x87, 0x34, - 0x6b, 0x0a, 0x72, 0x5a, 0x24, 0xb2, 0x2e, 0x05, 0xc5, 0x70, 0x02, 0x9a, 0xe8, 0x56, 0x4d, 0x7a, - 0x65, 0x34, 0xf4, 0xb0, 0x76, 0x5b, 0x41, 0x77, 0x29, 0x28, 0x86, 0x33, 0x7f, 0x2c, 0x80, 0xe9, - 0x54, 0xfb, 0x77, 0xc8, 0xae, 0x51, 0x75, 0xfc, 0xc0, 0x5c, 0xa3, 0xe0, 0x0e, 0xd4, 0x35, 0x0a, - 0xf2, 0xb5, 0xb8, 0x26, 0x01, 0x3d, 0xc4, 0x35, 0xdf, 0xe4, 0x01, 0x1c, 0x0c, 0x63, 0xf8, 0x39, - 0x98, 0x50, 0x09, 0xf3, 0x15, 0x8b, 0x4a, 0x5c, 0xde, 0x75, 0xfd, 0xd0, 0xa8, 0x7d, 0xfd, 0x7f, - 0x7e, 0x57, 0xfd, 0x3f, 0x39, 0x88, 0x39, 0x29, 0xae, 0x3a, 0x59, 0xb3, 0x92, 0xf9, 0x5d, 0xbf, - 0x45, 0x54, 0xc8, 0xfe, 0x13, 0x2d, 0x72, 0x68, 0x03, 0x8a, 0xf9, 0x6b, 0x0e, 0x1c, 0xeb, 0x4f, - 0x4e, 0xfb, 0x1a, 0xe2, 0x1e, 0x0f, 0x9d, 0x44, 0xf3, 0xfb, 0xda, 0x78, 0xdc, 0x7b, 0xee, 0x72, - 0x1a, 0xfd, 0x2d, 0x7d, 0x88, 0xfd, 0x4f, 0xa2, 0x5f, 0x0c, 0x1f, 0xd7, 0xf6, 0x77, 0x8a, 0x33, - 0x5a, 0xd9, 0xee, 0x47, 0xb6, 0x9f, 0xf3, 0xe0, 0xc4, 0xb0, 0xd4, 0x0e, 0xab, 0xfa, 0x75, 0x45, - 0x9d, 0xc2, 0x4e, 0xbe, 0xae, 0xbc, 0x0c, 0x0d, 0x63, 0xc8, 0x78, 0xd0, 0x85, 0x49, 0x3c, 0xc0, - 0xdc, 0x03, 0x73, 0x29, 0xdb, 0x25, 0x6a, 0xad, 0x6e, 0xf6, 0xfe, 0x1b, 0x85, 0xc6, 0xdc, 0x7a, - 0x06, 0x0f, 0xca, 0x94, 0xce, 0x78, 0x85, 0x28, 0xbc, 0xf6, 0x57, 0x88, 0x27, 0x83, 0xf6, 0x52, - 0xbe, 0x3f, 0x10, 0x7b, 0x7d, 0x0a, 0x4e, 0xa7, 0x9d, 0x34, 0x68, 0xb0, 0xb3, 0x51, 0x68, 0x9c, - 0xae, 0x66, 0x31, 0xa1, 0x6c, 0xf9, 0xac, 0x48, 0x2b, 0x1c, 0x52, 0xa4, 0x7d, 0x95, 0x07, 0xe3, - 0xb2, 0xa9, 0x3c, 0x84, 0xa7, 0x80, 0x6b, 0xa9, 0xa7, 0x80, 0x73, 0x23, 0xd2, 0xab, 0xdc, 0x51, - 0xe6, 0xe0, 0x7f, 0xb3, 0x6f, 0xf0, 0x3f, 0xbf, 0x23, 0xd2, 0xe8, 0x31, 0xff, 0x5d, 0x30, 0x15, - 0x2b, 0x84, 0x6f, 0x89, 0x22, 0xaf, 0xbb, 0xe1, 0x9c, 0xf4, 0x6d, 0x3c, 0x1b, 0xc6, 0x6d, 0x70, - 0xcc, 0x61, 0x52, 0x50, 0x4a, 0x68, 0xd8, 0x9b, 0xb0, 0xe0, 0x0e, 0x92, 0x0f, 0x5d, 0x53, 0x3d, - 0xee, 0xf8, 0xc5, 0x2a, 0xe6, 0xa8, 0x5c, 0x78, 0xfa, 0xa2, 0x3c, 0xf6, 0xec, 0x45, 0x79, 0xec, - 0xf9, 0x8b, 0xf2, 0xd8, 0x97, 0x51, 0x39, 0xf7, 0x34, 0x2a, 0xe7, 0x9e, 0x45, 0xe5, 0xdc, 0xf3, - 0xa8, 0x9c, 0xfb, 0x23, 0x2a, 0xe7, 0xbe, 0xfd, 0xb3, 0x3c, 0xf6, 0x49, 0xbe, 0xb3, 0xf8, 0x77, - 0x00, 0x00, 0x00, 0xff, 0xff, 0x61, 0x55, 0xfd, 0xeb, 0x81, 0x17, 0x00, 0x00, + // 1471 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x4b, 0x6f, 0x14, 0xc7, + 0x13, 0xf7, 0x3e, 0x6c, 0xec, 0x5e, 0x63, 0xf3, 0x6f, 0x10, 0x18, 0xf3, 0x67, 0xc7, 0x9a, 0x20, + 0x44, 0x1e, 0xcc, 0xc6, 0x0e, 0x41, 0xe4, 0xe8, 0xdd, 0x84, 0x80, 0xe2, 0x05, 0xd3, 0x36, 0x84, + 0x3c, 0x14, 0xd1, 0x9e, 0x6d, 0xd6, 0x8d, 0x77, 0x66, 0x56, 0x3d, 0xbd, 0x2b, 0x8c, 0x14, 0x29, + 0x39, 0xe4, 0x9c, 0x28, 0x52, 0xa2, 0x1c, 0xf3, 0x05, 0x72, 0xe6, 0x9c, 0x48, 0x91, 0x38, 0x72, + 0xc8, 0x81, 0xd3, 0x28, 0x4c, 0x8e, 0xf9, 0x06, 0x9c, 0xa2, 0x7e, 0xec, 0xec, 0xcc, 0xee, 0xcc, + 0xfa, 0x81, 0xb1, 0x92, 0xdb, 0xf4, 0x54, 0xd5, 0xaf, 0xba, 0xab, 0xaa, 0xeb, 0xd1, 0xa0, 0xba, + 0x75, 0xc5, 0xb7, 0xa8, 0x57, 0xd9, 0xea, 0x6c, 0x10, 0xe6, 0x12, 0x4e, 0xfc, 0x4a, 0x97, 0xb8, + 0x0d, 0x8f, 0x55, 0x34, 0x01, 0xb7, 0x69, 0x05, 0x77, 0xb8, 0xe7, 0xdb, 0xb8, 0x45, 0xdd, 0x66, + 0xa5, 0xbb, 0x58, 0x69, 0x12, 0x97, 0x30, 0xcc, 0x49, 0xc3, 0x6a, 0x33, 0x8f, 0x7b, 0xf0, 0xb4, + 0x62, 0xb5, 0x70, 0x9b, 0x5a, 0x31, 0x56, 0xab, 0xbb, 0x38, 0x7f, 0xb1, 0x49, 0xf9, 0x66, 0x67, + 0xc3, 0xb2, 0x3d, 0xa7, 0xd2, 0xf4, 0x9a, 0x5e, 0x45, 0x4a, 0x6c, 0x74, 0xee, 0xcb, 0x95, 0x5c, + 0xc8, 0x2f, 0x85, 0x34, 0x6f, 0xc6, 0x94, 0xda, 0x1e, 0x23, 0x29, 0xda, 0xe6, 0x2f, 0xf5, 0x79, + 0x1c, 0x6c, 0x6f, 0x52, 0x97, 0xb0, 0xed, 0x4a, 0x7b, 0xab, 0x29, 0x85, 0x18, 0xf1, 0xbd, 0x0e, + 0xb3, 0xc9, 0x9e, 0xa4, 0xfc, 0x8a, 0x43, 0x38, 0x4e, 0xd3, 0x55, 0xc9, 0x92, 0x62, 0x1d, 0x97, + 0x53, 0x67, 0x58, 0xcd, 0xe5, 0x9d, 0x04, 0x7c, 0x7b, 0x93, 0x38, 0x78, 0x50, 0xce, 0xfc, 0x21, + 0x07, 0xce, 0xd4, 0x98, 0xe7, 0xfb, 0x77, 0x08, 0xf3, 0xa9, 0xe7, 0xde, 0xdc, 0x78, 0x40, 0x6c, + 0x8e, 0xc8, 0x7d, 0xc2, 0x88, 0x6b, 0x13, 0xb8, 0x00, 0x8a, 0x5b, 0xd4, 0x6d, 0xcc, 0xe5, 0x16, + 0x72, 0x17, 0xa6, 0xaa, 0xd3, 0x4f, 0x02, 0x63, 0x2c, 0x0c, 0x8c, 0xe2, 0x47, 0xd4, 0x6d, 0x20, + 0x49, 0x11, 0x1c, 0x2e, 0x76, 0xc8, 0x5c, 0x3e, 0xc9, 0x71, 0x03, 0x3b, 0x04, 0x49, 0x0a, 0x5c, + 0x02, 0x00, 0xb7, 0xa9, 0x56, 0x30, 0x57, 0x90, 0x7c, 0x50, 0xf3, 0x81, 0xe5, 0xd5, 0xeb, 0x9a, + 0x82, 0x62, 0x5c, 0xe6, 0x8f, 0x05, 0x70, 0xe2, 0x83, 0x87, 0x9c, 0x30, 0x17, 0xb7, 0xea, 0x84, + 0x33, 0x6a, 0xaf, 0x49, 0xfb, 0x0a, 0x30, 0x47, 0xae, 0x85, 0x02, 0xbd, 0xad, 0x08, 0xac, 0x1e, + 0x51, 0x50, 0x8c, 0x0b, 0x7a, 0x60, 0x46, 0xad, 0xd6, 0x48, 0x8b, 0xd8, 0xdc, 0x63, 0x72, 0xb3, + 0xa5, 0xa5, 0x77, 0xac, 0x7e, 0x00, 0x45, 0x56, 0xb3, 0xda, 0x5b, 0x4d, 0xf1, 0xc3, 0xb7, 0x84, + 0x73, 0xac, 0xee, 0xa2, 0xb5, 0x82, 0x37, 0x48, 0xab, 0x27, 0x5a, 0x85, 0x61, 0x60, 0xcc, 0xd4, + 0x13, 0x70, 0x68, 0x00, 0x1e, 0x62, 0x50, 0xe2, 0x98, 0x35, 0x09, 0xbf, 0x83, 0x5b, 0x1d, 0x22, + 0x8f, 0x5c, 0x5a, 0xb2, 0x46, 0x69, 0xb3, 0x7a, 0x01, 0x64, 0xdd, 0xea, 0x60, 0x97, 0x53, 0xbe, + 0x5d, 0x9d, 0x0d, 0x03, 0xa3, 0xb4, 0xde, 0x87, 0x41, 0x71, 0x4c, 0xd8, 0x05, 0x50, 0x2d, 0x97, + 0xbb, 0x84, 0xe1, 0x26, 0x51, 0x9a, 0x8a, 0xfb, 0xd2, 0x74, 0x32, 0x0c, 0x0c, 0xb8, 0x3e, 0x84, + 0x86, 0x52, 0x34, 0x98, 0x3f, 0x0f, 0x3b, 0x86, 0x63, 0xde, 0xf1, 0xff, 0x1b, 0x8e, 0xd9, 0x04, + 0xd3, 0x76, 0x87, 0x31, 0xe2, 0xbe, 0x94, 0x67, 0x4e, 0xe8, 0x63, 0x4d, 0xd7, 0x62, 0x58, 0x28, + 0x81, 0x0c, 0xb7, 0xc1, 0x71, 0xbd, 0x3e, 0x00, 0x07, 0x9d, 0x0a, 0x03, 0xe3, 0x78, 0x6d, 0x18, + 0x0e, 0xa5, 0xe9, 0x30, 0x1f, 0xe7, 0xc1, 0xa9, 0x6b, 0x1e, 0xa3, 0x8f, 0x3c, 0x97, 0xe3, 0xd6, + 0xaa, 0xd7, 0x58, 0xd6, 0xb9, 0x91, 0x30, 0x78, 0x0f, 0x4c, 0x0a, 0xeb, 0x35, 0x30, 0xc7, 0xd2, + 0x47, 0xa5, 0xa5, 0xb7, 0x77, 0x67, 0x6b, 0x95, 0x18, 0xea, 0x84, 0xe3, 0xbe, 0x57, 0xfb, 0xff, + 0x50, 0x84, 0x0a, 0xef, 0x82, 0xa2, 0xdf, 0x26, 0xb6, 0xf6, 0xe4, 0x65, 0x2b, 0x33, 0x47, 0x5b, + 0x19, 0x7b, 0x5c, 0x6b, 0x13, 0xbb, 0x9f, 0x47, 0xc4, 0x0a, 0x49, 0x44, 0x78, 0x0f, 0x4c, 0xf8, + 0x32, 0xd6, 0xb4, 0xdb, 0xae, 0xec, 0x03, 0x5b, 0xca, 0x57, 0x67, 0x34, 0xfa, 0x84, 0x5a, 0x23, + 0x8d, 0x6b, 0x7e, 0x53, 0x00, 0x0b, 0x19, 0x92, 0x35, 0xcf, 0x6d, 0x50, 0x4e, 0x3d, 0x17, 0x5e, + 0x03, 0x45, 0xbe, 0xdd, 0xee, 0x85, 0xf8, 0xa5, 0xde, 0x46, 0xd7, 0xb7, 0xdb, 0xe4, 0x45, 0x60, + 0x9c, 0xdb, 0x49, 0x5e, 0xf0, 0x21, 0x89, 0x00, 0x57, 0xa2, 0x03, 0xe5, 0x13, 0x58, 0x7a, 0x5b, + 0x2f, 0x02, 0x23, 0xa5, 0x2e, 0x59, 0x11, 0x52, 0x72, 0xf3, 0x22, 0x23, 0xb4, 0xb0, 0xcf, 0xd7, + 0x19, 0x76, 0x7d, 0xa5, 0x89, 0x3a, 0xbd, 0x08, 0x7f, 0x63, 0x77, 0x4e, 0x16, 0x12, 0xd5, 0x79, + 0xbd, 0x0b, 0xb8, 0x32, 0x84, 0x86, 0x52, 0x34, 0xc0, 0xf3, 0x60, 0x82, 0x11, 0xec, 0x7b, 0xae, + 0x0c, 0xee, 0xa9, 0xbe, 0x71, 0x91, 0xfc, 0x8b, 0x34, 0x15, 0xbe, 0x0e, 0x8e, 0x38, 0xc4, 0xf7, + 0x71, 0x93, 0xcc, 0x8d, 0x4b, 0xc6, 0x59, 0xcd, 0x78, 0xa4, 0xae, 0x7e, 0xa3, 0x1e, 0xdd, 0xfc, + 0x23, 0x07, 0xce, 0x64, 0xd8, 0x71, 0x85, 0xfa, 0x1c, 0x7e, 0x3e, 0x14, 0xc5, 0xd6, 0x2e, 0x33, + 0x06, 0xf5, 0x55, 0x0c, 0x1f, 0xd3, 0xba, 0x27, 0x7b, 0x7f, 0x62, 0x11, 0xfc, 0x31, 0x18, 0xa7, + 0x9c, 0x38, 0xc2, 0x2b, 0x85, 0x0b, 0xa5, 0xa5, 0xa5, 0xbd, 0x87, 0x59, 0xf5, 0xa8, 0x86, 0x1f, + 0xbf, 0x2e, 0x80, 0x90, 0xc2, 0x33, 0xff, 0xce, 0x67, 0x1e, 0x4b, 0x84, 0x39, 0xec, 0x82, 0x19, + 0xb9, 0x52, 0xa9, 0x18, 0x91, 0xfb, 0xfa, 0x70, 0xa3, 0x2e, 0xd1, 0x88, 0xe2, 0x5d, 0x3d, 0xa9, + 0x77, 0x31, 0xb3, 0x96, 0x40, 0x45, 0x03, 0x5a, 0xe0, 0x22, 0x28, 0x39, 0xd4, 0x45, 0xa4, 0xdd, + 0xa2, 0x36, 0x56, 0xc1, 0x38, 0xae, 0xca, 0x4f, 0xbd, 0xff, 0x1b, 0xc5, 0x79, 0xe0, 0xbb, 0xa0, + 0xe4, 0xe0, 0x87, 0x91, 0x48, 0x41, 0x8a, 0x1c, 0xd7, 0xfa, 0x4a, 0xf5, 0x3e, 0x09, 0xc5, 0xf9, + 0xe0, 0x03, 0x50, 0x56, 0x35, 0xa5, 0xb6, 0x7a, 0xfb, 0x36, 0xa7, 0x2d, 0xfa, 0x08, 0x8b, 0x38, + 0x5a, 0x25, 0xcc, 0x26, 0x2e, 0x17, 0xa1, 0x51, 0x94, 0x48, 0x66, 0x18, 0x18, 0xe5, 0xf5, 0x91, + 0x9c, 0x68, 0x07, 0x24, 0xf3, 0xd7, 0x02, 0x38, 0x3b, 0x32, 0x0d, 0xc0, 0xab, 0x00, 0x7a, 0x1b, + 0x3e, 0x61, 0x5d, 0xd2, 0xf8, 0x50, 0xf5, 0x45, 0xa2, 0x41, 0x11, 0x36, 0x2f, 0xa8, 0x9a, 0x78, + 0x73, 0x88, 0x8a, 0x52, 0x24, 0xa0, 0x0d, 0x8e, 0x8a, 0x7b, 0xa1, 0xac, 0x4c, 0x75, 0x2f, 0xb4, + 0xb7, 0x4b, 0xf7, 0xbf, 0x30, 0x30, 0x8e, 0xae, 0xc4, 0x41, 0x50, 0x12, 0x13, 0x2e, 0x83, 0x59, + 0x9d, 0xec, 0x07, 0xac, 0x7e, 0x4a, 0x5b, 0x7d, 0xb6, 0x96, 0x24, 0xa3, 0x41, 0x7e, 0x01, 0xd1, + 0x20, 0x3e, 0x65, 0xa4, 0x11, 0x41, 0x14, 0x93, 0x10, 0xef, 0x27, 0xc9, 0x68, 0x90, 0x1f, 0x3a, + 0xc0, 0xd0, 0xa8, 0x99, 0x1e, 0x1c, 0x97, 0x90, 0xaf, 0x85, 0x81, 0x61, 0xd4, 0x46, 0xb3, 0xa2, + 0x9d, 0xb0, 0x44, 0x1b, 0xa8, 0x7b, 0x07, 0x79, 0x41, 0x2e, 0x25, 0x52, 0xef, 0xc2, 0x40, 0xea, + 0x3d, 0x16, 0x6f, 0x14, 0x63, 0x69, 0xf6, 0x16, 0x98, 0xf0, 0xe4, 0xcd, 0xd0, 0x7e, 0xb9, 0x38, + 0xe2, 0x3a, 0x45, 0x25, 0x2d, 0x02, 0xaa, 0x02, 0x91, 0xcb, 0xf4, 0xd5, 0xd2, 0x40, 0xf0, 0x3a, + 0x28, 0xb6, 0xbd, 0x46, 0xaf, 0x10, 0xbd, 0x39, 0x02, 0x70, 0xd5, 0x6b, 0xf8, 0x09, 0xb8, 0x49, + 0xb1, 0x63, 0xf1, 0x17, 0x49, 0x08, 0xf8, 0x09, 0x98, 0xec, 0x15, 0x7c, 0xdd, 0x1d, 0x54, 0x46, + 0xc0, 0x21, 0xcd, 0x9a, 0x80, 0x9c, 0x16, 0x89, 0xac, 0x47, 0x41, 0x11, 0x9c, 0x80, 0x26, 0xba, + 0x55, 0x93, 0x5e, 0x19, 0x0d, 0x9d, 0xd6, 0x6e, 0x2b, 0xe8, 0x1e, 0x05, 0x45, 0x70, 0xe6, 0x4f, + 0x05, 0x30, 0x9d, 0x68, 0xff, 0x0e, 0xd9, 0x35, 0xaa, 0x8e, 0x1f, 0x98, 0x6b, 0x14, 0xdc, 0x81, + 0xba, 0x46, 0x41, 0xbe, 0x12, 0xd7, 0xc4, 0xa0, 0x53, 0x5c, 0xf3, 0x6d, 0x1e, 0xc0, 0xe1, 0x30, + 0x86, 0x5f, 0x80, 0x09, 0x95, 0x30, 0x5f, 0xb2, 0xa8, 0x44, 0xe5, 0x5d, 0xd7, 0x0f, 0x8d, 0x3a, + 0xd0, 0xff, 0xe7, 0x77, 0xd5, 0xff, 0x93, 0x83, 0x98, 0x93, 0xa2, 0xaa, 0x93, 0x35, 0x2b, 0x99, + 0xdf, 0x0f, 0x5a, 0x44, 0x85, 0xec, 0xbf, 0xd1, 0x22, 0x87, 0x36, 0xa0, 0x98, 0xbf, 0xe5, 0xc0, + 0xb1, 0xc1, 0xe4, 0xb4, 0xaf, 0x21, 0xee, 0x51, 0xea, 0x24, 0x9a, 0xdf, 0xd7, 0xc6, 0xa3, 0xde, + 0x73, 0x97, 0xd3, 0xe8, 0xef, 0xc9, 0x43, 0xec, 0x7f, 0x12, 0xfd, 0x32, 0x7d, 0x5c, 0xdb, 0xdf, + 0x29, 0xce, 0x68, 0x65, 0xbb, 0x1f, 0xd9, 0x7e, 0xc9, 0x83, 0x13, 0x69, 0xa9, 0x1d, 0xd6, 0xf4, + 0xeb, 0x8a, 0x3a, 0x45, 0x25, 0xfe, 0xba, 0xf2, 0x22, 0x30, 0x8c, 0x94, 0xf1, 0xa0, 0x07, 0x13, + 0x7b, 0x80, 0xb9, 0x0b, 0xe6, 0x12, 0xb6, 0x8b, 0xd5, 0x5a, 0xdd, 0xec, 0xfd, 0x3f, 0x0c, 0x8c, + 0xb9, 0xf5, 0x0c, 0x1e, 0x94, 0x29, 0x9d, 0xf1, 0x0a, 0x51, 0x78, 0xe5, 0xaf, 0x10, 0x8f, 0x87, + 0xed, 0xa5, 0x7c, 0x7f, 0x20, 0xf6, 0xfa, 0x0c, 0x9c, 0x4e, 0x3a, 0x69, 0xd8, 0x60, 0x67, 0xc3, + 0xc0, 0x38, 0x5d, 0xcb, 0x62, 0x42, 0xd9, 0xf2, 0x59, 0x91, 0x56, 0x38, 0xa4, 0x48, 0xfb, 0x3a, + 0x0f, 0xc6, 0x65, 0x53, 0x79, 0x08, 0x4f, 0x01, 0x57, 0x13, 0x4f, 0x01, 0xe7, 0x46, 0xa4, 0x57, + 0xb9, 0xa3, 0xcc, 0xc1, 0xff, 0xc6, 0xc0, 0xe0, 0x7f, 0x7e, 0x47, 0xa4, 0xd1, 0x63, 0xfe, 0x7b, + 0x60, 0x2a, 0x52, 0x08, 0xdf, 0x12, 0x45, 0x5e, 0x77, 0xc3, 0x39, 0xe9, 0xdb, 0x68, 0x36, 0x8c, + 0xda, 0xe0, 0x88, 0xc3, 0xa4, 0xa0, 0x14, 0xd3, 0xb0, 0x37, 0x61, 0xc1, 0xed, 0xc7, 0x1f, 0xba, + 0xa6, 0xfa, 0xdc, 0xd1, 0x8b, 0x55, 0xc4, 0x51, 0xbd, 0xf0, 0xe4, 0x79, 0x79, 0xec, 0xe9, 0xf3, + 0xf2, 0xd8, 0xb3, 0xe7, 0xe5, 0xb1, 0xaf, 0xc2, 0x72, 0xee, 0x49, 0x58, 0xce, 0x3d, 0x0d, 0xcb, + 0xb9, 0x67, 0x61, 0x39, 0xf7, 0x67, 0x58, 0xce, 0x7d, 0xf7, 0x57, 0x79, 0xec, 0xd3, 0x7c, 0x77, + 0xf1, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4d, 0x5f, 0x69, 0x0c, 0x4c, 0x17, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/autoscaling/v1/generated.proto b/vendor/k8s.io/api/autoscaling/v1/generated.proto index 2ff7f9e285..a3c542de25 100644 --- a/vendor/k8s.io/api/autoscaling/v1/generated.proto +++ b/vendor/k8s.io/api/autoscaling/v1/generated.proto @@ -26,7 +26,6 @@ import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1"; diff --git a/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go index 6bafc0887f..ee9ac01dea 100644 --- a/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/autoscaling/v1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1 import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -46,18 +46,30 @@ func (in *ExternalMetricSource) DeepCopyInto(out *ExternalMetricSource) { *out = *in if in.MetricSelector != nil { in, out := &in.MetricSelector, &out.MetricSelector - *out = new(metav1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } if in.TargetValue != nil { in, out := &in.TargetValue, &out.TargetValue - x := (*in).DeepCopy() - *out = &x + if *in == nil { + *out = nil + } else { + x := (*in).DeepCopy() + *out = &x + } } if in.TargetAverageValue != nil { in, out := &in.TargetAverageValue, &out.TargetAverageValue - x := (*in).DeepCopy() - *out = &x + if *in == nil { + *out = nil + } else { + x := (*in).DeepCopy() + *out = &x + } } return } @@ -77,14 +89,22 @@ func (in *ExternalMetricStatus) DeepCopyInto(out *ExternalMetricStatus) { *out = *in if in.MetricSelector != nil { in, out := &in.MetricSelector, &out.MetricSelector - *out = new(metav1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } out.CurrentValue = in.CurrentValue.DeepCopy() if in.CurrentAverageValue != nil { in, out := &in.CurrentAverageValue, &out.CurrentAverageValue - x := (*in).DeepCopy() - *out = &x + if *in == nil { + *out = nil + } else { + x := (*in).DeepCopy() + *out = &x + } } return } @@ -183,13 +203,21 @@ func (in *HorizontalPodAutoscalerSpec) DeepCopyInto(out *HorizontalPodAutoscaler out.ScaleTargetRef = in.ScaleTargetRef if in.MinReplicas != nil { in, out := &in.MinReplicas, &out.MinReplicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.TargetCPUUtilizationPercentage != nil { in, out := &in.TargetCPUUtilizationPercentage, &out.TargetCPUUtilizationPercentage - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -209,17 +237,29 @@ func (in *HorizontalPodAutoscalerStatus) DeepCopyInto(out *HorizontalPodAutoscal *out = *in if in.ObservedGeneration != nil { in, out := &in.ObservedGeneration, &out.ObservedGeneration - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.LastScaleTime != nil { in, out := &in.LastScaleTime, &out.LastScaleTime - *out = (*in).DeepCopy() + if *in == nil { + *out = nil + } else { + *out = (*in).DeepCopy() + } } if in.CurrentCPUUtilizationPercentage != nil { in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -239,23 +279,39 @@ func (in *MetricSpec) DeepCopyInto(out *MetricSpec) { *out = *in if in.Object != nil { in, out := &in.Object, &out.Object - *out = new(ObjectMetricSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ObjectMetricSource) + (*in).DeepCopyInto(*out) + } } if in.Pods != nil { in, out := &in.Pods, &out.Pods - *out = new(PodsMetricSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(PodsMetricSource) + (*in).DeepCopyInto(*out) + } } if in.Resource != nil { in, out := &in.Resource, &out.Resource - *out = new(ResourceMetricSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ResourceMetricSource) + (*in).DeepCopyInto(*out) + } } if in.External != nil { in, out := &in.External, &out.External - *out = new(ExternalMetricSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ExternalMetricSource) + (*in).DeepCopyInto(*out) + } } return } @@ -275,23 +331,39 @@ func (in *MetricStatus) DeepCopyInto(out *MetricStatus) { *out = *in if in.Object != nil { in, out := &in.Object, &out.Object - *out = new(ObjectMetricStatus) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ObjectMetricStatus) + (*in).DeepCopyInto(*out) + } } if in.Pods != nil { in, out := &in.Pods, &out.Pods - *out = new(PodsMetricStatus) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(PodsMetricStatus) + (*in).DeepCopyInto(*out) + } } if in.Resource != nil { in, out := &in.Resource, &out.Resource - *out = new(ResourceMetricStatus) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ResourceMetricStatus) + (*in).DeepCopyInto(*out) + } } if in.External != nil { in, out := &in.External, &out.External - *out = new(ExternalMetricStatus) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ExternalMetricStatus) + (*in).DeepCopyInto(*out) + } } return } @@ -381,13 +453,21 @@ func (in *ResourceMetricSource) DeepCopyInto(out *ResourceMetricSource) { *out = *in if in.TargetAverageUtilization != nil { in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.TargetAverageValue != nil { in, out := &in.TargetAverageValue, &out.TargetAverageValue - x := (*in).DeepCopy() - *out = &x + if *in == nil { + *out = nil + } else { + x := (*in).DeepCopy() + *out = &x + } } return } @@ -407,8 +487,12 @@ func (in *ResourceMetricStatus) DeepCopyInto(out *ResourceMetricStatus) { *out = *in if in.CurrentAverageUtilization != nil { in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() return diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go b/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go index e92b9a3ede..33f67913a9 100644 --- a/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go +++ b/vendor/k8s.io/api/autoscaling/v2beta1/generated.pb.go @@ -3941,96 +3941,95 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 1441 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcd, 0x8f, 0x1b, 0xc5, - 0x12, 0x5f, 0x7f, 0xec, 0x66, 0xd3, 0xde, 0xec, 0xe6, 0x75, 0xa2, 0xc4, 0xd9, 0xbc, 0xd8, 0xab, - 0xd1, 0xd3, 0x53, 0x88, 0xc8, 0x4c, 0xe2, 0x2c, 0x1f, 0x12, 0x42, 0x62, 0x6d, 0x20, 0x89, 0x58, - 0x27, 0xa1, 0x77, 0x13, 0x21, 0x08, 0x88, 0xf6, 0xb8, 0xe3, 0x6d, 0xd6, 0x33, 0x63, 0x75, 0xb7, - 0xad, 0x6c, 0x10, 0x12, 0x17, 0xee, 0x1c, 0xf8, 0xb8, 0x72, 0x46, 0x70, 0x85, 0x33, 0x48, 0x48, - 0x39, 0xe6, 0x18, 0x84, 0x64, 0x91, 0xe1, 0xbf, 0xc8, 0x09, 0x4d, 0x77, 0xcf, 0x78, 0xc6, 0xf6, - 0xac, 0x1d, 0xb3, 0x09, 0x70, 0x9b, 0xee, 0xaa, 0xfa, 0x55, 0x75, 0x55, 0x75, 0x75, 0xd5, 0x80, - 0xcb, 0xbb, 0x2f, 0x73, 0x93, 0x7a, 0xd6, 0x6e, 0xb7, 0x41, 0x98, 0x4b, 0x04, 0xe1, 0x56, 0x8f, - 0xb8, 0x4d, 0x8f, 0x59, 0x9a, 0x80, 0x3b, 0xd4, 0xc2, 0x5d, 0xe1, 0x71, 0x1b, 0xb7, 0xa9, 0xdb, - 0xb2, 0x7a, 0x95, 0x06, 0x11, 0xf8, 0xa2, 0xd5, 0x22, 0x2e, 0x61, 0x58, 0x90, 0xa6, 0xd9, 0x61, - 0x9e, 0xf0, 0x60, 0x49, 0xf1, 0x9b, 0xb8, 0x43, 0xcd, 0x18, 0xbf, 0xa9, 0xf9, 0x57, 0xcf, 0xb7, - 0xa8, 0xd8, 0xe9, 0x36, 0x4c, 0xdb, 0x73, 0xac, 0x96, 0xd7, 0xf2, 0x2c, 0x29, 0xd6, 0xe8, 0xde, - 0x91, 0x2b, 0xb9, 0x90, 0x5f, 0x0a, 0x6e, 0xd5, 0x88, 0xa9, 0xb7, 0x3d, 0x46, 0xac, 0xde, 0x88, - 0xca, 0xd5, 0xf5, 0x01, 0x8f, 0x83, 0xed, 0x1d, 0xea, 0x12, 0xb6, 0x67, 0x75, 0x76, 0x5b, 0x52, - 0x88, 0x11, 0xee, 0x75, 0x99, 0x4d, 0x9e, 0x48, 0x8a, 0x5b, 0x0e, 0x11, 0x78, 0x9c, 0x2e, 0x2b, - 0x4d, 0x8a, 0x75, 0x5d, 0x41, 0x9d, 0x51, 0x35, 0x2f, 0x4e, 0x12, 0xe0, 0xf6, 0x0e, 0x71, 0xf0, - 0x88, 0xdc, 0xa5, 0x34, 0xb9, 0xae, 0xa0, 0x6d, 0x8b, 0xba, 0x82, 0x0b, 0x36, 0x2c, 0x64, 0x7c, - 0x99, 0x01, 0xa7, 0x6b, 0xcc, 0xe3, 0xfc, 0x16, 0x61, 0x9c, 0x7a, 0xee, 0xf5, 0xc6, 0x47, 0xc4, - 0x16, 0x88, 0xdc, 0x21, 0x8c, 0xb8, 0x36, 0x81, 0x6b, 0x20, 0xbf, 0x4b, 0xdd, 0x66, 0x31, 0xb3, - 0x96, 0x39, 0x7b, 0xb8, 0xba, 0x74, 0xbf, 0x5f, 0x9e, 0xf3, 0xfb, 0xe5, 0xfc, 0x5b, 0xd4, 0x6d, - 0x22, 0x49, 0x09, 0x38, 0x5c, 0xec, 0x90, 0x62, 0x36, 0xc9, 0x71, 0x0d, 0x3b, 0x04, 0x49, 0x0a, - 0xac, 0x00, 0x80, 0x3b, 0x54, 0x2b, 0x28, 0xe6, 0x24, 0x1f, 0xd4, 0x7c, 0x60, 0xe3, 0xc6, 0x55, - 0x4d, 0x41, 0x31, 0x2e, 0xe3, 0xab, 0x1c, 0x38, 0xfe, 0xc6, 0x5d, 0x41, 0x98, 0x8b, 0xdb, 0x75, - 0x22, 0x18, 0xb5, 0xb7, 0x64, 0x50, 0x02, 0x30, 0x47, 0xae, 0x03, 0x05, 0xda, 0xac, 0x08, 0xac, - 0x1e, 0x51, 0x50, 0x8c, 0x0b, 0x7a, 0x60, 0x59, 0xad, 0xb6, 0x48, 0x9b, 0xd8, 0xc2, 0x63, 0xd2, - 0xd8, 0x42, 0xe5, 0x92, 0x39, 0x48, 0xbd, 0xc8, 0x65, 0x66, 0x67, 0xb7, 0x15, 0x6c, 0x70, 0x33, - 0x88, 0xa8, 0xd9, 0xbb, 0x68, 0x6e, 0xe2, 0x06, 0x69, 0x87, 0xa2, 0x55, 0xe8, 0xf7, 0xcb, 0xcb, - 0xf5, 0x04, 0x1c, 0x1a, 0x82, 0x87, 0x18, 0x14, 0x04, 0x66, 0x2d, 0x22, 0x6e, 0xe1, 0x76, 0x97, - 0xc8, 0x23, 0x17, 0x2a, 0xe6, 0x7e, 0xda, 0xcc, 0x30, 0xeb, 0xcc, 0xb7, 0xbb, 0xd8, 0x15, 0x54, - 0xec, 0x55, 0x57, 0xfc, 0x7e, 0xb9, 0xb0, 0x3d, 0x80, 0x41, 0x71, 0x4c, 0xd8, 0x03, 0x50, 0x2d, - 0x37, 0x7a, 0x84, 0xe1, 0x16, 0x51, 0x9a, 0xf2, 0x33, 0x69, 0x3a, 0xe1, 0xf7, 0xcb, 0x70, 0x7b, - 0x04, 0x0d, 0x8d, 0xd1, 0x60, 0x7c, 0x33, 0x1a, 0x18, 0x81, 0x45, 0x97, 0xff, 0x3b, 0x02, 0xb3, - 0x03, 0x96, 0xec, 0x2e, 0x63, 0xc4, 0xfd, 0x4b, 0x91, 0x39, 0xae, 0x8f, 0xb5, 0x54, 0x8b, 0x61, - 0xa1, 0x04, 0x32, 0xdc, 0x03, 0xc7, 0xf4, 0xfa, 0x00, 0x02, 0x74, 0xd2, 0xef, 0x97, 0x8f, 0xd5, - 0x46, 0xe1, 0xd0, 0x38, 0x1d, 0xc6, 0x4f, 0x59, 0x70, 0xf2, 0x8a, 0xc7, 0xe8, 0x3d, 0xcf, 0x15, - 0xb8, 0x7d, 0xc3, 0x6b, 0x6e, 0xe8, 0xaa, 0x4a, 0x18, 0xfc, 0x10, 0x2c, 0x06, 0xde, 0x6b, 0x62, - 0x81, 0x65, 0x8c, 0x0a, 0x95, 0x0b, 0xd3, 0xf9, 0x5a, 0x15, 0x86, 0x3a, 0x11, 0x78, 0x10, 0xd5, - 0xc1, 0x1e, 0x8a, 0x50, 0xe1, 0xfb, 0x20, 0xcf, 0x3b, 0xc4, 0xd6, 0x91, 0x7c, 0xc5, 0xdc, 0xbf, - 0xba, 0x9b, 0x29, 0x86, 0x6e, 0x75, 0x88, 0x3d, 0x28, 0x26, 0xc1, 0x0a, 0x49, 0x58, 0x48, 0xc0, - 0x02, 0x97, 0x09, 0xa7, 0x63, 0xf7, 0xea, 0xac, 0x0a, 0x24, 0x48, 0x75, 0x59, 0xab, 0x58, 0x50, - 0x6b, 0xa4, 0xc1, 0x8d, 0xcf, 0x72, 0x60, 0x2d, 0x45, 0xb2, 0xe6, 0xb9, 0x4d, 0x2a, 0xa8, 0xe7, - 0xc2, 0x2b, 0x20, 0x2f, 0xf6, 0x3a, 0x61, 0xb2, 0xaf, 0x87, 0xd6, 0x6e, 0xef, 0x75, 0xc8, 0xe3, - 0x7e, 0xf9, 0x7f, 0x93, 0xe4, 0x03, 0x3e, 0x24, 0x11, 0xe0, 0x66, 0x74, 0xaa, 0x6c, 0x02, 0x4b, - 0x9b, 0xf5, 0xb8, 0x5f, 0x1e, 0xf3, 0xac, 0x99, 0x11, 0x52, 0xd2, 0xf8, 0xa0, 0x36, 0xb4, 0x31, - 0x17, 0xdb, 0x0c, 0xbb, 0x5c, 0x69, 0xa2, 0x4e, 0x98, 0xeb, 0xe7, 0xa6, 0x0b, 0x77, 0x20, 0x51, - 0x5d, 0xd5, 0x56, 0xc0, 0xcd, 0x11, 0x34, 0x34, 0x46, 0x03, 0xfc, 0x3f, 0x58, 0x60, 0x04, 0x73, - 0xcf, 0x95, 0x69, 0x7e, 0x78, 0xe0, 0x5c, 0x24, 0x77, 0x91, 0xa6, 0xc2, 0xe7, 0xc0, 0x21, 0x87, - 0x70, 0x8e, 0x5b, 0xa4, 0x38, 0x2f, 0x19, 0x57, 0x34, 0xe3, 0xa1, 0xba, 0xda, 0x46, 0x21, 0xdd, - 0xf8, 0x35, 0x03, 0x4e, 0xa7, 0xf8, 0x71, 0x93, 0x72, 0x01, 0x6f, 0x8f, 0xe4, 0xb3, 0x39, 0x65, - 0xed, 0xa0, 0x5c, 0x65, 0xf3, 0x51, 0xad, 0x7b, 0x31, 0xdc, 0x89, 0xe5, 0xf2, 0x6d, 0x30, 0x4f, - 0x05, 0x71, 0x82, 0xa8, 0xe4, 0xce, 0x16, 0x2a, 0x2f, 0xcd, 0x98, 0x6b, 0xd5, 0x23, 0x5a, 0xc7, - 0xfc, 0xd5, 0x00, 0x0d, 0x29, 0x50, 0xe3, 0xb7, 0x6c, 0xea, 0xd9, 0x82, 0x84, 0x87, 0x1f, 0x83, - 0x65, 0xb9, 0x52, 0x95, 0x19, 0x91, 0x3b, 0xfa, 0x84, 0x13, 0xef, 0xd4, 0x3e, 0x0f, 0x7a, 0xf5, - 0x84, 0x36, 0x65, 0x79, 0x2b, 0x01, 0x8d, 0x86, 0x54, 0xc1, 0x8b, 0xa0, 0xe0, 0x50, 0x17, 0x91, - 0x4e, 0x9b, 0xda, 0x58, 0xa5, 0xe5, 0xbc, 0x7a, 0x92, 0xea, 0x83, 0x6d, 0x14, 0xe7, 0x81, 0x2f, - 0x80, 0x82, 0x83, 0xef, 0x46, 0x22, 0x39, 0x29, 0x72, 0x4c, 0xeb, 0x2b, 0xd4, 0x07, 0x24, 0x14, - 0xe7, 0x83, 0x37, 0x83, 0x6c, 0x08, 0xaa, 0x34, 0x2f, 0xe6, 0xa5, 0x9b, 0xcf, 0x4d, 0x3a, 0x9f, - 0x2e, 0xf2, 0x41, 0x89, 0x88, 0x65, 0x8e, 0x84, 0x40, 0x21, 0x96, 0xf1, 0x43, 0x1e, 0x9c, 0xd9, - 0xf7, 0xee, 0xc3, 0x37, 0x01, 0xf4, 0x1a, 0x9c, 0xb0, 0x1e, 0x69, 0x5e, 0x56, 0x6d, 0x51, 0xd0, - 0x9f, 0x04, 0x3e, 0xce, 0xa9, 0x27, 0xf1, 0xfa, 0x08, 0x15, 0x8d, 0x91, 0x80, 0x36, 0x38, 0x12, - 0x5c, 0x06, 0xe5, 0x50, 0xaa, 0x5b, 0xa1, 0x27, 0xbb, 0x69, 0xff, 0xf1, 0xfb, 0xe5, 0x23, 0x9b, - 0x71, 0x10, 0x94, 0xc4, 0x84, 0x1b, 0x60, 0x45, 0xd7, 0xfa, 0x21, 0x07, 0x9f, 0xd4, 0x1e, 0x58, - 0xa9, 0x25, 0xc9, 0x68, 0x98, 0x3f, 0x80, 0x68, 0x12, 0x4e, 0x19, 0x69, 0x46, 0x10, 0xf9, 0x24, - 0xc4, 0xeb, 0x49, 0x32, 0x1a, 0xe6, 0x87, 0x6d, 0xb0, 0xac, 0x51, 0xb5, 0xbf, 0x8b, 0xf3, 0x32, - 0x64, 0xcf, 0x4f, 0x19, 0x32, 0x55, 0x74, 0xa3, 0x1c, 0xac, 0x25, 0xb0, 0xd0, 0x10, 0x36, 0x14, - 0x00, 0xd8, 0x61, 0x89, 0xe3, 0xc5, 0x05, 0xa9, 0xe9, 0xb5, 0x19, 0xef, 0x60, 0x54, 0x2b, 0x07, - 0xcf, 0x57, 0xb4, 0xc5, 0x51, 0x4c, 0x8f, 0xf1, 0x6d, 0x0e, 0x80, 0x41, 0x86, 0xc1, 0xf5, 0x44, - 0x91, 0x5f, 0x1b, 0x2a, 0xf2, 0x47, 0xe3, 0xcd, 0x69, 0xac, 0xa0, 0xdf, 0x02, 0x0b, 0x9e, 0xbc, - 0x79, 0x3a, 0x19, 0x2a, 0x93, 0xcc, 0x8e, 0xde, 0xd2, 0x08, 0xad, 0x0a, 0x82, 0xd2, 0xa9, 0xef, - 0xaf, 0x46, 0x83, 0xd7, 0x40, 0xbe, 0xe3, 0x35, 0xc3, 0xc7, 0xef, 0xc2, 0x24, 0xd4, 0x1b, 0x5e, - 0x93, 0x27, 0x30, 0x17, 0x03, 0xdb, 0x83, 0x5d, 0x24, 0x71, 0xe0, 0x07, 0x60, 0x31, 0x6c, 0x37, - 0x74, 0x6f, 0xb2, 0x3e, 0x09, 0x13, 0x69, 0xfe, 0x04, 0xee, 0x52, 0x50, 0x41, 0x43, 0x0a, 0x8a, - 0x30, 0x03, 0x7c, 0xa2, 0xbb, 0x45, 0x59, 0xeb, 0xa7, 0xc0, 0x1f, 0xd7, 0xf6, 0x2b, 0xfc, 0x90, - 0x82, 0x22, 0x4c, 0xe3, 0xbb, 0x1c, 0x58, 0x4a, 0xb4, 0xa1, 0x7f, 0x47, 0xb8, 0x54, 0x56, 0x1f, - 0x6c, 0xb8, 0x14, 0xe6, 0xc1, 0x87, 0x4b, 0xe1, 0x3e, 0xbd, 0x70, 0xc5, 0xf0, 0xc7, 0x84, 0xeb, - 0x8b, 0x2c, 0x80, 0xa3, 0x99, 0x0e, 0x6d, 0xb0, 0xa0, 0x46, 0x8d, 0x83, 0x78, 0xe1, 0xa2, 0xae, - 0x43, 0x3f, 0x66, 0x1a, 0x7a, 0x68, 0x40, 0xc9, 0x4e, 0x35, 0xa0, 0x90, 0x83, 0x18, 0xe4, 0xa2, - 0x27, 0x30, 0x6d, 0x98, 0x33, 0xbe, 0x1e, 0x76, 0x8b, 0xca, 0xe5, 0x7f, 0xac, 0x5b, 0x9e, 0xd9, - 0x18, 0x65, 0xfc, 0x9c, 0x01, 0x47, 0x87, 0x8b, 0xd8, 0x4c, 0xa3, 0xe6, 0xbd, 0xb1, 0xf3, 0x72, - 0x76, 0x26, 0xc3, 0xa3, 0xbe, 0x78, 0xca, 0x99, 0xf9, 0x97, 0xe4, 0x21, 0x66, 0x9f, 0x97, 0x3f, - 0x19, 0x3f, 0x54, 0xce, 0x76, 0x8a, 0xd3, 0x5a, 0xd9, 0xf4, 0x83, 0xe5, 0xf7, 0x59, 0x70, 0x7c, - 0x5c, 0xf5, 0x87, 0x35, 0xfd, 0x0f, 0x48, 0x9d, 0xc2, 0x8a, 0xff, 0x03, 0x7a, 0xdc, 0x2f, 0x97, - 0xc7, 0x8c, 0x2e, 0x21, 0x4c, 0xec, 0x37, 0xd1, 0x3b, 0xa0, 0x98, 0xf0, 0xdd, 0x4d, 0x41, 0xdb, - 0xf4, 0x9e, 0x6a, 0xca, 0x54, 0xfb, 0xf9, 0x5f, 0xbf, 0x5f, 0x2e, 0x6e, 0xa7, 0xf0, 0xa0, 0x54, - 0xe9, 0x94, 0x7f, 0x25, 0xb9, 0xa7, 0xfe, 0xaf, 0xe4, 0xc7, 0x51, 0x7f, 0xa9, 0xd8, 0x1f, 0x88, - 0xbf, 0xde, 0x03, 0xa7, 0x92, 0x41, 0x1a, 0x75, 0xd8, 0x19, 0xbf, 0x5f, 0x3e, 0x55, 0x4b, 0x63, - 0x42, 0xe9, 0xf2, 0x69, 0x99, 0x96, 0x7b, 0x36, 0x99, 0x56, 0x3d, 0x7f, 0xff, 0x51, 0x69, 0xee, - 0xc1, 0xa3, 0xd2, 0xdc, 0xc3, 0x47, 0xa5, 0xb9, 0x4f, 0xfd, 0x52, 0xe6, 0xbe, 0x5f, 0xca, 0x3c, - 0xf0, 0x4b, 0x99, 0x87, 0x7e, 0x29, 0xf3, 0xbb, 0x5f, 0xca, 0x7c, 0xfe, 0x47, 0x69, 0xee, 0xdd, - 0x43, 0xba, 0xee, 0xfd, 0x19, 0x00, 0x00, 0xff, 0xff, 0x91, 0x09, 0xa9, 0x38, 0x8c, 0x16, 0x00, - 0x00, + // 1426 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcb, 0x8f, 0x1b, 0x45, + 0x13, 0x5f, 0x3f, 0x76, 0xb3, 0x69, 0x6f, 0x76, 0xf3, 0x75, 0xa2, 0xc4, 0xd9, 0x7c, 0xf1, 0xac, + 0x46, 0x08, 0x85, 0x88, 0xcc, 0x24, 0x66, 0x79, 0x48, 0x08, 0x89, 0xb5, 0x81, 0x24, 0x62, 0x9d, + 0x84, 0xde, 0x4d, 0x84, 0x20, 0x20, 0xda, 0xe3, 0x8e, 0xb7, 0x59, 0xcf, 0x8c, 0x35, 0xdd, 0xb6, + 0xb2, 0x41, 0x48, 0x5c, 0xb8, 0x73, 0xe0, 0x71, 0xe5, 0x8c, 0xe0, 0x0a, 0x67, 0x90, 0x90, 0x72, + 0xcc, 0x31, 0x08, 0xc9, 0x22, 0xc3, 0x7f, 0x91, 0x13, 0xea, 0xc7, 0x8c, 0x67, 0xfc, 0x58, 0x3b, + 0x66, 0x13, 0xe0, 0x36, 0xdd, 0x55, 0xf5, 0xab, 0xea, 0xaa, 0xea, 0xea, 0xaa, 0x01, 0x97, 0x76, + 0x5f, 0x61, 0x16, 0xf5, 0xed, 0xdd, 0x4e, 0x9d, 0x04, 0x1e, 0xe1, 0x84, 0xd9, 0x5d, 0xe2, 0x35, + 0xfc, 0xc0, 0xd6, 0x04, 0xdc, 0xa6, 0x36, 0xee, 0x70, 0x9f, 0x39, 0xb8, 0x45, 0xbd, 0xa6, 0xdd, + 0x2d, 0xd7, 0x09, 0xc7, 0x17, 0xed, 0x26, 0xf1, 0x48, 0x80, 0x39, 0x69, 0x58, 0xed, 0xc0, 0xe7, + 0x3e, 0x2c, 0x29, 0x7e, 0x0b, 0xb7, 0xa9, 0x95, 0xe0, 0xb7, 0x34, 0xff, 0xea, 0xf9, 0x26, 0xe5, + 0x3b, 0x9d, 0xba, 0xe5, 0xf8, 0xae, 0xdd, 0xf4, 0x9b, 0xbe, 0x2d, 0xc5, 0xea, 0x9d, 0xdb, 0x72, + 0x25, 0x17, 0xf2, 0x4b, 0xc1, 0xad, 0x9a, 0x09, 0xf5, 0x8e, 0x1f, 0x10, 0xbb, 0x3b, 0xa4, 0x72, + 0x75, 0xbd, 0xcf, 0xe3, 0x62, 0x67, 0x87, 0x7a, 0x24, 0xd8, 0xb3, 0xdb, 0xbb, 0x4d, 0x29, 0x14, + 0x10, 0xe6, 0x77, 0x02, 0x87, 0x3c, 0x96, 0x14, 0xb3, 0x5d, 0xc2, 0xf1, 0x28, 0x5d, 0xf6, 0x38, + 0xa9, 0xa0, 0xe3, 0x71, 0xea, 0x0e, 0xab, 0x79, 0x69, 0x92, 0x00, 0x73, 0x76, 0x88, 0x8b, 0x07, + 0xe5, 0xcc, 0xaf, 0x32, 0xe0, 0x74, 0x35, 0xf0, 0x19, 0xbb, 0x49, 0x02, 0x46, 0x7d, 0xef, 0x5a, + 0xfd, 0x63, 0xe2, 0x70, 0x44, 0x6e, 0x93, 0x80, 0x78, 0x0e, 0x81, 0x6b, 0x20, 0xbf, 0x4b, 0xbd, + 0x46, 0x31, 0xb3, 0x96, 0x39, 0x7b, 0xb8, 0xb2, 0x74, 0xaf, 0x67, 0xcc, 0x85, 0x3d, 0x23, 0xff, + 0x36, 0xf5, 0x1a, 0x48, 0x52, 0x04, 0x87, 0x87, 0x5d, 0x52, 0xcc, 0xa6, 0x39, 0xae, 0x62, 0x97, + 0x20, 0x49, 0x81, 0x65, 0x00, 0x70, 0x9b, 0x6a, 0x05, 0xc5, 0x9c, 0xe4, 0x83, 0x9a, 0x0f, 0x6c, + 0x5c, 0xbf, 0xa2, 0x29, 0x28, 0xc1, 0x65, 0x7e, 0x9d, 0x03, 0xc7, 0xdf, 0xbc, 0xc3, 0x49, 0xe0, + 0xe1, 0x56, 0x8d, 0xf0, 0x80, 0x3a, 0x5b, 0xd2, 0xbf, 0x02, 0xcc, 0x95, 0x6b, 0xa1, 0x40, 0x9b, + 0x15, 0x83, 0xd5, 0x62, 0x0a, 0x4a, 0x70, 0x41, 0x1f, 0x2c, 0xab, 0xd5, 0x16, 0x69, 0x11, 0x87, + 0xfb, 0x81, 0x34, 0xb6, 0x50, 0x7e, 0xc1, 0xea, 0x67, 0x51, 0xec, 0x35, 0xab, 0xbd, 0xdb, 0x14, + 0x1b, 0xcc, 0x12, 0xc1, 0xb1, 0xba, 0x17, 0xad, 0x4d, 0x5c, 0x27, 0xad, 0x48, 0xb4, 0x02, 0xc3, + 0x9e, 0xb1, 0x5c, 0x4b, 0xc1, 0xa1, 0x01, 0x78, 0x88, 0x41, 0x81, 0xe3, 0xa0, 0x49, 0xf8, 0x4d, + 0xdc, 0xea, 0x10, 0x79, 0xe4, 0x42, 0xd9, 0xda, 0x4f, 0x9b, 0x15, 0x25, 0x90, 0xf5, 0x4e, 0x07, + 0x7b, 0x9c, 0xf2, 0xbd, 0xca, 0x4a, 0xd8, 0x33, 0x0a, 0xdb, 0x7d, 0x18, 0x94, 0xc4, 0x84, 0x5d, + 0x00, 0xd5, 0x72, 0xa3, 0x4b, 0x02, 0xdc, 0x24, 0x4a, 0x53, 0x7e, 0x26, 0x4d, 0x27, 0xc2, 0x9e, + 0x01, 0xb7, 0x87, 0xd0, 0xd0, 0x08, 0x0d, 0xe6, 0xb7, 0xc3, 0x81, 0xe1, 0x98, 0x77, 0xd8, 0x7f, + 0x23, 0x30, 0x3b, 0x60, 0xc9, 0xe9, 0x04, 0x01, 0xf1, 0xfe, 0x56, 0x64, 0x8e, 0xeb, 0x63, 0x2d, + 0x55, 0x13, 0x58, 0x28, 0x85, 0x0c, 0xf7, 0xc0, 0x31, 0xbd, 0x3e, 0x80, 0x00, 0x9d, 0x0c, 0x7b, + 0xc6, 0xb1, 0xea, 0x30, 0x1c, 0x1a, 0xa5, 0xc3, 0xfc, 0x39, 0x0b, 0x4e, 0x5e, 0xf6, 0x03, 0x7a, + 0xd7, 0xf7, 0x38, 0x6e, 0x5d, 0xf7, 0x1b, 0x1b, 0xba, 0x40, 0x92, 0x00, 0x7e, 0x04, 0x16, 0x85, + 0xf7, 0x1a, 0x98, 0x63, 0x19, 0xa3, 0x42, 0xf9, 0xc2, 0x74, 0xbe, 0x56, 0x85, 0xa1, 0x46, 0x38, + 0xee, 0x47, 0xb5, 0xbf, 0x87, 0x62, 0x54, 0xf8, 0x01, 0xc8, 0xb3, 0x36, 0x71, 0x74, 0x24, 0x5f, + 0xb5, 0xf6, 0x2f, 0xd4, 0xd6, 0x18, 0x43, 0xb7, 0xda, 0xc4, 0xe9, 0x17, 0x13, 0xb1, 0x42, 0x12, + 0x16, 0x12, 0xb0, 0xc0, 0x64, 0xc2, 0xe9, 0xd8, 0xbd, 0x36, 0xab, 0x02, 0x09, 0x52, 0x59, 0xd6, + 0x2a, 0x16, 0xd4, 0x1a, 0x69, 0x70, 0xf3, 0xf3, 0x1c, 0x58, 0x1b, 0x23, 0x59, 0xf5, 0xbd, 0x06, + 0xe5, 0xd4, 0xf7, 0xe0, 0x65, 0x90, 0xe7, 0x7b, 0xed, 0x28, 0xd9, 0xd7, 0x23, 0x6b, 0xb7, 0xf7, + 0xda, 0xe4, 0x51, 0xcf, 0x78, 0x66, 0x92, 0xbc, 0xe0, 0x43, 0x12, 0x01, 0x6e, 0xc6, 0xa7, 0xca, + 0xa6, 0xb0, 0xb4, 0x59, 0x8f, 0x7a, 0xc6, 0x88, 0x17, 0xca, 0x8a, 0x91, 0xd2, 0xc6, 0x8b, 0xda, + 0xd0, 0xc2, 0x8c, 0x6f, 0x07, 0xd8, 0x63, 0x4a, 0x13, 0x75, 0xa3, 0x5c, 0x3f, 0x37, 0x5d, 0xb8, + 0x85, 0x44, 0x65, 0x55, 0x5b, 0x01, 0x37, 0x87, 0xd0, 0xd0, 0x08, 0x0d, 0xf0, 0x59, 0xb0, 0x10, + 0x10, 0xcc, 0x7c, 0x4f, 0xa6, 0xf9, 0xe1, 0xbe, 0x73, 0x91, 0xdc, 0x45, 0x9a, 0x0a, 0x9f, 0x03, + 0x87, 0x5c, 0xc2, 0x18, 0x6e, 0x92, 0xe2, 0xbc, 0x64, 0x5c, 0xd1, 0x8c, 0x87, 0x6a, 0x6a, 0x1b, + 0x45, 0x74, 0xf3, 0xb7, 0x0c, 0x38, 0x3d, 0xc6, 0x8f, 0x9b, 0x94, 0x71, 0x78, 0x6b, 0x28, 0x9f, + 0xad, 0x29, 0x6b, 0x07, 0x65, 0x2a, 0x9b, 0x8f, 0x6a, 0xdd, 0x8b, 0xd1, 0x4e, 0x22, 0x97, 0x6f, + 0x81, 0x79, 0xca, 0x89, 0x2b, 0xa2, 0x92, 0x3b, 0x5b, 0x28, 0xbf, 0x3c, 0x63, 0xae, 0x55, 0x8e, + 0x68, 0x1d, 0xf3, 0x57, 0x04, 0x1a, 0x52, 0xa0, 0xe6, 0xef, 0xd9, 0xb1, 0x67, 0x13, 0x09, 0x0f, + 0x3f, 0x01, 0xcb, 0x72, 0xa5, 0x2a, 0x33, 0x22, 0xb7, 0xf5, 0x09, 0x27, 0xde, 0xa9, 0x7d, 0x1e, + 0xf4, 0xca, 0x09, 0x6d, 0xca, 0xf2, 0x56, 0x0a, 0x1a, 0x0d, 0xa8, 0x82, 0x17, 0x41, 0xc1, 0xa5, + 0x1e, 0x22, 0xed, 0x16, 0x75, 0xb0, 0x4a, 0xcb, 0x79, 0xf5, 0x24, 0xd5, 0xfa, 0xdb, 0x28, 0xc9, + 0x03, 0x5f, 0x04, 0x05, 0x17, 0xdf, 0x89, 0x45, 0x72, 0x52, 0xe4, 0x98, 0xd6, 0x57, 0xa8, 0xf5, + 0x49, 0x28, 0xc9, 0x07, 0x6f, 0x88, 0x6c, 0x10, 0x55, 0x9a, 0x15, 0xf3, 0xd2, 0xcd, 0xe7, 0x26, + 0x9d, 0x4f, 0x17, 0x79, 0x51, 0x22, 0x12, 0x99, 0x23, 0x21, 0x50, 0x84, 0x65, 0xfe, 0x98, 0x07, + 0x67, 0xf6, 0xbd, 0xfb, 0xf0, 0x2d, 0x00, 0xfd, 0x3a, 0x23, 0x41, 0x97, 0x34, 0x2e, 0xa9, 0xb6, + 0x48, 0xf4, 0x27, 0xc2, 0xc7, 0x39, 0xf5, 0x24, 0x5e, 0x1b, 0xa2, 0xa2, 0x11, 0x12, 0xd0, 0x01, + 0x47, 0xc4, 0x65, 0x50, 0x0e, 0xa5, 0xba, 0x15, 0x7a, 0xbc, 0x9b, 0xf6, 0xbf, 0xb0, 0x67, 0x1c, + 0xd9, 0x4c, 0x82, 0xa0, 0x34, 0x26, 0xdc, 0x00, 0x2b, 0xba, 0xd6, 0x0f, 0x38, 0xf8, 0xa4, 0xf6, + 0xc0, 0x4a, 0x35, 0x4d, 0x46, 0x83, 0xfc, 0x02, 0xa2, 0x41, 0x18, 0x0d, 0x48, 0x23, 0x86, 0xc8, + 0xa7, 0x21, 0xde, 0x48, 0x93, 0xd1, 0x20, 0x3f, 0x6c, 0x81, 0x65, 0x8d, 0xaa, 0xfd, 0x5d, 0x9c, + 0x97, 0x21, 0x7b, 0x7e, 0xca, 0x90, 0xa9, 0xa2, 0x1b, 0xe7, 0x60, 0x35, 0x85, 0x85, 0x06, 0xb0, + 0x21, 0x07, 0xc0, 0x89, 0x4a, 0x1c, 0x2b, 0x2e, 0x48, 0x4d, 0xaf, 0xcf, 0x78, 0x07, 0xe3, 0x5a, + 0xd9, 0x7f, 0xbe, 0xe2, 0x2d, 0x86, 0x12, 0x7a, 0xcc, 0xef, 0x72, 0x00, 0xf4, 0x33, 0x0c, 0xae, + 0xa7, 0x8a, 0xfc, 0xda, 0x40, 0x91, 0x3f, 0x9a, 0x6c, 0x4e, 0x13, 0x05, 0xfd, 0x26, 0x58, 0xf0, + 0xe5, 0xcd, 0xd3, 0xc9, 0x50, 0x9e, 0x64, 0x76, 0xfc, 0x96, 0xc6, 0x68, 0x15, 0x20, 0x4a, 0xa7, + 0xbe, 0xbf, 0x1a, 0x0d, 0x5e, 0x05, 0xf9, 0xb6, 0xdf, 0x88, 0x1e, 0xbf, 0x0b, 0x93, 0x50, 0xaf, + 0xfb, 0x0d, 0x96, 0xc2, 0x5c, 0x14, 0xb6, 0x8b, 0x5d, 0x24, 0x71, 0xe0, 0x87, 0x60, 0x31, 0x6a, + 0x37, 0x74, 0x6f, 0xb2, 0x3e, 0x09, 0x13, 0x69, 0xfe, 0x14, 0xee, 0x92, 0xa8, 0xa0, 0x11, 0x05, + 0xc5, 0x98, 0x02, 0x9f, 0xe8, 0x6e, 0x51, 0xd6, 0xfa, 0x29, 0xf0, 0x47, 0xb5, 0xfd, 0x0a, 0x3f, + 0xa2, 0xa0, 0x18, 0xd3, 0xfc, 0x3e, 0x07, 0x96, 0x52, 0x6d, 0xe8, 0x3f, 0x11, 0x2e, 0x95, 0xd5, + 0x07, 0x1b, 0x2e, 0x85, 0x79, 0xf0, 0xe1, 0x52, 0xb8, 0x4f, 0x2e, 0x5c, 0x09, 0xfc, 0x11, 0xe1, + 0xfa, 0x32, 0x0b, 0xe0, 0x70, 0xa6, 0x43, 0x07, 0x2c, 0xa8, 0x51, 0xe3, 0x20, 0x5e, 0xb8, 0xb8, + 0xeb, 0xd0, 0x8f, 0x99, 0x86, 0x1e, 0x18, 0x50, 0xb2, 0x53, 0x0d, 0x28, 0xe4, 0x20, 0x06, 0xb9, + 0xf8, 0x09, 0x1c, 0x37, 0xcc, 0x99, 0xdf, 0x0c, 0xba, 0x45, 0xe5, 0xf2, 0xbf, 0xd6, 0x2d, 0x4f, + 0x6d, 0x8c, 0x32, 0x7f, 0xc9, 0x80, 0xa3, 0x83, 0x45, 0x6c, 0xa6, 0x51, 0xf3, 0xee, 0xc8, 0x79, + 0x39, 0x3b, 0x93, 0xe1, 0x71, 0x5f, 0x3c, 0xe5, 0xcc, 0xfc, 0x6b, 0xfa, 0x10, 0xb3, 0xcf, 0xcb, + 0x9f, 0x8e, 0x1e, 0x2a, 0x67, 0x3b, 0xc5, 0x69, 0xad, 0x6c, 0xfa, 0xc1, 0xf2, 0x87, 0x2c, 0x38, + 0x3e, 0xaa, 0xfa, 0xc3, 0xaa, 0xfe, 0x07, 0xa4, 0x4e, 0x61, 0x27, 0xff, 0x01, 0x3d, 0xea, 0x19, + 0xc6, 0x88, 0xd1, 0x25, 0x82, 0x49, 0xfc, 0x26, 0x7a, 0x17, 0x14, 0x53, 0xbe, 0xbb, 0xc1, 0x69, + 0x8b, 0xde, 0x55, 0x4d, 0x99, 0x6a, 0x3f, 0xff, 0x1f, 0xf6, 0x8c, 0xe2, 0xf6, 0x18, 0x1e, 0x34, + 0x56, 0x7a, 0xcc, 0xbf, 0x92, 0xdc, 0x13, 0xff, 0x57, 0xf2, 0xd3, 0xb0, 0xbf, 0x54, 0xec, 0x0f, + 0xc4, 0x5f, 0xef, 0x83, 0x53, 0xe9, 0x20, 0x0d, 0x3b, 0xec, 0x4c, 0xd8, 0x33, 0x4e, 0x55, 0xc7, + 0x31, 0xa1, 0xf1, 0xf2, 0xe3, 0x32, 0x2d, 0xf7, 0x74, 0x32, 0xad, 0x72, 0xfe, 0xde, 0xc3, 0xd2, + 0xdc, 0xfd, 0x87, 0xa5, 0xb9, 0x07, 0x0f, 0x4b, 0x73, 0x9f, 0x85, 0xa5, 0xcc, 0xbd, 0xb0, 0x94, + 0xb9, 0x1f, 0x96, 0x32, 0x0f, 0xc2, 0x52, 0xe6, 0x8f, 0xb0, 0x94, 0xf9, 0xe2, 0xcf, 0xd2, 0xdc, + 0x7b, 0x87, 0x74, 0xdd, 0xfb, 0x2b, 0x00, 0x00, 0xff, 0xff, 0xe1, 0xb1, 0xdd, 0xcd, 0x57, 0x16, + 0x00, 0x00, } diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto b/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto index 0cd10143b2..5cc6063d01 100644 --- a/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto +++ b/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto @@ -26,7 +26,6 @@ import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v2beta1"; diff --git a/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go index 41da778fab..fd46bd8921 100644 --- a/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/autoscaling/v2beta1/zz_generated.deepcopy.go @@ -46,18 +46,30 @@ func (in *ExternalMetricSource) DeepCopyInto(out *ExternalMetricSource) { *out = *in if in.MetricSelector != nil { in, out := &in.MetricSelector, &out.MetricSelector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } if in.TargetValue != nil { in, out := &in.TargetValue, &out.TargetValue - x := (*in).DeepCopy() - *out = &x + if *in == nil { + *out = nil + } else { + x := (*in).DeepCopy() + *out = &x + } } if in.TargetAverageValue != nil { in, out := &in.TargetAverageValue, &out.TargetAverageValue - x := (*in).DeepCopy() - *out = &x + if *in == nil { + *out = nil + } else { + x := (*in).DeepCopy() + *out = &x + } } return } @@ -77,14 +89,22 @@ func (in *ExternalMetricStatus) DeepCopyInto(out *ExternalMetricStatus) { *out = *in if in.MetricSelector != nil { in, out := &in.MetricSelector, &out.MetricSelector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } out.CurrentValue = in.CurrentValue.DeepCopy() if in.CurrentAverageValue != nil { in, out := &in.CurrentAverageValue, &out.CurrentAverageValue - x := (*in).DeepCopy() - *out = &x + if *in == nil { + *out = nil + } else { + x := (*in).DeepCopy() + *out = &x + } } return } @@ -183,8 +203,12 @@ func (in *HorizontalPodAutoscalerSpec) DeepCopyInto(out *HorizontalPodAutoscaler out.ScaleTargetRef = in.ScaleTargetRef if in.MinReplicas != nil { in, out := &in.MinReplicas, &out.MinReplicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Metrics != nil { in, out := &in.Metrics, &out.Metrics @@ -211,12 +235,20 @@ func (in *HorizontalPodAutoscalerStatus) DeepCopyInto(out *HorizontalPodAutoscal *out = *in if in.ObservedGeneration != nil { in, out := &in.ObservedGeneration, &out.ObservedGeneration - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.LastScaleTime != nil { in, out := &in.LastScaleTime, &out.LastScaleTime - *out = (*in).DeepCopy() + if *in == nil { + *out = nil + } else { + *out = (*in).DeepCopy() + } } if in.CurrentMetrics != nil { in, out := &in.CurrentMetrics, &out.CurrentMetrics @@ -250,23 +282,39 @@ func (in *MetricSpec) DeepCopyInto(out *MetricSpec) { *out = *in if in.Object != nil { in, out := &in.Object, &out.Object - *out = new(ObjectMetricSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ObjectMetricSource) + (*in).DeepCopyInto(*out) + } } if in.Pods != nil { in, out := &in.Pods, &out.Pods - *out = new(PodsMetricSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(PodsMetricSource) + (*in).DeepCopyInto(*out) + } } if in.Resource != nil { in, out := &in.Resource, &out.Resource - *out = new(ResourceMetricSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ResourceMetricSource) + (*in).DeepCopyInto(*out) + } } if in.External != nil { in, out := &in.External, &out.External - *out = new(ExternalMetricSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ExternalMetricSource) + (*in).DeepCopyInto(*out) + } } return } @@ -286,23 +334,39 @@ func (in *MetricStatus) DeepCopyInto(out *MetricStatus) { *out = *in if in.Object != nil { in, out := &in.Object, &out.Object - *out = new(ObjectMetricStatus) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ObjectMetricStatus) + (*in).DeepCopyInto(*out) + } } if in.Pods != nil { in, out := &in.Pods, &out.Pods - *out = new(PodsMetricStatus) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(PodsMetricStatus) + (*in).DeepCopyInto(*out) + } } if in.Resource != nil { in, out := &in.Resource, &out.Resource - *out = new(ResourceMetricStatus) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ResourceMetricStatus) + (*in).DeepCopyInto(*out) + } } if in.External != nil { in, out := &in.External, &out.External - *out = new(ExternalMetricStatus) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ExternalMetricStatus) + (*in).DeepCopyInto(*out) + } } return } @@ -392,13 +456,21 @@ func (in *ResourceMetricSource) DeepCopyInto(out *ResourceMetricSource) { *out = *in if in.TargetAverageUtilization != nil { in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.TargetAverageValue != nil { in, out := &in.TargetAverageValue, &out.TargetAverageValue - x := (*in).DeepCopy() - *out = &x + if *in == nil { + *out = nil + } else { + x := (*in).DeepCopy() + *out = &x + } } return } @@ -418,8 +490,12 @@ func (in *ResourceMetricStatus) DeepCopyInto(out *ResourceMetricStatus) { *out = *in if in.CurrentAverageUtilization != nil { in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy() return diff --git a/vendor/k8s.io/api/batch/v1/generated.pb.go b/vendor/k8s.io/api/batch/v1/generated.pb.go index 176567acf7..aa5cdf89b6 100644 --- a/vendor/k8s.io/api/batch/v1/generated.pb.go +++ b/vendor/k8s.io/api/batch/v1/generated.pb.go @@ -1554,62 +1554,61 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 907 bytes of a gzipped FileDescriptorProto + // 893 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0x41, 0x6f, 0xe3, 0x44, - 0x18, 0x8d, 0x9b, 0xa6, 0x4d, 0x26, 0x69, 0x77, 0x19, 0x54, 0x29, 0x54, 0xc8, 0x59, 0x82, 0x84, - 0x0a, 0x12, 0x36, 0xe9, 0x56, 0x08, 0x21, 0x40, 0xc2, 0x45, 0x2b, 0x51, 0xa5, 0xda, 0x32, 0x29, - 0x42, 0x42, 0x20, 0x31, 0xb6, 0xbf, 0xa4, 0x43, 0x6c, 0x8f, 0xe5, 0x99, 0x44, 0xea, 0x8d, 0x9f, - 0xc0, 0x8f, 0x40, 0xfc, 0x14, 0xd4, 0xe3, 0x1e, 0xf7, 0x14, 0x51, 0xc3, 0x9d, 0xfb, 0x9e, 0xd0, - 0x8c, 0x1d, 0xdb, 0x69, 0x13, 0xd1, 0xe5, 0x66, 0xbf, 0x79, 0xef, 0x7d, 0x33, 0xf3, 0xbd, 0xf9, - 0xd0, 0x67, 0xd3, 0x4f, 0x84, 0xc5, 0xb8, 0x3d, 0x9d, 0xb9, 0x90, 0x44, 0x20, 0x41, 0xd8, 0x73, - 0x88, 0x7c, 0x9e, 0xd8, 0xf9, 0x02, 0x8d, 0x99, 0xed, 0x52, 0xe9, 0x5d, 0xd9, 0xf3, 0x81, 0x3d, - 0x81, 0x08, 0x12, 0x2a, 0xc1, 0xb7, 0xe2, 0x84, 0x4b, 0x8e, 0xdf, 0xcc, 0x48, 0x16, 0x8d, 0x99, - 0xa5, 0x49, 0xd6, 0x7c, 0x70, 0xf8, 0xe1, 0x84, 0xc9, 0xab, 0x99, 0x6b, 0x79, 0x3c, 0xb4, 0x27, - 0x7c, 0xc2, 0x6d, 0xcd, 0x75, 0x67, 0x63, 0xfd, 0xa7, 0x7f, 0xf4, 0x57, 0xe6, 0x71, 0xd8, 0xaf, - 0x14, 0xf2, 0x78, 0x02, 0x6b, 0xea, 0x1c, 0x9e, 0x94, 0x9c, 0x90, 0x7a, 0x57, 0x2c, 0x82, 0xe4, - 0xda, 0x8e, 0xa7, 0x13, 0x05, 0x08, 0x3b, 0x04, 0x49, 0xd7, 0xa9, 0xec, 0x4d, 0xaa, 0x64, 0x16, - 0x49, 0x16, 0xc2, 0x3d, 0xc1, 0xc7, 0xff, 0x25, 0x10, 0xde, 0x15, 0x84, 0xf4, 0x9e, 0xee, 0xe9, - 0x26, 0xdd, 0x4c, 0xb2, 0xc0, 0x66, 0x91, 0x14, 0x32, 0xb9, 0x2b, 0xea, 0xff, 0x63, 0xa0, 0xfa, - 0x19, 0x77, 0xf1, 0x4f, 0xa8, 0xa9, 0x0e, 0xe0, 0x53, 0x49, 0xbb, 0xc6, 0x13, 0xe3, 0xa8, 0x7d, - 0xfc, 0x91, 0x55, 0x5e, 0x6b, 0xe1, 0x67, 0xc5, 0xd3, 0x89, 0x02, 0x84, 0xa5, 0xd8, 0xd6, 0x7c, - 0x60, 0x3d, 0x77, 0x7f, 0x06, 0x4f, 0x9e, 0x83, 0xa4, 0x0e, 0xbe, 0x59, 0xf4, 0x6a, 0xe9, 0xa2, - 0x87, 0x4a, 0x8c, 0x14, 0xae, 0xf8, 0x0b, 0xb4, 0x2d, 0x62, 0xf0, 0xba, 0x5b, 0xda, 0xfd, 0x6d, - 0x6b, 0x4d, 0xd3, 0xac, 0x33, 0xee, 0x8e, 0x62, 0xf0, 0x9c, 0x4e, 0xee, 0xb4, 0xad, 0xfe, 0x88, - 0xd6, 0xe1, 0x67, 0x68, 0x47, 0x48, 0x2a, 0x67, 0xa2, 0x5b, 0xd7, 0x0e, 0xe6, 0x46, 0x07, 0xcd, - 0x72, 0xf6, 0x73, 0x8f, 0x9d, 0xec, 0x9f, 0xe4, 0xea, 0xfe, 0x1f, 0x75, 0xd4, 0x39, 0xe3, 0xee, - 0x29, 0x8f, 0x7c, 0x26, 0x19, 0x8f, 0xf0, 0x09, 0xda, 0x96, 0xd7, 0x31, 0xe8, 0x63, 0xb7, 0x9c, - 0x27, 0xcb, 0xd2, 0x97, 0xd7, 0x31, 0xbc, 0x5a, 0xf4, 0x1e, 0x57, 0xb9, 0x0a, 0x23, 0x9a, 0x8d, - 0x87, 0xc5, 0x76, 0xb6, 0xb4, 0xee, 0x64, 0xb5, 0xdc, 0xab, 0x45, 0x6f, 0x4d, 0xa4, 0xac, 0xc2, - 0x69, 0x75, 0x53, 0x78, 0x82, 0xf6, 0x02, 0x2a, 0xe4, 0x45, 0xc2, 0x5d, 0xb8, 0x64, 0x21, 0xe4, - 0x67, 0xfc, 0xe0, 0x61, 0x3d, 0x50, 0x0a, 0xe7, 0x20, 0xdf, 0xc0, 0xde, 0xb0, 0x6a, 0x44, 0x56, - 0x7d, 0xf1, 0x1c, 0x61, 0x05, 0x5c, 0x26, 0x34, 0x12, 0xd9, 0x91, 0x54, 0xb5, 0xed, 0xd7, 0xae, - 0x76, 0x98, 0x57, 0xc3, 0xc3, 0x7b, 0x6e, 0x64, 0x4d, 0x05, 0xfc, 0x1e, 0xda, 0x49, 0x80, 0x0a, - 0x1e, 0x75, 0x1b, 0xfa, 0xba, 0x8a, 0xee, 0x10, 0x8d, 0x92, 0x7c, 0x15, 0xbf, 0x8f, 0x76, 0x43, - 0x10, 0x82, 0x4e, 0xa0, 0xbb, 0xa3, 0x89, 0x8f, 0x72, 0xe2, 0xee, 0x79, 0x06, 0x93, 0xe5, 0x7a, - 0xff, 0x77, 0x03, 0xed, 0x9e, 0x71, 0x77, 0xc8, 0x84, 0xc4, 0x3f, 0xdc, 0x8b, 0xaf, 0xf5, 0xb0, - 0xc3, 0x28, 0xb5, 0x0e, 0xef, 0xe3, 0xbc, 0x4e, 0x73, 0x89, 0x54, 0xa2, 0xfb, 0x39, 0x6a, 0x30, - 0x09, 0xa1, 0x6a, 0x75, 0xfd, 0xa8, 0x7d, 0xdc, 0xdd, 0x94, 0x3c, 0x67, 0x2f, 0x37, 0x69, 0x7c, - 0xad, 0xe8, 0x24, 0x53, 0xf5, 0xff, 0xae, 0xeb, 0x8d, 0xaa, 0x2c, 0xe3, 0x01, 0x6a, 0xc7, 0x34, - 0xa1, 0x41, 0x00, 0x01, 0x13, 0xa1, 0xde, 0x6b, 0xc3, 0x79, 0x94, 0x2e, 0x7a, 0xed, 0x8b, 0x12, - 0x26, 0x55, 0x8e, 0x92, 0x78, 0x3c, 0x8c, 0x03, 0x50, 0x97, 0x99, 0xc5, 0x2d, 0x97, 0x9c, 0x96, - 0x30, 0xa9, 0x72, 0xf0, 0x73, 0x74, 0x40, 0x3d, 0xc9, 0xe6, 0xf0, 0x15, 0x50, 0x3f, 0x60, 0x11, - 0x8c, 0xc0, 0xe3, 0x91, 0x9f, 0x3d, 0x9d, 0xba, 0xf3, 0x56, 0xba, 0xe8, 0x1d, 0x7c, 0xb9, 0x8e, - 0x40, 0xd6, 0xeb, 0xf0, 0x8f, 0xa8, 0x29, 0x20, 0x00, 0x4f, 0xf2, 0x24, 0x0f, 0xcb, 0xd3, 0x07, - 0xde, 0x2f, 0x75, 0x21, 0x18, 0xe5, 0x52, 0xa7, 0xa3, 0x2e, 0x78, 0xf9, 0x47, 0x0a, 0x4b, 0xfc, - 0x29, 0xda, 0x0f, 0x69, 0x34, 0xa3, 0x05, 0x53, 0xa7, 0xa4, 0xe9, 0xe0, 0x74, 0xd1, 0xdb, 0x3f, - 0x5f, 0x59, 0x21, 0x77, 0x98, 0xf8, 0x1b, 0xd4, 0x94, 0x10, 0xc6, 0x01, 0x95, 0x59, 0x64, 0xda, - 0xc7, 0xef, 0x56, 0xfb, 0xa3, 0x5e, 0x9e, 0xda, 0xc8, 0x05, 0xf7, 0x2f, 0x73, 0x9a, 0x1e, 0x31, - 0x45, 0xbf, 0x97, 0x28, 0x29, 0x6c, 0xf0, 0x09, 0xea, 0xb8, 0xd4, 0x9b, 0xf2, 0xf1, 0x78, 0xc8, - 0x42, 0x26, 0xbb, 0xbb, 0xfa, 0xca, 0x1f, 0xa7, 0x8b, 0x5e, 0xc7, 0xa9, 0xe0, 0x64, 0x85, 0xd5, - 0xff, 0xad, 0x8e, 0x5a, 0xc5, 0xf8, 0xc1, 0xdf, 0x22, 0xe4, 0x2d, 0x1f, 0xbb, 0xe8, 0x1a, 0x3a, - 0x38, 0xef, 0x6c, 0x0a, 0x4e, 0x31, 0x16, 0xca, 0x19, 0x5a, 0x40, 0x82, 0x54, 0x8c, 0xf0, 0x77, - 0xa8, 0x25, 0x24, 0x4d, 0xa4, 0x7e, 0xb6, 0x5b, 0xaf, 0xfd, 0x6c, 0xf7, 0xd2, 0x45, 0xaf, 0x35, - 0x5a, 0x1a, 0x90, 0xd2, 0x0b, 0x8f, 0xd1, 0x7e, 0x99, 0xa0, 0xff, 0x39, 0x82, 0x74, 0xbb, 0x4e, - 0x57, 0x5c, 0xc8, 0x1d, 0x57, 0x35, 0x08, 0xb2, 0x88, 0xe9, 0x1c, 0x35, 0xca, 0x41, 0x90, 0xe5, - 0x91, 0xe4, 0xab, 0xd8, 0x46, 0x2d, 0x31, 0xf3, 0x3c, 0x00, 0x1f, 0x7c, 0x9d, 0x86, 0x86, 0xf3, - 0x46, 0x4e, 0x6d, 0x8d, 0x96, 0x0b, 0xa4, 0xe4, 0x28, 0xe3, 0x31, 0x65, 0x01, 0xf8, 0x3a, 0x05, - 0x15, 0xe3, 0x67, 0x1a, 0x25, 0xf9, 0xaa, 0x73, 0x74, 0x73, 0x6b, 0xd6, 0x5e, 0xdc, 0x9a, 0xb5, - 0x97, 0xb7, 0x66, 0xed, 0x97, 0xd4, 0x34, 0x6e, 0x52, 0xd3, 0x78, 0x91, 0x9a, 0xc6, 0xcb, 0xd4, - 0x34, 0xfe, 0x4c, 0x4d, 0xe3, 0xd7, 0xbf, 0xcc, 0xda, 0xf7, 0x5b, 0xf3, 0xc1, 0xbf, 0x01, 0x00, - 0x00, 0xff, 0xff, 0xce, 0x80, 0xf2, 0xbe, 0x96, 0x08, 0x00, 0x00, + 0x18, 0x8d, 0x9b, 0xa6, 0x4d, 0x26, 0x69, 0xb7, 0x0c, 0xaa, 0x14, 0x2a, 0xe4, 0x2c, 0x41, 0x42, + 0x05, 0x09, 0x9b, 0x94, 0x0a, 0x21, 0x04, 0x48, 0xb8, 0x68, 0x25, 0xaa, 0x54, 0x5b, 0x26, 0x45, + 0x48, 0x08, 0x24, 0xc6, 0xf6, 0x97, 0xd4, 0xc4, 0xf6, 0x58, 0x9e, 0x49, 0xa4, 0xde, 0xf8, 0x09, + 0xfc, 0x08, 0xc4, 0x4f, 0x41, 0x3d, 0xee, 0x71, 0x4f, 0x11, 0x35, 0xdc, 0xb9, 0xef, 0x09, 0xcd, + 0x78, 0x62, 0x3b, 0x6d, 0x2a, 0xda, 0xbd, 0x79, 0xde, 0xbc, 0xf7, 0xbe, 0xf1, 0x37, 0x6f, 0x3e, + 0xf4, 0xf9, 0xf4, 0x53, 0x6e, 0x05, 0xcc, 0x9e, 0xce, 0x5c, 0x48, 0x63, 0x10, 0xc0, 0xed, 0x39, + 0xc4, 0x3e, 0x4b, 0x6d, 0xbd, 0x41, 0x93, 0xc0, 0x76, 0xa9, 0xf0, 0x2e, 0xed, 0xf9, 0xc0, 0x9e, + 0x40, 0x0c, 0x29, 0x15, 0xe0, 0x5b, 0x49, 0xca, 0x04, 0xc3, 0x6f, 0xe6, 0x24, 0x8b, 0x26, 0x81, + 0xa5, 0x48, 0xd6, 0x7c, 0x70, 0xf0, 0xe1, 0x24, 0x10, 0x97, 0x33, 0xd7, 0xf2, 0x58, 0x64, 0x4f, + 0xd8, 0x84, 0xd9, 0x8a, 0xeb, 0xce, 0xc6, 0x6a, 0xa5, 0x16, 0xea, 0x2b, 0xf7, 0x38, 0xe8, 0x57, + 0x0a, 0x79, 0x2c, 0x85, 0x35, 0x75, 0x0e, 0x8e, 0x4b, 0x4e, 0x44, 0xbd, 0xcb, 0x20, 0x86, 0xf4, + 0xca, 0x4e, 0xa6, 0x13, 0x09, 0x70, 0x3b, 0x02, 0x41, 0xd7, 0xa9, 0xec, 0xfb, 0x54, 0xe9, 0x2c, + 0x16, 0x41, 0x04, 0x77, 0x04, 0x9f, 0xfc, 0x9f, 0x80, 0x7b, 0x97, 0x10, 0xd1, 0xdb, 0xba, 0xfe, + 0xbf, 0x06, 0xaa, 0x9f, 0x32, 0x17, 0xff, 0x8c, 0x9a, 0xf2, 0x2c, 0x3e, 0x15, 0xb4, 0x6b, 0x3c, + 0x35, 0x0e, 0xdb, 0x47, 0x1f, 0x59, 0x65, 0x87, 0x0a, 0x4b, 0x2b, 0x99, 0x4e, 0x24, 0xc0, 0x2d, + 0xc9, 0xb6, 0xe6, 0x03, 0xeb, 0xb9, 0xfb, 0x0b, 0x78, 0xe2, 0x0c, 0x04, 0x75, 0xf0, 0xf5, 0xa2, + 0x57, 0xcb, 0x16, 0x3d, 0x54, 0x62, 0xa4, 0x70, 0xc5, 0x5f, 0xa2, 0x4d, 0x9e, 0x80, 0xd7, 0xdd, + 0x50, 0xee, 0x6f, 0x5b, 0x6b, 0xfa, 0x6f, 0x9d, 0x32, 0x77, 0x94, 0x80, 0xe7, 0x74, 0xb4, 0xd3, + 0xa6, 0x5c, 0x11, 0xa5, 0xc3, 0xcf, 0xd0, 0x16, 0x17, 0x54, 0xcc, 0x78, 0xb7, 0xae, 0x1c, 0xcc, + 0x7b, 0x1d, 0x14, 0xcb, 0xd9, 0xd5, 0x1e, 0x5b, 0xf9, 0x9a, 0x68, 0x75, 0xff, 0xcf, 0x3a, 0xea, + 0x9c, 0x32, 0xf7, 0x84, 0xc5, 0x7e, 0x20, 0x02, 0x16, 0xe3, 0x63, 0xb4, 0x29, 0xae, 0x12, 0x50, + 0xbf, 0xdd, 0x72, 0x9e, 0x2e, 0x4b, 0x5f, 0x5c, 0x25, 0xf0, 0x6a, 0xd1, 0xdb, 0xab, 0x72, 0x25, + 0x46, 0x14, 0x1b, 0x0f, 0x8b, 0xe3, 0x6c, 0x28, 0xdd, 0xf1, 0x6a, 0xb9, 0x57, 0x8b, 0xde, 0x9a, + 0x74, 0x58, 0x85, 0xd3, 0xea, 0xa1, 0xf0, 0x04, 0xed, 0x84, 0x94, 0x8b, 0xf3, 0x94, 0xb9, 0x70, + 0x11, 0x44, 0xa0, 0xff, 0xf1, 0x83, 0x87, 0xdd, 0x81, 0x54, 0x38, 0xfb, 0xfa, 0x00, 0x3b, 0xc3, + 0xaa, 0x11, 0x59, 0xf5, 0xc5, 0x73, 0x84, 0x25, 0x70, 0x91, 0xd2, 0x98, 0xe7, 0xbf, 0x24, 0xab, + 0x6d, 0x3e, 0xba, 0xda, 0x81, 0xae, 0x86, 0x87, 0x77, 0xdc, 0xc8, 0x9a, 0x0a, 0xf8, 0x3d, 0xb4, + 0x95, 0x02, 0xe5, 0x2c, 0xee, 0x36, 0x54, 0xbb, 0x8a, 0xdb, 0x21, 0x0a, 0x25, 0x7a, 0x17, 0xbf, + 0x8f, 0xb6, 0x23, 0xe0, 0x9c, 0x4e, 0xa0, 0xbb, 0xa5, 0x88, 0x4f, 0x34, 0x71, 0xfb, 0x2c, 0x87, + 0xc9, 0x72, 0xbf, 0xff, 0x87, 0x81, 0xb6, 0x4f, 0x99, 0x3b, 0x0c, 0xb8, 0xc0, 0x3f, 0xde, 0x89, + 0xaf, 0xf5, 0xb0, 0x9f, 0x91, 0x6a, 0x15, 0xde, 0x3d, 0x5d, 0xa7, 0xb9, 0x44, 0x2a, 0xd1, 0xfd, + 0x02, 0x35, 0x02, 0x01, 0x91, 0xbc, 0xea, 0xfa, 0x61, 0xfb, 0xa8, 0x7b, 0x5f, 0xf2, 0x9c, 0x1d, + 0x6d, 0xd2, 0xf8, 0x46, 0xd2, 0x49, 0xae, 0xea, 0xff, 0x53, 0x57, 0x07, 0x95, 0x59, 0xc6, 0x03, + 0xd4, 0x4e, 0x68, 0x4a, 0xc3, 0x10, 0xc2, 0x80, 0x47, 0xea, 0xac, 0x0d, 0xe7, 0x49, 0xb6, 0xe8, + 0xb5, 0xcf, 0x4b, 0x98, 0x54, 0x39, 0x52, 0xe2, 0xb1, 0x28, 0x09, 0x41, 0x36, 0x33, 0x8f, 0x9b, + 0x96, 0x9c, 0x94, 0x30, 0xa9, 0x72, 0xf0, 0x73, 0xb4, 0x4f, 0x3d, 0x11, 0xcc, 0xe1, 0x6b, 0xa0, + 0x7e, 0x18, 0xc4, 0x30, 0x02, 0x8f, 0xc5, 0x7e, 0xfe, 0x74, 0xea, 0xce, 0x5b, 0xd9, 0xa2, 0xb7, + 0xff, 0xd5, 0x3a, 0x02, 0x59, 0xaf, 0xc3, 0x3f, 0xa1, 0x26, 0x87, 0x10, 0x3c, 0xc1, 0x52, 0x1d, + 0x96, 0x8f, 0x1f, 0xd8, 0x5f, 0xea, 0x42, 0x38, 0xd2, 0x52, 0xa7, 0x23, 0x1b, 0xbc, 0x5c, 0x91, + 0xc2, 0x12, 0x7f, 0x86, 0x76, 0x23, 0x1a, 0xcf, 0x68, 0xc1, 0x54, 0x29, 0x69, 0x3a, 0x38, 0x5b, + 0xf4, 0x76, 0xcf, 0x56, 0x76, 0xc8, 0x2d, 0x26, 0xfe, 0x16, 0x35, 0x05, 0x44, 0x49, 0x48, 0x45, + 0x1e, 0x99, 0xf6, 0xd1, 0xbb, 0xd5, 0xfb, 0x91, 0x2f, 0x4f, 0x1e, 0xe4, 0x9c, 0xf9, 0x17, 0x9a, + 0xa6, 0x46, 0x4c, 0x71, 0xdf, 0x4b, 0x94, 0x14, 0x36, 0xf8, 0x18, 0x75, 0x5c, 0xea, 0x4d, 0xd9, + 0x78, 0x3c, 0x0c, 0xa2, 0x40, 0x74, 0xb7, 0x55, 0xcb, 0xf7, 0xb2, 0x45, 0xaf, 0xe3, 0x54, 0x70, + 0xb2, 0xc2, 0xea, 0xff, 0x5e, 0x47, 0xad, 0x62, 0xfc, 0xe0, 0xef, 0x10, 0xf2, 0x96, 0x8f, 0x9d, + 0x77, 0x0d, 0x15, 0x9c, 0x77, 0xee, 0x0b, 0x4e, 0x31, 0x16, 0xca, 0x19, 0x5a, 0x40, 0x9c, 0x54, + 0x8c, 0xf0, 0xf7, 0xa8, 0xc5, 0x05, 0x4d, 0x85, 0x7a, 0xb6, 0x1b, 0x8f, 0x7e, 0xb6, 0x3b, 0xd9, + 0xa2, 0xd7, 0x1a, 0x2d, 0x0d, 0x48, 0xe9, 0x85, 0xc7, 0x68, 0xb7, 0x4c, 0xd0, 0x6b, 0x8e, 0x20, + 0x75, 0x5d, 0x27, 0x2b, 0x2e, 0xe4, 0x96, 0xab, 0x1c, 0x04, 0x79, 0xc4, 0x54, 0x8e, 0x1a, 0xe5, + 0x20, 0xc8, 0xf3, 0x48, 0xf4, 0x2e, 0xb6, 0x51, 0x8b, 0xcf, 0x3c, 0x0f, 0xc0, 0x07, 0x5f, 0xa5, + 0xa1, 0xe1, 0xbc, 0xa1, 0xa9, 0xad, 0xd1, 0x72, 0x83, 0x94, 0x1c, 0x69, 0x3c, 0xa6, 0x41, 0x08, + 0xbe, 0x4a, 0x41, 0xc5, 0xf8, 0x99, 0x42, 0x89, 0xde, 0x75, 0x0e, 0xaf, 0x6f, 0xcc, 0xda, 0x8b, + 0x1b, 0xb3, 0xf6, 0xf2, 0xc6, 0xac, 0xfd, 0x9a, 0x99, 0xc6, 0x75, 0x66, 0x1a, 0x2f, 0x32, 0xd3, + 0x78, 0x99, 0x99, 0xc6, 0x5f, 0x99, 0x69, 0xfc, 0xf6, 0xb7, 0x59, 0xfb, 0x61, 0x63, 0x3e, 0xf8, + 0x2f, 0x00, 0x00, 0xff, 0xff, 0xdd, 0xcc, 0x84, 0xd1, 0x61, 0x08, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/batch/v1/generated.proto b/vendor/k8s.io/api/batch/v1/generated.proto index c4797a16b2..91858b019b 100644 --- a/vendor/k8s.io/api/batch/v1/generated.proto +++ b/vendor/k8s.io/api/batch/v1/generated.proto @@ -25,7 +25,6 @@ import "k8s.io/api/core/v1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1"; diff --git a/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go index d641cf3080..3e5250f378 100644 --- a/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1 import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -109,33 +109,57 @@ func (in *JobSpec) DeepCopyInto(out *JobSpec) { *out = *in if in.Parallelism != nil { in, out := &in.Parallelism, &out.Parallelism - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Completions != nil { in, out := &in.Completions, &out.Completions - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.ActiveDeadlineSeconds != nil { in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.BackoffLimit != nil { in, out := &in.BackoffLimit, &out.BackoffLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(metav1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } if in.ManualSelector != nil { in, out := &in.ManualSelector, &out.ManualSelector - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } in.Template.DeepCopyInto(&out.Template) return @@ -163,11 +187,19 @@ func (in *JobStatus) DeepCopyInto(out *JobStatus) { } if in.StartTime != nil { in, out := &in.StartTime, &out.StartTime - *out = (*in).DeepCopy() + if *in == nil { + *out = nil + } else { + *out = (*in).DeepCopy() + } } if in.CompletionTime != nil { in, out := &in.CompletionTime, &out.CompletionTime - *out = (*in).DeepCopy() + if *in == nil { + *out = nil + } else { + *out = (*in).DeepCopy() + } } return } diff --git a/vendor/k8s.io/api/batch/v1beta1/generated.pb.go b/vendor/k8s.io/api/batch/v1beta1/generated.pb.go index 4edf118687..ece2204f93 100644 --- a/vendor/k8s.io/api/batch/v1beta1/generated.pb.go +++ b/vendor/k8s.io/api/batch/v1beta1/generated.pb.go @@ -1456,54 +1456,54 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 784 bytes of a gzipped FileDescriptorProto + // 771 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0xcf, 0x6f, 0xe3, 0x44, 0x14, 0xc7, 0xe3, 0x34, 0xbf, 0x76, 0xc2, 0x42, 0xd7, 0xa0, 0x5d, 0x2b, 0x20, 0x27, 0x64, 0xb5, - 0x22, 0x20, 0x76, 0x4c, 0x0b, 0x42, 0x9c, 0x90, 0xd6, 0x8b, 0x16, 0x28, 0x45, 0x8b, 0x9c, 0x22, - 0x24, 0x54, 0xa1, 0x8e, 0xc7, 0x2f, 0xc9, 0x34, 0xb6, 0xc7, 0xf2, 0x8c, 0x23, 0xe5, 0xc6, 0x85, - 0x3b, 0xff, 0x08, 0x27, 0xfe, 0x89, 0x88, 0x53, 0x8f, 0x3d, 0x45, 0xd4, 0xfc, 0x17, 0x9c, 0x90, - 0x27, 0xce, 0x8f, 0xe6, 0x47, 0x5b, 0x2e, 0xbd, 0x79, 0x9e, 0xbf, 0xdf, 0xcf, 0xbc, 0x79, 0xef, - 0xcd, 0xa0, 0x17, 0xc3, 0x2f, 0x04, 0x66, 0xdc, 0x1a, 0x26, 0x2e, 0xc4, 0x21, 0x48, 0x10, 0xd6, - 0x08, 0x42, 0x8f, 0xc7, 0x56, 0xfe, 0x83, 0x44, 0xcc, 0x72, 0x89, 0xa4, 0x03, 0x6b, 0x74, 0xe0, - 0x82, 0x24, 0x07, 0x56, 0x1f, 0x42, 0x88, 0x89, 0x04, 0x0f, 0x47, 0x31, 0x97, 0x5c, 0x37, 0x66, - 0x4a, 0x4c, 0x22, 0x86, 0x95, 0x12, 0xe7, 0xca, 0xc6, 0xf3, 0x3e, 0x93, 0x83, 0xc4, 0xc5, 0x94, - 0x07, 0x56, 0x9f, 0xf7, 0xb9, 0xa5, 0x0c, 0x6e, 0xd2, 0x53, 0x2b, 0xb5, 0x50, 0x5f, 0x33, 0x50, - 0xe3, 0xe9, 0x96, 0x2d, 0xd7, 0x77, 0x6b, 0xb4, 0x57, 0x44, 0x94, 0xc7, 0xb0, 0x4d, 0xf3, 0xd9, - 0x52, 0x13, 0x10, 0x3a, 0x60, 0x21, 0xc4, 0x63, 0x2b, 0x1a, 0xf6, 0xb3, 0x80, 0xb0, 0x02, 0x90, - 0x64, 0x9b, 0xcb, 0xda, 0xe5, 0x8a, 0x93, 0x50, 0xb2, 0x00, 0x36, 0x0c, 0x9f, 0xdf, 0x66, 0x10, - 0x74, 0x00, 0x01, 0xd9, 0xf0, 0x7d, 0xba, 0xcb, 0x97, 0x48, 0xe6, 0x5b, 0x2c, 0x94, 0x42, 0xc6, - 0xeb, 0xa6, 0xf6, 0x6f, 0x45, 0x54, 0x7d, 0x19, 0xf3, 0xf0, 0x88, 0xbb, 0xfa, 0x19, 0xaa, 0x65, - 0x87, 0xf0, 0x88, 0x24, 0x86, 0xd6, 0xd2, 0x3a, 0xf5, 0xc3, 0x4f, 0xf0, 0xb2, 0x09, 0x0b, 0x26, - 0x8e, 0x86, 0xfd, 0x2c, 0x20, 0x70, 0xa6, 0xc6, 0xa3, 0x03, 0xfc, 0xda, 0x3d, 0x07, 0x2a, 0xbf, - 0x07, 0x49, 0x6c, 0x7d, 0x32, 0x6d, 0x16, 0xd2, 0x69, 0x13, 0x2d, 0x63, 0xce, 0x82, 0xaa, 0x7f, - 0x8d, 0x4a, 0x22, 0x02, 0x6a, 0x14, 0x15, 0xfd, 0x19, 0xde, 0xd5, 0x62, 0x9c, 0xa7, 0xd4, 0x8d, - 0x80, 0xda, 0x6f, 0xe4, 0xc8, 0x52, 0xb6, 0x72, 0x14, 0x40, 0x7f, 0x8d, 0x2a, 0x42, 0x12, 0x99, - 0x08, 0x63, 0x4f, 0xa1, 0x3e, 0xb8, 0x1d, 0xa5, 0xe4, 0xf6, 0x9b, 0x39, 0xac, 0x32, 0x5b, 0x3b, - 0x39, 0xa6, 0xfd, 0xa7, 0x86, 0xea, 0xb9, 0xf2, 0x98, 0x09, 0xa9, 0x9f, 0x6e, 0xd4, 0x02, 0xdf, - 0xad, 0x16, 0x99, 0x5b, 0x55, 0x62, 0x3f, 0xdf, 0xa9, 0x36, 0x8f, 0xac, 0xd4, 0xe1, 0x15, 0x2a, - 0x33, 0x09, 0x81, 0x30, 0x8a, 0xad, 0xbd, 0x4e, 0xfd, 0xf0, 0xfd, 0x5b, 0xb3, 0xb7, 0x1f, 0xe6, - 0xb4, 0xf2, 0xb7, 0x99, 0xcf, 0x99, 0xd9, 0xdb, 0x7f, 0x94, 0x16, 0x59, 0x67, 0xc5, 0xd1, 0x3f, - 0x46, 0xb5, 0x6c, 0x38, 0xbc, 0xc4, 0x07, 0x95, 0xf5, 0x83, 0x65, 0x16, 0xdd, 0x3c, 0xee, 0x2c, - 0x14, 0xfa, 0x8f, 0xe8, 0x89, 0x90, 0x24, 0x96, 0x2c, 0xec, 0x7f, 0x05, 0xc4, 0xf3, 0x59, 0x08, - 0x5d, 0xa0, 0x3c, 0xf4, 0x84, 0x6a, 0xd0, 0x9e, 0xfd, 0x6e, 0x3a, 0x6d, 0x3e, 0xe9, 0x6e, 0x97, - 0x38, 0xbb, 0xbc, 0xfa, 0x29, 0x7a, 0x44, 0x79, 0x48, 0x93, 0x38, 0x86, 0x90, 0x8e, 0x7f, 0xe0, - 0x3e, 0xa3, 0x63, 0xd5, 0xa6, 0x07, 0x36, 0xce, 0xb3, 0x79, 0xf4, 0x72, 0x5d, 0xf0, 0xef, 0xb6, - 0xa0, 0xb3, 0x09, 0xd2, 0x9f, 0xa1, 0xaa, 0x48, 0x44, 0x04, 0xa1, 0x67, 0x94, 0x5a, 0x5a, 0xa7, - 0x66, 0xd7, 0xd3, 0x69, 0xb3, 0xda, 0x9d, 0x85, 0x9c, 0xf9, 0x3f, 0xfd, 0x0c, 0xd5, 0xcf, 0xb9, - 0x7b, 0x02, 0x41, 0xe4, 0x13, 0x09, 0x46, 0x59, 0xb5, 0xf0, 0xc3, 0xdd, 0x75, 0x3e, 0x5a, 0x8a, - 0xd5, 0xd0, 0xbd, 0x9d, 0x67, 0x5a, 0x5f, 0xf9, 0xe1, 0xac, 0x22, 0xf5, 0x5f, 0x50, 0x43, 0x24, - 0x94, 0x82, 0x10, 0xbd, 0xc4, 0x3f, 0xe2, 0xae, 0xf8, 0x86, 0x09, 0xc9, 0xe3, 0xf1, 0x31, 0x0b, - 0x98, 0x34, 0x2a, 0x2d, 0xad, 0x53, 0xb6, 0xcd, 0x74, 0xda, 0x6c, 0x74, 0x77, 0xaa, 0x9c, 0x1b, - 0x08, 0xba, 0x83, 0x1e, 0xf7, 0x08, 0xf3, 0xc1, 0xdb, 0x60, 0x57, 0x15, 0xbb, 0x91, 0x4e, 0x9b, - 0x8f, 0x5f, 0x6d, 0x55, 0x38, 0x3b, 0x9c, 0xed, 0xbf, 0x34, 0xf4, 0xf0, 0xda, 0x7d, 0xd0, 0xbf, - 0x43, 0x15, 0x42, 0x25, 0x1b, 0x65, 0xf3, 0x92, 0x8d, 0xe2, 0xd3, 0xd5, 0x12, 0x65, 0x0f, 0xe1, - 0xf2, 0x7e, 0x3b, 0xd0, 0x83, 0xac, 0x13, 0xb0, 0xbc, 0x44, 0x2f, 0x94, 0xd5, 0xc9, 0x11, 0xba, - 0x8f, 0xf6, 0x7d, 0x22, 0xe4, 0x7c, 0xd4, 0x4e, 0x58, 0x00, 0xaa, 0x49, 0xf5, 0xc3, 0x8f, 0xee, - 0x76, 0x79, 0x32, 0x87, 0xfd, 0x4e, 0x3a, 0x6d, 0xee, 0x1f, 0xaf, 0x71, 0x9c, 0x0d, 0x72, 0x7b, - 0xa2, 0xa1, 0xd5, 0xee, 0xdc, 0xc3, 0xf3, 0xf5, 0x13, 0xaa, 0xc9, 0xf9, 0x44, 0x15, 0xff, 0xef, - 0x44, 0x2d, 0x6e, 0xe2, 0x62, 0x9c, 0x16, 0xb0, 0xec, 0xf5, 0x79, 0x6b, 0x4d, 0x7f, 0x0f, 0xc7, - 0xf9, 0xf2, 0xda, 0x6b, 0xfc, 0xde, 0xb6, 0xa3, 0xe0, 0x1b, 0x1e, 0x61, 0xfb, 0xf9, 0xe4, 0xca, - 0x2c, 0x5c, 0x5c, 0x99, 0x85, 0xcb, 0x2b, 0xb3, 0xf0, 0x6b, 0x6a, 0x6a, 0x93, 0xd4, 0xd4, 0x2e, - 0x52, 0x53, 0xbb, 0x4c, 0x4d, 0xed, 0xef, 0xd4, 0xd4, 0x7e, 0xff, 0xc7, 0x2c, 0xfc, 0x5c, 0xcd, - 0x0b, 0xf2, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x78, 0xe4, 0x62, 0x14, 0x08, 0x00, 0x00, + 0x22, 0x20, 0x76, 0x4c, 0x2b, 0x84, 0x38, 0x21, 0xad, 0x17, 0x2d, 0x50, 0x8a, 0x16, 0x39, 0x45, + 0x48, 0xa8, 0x42, 0x1d, 0x8f, 0x5f, 0x92, 0x69, 0x6c, 0x8f, 0xe5, 0x19, 0x47, 0xca, 0x8d, 0x0b, + 0x77, 0xfe, 0x11, 0x4e, 0xfc, 0x13, 0x11, 0xa7, 0x1e, 0x7b, 0x8a, 0xa8, 0xf9, 0x2f, 0x38, 0x21, + 0x4f, 0x9c, 0x1f, 0xcd, 0x8f, 0xb6, 0x7b, 0xe9, 0xcd, 0xf3, 0xe6, 0xfb, 0xfd, 0xcc, 0xf3, 0x7b, + 0x6f, 0x06, 0xbd, 0x18, 0x7e, 0x29, 0x30, 0xe3, 0xd6, 0x30, 0x71, 0x21, 0x0e, 0x41, 0x82, 0xb0, + 0x46, 0x10, 0x7a, 0x3c, 0xb6, 0xf2, 0x0d, 0x12, 0x31, 0xcb, 0x25, 0x92, 0x0e, 0xac, 0xd1, 0x81, + 0x0b, 0x92, 0x1c, 0x58, 0x7d, 0x08, 0x21, 0x26, 0x12, 0x3c, 0x1c, 0xc5, 0x5c, 0x72, 0xdd, 0x98, + 0x29, 0x31, 0x89, 0x18, 0x56, 0x4a, 0x9c, 0x2b, 0x1b, 0xcf, 0xfb, 0x4c, 0x0e, 0x12, 0x17, 0x53, + 0x1e, 0x58, 0x7d, 0xde, 0xe7, 0x96, 0x32, 0xb8, 0x49, 0x4f, 0xad, 0xd4, 0x42, 0x7d, 0xcd, 0x40, + 0x8d, 0xa7, 0x5b, 0x8e, 0x5c, 0x3f, 0xad, 0xd1, 0x5e, 0x11, 0x51, 0x1e, 0xc3, 0x36, 0xcd, 0xe7, + 0x4b, 0x4d, 0x40, 0xe8, 0x80, 0x85, 0x10, 0x8f, 0xad, 0x68, 0xd8, 0xcf, 0x02, 0xc2, 0x0a, 0x40, + 0x92, 0x6d, 0x2e, 0x6b, 0x97, 0x2b, 0x4e, 0x42, 0xc9, 0x02, 0xd8, 0x30, 0x7c, 0x71, 0x9b, 0x41, + 0xd0, 0x01, 0x04, 0x64, 0xdd, 0xd7, 0xfe, 0xbd, 0x88, 0xaa, 0x2f, 0x63, 0x1e, 0x1e, 0x71, 0x57, + 0x3f, 0x43, 0xb5, 0x2c, 0x1f, 0x8f, 0x48, 0x62, 0x68, 0x2d, 0xad, 0x53, 0x3f, 0xfc, 0x0c, 0x2f, + 0xeb, 0xb9, 0xc0, 0xe2, 0x68, 0xd8, 0xcf, 0x02, 0x02, 0x67, 0x6a, 0x3c, 0x3a, 0xc0, 0xaf, 0xdd, + 0x73, 0xa0, 0xf2, 0x07, 0x90, 0xc4, 0xd6, 0x27, 0xd3, 0x66, 0x21, 0x9d, 0x36, 0xd1, 0x32, 0xe6, + 0x2c, 0xa8, 0xfa, 0x37, 0xa8, 0x24, 0x22, 0xa0, 0x46, 0x51, 0xd1, 0x9f, 0xe1, 0x5d, 0xdd, 0xc2, + 0x79, 0x4a, 0xdd, 0x08, 0xa8, 0xfd, 0x56, 0x8e, 0x2c, 0x65, 0x2b, 0x47, 0x01, 0xf4, 0xd7, 0xa8, + 0x22, 0x24, 0x91, 0x89, 0x30, 0xf6, 0x14, 0xea, 0xa3, 0xdb, 0x51, 0x4a, 0x6e, 0xbf, 0x9d, 0xc3, + 0x2a, 0xb3, 0xb5, 0x93, 0x63, 0xda, 0x7f, 0x69, 0xa8, 0x9e, 0x2b, 0x8f, 0x99, 0x90, 0xfa, 0xe9, + 0x46, 0x2d, 0xf0, 0xdd, 0x6a, 0x91, 0xb9, 0x55, 0x25, 0xf6, 0xf3, 0x93, 0x6a, 0xf3, 0xc8, 0x4a, + 0x1d, 0x5e, 0xa1, 0x32, 0x93, 0x10, 0x08, 0xa3, 0xd8, 0xda, 0xeb, 0xd4, 0x0f, 0x3f, 0xbc, 0x35, + 0x7b, 0xfb, 0x61, 0x4e, 0x2b, 0x7f, 0x97, 0xf9, 0x9c, 0x99, 0xbd, 0xfd, 0x67, 0x69, 0x91, 0x75, + 0x56, 0x1c, 0xfd, 0x53, 0x54, 0xcb, 0xfa, 0xec, 0x25, 0x3e, 0xa8, 0xac, 0x1f, 0x2c, 0xb3, 0xe8, + 0xe6, 0x71, 0x67, 0xa1, 0xd0, 0x7f, 0x42, 0x4f, 0x84, 0x24, 0xb1, 0x64, 0x61, 0xff, 0x6b, 0x20, + 0x9e, 0xcf, 0x42, 0xe8, 0x02, 0xe5, 0xa1, 0x27, 0x54, 0x83, 0xf6, 0xec, 0xf7, 0xd3, 0x69, 0xf3, + 0x49, 0x77, 0xbb, 0xc4, 0xd9, 0xe5, 0xd5, 0x4f, 0xd1, 0x23, 0xca, 0x43, 0x9a, 0xc4, 0x31, 0x84, + 0x74, 0xfc, 0x23, 0xf7, 0x19, 0x1d, 0xab, 0x36, 0x3d, 0xb0, 0x71, 0x9e, 0xcd, 0xa3, 0x97, 0xeb, + 0x82, 0xff, 0xb6, 0x05, 0x9d, 0x4d, 0x90, 0xfe, 0x0c, 0x55, 0x45, 0x22, 0x22, 0x08, 0x3d, 0xa3, + 0xd4, 0xd2, 0x3a, 0x35, 0xbb, 0x9e, 0x4e, 0x9b, 0xd5, 0xee, 0x2c, 0xe4, 0xcc, 0xf7, 0xf4, 0x33, + 0x54, 0x3f, 0xe7, 0xee, 0x09, 0x04, 0x91, 0x4f, 0x24, 0x18, 0x65, 0xd5, 0xc2, 0x8f, 0x77, 0xd7, + 0xf9, 0x68, 0x29, 0x56, 0x43, 0xf7, 0x6e, 0x9e, 0x69, 0x7d, 0x65, 0xc3, 0x59, 0x45, 0xea, 0xbf, + 0xa2, 0x86, 0x48, 0x28, 0x05, 0x21, 0x7a, 0x89, 0x7f, 0xc4, 0x5d, 0xf1, 0x2d, 0x13, 0x92, 0xc7, + 0xe3, 0x63, 0x16, 0x30, 0x69, 0x54, 0x5a, 0x5a, 0xa7, 0x6c, 0x9b, 0xe9, 0xb4, 0xd9, 0xe8, 0xee, + 0x54, 0x39, 0x37, 0x10, 0x74, 0x07, 0x3d, 0xee, 0x11, 0xe6, 0x83, 0xb7, 0xc1, 0xae, 0x2a, 0x76, + 0x23, 0x9d, 0x36, 0x1f, 0xbf, 0xda, 0xaa, 0x70, 0x76, 0x38, 0xdb, 0x7f, 0x6b, 0xe8, 0xe1, 0xb5, + 0xfb, 0xa0, 0x7f, 0x8f, 0x2a, 0x84, 0x4a, 0x36, 0xca, 0xe6, 0x25, 0x1b, 0xc5, 0xa7, 0xab, 0x25, + 0xca, 0xde, 0xb4, 0xe5, 0xfd, 0x76, 0xa0, 0x07, 0x59, 0x27, 0x60, 0x79, 0x89, 0x5e, 0x28, 0xab, + 0x93, 0x23, 0x74, 0x1f, 0xed, 0xfb, 0x44, 0xc8, 0xf9, 0xa8, 0x9d, 0xb0, 0x00, 0x54, 0x93, 0xea, + 0x87, 0x9f, 0xdc, 0xed, 0xf2, 0x64, 0x0e, 0xfb, 0xbd, 0x74, 0xda, 0xdc, 0x3f, 0x5e, 0xe3, 0x38, + 0x1b, 0xe4, 0xf6, 0x44, 0x43, 0xab, 0xdd, 0xb9, 0x87, 0xe7, 0xeb, 0x67, 0x54, 0x93, 0xf3, 0x89, + 0x2a, 0xbe, 0xe9, 0x44, 0x2d, 0x6e, 0xe2, 0x62, 0x9c, 0x16, 0xb0, 0xec, 0xf5, 0x79, 0x67, 0x4d, + 0x7f, 0x0f, 0xbf, 0xf3, 0xd5, 0xb5, 0xd7, 0xf8, 0x83, 0x6d, 0xbf, 0x82, 0x6f, 0x78, 0x84, 0xed, + 0xe7, 0x93, 0x2b, 0xb3, 0x70, 0x71, 0x65, 0x16, 0x2e, 0xaf, 0xcc, 0xc2, 0x6f, 0xa9, 0xa9, 0x4d, + 0x52, 0x53, 0xbb, 0x48, 0x4d, 0xed, 0x32, 0x35, 0xb5, 0x7f, 0x52, 0x53, 0xfb, 0xe3, 0x5f, 0xb3, + 0xf0, 0x4b, 0x35, 0x2f, 0xc8, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf6, 0x9f, 0xb3, 0xdd, 0xdf, + 0x07, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/batch/v1beta1/generated.proto b/vendor/k8s.io/api/batch/v1beta1/generated.proto index f19af65e66..043b3551b0 100644 --- a/vendor/k8s.io/api/batch/v1beta1/generated.proto +++ b/vendor/k8s.io/api/batch/v1beta1/generated.proto @@ -26,7 +26,6 @@ import "k8s.io/api/core/v1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1beta1"; diff --git a/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go index 1c8bc4478d..a33f4ffcf3 100644 --- a/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/batch/v1beta1/zz_generated.deepcopy.go @@ -91,24 +91,40 @@ func (in *CronJobSpec) DeepCopyInto(out *CronJobSpec) { *out = *in if in.StartingDeadlineSeconds != nil { in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.Suspend != nil { in, out := &in.Suspend, &out.Suspend - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } in.JobTemplate.DeepCopyInto(&out.JobTemplate) if in.SuccessfulJobsHistoryLimit != nil { in, out := &in.SuccessfulJobsHistoryLimit, &out.SuccessfulJobsHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.FailedJobsHistoryLimit != nil { in, out := &in.FailedJobsHistoryLimit, &out.FailedJobsHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -133,7 +149,11 @@ func (in *CronJobStatus) DeepCopyInto(out *CronJobStatus) { } if in.LastScheduleTime != nil { in, out := &in.LastScheduleTime, &out.LastScheduleTime - *out = (*in).DeepCopy() + if *in == nil { + *out = nil + } else { + *out = (*in).DeepCopy() + } } return } diff --git a/vendor/k8s.io/api/batch/v2alpha1/generated.pb.go b/vendor/k8s.io/api/batch/v2alpha1/generated.pb.go index 3fcbf34258..6ab41ebbcb 100644 --- a/vendor/k8s.io/api/batch/v2alpha1/generated.pb.go +++ b/vendor/k8s.io/api/batch/v2alpha1/generated.pb.go @@ -1456,55 +1456,54 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 787 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0xcf, 0x6f, 0xe3, 0x44, - 0x14, 0xc7, 0xe3, 0x34, 0xbf, 0x3a, 0xa1, 0xd0, 0x1a, 0xd4, 0x86, 0x80, 0x9c, 0xc8, 0x15, 0x28, - 0x42, 0x30, 0xa6, 0x05, 0x21, 0x4e, 0x48, 0xb8, 0x08, 0x4a, 0x29, 0xa2, 0x72, 0x8a, 0x84, 0x50, - 0xb5, 0xda, 0xf1, 0x78, 0x92, 0x4c, 0x63, 0x7b, 0x2c, 0xcf, 0x38, 0x52, 0x6e, 0x7b, 0xdb, 0xeb, - 0xfe, 0x25, 0x7b, 0xd9, 0xfd, 0x23, 0xba, 0x7b, 0xea, 0xb1, 0xa7, 0x68, 0xeb, 0xfd, 0x2f, 0xf6, - 0xb4, 0xf2, 0xc4, 0xf9, 0xd1, 0x38, 0x69, 0xbb, 0x97, 0xde, 0x3c, 0xcf, 0xdf, 0xef, 0x67, 0xde, - 0xbc, 0xf7, 0x66, 0x80, 0xd9, 0xff, 0x99, 0x43, 0xca, 0x8c, 0x7e, 0x64, 0x93, 0xd0, 0x27, 0x82, - 0x70, 0x63, 0x40, 0x7c, 0x87, 0x85, 0x46, 0xfa, 0x03, 0x05, 0xd4, 0xb0, 0x91, 0xc0, 0x3d, 0x63, - 0xb0, 0x8f, 0xdc, 0xa0, 0x87, 0xf6, 0x8c, 0x2e, 0xf1, 0x49, 0x88, 0x04, 0x71, 0x60, 0x10, 0x32, - 0xc1, 0xd4, 0xcf, 0xc7, 0x52, 0x88, 0x02, 0x0a, 0xa5, 0x14, 0x4e, 0xa4, 0xf5, 0xef, 0xba, 0x54, - 0xf4, 0x22, 0x1b, 0x62, 0xe6, 0x19, 0x5d, 0xd6, 0x65, 0x86, 0x74, 0xd8, 0x51, 0x47, 0xae, 0xe4, - 0x42, 0x7e, 0x8d, 0x49, 0xf5, 0xdd, 0xec, 0xa6, 0x99, 0xed, 0xea, 0xfa, 0x9c, 0x08, 0xb3, 0x90, - 0x2c, 0xd3, 0xfc, 0x38, 0xd3, 0x78, 0x08, 0xf7, 0xa8, 0x4f, 0xc2, 0xa1, 0x11, 0xf4, 0xbb, 0x49, - 0x80, 0x1b, 0x1e, 0x11, 0x68, 0x99, 0xcb, 0x58, 0xe5, 0x0a, 0x23, 0x5f, 0x50, 0x8f, 0x64, 0x0c, - 0x3f, 0xdd, 0x65, 0xe0, 0xb8, 0x47, 0x3c, 0x94, 0xf1, 0xfd, 0xb0, 0xca, 0x17, 0x09, 0xea, 0x1a, - 0xd4, 0x17, 0x5c, 0x84, 0x8b, 0x26, 0xfd, 0x69, 0x1e, 0x94, 0x0f, 0x42, 0xe6, 0x1f, 0x31, 0x5b, - 0x7d, 0x0c, 0x2a, 0xc9, 0x21, 0x1c, 0x24, 0x50, 0x4d, 0x69, 0x2a, 0xad, 0xea, 0xfe, 0xf7, 0x70, - 0xd6, 0x85, 0x29, 0x13, 0x06, 0xfd, 0x6e, 0x12, 0xe0, 0x30, 0x51, 0xc3, 0xc1, 0x1e, 0xfc, 0xc7, - 0x3e, 0x27, 0x58, 0xfc, 0x4d, 0x04, 0x32, 0xd5, 0x8b, 0x51, 0x23, 0x17, 0x8f, 0x1a, 0x60, 0x16, - 0xb3, 0xa6, 0x54, 0xf5, 0x10, 0x14, 0x78, 0x40, 0x70, 0x2d, 0x2f, 0xe9, 0x5f, 0xc3, 0x95, 0x3d, - 0x86, 0x69, 0x4e, 0xed, 0x80, 0x60, 0xf3, 0xa3, 0x94, 0x59, 0x48, 0x56, 0x96, 0x24, 0xa8, 0x27, - 0xa0, 0xc4, 0x05, 0x12, 0x11, 0xaf, 0xad, 0x49, 0x56, 0xeb, 0x1e, 0x2c, 0xa9, 0x37, 0x3f, 0x4e, - 0x69, 0xa5, 0xf1, 0xda, 0x4a, 0x39, 0xfa, 0x4b, 0x05, 0x54, 0x53, 0xe5, 0x31, 0xe5, 0x42, 0x3d, - 0xcb, 0x54, 0x03, 0xde, 0xaf, 0x1a, 0x89, 0x5b, 0xd6, 0x62, 0x33, 0xdd, 0xa9, 0x32, 0x89, 0xcc, - 0x55, 0xe2, 0x0f, 0x50, 0xa4, 0x82, 0x78, 0xbc, 0x96, 0x6f, 0xae, 0xb5, 0xaa, 0xfb, 0xfa, 0xdd, - 0xe9, 0x9b, 0x1b, 0x29, 0xae, 0xf8, 0x67, 0x62, 0xb4, 0xc6, 0x7e, 0xfd, 0x79, 0x61, 0x9a, 0x76, - 0x52, 0x1e, 0xf5, 0x5b, 0x50, 0x49, 0xe6, 0xc3, 0x89, 0x5c, 0x22, 0xd3, 0x5e, 0x9f, 0xa5, 0xd1, - 0x4e, 0xe3, 0xd6, 0x54, 0xa1, 0xfe, 0x0b, 0x76, 0xb8, 0x40, 0xa1, 0xa0, 0x7e, 0xf7, 0x37, 0x82, - 0x1c, 0x97, 0xfa, 0xa4, 0x4d, 0x30, 0xf3, 0x1d, 0x2e, 0x7b, 0xb4, 0x66, 0x7e, 0x11, 0x8f, 0x1a, - 0x3b, 0xed, 0xe5, 0x12, 0x6b, 0x95, 0x57, 0x3d, 0x03, 0x5b, 0x98, 0xf9, 0x38, 0x0a, 0x43, 0xe2, - 0xe3, 0xe1, 0x09, 0x73, 0x29, 0x1e, 0xca, 0x46, 0xad, 0x9b, 0x30, 0xcd, 0x66, 0xeb, 0x60, 0x51, - 0xf0, 0x6e, 0x59, 0xd0, 0xca, 0x82, 0xd4, 0xaf, 0x40, 0x99, 0x47, 0x3c, 0x20, 0xbe, 0x53, 0x2b, - 0x34, 0x95, 0x56, 0xc5, 0xac, 0xc6, 0xa3, 0x46, 0xb9, 0x3d, 0x0e, 0x59, 0x93, 0x7f, 0x2a, 0x02, - 0xd5, 0x73, 0x66, 0x9f, 0x12, 0x2f, 0x70, 0x91, 0x20, 0xb5, 0xa2, 0xec, 0xe1, 0x37, 0xb7, 0x14, - 0xfa, 0x68, 0xa6, 0x96, 0x73, 0xf7, 0x69, 0x9a, 0x6a, 0x75, 0xee, 0x87, 0x35, 0xcf, 0x54, 0x1f, - 0x81, 0x3a, 0x8f, 0x30, 0x26, 0x9c, 0x77, 0x22, 0xf7, 0x88, 0xd9, 0xfc, 0x90, 0x72, 0xc1, 0xc2, - 0xe1, 0x31, 0xf5, 0xa8, 0xa8, 0x95, 0x9a, 0x4a, 0xab, 0x68, 0x6a, 0xf1, 0xa8, 0x51, 0x6f, 0xaf, - 0x54, 0x59, 0xb7, 0x10, 0x54, 0x0b, 0x6c, 0x77, 0x10, 0x75, 0x89, 0x93, 0x61, 0x97, 0x25, 0xbb, - 0x1e, 0x8f, 0x1a, 0xdb, 0xbf, 0x2f, 0x55, 0x58, 0x2b, 0x9c, 0xfa, 0x6b, 0x05, 0x6c, 0xdc, 0xb8, - 0x11, 0xea, 0x5f, 0xa0, 0x84, 0xb0, 0xa0, 0x83, 0x64, 0x60, 0x92, 0x61, 0xdc, 0x9d, 0xaf, 0x51, - 0xf2, 0x18, 0xce, 0xee, 0xb8, 0x45, 0x3a, 0x24, 0x69, 0x05, 0x99, 0x5d, 0xa3, 0x5f, 0xa5, 0xd5, - 0x4a, 0x11, 0xaa, 0x0b, 0x36, 0x5d, 0xc4, 0xc5, 0x64, 0xd6, 0x4e, 0xa9, 0x47, 0x64, 0x97, 0x6e, - 0x96, 0xfe, 0x96, 0xeb, 0x93, 0x38, 0xcc, 0xcf, 0xe2, 0x51, 0x63, 0xf3, 0x78, 0x81, 0x63, 0x65, - 0xc8, 0xfa, 0x2b, 0x05, 0xcc, 0x77, 0xe7, 0x01, 0x9e, 0xb0, 0xff, 0x40, 0x45, 0x4c, 0x46, 0x2a, - 0xff, 0xc1, 0x23, 0x35, 0xbd, 0x8b, 0xd3, 0x79, 0x9a, 0xd2, 0xf4, 0x17, 0x0a, 0xf8, 0x64, 0x41, - 0xff, 0x00, 0xe7, 0xf9, 0xe5, 0xc6, 0x93, 0xfc, 0xe5, 0x92, 0xb3, 0xc8, 0x53, 0xac, 0x7a, 0x88, - 0x4d, 0x78, 0x71, 0xad, 0xe5, 0x2e, 0xaf, 0xb5, 0xdc, 0xd5, 0xb5, 0x96, 0x7b, 0x12, 0x6b, 0xca, - 0x45, 0xac, 0x29, 0x97, 0xb1, 0xa6, 0x5c, 0xc5, 0x9a, 0xf2, 0x26, 0xd6, 0x94, 0x67, 0x6f, 0xb5, - 0xdc, 0xff, 0x95, 0x49, 0x45, 0xde, 0x07, 0x00, 0x00, 0xff, 0xff, 0x02, 0x60, 0xaa, 0x00, 0x1c, - 0x08, 0x00, 0x00, + // 774 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0x4d, 0x6f, 0xdb, 0x36, + 0x18, 0xc7, 0x2d, 0xc7, 0x6f, 0xa1, 0x97, 0x2d, 0xd1, 0x86, 0xc4, 0xf3, 0x06, 0xd9, 0x50, 0xb0, + 0xc1, 0x18, 0x36, 0x6a, 0x09, 0x86, 0x61, 0xa7, 0x01, 0x53, 0x86, 0x36, 0x4d, 0x53, 0x34, 0x90, + 0x53, 0xa0, 0x28, 0x82, 0xa2, 0x14, 0x45, 0xdb, 0x8c, 0x25, 0x51, 0x10, 0x29, 0x03, 0xbe, 0xf5, + 0xd6, 0x6b, 0x3f, 0x49, 0x2f, 0xed, 0x87, 0x48, 0x7b, 0xca, 0x31, 0x27, 0xa3, 0x51, 0xbf, 0x45, + 0x4f, 0x85, 0x68, 0xf9, 0x25, 0x7e, 0x49, 0xd2, 0x4b, 0x6e, 0xe2, 0xa3, 0xff, 0xff, 0xc7, 0x87, + 0xcf, 0xf3, 0x90, 0xc0, 0xec, 0xfe, 0xc3, 0x21, 0x65, 0x46, 0x37, 0xb2, 0x49, 0xe8, 0x13, 0x41, + 0xb8, 0xd1, 0x23, 0xbe, 0xc3, 0x42, 0x23, 0xfd, 0x81, 0x02, 0x6a, 0xd8, 0x48, 0xe0, 0x8e, 0xd1, + 0xdb, 0x45, 0x6e, 0xd0, 0x41, 0x3b, 0x46, 0x9b, 0xf8, 0x24, 0x44, 0x82, 0x38, 0x30, 0x08, 0x99, + 0x60, 0xea, 0x8f, 0x43, 0x29, 0x44, 0x01, 0x85, 0x52, 0x0a, 0x47, 0xd2, 0xea, 0x1f, 0x6d, 0x2a, + 0x3a, 0x91, 0x0d, 0x31, 0xf3, 0x8c, 0x36, 0x6b, 0x33, 0x43, 0x3a, 0xec, 0xa8, 0x25, 0x57, 0x72, + 0x21, 0xbf, 0x86, 0xa4, 0xea, 0xf6, 0xfc, 0xa6, 0x73, 0xdb, 0x55, 0xf5, 0x29, 0x11, 0x66, 0x21, + 0x59, 0xa4, 0xf9, 0x6b, 0xa2, 0xf1, 0x10, 0xee, 0x50, 0x9f, 0x84, 0x7d, 0x23, 0xe8, 0xb6, 0x93, + 0x00, 0x37, 0x3c, 0x22, 0xd0, 0x22, 0x97, 0xb1, 0xcc, 0x15, 0x46, 0xbe, 0xa0, 0x1e, 0x99, 0x33, + 0xfc, 0x7d, 0x93, 0x81, 0xe3, 0x0e, 0xf1, 0xd0, 0xac, 0x4f, 0x7f, 0x95, 0x05, 0xc5, 0xbd, 0x90, + 0xf9, 0x07, 0xcc, 0x56, 0x5f, 0x80, 0x52, 0x92, 0x8f, 0x83, 0x04, 0xaa, 0x28, 0x75, 0xa5, 0x51, + 0xde, 0xfd, 0x13, 0x4e, 0x0a, 0x3a, 0xc6, 0xc2, 0xa0, 0xdb, 0x4e, 0x02, 0x1c, 0x26, 0x6a, 0xd8, + 0xdb, 0x81, 0x8f, 0xed, 0x53, 0x82, 0xc5, 0x23, 0x22, 0x90, 0xa9, 0x9e, 0x0d, 0x6a, 0x99, 0x78, + 0x50, 0x03, 0x93, 0x98, 0x35, 0xa6, 0xaa, 0xfb, 0x20, 0xc7, 0x03, 0x82, 0x2b, 0x59, 0x49, 0xff, + 0x15, 0x2e, 0x6d, 0x17, 0x4c, 0x73, 0x6a, 0x06, 0x04, 0x9b, 0xdf, 0xa4, 0xcc, 0x5c, 0xb2, 0xb2, + 0x24, 0x41, 0x3d, 0x02, 0x05, 0x2e, 0x90, 0x88, 0x78, 0x65, 0x45, 0xb2, 0x1a, 0xb7, 0x60, 0x49, + 0xbd, 0xf9, 0x6d, 0x4a, 0x2b, 0x0c, 0xd7, 0x56, 0xca, 0xd1, 0xdf, 0x29, 0xa0, 0x9c, 0x2a, 0x0f, + 0x29, 0x17, 0xea, 0xc9, 0x5c, 0x35, 0xe0, 0xed, 0xaa, 0x91, 0xb8, 0x65, 0x2d, 0xd6, 0xd3, 0x9d, + 0x4a, 0xa3, 0xc8, 0x54, 0x25, 0xee, 0x83, 0x3c, 0x15, 0xc4, 0xe3, 0x95, 0x6c, 0x7d, 0xa5, 0x51, + 0xde, 0xd5, 0x6f, 0x4e, 0xdf, 0x5c, 0x4b, 0x71, 0xf9, 0x07, 0x89, 0xd1, 0x1a, 0xfa, 0xf5, 0x37, + 0xb9, 0x71, 0xda, 0x49, 0x79, 0xd4, 0xdf, 0x41, 0x29, 0x69, 0xb5, 0x13, 0xb9, 0x44, 0xa6, 0xbd, + 0x3a, 0x49, 0xa3, 0x99, 0xc6, 0xad, 0xb1, 0x42, 0x7d, 0x02, 0xb6, 0xb8, 0x40, 0xa1, 0xa0, 0x7e, + 0xfb, 0x7f, 0x82, 0x1c, 0x97, 0xfa, 0xa4, 0x49, 0x30, 0xf3, 0x1d, 0x2e, 0x7b, 0xb4, 0x62, 0xfe, + 0x14, 0x0f, 0x6a, 0x5b, 0xcd, 0xc5, 0x12, 0x6b, 0x99, 0x57, 0x3d, 0x01, 0x1b, 0x98, 0xf9, 0x38, + 0x0a, 0x43, 0xe2, 0xe3, 0xfe, 0x11, 0x73, 0x29, 0xee, 0xcb, 0x46, 0xad, 0x9a, 0x30, 0xcd, 0x66, + 0x63, 0x6f, 0x56, 0xf0, 0x79, 0x51, 0xd0, 0x9a, 0x07, 0xa9, 0xbf, 0x80, 0x22, 0x8f, 0x78, 0x40, + 0x7c, 0xa7, 0x92, 0xab, 0x2b, 0x8d, 0x92, 0x59, 0x8e, 0x07, 0xb5, 0x62, 0x73, 0x18, 0xb2, 0x46, + 0xff, 0x54, 0x04, 0xca, 0xa7, 0xcc, 0x3e, 0x26, 0x5e, 0xe0, 0x22, 0x41, 0x2a, 0x79, 0xd9, 0xc3, + 0xdf, 0xae, 0x29, 0xf4, 0xc1, 0x44, 0x2d, 0xe7, 0xee, 0xfb, 0x34, 0xd5, 0xf2, 0xd4, 0x0f, 0x6b, + 0x9a, 0xa9, 0x3e, 0x07, 0x55, 0x1e, 0x61, 0x4c, 0x38, 0x6f, 0x45, 0xee, 0x01, 0xb3, 0xf9, 0x3e, + 0xe5, 0x82, 0x85, 0xfd, 0x43, 0xea, 0x51, 0x51, 0x29, 0xd4, 0x95, 0x46, 0xde, 0xd4, 0xe2, 0x41, + 0xad, 0xda, 0x5c, 0xaa, 0xb2, 0xae, 0x21, 0xa8, 0x16, 0xd8, 0x6c, 0x21, 0xea, 0x12, 0x67, 0x8e, + 0x5d, 0x94, 0xec, 0x6a, 0x3c, 0xa8, 0x6d, 0xde, 0x5b, 0xa8, 0xb0, 0x96, 0x38, 0xf5, 0x0f, 0x0a, + 0x58, 0xbb, 0x72, 0x23, 0xd4, 0x87, 0xa0, 0x80, 0xb0, 0xa0, 0xbd, 0x64, 0x60, 0x92, 0x61, 0xdc, + 0x9e, 0xae, 0x51, 0xf2, 0xae, 0x4d, 0xee, 0xb8, 0x45, 0x5a, 0x24, 0x69, 0x05, 0x99, 0x5c, 0xa3, + 0xff, 0xa4, 0xd5, 0x4a, 0x11, 0xaa, 0x0b, 0xd6, 0x5d, 0xc4, 0xc5, 0x68, 0xd6, 0x8e, 0xa9, 0x47, + 0x64, 0x97, 0xae, 0x96, 0xfe, 0x9a, 0xeb, 0x93, 0x38, 0xcc, 0x1f, 0xe2, 0x41, 0x6d, 0xfd, 0x70, + 0x86, 0x63, 0xcd, 0x91, 0xf5, 0xf7, 0x0a, 0x98, 0xee, 0xce, 0x1d, 0x3c, 0x61, 0x4f, 0x41, 0x49, + 0x8c, 0x46, 0x2a, 0xfb, 0xd5, 0x23, 0x35, 0xbe, 0x8b, 0xe3, 0x79, 0x1a, 0xd3, 0xf4, 0xb7, 0x0a, + 0xf8, 0x6e, 0x46, 0x7f, 0x07, 0xe7, 0xf9, 0xf7, 0xca, 0x93, 0xfc, 0xf3, 0x82, 0xb3, 0xc8, 0x53, + 0x2c, 0x7b, 0x88, 0x4d, 0x78, 0x76, 0xa9, 0x65, 0xce, 0x2f, 0xb5, 0xcc, 0xc5, 0xa5, 0x96, 0x79, + 0x19, 0x6b, 0xca, 0x59, 0xac, 0x29, 0xe7, 0xb1, 0xa6, 0x5c, 0xc4, 0x9a, 0xf2, 0x31, 0xd6, 0x94, + 0xd7, 0x9f, 0xb4, 0xcc, 0xb3, 0xd2, 0xa8, 0x22, 0x5f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x20, 0x1c, + 0xcf, 0x94, 0xe7, 0x07, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/batch/v2alpha1/generated.proto b/vendor/k8s.io/api/batch/v2alpha1/generated.proto index 1fe17ff21a..4321c3361e 100644 --- a/vendor/k8s.io/api/batch/v2alpha1/generated.proto +++ b/vendor/k8s.io/api/batch/v2alpha1/generated.proto @@ -26,7 +26,6 @@ import "k8s.io/api/core/v1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v2alpha1"; diff --git a/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go index 20d87e7e7f..bf0da8bf48 100644 --- a/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/batch/v2alpha1/zz_generated.deepcopy.go @@ -91,24 +91,40 @@ func (in *CronJobSpec) DeepCopyInto(out *CronJobSpec) { *out = *in if in.StartingDeadlineSeconds != nil { in, out := &in.StartingDeadlineSeconds, &out.StartingDeadlineSeconds - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.Suspend != nil { in, out := &in.Suspend, &out.Suspend - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } in.JobTemplate.DeepCopyInto(&out.JobTemplate) if in.SuccessfulJobsHistoryLimit != nil { in, out := &in.SuccessfulJobsHistoryLimit, &out.SuccessfulJobsHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.FailedJobsHistoryLimit != nil { in, out := &in.FailedJobsHistoryLimit, &out.FailedJobsHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -133,7 +149,11 @@ func (in *CronJobStatus) DeepCopyInto(out *CronJobStatus) { } if in.LastScheduleTime != nil { in, out := &in.LastScheduleTime, &out.LastScheduleTime - *out = (*in).DeepCopy() + if *in == nil { + *out = nil + } else { + *out = (*in).DeepCopy() + } } return } diff --git a/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go b/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go index 5de4ade7ef..eda1599005 100644 --- a/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go +++ b/vendor/k8s.io/api/certificates/v1beta1/generated.pb.go @@ -1638,56 +1638,56 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 816 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xf6, 0xfa, 0x2b, 0xf6, 0x38, 0xa4, 0xd5, 0x08, 0x55, 0x4b, 0xa4, 0xee, 0x46, 0x2b, 0x40, - 0xe1, 0xa3, 0xb3, 0xa4, 0x20, 0x88, 0x72, 0x40, 0xb0, 0xa1, 0x82, 0x88, 0x56, 0x48, 0xd3, 0x86, - 0x03, 0x42, 0xa2, 0xe3, 0xf5, 0xdb, 0xcd, 0xd4, 0xd9, 0x0f, 0x76, 0x66, 0x0d, 0xbe, 0xf5, 0x27, - 0x70, 0xe4, 0x82, 0xc4, 0x2f, 0xe1, 0x1c, 0x0e, 0x48, 0x3d, 0xf6, 0x80, 0x2c, 0x62, 0xfe, 0x45, - 0x4f, 0x68, 0x66, 0xc7, 0x5e, 0x63, 0xcb, 0x75, 0xd5, 0xdc, 0xf6, 0x7d, 0xde, 0xf7, 0x79, 0xde, - 0xcf, 0x59, 0xf4, 0xd5, 0xf0, 0x50, 0x10, 0x9e, 0xfa, 0xc3, 0xa2, 0x0f, 0x79, 0x02, 0x12, 0x84, - 0x3f, 0x82, 0x64, 0x90, 0xe6, 0xbe, 0x71, 0xb0, 0x8c, 0xfb, 0x21, 0xe4, 0x92, 0x3f, 0xe2, 0x21, - 0xd3, 0xee, 0x83, 0x3e, 0x48, 0x76, 0xe0, 0x47, 0x90, 0x40, 0xce, 0x24, 0x0c, 0x48, 0x96, 0xa7, - 0x32, 0xc5, 0x6e, 0x49, 0x20, 0x2c, 0xe3, 0x64, 0x91, 0x40, 0x0c, 0x61, 0xf7, 0x56, 0xc4, 0xe5, - 0x59, 0xd1, 0x27, 0x61, 0x1a, 0xfb, 0x51, 0x1a, 0xa5, 0xbe, 0xe6, 0xf5, 0x8b, 0x47, 0xda, 0xd2, - 0x86, 0xfe, 0x2a, 0xf5, 0x76, 0x3f, 0xaa, 0x0a, 0x88, 0x59, 0x78, 0xc6, 0x13, 0xc8, 0xc7, 0x7e, - 0x36, 0x8c, 0x14, 0x20, 0xfc, 0x18, 0x24, 0xf3, 0x47, 0x2b, 0x55, 0xec, 0xfa, 0xeb, 0x58, 0x79, - 0x91, 0x48, 0x1e, 0xc3, 0x0a, 0xe1, 0xe3, 0x4d, 0x04, 0x11, 0x9e, 0x41, 0xcc, 0x56, 0x78, 0x1f, - 0xae, 0xe3, 0x15, 0x92, 0x9f, 0xfb, 0x3c, 0x91, 0x42, 0xe6, 0xcb, 0x24, 0xef, 0xcf, 0x3a, 0x7a, - 0xe3, 0xb8, 0x9a, 0xcd, 0x7d, 0x1e, 0x25, 0x3c, 0x89, 0x28, 0xfc, 0x58, 0x80, 0x90, 0xf8, 0x21, - 0xea, 0xa8, 0xb6, 0x06, 0x4c, 0x32, 0xdb, 0xda, 0xb3, 0xf6, 0x7b, 0xb7, 0x3f, 0x20, 0xd5, 0x50, - 0xe7, 0x59, 0x48, 0x36, 0x8c, 0x14, 0x20, 0x88, 0x8a, 0x26, 0xa3, 0x03, 0xf2, 0x4d, 0xff, 0x31, - 0x84, 0xf2, 0x1e, 0x48, 0x16, 0xe0, 0x8b, 0x89, 0x5b, 0x9b, 0x4e, 0x5c, 0x54, 0x61, 0x74, 0xae, - 0x8a, 0x1f, 0xa2, 0xa6, 0xc8, 0x20, 0xb4, 0xeb, 0x5a, 0xfd, 0x53, 0xb2, 0x61, 0x65, 0x64, 0x6d, - 0xad, 0xf7, 0x33, 0x08, 0x83, 0x6d, 0x93, 0xab, 0xa9, 0x2c, 0xaa, 0x95, 0xf1, 0x19, 0x6a, 0x0b, - 0xc9, 0x64, 0x21, 0xec, 0x86, 0xce, 0xf1, 0xd9, 0x15, 0x72, 0x68, 0x9d, 0x60, 0xc7, 0x64, 0x69, - 0x97, 0x36, 0x35, 0xfa, 0xde, 0x6f, 0x75, 0xe4, 0xad, 0xe5, 0x1e, 0xa7, 0xc9, 0x80, 0x4b, 0x9e, - 0x26, 0xf8, 0x10, 0x35, 0xe5, 0x38, 0x03, 0x3d, 0xd0, 0x6e, 0xf0, 0xe6, 0xac, 0xe4, 0x07, 0xe3, - 0x0c, 0x9e, 0x4f, 0xdc, 0xd7, 0x97, 0xe3, 0x15, 0x4e, 0x35, 0x03, 0xbf, 0x8d, 0xda, 0x39, 0x30, - 0x91, 0x26, 0x7a, 0x5c, 0xdd, 0xaa, 0x10, 0xaa, 0x51, 0x6a, 0xbc, 0xf8, 0x1d, 0xb4, 0x15, 0x83, - 0x10, 0x2c, 0x02, 0xdd, 0x73, 0x37, 0xb8, 0x66, 0x02, 0xb7, 0xee, 0x95, 0x30, 0x9d, 0xf9, 0xf1, - 0x63, 0xb4, 0x73, 0xce, 0x84, 0x3c, 0xcd, 0x06, 0x4c, 0xc2, 0x03, 0x1e, 0x83, 0xdd, 0xd4, 0x53, - 0x7a, 0xf7, 0xe5, 0xf6, 0xac, 0x18, 0xc1, 0x0d, 0xa3, 0xbe, 0x73, 0xf7, 0x7f, 0x4a, 0x74, 0x49, - 0xd9, 0x9b, 0x58, 0xe8, 0xe6, 0xda, 0xf9, 0xdc, 0xe5, 0x42, 0xe2, 0xef, 0x57, 0xee, 0x8d, 0xbc, - 0x5c, 0x1d, 0x8a, 0xad, 0xaf, 0xed, 0xba, 0xa9, 0xa5, 0x33, 0x43, 0x16, 0x6e, 0xed, 0x07, 0xd4, - 0xe2, 0x12, 0x62, 0x61, 0xd7, 0xf7, 0x1a, 0xfb, 0xbd, 0xdb, 0x47, 0xaf, 0x7e, 0x08, 0xc1, 0x6b, - 0x26, 0x4d, 0xeb, 0x44, 0x09, 0xd2, 0x52, 0xd7, 0xfb, 0xa3, 0xf1, 0x82, 0x06, 0xd5, 0x49, 0xe2, - 0xb7, 0xd0, 0x56, 0x5e, 0x9a, 0xba, 0xbf, 0xed, 0xa0, 0xa7, 0xb6, 0x62, 0x22, 0xe8, 0xcc, 0x87, - 0xdf, 0x47, 0x9d, 0x42, 0x40, 0x9e, 0xb0, 0x18, 0xcc, 0xaa, 0xe7, 0x7d, 0x9d, 0x1a, 0x9c, 0xce, - 0x23, 0xf0, 0x4d, 0xd4, 0x28, 0xf8, 0xc0, 0xac, 0xba, 0x67, 0x02, 0x1b, 0xa7, 0x27, 0x5f, 0x50, - 0x85, 0x63, 0x0f, 0xb5, 0xa3, 0x3c, 0x2d, 0x32, 0x61, 0x37, 0xf7, 0x1a, 0xfb, 0xdd, 0x00, 0xa9, - 0x8b, 0xf9, 0x52, 0x23, 0xd4, 0x78, 0x30, 0x41, 0xed, 0x42, 0xdd, 0x83, 0xb0, 0x5b, 0x3a, 0xe6, - 0x86, 0x8a, 0x39, 0xd5, 0xc8, 0xf3, 0x89, 0xdb, 0xf9, 0x1a, 0xc6, 0xda, 0xa0, 0x26, 0x0a, 0x27, - 0xa8, 0x05, 0x3f, 0xcb, 0x9c, 0xd9, 0x6d, 0x3d, 0xca, 0x93, 0xab, 0xbd, 0x5b, 0x72, 0x47, 0x69, - 0xdd, 0x49, 0x64, 0x3e, 0xae, 0x26, 0xab, 0x31, 0x5a, 0xa6, 0xd9, 0x05, 0x84, 0xaa, 0x18, 0x7c, - 0x1d, 0x35, 0x86, 0x30, 0x2e, 0x1f, 0x10, 0x55, 0x9f, 0xf8, 0x73, 0xd4, 0x1a, 0xb1, 0xf3, 0x02, - 0xcc, 0x7f, 0xe4, 0xbd, 0x8d, 0xf5, 0x68, 0xb5, 0x6f, 0x15, 0x85, 0x96, 0xcc, 0xa3, 0xfa, 0xa1, - 0xe5, 0xfd, 0x65, 0x21, 0x77, 0xc3, 0xeb, 0xc7, 0x3f, 0x21, 0x14, 0xce, 0xde, 0xa6, 0xb0, 0x2d, - 0xdd, 0xff, 0xf1, 0xab, 0xf7, 0x3f, 0x7f, 0xe7, 0xd5, 0x8f, 0x72, 0x0e, 0x09, 0xba, 0x90, 0x0a, - 0x1f, 0xa0, 0xde, 0x82, 0xb4, 0xee, 0x74, 0x3b, 0xb8, 0x36, 0x9d, 0xb8, 0xbd, 0x05, 0x71, 0xba, - 0x18, 0xe3, 0x7d, 0x62, 0xc6, 0xa6, 0x1b, 0xc5, 0xee, 0xec, 0xfe, 0x2d, 0xbd, 0xe3, 0xee, 0xf2, - 0xfd, 0x1e, 0x75, 0x7e, 0xfd, 0xdd, 0xad, 0x3d, 0xf9, 0x7b, 0xaf, 0x16, 0xdc, 0xba, 0xb8, 0x74, - 0x6a, 0x4f, 0x2f, 0x9d, 0xda, 0xb3, 0x4b, 0xa7, 0xf6, 0x64, 0xea, 0x58, 0x17, 0x53, 0xc7, 0x7a, - 0x3a, 0x75, 0xac, 0x67, 0x53, 0xc7, 0xfa, 0x67, 0xea, 0x58, 0xbf, 0xfc, 0xeb, 0xd4, 0xbe, 0xdb, - 0x32, 0xdd, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0x73, 0x7d, 0xca, 0x2a, 0xb4, 0x07, 0x00, 0x00, + // 804 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0x4d, 0x8f, 0xdb, 0x44, + 0x18, 0x8e, 0xf3, 0xb5, 0xc9, 0x64, 0xd9, 0x56, 0x23, 0x54, 0x99, 0x95, 0x6a, 0xaf, 0x2c, 0x40, + 0xcb, 0x47, 0xc7, 0x6c, 0x85, 0x60, 0xb5, 0x07, 0x04, 0x5e, 0x2a, 0x58, 0xd1, 0x0a, 0x69, 0xda, + 0x70, 0x40, 0x48, 0x74, 0xe2, 0xbc, 0x75, 0xa6, 0xa9, 0x3f, 0xf0, 0x8c, 0x03, 0xb9, 0xf5, 0x27, + 0x70, 0xe4, 0x82, 0xc4, 0x2f, 0xe1, 0xbc, 0x1c, 0x90, 0x7a, 0xec, 0x01, 0x45, 0x6c, 0xf8, 0x17, + 0x3d, 0xa1, 0x19, 0x4f, 0xe2, 0x90, 0x55, 0x48, 0xd5, 0xbd, 0x79, 0x9e, 0xf7, 0x79, 0x9e, 0xf7, + 0x63, 0xde, 0x31, 0xfa, 0x72, 0x7c, 0x2c, 0x08, 0x4f, 0xfd, 0x71, 0x31, 0x80, 0x3c, 0x01, 0x09, + 0xc2, 0x9f, 0x40, 0x32, 0x4c, 0x73, 0xdf, 0x04, 0x58, 0xc6, 0xfd, 0x10, 0x72, 0xc9, 0x1f, 0xf1, + 0x90, 0xe9, 0xf0, 0xd1, 0x00, 0x24, 0x3b, 0xf2, 0x23, 0x48, 0x20, 0x67, 0x12, 0x86, 0x24, 0xcb, + 0x53, 0x99, 0x62, 0xb7, 0x14, 0x10, 0x96, 0x71, 0xb2, 0x2a, 0x20, 0x46, 0xb0, 0x7f, 0x2b, 0xe2, + 0x72, 0x54, 0x0c, 0x48, 0x98, 0xc6, 0x7e, 0x94, 0x46, 0xa9, 0xaf, 0x75, 0x83, 0xe2, 0x91, 0x3e, + 0xe9, 0x83, 0xfe, 0x2a, 0xfd, 0xf6, 0x3f, 0xac, 0x0a, 0x88, 0x59, 0x38, 0xe2, 0x09, 0xe4, 0x53, + 0x3f, 0x1b, 0x47, 0x0a, 0x10, 0x7e, 0x0c, 0x92, 0xf9, 0x93, 0x4b, 0x55, 0xec, 0xfb, 0x9b, 0x54, + 0x79, 0x91, 0x48, 0x1e, 0xc3, 0x25, 0xc1, 0x47, 0xdb, 0x04, 0x22, 0x1c, 0x41, 0xcc, 0xd6, 0x75, + 0xde, 0x1f, 0x75, 0xf4, 0xc6, 0x69, 0xd5, 0xe6, 0x7d, 0x1e, 0x25, 0x3c, 0x89, 0x28, 0xfc, 0x50, + 0x80, 0x90, 0xf8, 0x21, 0xea, 0xa8, 0x0a, 0x87, 0x4c, 0x32, 0xdb, 0x3a, 0xb0, 0x0e, 0x7b, 0xb7, + 0x3f, 0x20, 0xd5, 0x7c, 0x96, 0x89, 0x48, 0x36, 0x8e, 0x14, 0x20, 0x88, 0x62, 0x93, 0xc9, 0x11, + 0xf9, 0x7a, 0xf0, 0x18, 0x42, 0x79, 0x0f, 0x24, 0x0b, 0xf0, 0xf9, 0xcc, 0xad, 0xcd, 0x67, 0x2e, + 0xaa, 0x30, 0xba, 0x74, 0xc5, 0x0f, 0x51, 0x53, 0x64, 0x10, 0xda, 0x75, 0xed, 0xfe, 0x09, 0xd9, + 0x32, 0x7d, 0xb2, 0xb1, 0xd6, 0xfb, 0x19, 0x84, 0xc1, 0xae, 0xc9, 0xd5, 0x54, 0x27, 0xaa, 0x9d, + 0xf1, 0x08, 0xb5, 0x85, 0x64, 0xb2, 0x10, 0x76, 0x43, 0xe7, 0xf8, 0xf4, 0x0a, 0x39, 0xb4, 0x4f, + 0xb0, 0x67, 0xb2, 0xb4, 0xcb, 0x33, 0x35, 0xfe, 0xde, 0xaf, 0x75, 0xe4, 0x6d, 0xd4, 0x9e, 0xa6, + 0xc9, 0x90, 0x4b, 0x9e, 0x26, 0xf8, 0x18, 0x35, 0xe5, 0x34, 0x03, 0x3d, 0xd0, 0x6e, 0xf0, 0xe6, + 0xa2, 0xe4, 0x07, 0xd3, 0x0c, 0x5e, 0xcc, 0xdc, 0xd7, 0xd7, 0xf9, 0x0a, 0xa7, 0x5a, 0x81, 0xdf, + 0x46, 0xed, 0x1c, 0x98, 0x48, 0x13, 0x3d, 0xae, 0x6e, 0x55, 0x08, 0xd5, 0x28, 0x35, 0x51, 0xfc, + 0x0e, 0xda, 0x89, 0x41, 0x08, 0x16, 0x81, 0xee, 0xb9, 0x1b, 0x5c, 0x33, 0xc4, 0x9d, 0x7b, 0x25, + 0x4c, 0x17, 0x71, 0xfc, 0x18, 0xed, 0x3d, 0x61, 0x42, 0xf6, 0xb3, 0x21, 0x93, 0xf0, 0x80, 0xc7, + 0x60, 0x37, 0xf5, 0x94, 0xde, 0x7d, 0xb9, 0x7b, 0x56, 0x8a, 0xe0, 0x86, 0x71, 0xdf, 0xbb, 0xfb, + 0x1f, 0x27, 0xba, 0xe6, 0xec, 0xcd, 0x2c, 0x74, 0x73, 0xe3, 0x7c, 0xee, 0x72, 0x21, 0xf1, 0x77, + 0x97, 0xf6, 0x8d, 0xbc, 0x5c, 0x1d, 0x4a, 0xad, 0xb7, 0xed, 0xba, 0xa9, 0xa5, 0xb3, 0x40, 0x56, + 0x76, 0xed, 0x7b, 0xd4, 0xe2, 0x12, 0x62, 0x61, 0xd7, 0x0f, 0x1a, 0x87, 0xbd, 0xdb, 0x27, 0xaf, + 0xbe, 0x08, 0xc1, 0x6b, 0x26, 0x4d, 0xeb, 0x4c, 0x19, 0xd2, 0xd2, 0xd7, 0xfb, 0xbd, 0xf1, 0x3f, + 0x0d, 0xaa, 0x95, 0xc4, 0x6f, 0xa1, 0x9d, 0xbc, 0x3c, 0xea, 0xfe, 0x76, 0x83, 0x9e, 0xba, 0x15, + 0xc3, 0xa0, 0x8b, 0x18, 0x7e, 0x1f, 0x75, 0x0a, 0x01, 0x79, 0xc2, 0x62, 0x30, 0x57, 0xbd, 0xec, + 0xab, 0x6f, 0x70, 0xba, 0x64, 0xe0, 0x9b, 0xa8, 0x51, 0xf0, 0xa1, 0xb9, 0xea, 0x9e, 0x21, 0x36, + 0xfa, 0x67, 0x9f, 0x53, 0x85, 0x63, 0x0f, 0xb5, 0xa3, 0x3c, 0x2d, 0x32, 0x61, 0x37, 0x0f, 0x1a, + 0x87, 0xdd, 0x00, 0xa9, 0x8d, 0xf9, 0x42, 0x23, 0xd4, 0x44, 0x30, 0x41, 0xed, 0x42, 0xed, 0x83, + 0xb0, 0x5b, 0x9a, 0x73, 0x43, 0x71, 0xfa, 0x1a, 0x79, 0x31, 0x73, 0x3b, 0x5f, 0xc1, 0x54, 0x1f, + 0xa8, 0x61, 0xe1, 0x04, 0xb5, 0xe0, 0x27, 0x99, 0x33, 0xbb, 0xad, 0x47, 0x79, 0x76, 0xb5, 0x77, + 0x4b, 0xee, 0x28, 0xaf, 0x3b, 0x89, 0xcc, 0xa7, 0xd5, 0x64, 0x35, 0x46, 0xcb, 0x34, 0xfb, 0x80, + 0x50, 0xc5, 0xc1, 0xd7, 0x51, 0x63, 0x0c, 0xd3, 0xf2, 0x01, 0x51, 0xf5, 0x89, 0x3f, 0x43, 0xad, + 0x09, 0x7b, 0x52, 0x80, 0xf9, 0x8f, 0xbc, 0xb7, 0xb5, 0x1e, 0xed, 0xf6, 0x8d, 0x92, 0xd0, 0x52, + 0x79, 0x52, 0x3f, 0xb6, 0xbc, 0x3f, 0x2d, 0xe4, 0x6e, 0x79, 0xfd, 0xf8, 0x47, 0x84, 0xc2, 0xc5, + 0xdb, 0x14, 0xb6, 0xa5, 0xfb, 0x3f, 0x7d, 0xf5, 0xfe, 0x97, 0xef, 0xbc, 0xfa, 0x51, 0x2e, 0x21, + 0x41, 0x57, 0x52, 0xe1, 0x23, 0xd4, 0x5b, 0xb1, 0xd6, 0x9d, 0xee, 0x06, 0xd7, 0xe6, 0x33, 0xb7, + 0xb7, 0x62, 0x4e, 0x57, 0x39, 0xde, 0xc7, 0x66, 0x6c, 0xba, 0x51, 0xec, 0x2e, 0xf6, 0xdf, 0xd2, + 0x77, 0xdc, 0x5d, 0xdf, 0xdf, 0x93, 0xce, 0x2f, 0xbf, 0xb9, 0xb5, 0xa7, 0x7f, 0x1d, 0xd4, 0x82, + 0x5b, 0xe7, 0x17, 0x4e, 0xed, 0xd9, 0x85, 0x53, 0x7b, 0x7e, 0xe1, 0xd4, 0x9e, 0xce, 0x1d, 0xeb, + 0x7c, 0xee, 0x58, 0xcf, 0xe6, 0x8e, 0xf5, 0x7c, 0xee, 0x58, 0x7f, 0xcf, 0x1d, 0xeb, 0xe7, 0x7f, + 0x9c, 0xda, 0xb7, 0x3b, 0xa6, 0xbb, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xb7, 0x6b, 0x5b, 0xf9, + 0x7f, 0x07, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/certificates/v1beta1/generated.proto b/vendor/k8s.io/api/certificates/v1beta1/generated.proto index 1d79767ed4..5200224a2f 100644 --- a/vendor/k8s.io/api/certificates/v1beta1/generated.proto +++ b/vendor/k8s.io/api/certificates/v1beta1/generated.proto @@ -24,7 +24,6 @@ package k8s.io.api.certificates.v1beta1; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1beta1"; diff --git a/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go index 1b103f1553..ffd24c30fc 100644 --- a/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/certificates/v1beta1/zz_generated.deepcopy.go @@ -124,15 +124,12 @@ func (in *CertificateSigningRequestSpec) DeepCopyInto(out *CertificateSigningReq in, out := &in.Extra, &out.Extra *out = make(map[string]ExtraValue, len(*in)) for key, val := range *in { - var outVal []string if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal - *out = make(ExtraValue, len(*in)) - copy(*out, *in) + (*out)[key] = make([]string, len(val)) + copy((*out)[key], val) } - (*out)[key] = outVal } } return diff --git a/vendor/k8s.io/api/core/v1/generated.pb.go b/vendor/k8s.io/api/core/v1/generated.pb.go index 48b5a3c5b5..a809ceb0ae 100644 --- a/vendor/k8s.io/api/core/v1/generated.pb.go +++ b/vendor/k8s.io/api/core/v1/generated.pb.go @@ -50969,799 +50969,797 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 12696 bytes of a gzipped FileDescriptorProto + // 12669 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x6c, 0x24, 0x57, - 0x76, 0x18, 0xbc, 0xd5, 0xdd, 0x7c, 0xf4, 0xe1, 0xfb, 0xce, 0x70, 0xc4, 0xa1, 0x34, 0xd3, 0xa3, - 0xd2, 0xee, 0x68, 0xb4, 0x92, 0xc8, 0xd5, 0x48, 0x5a, 0xc9, 0xab, 0x5d, 0xd9, 0x24, 0x9b, 0x9c, - 0xa1, 0x66, 0xc8, 0x69, 0xdd, 0xe6, 0x8c, 0x76, 0x65, 0xed, 0x7a, 0x8b, 0xdd, 0x97, 0x64, 0x89, - 0xc5, 0xaa, 0x56, 0x55, 0x35, 0x67, 0xa8, 0xcf, 0x06, 0xbe, 0xac, 0x63, 0x27, 0x7e, 0x20, 0x58, - 0xc4, 0x46, 0x1e, 0xb6, 0xe1, 0x00, 0x8e, 0x03, 0xdb, 0x71, 0x12, 0xc4, 0xb1, 0x63, 0x3b, 0xbb, - 0x76, 0xe2, 0x38, 0xf9, 0xe1, 0xfc, 0xd9, 0x38, 0x01, 0x82, 0x35, 0x60, 0x84, 0xb1, 0x69, 0x27, - 0x81, 0x7f, 0xe4, 0x81, 0x38, 0x7f, 0xcc, 0x18, 0x71, 0x70, 0x9f, 0x75, 0x6f, 0x75, 0x55, 0x77, - 0x73, 0xc4, 0xa1, 0x64, 0x63, 0xff, 0x75, 0xdf, 0x73, 0xee, 0xb9, 0xb7, 0xee, 0xf3, 0x9c, 0x73, - 0xcf, 0x03, 0x5e, 0xdb, 0x7d, 0x35, 0x9a, 0x73, 0x83, 0xf9, 0xdd, 0xf6, 0x26, 0x09, 0x7d, 0x12, - 0x93, 0x68, 0x7e, 0x9f, 0xf8, 0xcd, 0x20, 0x9c, 0x17, 0x00, 0xa7, 0xe5, 0xce, 0x37, 0x82, 0x90, - 0xcc, 0xef, 0xbf, 0x30, 0xbf, 0x4d, 0x7c, 0x12, 0x3a, 0x31, 0x69, 0xce, 0xb5, 0xc2, 0x20, 0x0e, - 0x10, 0xe2, 0x38, 0x73, 0x4e, 0xcb, 0x9d, 0xa3, 0x38, 0x73, 0xfb, 0x2f, 0xcc, 0x3e, 0xbf, 0xed, - 0xc6, 0x3b, 0xed, 0xcd, 0xb9, 0x46, 0xb0, 0x37, 0xbf, 0x1d, 0x6c, 0x07, 0xf3, 0x0c, 0x75, 0xb3, - 0xbd, 0xc5, 0xfe, 0xb1, 0x3f, 0xec, 0x17, 0x27, 0x31, 0xbb, 0x96, 0x34, 0x43, 0x1e, 0xc4, 0xc4, - 0x8f, 0xdc, 0xc0, 0x8f, 0x9e, 0x77, 0x5a, 0x6e, 0x44, 0xc2, 0x7d, 0x12, 0xce, 0xb7, 0x76, 0xb7, - 0x29, 0x2c, 0x32, 0x11, 0xe6, 0xf7, 0x5f, 0xd8, 0x24, 0xb1, 0xd3, 0xd1, 0xa3, 0xd9, 0x97, 0x12, - 0x72, 0x7b, 0x4e, 0x63, 0xc7, 0xf5, 0x49, 0x78, 0x20, 0x69, 0xcc, 0x87, 0x24, 0x0a, 0xda, 0x61, - 0x83, 0x9c, 0xa8, 0x56, 0x34, 0xbf, 0x47, 0x62, 0x27, 0xe3, 0xeb, 0x67, 0xe7, 0xf3, 0x6a, 0x85, - 0x6d, 0x3f, 0x76, 0xf7, 0x3a, 0x9b, 0xf9, 0x74, 0xaf, 0x0a, 0x51, 0x63, 0x87, 0xec, 0x39, 0x1d, - 0xf5, 0x5e, 0xcc, 0xab, 0xd7, 0x8e, 0x5d, 0x6f, 0xde, 0xf5, 0xe3, 0x28, 0x0e, 0xd3, 0x95, 0xec, - 0x6f, 0x5a, 0x70, 0x65, 0xe1, 0xad, 0xfa, 0xb2, 0xe7, 0x44, 0xb1, 0xdb, 0x58, 0xf4, 0x82, 0xc6, - 0x6e, 0x3d, 0x0e, 0x42, 0x72, 0x2f, 0xf0, 0xda, 0x7b, 0xa4, 0xce, 0x06, 0x02, 0x3d, 0x07, 0xc3, - 0xfb, 0xec, 0xff, 0x6a, 0x75, 0xc6, 0xba, 0x62, 0x5d, 0x2b, 0x2f, 0x4e, 0xfe, 0xd6, 0x61, 0xe5, - 0x63, 0x47, 0x87, 0x95, 0xe1, 0x7b, 0xa2, 0x1c, 0x2b, 0x0c, 0x74, 0x15, 0x06, 0xb7, 0xa2, 0x8d, - 0x83, 0x16, 0x99, 0x29, 0x30, 0xdc, 0x71, 0x81, 0x3b, 0xb8, 0x52, 0xa7, 0xa5, 0x58, 0x40, 0xd1, - 0x3c, 0x94, 0x5b, 0x4e, 0x18, 0xbb, 0xb1, 0x1b, 0xf8, 0x33, 0xc5, 0x2b, 0xd6, 0xb5, 0x81, 0xc5, - 0x29, 0x81, 0x5a, 0xae, 0x49, 0x00, 0x4e, 0x70, 0x68, 0x37, 0x42, 0xe2, 0x34, 0xef, 0xf8, 0xde, - 0xc1, 0x4c, 0xe9, 0x8a, 0x75, 0x6d, 0x38, 0xe9, 0x06, 0x16, 0xe5, 0x58, 0x61, 0xd8, 0x3f, 0x56, - 0x80, 0xe1, 0x85, 0xad, 0x2d, 0xd7, 0x77, 0xe3, 0x03, 0x74, 0x0f, 0x46, 0xfd, 0xa0, 0x49, 0xe4, - 0x7f, 0xf6, 0x15, 0x23, 0xd7, 0xaf, 0xcc, 0x75, 0xae, 0xcc, 0xb9, 0x75, 0x0d, 0x6f, 0x71, 0xf2, - 0xe8, 0xb0, 0x32, 0xaa, 0x97, 0x60, 0x83, 0x0e, 0xc2, 0x30, 0xd2, 0x0a, 0x9a, 0x8a, 0x6c, 0x81, - 0x91, 0xad, 0x64, 0x91, 0xad, 0x25, 0x68, 0x8b, 0x13, 0x47, 0x87, 0x95, 0x11, 0xad, 0x00, 0xeb, - 0x44, 0xd0, 0x26, 0x4c, 0xd0, 0xbf, 0x7e, 0xec, 0x2a, 0xba, 0x45, 0x46, 0xf7, 0xa9, 0x3c, 0xba, - 0x1a, 0xea, 0xe2, 0xb9, 0xa3, 0xc3, 0xca, 0x44, 0xaa, 0x10, 0xa7, 0x09, 0xda, 0xef, 0xc3, 0xf8, - 0x42, 0x1c, 0x3b, 0x8d, 0x1d, 0xd2, 0xe4, 0x33, 0x88, 0x5e, 0x82, 0x92, 0xef, 0xec, 0x11, 0x31, - 0xbf, 0x57, 0xc4, 0xc0, 0x96, 0xd6, 0x9d, 0x3d, 0x72, 0x7c, 0x58, 0x99, 0xbc, 0xeb, 0xbb, 0xef, - 0xb5, 0xc5, 0xaa, 0xa0, 0x65, 0x98, 0x61, 0xa3, 0xeb, 0x00, 0x4d, 0xb2, 0xef, 0x36, 0x48, 0xcd, - 0x89, 0x77, 0xc4, 0x7c, 0x23, 0x51, 0x17, 0xaa, 0x0a, 0x82, 0x35, 0x2c, 0xfb, 0x01, 0x94, 0x17, - 0xf6, 0x03, 0xb7, 0x59, 0x0b, 0x9a, 0x11, 0xda, 0x85, 0x89, 0x56, 0x48, 0xb6, 0x48, 0xa8, 0x8a, - 0x66, 0xac, 0x2b, 0xc5, 0x6b, 0x23, 0xd7, 0xaf, 0x65, 0x7e, 0xac, 0x89, 0xba, 0xec, 0xc7, 0xe1, - 0xc1, 0xe2, 0x63, 0xa2, 0xbd, 0x89, 0x14, 0x14, 0xa7, 0x29, 0xdb, 0xff, 0xba, 0x00, 0xd3, 0x0b, - 0xef, 0xb7, 0x43, 0x52, 0x75, 0xa3, 0xdd, 0xf4, 0x0a, 0x6f, 0xba, 0xd1, 0xee, 0x7a, 0x32, 0x02, - 0x6a, 0x69, 0x55, 0x45, 0x39, 0x56, 0x18, 0xe8, 0x79, 0x18, 0xa2, 0xbf, 0xef, 0xe2, 0x55, 0xf1, - 0xc9, 0xe7, 0x04, 0xf2, 0x48, 0xd5, 0x89, 0x9d, 0x2a, 0x07, 0x61, 0x89, 0x83, 0xd6, 0x60, 0xa4, - 0xc1, 0x36, 0xe4, 0xf6, 0x5a, 0xd0, 0x24, 0x6c, 0x32, 0xcb, 0x8b, 0xcf, 0x52, 0xf4, 0xa5, 0xa4, - 0xf8, 0xf8, 0xb0, 0x32, 0xc3, 0xfb, 0x26, 0x48, 0x68, 0x30, 0xac, 0xd7, 0x47, 0xb6, 0xda, 0x5f, - 0x25, 0x46, 0x09, 0x32, 0xf6, 0xd6, 0x35, 0x6d, 0xab, 0x0c, 0xb0, 0xad, 0x32, 0x9a, 0xbd, 0x4d, - 0xd0, 0x0b, 0x50, 0xda, 0x75, 0xfd, 0xe6, 0xcc, 0x20, 0xa3, 0x75, 0x89, 0xce, 0xf9, 0x2d, 0xd7, - 0x6f, 0x1e, 0x1f, 0x56, 0xa6, 0x8c, 0xee, 0xd0, 0x42, 0xcc, 0x50, 0xed, 0x3f, 0xb6, 0xa0, 0xc2, - 0x60, 0x2b, 0xae, 0x47, 0x6a, 0x24, 0x8c, 0xdc, 0x28, 0x26, 0x7e, 0x6c, 0x0c, 0xe8, 0x75, 0x80, - 0x88, 0x34, 0x42, 0x12, 0x6b, 0x43, 0xaa, 0x16, 0x46, 0x5d, 0x41, 0xb0, 0x86, 0x45, 0x0f, 0x84, - 0x68, 0xc7, 0x09, 0xd9, 0xfa, 0x12, 0x03, 0xab, 0x0e, 0x84, 0xba, 0x04, 0xe0, 0x04, 0xc7, 0x38, - 0x10, 0x8a, 0xbd, 0x0e, 0x04, 0xf4, 0x39, 0x98, 0x48, 0x1a, 0x8b, 0x5a, 0x4e, 0x43, 0x0e, 0x20, - 0xdb, 0x32, 0x75, 0x13, 0x84, 0xd3, 0xb8, 0xf6, 0xdf, 0xb7, 0xc4, 0xe2, 0xa1, 0x5f, 0xfd, 0x11, - 0xff, 0x56, 0xfb, 0x57, 0x2d, 0x18, 0x5a, 0x74, 0xfd, 0xa6, 0xeb, 0x6f, 0xa3, 0x2f, 0xc3, 0x30, - 0xbd, 0x9b, 0x9a, 0x4e, 0xec, 0x88, 0x73, 0xef, 0x53, 0xda, 0xde, 0x52, 0x57, 0xc5, 0x5c, 0x6b, - 0x77, 0x9b, 0x16, 0x44, 0x73, 0x14, 0x9b, 0xee, 0xb6, 0x3b, 0x9b, 0xef, 0x92, 0x46, 0xbc, 0x46, - 0x62, 0x27, 0xf9, 0x9c, 0xa4, 0x0c, 0x2b, 0xaa, 0xe8, 0x16, 0x0c, 0xc6, 0x4e, 0xb8, 0x4d, 0x62, - 0x71, 0x00, 0x66, 0x1e, 0x54, 0xbc, 0x26, 0xa6, 0x3b, 0x92, 0xf8, 0x0d, 0x92, 0x5c, 0x0b, 0x1b, - 0xac, 0x2a, 0x16, 0x24, 0xec, 0x1f, 0x1c, 0x84, 0x8b, 0x4b, 0xf5, 0xd5, 0x9c, 0x75, 0x75, 0x15, - 0x06, 0x9b, 0xa1, 0xbb, 0x4f, 0x42, 0x31, 0xce, 0x8a, 0x4a, 0x95, 0x95, 0x62, 0x01, 0x45, 0xaf, - 0xc2, 0x28, 0xbf, 0x90, 0x6e, 0x3a, 0x7e, 0xd3, 0x93, 0x43, 0x7c, 0x5e, 0x60, 0x8f, 0xde, 0xd3, - 0x60, 0xd8, 0xc0, 0x3c, 0xe1, 0xa2, 0xba, 0x9a, 0xda, 0x8c, 0x79, 0x97, 0xdd, 0x0f, 0x58, 0x30, - 0xc9, 0x9b, 0x59, 0x88, 0xe3, 0xd0, 0xdd, 0x6c, 0xc7, 0x24, 0x9a, 0x19, 0x60, 0x27, 0xdd, 0x52, - 0xd6, 0x68, 0xe5, 0x8e, 0xc0, 0xdc, 0xbd, 0x14, 0x15, 0x7e, 0x08, 0xce, 0x88, 0x76, 0x27, 0xd3, - 0x60, 0xdc, 0xd1, 0x2c, 0xfa, 0x5e, 0x0b, 0x66, 0x1b, 0x81, 0x1f, 0x87, 0x81, 0xe7, 0x91, 0xb0, - 0xd6, 0xde, 0xf4, 0xdc, 0x68, 0x87, 0xaf, 0x53, 0x4c, 0xb6, 0xd8, 0x49, 0x90, 0x33, 0x87, 0x0a, - 0x49, 0xcc, 0xe1, 0xe5, 0xa3, 0xc3, 0xca, 0xec, 0x52, 0x2e, 0x29, 0xdc, 0xa5, 0x19, 0xb4, 0x0b, - 0x88, 0x5e, 0xa5, 0xf5, 0xd8, 0xd9, 0x26, 0x49, 0xe3, 0x43, 0xfd, 0x37, 0x7e, 0xe1, 0xe8, 0xb0, - 0x82, 0xd6, 0x3b, 0x48, 0xe0, 0x0c, 0xb2, 0xe8, 0x3d, 0x38, 0x4f, 0x4b, 0x3b, 0xbe, 0x75, 0xb8, - 0xff, 0xe6, 0x66, 0x8e, 0x0e, 0x2b, 0xe7, 0xd7, 0x33, 0x88, 0xe0, 0x4c, 0xd2, 0xb3, 0x4b, 0x30, - 0x9d, 0x39, 0x55, 0x68, 0x12, 0x8a, 0xbb, 0x84, 0xb3, 0x20, 0x65, 0x4c, 0x7f, 0xa2, 0xf3, 0x30, - 0xb0, 0xef, 0x78, 0x6d, 0xb1, 0x4a, 0x31, 0xff, 0xf3, 0x99, 0xc2, 0xab, 0x96, 0xdd, 0x80, 0xd1, - 0x25, 0xa7, 0xe5, 0x6c, 0xba, 0x9e, 0x1b, 0xbb, 0x24, 0x42, 0x4f, 0x43, 0xd1, 0x69, 0x36, 0xd9, - 0x15, 0x59, 0x5e, 0x9c, 0x3e, 0x3a, 0xac, 0x14, 0x17, 0x9a, 0xf4, 0xac, 0x06, 0x85, 0x75, 0x80, - 0x29, 0x06, 0xfa, 0x24, 0x94, 0x9a, 0x61, 0xd0, 0x9a, 0x29, 0x30, 0x4c, 0x3a, 0x54, 0xa5, 0x6a, - 0x18, 0xb4, 0x52, 0xa8, 0x0c, 0xc7, 0xfe, 0x8d, 0x02, 0x3c, 0xb1, 0x44, 0x5a, 0x3b, 0x2b, 0xf5, - 0x9c, 0x4d, 0x77, 0x0d, 0x86, 0xf7, 0x02, 0xdf, 0x8d, 0x83, 0x30, 0x12, 0x4d, 0xb3, 0xdb, 0x64, - 0x4d, 0x94, 0x61, 0x05, 0x45, 0x57, 0xa0, 0xd4, 0x4a, 0x38, 0x81, 0x51, 0xc9, 0x45, 0x30, 0x1e, - 0x80, 0x41, 0x28, 0x46, 0x3b, 0x22, 0xa1, 0xb8, 0x05, 0x15, 0xc6, 0xdd, 0x88, 0x84, 0x98, 0x41, - 0x92, 0xe3, 0x94, 0x1e, 0xb4, 0x62, 0x5b, 0xa5, 0x8e, 0x53, 0x0a, 0xc1, 0x1a, 0x16, 0xaa, 0x41, - 0x39, 0x52, 0x93, 0x3a, 0xd0, 0xff, 0xa4, 0x8e, 0xb1, 0xf3, 0x56, 0xcd, 0x64, 0x42, 0xc4, 0x38, - 0x06, 0x06, 0x7b, 0x9e, 0xb7, 0x5f, 0x2f, 0x00, 0xe2, 0x43, 0xf8, 0xe7, 0x6c, 0xe0, 0xee, 0x76, - 0x0e, 0x5c, 0x26, 0xe7, 0x75, 0x3b, 0x68, 0x38, 0x5e, 0xfa, 0x08, 0x3f, 0xad, 0xd1, 0xfb, 0xdf, - 0x16, 0x3c, 0xb1, 0xe4, 0xfa, 0x4d, 0x12, 0xe6, 0x2c, 0xc0, 0x47, 0x23, 0x80, 0x9c, 0xec, 0xa4, - 0x37, 0x96, 0x58, 0xe9, 0x14, 0x96, 0x98, 0xfd, 0x3f, 0x2c, 0x40, 0xfc, 0xb3, 0x3f, 0x72, 0x1f, - 0x7b, 0xb7, 0xf3, 0x63, 0x4f, 0x61, 0x59, 0xd8, 0xb7, 0x61, 0x7c, 0xc9, 0x73, 0x89, 0x1f, 0xaf, - 0xd6, 0x96, 0x02, 0x7f, 0xcb, 0xdd, 0x46, 0x9f, 0x81, 0x71, 0x2a, 0xd3, 0x06, 0xed, 0xb8, 0x4e, - 0x1a, 0x81, 0xcf, 0xd8, 0x7f, 0x2a, 0x09, 0xa2, 0xa3, 0xc3, 0xca, 0xf8, 0x86, 0x01, 0xc1, 0x29, - 0x4c, 0xfb, 0x77, 0xe9, 0xf8, 0x05, 0x7b, 0xad, 0xc0, 0x27, 0x7e, 0xbc, 0x14, 0xf8, 0x4d, 0x2e, - 0x26, 0x7e, 0x06, 0x4a, 0x31, 0x1d, 0x0f, 0x3e, 0x76, 0x57, 0xe5, 0x46, 0xa1, 0xa3, 0x70, 0x7c, - 0x58, 0xb9, 0xd0, 0x59, 0x83, 0x8d, 0x13, 0xab, 0x83, 0xbe, 0x0d, 0x06, 0xa3, 0xd8, 0x89, 0xdb, - 0x91, 0x18, 0xcd, 0x27, 0xe5, 0x68, 0xd6, 0x59, 0xe9, 0xf1, 0x61, 0x65, 0x42, 0x55, 0xe3, 0x45, - 0x58, 0x54, 0x40, 0xcf, 0xc0, 0xd0, 0x1e, 0x89, 0x22, 0x67, 0x5b, 0x72, 0xf8, 0x13, 0xa2, 0xee, - 0xd0, 0x1a, 0x2f, 0xc6, 0x12, 0x8e, 0x9e, 0x82, 0x01, 0x12, 0x86, 0x41, 0x28, 0xf6, 0xe8, 0x98, - 0x40, 0x1c, 0x58, 0xa6, 0x85, 0x98, 0xc3, 0xec, 0x7f, 0x6b, 0xc1, 0x84, 0xea, 0x2b, 0x6f, 0xeb, - 0x0c, 0x58, 0xb9, 0xb7, 0x01, 0x1a, 0xf2, 0x03, 0x23, 0x76, 0x7b, 0x8c, 0x5c, 0xbf, 0x9a, 0xc9, - 0xa0, 0x74, 0x0c, 0x63, 0x42, 0x59, 0x15, 0x45, 0x58, 0xa3, 0x66, 0xff, 0xba, 0x05, 0xe7, 0x52, - 0x5f, 0x74, 0xdb, 0x8d, 0x62, 0xf4, 0x4e, 0xc7, 0x57, 0xcd, 0xf5, 0xf7, 0x55, 0xb4, 0x36, 0xfb, - 0x26, 0xb5, 0x94, 0x65, 0x89, 0xf6, 0x45, 0x37, 0x61, 0xc0, 0x8d, 0xc9, 0x9e, 0xfc, 0x98, 0xa7, - 0xba, 0x7e, 0x0c, 0xef, 0x55, 0x32, 0x23, 0xab, 0xb4, 0x26, 0xe6, 0x04, 0xec, 0x1f, 0x29, 0x42, - 0x99, 0x2f, 0xdb, 0x35, 0xa7, 0x75, 0x06, 0x73, 0xb1, 0x0a, 0x25, 0x46, 0x9d, 0x77, 0xfc, 0xe9, - 0xec, 0x8e, 0x8b, 0xee, 0xcc, 0x51, 0x39, 0x8d, 0xb3, 0x82, 0xea, 0x6a, 0xa0, 0x45, 0x98, 0x91, - 0x40, 0x0e, 0xc0, 0xa6, 0xeb, 0x3b, 0xe1, 0x01, 0x2d, 0x9b, 0x29, 0x32, 0x82, 0xcf, 0x77, 0x27, - 0xb8, 0xa8, 0xf0, 0x39, 0x59, 0xd5, 0xd7, 0x04, 0x80, 0x35, 0xa2, 0xb3, 0xaf, 0x40, 0x59, 0x21, - 0x9f, 0x84, 0xc7, 0x99, 0xfd, 0x1c, 0x4c, 0xa4, 0xda, 0xea, 0x55, 0x7d, 0x54, 0x67, 0x91, 0xbe, - 0xc6, 0x4e, 0x01, 0xd1, 0xeb, 0x65, 0x7f, 0x5f, 0x9c, 0xa2, 0xef, 0xc3, 0x79, 0x2f, 0xe3, 0x70, - 0x12, 0x53, 0xd5, 0xff, 0x61, 0xf6, 0x84, 0xf8, 0xec, 0xf3, 0x59, 0x50, 0x9c, 0xd9, 0x06, 0xbd, - 0xf6, 0x83, 0x16, 0x5d, 0xf3, 0x8e, 0xc7, 0xfa, 0x2b, 0xa4, 0xef, 0x3b, 0xa2, 0x0c, 0x2b, 0x28, - 0x3d, 0xc2, 0xce, 0xab, 0xce, 0xdf, 0x22, 0x07, 0x75, 0xe2, 0x91, 0x46, 0x1c, 0x84, 0x1f, 0x6a, - 0xf7, 0x2f, 0xf1, 0xd1, 0xe7, 0x27, 0xe0, 0x88, 0x20, 0x50, 0xbc, 0x45, 0x0e, 0xf8, 0x54, 0xe8, - 0x5f, 0x57, 0xec, 0xfa, 0x75, 0xbf, 0x60, 0xc1, 0x98, 0xfa, 0xba, 0x33, 0xd8, 0xea, 0x8b, 0xe6, - 0x56, 0xbf, 0xd4, 0x75, 0x81, 0xe7, 0x6c, 0xf2, 0xaf, 0x17, 0xe0, 0xa2, 0xc2, 0xa1, 0xec, 0x3e, - 0xff, 0x23, 0x56, 0xd5, 0x3c, 0x94, 0x7d, 0xa5, 0x3d, 0xb0, 0x4c, 0xb1, 0x3d, 0xd1, 0x1d, 0x24, - 0x38, 0x94, 0x6b, 0xf3, 0x13, 0x11, 0x7f, 0x54, 0x57, 0xab, 0x09, 0x15, 0xda, 0x22, 0x14, 0xdb, - 0x6e, 0x53, 0xdc, 0x19, 0x9f, 0x92, 0xa3, 0x7d, 0x77, 0xb5, 0x7a, 0x7c, 0x58, 0x79, 0x32, 0x4f, - 0xa5, 0x4b, 0x2f, 0xab, 0x68, 0xee, 0xee, 0x6a, 0x15, 0xd3, 0xca, 0x68, 0x01, 0x26, 0xa4, 0xd6, - 0xfa, 0x1e, 0xe5, 0xa0, 0x02, 0x5f, 0x5c, 0x2d, 0x4a, 0x37, 0x86, 0x4d, 0x30, 0x4e, 0xe3, 0xa3, - 0x2a, 0x4c, 0xee, 0xb6, 0x37, 0x89, 0x47, 0x62, 0xfe, 0xc1, 0xb7, 0x08, 0xd7, 0x1c, 0x95, 0x13, - 0xd1, 0xf2, 0x56, 0x0a, 0x8e, 0x3b, 0x6a, 0xd8, 0x7f, 0xc6, 0x8e, 0x78, 0x31, 0x7a, 0xb5, 0x30, - 0xa0, 0x0b, 0x8b, 0x52, 0xff, 0x30, 0x97, 0x73, 0x3f, 0xab, 0xe2, 0x16, 0x39, 0xd8, 0x08, 0x28, - 0xb3, 0x9d, 0xbd, 0x2a, 0x8c, 0x35, 0x5f, 0xea, 0xba, 0xe6, 0x7f, 0xa9, 0x00, 0xd3, 0x6a, 0x04, - 0x0c, 0xbe, 0xee, 0xcf, 0xfb, 0x18, 0xbc, 0x00, 0x23, 0x4d, 0xb2, 0xe5, 0xb4, 0xbd, 0x58, 0xa9, - 0x31, 0x07, 0xb8, 0x2a, 0xbb, 0x9a, 0x14, 0x63, 0x1d, 0xe7, 0x04, 0xc3, 0xf6, 0xd3, 0x23, 0xec, - 0x6e, 0x8d, 0x1d, 0xba, 0xc6, 0xd5, 0xae, 0xb1, 0x72, 0x77, 0xcd, 0x53, 0x30, 0xe0, 0xee, 0x51, - 0x5e, 0xab, 0x60, 0xb2, 0x50, 0xab, 0xb4, 0x10, 0x73, 0x18, 0xfa, 0x04, 0x0c, 0x35, 0x82, 0xbd, - 0x3d, 0xc7, 0x6f, 0xb2, 0x2b, 0xaf, 0xbc, 0x38, 0x42, 0xd9, 0xb1, 0x25, 0x5e, 0x84, 0x25, 0x0c, - 0x3d, 0x01, 0x25, 0x27, 0xdc, 0x8e, 0x66, 0x4a, 0x0c, 0x67, 0x98, 0xb6, 0xb4, 0x10, 0x6e, 0x47, - 0x98, 0x95, 0x52, 0xa9, 0xea, 0x7e, 0x10, 0xee, 0xba, 0xfe, 0x76, 0xd5, 0x0d, 0xc5, 0x96, 0x50, - 0x77, 0xe1, 0x5b, 0x0a, 0x82, 0x35, 0x2c, 0xb4, 0x02, 0x03, 0xad, 0x20, 0x8c, 0xa3, 0x99, 0x41, - 0x36, 0xdc, 0x4f, 0xe6, 0x1c, 0x44, 0xfc, 0x6b, 0x6b, 0x41, 0x18, 0x27, 0x1f, 0x40, 0xff, 0x45, - 0x98, 0x57, 0x47, 0xdf, 0x06, 0x45, 0xe2, 0xef, 0xcf, 0x0c, 0x31, 0x2a, 0xb3, 0x59, 0x54, 0x96, - 0xfd, 0xfd, 0x7b, 0x4e, 0x98, 0x9c, 0xd2, 0xcb, 0xfe, 0x3e, 0xa6, 0x75, 0xd0, 0x17, 0xa0, 0x2c, - 0xb7, 0x78, 0x24, 0xd4, 0x1c, 0x99, 0x4b, 0x4c, 0x1e, 0x0c, 0x98, 0xbc, 0xd7, 0x76, 0x43, 0xb2, - 0x47, 0xfc, 0x38, 0x4a, 0xce, 0x34, 0x09, 0x8d, 0x70, 0x42, 0x0d, 0x7d, 0x41, 0xea, 0xd6, 0xd6, - 0x82, 0xb6, 0x1f, 0x47, 0x33, 0x65, 0xd6, 0xbd, 0xcc, 0x57, 0x8f, 0x7b, 0x09, 0x5e, 0x5a, 0xf9, - 0xc6, 0x2b, 0x63, 0x83, 0x14, 0xc2, 0x30, 0xe6, 0xb9, 0xfb, 0xc4, 0x27, 0x51, 0x54, 0x0b, 0x83, - 0x4d, 0x32, 0x03, 0xac, 0xe7, 0x17, 0xb3, 0x1f, 0x03, 0x82, 0x4d, 0xb2, 0x38, 0x75, 0x74, 0x58, - 0x19, 0xbb, 0xad, 0xd7, 0xc1, 0x26, 0x09, 0x74, 0x17, 0xc6, 0xa9, 0x5c, 0xe3, 0x26, 0x44, 0x47, - 0x7a, 0x11, 0x65, 0xd2, 0x07, 0x36, 0x2a, 0xe1, 0x14, 0x11, 0xf4, 0x06, 0x94, 0x3d, 0x77, 0x8b, - 0x34, 0x0e, 0x1a, 0x1e, 0x99, 0x19, 0x65, 0x14, 0x33, 0xb7, 0xd5, 0x6d, 0x89, 0xc4, 0xe5, 0x22, - 0xf5, 0x17, 0x27, 0xd5, 0xd1, 0x3d, 0xb8, 0x10, 0x93, 0x70, 0xcf, 0xf5, 0x1d, 0xba, 0x1d, 0x84, - 0xbc, 0xc0, 0x9e, 0x54, 0xc6, 0xd8, 0x7a, 0xbb, 0x2c, 0x86, 0xee, 0xc2, 0x46, 0x26, 0x16, 0xce, - 0xa9, 0x8d, 0xee, 0xc0, 0x04, 0xdb, 0x09, 0xb5, 0xb6, 0xe7, 0xd5, 0x02, 0xcf, 0x6d, 0x1c, 0xcc, - 0x8c, 0x33, 0x82, 0x9f, 0x90, 0xf7, 0xc2, 0xaa, 0x09, 0x3e, 0x3e, 0xac, 0x40, 0xf2, 0x0f, 0xa7, - 0x6b, 0xa3, 0x4d, 0xa6, 0x43, 0x6f, 0x87, 0x6e, 0x7c, 0x40, 0xd7, 0x2f, 0x79, 0x10, 0xcf, 0x4c, - 0x74, 0x15, 0x85, 0x75, 0x54, 0xa5, 0x68, 0xd7, 0x0b, 0x71, 0x9a, 0x20, 0xdd, 0xda, 0x51, 0xdc, - 0x74, 0xfd, 0x99, 0x49, 0x76, 0x62, 0xa8, 0x9d, 0x51, 0xa7, 0x85, 0x98, 0xc3, 0x98, 0xfe, 0x9c, - 0xfe, 0xb8, 0x43, 0x4f, 0xd0, 0x29, 0x86, 0x98, 0xe8, 0xcf, 0x25, 0x00, 0x27, 0x38, 0x94, 0xa9, - 0x89, 0xe3, 0x83, 0x19, 0xc4, 0x50, 0xd5, 0x76, 0xd9, 0xd8, 0xf8, 0x02, 0xa6, 0xe5, 0xe8, 0x36, - 0x0c, 0x11, 0x7f, 0x7f, 0x25, 0x0c, 0xf6, 0x66, 0xce, 0xe5, 0xef, 0xd9, 0x65, 0x8e, 0xc2, 0x0f, - 0xf4, 0x44, 0xc0, 0x13, 0xc5, 0x58, 0x92, 0x40, 0x0f, 0x60, 0x26, 0x63, 0x46, 0xf8, 0x04, 0x9c, - 0x67, 0x13, 0xf0, 0x59, 0x51, 0x77, 0x66, 0x23, 0x07, 0xef, 0xb8, 0x0b, 0x0c, 0xe7, 0x52, 0x47, - 0x5f, 0x84, 0x31, 0xbe, 0xa1, 0xf8, 0xe3, 0x5b, 0x34, 0x33, 0xcd, 0xbe, 0xe6, 0x4a, 0xfe, 0xe6, - 0xe4, 0x88, 0x8b, 0xd3, 0xa2, 0x43, 0x63, 0x7a, 0x69, 0x84, 0x4d, 0x6a, 0xf6, 0x26, 0x8c, 0xab, - 0x73, 0x8b, 0x2d, 0x1d, 0x54, 0x81, 0x01, 0xc6, 0xed, 0x08, 0xfd, 0x56, 0x99, 0xce, 0x14, 0xe3, - 0x84, 0x30, 0x2f, 0x67, 0x33, 0xe5, 0xbe, 0x4f, 0x16, 0x0f, 0x62, 0xc2, 0xa5, 0xea, 0xa2, 0x36, - 0x53, 0x12, 0x80, 0x13, 0x1c, 0xfb, 0xff, 0x72, 0xae, 0x31, 0x39, 0x1c, 0xfb, 0xb8, 0x0e, 0x9e, - 0x83, 0xe1, 0x9d, 0x20, 0x8a, 0x29, 0x36, 0x6b, 0x63, 0x20, 0xe1, 0x13, 0x6f, 0x8a, 0x72, 0xac, - 0x30, 0xd0, 0x6b, 0x30, 0xd6, 0xd0, 0x1b, 0x10, 0x77, 0x99, 0x1a, 0x02, 0xa3, 0x75, 0x6c, 0xe2, - 0xa2, 0x57, 0x61, 0x98, 0x3d, 0x9d, 0x37, 0x02, 0x4f, 0x30, 0x59, 0xf2, 0x42, 0x1e, 0xae, 0x89, - 0xf2, 0x63, 0xed, 0x37, 0x56, 0xd8, 0xe8, 0x2a, 0x0c, 0xd2, 0x2e, 0xac, 0xd6, 0xc4, 0x2d, 0xa2, - 0x54, 0x35, 0x37, 0x59, 0x29, 0x16, 0x50, 0xfb, 0xaf, 0x17, 0xb4, 0x51, 0xa6, 0x12, 0x29, 0x41, - 0x35, 0x18, 0xba, 0xef, 0xb8, 0xb1, 0xeb, 0x6f, 0x0b, 0x76, 0xe1, 0x99, 0xae, 0x57, 0x0a, 0xab, - 0xf4, 0x16, 0xaf, 0xc0, 0x2f, 0x3d, 0xf1, 0x07, 0x4b, 0x32, 0x94, 0x62, 0xd8, 0xf6, 0x7d, 0x4a, - 0xb1, 0xd0, 0x2f, 0x45, 0xcc, 0x2b, 0x70, 0x8a, 0xe2, 0x0f, 0x96, 0x64, 0xd0, 0x3b, 0x00, 0x72, - 0x59, 0x92, 0xa6, 0x78, 0xb2, 0x7e, 0xae, 0x37, 0xd1, 0x0d, 0x55, 0x67, 0x71, 0x9c, 0x5e, 0xa9, - 0xc9, 0x7f, 0xac, 0xd1, 0xb3, 0x63, 0xc6, 0x56, 0x75, 0x76, 0x06, 0x7d, 0x27, 0x3d, 0x09, 0x9c, - 0x30, 0x26, 0xcd, 0x85, 0x58, 0x0c, 0xce, 0x27, 0xfb, 0x93, 0x29, 0x36, 0xdc, 0x3d, 0xa2, 0x9f, - 0x1a, 0x82, 0x08, 0x4e, 0xe8, 0xd9, 0xbf, 0x52, 0x84, 0x99, 0xbc, 0xee, 0xd2, 0x45, 0x47, 0x1e, - 0xb8, 0xf1, 0x12, 0xe5, 0x86, 0x2c, 0x73, 0xd1, 0x2d, 0x8b, 0x72, 0xac, 0x30, 0xe8, 0xec, 0x47, - 0xee, 0xb6, 0x14, 0x09, 0x07, 0x92, 0xd9, 0xaf, 0xb3, 0x52, 0x2c, 0xa0, 0x14, 0x2f, 0x24, 0x4e, - 0x24, 0x6c, 0x22, 0xb4, 0x55, 0x82, 0x59, 0x29, 0x16, 0x50, 0x5d, 0xdf, 0x54, 0xea, 0xa1, 0x6f, - 0x32, 0x86, 0x68, 0xe0, 0x74, 0x87, 0x08, 0x7d, 0x09, 0x60, 0xcb, 0xf5, 0xdd, 0x68, 0x87, 0x51, - 0x1f, 0x3c, 0x31, 0x75, 0xc5, 0x4b, 0xad, 0x28, 0x2a, 0x58, 0xa3, 0x88, 0x5e, 0x86, 0x11, 0xb5, - 0x01, 0x57, 0xab, 0xec, 0x81, 0x48, 0x7b, 0x70, 0x4f, 0x4e, 0xa3, 0x2a, 0xd6, 0xf1, 0xec, 0x77, - 0xd3, 0xeb, 0x45, 0xec, 0x00, 0x6d, 0x7c, 0xad, 0x7e, 0xc7, 0xb7, 0xd0, 0x7d, 0x7c, 0xed, 0xdf, - 0x2c, 0xc2, 0x84, 0xd1, 0x58, 0x3b, 0xea, 0xe3, 0xcc, 0xba, 0x41, 0xef, 0x39, 0x27, 0x26, 0x62, - 0xff, 0xd9, 0xbd, 0xb7, 0x8a, 0x7e, 0x17, 0xd2, 0x1d, 0xc0, 0xeb, 0xa3, 0x2f, 0x41, 0xd9, 0x73, - 0x22, 0xa6, 0xbb, 0x22, 0x62, 0xdf, 0xf5, 0x43, 0x2c, 0x91, 0x23, 0x9c, 0x28, 0xd6, 0xae, 0x1a, - 0x4e, 0x3b, 0x21, 0x49, 0x2f, 0x64, 0xca, 0xfb, 0x48, 0xa3, 0x1b, 0xd5, 0x09, 0xca, 0x20, 0x1d, - 0x60, 0x0e, 0x43, 0xaf, 0xc2, 0x68, 0x48, 0xd8, 0xaa, 0x58, 0xa2, 0xac, 0x1c, 0x5b, 0x66, 0x03, - 0x09, 0xcf, 0x87, 0x35, 0x18, 0x36, 0x30, 0x13, 0x56, 0x7e, 0xb0, 0x0b, 0x2b, 0xff, 0x0c, 0x0c, - 0xb1, 0x1f, 0x6a, 0x05, 0xa8, 0xd9, 0x58, 0xe5, 0xc5, 0x58, 0xc2, 0xd3, 0x0b, 0x66, 0xb8, 0xcf, - 0x05, 0xf3, 0x49, 0x18, 0xaf, 0x3a, 0x64, 0x2f, 0xf0, 0x97, 0xfd, 0x66, 0x2b, 0x70, 0xfd, 0x18, - 0xcd, 0x40, 0x89, 0xdd, 0x0e, 0x7c, 0x6f, 0x97, 0x28, 0x05, 0x5c, 0xa2, 0x8c, 0xb9, 0xbd, 0x0d, - 0xd3, 0xd5, 0xe0, 0xbe, 0x7f, 0xdf, 0x09, 0x9b, 0x0b, 0xb5, 0x55, 0x4d, 0xce, 0x5d, 0x97, 0x72, - 0x16, 0x37, 0x62, 0xc9, 0x3c, 0x53, 0xb5, 0x9a, 0xfc, 0xae, 0x5d, 0x71, 0x3d, 0x92, 0xa3, 0x8d, - 0xf8, 0x9b, 0x05, 0xa3, 0xa5, 0x04, 0x5f, 0x3d, 0x18, 0x59, 0xb9, 0x0f, 0x46, 0x6f, 0xc2, 0xf0, - 0x96, 0x4b, 0xbc, 0x26, 0x26, 0x5b, 0x62, 0x89, 0x3d, 0x9d, 0xff, 0x2e, 0xbf, 0x42, 0x31, 0xa5, - 0xf6, 0x89, 0x4b, 0x69, 0x2b, 0xa2, 0x32, 0x56, 0x64, 0xd0, 0x2e, 0x4c, 0x4a, 0x31, 0x40, 0x42, - 0xc5, 0x82, 0x7b, 0xa6, 0x9b, 0x6c, 0x61, 0x12, 0x3f, 0x7f, 0x74, 0x58, 0x99, 0xc4, 0x29, 0x32, - 0xb8, 0x83, 0x30, 0x15, 0xcb, 0xf6, 0xe8, 0xd1, 0x5a, 0x62, 0xc3, 0xcf, 0xc4, 0x32, 0x26, 0x61, - 0xb2, 0x52, 0xfb, 0x27, 0x2c, 0x78, 0xac, 0x63, 0x64, 0x84, 0xa4, 0x7d, 0xca, 0xb3, 0x90, 0x96, - 0x7c, 0x0b, 0xbd, 0x25, 0x5f, 0xfb, 0x1f, 0x58, 0x70, 0x7e, 0x79, 0xaf, 0x15, 0x1f, 0x54, 0x5d, - 0xf3, 0x75, 0xe7, 0x15, 0x18, 0xdc, 0x23, 0x4d, 0xb7, 0xbd, 0x27, 0x66, 0xae, 0x22, 0x8f, 0x9f, - 0x35, 0x56, 0x7a, 0x7c, 0x58, 0x19, 0xab, 0xc7, 0x41, 0xe8, 0x6c, 0x13, 0x5e, 0x80, 0x05, 0x3a, - 0x3b, 0xc4, 0xdd, 0xf7, 0xc9, 0x6d, 0x77, 0xcf, 0x95, 0x76, 0x16, 0x5d, 0x75, 0x67, 0x73, 0x72, - 0x40, 0xe7, 0xde, 0x6c, 0x3b, 0x7e, 0xec, 0xc6, 0x07, 0xe2, 0x61, 0x46, 0x12, 0xc1, 0x09, 0x3d, - 0xfb, 0x9b, 0x16, 0x4c, 0xc8, 0x75, 0xbf, 0xd0, 0x6c, 0x86, 0x24, 0x8a, 0xd0, 0x2c, 0x14, 0xdc, - 0x96, 0xe8, 0x25, 0x88, 0x5e, 0x16, 0x56, 0x6b, 0xb8, 0xe0, 0xb6, 0x50, 0x0d, 0xca, 0xdc, 0x5c, - 0x23, 0x59, 0x5c, 0x7d, 0x19, 0x7d, 0xb0, 0x1e, 0x6c, 0xc8, 0x9a, 0x38, 0x21, 0x22, 0x39, 0x38, - 0x76, 0x66, 0x16, 0xcd, 0x57, 0xaf, 0x9b, 0xa2, 0x1c, 0x2b, 0x0c, 0x74, 0x0d, 0x86, 0xfd, 0xa0, - 0xc9, 0xad, 0x67, 0xf8, 0xed, 0xc7, 0x96, 0xec, 0xba, 0x28, 0xc3, 0x0a, 0x6a, 0xff, 0xb0, 0x05, - 0xa3, 0xf2, 0xcb, 0xfa, 0x64, 0x26, 0xe9, 0xd6, 0x4a, 0x18, 0xc9, 0x64, 0x6b, 0x51, 0x66, 0x90, - 0x41, 0x0c, 0x1e, 0xb0, 0x78, 0x12, 0x1e, 0xd0, 0xfe, 0xf1, 0x02, 0x8c, 0xcb, 0xee, 0xd4, 0xdb, - 0x9b, 0x11, 0x89, 0xd1, 0x06, 0x94, 0x1d, 0x3e, 0xe4, 0x44, 0xae, 0xd8, 0xa7, 0xb2, 0x85, 0x0f, - 0x63, 0x7e, 0x92, 0x6b, 0x79, 0x41, 0xd6, 0xc6, 0x09, 0x21, 0xe4, 0xc1, 0x94, 0x1f, 0xc4, 0xec, - 0x88, 0x56, 0xf0, 0x6e, 0x4f, 0x20, 0x69, 0xea, 0x17, 0x05, 0xf5, 0xa9, 0xf5, 0x34, 0x15, 0xdc, - 0x49, 0x18, 0x2d, 0x4b, 0x85, 0x47, 0x31, 0x5f, 0xdc, 0xd0, 0x67, 0x21, 0x5b, 0xdf, 0x61, 0xff, - 0x9a, 0x05, 0x65, 0x89, 0x76, 0x16, 0xaf, 0x5d, 0x6b, 0x30, 0x14, 0xb1, 0x49, 0x90, 0x43, 0x63, - 0x77, 0xeb, 0x38, 0x9f, 0xaf, 0xe4, 0xe6, 0xe1, 0xff, 0x23, 0x2c, 0x69, 0x30, 0x7d, 0xb7, 0xea, - 0xfe, 0x47, 0x44, 0xdf, 0xad, 0xfa, 0x93, 0x73, 0xc3, 0xfc, 0x57, 0xd6, 0x67, 0x4d, 0xac, 0xa5, - 0x0c, 0x52, 0x2b, 0x24, 0x5b, 0xee, 0x83, 0x34, 0x83, 0x54, 0x63, 0xa5, 0x58, 0x40, 0xd1, 0x3b, - 0x30, 0xda, 0x90, 0x8a, 0xce, 0xe4, 0x18, 0xb8, 0xda, 0x55, 0xe9, 0xae, 0xde, 0x67, 0xb8, 0x65, - 0xed, 0x92, 0x56, 0x1f, 0x1b, 0xd4, 0xcc, 0xe7, 0xf6, 0x62, 0xaf, 0xe7, 0xf6, 0x84, 0x6e, 0xfe, - 0xe3, 0xf3, 0x4f, 0x5a, 0x30, 0xc8, 0xd5, 0x65, 0xfd, 0xe9, 0x17, 0xb5, 0xe7, 0xaa, 0x64, 0xec, - 0xee, 0xd1, 0x42, 0xf1, 0xfc, 0x84, 0xd6, 0xa0, 0xcc, 0x7e, 0x30, 0xb5, 0x41, 0x31, 0xdf, 0xa4, - 0x98, 0xb7, 0xaa, 0x77, 0xf0, 0x9e, 0xac, 0x86, 0x13, 0x0a, 0xf6, 0x8f, 0x16, 0xe9, 0x51, 0x95, - 0xa0, 0x1a, 0x37, 0xb8, 0xf5, 0xe8, 0x6e, 0xf0, 0xc2, 0xa3, 0xba, 0xc1, 0xb7, 0x61, 0xa2, 0xa1, - 0x3d, 0x6e, 0x25, 0x33, 0x79, 0xad, 0xeb, 0x22, 0xd1, 0xde, 0xc1, 0xb8, 0xca, 0x68, 0xc9, 0x24, - 0x82, 0xd3, 0x54, 0xd1, 0x77, 0xc2, 0x28, 0x9f, 0x67, 0xd1, 0x0a, 0xb7, 0x58, 0xf8, 0x44, 0xfe, - 0x7a, 0xd1, 0x9b, 0x60, 0x2b, 0xb1, 0xae, 0x55, 0xc7, 0x06, 0x31, 0xfb, 0x57, 0x86, 0x61, 0x60, - 0x79, 0x9f, 0xf8, 0xf1, 0x19, 0x1c, 0x48, 0x0d, 0x18, 0x77, 0xfd, 0xfd, 0xc0, 0xdb, 0x27, 0x4d, - 0x0e, 0x3f, 0xc9, 0xe5, 0x7a, 0x41, 0x90, 0x1e, 0x5f, 0x35, 0x48, 0xe0, 0x14, 0xc9, 0x47, 0x21, - 0x61, 0xde, 0x80, 0x41, 0x3e, 0xf7, 0x42, 0xbc, 0xcc, 0x54, 0x06, 0xb3, 0x41, 0x14, 0xbb, 0x20, - 0x91, 0x7e, 0xb9, 0xf6, 0x59, 0x54, 0x47, 0xef, 0xc2, 0xf8, 0x96, 0x1b, 0x46, 0x31, 0x15, 0x0d, - 0xa3, 0xd8, 0xd9, 0x6b, 0x3d, 0x84, 0x44, 0xa9, 0xc6, 0x61, 0xc5, 0xa0, 0x84, 0x53, 0x94, 0xd1, - 0x36, 0x8c, 0x51, 0x21, 0x27, 0x69, 0x6a, 0xe8, 0xc4, 0x4d, 0x29, 0x95, 0xd1, 0x6d, 0x9d, 0x10, - 0x36, 0xe9, 0xd2, 0xc3, 0xa4, 0xc1, 0x84, 0xa2, 0x61, 0xc6, 0x51, 0xa8, 0xc3, 0x84, 0x4b, 0x43, - 0x1c, 0x46, 0xcf, 0x24, 0x66, 0xb6, 0x52, 0x36, 0xcf, 0x24, 0xcd, 0x38, 0xe5, 0xcb, 0x50, 0x26, - 0x74, 0x08, 0x29, 0x61, 0xa1, 0x18, 0x9f, 0xef, 0xaf, 0xaf, 0x6b, 0x6e, 0x23, 0x0c, 0x4c, 0x59, - 0x7e, 0x59, 0x52, 0xc2, 0x09, 0x51, 0xb4, 0x04, 0x83, 0x11, 0x09, 0x5d, 0x12, 0x09, 0x15, 0x79, - 0x97, 0x69, 0x64, 0x68, 0xdc, 0xf6, 0x9c, 0xff, 0xc6, 0xa2, 0x2a, 0x5d, 0x5e, 0x0e, 0x93, 0x86, - 0x98, 0x56, 0x5c, 0x5b, 0x5e, 0x0b, 0xac, 0x14, 0x0b, 0x28, 0x7a, 0x03, 0x86, 0x42, 0xe2, 0x31, - 0x65, 0xd1, 0x58, 0xff, 0x8b, 0x9c, 0xeb, 0x9e, 0x78, 0x3d, 0x2c, 0x09, 0xa0, 0x5b, 0x80, 0x42, - 0x42, 0x79, 0x08, 0xd7, 0xdf, 0x56, 0xc6, 0x1c, 0x42, 0xd7, 0xfd, 0xb8, 0x68, 0xff, 0x1c, 0x4e, - 0x30, 0xa4, 0x55, 0x2a, 0xce, 0xa8, 0x86, 0x6e, 0xc0, 0x94, 0x2a, 0x5d, 0xf5, 0xa3, 0xd8, 0xf1, - 0x1b, 0x84, 0xa9, 0xb9, 0xcb, 0x09, 0x57, 0x84, 0xd3, 0x08, 0xb8, 0xb3, 0x8e, 0xfd, 0x73, 0x94, - 0x9d, 0xa1, 0xa3, 0x75, 0x06, 0xbc, 0xc0, 0xeb, 0x26, 0x2f, 0x70, 0x31, 0x77, 0xe6, 0x72, 0xf8, - 0x80, 0x23, 0x0b, 0x46, 0xb4, 0x99, 0x4d, 0xd6, 0xac, 0xd5, 0x65, 0xcd, 0xb6, 0x61, 0x92, 0xae, - 0xf4, 0x3b, 0x9b, 0xcc, 0x0d, 0xab, 0xc9, 0x16, 0x66, 0xe1, 0xe1, 0x16, 0xa6, 0x7a, 0x65, 0xbe, - 0x9d, 0x22, 0x88, 0x3b, 0x9a, 0x40, 0xaf, 0x48, 0xcd, 0x49, 0xd1, 0x30, 0xd2, 0xe2, 0x5a, 0x91, - 0xe3, 0xc3, 0xca, 0xa4, 0xf6, 0x21, 0xba, 0xa6, 0xc4, 0xfe, 0xb2, 0xfc, 0x46, 0xf5, 0x9a, 0xdf, - 0x50, 0x8b, 0x25, 0xf5, 0x9a, 0xaf, 0x96, 0x03, 0x4e, 0x70, 0xe8, 0x1e, 0xa5, 0x22, 0x48, 0xfa, - 0x35, 0x9f, 0x0a, 0x28, 0x98, 0x41, 0xec, 0x17, 0x01, 0x96, 0x1f, 0x90, 0x06, 0x5f, 0xea, 0xfa, - 0x03, 0xa4, 0x95, 0xff, 0x00, 0x69, 0xff, 0x7b, 0x0b, 0xc6, 0x57, 0x96, 0x0c, 0x31, 0x71, 0x0e, - 0x80, 0xcb, 0x46, 0x6f, 0xbd, 0xb5, 0x2e, 0x75, 0xeb, 0x5c, 0x3d, 0xaa, 0x4a, 0xb1, 0x86, 0x81, - 0x2e, 0x42, 0xd1, 0x6b, 0xfb, 0x42, 0x64, 0x19, 0x3a, 0x3a, 0xac, 0x14, 0x6f, 0xb7, 0x7d, 0x4c, - 0xcb, 0x34, 0x0b, 0xc1, 0x62, 0xdf, 0x16, 0x82, 0x3d, 0xdd, 0xab, 0x50, 0x05, 0x06, 0xee, 0xdf, - 0x77, 0x9b, 0xdc, 0x88, 0x5d, 0xe8, 0xfd, 0xdf, 0x7a, 0x6b, 0xb5, 0x1a, 0x61, 0x5e, 0x6e, 0x7f, - 0xb5, 0x08, 0xb3, 0x2b, 0x1e, 0x79, 0xf0, 0x01, 0x0d, 0xf9, 0xfb, 0xb5, 0x6f, 0x3c, 0x19, 0xbf, - 0x78, 0x52, 0x1b, 0xd6, 0xde, 0xe3, 0xb1, 0x05, 0x43, 0xfc, 0x31, 0x5b, 0x9a, 0xf5, 0xbf, 0x96, - 0xd5, 0x7a, 0xfe, 0x80, 0xcc, 0xf1, 0x47, 0x71, 0x61, 0xce, 0xaf, 0x6e, 0x5a, 0x51, 0x8a, 0x25, - 0xf1, 0xd9, 0xcf, 0xc0, 0xa8, 0x8e, 0x79, 0x22, 0x6b, 0xf2, 0xbf, 0x54, 0x84, 0x49, 0xda, 0x83, - 0x47, 0x3a, 0x11, 0x77, 0x3b, 0x27, 0xe2, 0xb4, 0x2d, 0x8a, 0x7b, 0xcf, 0xc6, 0x3b, 0xe9, 0xd9, - 0x78, 0x21, 0x6f, 0x36, 0xce, 0x7a, 0x0e, 0xbe, 0xd7, 0x82, 0x73, 0x2b, 0x5e, 0xd0, 0xd8, 0x4d, - 0x59, 0xfd, 0xbe, 0x0c, 0x23, 0xf4, 0x1c, 0x8f, 0x0c, 0x2f, 0x22, 0xc3, 0xaf, 0x4c, 0x80, 0xb0, - 0x8e, 0xa7, 0x55, 0xbb, 0x7b, 0x77, 0xb5, 0x9a, 0xe5, 0x8e, 0x26, 0x40, 0x58, 0xc7, 0xb3, 0xbf, - 0x61, 0xc1, 0xa5, 0x1b, 0x4b, 0xcb, 0xc9, 0x52, 0xec, 0xf0, 0x88, 0xa3, 0x52, 0x60, 0x53, 0xeb, - 0x4a, 0x22, 0x05, 0x56, 0x59, 0x2f, 0x04, 0xf4, 0xa3, 0xe2, 0xed, 0xf9, 0xb3, 0x16, 0x9c, 0xbb, - 0xe1, 0xc6, 0xf4, 0x5a, 0x4e, 0xfb, 0x66, 0xd1, 0x7b, 0x39, 0x72, 0xe3, 0x20, 0x3c, 0x48, 0xfb, - 0x66, 0x61, 0x05, 0xc1, 0x1a, 0x16, 0x6f, 0x79, 0xdf, 0x65, 0x66, 0x54, 0x05, 0x53, 0x15, 0x85, - 0x45, 0x39, 0x56, 0x18, 0xf4, 0xc3, 0x9a, 0x6e, 0xc8, 0x44, 0x89, 0x03, 0x71, 0xc2, 0xaa, 0x0f, - 0xab, 0x4a, 0x00, 0x4e, 0x70, 0xec, 0x9f, 0xb0, 0x60, 0xfa, 0x86, 0xd7, 0x8e, 0x62, 0x12, 0x6e, - 0x45, 0x46, 0x67, 0x5f, 0x84, 0x32, 0x91, 0xe2, 0xba, 0xe8, 0xab, 0x62, 0x30, 0x95, 0x1c, 0xcf, - 0x1d, 0xc3, 0x14, 0x5e, 0x1f, 0x9e, 0x03, 0x27, 0x73, 0x1d, 0xfb, 0xc5, 0x02, 0x8c, 0xdd, 0xdc, - 0xd8, 0xa8, 0xdd, 0x20, 0xb1, 0xb8, 0xc5, 0x7a, 0xab, 0x9a, 0xb1, 0xa6, 0x31, 0xeb, 0x26, 0x14, - 0xb5, 0x63, 0xd7, 0x9b, 0xe3, 0x9e, 0xc8, 0x73, 0xab, 0x7e, 0x7c, 0x27, 0xac, 0xc7, 0xa1, 0xeb, - 0x6f, 0x67, 0xea, 0xd8, 0xe4, 0x5d, 0x5b, 0xcc, 0xbb, 0x6b, 0xd1, 0x8b, 0x30, 0xc8, 0x5c, 0xa1, - 0xa5, 0x78, 0xf2, 0xb8, 0x92, 0x29, 0x58, 0xe9, 0xf1, 0x61, 0xa5, 0x7c, 0x17, 0xaf, 0xf2, 0x3f, - 0x58, 0xa0, 0xa2, 0xbb, 0x30, 0xb2, 0x13, 0xc7, 0xad, 0x9b, 0xc4, 0x69, 0x92, 0x50, 0x9e, 0x0e, - 0x97, 0xb3, 0x4e, 0x07, 0x3a, 0x08, 0x1c, 0x2d, 0xd9, 0x50, 0x49, 0x59, 0x84, 0x75, 0x3a, 0x76, - 0x1d, 0x20, 0x81, 0x9d, 0x92, 0x7e, 0xc1, 0xfe, 0x03, 0x0b, 0x86, 0xb8, 0x57, 0x5a, 0x88, 0x3e, - 0x0b, 0x25, 0xf2, 0x80, 0x34, 0x04, 0xe7, 0x98, 0xd9, 0xe1, 0x84, 0xf1, 0xe0, 0xda, 0x72, 0xfa, - 0x1f, 0xb3, 0x5a, 0xe8, 0x26, 0x0c, 0xd1, 0xde, 0xde, 0x50, 0x2e, 0x7a, 0x4f, 0xe6, 0x7d, 0xb1, - 0x9a, 0x76, 0xce, 0xab, 0x88, 0x22, 0x2c, 0xab, 0x33, 0xcd, 0x6f, 0xa3, 0x55, 0xa7, 0x07, 0x58, - 0xdc, 0xed, 0x9e, 0xdd, 0x58, 0xaa, 0x71, 0x24, 0x41, 0x8d, 0x6b, 0x7e, 0x65, 0x21, 0x4e, 0x88, - 0xd8, 0x1b, 0x50, 0xa6, 0x93, 0xba, 0xe0, 0xb9, 0x4e, 0x77, 0xa5, 0xf3, 0xb3, 0x50, 0x96, 0x0a, - 0xe0, 0x48, 0x38, 0x36, 0x31, 0xaa, 0x52, 0x3f, 0x1c, 0xe1, 0x04, 0x6e, 0x6f, 0xc1, 0x79, 0xf6, - 0xf2, 0xef, 0xc4, 0x3b, 0xc6, 0x1e, 0xeb, 0xbd, 0x98, 0x9f, 0x13, 0x82, 0x18, 0x9f, 0x99, 0x19, - 0xcd, 0x77, 0x60, 0x54, 0x52, 0x4c, 0x84, 0x32, 0xfb, 0x8f, 0x4a, 0xf0, 0xf8, 0x6a, 0x3d, 0xdf, - 0x61, 0xf1, 0x55, 0x18, 0xe5, 0x6c, 0x1a, 0x5d, 0xda, 0x8e, 0x27, 0xda, 0x55, 0xef, 0x62, 0x1b, - 0x1a, 0x0c, 0x1b, 0x98, 0xe8, 0x12, 0x14, 0xdd, 0xf7, 0xfc, 0xb4, 0x19, 0xee, 0xea, 0x9b, 0xeb, - 0x98, 0x96, 0x53, 0x30, 0xe5, 0xf8, 0xf8, 0x51, 0xaa, 0xc0, 0x8a, 0xeb, 0x7b, 0x1d, 0xc6, 0xdd, - 0xa8, 0x11, 0xb9, 0xab, 0x3e, 0x3d, 0x67, 0x12, 0x67, 0xd7, 0x44, 0x49, 0x40, 0x3b, 0xad, 0xa0, - 0x38, 0x85, 0xad, 0x9d, 0xeb, 0x03, 0x7d, 0x73, 0x8d, 0x3d, 0x3d, 0x7d, 0x28, 0x43, 0xdc, 0x62, - 0x5f, 0x17, 0x31, 0xa3, 0x36, 0xc1, 0x10, 0xf3, 0x0f, 0x8e, 0xb0, 0x84, 0x51, 0x09, 0xac, 0xb1, - 0xe3, 0xb4, 0x16, 0xda, 0xf1, 0x4e, 0xd5, 0x8d, 0x1a, 0xc1, 0x3e, 0x09, 0x0f, 0x98, 0xf0, 0x3c, - 0x9c, 0x48, 0x60, 0x0a, 0xb0, 0x74, 0x73, 0xa1, 0x46, 0x31, 0x71, 0x67, 0x1d, 0x93, 0x2b, 0x84, - 0xd3, 0xe0, 0x0a, 0x17, 0x60, 0x42, 0x36, 0x53, 0x27, 0x11, 0xbb, 0x23, 0x46, 0x58, 0xc7, 0x94, - 0xa9, 0xad, 0x28, 0x56, 0xdd, 0x4a, 0xe3, 0xa3, 0x57, 0x60, 0xcc, 0xf5, 0xdd, 0xd8, 0x75, 0xe2, - 0x20, 0x64, 0x37, 0x2c, 0x97, 0x93, 0x99, 0x25, 0xdb, 0xaa, 0x0e, 0xc0, 0x26, 0x9e, 0xfd, 0x87, - 0x25, 0x98, 0x62, 0xd3, 0xf6, 0xad, 0x15, 0xf6, 0x91, 0x59, 0x61, 0x77, 0x3b, 0x57, 0xd8, 0x69, - 0xb0, 0xbb, 0x1f, 0xe6, 0x32, 0x7b, 0x17, 0xca, 0xca, 0x16, 0x58, 0x3a, 0x03, 0x58, 0x39, 0xce, - 0x00, 0xbd, 0xb9, 0x0f, 0xf9, 0x8c, 0x5b, 0xcc, 0x7c, 0xc6, 0xfd, 0xdb, 0x16, 0x24, 0x26, 0x91, - 0xe8, 0x26, 0x94, 0x5b, 0x01, 0x33, 0x3b, 0x08, 0xa5, 0x2d, 0xcf, 0xe3, 0x99, 0x17, 0x15, 0xbf, - 0x14, 0xf9, 0xf8, 0xd5, 0x64, 0x0d, 0x9c, 0x54, 0x46, 0x8b, 0x30, 0xd4, 0x0a, 0x49, 0x3d, 0x66, - 0x2e, 0xb0, 0x3d, 0xe9, 0xf0, 0x35, 0xc2, 0xf1, 0xb1, 0xac, 0x68, 0xff, 0x92, 0x05, 0xc0, 0x5f, - 0x4a, 0x1d, 0x7f, 0x9b, 0x9c, 0x81, 0xf6, 0xb7, 0x0a, 0xa5, 0xa8, 0x45, 0x1a, 0xdd, 0x0c, 0x42, - 0x92, 0xfe, 0xd4, 0x5b, 0xa4, 0x91, 0x0c, 0x38, 0xfd, 0x87, 0x59, 0x6d, 0xfb, 0xfb, 0x00, 0xc6, - 0x13, 0xb4, 0xd5, 0x98, 0xec, 0xa1, 0xe7, 0x0d, 0x97, 0xb8, 0x8b, 0x29, 0x97, 0xb8, 0x32, 0xc3, - 0xd6, 0x14, 0x8d, 0xef, 0x42, 0x71, 0xcf, 0x79, 0x20, 0x34, 0x49, 0xcf, 0x76, 0xef, 0x06, 0xa5, - 0x3f, 0xb7, 0xe6, 0x3c, 0xe0, 0x32, 0xd3, 0xb3, 0x72, 0x81, 0xac, 0x39, 0x0f, 0x8e, 0xb9, 0xd9, - 0x07, 0x3b, 0xa4, 0x6e, 0xbb, 0x51, 0xfc, 0x95, 0xff, 0x94, 0xfc, 0x67, 0xcb, 0x8e, 0x36, 0xc2, - 0xda, 0x72, 0x7d, 0xf1, 0x6e, 0xd8, 0x57, 0x5b, 0xae, 0x9f, 0x6e, 0xcb, 0xf5, 0xfb, 0x68, 0xcb, - 0xf5, 0xd1, 0xfb, 0x30, 0x24, 0xde, 0xe8, 0x99, 0xad, 0xb7, 0xa9, 0xa5, 0xca, 0x6b, 0x4f, 0x3c, - 0xf1, 0xf3, 0x36, 0xe7, 0xa5, 0x4c, 0x28, 0x4a, 0x7b, 0xb6, 0x2b, 0x1b, 0x44, 0x7f, 0xc3, 0x82, - 0x71, 0xf1, 0x1b, 0x93, 0xf7, 0xda, 0x24, 0x8a, 0x05, 0xef, 0xf9, 0xe9, 0xfe, 0xfb, 0x20, 0x2a, - 0xf2, 0xae, 0x7c, 0x5a, 0x1e, 0xb3, 0x26, 0xb0, 0x67, 0x8f, 0x52, 0xbd, 0x40, 0xff, 0xc8, 0x82, - 0xf3, 0x7b, 0xce, 0x03, 0xde, 0x22, 0x2f, 0xc3, 0x4e, 0xec, 0x06, 0xc2, 0x76, 0xfd, 0xb3, 0xfd, - 0x4d, 0x7f, 0x47, 0x75, 0xde, 0x49, 0x69, 0xe6, 0x7a, 0x3e, 0x0b, 0xa5, 0x67, 0x57, 0x33, 0xfb, - 0x35, 0xbb, 0x05, 0xc3, 0x72, 0xbd, 0x65, 0x48, 0xde, 0x55, 0x9d, 0xb1, 0x3e, 0xb1, 0x89, 0x84, - 0xee, 0x97, 0x46, 0xdb, 0x11, 0x6b, 0xed, 0x91, 0xb6, 0xf3, 0x2e, 0x8c, 0xea, 0x6b, 0xec, 0x91, - 0xb6, 0xf5, 0x1e, 0x9c, 0xcb, 0x58, 0x4b, 0x8f, 0xb4, 0xc9, 0xfb, 0x70, 0x31, 0x77, 0x7d, 0x3c, - 0xca, 0x86, 0xed, 0x5f, 0xb4, 0xf4, 0x73, 0xf0, 0x0c, 0x54, 0xf0, 0x4b, 0xa6, 0x0a, 0xfe, 0x72, - 0xf7, 0x9d, 0x93, 0xa3, 0x87, 0x7f, 0x47, 0xef, 0x34, 0x3d, 0xd5, 0xd1, 0x1b, 0x30, 0xe8, 0xd1, - 0x12, 0x69, 0x1c, 0x62, 0xf7, 0xde, 0x91, 0x09, 0x2f, 0xc5, 0xca, 0x23, 0x2c, 0x28, 0xd8, 0xbf, - 0x6a, 0x41, 0xe9, 0x0c, 0x46, 0x02, 0x9b, 0x23, 0xf1, 0x7c, 0x2e, 0x69, 0x11, 0xd2, 0x6c, 0x0e, - 0x3b, 0xf7, 0x97, 0x65, 0xd8, 0xb6, 0x9c, 0x81, 0xf9, 0x2e, 0x38, 0x77, 0x3b, 0x70, 0x9a, 0x8b, - 0x8e, 0xe7, 0xf8, 0x0d, 0x12, 0xae, 0xfa, 0xdb, 0x3d, 0xad, 0x94, 0x74, 0x9b, 0xa2, 0x42, 0x2f, - 0x9b, 0x22, 0x7b, 0x07, 0x90, 0xde, 0x80, 0xb0, 0xe3, 0xc4, 0x30, 0xe4, 0xf2, 0xa6, 0xc4, 0xf0, - 0x3f, 0x9d, 0xcd, 0xdd, 0x75, 0xf4, 0x4c, 0xb3, 0x50, 0xe4, 0x05, 0x58, 0x12, 0xb2, 0x5f, 0x85, - 0x4c, 0xdf, 0xad, 0xde, 0x6a, 0x03, 0xfb, 0x65, 0x98, 0x62, 0x35, 0x4f, 0x26, 0xd2, 0xda, 0x3f, - 0x60, 0xc1, 0xc4, 0x7a, 0x2a, 0x36, 0xc5, 0x55, 0xf6, 0xd6, 0x97, 0xa1, 0xf7, 0xad, 0xb3, 0x52, - 0x2c, 0xa0, 0xa7, 0xae, 0x5f, 0xfa, 0x33, 0x0b, 0x12, 0x57, 0xc9, 0x33, 0x60, 0xaa, 0x96, 0x0c, - 0xa6, 0x2a, 0x53, 0xef, 0xa1, 0xba, 0x93, 0xc7, 0x53, 0xa1, 0x5b, 0x2a, 0x2e, 0x40, 0x17, 0x95, - 0x47, 0x42, 0x86, 0x7b, 0x91, 0x8f, 0x9b, 0xc1, 0x03, 0x64, 0xa4, 0x00, 0x66, 0x26, 0xa4, 0x70, - 0x3f, 0x22, 0x66, 0x42, 0xaa, 0x3f, 0x39, 0xbb, 0xaf, 0xa6, 0x75, 0x99, 0x9d, 0x4a, 0xdf, 0xce, - 0xcc, 0xbe, 0x1d, 0xcf, 0x7d, 0x9f, 0xa8, 0xe0, 0x26, 0x15, 0x61, 0xc6, 0x2d, 0x4a, 0x8f, 0x0f, - 0x2b, 0x63, 0xea, 0x1f, 0x8f, 0x80, 0x95, 0x54, 0xb1, 0x6f, 0xc2, 0x44, 0x6a, 0xc0, 0xd0, 0xcb, - 0x30, 0xd0, 0xda, 0x71, 0x22, 0x92, 0x32, 0x8d, 0x1c, 0xa8, 0xd1, 0xc2, 0xe3, 0xc3, 0xca, 0xb8, - 0xaa, 0xc0, 0x4a, 0x30, 0xc7, 0xb6, 0xff, 0xa7, 0x05, 0xa5, 0xf5, 0xa0, 0x79, 0x16, 0x8b, 0xe9, - 0x75, 0x63, 0x31, 0x3d, 0x91, 0x17, 0x3f, 0x30, 0x77, 0x1d, 0xad, 0xa4, 0xd6, 0xd1, 0xe5, 0x5c, - 0x0a, 0xdd, 0x97, 0xd0, 0x1e, 0x8c, 0xb0, 0xa8, 0x84, 0xc2, 0x54, 0xf3, 0x45, 0x83, 0xbf, 0xaf, - 0xa4, 0xf8, 0xfb, 0x09, 0x0d, 0x55, 0xe3, 0xf2, 0x9f, 0x81, 0x21, 0x61, 0x2e, 0x98, 0x36, 0x70, - 0x17, 0xb8, 0x58, 0xc2, 0xed, 0x9f, 0x2c, 0x82, 0x11, 0x05, 0x11, 0xfd, 0x9a, 0x05, 0x73, 0x21, - 0xf7, 0x18, 0x6c, 0x56, 0xdb, 0xa1, 0xeb, 0x6f, 0xd7, 0x1b, 0x3b, 0xa4, 0xd9, 0xf6, 0x5c, 0x7f, - 0x7b, 0x75, 0xdb, 0x0f, 0x54, 0xf1, 0xf2, 0x03, 0xd2, 0x68, 0x33, 0x9d, 0x7f, 0x8f, 0x90, 0x8b, - 0xca, 0x1c, 0xe7, 0xfa, 0xd1, 0x61, 0x65, 0x0e, 0x9f, 0x88, 0x36, 0x3e, 0x61, 0x5f, 0xd0, 0x37, - 0x2c, 0x98, 0xe7, 0xc1, 0x01, 0xfb, 0xef, 0x7f, 0x17, 0x69, 0xa8, 0x26, 0x49, 0x25, 0x44, 0x36, - 0x48, 0xb8, 0xb7, 0xf8, 0x8a, 0x18, 0xd0, 0xf9, 0xda, 0xc9, 0xda, 0xc2, 0x27, 0xed, 0x9c, 0xfd, - 0x2f, 0x8b, 0x30, 0x26, 0x9c, 0xd5, 0x45, 0x14, 0x94, 0x97, 0x8d, 0x25, 0xf1, 0x64, 0x6a, 0x49, - 0x4c, 0x19, 0xc8, 0xa7, 0x13, 0x00, 0x25, 0x82, 0x29, 0xcf, 0x89, 0xe2, 0x9b, 0xc4, 0x09, 0xe3, - 0x4d, 0xe2, 0x70, 0x33, 0x95, 0xe2, 0x89, 0x4d, 0x6a, 0x94, 0xfa, 0xe5, 0x76, 0x9a, 0x18, 0xee, - 0xa4, 0x8f, 0xf6, 0x01, 0x31, 0x5b, 0x9b, 0xd0, 0xf1, 0x23, 0xfe, 0x2d, 0xae, 0x78, 0x0f, 0x38, - 0x59, 0xab, 0xb3, 0xa2, 0x55, 0x74, 0xbb, 0x83, 0x1a, 0xce, 0x68, 0x41, 0xb3, 0xa1, 0x1a, 0xe8, - 0xd7, 0x86, 0x6a, 0xb0, 0x87, 0x17, 0x89, 0x0f, 0x93, 0x1d, 0xf1, 0x06, 0xde, 0x86, 0xb2, 0xb2, - 0x75, 0x13, 0x87, 0x4e, 0xf7, 0xb0, 0x1d, 0x69, 0x0a, 0x5c, 0x45, 0x92, 0xd8, 0x59, 0x26, 0xe4, - 0xec, 0x7f, 0x5c, 0x30, 0x1a, 0xe4, 0x93, 0xb8, 0x0e, 0xc3, 0x4e, 0x14, 0xb9, 0xdb, 0x3e, 0x69, - 0x8a, 0x1d, 0xfb, 0xf1, 0xbc, 0x1d, 0x6b, 0x34, 0xc3, 0xec, 0x0d, 0x17, 0x44, 0x4d, 0xac, 0x68, - 0xa0, 0x9b, 0xdc, 0x18, 0x68, 0x5f, 0xf2, 0xf3, 0xfd, 0x51, 0x03, 0x69, 0x2e, 0xb4, 0x4f, 0xb0, - 0xa8, 0x8f, 0xbe, 0xc8, 0xad, 0xb5, 0x6e, 0xf9, 0xc1, 0x7d, 0xff, 0x46, 0x10, 0x48, 0x0f, 0xb3, - 0xfe, 0x08, 0x4e, 0x49, 0x1b, 0x2d, 0x55, 0x1d, 0x9b, 0xd4, 0xfa, 0x8b, 0xc9, 0xf3, 0xdd, 0x70, - 0x8e, 0x92, 0x36, 0xfd, 0x44, 0x22, 0x44, 0x60, 0x42, 0x44, 0x42, 0x90, 0x65, 0x62, 0xec, 0x32, - 0x59, 0x75, 0xb3, 0x76, 0xa2, 0xd0, 0xbb, 0x65, 0x92, 0xc0, 0x69, 0x9a, 0xf6, 0xcf, 0x58, 0xc0, - 0x2c, 0xdc, 0xcf, 0x80, 0x65, 0xf8, 0x9c, 0xc9, 0x32, 0xcc, 0xe4, 0x0d, 0x72, 0x0e, 0xb7, 0xf0, - 0x12, 0x5f, 0x59, 0xb5, 0x30, 0x78, 0x70, 0x20, 0x5e, 0xca, 0xfb, 0xe0, 0x52, 0xff, 0x8f, 0xc5, - 0x0f, 0x31, 0xe5, 0x74, 0x8e, 0xbe, 0x07, 0x86, 0x1b, 0x4e, 0xcb, 0x69, 0xf0, 0x90, 0xbd, 0xb9, - 0x1a, 0x1b, 0xa3, 0xd2, 0xdc, 0x92, 0xa8, 0xc1, 0x35, 0x10, 0x32, 0xa2, 0xc6, 0xb0, 0x2c, 0xee, - 0xa9, 0x75, 0x50, 0x4d, 0xce, 0xee, 0xc2, 0x98, 0x41, 0xec, 0x91, 0x8a, 0xab, 0xdf, 0xc3, 0xaf, - 0x58, 0x15, 0x01, 0x66, 0x0f, 0xa6, 0x7c, 0xed, 0x3f, 0xbd, 0x50, 0xa4, 0x08, 0xf2, 0xf1, 0x5e, - 0x97, 0x28, 0xbb, 0x7d, 0x34, 0x0b, 0xfe, 0x14, 0x19, 0xdc, 0x49, 0xd9, 0xfe, 0x29, 0x0b, 0x1e, - 0xd3, 0x11, 0xb5, 0x78, 0x00, 0xbd, 0x74, 0xc0, 0x55, 0x18, 0x0e, 0x5a, 0x24, 0x74, 0xe2, 0x20, - 0x14, 0xb7, 0xc6, 0x35, 0x39, 0xe8, 0x77, 0x44, 0xf9, 0xb1, 0x88, 0x9d, 0x28, 0xa9, 0xcb, 0x72, - 0xac, 0x6a, 0x22, 0x1b, 0x06, 0xd9, 0x60, 0x44, 0x22, 0x56, 0x03, 0x3b, 0x03, 0xd8, 0x73, 0x68, - 0x84, 0x05, 0xc4, 0xfe, 0x23, 0x8b, 0x2f, 0x2c, 0xbd, 0xeb, 0xe8, 0x3d, 0x98, 0xdc, 0x73, 0xe2, - 0xc6, 0xce, 0xf2, 0x83, 0x56, 0xc8, 0x55, 0xdf, 0x72, 0x9c, 0x9e, 0xed, 0x35, 0x4e, 0xda, 0x47, - 0x26, 0x06, 0x68, 0x6b, 0x29, 0x62, 0xb8, 0x83, 0x3c, 0xda, 0x84, 0x11, 0x56, 0xc6, 0x2c, 0x9d, - 0xa3, 0x6e, 0xac, 0x41, 0x5e, 0x6b, 0xea, 0x45, 0x79, 0x2d, 0xa1, 0x83, 0x75, 0xa2, 0xf6, 0x57, - 0x8a, 0x7c, 0xb7, 0x33, 0x6e, 0xfb, 0x19, 0x18, 0x6a, 0x05, 0xcd, 0xa5, 0xd5, 0x2a, 0x16, 0xb3, - 0xa0, 0xae, 0x91, 0x1a, 0x2f, 0xc6, 0x12, 0x8e, 0x5e, 0x03, 0x20, 0x0f, 0x62, 0x12, 0xfa, 0x8e, - 0xa7, 0x0c, 0x42, 0x94, 0x09, 0x64, 0x35, 0x58, 0x0f, 0xe2, 0xbb, 0x11, 0xf9, 0xae, 0x65, 0x85, - 0x82, 0x35, 0x74, 0x74, 0x1d, 0xa0, 0x15, 0x06, 0xfb, 0x6e, 0x93, 0xb9, 0xce, 0x15, 0x4d, 0x73, - 0x89, 0x9a, 0x82, 0x60, 0x0d, 0x0b, 0xbd, 0x06, 0x63, 0x6d, 0x3f, 0xe2, 0x1c, 0x8a, 0xb3, 0x29, - 0x22, 0x0f, 0x0e, 0x27, 0x96, 0x0b, 0x77, 0x75, 0x20, 0x36, 0x71, 0xd1, 0x02, 0x0c, 0xc6, 0x0e, - 0xb3, 0x77, 0x18, 0xc8, 0xb7, 0x5b, 0xdc, 0xa0, 0x18, 0x7a, 0xc0, 0x58, 0x5a, 0x01, 0x8b, 0x8a, - 0xe8, 0x6d, 0xe9, 0x87, 0xc0, 0xcf, 0x7a, 0x61, 0x30, 0xdc, 0xdf, 0xbd, 0xa0, 0x79, 0x21, 0x08, - 0x43, 0x64, 0x83, 0x96, 0xfd, 0x8d, 0x32, 0x40, 0xc2, 0x8e, 0xa3, 0xf7, 0x3b, 0xce, 0xa3, 0xe7, - 0xba, 0x33, 0xf0, 0xa7, 0x77, 0x18, 0xa1, 0xef, 0xb7, 0x60, 0xc4, 0xf1, 0xbc, 0xa0, 0xe1, 0xc4, - 0x6c, 0x94, 0x0b, 0xdd, 0xcf, 0x43, 0xd1, 0xfe, 0x42, 0x52, 0x83, 0x77, 0xe1, 0x45, 0xb9, 0xf0, - 0x34, 0x48, 0xcf, 0x5e, 0xe8, 0x0d, 0xa3, 0x4f, 0x49, 0x29, 0x8d, 0x2f, 0x8f, 0xd9, 0xb4, 0x94, - 0x56, 0x66, 0x47, 0xbf, 0x26, 0xa0, 0xa1, 0xbb, 0x46, 0x50, 0xb9, 0x52, 0x7e, 0x7c, 0x05, 0x83, - 0x2b, 0xed, 0x15, 0x4f, 0x0e, 0xd5, 0x74, 0xc7, 0xa9, 0x81, 0xfc, 0x20, 0x24, 0x9a, 0xf8, 0xd3, - 0xc3, 0x69, 0xea, 0x5d, 0x98, 0x68, 0x9a, 0x77, 0xbb, 0x58, 0x4d, 0x4f, 0xe7, 0xd1, 0x4d, 0xb1, - 0x02, 0xc9, 0x6d, 0x9e, 0x02, 0xe0, 0x34, 0x61, 0x54, 0xe3, 0x2e, 0x6c, 0xab, 0xfe, 0x56, 0x20, - 0x0c, 0xcf, 0xed, 0xdc, 0xb9, 0x3c, 0x88, 0x62, 0xb2, 0x47, 0x31, 0x93, 0x4b, 0x7b, 0x5d, 0xd4, - 0xc5, 0x8a, 0x0a, 0x7a, 0x03, 0x06, 0x99, 0x0f, 0x6c, 0x34, 0x33, 0x9c, 0xaf, 0x28, 0x34, 0xc3, - 0x37, 0x24, 0x9b, 0x8a, 0xfd, 0x8d, 0xb0, 0xa0, 0x80, 0x6e, 0xca, 0x18, 0x2f, 0xd1, 0xaa, 0x7f, - 0x37, 0x22, 0x2c, 0xc6, 0x4b, 0x79, 0xf1, 0xe3, 0x49, 0xf8, 0x16, 0x5e, 0x9e, 0x19, 0x1a, 0xde, - 0xa8, 0x49, 0x99, 0x23, 0xf1, 0x5f, 0x46, 0x9c, 0x9f, 0x81, 0xfc, 0xee, 0x99, 0x51, 0xe9, 0x93, - 0xe1, 0xbc, 0x67, 0x92, 0xc0, 0x69, 0x9a, 0x94, 0xd1, 0xe4, 0x3b, 0x57, 0x98, 0xae, 0xf7, 0xda, - 0xff, 0x5c, 0xbe, 0x66, 0x97, 0x0c, 0x2f, 0xc1, 0xa2, 0xfe, 0x99, 0xde, 0xfa, 0xb3, 0x3e, 0x4c, - 0xa6, 0xb7, 0xe8, 0x23, 0xe5, 0x32, 0xfe, 0xa0, 0x04, 0xe3, 0xe6, 0x92, 0x42, 0xf3, 0x50, 0x16, - 0x44, 0x54, 0xc0, 0x51, 0xb5, 0x4b, 0xd6, 0x24, 0x00, 0x27, 0x38, 0x2c, 0xce, 0x2c, 0xab, 0xae, - 0x99, 0x1c, 0x26, 0x71, 0x66, 0x15, 0x04, 0x6b, 0x58, 0x54, 0x5e, 0xda, 0x0c, 0x82, 0x58, 0x5d, - 0x2a, 0x6a, 0xdd, 0x2d, 0xb2, 0x52, 0x2c, 0xa0, 0xf4, 0x32, 0xd9, 0x25, 0xa1, 0x4f, 0x3c, 0x33, - 0x8e, 0x99, 0xba, 0x4c, 0x6e, 0xe9, 0x40, 0x6c, 0xe2, 0xd2, 0x5b, 0x32, 0x88, 0xd8, 0x42, 0x16, - 0x52, 0x59, 0x62, 0xc2, 0x59, 0xe7, 0xde, 0xe4, 0x12, 0x8e, 0xbe, 0x00, 0x8f, 0x29, 0xe7, 0x6f, - 0xcc, 0x95, 0xd0, 0xb2, 0xc5, 0x41, 0x43, 0x89, 0xf2, 0xd8, 0x52, 0x36, 0x1a, 0xce, 0xab, 0x8f, - 0x5e, 0x87, 0x71, 0xc1, 0xb9, 0x4b, 0x8a, 0x43, 0xa6, 0x5d, 0xc4, 0x2d, 0x03, 0x8a, 0x53, 0xd8, - 0x32, 0x12, 0x1b, 0x63, 0x9e, 0x25, 0x85, 0xe1, 0xce, 0x48, 0x6c, 0x3a, 0x1c, 0x77, 0xd4, 0x40, - 0x0b, 0x30, 0xc1, 0x59, 0x2b, 0xd7, 0xdf, 0xe6, 0x73, 0x22, 0x3c, 0x4b, 0xd4, 0x96, 0xba, 0x63, - 0x82, 0x71, 0x1a, 0x1f, 0xbd, 0x0a, 0xa3, 0x4e, 0xd8, 0xd8, 0x71, 0x63, 0xd2, 0x88, 0xdb, 0x21, - 0x77, 0x39, 0xd1, 0x0c, 0x4b, 0x16, 0x34, 0x18, 0x36, 0x30, 0xed, 0xf7, 0xe1, 0x5c, 0x86, 0x53, - 0x1a, 0x5d, 0x38, 0x4e, 0xcb, 0x95, 0xdf, 0x94, 0x32, 0xc6, 0x5c, 0xa8, 0xad, 0xca, 0xaf, 0xd1, - 0xb0, 0xe8, 0xea, 0x64, 0xce, 0x6b, 0x5a, 0x82, 0x09, 0xb5, 0x3a, 0x57, 0x24, 0x00, 0x27, 0x38, - 0xf6, 0xff, 0x2a, 0xc0, 0x44, 0x86, 0x62, 0x9d, 0x25, 0x39, 0x48, 0xc9, 0x1e, 0x49, 0x4e, 0x03, - 0x33, 0xb0, 0x5f, 0xe1, 0x04, 0x81, 0xfd, 0x8a, 0xbd, 0x02, 0xfb, 0x95, 0x3e, 0x48, 0x60, 0x3f, - 0x73, 0xc4, 0x06, 0xfa, 0x1a, 0xb1, 0x8c, 0x60, 0x80, 0x83, 0x27, 0x0c, 0x06, 0x68, 0x0c, 0xfa, - 0x50, 0x1f, 0x83, 0xfe, 0xa3, 0x05, 0x98, 0x4c, 0x1b, 0xc0, 0x9d, 0x81, 0x3a, 0xf6, 0x0d, 0x43, - 0x1d, 0x9b, 0x9d, 0x32, 0x24, 0x6d, 0x96, 0x97, 0xa7, 0x9a, 0xc5, 0x29, 0xd5, 0xec, 0x27, 0xfb, - 0xa2, 0xd6, 0x5d, 0x4d, 0xfb, 0x77, 0x0b, 0x30, 0x9d, 0xae, 0xb2, 0xe4, 0x39, 0xee, 0xde, 0x19, - 0x8c, 0xcd, 0x1d, 0x63, 0x6c, 0x9e, 0xef, 0xe7, 0x6b, 0x58, 0xd7, 0x72, 0x07, 0xe8, 0xad, 0xd4, - 0x00, 0xcd, 0xf7, 0x4f, 0xb2, 0xfb, 0x28, 0x7d, 0xb3, 0x08, 0x97, 0x33, 0xeb, 0x25, 0xda, 0xcc, - 0x15, 0x43, 0x9b, 0x79, 0x3d, 0xa5, 0xcd, 0xb4, 0xbb, 0xd7, 0x3e, 0x1d, 0xf5, 0xa6, 0xf0, 0x16, - 0x64, 0xc1, 0xdf, 0x1e, 0x52, 0xb5, 0x69, 0x78, 0x0b, 0x2a, 0x42, 0xd8, 0xa4, 0xfb, 0x17, 0x49, - 0xa5, 0xf9, 0x6f, 0x2c, 0xb8, 0x98, 0x39, 0x37, 0x67, 0xa0, 0xc2, 0x5a, 0x37, 0x55, 0x58, 0xcf, - 0xf4, 0xbd, 0x5a, 0x73, 0x74, 0x5a, 0x7f, 0x58, 0xcc, 0xf9, 0x16, 0x26, 0xa0, 0xdf, 0x81, 0x11, - 0xa7, 0xd1, 0x20, 0x51, 0xb4, 0x16, 0x34, 0x55, 0x30, 0xb4, 0xe7, 0x99, 0x9c, 0x95, 0x14, 0x1f, - 0x1f, 0x56, 0x66, 0xd3, 0x24, 0x12, 0x30, 0xd6, 0x29, 0x98, 0xf1, 0x1b, 0x0b, 0xa7, 0x1a, 0xbf, - 0xf1, 0x3a, 0xc0, 0xbe, 0xe2, 0xd6, 0xd3, 0x42, 0xbe, 0xc6, 0xc7, 0x6b, 0x58, 0xe8, 0x8b, 0x30, - 0x1c, 0x89, 0x6b, 0x5c, 0x2c, 0xc5, 0x17, 0xfb, 0x9c, 0x2b, 0x67, 0x93, 0x78, 0xa6, 0x5b, 0xba, - 0xd2, 0x87, 0x28, 0x92, 0xe8, 0x3b, 0x60, 0x32, 0xe2, 0x51, 0x4f, 0x96, 0x3c, 0x27, 0x62, 0x3e, - 0x0e, 0x62, 0x15, 0x32, 0x5f, 0xf3, 0x7a, 0x0a, 0x86, 0x3b, 0xb0, 0xd1, 0x8a, 0xfc, 0x28, 0x16, - 0xa2, 0x85, 0x2f, 0xcc, 0xab, 0xc9, 0x07, 0x89, 0x14, 0x4b, 0xe7, 0xd3, 0xc3, 0xcf, 0x06, 0x5e, - 0xab, 0x69, 0xff, 0x68, 0x09, 0x1e, 0xef, 0x72, 0x88, 0xa1, 0x05, 0xf3, 0x8d, 0xf2, 0xd9, 0xb4, - 0xf4, 0x3b, 0x9b, 0x59, 0xd9, 0x10, 0x87, 0x53, 0x6b, 0xa5, 0xf0, 0x81, 0xd7, 0xca, 0x0f, 0x59, - 0x9a, 0x5e, 0x82, 0x5b, 0xd2, 0x7d, 0xee, 0x84, 0x87, 0xf3, 0x29, 0x2a, 0x2a, 0xb6, 0x32, 0xa4, - 0xfd, 0xeb, 0x7d, 0x77, 0xa7, 0x6f, 0xf1, 0xff, 0x6c, 0xb5, 0xb3, 0x5f, 0xb1, 0xe0, 0xc9, 0xcc, - 0xfe, 0x1a, 0x36, 0x15, 0xf3, 0x50, 0x6e, 0xd0, 0x42, 0xcd, 0x6f, 0x2a, 0x71, 0x28, 0x95, 0x00, - 0x9c, 0xe0, 0x18, 0xa6, 0x13, 0x85, 0x9e, 0xa6, 0x13, 0xff, 0xc2, 0x82, 0x8e, 0x05, 0x7c, 0x06, - 0x27, 0xe9, 0xaa, 0x79, 0x92, 0x7e, 0xbc, 0x9f, 0xb9, 0xcc, 0x39, 0x44, 0xff, 0xf3, 0x04, 0x5c, - 0xc8, 0x71, 0x94, 0xd8, 0x87, 0xa9, 0xed, 0x06, 0x31, 0x3d, 0xd2, 0xc4, 0xc7, 0x64, 0x3a, 0xef, - 0x75, 0x75, 0x5f, 0x63, 0xb9, 0x71, 0xa6, 0x3a, 0x50, 0x70, 0x67, 0x13, 0xe8, 0x2b, 0x16, 0x9c, - 0x77, 0xee, 0x47, 0x1d, 0x19, 0x10, 0xc5, 0x9a, 0x79, 0x29, 0x53, 0x4b, 0xd1, 0x23, 0x63, 0x22, - 0x4f, 0x16, 0x94, 0x85, 0x85, 0x33, 0xdb, 0x42, 0x58, 0xc4, 0xaf, 0xa4, 0xfc, 0x76, 0x17, 0x9f, - 0xc9, 0x2c, 0x8f, 0x16, 0x7e, 0xa6, 0x4a, 0x08, 0x56, 0x74, 0xd0, 0x3d, 0x28, 0x6f, 0x4b, 0x37, - 0x33, 0x71, 0x66, 0x67, 0x5e, 0x82, 0x99, 0xbe, 0x68, 0xfc, 0xdd, 0x50, 0x81, 0x70, 0x42, 0x0a, - 0xbd, 0x0e, 0x45, 0x7f, 0x2b, 0xea, 0x96, 0x65, 0x27, 0x65, 0x6a, 0xc4, 0xfd, 0x91, 0xd7, 0x57, - 0xea, 0x98, 0x56, 0x44, 0x37, 0xa1, 0x18, 0x6e, 0x36, 0x85, 0x62, 0x2d, 0x93, 0x2f, 0xc5, 0x8b, - 0xd5, 0xec, 0x45, 0xc2, 0x29, 0xe1, 0xc5, 0x2a, 0xa6, 0x24, 0x50, 0x0d, 0x06, 0x98, 0x4f, 0x81, - 0xd0, 0x9f, 0x65, 0x32, 0xa4, 0x5d, 0x7c, 0x73, 0xb8, 0xd3, 0x32, 0x43, 0xc0, 0x9c, 0x10, 0xda, - 0x80, 0xc1, 0x06, 0xcb, 0xc8, 0x22, 0x42, 0x26, 0x7f, 0x2a, 0x53, 0x85, 0xd6, 0x25, 0x55, 0x8d, - 0xd0, 0x28, 0x31, 0x0c, 0x2c, 0x68, 0x31, 0xaa, 0xa4, 0xb5, 0xb3, 0x15, 0x31, 0x11, 0x3c, 0x8f, - 0x6a, 0x97, 0x0c, 0x4c, 0x82, 0x2a, 0xc3, 0xc0, 0x82, 0x16, 0xfa, 0x0c, 0x14, 0xb6, 0x1a, 0xc2, - 0xe5, 0x20, 0x53, 0x97, 0x66, 0xba, 0x94, 0x2f, 0x0e, 0x1e, 0x1d, 0x56, 0x0a, 0x2b, 0x4b, 0xb8, - 0xb0, 0xd5, 0x40, 0xeb, 0x30, 0xb4, 0xc5, 0x9d, 0x50, 0x85, 0xba, 0xec, 0xe9, 0x6c, 0xff, 0xd8, - 0x0e, 0x3f, 0x55, 0x6e, 0x2a, 0x2f, 0x00, 0x58, 0x12, 0x61, 0x41, 0x20, 0x95, 0x33, 0xad, 0x88, - 0x86, 0x3c, 0x77, 0x32, 0x07, 0x68, 0xee, 0xde, 0x9e, 0xb8, 0xe4, 0x62, 0x8d, 0x22, 0xfa, 0x32, - 0x94, 0x1d, 0x99, 0x7b, 0x4f, 0x44, 0x8b, 0x78, 0x31, 0x73, 0x63, 0x76, 0x4f, 0x4b, 0xc8, 0x57, - 0xb5, 0x42, 0xc2, 0x09, 0x51, 0xb4, 0x0b, 0x63, 0xfb, 0x51, 0x6b, 0x87, 0xc8, 0x8d, 0xcc, 0x82, - 0x47, 0xe4, 0x5c, 0x5c, 0xf7, 0x04, 0xa2, 0x1b, 0xc6, 0x6d, 0xc7, 0xeb, 0x38, 0x7b, 0xd8, 0x63, - 0xf3, 0x3d, 0x9d, 0x18, 0x36, 0x69, 0xd3, 0xe1, 0x7f, 0xaf, 0x1d, 0x6c, 0x1e, 0xc4, 0x44, 0x84, - 0x4f, 0xce, 0x1c, 0xfe, 0x37, 0x39, 0x4a, 0xe7, 0xf0, 0x0b, 0x00, 0x96, 0x44, 0xe8, 0x56, 0x77, - 0x64, 0x5e, 0x4b, 0x16, 0x36, 0x39, 0x67, 0xab, 0x67, 0x26, 0xbf, 0xd4, 0x06, 0x85, 0x9d, 0x91, - 0x09, 0x29, 0x76, 0x36, 0xb6, 0x76, 0x82, 0x38, 0xf0, 0x53, 0xe7, 0xf2, 0x54, 0xfe, 0xd9, 0x58, - 0xcb, 0xc0, 0xef, 0x3c, 0x1b, 0xb3, 0xb0, 0x70, 0x66, 0x5b, 0xa8, 0x09, 0xe3, 0xad, 0x20, 0x8c, - 0xef, 0x07, 0xa1, 0x5c, 0x5f, 0xa8, 0x8b, 0xb8, 0x6f, 0x60, 0x8a, 0x16, 0x59, 0x38, 0x6f, 0x13, - 0x82, 0x53, 0x34, 0xd1, 0xe7, 0x61, 0x28, 0x6a, 0x38, 0x1e, 0x59, 0xbd, 0x33, 0x73, 0x2e, 0xff, - 0xd2, 0xa9, 0x73, 0x94, 0x9c, 0xd5, 0xc5, 0x26, 0x47, 0xa0, 0x60, 0x49, 0x0e, 0xad, 0xc0, 0x00, - 0x8b, 0xc9, 0xcf, 0x22, 0x3f, 0xe7, 0x44, 0x25, 0xea, 0x30, 0xea, 0xe4, 0x67, 0x13, 0x2b, 0xc6, - 0xbc, 0x3a, 0xdd, 0x03, 0x82, 0xeb, 0x0d, 0xa2, 0x99, 0xe9, 0xfc, 0x3d, 0x20, 0x98, 0xe5, 0x3b, - 0xf5, 0x6e, 0x7b, 0x40, 0x21, 0xe1, 0x84, 0x28, 0x3d, 0x99, 0xe9, 0x69, 0x7a, 0xa1, 0x8b, 0x9d, - 0x49, 0xee, 0x59, 0xca, 0x4e, 0x66, 0x7a, 0x92, 0x52, 0x12, 0xf6, 0xef, 0x0d, 0x75, 0x72, 0x2a, - 0x4c, 0x4e, 0xfa, 0xcb, 0x56, 0xc7, 0x13, 0xda, 0xa7, 0xfb, 0x55, 0xdb, 0x9c, 0x22, 0x8f, 0xfa, - 0x15, 0x0b, 0x2e, 0xb4, 0x32, 0x3f, 0x44, 0x5c, 0xfb, 0xfd, 0x69, 0x7f, 0xf8, 0xa7, 0xab, 0xe8, - 0xec, 0xd9, 0x70, 0x9c, 0xd3, 0x52, 0x5a, 0x0e, 0x28, 0x7e, 0x60, 0x39, 0x60, 0x0d, 0x86, 0x19, - 0x6b, 0xd9, 0x23, 0x43, 0x59, 0xda, 0x0b, 0x8d, 0x31, 0x10, 0x4b, 0xa2, 0x22, 0x56, 0x24, 0xd0, - 0x0f, 0x5b, 0x70, 0x29, 0xdd, 0x75, 0x4c, 0x18, 0x58, 0xc4, 0x32, 0xe7, 0x22, 0xda, 0x8a, 0xf8, - 0xfe, 0x4b, 0xb5, 0x6e, 0xc8, 0xc7, 0xbd, 0x10, 0x70, 0xf7, 0xc6, 0x50, 0x35, 0x43, 0x46, 0x1c, - 0x34, 0xf5, 0xe2, 0x7d, 0xc8, 0x89, 0x2f, 0xc1, 0xe8, 0x5e, 0xd0, 0xf6, 0x63, 0x61, 0x96, 0x22, - 0x9c, 0x04, 0xd9, 0x3b, 0xf0, 0x9a, 0x56, 0x8e, 0x0d, 0xac, 0x94, 0x74, 0x39, 0xfc, 0xb0, 0xd2, - 0x25, 0x7a, 0x27, 0x95, 0x87, 0xba, 0x9c, 0x1f, 0x33, 0x4f, 0x08, 0xe2, 0x27, 0xc8, 0x46, 0x7d, - 0xb6, 0x12, 0xd1, 0xcf, 0x59, 0x19, 0xac, 0x3c, 0x97, 0x91, 0x3f, 0x6b, 0xca, 0xc8, 0x57, 0xd3, - 0x32, 0x72, 0x87, 0x4e, 0xd4, 0x10, 0x8f, 0xfb, 0x0f, 0xbc, 0xdc, 0x6f, 0x24, 0x33, 0xdb, 0x83, - 0x2b, 0xbd, 0xae, 0x25, 0x66, 0x9f, 0xd4, 0x54, 0x2f, 0x60, 0x89, 0x7d, 0x52, 0x73, 0xb5, 0x8a, - 0x19, 0xa4, 0xdf, 0x50, 0x17, 0xf6, 0x7f, 0xb3, 0xa0, 0x58, 0x0b, 0x9a, 0x67, 0xa0, 0xe3, 0xfd, - 0x9c, 0xa1, 0xe3, 0x7d, 0x3c, 0x27, 0x3f, 0x78, 0xae, 0x46, 0x77, 0x39, 0xa5, 0xd1, 0xbd, 0x94, - 0x47, 0xa0, 0xbb, 0xfe, 0xf6, 0xa7, 0x8b, 0xa0, 0x67, 0x33, 0x47, 0xff, 0xea, 0x61, 0x8c, 0x83, - 0x8b, 0xdd, 0x12, 0x9c, 0x0b, 0xca, 0xcc, 0xac, 0x49, 0xfa, 0xbd, 0xfd, 0x39, 0xb3, 0x11, 0x7e, - 0x8b, 0xb8, 0xdb, 0x3b, 0x31, 0x69, 0xa6, 0x3f, 0xe7, 0xec, 0x6c, 0x84, 0xff, 0x8b, 0x05, 0x13, - 0xa9, 0xd6, 0x91, 0x07, 0x63, 0x9e, 0xae, 0xa0, 0x13, 0xeb, 0xf4, 0xa1, 0x74, 0x7b, 0xc2, 0xc6, - 0x52, 0x2b, 0xc2, 0x26, 0x71, 0x34, 0x07, 0xa0, 0x1e, 0xd0, 0xa4, 0xde, 0x8b, 0x71, 0xfd, 0xea, - 0x85, 0x2d, 0xc2, 0x1a, 0x06, 0x7a, 0x19, 0x46, 0xe2, 0xa0, 0x15, 0x78, 0xc1, 0xf6, 0xc1, 0x2d, - 0x22, 0x83, 0xab, 0x28, 0xcb, 0xa9, 0x8d, 0x04, 0x84, 0x75, 0x3c, 0xfb, 0x67, 0x8b, 0x90, 0xce, - 0x80, 0xff, 0xad, 0x35, 0xf9, 0xd1, 0x5c, 0x93, 0xdf, 0xb4, 0x60, 0x92, 0xb6, 0xce, 0xac, 0x38, - 0xe4, 0x65, 0xab, 0x12, 0xc0, 0x58, 0x5d, 0x12, 0xc0, 0x5c, 0xa5, 0x67, 0x57, 0x33, 0x68, 0xc7, - 0x42, 0x6f, 0xa6, 0x1d, 0x4e, 0xb4, 0x14, 0x0b, 0xa8, 0xc0, 0x23, 0x61, 0x28, 0x5c, 0x93, 0x74, - 0x3c, 0x12, 0x86, 0x58, 0x40, 0x65, 0x7e, 0x98, 0x52, 0x4e, 0x7e, 0x18, 0x16, 0x2a, 0x4e, 0xbc, - 0xf7, 0x0b, 0xb6, 0x47, 0x0b, 0x15, 0x27, 0x0d, 0x01, 0x12, 0x1c, 0xfb, 0x17, 0x8b, 0x30, 0x5a, - 0x0b, 0x9a, 0xc9, 0x13, 0xd6, 0x4b, 0xc6, 0x13, 0xd6, 0x95, 0xd4, 0x13, 0xd6, 0xa4, 0x8e, 0xfb, - 0xad, 0x07, 0xab, 0x0f, 0xeb, 0xc1, 0xea, 0x9f, 0x5b, 0x6c, 0xd6, 0xaa, 0xeb, 0x75, 0x91, 0x9f, - 0xf6, 0x05, 0x18, 0x61, 0x07, 0x12, 0xf3, 0x85, 0x93, 0xef, 0x3a, 0x2c, 0xf4, 0xfb, 0x7a, 0x52, - 0x8c, 0x75, 0x1c, 0x74, 0x0d, 0x86, 0x23, 0xe2, 0x84, 0x8d, 0x1d, 0x75, 0xc6, 0x89, 0x57, 0x0f, - 0x5e, 0x86, 0x15, 0x14, 0xbd, 0x99, 0x44, 0x29, 0x2b, 0xe6, 0x67, 0x5a, 0xd5, 0xfb, 0xc3, 0xb7, - 0x48, 0x7e, 0x68, 0x32, 0xfb, 0x2d, 0x40, 0x9d, 0xf8, 0x7d, 0xc4, 0x23, 0xaa, 0x98, 0xf1, 0x88, - 0xca, 0x1d, 0xb1, 0x88, 0xfe, 0xd4, 0x82, 0xf1, 0x5a, 0xd0, 0xa4, 0x5b, 0xf7, 0x2f, 0xd2, 0x3e, - 0xd5, 0x43, 0x34, 0x0e, 0x76, 0x09, 0xd1, 0xf8, 0xf7, 0x2c, 0x18, 0xaa, 0x05, 0xcd, 0x33, 0xd0, - 0xb6, 0x7f, 0xd6, 0xd4, 0xb6, 0x3f, 0x96, 0xb3, 0x24, 0x72, 0x14, 0xec, 0xbf, 0x5c, 0x84, 0x31, - 0xda, 0xcf, 0x60, 0x5b, 0xce, 0x92, 0x31, 0x22, 0x56, 0x1f, 0x23, 0x42, 0xd9, 0xdc, 0xc0, 0xf3, - 0x82, 0xfb, 0xe9, 0x19, 0x5b, 0x61, 0xa5, 0x58, 0x40, 0xd1, 0x73, 0x30, 0xdc, 0x0a, 0xc9, 0xbe, - 0x1b, 0x08, 0xfe, 0x51, 0x7b, 0xbb, 0xa8, 0x89, 0x72, 0xac, 0x30, 0xa8, 0xdc, 0x15, 0xb9, 0x7e, - 0x83, 0xc8, 0x34, 0xcf, 0x25, 0x96, 0x09, 0x8a, 0xc7, 0x5e, 0xd6, 0xca, 0xb1, 0x81, 0x85, 0xde, - 0x82, 0x32, 0xfb, 0xcf, 0x4e, 0x94, 0x93, 0x67, 0xae, 0x11, 0x09, 0x0f, 0x04, 0x01, 0x9c, 0xd0, - 0x42, 0xd7, 0x01, 0x62, 0x19, 0x9f, 0x37, 0x12, 0x61, 0x65, 0x14, 0xaf, 0xad, 0x22, 0xf7, 0x46, - 0x58, 0xc3, 0x42, 0xcf, 0x42, 0x39, 0x76, 0x5c, 0xef, 0xb6, 0xeb, 0x93, 0x88, 0xa9, 0x9c, 0x8b, - 0x32, 0x9f, 0x81, 0x28, 0xc4, 0x09, 0x9c, 0xf2, 0x3a, 0xcc, 0xe7, 0x9a, 0xe7, 0xbd, 0x1a, 0x66, - 0xd8, 0x8c, 0xd7, 0xb9, 0xad, 0x4a, 0xb1, 0x86, 0x61, 0xbf, 0x0a, 0xd3, 0xb5, 0xa0, 0x59, 0x0b, - 0xc2, 0x78, 0x25, 0x08, 0xef, 0x3b, 0x61, 0x53, 0xce, 0x5f, 0x45, 0x86, 0xd6, 0xa7, 0x67, 0xcf, - 0x00, 0xdf, 0x99, 0x46, 0xd0, 0xfc, 0x17, 0x19, 0xb7, 0x73, 0x42, 0x5f, 0x8b, 0x06, 0xbb, 0x77, - 0x55, 0x8a, 0xbb, 0x1b, 0x4e, 0x4c, 0xd0, 0x1d, 0x96, 0x16, 0x2b, 0xb9, 0x82, 0x44, 0xf5, 0x67, - 0xb4, 0xb4, 0x58, 0x09, 0x30, 0xf3, 0xce, 0x32, 0xeb, 0xdb, 0xbf, 0x5e, 0x64, 0xa7, 0x51, 0x2a, - 0xe3, 0x1b, 0xfa, 0x12, 0x8c, 0x47, 0xe4, 0xb6, 0xeb, 0xb7, 0x1f, 0x48, 0x21, 0xbc, 0x8b, 0xb7, - 0x4c, 0x7d, 0x59, 0xc7, 0xe4, 0xaa, 0x3c, 0xb3, 0x0c, 0xa7, 0xa8, 0xd1, 0x79, 0x0a, 0xdb, 0xfe, - 0x42, 0x74, 0x37, 0x22, 0xa1, 0xc8, 0x38, 0xc6, 0xe6, 0x09, 0xcb, 0x42, 0x9c, 0xc0, 0xe9, 0xba, - 0x64, 0x7f, 0xd6, 0x03, 0x1f, 0x07, 0x41, 0x2c, 0x57, 0x32, 0xcb, 0x59, 0xa3, 0x95, 0x63, 0x03, - 0x0b, 0xad, 0x00, 0x8a, 0xda, 0xad, 0x96, 0xc7, 0xde, 0xdb, 0x1d, 0xef, 0x46, 0x18, 0xb4, 0x5b, - 0xfc, 0xad, 0xb3, 0xb8, 0x78, 0x81, 0x5e, 0x61, 0xf5, 0x0e, 0x28, 0xce, 0xa8, 0x41, 0x4f, 0x9f, - 0xad, 0x88, 0xfd, 0x66, 0xab, 0xbb, 0x28, 0xd4, 0xeb, 0x75, 0x56, 0x84, 0x25, 0x8c, 0x2e, 0x26, - 0xd6, 0x3c, 0xc7, 0x1c, 0x4c, 0x16, 0x13, 0x56, 0xa5, 0x58, 0xc3, 0x40, 0xcb, 0x30, 0x14, 0x1d, - 0x44, 0x8d, 0x58, 0x04, 0x41, 0xca, 0xc9, 0x1d, 0x59, 0x67, 0x28, 0x5a, 0x3e, 0x03, 0x5e, 0x05, - 0xcb, 0xba, 0xf6, 0xf7, 0xb0, 0xcb, 0x90, 0xe5, 0xa7, 0x8a, 0xdb, 0x21, 0x41, 0x7b, 0x30, 0xd6, - 0x62, 0x53, 0x2e, 0xa2, 0x27, 0x8b, 0x79, 0x7b, 0xa9, 0x4f, 0xa9, 0xf6, 0x3e, 0x3d, 0x68, 0x94, - 0xd6, 0x89, 0x89, 0x0b, 0x35, 0x9d, 0x1c, 0x36, 0xa9, 0xdb, 0x3f, 0x38, 0xc5, 0xce, 0xdc, 0x3a, - 0x17, 0x55, 0x87, 0x84, 0xc5, 0xaf, 0xe0, 0xcb, 0x67, 0xf3, 0x75, 0x26, 0xc9, 0x17, 0x09, 0xab, - 0x61, 0x2c, 0xeb, 0xa2, 0x37, 0xd9, 0xdb, 0x34, 0x3f, 0xe8, 0x7a, 0xa5, 0x09, 0xe6, 0x58, 0xc6, - 0x33, 0xb4, 0xa8, 0x88, 0x35, 0x22, 0xe8, 0x36, 0x8c, 0x89, 0x74, 0x46, 0x42, 0x29, 0x56, 0x34, - 0x94, 0x1e, 0x63, 0x58, 0x07, 0x1e, 0xa7, 0x0b, 0xb0, 0x59, 0x19, 0x6d, 0xc3, 0x25, 0x2d, 0xb7, - 0xdf, 0x8d, 0xd0, 0x61, 0xef, 0x95, 0x2e, 0xdb, 0x44, 0xda, 0xb9, 0xf9, 0xe4, 0xd1, 0x61, 0xe5, - 0xd2, 0x46, 0x37, 0x44, 0xdc, 0x9d, 0x0e, 0xba, 0x03, 0xd3, 0xdc, 0xb1, 0xae, 0x4a, 0x9c, 0xa6, - 0xe7, 0xfa, 0xea, 0x60, 0xe6, 0xeb, 0xf0, 0xe2, 0xd1, 0x61, 0x65, 0x7a, 0x21, 0x0b, 0x01, 0x67, - 0xd7, 0x43, 0x9f, 0x85, 0x72, 0xd3, 0x8f, 0xc4, 0x18, 0x0c, 0x1a, 0x69, 0x2b, 0xcb, 0xd5, 0xf5, - 0xba, 0xfa, 0xfe, 0xe4, 0x0f, 0x4e, 0x2a, 0xa0, 0x6d, 0xae, 0x18, 0x53, 0x72, 0xe8, 0x50, 0x7e, - 0x8a, 0x72, 0xb1, 0x24, 0x0c, 0xd7, 0x1a, 0xae, 0x11, 0x56, 0xa6, 0xa9, 0x86, 0xd7, 0x8d, 0x41, - 0x18, 0xbd, 0x01, 0x88, 0x32, 0x6a, 0x6e, 0x83, 0x2c, 0x34, 0x58, 0x10, 0x6b, 0xa6, 0x47, 0x1c, - 0x36, 0x5c, 0x19, 0x50, 0xbd, 0x03, 0x03, 0x67, 0xd4, 0x42, 0x37, 0xe9, 0x41, 0xa6, 0x97, 0x0a, - 0x13, 0x5b, 0xc9, 0xdc, 0xcf, 0x54, 0x49, 0x2b, 0x24, 0x0d, 0x27, 0x26, 0x4d, 0x93, 0x22, 0x4e, - 0xd5, 0xa3, 0x77, 0xa9, 0xca, 0x67, 0x03, 0x66, 0xa4, 0x8a, 0xce, 0x9c, 0x36, 0x54, 0x2e, 0xde, - 0x09, 0xa2, 0x78, 0x9d, 0xc4, 0xf7, 0x83, 0x70, 0x57, 0x04, 0x06, 0x4b, 0x62, 0x54, 0x26, 0x20, - 0xac, 0xe3, 0x51, 0x3e, 0x98, 0x3d, 0x0e, 0xaf, 0x56, 0xd9, 0x0b, 0xdd, 0x70, 0xb2, 0x4f, 0x6e, - 0xf2, 0x62, 0x2c, 0xe1, 0x12, 0x75, 0xb5, 0xb6, 0xc4, 0x5e, 0xdb, 0x52, 0xa8, 0xab, 0xb5, 0x25, - 0x2c, 0xe1, 0x88, 0x74, 0xa6, 0x04, 0x1d, 0xcf, 0xd7, 0x6a, 0x76, 0x5e, 0x07, 0x7d, 0x66, 0x05, - 0xf5, 0x61, 0x52, 0x25, 0x23, 0xe5, 0x11, 0xd3, 0xa2, 0x99, 0x09, 0xb6, 0x48, 0xfa, 0x0f, 0xb7, - 0xa6, 0xf4, 0xc4, 0xab, 0x29, 0x4a, 0xb8, 0x83, 0xb6, 0x11, 0x3b, 0x64, 0xb2, 0x67, 0x3e, 0xa2, - 0x79, 0x28, 0x47, 0xed, 0xcd, 0x66, 0xb0, 0xe7, 0xb8, 0x3e, 0x7b, 0x1c, 0xd3, 0x98, 0xac, 0xba, - 0x04, 0xe0, 0x04, 0x07, 0xad, 0xc0, 0xb0, 0x23, 0x95, 0xc0, 0x28, 0x3f, 0x98, 0x80, 0x52, 0xfd, - 0x72, 0xff, 0x5a, 0xa9, 0xf6, 0x55, 0x75, 0xd1, 0x6b, 0x30, 0x26, 0xdc, 0xa9, 0x78, 0x88, 0x05, - 0xf6, 0x78, 0xa5, 0xd9, 0xcb, 0xd7, 0x75, 0x20, 0x36, 0x71, 0xd1, 0x17, 0x61, 0x9c, 0x52, 0x49, - 0x0e, 0xb6, 0x99, 0xf3, 0xfd, 0x9c, 0x88, 0x5a, 0x9e, 0x09, 0xbd, 0x32, 0x4e, 0x11, 0x43, 0x4d, - 0x78, 0xc2, 0x69, 0xc7, 0x01, 0x53, 0xa4, 0x9b, 0xeb, 0x7f, 0x23, 0xd8, 0x25, 0x3e, 0x7b, 0xc3, - 0x1a, 0x5e, 0xbc, 0x72, 0x74, 0x58, 0x79, 0x62, 0xa1, 0x0b, 0x1e, 0xee, 0x4a, 0x05, 0xdd, 0x85, - 0x91, 0x38, 0xf0, 0x98, 0xe5, 0x3a, 0x65, 0x25, 0x2e, 0xe4, 0xc7, 0xde, 0xd9, 0x50, 0x68, 0xba, - 0x12, 0x49, 0x55, 0xc5, 0x3a, 0x1d, 0xb4, 0xc1, 0xf7, 0x18, 0x8b, 0x4a, 0x4a, 0xa2, 0x99, 0xc7, - 0xf2, 0x07, 0x46, 0x05, 0x2f, 0x35, 0xb7, 0xa0, 0xa8, 0x89, 0x75, 0x32, 0xe8, 0x06, 0x4c, 0xb5, - 0x42, 0x37, 0x60, 0x0b, 0x5b, 0x3d, 0x62, 0xcc, 0x98, 0xa9, 0x05, 0x6a, 0x69, 0x04, 0xdc, 0x59, - 0x87, 0x0a, 0x99, 0xb2, 0x70, 0xe6, 0x22, 0xcf, 0x53, 0xc5, 0x19, 0x6f, 0x5e, 0x86, 0x15, 0x14, - 0xad, 0xb1, 0x73, 0x99, 0x8b, 0x83, 0x33, 0xb3, 0xf9, 0x41, 0x18, 0x74, 0xb1, 0x91, 0xf3, 0x4b, - 0xea, 0x2f, 0x4e, 0x28, 0xd0, 0x7b, 0x23, 0xda, 0x71, 0x42, 0x52, 0x0b, 0x83, 0x06, 0xe1, 0x9d, - 0xe1, 0x46, 0xf3, 0x8f, 0xf3, 0xe0, 0x89, 0xf4, 0xde, 0xa8, 0x67, 0x21, 0xe0, 0xec, 0x7a, 0xa8, - 0xa9, 0xa5, 0x67, 0xa6, 0x6c, 0x68, 0x34, 0xf3, 0x44, 0x17, 0x33, 0xa3, 0x14, 0xcf, 0x9a, 0xac, - 0x45, 0xa3, 0x38, 0xc2, 0x29, 0x9a, 0xb3, 0xdf, 0x0e, 0x53, 0x1d, 0xf7, 0xc5, 0x89, 0xe2, 0x76, - 0xff, 0xc9, 0x00, 0x94, 0x95, 0x2a, 0x1c, 0xcd, 0x9b, 0x2f, 0x1c, 0x17, 0xd3, 0x2f, 0x1c, 0xc3, - 0x94, 0x23, 0xd7, 0x1f, 0x35, 0x36, 0x0c, 0xa3, 0xb8, 0x42, 0x7e, 0x96, 0x2c, 0x9d, 0xa7, 0xee, - 0xe9, 0x01, 0xa7, 0x69, 0x36, 0x8a, 0x7d, 0x3f, 0x95, 0x94, 0xba, 0x2a, 0x4b, 0xfa, 0x4c, 0x52, - 0x4b, 0x85, 0xff, 0x56, 0xd0, 0x5c, 0xad, 0xa5, 0xb3, 0x36, 0xd6, 0x68, 0x21, 0xe6, 0x30, 0x26, - 0xbe, 0x51, 0xe6, 0x86, 0x89, 0x6f, 0x43, 0x0f, 0x29, 0xbe, 0x49, 0x02, 0x38, 0xa1, 0x85, 0x3c, - 0x98, 0x6a, 0x98, 0x09, 0x37, 0x95, 0xd7, 0xdb, 0x53, 0x3d, 0x53, 0x5f, 0xb6, 0xb5, 0xec, 0x66, - 0x4b, 0x69, 0x2a, 0xb8, 0x93, 0x30, 0x7a, 0x0d, 0x86, 0xdf, 0x0b, 0x22, 0xb6, 0xf9, 0xc4, 0x0d, - 0x2f, 0xbd, 0x83, 0x86, 0xdf, 0xbc, 0x53, 0x67, 0xe5, 0xc7, 0x87, 0x95, 0x91, 0x5a, 0xd0, 0x94, - 0x7f, 0xb1, 0xaa, 0x80, 0x1e, 0xc0, 0xb4, 0x71, 0x2e, 0xaa, 0xee, 0x42, 0xff, 0xdd, 0xbd, 0x24, - 0x9a, 0x9b, 0x5e, 0xcd, 0xa2, 0x84, 0xb3, 0x1b, 0xa0, 0x87, 0x8d, 0x1f, 0x88, 0x64, 0xb5, 0x92, - 0x8b, 0x60, 0xcc, 0x42, 0x59, 0xf7, 0x0d, 0x4f, 0x21, 0xe0, 0xce, 0x3a, 0xf6, 0xd7, 0xf8, 0xcb, - 0x81, 0xd0, 0x2f, 0x92, 0xa8, 0xed, 0x9d, 0x45, 0x2e, 0xa4, 0x65, 0x43, 0xf5, 0xf9, 0xd0, 0xaf, - 0x53, 0xbf, 0x69, 0xb1, 0xd7, 0xa9, 0x0d, 0xb2, 0xd7, 0xf2, 0xa8, 0x94, 0xfb, 0xe8, 0x3b, 0xfe, - 0x26, 0x0c, 0xc7, 0xa2, 0xb5, 0x6e, 0xe9, 0x9b, 0xb4, 0x4e, 0xb1, 0x17, 0x3a, 0xc5, 0x5f, 0xc8, - 0x52, 0xac, 0xc8, 0xd8, 0xff, 0x94, 0xcf, 0x80, 0x84, 0x9c, 0x81, 0x1a, 0xaa, 0x6a, 0xaa, 0xa1, - 0x2a, 0x3d, 0xbe, 0x20, 0x47, 0x1d, 0xf5, 0x4f, 0xcc, 0x7e, 0x33, 0x51, 0xee, 0xa3, 0xfe, 0x2c, - 0x6a, 0xff, 0x98, 0x05, 0xe7, 0xb3, 0xec, 0x88, 0x28, 0x4f, 0xc8, 0x05, 0x49, 0xf5, 0x4c, 0xac, - 0x46, 0xf0, 0x9e, 0x28, 0xc7, 0x0a, 0xa3, 0xef, 0xcc, 0x08, 0x27, 0x0b, 0x9f, 0x76, 0x07, 0xc6, - 0x6a, 0x21, 0xd1, 0xee, 0x80, 0xd7, 0xb9, 0x9b, 0x19, 0xef, 0xcf, 0x73, 0x27, 0x76, 0x31, 0xb3, - 0x7f, 0xbe, 0x00, 0xe7, 0xf9, 0x3b, 0xcf, 0xc2, 0x7e, 0xe0, 0x36, 0x6b, 0x41, 0x53, 0x64, 0xb5, - 0x78, 0x1b, 0x46, 0x5b, 0x9a, 0xf4, 0xdf, 0x2d, 0x80, 0x93, 0xae, 0x25, 0x48, 0xa4, 0x30, 0xbd, - 0x14, 0x1b, 0xb4, 0x50, 0x13, 0x46, 0xc9, 0xbe, 0xdb, 0x50, 0x8f, 0x05, 0x85, 0x13, 0xdf, 0x0d, - 0xaa, 0x95, 0x65, 0x8d, 0x0e, 0x36, 0xa8, 0x3e, 0x82, 0x44, 0x67, 0xf6, 0x8f, 0x5b, 0xf0, 0x58, - 0x4e, 0xb8, 0x27, 0xda, 0xdc, 0x7d, 0xf6, 0xa2, 0x26, 0x72, 0x26, 0xa9, 0xe6, 0xf8, 0x3b, 0x1b, - 0x16, 0x50, 0xf4, 0x79, 0x00, 0xfe, 0x4e, 0x46, 0x85, 0x92, 0x5e, 0x71, 0x71, 0x8c, 0x90, 0x1e, - 0x5a, 0x28, 0x06, 0x59, 0x1f, 0x6b, 0xb4, 0xec, 0x9f, 0x29, 0xc2, 0x00, 0x7b, 0x97, 0x41, 0x2b, - 0x30, 0xb4, 0xc3, 0x83, 0x1b, 0xf7, 0x13, 0x47, 0x39, 0x91, 0xee, 0x78, 0x01, 0x96, 0x95, 0xd1, - 0x1a, 0x9c, 0xe3, 0xc1, 0xa1, 0xbd, 0x2a, 0xf1, 0x9c, 0x03, 0xa9, 0x24, 0xe0, 0x79, 0x86, 0x54, - 0x58, 0x89, 0xd5, 0x4e, 0x14, 0x9c, 0x55, 0x0f, 0xbd, 0x0e, 0xe3, 0xb1, 0xbb, 0x47, 0x82, 0x76, - 0x2c, 0x29, 0xf1, 0xb0, 0xd0, 0x8a, 0x8d, 0xdb, 0x30, 0xa0, 0x38, 0x85, 0x4d, 0xc5, 0x9d, 0x56, - 0x87, 0x3a, 0x44, 0xcb, 0xdc, 0x6f, 0xaa, 0x40, 0x4c, 0x5c, 0x66, 0x40, 0xd4, 0x66, 0xe6, 0x52, - 0x1b, 0x3b, 0x21, 0x89, 0x76, 0x02, 0xaf, 0x29, 0xd2, 0x54, 0x27, 0x06, 0x44, 0x29, 0x38, 0xee, - 0xa8, 0x41, 0xa9, 0x6c, 0x39, 0xae, 0xd7, 0x0e, 0x49, 0x42, 0x65, 0xd0, 0xa4, 0xb2, 0x92, 0x82, - 0xe3, 0x8e, 0x1a, 0x74, 0x1d, 0x4d, 0x8b, 0xbc, 0xd1, 0xd2, 0xd9, 0x5d, 0x59, 0x85, 0x0d, 0x49, - 0xb7, 0x9f, 0x2e, 0xd1, 0x5e, 0x84, 0xdd, 0x8c, 0xca, 0x3c, 0xad, 0x69, 0xf1, 0x84, 0xc3, 0x8f, - 0xa4, 0xf2, 0x30, 0xd9, 0x8b, 0x7f, 0xcf, 0x82, 0x73, 0x19, 0xd6, 0xa7, 0xfc, 0xa8, 0xda, 0x76, - 0xa3, 0x58, 0xe5, 0x52, 0xd1, 0x8e, 0x2a, 0x5e, 0x8e, 0x15, 0x06, 0xdd, 0x0f, 0xfc, 0x30, 0x4c, - 0x1f, 0x80, 0xc2, 0xba, 0x4b, 0x40, 0x4f, 0x76, 0x00, 0xa2, 0x2b, 0x50, 0x6a, 0x47, 0x44, 0xc6, - 0x69, 0x52, 0xe7, 0x37, 0xd3, 0xeb, 0x32, 0x08, 0x65, 0x4d, 0xb7, 0x95, 0x4a, 0x55, 0x63, 0x4d, - 0xb9, 0x9e, 0x94, 0xc3, 0xec, 0xaf, 0x16, 0xe1, 0x62, 0xae, 0x9d, 0x39, 0xed, 0xd2, 0x5e, 0xe0, - 0xbb, 0x71, 0xa0, 0xde, 0xfc, 0x78, 0xa4, 0x10, 0xd2, 0xda, 0x59, 0x13, 0xe5, 0x58, 0x61, 0xa0, - 0xab, 0x32, 0x83, 0x79, 0x3a, 0x5b, 0xcc, 0x62, 0xd5, 0x48, 0x62, 0xde, 0x6f, 0x26, 0xae, 0xa7, - 0xa0, 0xd4, 0x0a, 0x02, 0x2f, 0x7d, 0x18, 0xd1, 0xee, 0x06, 0x81, 0x87, 0x19, 0x10, 0x7d, 0x42, - 0x8c, 0x43, 0xea, 0x91, 0x0b, 0x3b, 0xcd, 0x20, 0xd2, 0x06, 0xe3, 0x19, 0x18, 0xda, 0x25, 0x07, - 0xa1, 0xeb, 0x6f, 0xa7, 0x1f, 0x3f, 0x6f, 0xf1, 0x62, 0x2c, 0xe1, 0x66, 0xb2, 0x84, 0xa1, 0xd3, - 0x4e, 0xa1, 0x35, 0xdc, 0xf3, 0x6a, 0xfb, 0xa1, 0x22, 0x4c, 0xe0, 0xc5, 0xea, 0xb7, 0x26, 0xe2, - 0x6e, 0xe7, 0x44, 0x9c, 0x76, 0x0a, 0xad, 0xde, 0xb3, 0xf1, 0xcb, 0x16, 0x4c, 0xb0, 0x80, 0xc2, - 0x22, 0x3e, 0x85, 0x1b, 0xf8, 0x67, 0xc0, 0xba, 0x3d, 0x05, 0x03, 0x21, 0x6d, 0x34, 0x9d, 0x17, - 0x87, 0xf5, 0x04, 0x73, 0x18, 0x7a, 0x02, 0x4a, 0xac, 0x0b, 0x74, 0xf2, 0x46, 0x79, 0x4a, 0x81, - 0xaa, 0x13, 0x3b, 0x98, 0x95, 0x32, 0xa7, 0x6b, 0x4c, 0x5a, 0x9e, 0xcb, 0x3b, 0x9d, 0x3c, 0x28, - 0x7c, 0x34, 0x9c, 0xae, 0x33, 0xbb, 0xf6, 0xc1, 0x9c, 0xae, 0xb3, 0x49, 0x76, 0x17, 0x8b, 0xfe, - 0x7b, 0x01, 0x2e, 0x67, 0xd6, 0xeb, 0xdb, 0xe9, 0xba, 0x7b, 0xed, 0xd3, 0xb1, 0x61, 0xc9, 0x36, - 0x2d, 0x29, 0x9e, 0xa1, 0x69, 0x49, 0xa9, 0x5f, 0xce, 0x71, 0xa0, 0x0f, 0x5f, 0xe8, 0xcc, 0x21, - 0xfb, 0x88, 0xf8, 0x42, 0x67, 0xf6, 0x2d, 0x47, 0xac, 0xfb, 0xb3, 0x42, 0xce, 0xb7, 0x30, 0x01, - 0xef, 0x1a, 0x3d, 0x67, 0x18, 0x30, 0x12, 0x9c, 0xf0, 0x28, 0x3f, 0x63, 0x78, 0x19, 0x56, 0x50, - 0xe4, 0x6a, 0x5e, 0xc5, 0x85, 0xfc, 0xac, 0x89, 0xb9, 0x4d, 0xcd, 0x99, 0xef, 0x3f, 0x6a, 0x08, - 0x32, 0x3c, 0x8c, 0xd7, 0x34, 0xa1, 0xbc, 0xd8, 0xbf, 0x50, 0x3e, 0x9a, 0x2d, 0x90, 0xa3, 0x05, - 0x98, 0xd8, 0x73, 0x7d, 0x96, 0x05, 0xdf, 0x64, 0x45, 0x55, 0x90, 0x8d, 0x35, 0x13, 0x8c, 0xd3, - 0xf8, 0xb3, 0xaf, 0xc1, 0xd8, 0xc3, 0xab, 0x23, 0xbf, 0x59, 0x84, 0xc7, 0xbb, 0x6c, 0x7b, 0x7e, - 0xd6, 0x1b, 0x73, 0xa0, 0x9d, 0xf5, 0x1d, 0xf3, 0x50, 0x83, 0xf3, 0x5b, 0x6d, 0xcf, 0x3b, 0x60, - 0xd6, 0x9b, 0xa4, 0x29, 0x31, 0x04, 0xaf, 0xf8, 0x84, 0x4c, 0xe2, 0xb0, 0x92, 0x81, 0x83, 0x33, - 0x6b, 0xa2, 0x37, 0x00, 0x05, 0x22, 0x65, 0xeb, 0x0d, 0xe2, 0x0b, 0xad, 0x3a, 0x1b, 0xf8, 0x62, - 0xb2, 0x19, 0xef, 0x74, 0x60, 0xe0, 0x8c, 0x5a, 0x94, 0xe9, 0xa7, 0xb7, 0xd2, 0x81, 0xea, 0x56, - 0x8a, 0xe9, 0xc7, 0x3a, 0x10, 0x9b, 0xb8, 0xe8, 0x06, 0x4c, 0x39, 0xfb, 0x8e, 0xcb, 0x83, 0xcf, - 0x49, 0x02, 0x9c, 0xeb, 0x57, 0x4a, 0xb0, 0x85, 0x34, 0x02, 0xee, 0xac, 0x93, 0x72, 0x6b, 0x1e, - 0xcc, 0x77, 0x6b, 0xee, 0x7e, 0x2e, 0xf6, 0xd2, 0xe9, 0xda, 0xff, 0xd1, 0xa2, 0xd7, 0x57, 0x46, - 0xda, 0x75, 0x3a, 0x0e, 0x4a, 0x37, 0xa9, 0x79, 0x18, 0x4f, 0x6b, 0xf6, 0x19, 0x09, 0x10, 0x9b, - 0xb8, 0x7c, 0x41, 0x44, 0x89, 0x8b, 0x8b, 0xc1, 0xba, 0x8b, 0x10, 0x02, 0x0a, 0x03, 0x7d, 0x01, - 0x86, 0x9a, 0xee, 0xbe, 0x1b, 0x05, 0xa1, 0xd8, 0x2c, 0x27, 0x74, 0x14, 0x48, 0xce, 0xc1, 0x2a, - 0x27, 0x83, 0x25, 0x3d, 0xfb, 0x87, 0x0a, 0x30, 0x26, 0x5b, 0x7c, 0xb3, 0x1d, 0xc4, 0xce, 0x19, - 0x5c, 0xcb, 0x37, 0x8c, 0x6b, 0xf9, 0x13, 0xdd, 0xe2, 0x28, 0xb0, 0x2e, 0xe5, 0x5e, 0xc7, 0x77, - 0x52, 0xd7, 0xf1, 0xd3, 0xbd, 0x49, 0x75, 0xbf, 0x86, 0xff, 0x99, 0x05, 0x53, 0x06, 0xfe, 0x19, - 0xdc, 0x06, 0x2b, 0xe6, 0x6d, 0xf0, 0x64, 0xcf, 0x6f, 0xc8, 0xb9, 0x05, 0xbe, 0xaf, 0x98, 0xea, - 0x3b, 0x3b, 0xfd, 0xdf, 0x83, 0xd2, 0x8e, 0x13, 0x36, 0xbb, 0xc5, 0x6b, 0xed, 0xa8, 0x34, 0x77, - 0xd3, 0x09, 0x9b, 0xfc, 0x0c, 0x7f, 0x4e, 0x25, 0x7a, 0x74, 0xc2, 0x66, 0x4f, 0x8f, 0x2e, 0xd6, - 0x14, 0x7a, 0x15, 0x06, 0xa3, 0x46, 0xd0, 0x52, 0xf6, 0x96, 0x57, 0x78, 0x12, 0x48, 0x5a, 0x72, - 0x7c, 0x58, 0x41, 0x66, 0x73, 0xb4, 0x18, 0x0b, 0x7c, 0xf4, 0x36, 0x8c, 0xb1, 0x5f, 0xca, 0xee, - 0xa0, 0x98, 0x9f, 0x25, 0xa0, 0xae, 0x23, 0x72, 0xf3, 0x15, 0xa3, 0x08, 0x9b, 0xa4, 0x66, 0xb7, - 0xa1, 0xac, 0x3e, 0xeb, 0x91, 0x7a, 0xe2, 0xfc, 0xbb, 0x22, 0x9c, 0xcb, 0x58, 0x73, 0x28, 0x32, - 0x66, 0xe2, 0x85, 0x3e, 0x97, 0xea, 0x07, 0x9c, 0x8b, 0x88, 0x49, 0x43, 0x4d, 0xb1, 0xb6, 0xfa, - 0x6e, 0xf4, 0x6e, 0x44, 0xd2, 0x8d, 0xd2, 0xa2, 0xde, 0x8d, 0xd2, 0xc6, 0xce, 0x6c, 0xa8, 0x69, - 0x43, 0xaa, 0xa7, 0x8f, 0x74, 0x4e, 0xff, 0xb8, 0x08, 0xe7, 0xb3, 0x42, 0xbb, 0xa0, 0xef, 0x4e, - 0x65, 0x83, 0x79, 0xa9, 0xdf, 0xa0, 0x30, 0x3c, 0x45, 0x8c, 0xc8, 0x6d, 0x3c, 0x67, 0xe6, 0x87, - 0xe9, 0x39, 0xcc, 0xa2, 0x4d, 0xe6, 0xbe, 0x19, 0xf2, 0x2c, 0x3e, 0xf2, 0xf8, 0xf8, 0x74, 0xdf, - 0x1d, 0x10, 0xe9, 0x7f, 0xa2, 0x94, 0xfb, 0xa6, 0x2c, 0xee, 0xed, 0xbe, 0x29, 0x5b, 0x9e, 0x75, - 0x61, 0x44, 0xfb, 0x9a, 0x47, 0x3a, 0xe3, 0xbb, 0xf4, 0xb6, 0xd2, 0xfa, 0xfd, 0x48, 0x67, 0xfd, - 0xc7, 0x2d, 0x48, 0x19, 0x37, 0x2a, 0x75, 0x97, 0x95, 0xab, 0xee, 0xba, 0x02, 0xa5, 0x30, 0xf0, - 0x48, 0x3a, 0x41, 0x0b, 0x0e, 0x3c, 0x82, 0x19, 0x84, 0x62, 0xc4, 0x89, 0xb2, 0x63, 0x54, 0x17, - 0xe4, 0x84, 0x88, 0xf6, 0x14, 0x0c, 0x78, 0x64, 0x9f, 0x78, 0xe9, 0xe8, 0xe7, 0xb7, 0x69, 0x21, - 0xe6, 0x30, 0xfb, 0x97, 0x4b, 0x70, 0xa9, 0xab, 0x03, 0x34, 0x15, 0x87, 0xb6, 0x9d, 0x98, 0xdc, - 0x77, 0x0e, 0xd2, 0x61, 0x8a, 0x6f, 0xf0, 0x62, 0x2c, 0xe1, 0xcc, 0xde, 0x9b, 0x87, 0x25, 0x4c, - 0x29, 0x07, 0x45, 0x34, 0x42, 0x01, 0x7d, 0x04, 0x79, 0xdd, 0xaf, 0x03, 0x44, 0x91, 0xb7, 0xec, - 0x53, 0xee, 0xae, 0x29, 0x0c, 0xc9, 0x93, 0xf0, 0x95, 0xf5, 0xdb, 0x02, 0x82, 0x35, 0x2c, 0x54, - 0x85, 0xc9, 0x56, 0x18, 0xc4, 0x5c, 0xd7, 0x5a, 0xe5, 0x66, 0x3e, 0x03, 0xa6, 0xef, 0x69, 0x2d, - 0x05, 0xc7, 0x1d, 0x35, 0xd0, 0xcb, 0x30, 0x22, 0xfc, 0x51, 0x6b, 0x41, 0xe0, 0x09, 0x35, 0x90, - 0x32, 0x1a, 0xa9, 0x27, 0x20, 0xac, 0xe3, 0x69, 0xd5, 0x98, 0x02, 0x77, 0x28, 0xb3, 0x1a, 0x57, - 0xe2, 0x6a, 0x78, 0xa9, 0x30, 0x4f, 0xc3, 0x7d, 0x85, 0x79, 0x4a, 0x14, 0x63, 0xe5, 0xbe, 0xdf, - 0xac, 0xa0, 0xa7, 0x2a, 0xe9, 0x17, 0x4a, 0x70, 0x4e, 0x2c, 0x9c, 0x47, 0xbd, 0x5c, 0x1e, 0x51, - 0xf6, 0xf9, 0x6f, 0xad, 0x99, 0xb3, 0x5e, 0x33, 0x3f, 0x6c, 0x81, 0xc9, 0x5e, 0xa1, 0xff, 0x2f, - 0x37, 0xce, 0xfb, 0xcb, 0xb9, 0xec, 0x5a, 0x53, 0x5e, 0x20, 0x1f, 0x30, 0xe2, 0xbb, 0xfd, 0x1f, - 0x2c, 0x78, 0xb2, 0x27, 0x45, 0xb4, 0x0c, 0x65, 0xc6, 0x03, 0x6a, 0xd2, 0xd9, 0xd3, 0xca, 0x0c, - 0x50, 0x02, 0x72, 0x58, 0xd2, 0xa4, 0x26, 0x5a, 0xee, 0x08, 0xa8, 0xff, 0x4c, 0x46, 0x40, 0xfd, - 0x69, 0x63, 0x78, 0x1e, 0x32, 0xa2, 0xfe, 0xd7, 0x8a, 0x30, 0xc8, 0x57, 0xfc, 0x19, 0x88, 0x61, - 0x2b, 0x42, 0x6f, 0xdb, 0x25, 0x8e, 0x14, 0xef, 0xcb, 0x5c, 0xd5, 0x89, 0x1d, 0xce, 0x26, 0xa8, - 0xdb, 0x2a, 0xd1, 0xf0, 0xa2, 0x39, 0xe3, 0x3e, 0x9b, 0x4d, 0x29, 0x26, 0x81, 0xd3, 0xd0, 0x6e, - 0xb7, 0x2f, 0x01, 0x44, 0x2c, 0xd1, 0x3c, 0xa5, 0x21, 0x22, 0x92, 0x7d, 0xb2, 0x4b, 0xeb, 0x75, - 0x85, 0xcc, 0xfb, 0x90, 0xec, 0x74, 0x05, 0xc0, 0x1a, 0xc5, 0xd9, 0x57, 0xa0, 0xac, 0x90, 0x7b, - 0x69, 0x71, 0x46, 0x75, 0xe6, 0xe2, 0x73, 0x30, 0x91, 0x6a, 0xeb, 0x44, 0x4a, 0xa0, 0x5f, 0xb1, - 0x60, 0x82, 0x77, 0x79, 0xd9, 0xdf, 0x17, 0x67, 0xea, 0xfb, 0x70, 0xde, 0xcb, 0x38, 0xdb, 0xc4, - 0x8c, 0xf6, 0x7f, 0x16, 0x2a, 0xa5, 0x4f, 0x16, 0x14, 0x67, 0xb6, 0x81, 0xae, 0xd1, 0x75, 0x4b, - 0xcf, 0x2e, 0xc7, 0x13, 0xbe, 0x43, 0xa3, 0x7c, 0xcd, 0xf2, 0x32, 0xac, 0xa0, 0xf6, 0xef, 0x58, - 0x30, 0xc5, 0x7b, 0x7e, 0x8b, 0x1c, 0xa8, 0x1d, 0xfe, 0x61, 0xf6, 0x5d, 0xe4, 0xb8, 0x28, 0xe4, - 0xe4, 0xb8, 0xd0, 0x3f, 0xad, 0xd8, 0xf5, 0xd3, 0x7e, 0xde, 0x02, 0xb1, 0x02, 0xcf, 0x40, 0x94, - 0xff, 0x76, 0x53, 0x94, 0x9f, 0xcd, 0x5f, 0xd4, 0x39, 0x32, 0xfc, 0x9f, 0x5a, 0x30, 0xc9, 0x11, - 0x92, 0xb7, 0xe4, 0x0f, 0x75, 0x1e, 0xfa, 0x49, 0x56, 0xa7, 0xb2, 0x53, 0x67, 0x7f, 0x94, 0x31, - 0x59, 0xa5, 0xae, 0x93, 0xd5, 0x94, 0x1b, 0xe8, 0x04, 0x49, 0x18, 0x4f, 0x1c, 0x2b, 0xda, 0xfe, - 0x23, 0x0b, 0x10, 0x6f, 0xc6, 0x60, 0x7f, 0x28, 0x53, 0xc1, 0x4a, 0xb5, 0xeb, 0x22, 0x39, 0x6a, - 0x14, 0x04, 0x6b, 0x58, 0xa7, 0x32, 0x3c, 0x29, 0x83, 0x80, 0x62, 0x6f, 0x83, 0x80, 0x13, 0x8c, - 0xe8, 0xd7, 0x4a, 0x90, 0x36, 0xe6, 0x47, 0xf7, 0x60, 0xb4, 0xe1, 0xb4, 0x9c, 0x4d, 0xd7, 0x73, - 0x63, 0x97, 0x44, 0xdd, 0x2c, 0x89, 0x96, 0x34, 0x3c, 0xf1, 0xd4, 0xab, 0x95, 0x60, 0x83, 0x0e, - 0x9a, 0x03, 0x68, 0x85, 0xee, 0xbe, 0xeb, 0x91, 0x6d, 0xa6, 0x71, 0x60, 0xde, 0x8a, 0xdc, 0x3c, - 0x46, 0x96, 0x62, 0x0d, 0x23, 0xc3, 0xf1, 0xac, 0xf8, 0xe8, 0x1c, 0xcf, 0x4a, 0x27, 0x74, 0x3c, - 0x1b, 0xe8, 0xcb, 0xf1, 0x0c, 0xc3, 0x05, 0xc9, 0x22, 0xd1, 0xff, 0x2b, 0xae, 0x47, 0x04, 0x5f, - 0xcc, 0x7d, 0x18, 0x67, 0x8f, 0x0e, 0x2b, 0x17, 0x70, 0x26, 0x06, 0xce, 0xa9, 0x89, 0x3e, 0x0f, - 0x33, 0x8e, 0xe7, 0x05, 0xf7, 0xd5, 0xa8, 0x2d, 0x47, 0x0d, 0xc7, 0xe3, 0x1a, 0xfb, 0x21, 0x46, - 0xf5, 0x89, 0xa3, 0xc3, 0xca, 0xcc, 0x42, 0x0e, 0x0e, 0xce, 0xad, 0x9d, 0xf2, 0x5b, 0x1b, 0xee, - 0xe5, 0xb7, 0x66, 0xef, 0xc2, 0xb9, 0x3a, 0x09, 0x5d, 0x96, 0x22, 0xb2, 0x99, 0x6c, 0xc9, 0x0d, - 0x28, 0x87, 0xa9, 0x43, 0xa8, 0xaf, 0xc0, 0x46, 0x5a, 0x18, 0x5c, 0x79, 0xe8, 0x24, 0x84, 0xec, - 0x3f, 0xb1, 0x60, 0x48, 0x38, 0x14, 0x9c, 0x01, 0xef, 0xb3, 0x60, 0xa8, 0xa0, 0x2b, 0xd9, 0x07, - 0x35, 0xeb, 0x4c, 0xae, 0xf2, 0x79, 0x35, 0xa5, 0x7c, 0x7e, 0xb2, 0x1b, 0x91, 0xee, 0x6a, 0xe7, - 0xbf, 0x55, 0x84, 0x71, 0xd3, 0x99, 0xe2, 0x0c, 0x86, 0x60, 0x1d, 0x86, 0x22, 0xe1, 0xb9, 0x53, - 0xc8, 0xb7, 0x7d, 0x4e, 0x4f, 0x62, 0x62, 0xd8, 0x24, 0x7c, 0x75, 0x24, 0x91, 0x4c, 0x97, 0xa0, - 0xe2, 0x23, 0x74, 0x09, 0xea, 0xe5, 0xcf, 0x52, 0x3a, 0x0d, 0x7f, 0x16, 0xfb, 0xeb, 0xec, 0xb2, - 0xd0, 0xcb, 0xcf, 0x80, 0x8f, 0xb8, 0x61, 0x5e, 0x2b, 0x76, 0x97, 0x95, 0x25, 0x3a, 0x95, 0xc3, - 0x4f, 0xfc, 0x92, 0x05, 0x97, 0x32, 0xbe, 0x4a, 0x63, 0x2e, 0x9e, 0x83, 0x61, 0xa7, 0xdd, 0x74, - 0xd5, 0x5e, 0xd6, 0x1e, 0xa2, 0x16, 0x44, 0x39, 0x56, 0x18, 0x68, 0x09, 0xa6, 0xc8, 0x83, 0x96, - 0xcb, 0x5f, 0x02, 0x75, 0xeb, 0xc3, 0x22, 0x0f, 0xf1, 0xba, 0x9c, 0x06, 0xe2, 0x4e, 0x7c, 0xe5, - 0x0e, 0x5d, 0xcc, 0x75, 0x87, 0xfe, 0x87, 0x16, 0x8c, 0x88, 0x6e, 0x9f, 0xc1, 0x68, 0x7f, 0x87, - 0x39, 0xda, 0x8f, 0x77, 0x19, 0xed, 0x9c, 0x61, 0xfe, 0x3b, 0x05, 0xd5, 0xdf, 0x5a, 0x10, 0xc6, - 0x7d, 0x30, 0x2d, 0xaf, 0xc2, 0x70, 0x2b, 0x0c, 0xe2, 0xa0, 0x11, 0x78, 0x82, 0x67, 0x79, 0x22, - 0xf1, 0xd6, 0xe7, 0xe5, 0xc7, 0xda, 0x6f, 0xac, 0xb0, 0xd9, 0xe8, 0x05, 0x61, 0x2c, 0xf8, 0x84, - 0x64, 0xf4, 0x82, 0x30, 0xc6, 0x0c, 0x82, 0x9a, 0x00, 0xb1, 0x13, 0x6e, 0x93, 0x98, 0x96, 0x89, - 0xc0, 0x1f, 0xf9, 0x87, 0x47, 0x3b, 0x76, 0xbd, 0x39, 0xd7, 0x8f, 0xa3, 0x38, 0x9c, 0x5b, 0xf5, - 0xe3, 0x3b, 0x21, 0x17, 0x81, 0x34, 0xf7, 0x7b, 0x45, 0x0b, 0x6b, 0x74, 0xa5, 0x8f, 0x24, 0x6b, - 0x63, 0xc0, 0x7c, 0xd2, 0x5e, 0x17, 0xe5, 0x58, 0x61, 0xd8, 0xaf, 0xb0, 0xab, 0x84, 0x0d, 0xd0, - 0xc9, 0x3c, 0xe3, 0xbf, 0x31, 0xac, 0x86, 0x96, 0xbd, 0x67, 0x55, 0x75, 0xff, 0xfb, 0xee, 0x27, - 0x37, 0x6d, 0x58, 0xf7, 0x84, 0x49, 0x9c, 0xf4, 0xd1, 0x77, 0x76, 0x58, 0x3a, 0x3c, 0xdf, 0xe3, - 0x0a, 0x38, 0x81, 0x6d, 0x03, 0x0b, 0x3b, 0xcd, 0xc2, 0xf3, 0xae, 0xd6, 0xc4, 0x22, 0xd7, 0xc2, - 0x4e, 0x0b, 0x00, 0x4e, 0x70, 0xd0, 0xbc, 0x10, 0xa0, 0x4b, 0x46, 0x76, 0x38, 0x29, 0x40, 0xcb, - 0xcf, 0xd7, 0x24, 0xe8, 0x17, 0x60, 0x44, 0x65, 0x89, 0xab, 0xf1, 0x64, 0x5b, 0x22, 0x0c, 0xca, - 0x72, 0x52, 0x8c, 0x75, 0x1c, 0xb4, 0x01, 0x13, 0x11, 0xd7, 0x9e, 0xa8, 0x68, 0x77, 0x5c, 0x0b, - 0xf5, 0x49, 0x69, 0x21, 0x51, 0x37, 0xc1, 0xc7, 0xac, 0x88, 0x1f, 0x1d, 0xd2, 0xd1, 0x31, 0x4d, - 0x02, 0xbd, 0x0e, 0xe3, 0x9e, 0x9e, 0x6b, 0xbd, 0x26, 0x94, 0x54, 0xca, 0x80, 0xd8, 0xc8, 0xc4, - 0x5e, 0xc3, 0x29, 0x6c, 0xca, 0xeb, 0xe8, 0x25, 0x22, 0x42, 0xa3, 0xe3, 0x6f, 0x93, 0x48, 0xe4, - 0xb8, 0x62, 0xbc, 0xce, 0xed, 0x1c, 0x1c, 0x9c, 0x5b, 0x1b, 0xbd, 0x0a, 0xa3, 0xf2, 0xf3, 0x35, - 0x37, 0xde, 0xc4, 0x4c, 0x5d, 0x83, 0x61, 0x03, 0x13, 0xdd, 0x87, 0x69, 0xf9, 0x7f, 0x23, 0x74, - 0xb6, 0xb6, 0xdc, 0x86, 0xf0, 0xa2, 0xe6, 0xbe, 0x3a, 0x0b, 0xd2, 0xf9, 0x67, 0x39, 0x0b, 0xe9, - 0xf8, 0xb0, 0x72, 0x45, 0x8c, 0x5a, 0x26, 0x9c, 0x4d, 0x62, 0x36, 0x7d, 0xb4, 0x06, 0xe7, 0x76, - 0x88, 0xe3, 0xc5, 0x3b, 0x4b, 0x3b, 0xa4, 0xb1, 0x2b, 0x37, 0x11, 0x73, 0x0e, 0xd6, 0x8c, 0xbb, - 0x6f, 0x76, 0xa2, 0xe0, 0xac, 0x7a, 0xe8, 0x1d, 0x98, 0x69, 0xb5, 0x37, 0x3d, 0x37, 0xda, 0x59, - 0x0f, 0x62, 0x66, 0x94, 0xa1, 0x92, 0xac, 0x09, 0x2f, 0x62, 0xe5, 0x18, 0x5d, 0xcb, 0xc1, 0xc3, - 0xb9, 0x14, 0xd0, 0xfb, 0x30, 0x9d, 0x5a, 0x0c, 0xc2, 0xa7, 0x71, 0x3c, 0x3f, 0xde, 0x6d, 0x3d, - 0xab, 0x82, 0xf0, 0x51, 0xcc, 0x02, 0xe1, 0xec, 0x26, 0x3e, 0x98, 0xa9, 0xce, 0x7b, 0xb4, 0xb2, - 0xc6, 0x94, 0xa1, 0x2f, 0xc3, 0xa8, 0xbe, 0x8a, 0xc4, 0x05, 0x73, 0x35, 0x9b, 0x67, 0xd1, 0x56, - 0x1b, 0x67, 0xe9, 0xd4, 0x8a, 0xd2, 0x61, 0xd8, 0xa0, 0x68, 0x13, 0xc8, 0xfe, 0x3e, 0x74, 0x1b, - 0x86, 0x1b, 0x9e, 0x4b, 0xfc, 0x78, 0xb5, 0xd6, 0x2d, 0xe8, 0xc6, 0x92, 0xc0, 0x11, 0x03, 0x26, - 0x02, 0x84, 0xf2, 0x32, 0xac, 0x28, 0xd8, 0xbf, 0x51, 0x80, 0x4a, 0x8f, 0x68, 0xb3, 0x29, 0x8d, - 0xb2, 0xd5, 0x97, 0x46, 0x79, 0x41, 0xa6, 0x8c, 0x5b, 0x4f, 0x89, 0xd9, 0xa9, 0x74, 0x70, 0x89, - 0xb0, 0x9d, 0xc6, 0xef, 0xdb, 0xc2, 0x57, 0x57, 0x4a, 0x97, 0x7a, 0xda, 0x9e, 0x1b, 0x8f, 0x51, - 0x03, 0xfd, 0x0b, 0x22, 0xb9, 0x0f, 0x0b, 0xf6, 0xd7, 0x0b, 0x30, 0xad, 0x86, 0xf0, 0x2f, 0xee, - 0xc0, 0xdd, 0xed, 0x1c, 0xb8, 0x53, 0x78, 0x96, 0xb1, 0xef, 0xc0, 0x20, 0x0f, 0x5a, 0xd2, 0x07, - 0x03, 0xf4, 0x94, 0x19, 0xe1, 0x4a, 0x5d, 0xd3, 0x46, 0x94, 0xab, 0xbf, 0x62, 0xc1, 0xc4, 0xc6, - 0x52, 0xad, 0x1e, 0x34, 0x76, 0x49, 0xbc, 0xc0, 0x19, 0x56, 0x2c, 0xf8, 0x1f, 0xeb, 0x21, 0xf9, - 0x9a, 0x2c, 0x8e, 0xe9, 0x0a, 0x94, 0x76, 0x82, 0x28, 0x4e, 0xbf, 0xd9, 0xde, 0x0c, 0xa2, 0x18, - 0x33, 0x88, 0xfd, 0xbb, 0x16, 0x0c, 0xb0, 0x44, 0xa7, 0xbd, 0xb2, 0xef, 0xf6, 0xf3, 0x5d, 0xe8, - 0x65, 0x18, 0x24, 0x5b, 0x5b, 0xa4, 0x11, 0x8b, 0x59, 0x95, 0x0e, 0xa5, 0x83, 0xcb, 0xac, 0x94, - 0x5e, 0xfa, 0xac, 0x31, 0xfe, 0x17, 0x0b, 0x64, 0xf4, 0x16, 0x94, 0x63, 0x77, 0x8f, 0x2c, 0x34, - 0x9b, 0xe2, 0xd5, 0xeb, 0x21, 0xfc, 0x77, 0x37, 0x24, 0x01, 0x9c, 0xd0, 0xb2, 0xbf, 0x5a, 0x00, - 0x48, 0x5c, 0xef, 0x7b, 0x7d, 0xe2, 0x62, 0xc7, 0x7b, 0xc8, 0xd5, 0x8c, 0xf7, 0x10, 0x94, 0x10, - 0xcc, 0x78, 0x0c, 0x51, 0xc3, 0x54, 0xec, 0x6b, 0x98, 0x4a, 0x27, 0x19, 0xa6, 0x25, 0x98, 0x4a, - 0x42, 0x07, 0x98, 0x71, 0x54, 0x98, 0x90, 0xb2, 0x91, 0x06, 0xe2, 0x4e, 0x7c, 0x9b, 0xc0, 0x15, - 0x19, 0xd1, 0x52, 0xde, 0x35, 0xcc, 0xa8, 0xf2, 0x04, 0x89, 0x98, 0x93, 0x07, 0x9f, 0x42, 0xee, - 0x83, 0xcf, 0x4f, 0x59, 0x70, 0x3e, 0xdd, 0x0e, 0xf3, 0x5e, 0xfb, 0x01, 0x0b, 0xa6, 0xd9, 0xb3, - 0x17, 0x6b, 0xb5, 0xf3, 0x91, 0xed, 0xa5, 0xec, 0x90, 0x0a, 0xdd, 0x7b, 0x9c, 0x78, 0x2e, 0xaf, - 0x65, 0x91, 0xc6, 0xd9, 0x2d, 0xda, 0xdf, 0x6f, 0x81, 0x70, 0x12, 0xea, 0x63, 0x63, 0xbf, 0x2d, - 0x53, 0x95, 0x1a, 0x01, 0xbc, 0xaf, 0xe4, 0x7b, 0x4d, 0x89, 0xb0, 0xdd, 0xea, 0x22, 0x35, 0x82, - 0x75, 0x1b, 0xb4, 0xec, 0x26, 0x08, 0x68, 0x95, 0x30, 0x3d, 0x51, 0xef, 0xde, 0x5c, 0x07, 0x68, - 0x32, 0x5c, 0x2d, 0x61, 0xa1, 0x3a, 0xb6, 0xab, 0x0a, 0x82, 0x35, 0x2c, 0xfb, 0x47, 0x0a, 0x30, - 0x22, 0x03, 0x46, 0xb7, 0xfd, 0x7e, 0xa4, 0xb9, 0x13, 0xe5, 0x8d, 0x61, 0x19, 0x3e, 0x29, 0xe1, - 0x5a, 0x22, 0x04, 0x27, 0x19, 0x3e, 0x25, 0x00, 0x27, 0x38, 0xe8, 0x19, 0x18, 0x8a, 0xda, 0x9b, - 0x0c, 0x3d, 0xe5, 0xfa, 0x52, 0xe7, 0xc5, 0x58, 0xc2, 0xd1, 0xe7, 0x61, 0x92, 0xd7, 0x0b, 0x83, - 0x96, 0xb3, 0xcd, 0x95, 0x86, 0x03, 0xca, 0x17, 0x75, 0x72, 0x2d, 0x05, 0x3b, 0x3e, 0xac, 0x9c, - 0x4f, 0x97, 0x31, 0x75, 0x73, 0x07, 0x15, 0xfb, 0xcb, 0x80, 0x3a, 0x63, 0x60, 0xa3, 0x37, 0xb8, - 0x01, 0x92, 0x1b, 0x92, 0x66, 0x37, 0x3d, 0xb2, 0xee, 0x3a, 0x29, 0xcd, 0xcf, 0x79, 0x2d, 0xac, - 0xea, 0xdb, 0x7f, 0xad, 0x08, 0x93, 0x69, 0x47, 0x3a, 0x74, 0x13, 0x06, 0xf9, 0x05, 0x23, 0xc8, - 0x77, 0x79, 0xa6, 0xd4, 0xdc, 0xef, 0xd8, 0x56, 0x13, 0x77, 0x94, 0xa8, 0x8f, 0xde, 0x81, 0x91, - 0x66, 0x70, 0xdf, 0xbf, 0xef, 0x84, 0xcd, 0x85, 0xda, 0xaa, 0x58, 0x97, 0x99, 0x7c, 0x6a, 0x35, - 0x41, 0xd3, 0x5d, 0xfa, 0x98, 0x4a, 0x3e, 0x01, 0x61, 0x9d, 0x1c, 0xda, 0x60, 0x71, 0xfd, 0xb6, - 0xdc, 0xed, 0x35, 0xa7, 0xd5, 0xcd, 0x1a, 0x75, 0x49, 0x22, 0x69, 0x94, 0xc7, 0x44, 0xf0, 0x3f, - 0x0e, 0xc0, 0x09, 0x21, 0xf4, 0xdd, 0x70, 0x2e, 0xca, 0x51, 0x6d, 0xe5, 0xa5, 0x44, 0xe8, 0xa6, - 0xed, 0x59, 0x7c, 0x8c, 0x4a, 0x10, 0x59, 0x4a, 0xb0, 0xac, 0x66, 0xec, 0xaf, 0x9c, 0x03, 0x63, - 0x37, 0x1a, 0x79, 0x71, 0xac, 0x53, 0xca, 0x8b, 0x83, 0x61, 0x98, 0xec, 0xb5, 0xe2, 0x83, 0xaa, - 0x1b, 0x76, 0x4b, 0xac, 0xb6, 0x2c, 0x70, 0x3a, 0x69, 0x4a, 0x08, 0x56, 0x74, 0xb2, 0x93, 0x17, - 0x15, 0x3f, 0xc4, 0xe4, 0x45, 0xa5, 0x33, 0x4c, 0x5e, 0xb4, 0x0e, 0x43, 0xdb, 0x6e, 0x8c, 0x49, - 0x2b, 0x10, 0xac, 0x5d, 0xe6, 0x3a, 0xbc, 0xc1, 0x51, 0x3a, 0x13, 0x66, 0x08, 0x00, 0x96, 0x44, - 0xd0, 0x1b, 0x6a, 0x07, 0x0e, 0xe6, 0x4b, 0x46, 0x9d, 0xef, 0x69, 0x99, 0x7b, 0x50, 0x24, 0x2b, - 0x1a, 0x7a, 0xd8, 0x64, 0x45, 0x2b, 0x32, 0xc5, 0xd0, 0x70, 0xbe, 0xe9, 0x38, 0xcb, 0x20, 0xd4, - 0x23, 0xb1, 0x90, 0x91, 0x8c, 0xa9, 0x7c, 0x7a, 0xc9, 0x98, 0xbe, 0xdf, 0x82, 0xe9, 0x56, 0x56, - 0x5e, 0x32, 0x91, 0x18, 0xe8, 0xe5, 0xbe, 0x13, 0xaf, 0x19, 0x0d, 0x32, 0x11, 0x39, 0x13, 0x0d, - 0x67, 0x37, 0x47, 0x07, 0x3a, 0xdc, 0x6c, 0x8a, 0x6c, 0x42, 0x4f, 0xe5, 0x64, 0x75, 0xea, 0x92, - 0xcb, 0x69, 0x23, 0x23, 0x83, 0xd0, 0xc7, 0xf3, 0x32, 0x08, 0xf5, 0x9d, 0x37, 0xe8, 0x0d, 0x95, - 0xcf, 0x69, 0x2c, 0x7f, 0x29, 0xf1, 0x6c, 0x4d, 0x3d, 0xb3, 0x38, 0xbd, 0xa1, 0xb2, 0x38, 0x75, - 0x89, 0x6f, 0xc6, 0x73, 0x34, 0xf5, 0xcc, 0xdd, 0xa4, 0xe5, 0x5f, 0x9a, 0x38, 0x9d, 0xfc, 0x4b, - 0xc6, 0x55, 0xc3, 0x53, 0x00, 0x3d, 0xdb, 0xe3, 0xaa, 0x31, 0xe8, 0x76, 0xbf, 0x6c, 0x78, 0xae, - 0xa9, 0xa9, 0x87, 0xca, 0x35, 0x75, 0x4f, 0xcf, 0xdd, 0x84, 0x7a, 0x24, 0x27, 0xa2, 0x48, 0x7d, - 0x66, 0x6c, 0xba, 0xa7, 0x5f, 0x80, 0xe7, 0xf2, 0xe9, 0xaa, 0x7b, 0xae, 0x93, 0x6e, 0xe6, 0x15, - 0xd8, 0x91, 0x09, 0xea, 0xfc, 0xd9, 0x64, 0x82, 0x9a, 0x3e, 0xf5, 0x4c, 0x50, 0x17, 0xce, 0x20, - 0x13, 0xd4, 0x63, 0x1f, 0x6a, 0x26, 0xa8, 0x99, 0x47, 0x90, 0x09, 0x6a, 0x3d, 0xc9, 0x04, 0x75, - 0x31, 0x7f, 0x4a, 0x32, 0xec, 0x59, 0x73, 0xf2, 0x3f, 0xdd, 0x83, 0x72, 0x4b, 0x46, 0x7a, 0x10, - 0x01, 0xd8, 0xb2, 0x93, 0xd1, 0x66, 0x85, 0x83, 0xe0, 0x53, 0xa2, 0x40, 0x38, 0x21, 0x45, 0xe9, - 0x26, 0xf9, 0xa0, 0x1e, 0xef, 0xa2, 0x04, 0xcd, 0x52, 0x2f, 0xe5, 0x67, 0x81, 0xb2, 0xff, 0x6a, - 0x01, 0x2e, 0x77, 0x5f, 0xd7, 0x89, 0x6e, 0xaa, 0x96, 0xbc, 0xa5, 0xa4, 0x74, 0x53, 0x5c, 0xc8, - 0x49, 0xb0, 0xfa, 0x0e, 0x87, 0x73, 0x03, 0xa6, 0x94, 0x21, 0xab, 0xe7, 0x36, 0x0e, 0xb4, 0x24, - 0xb5, 0xca, 0x61, 0xaf, 0x9e, 0x46, 0xc0, 0x9d, 0x75, 0xd0, 0x02, 0x4c, 0x18, 0x85, 0xab, 0x55, - 0x21, 0xcc, 0x28, 0x65, 0x58, 0xdd, 0x04, 0xe3, 0x34, 0xbe, 0xfd, 0x73, 0x16, 0x3c, 0x96, 0x93, - 0x24, 0xa1, 0xef, 0x68, 0x2f, 0x5b, 0x30, 0xd1, 0x32, 0xab, 0xf6, 0x08, 0x0a, 0x65, 0xa4, 0x62, - 0x50, 0x7d, 0x4d, 0x01, 0x70, 0x9a, 0xe8, 0xe2, 0xb5, 0xdf, 0xfa, 0xfd, 0xcb, 0x1f, 0xfb, 0xed, - 0xdf, 0xbf, 0xfc, 0xb1, 0xdf, 0xf9, 0xfd, 0xcb, 0x1f, 0xfb, 0xff, 0x8f, 0x2e, 0x5b, 0xbf, 0x75, - 0x74, 0xd9, 0xfa, 0xed, 0xa3, 0xcb, 0xd6, 0xef, 0x1c, 0x5d, 0xb6, 0x7e, 0xef, 0xe8, 0xb2, 0xf5, - 0xd5, 0x3f, 0xb8, 0xfc, 0xb1, 0xb7, 0x0b, 0xfb, 0x2f, 0xfc, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x67, 0xe8, 0x47, 0xf4, 0xcd, 0xe5, 0x00, 0x00, + 0x76, 0x18, 0xbc, 0xd5, 0xdd, 0x7c, 0xf4, 0xe1, 0xfb, 0xce, 0x43, 0x1c, 0x4a, 0x33, 0x3d, 0x2a, + 0xed, 0x8e, 0x46, 0x2b, 0x89, 0xb3, 0x1a, 0x49, 0x2b, 0x79, 0xb5, 0x2b, 0x9b, 0x64, 0x93, 0x33, + 0xd4, 0x0c, 0x39, 0xad, 0xdb, 0x9c, 0xd1, 0xae, 0xac, 0x5d, 0x6f, 0xb1, 0xfb, 0xb2, 0x59, 0x62, + 0xb1, 0xaa, 0x55, 0x55, 0xcd, 0x19, 0xea, 0xb3, 0x81, 0x2f, 0xeb, 0xd8, 0x89, 0x1f, 0x08, 0x16, + 0xb1, 0x91, 0x87, 0x6d, 0x38, 0x80, 0xe3, 0xc0, 0x76, 0x9c, 0x04, 0x71, 0xec, 0xd8, 0xce, 0xae, + 0x9d, 0x38, 0x4e, 0x7e, 0x38, 0x7f, 0x36, 0x4e, 0x80, 0x60, 0x0d, 0x18, 0x61, 0x6c, 0xda, 0x49, + 0xe0, 0x1f, 0x79, 0x20, 0xce, 0x1f, 0x33, 0x46, 0x1c, 0xdc, 0x67, 0xdd, 0x5b, 0x5d, 0xd5, 0xdd, + 0x1c, 0x71, 0x28, 0xd9, 0xd8, 0x7f, 0xdd, 0xf7, 0x9c, 0x7b, 0xee, 0xad, 0xfb, 0x3c, 0xe7, 0xdc, + 0xf3, 0x80, 0xd7, 0x76, 0x5e, 0x8d, 0xe6, 0xdd, 0xe0, 0xda, 0x4e, 0x67, 0x93, 0x84, 0x3e, 0x89, + 0x49, 0x74, 0x6d, 0x8f, 0xf8, 0xcd, 0x20, 0xbc, 0x26, 0x00, 0x4e, 0xdb, 0xbd, 0xd6, 0x08, 0x42, + 0x72, 0x6d, 0xef, 0x85, 0x6b, 0x2d, 0xe2, 0x93, 0xd0, 0x89, 0x49, 0x73, 0xbe, 0x1d, 0x06, 0x71, + 0x80, 0x10, 0xc7, 0x99, 0x77, 0xda, 0xee, 0x3c, 0xc5, 0x99, 0xdf, 0x7b, 0x61, 0xee, 0xf9, 0x96, + 0x1b, 0x6f, 0x77, 0x36, 0xe7, 0x1b, 0xc1, 0xee, 0xb5, 0x56, 0xd0, 0x0a, 0xae, 0x31, 0xd4, 0xcd, + 0xce, 0x16, 0xfb, 0xc7, 0xfe, 0xb0, 0x5f, 0x9c, 0xc4, 0xdc, 0x4b, 0x49, 0x33, 0xbb, 0x4e, 0x63, + 0xdb, 0xf5, 0x49, 0xb8, 0x7f, 0xad, 0xbd, 0xd3, 0x62, 0xed, 0x86, 0x24, 0x0a, 0x3a, 0x61, 0x83, + 0xa4, 0x1b, 0xee, 0x59, 0x2b, 0xba, 0xb6, 0x4b, 0x62, 0x27, 0xa3, 0xbb, 0x73, 0xd7, 0xf2, 0x6a, + 0x85, 0x1d, 0x3f, 0x76, 0x77, 0xbb, 0x9b, 0xf9, 0x74, 0xbf, 0x0a, 0x51, 0x63, 0x9b, 0xec, 0x3a, + 0x5d, 0xf5, 0x5e, 0xcc, 0xab, 0xd7, 0x89, 0x5d, 0xef, 0x9a, 0xeb, 0xc7, 0x51, 0x1c, 0xa6, 0x2b, + 0xd9, 0xdf, 0xb4, 0xe0, 0xf2, 0xc2, 0x5b, 0xf5, 0x65, 0xcf, 0x89, 0x62, 0xb7, 0xb1, 0xe8, 0x05, + 0x8d, 0x9d, 0x7a, 0x1c, 0x84, 0xe4, 0x5e, 0xe0, 0x75, 0x76, 0x49, 0x9d, 0x0d, 0x04, 0x7a, 0x0e, + 0x46, 0xf7, 0xd8, 0xff, 0xd5, 0xea, 0xac, 0x75, 0xd9, 0xba, 0x5a, 0x5e, 0x9c, 0xfe, 0xad, 0x83, + 0xca, 0xc7, 0x0e, 0x0f, 0x2a, 0xa3, 0xf7, 0x44, 0x39, 0x56, 0x18, 0xe8, 0x0a, 0x0c, 0x6f, 0x45, + 0x1b, 0xfb, 0x6d, 0x32, 0x5b, 0x60, 0xb8, 0x93, 0x02, 0x77, 0x78, 0xa5, 0x4e, 0x4b, 0xb1, 0x80, + 0xa2, 0x6b, 0x50, 0x6e, 0x3b, 0x61, 0xec, 0xc6, 0x6e, 0xe0, 0xcf, 0x16, 0x2f, 0x5b, 0x57, 0x87, + 0x16, 0x67, 0x04, 0x6a, 0xb9, 0x26, 0x01, 0x38, 0xc1, 0xa1, 0xdd, 0x08, 0x89, 0xd3, 0xbc, 0xe3, + 0x7b, 0xfb, 0xb3, 0xa5, 0xcb, 0xd6, 0xd5, 0xd1, 0xa4, 0x1b, 0x58, 0x94, 0x63, 0x85, 0x61, 0xff, + 0x58, 0x01, 0x46, 0x17, 0xb6, 0xb6, 0x5c, 0xdf, 0x8d, 0xf7, 0xd1, 0x3d, 0x18, 0xf7, 0x83, 0x26, + 0x91, 0xff, 0xd9, 0x57, 0x8c, 0x5d, 0xbf, 0x3c, 0xdf, 0xbd, 0x94, 0xe6, 0xd7, 0x35, 0xbc, 0xc5, + 0xe9, 0xc3, 0x83, 0xca, 0xb8, 0x5e, 0x82, 0x0d, 0x3a, 0x08, 0xc3, 0x58, 0x3b, 0x68, 0x2a, 0xb2, + 0x05, 0x46, 0xb6, 0x92, 0x45, 0xb6, 0x96, 0xa0, 0x2d, 0x4e, 0x1d, 0x1e, 0x54, 0xc6, 0xb4, 0x02, + 0xac, 0x13, 0x41, 0x9b, 0x30, 0x45, 0xff, 0xfa, 0xb1, 0xab, 0xe8, 0x16, 0x19, 0xdd, 0xa7, 0xf2, + 0xe8, 0x6a, 0xa8, 0x8b, 0x67, 0x0e, 0x0f, 0x2a, 0x53, 0xa9, 0x42, 0x9c, 0x26, 0x68, 0xbf, 0x0f, + 0x93, 0x0b, 0x71, 0xec, 0x34, 0xb6, 0x49, 0x93, 0xcf, 0x20, 0x7a, 0x09, 0x4a, 0xbe, 0xb3, 0x4b, + 0xc4, 0xfc, 0x5e, 0x16, 0x03, 0x5b, 0x5a, 0x77, 0x76, 0xc9, 0xd1, 0x41, 0x65, 0xfa, 0xae, 0xef, + 0xbe, 0xd7, 0x11, 0xab, 0x82, 0x96, 0x61, 0x86, 0x8d, 0xae, 0x03, 0x34, 0xc9, 0x9e, 0xdb, 0x20, + 0x35, 0x27, 0xde, 0x16, 0xf3, 0x8d, 0x44, 0x5d, 0xa8, 0x2a, 0x08, 0xd6, 0xb0, 0xec, 0x07, 0x50, + 0x5e, 0xd8, 0x0b, 0xdc, 0x66, 0x2d, 0x68, 0x46, 0x68, 0x07, 0xa6, 0xda, 0x21, 0xd9, 0x22, 0xa1, + 0x2a, 0x9a, 0xb5, 0x2e, 0x17, 0xaf, 0x8e, 0x5d, 0xbf, 0x9a, 0xf9, 0xb1, 0x26, 0xea, 0xb2, 0x1f, + 0x87, 0xfb, 0x8b, 0x8f, 0x89, 0xf6, 0xa6, 0x52, 0x50, 0x9c, 0xa6, 0x6c, 0xff, 0xeb, 0x02, 0x9c, + 0x5b, 0x78, 0xbf, 0x13, 0x92, 0xaa, 0x1b, 0xed, 0xa4, 0x57, 0x78, 0xd3, 0x8d, 0x76, 0xd6, 0x93, + 0x11, 0x50, 0x4b, 0xab, 0x2a, 0xca, 0xb1, 0xc2, 0x40, 0xcf, 0xc3, 0x08, 0xfd, 0x7d, 0x17, 0xaf, + 0x8a, 0x4f, 0x3e, 0x23, 0x90, 0xc7, 0xaa, 0x4e, 0xec, 0x54, 0x39, 0x08, 0x4b, 0x1c, 0xb4, 0x06, + 0x63, 0x0d, 0xb6, 0x21, 0x5b, 0x6b, 0x41, 0x93, 0xb0, 0xc9, 0x2c, 0x2f, 0x3e, 0x4b, 0xd1, 0x97, + 0x92, 0xe2, 0xa3, 0x83, 0xca, 0x2c, 0xef, 0x9b, 0x20, 0xa1, 0xc1, 0xb0, 0x5e, 0x1f, 0xd9, 0x6a, + 0x7f, 0x95, 0x18, 0x25, 0xc8, 0xd8, 0x5b, 0x57, 0xb5, 0xad, 0x32, 0xc4, 0xb6, 0xca, 0x78, 0xf6, + 0x36, 0x41, 0x2f, 0x40, 0x69, 0xc7, 0xf5, 0x9b, 0xb3, 0xc3, 0x8c, 0xd6, 0x45, 0x3a, 0xe7, 0xb7, + 0x5c, 0xbf, 0x79, 0x74, 0x50, 0x99, 0x31, 0xba, 0x43, 0x0b, 0x31, 0x43, 0xb5, 0xff, 0xd8, 0x82, + 0x0a, 0x83, 0xad, 0xb8, 0x1e, 0xa9, 0x91, 0x30, 0x72, 0xa3, 0x98, 0xf8, 0xb1, 0x31, 0xa0, 0xd7, + 0x01, 0x22, 0xd2, 0x08, 0x49, 0xac, 0x0d, 0xa9, 0x5a, 0x18, 0x75, 0x05, 0xc1, 0x1a, 0x16, 0x3d, + 0x10, 0xa2, 0x6d, 0x27, 0x64, 0xeb, 0x4b, 0x0c, 0xac, 0x3a, 0x10, 0xea, 0x12, 0x80, 0x13, 0x1c, + 0xe3, 0x40, 0x28, 0xf6, 0x3b, 0x10, 0xd0, 0xe7, 0x60, 0x2a, 0x69, 0x2c, 0x6a, 0x3b, 0x0d, 0x39, + 0x80, 0x6c, 0xcb, 0xd4, 0x4d, 0x10, 0x4e, 0xe3, 0xda, 0x7f, 0xdf, 0x12, 0x8b, 0x87, 0x7e, 0xf5, + 0x47, 0xfc, 0x5b, 0xed, 0x5f, 0xb5, 0x60, 0x64, 0xd1, 0xf5, 0x9b, 0xae, 0xdf, 0x42, 0x5f, 0x86, + 0x51, 0x7a, 0x37, 0x35, 0x9d, 0xd8, 0x11, 0xe7, 0xde, 0xa7, 0xb4, 0xbd, 0xa5, 0xae, 0x8a, 0xf9, + 0xf6, 0x4e, 0x8b, 0x16, 0x44, 0xf3, 0x14, 0x9b, 0xee, 0xb6, 0x3b, 0x9b, 0xef, 0x92, 0x46, 0xbc, + 0x46, 0x62, 0x27, 0xf9, 0x9c, 0xa4, 0x0c, 0x2b, 0xaa, 0xe8, 0x16, 0x0c, 0xc7, 0x4e, 0xd8, 0x22, + 0xb1, 0x38, 0x00, 0x33, 0x0f, 0x2a, 0x5e, 0x13, 0xd3, 0x1d, 0x49, 0xfc, 0x06, 0x49, 0xae, 0x85, + 0x0d, 0x56, 0x15, 0x0b, 0x12, 0xf6, 0x0f, 0x0e, 0xc3, 0x85, 0xa5, 0xfa, 0x6a, 0xce, 0xba, 0xba, + 0x02, 0xc3, 0xcd, 0xd0, 0xdd, 0x23, 0xa1, 0x18, 0x67, 0x45, 0xa5, 0xca, 0x4a, 0xb1, 0x80, 0xa2, + 0x57, 0x61, 0x9c, 0x5f, 0x48, 0x37, 0x1d, 0xbf, 0xe9, 0xc9, 0x21, 0x3e, 0x2b, 0xb0, 0xc7, 0xef, + 0x69, 0x30, 0x6c, 0x60, 0x1e, 0x73, 0x51, 0x5d, 0x49, 0x6d, 0xc6, 0xbc, 0xcb, 0xee, 0x07, 0x2c, + 0x98, 0xe6, 0xcd, 0x2c, 0xc4, 0x71, 0xe8, 0x6e, 0x76, 0x62, 0x12, 0xcd, 0x0e, 0xb1, 0x93, 0x6e, + 0x29, 0x6b, 0xb4, 0x72, 0x47, 0x60, 0xfe, 0x5e, 0x8a, 0x0a, 0x3f, 0x04, 0x67, 0x45, 0xbb, 0xd3, + 0x69, 0x30, 0xee, 0x6a, 0x16, 0x7d, 0xaf, 0x05, 0x73, 0x8d, 0xc0, 0x8f, 0xc3, 0xc0, 0xf3, 0x48, + 0x58, 0xeb, 0x6c, 0x7a, 0x6e, 0xb4, 0xcd, 0xd7, 0x29, 0x26, 0x5b, 0xec, 0x24, 0xc8, 0x99, 0x43, + 0x85, 0x24, 0xe6, 0xf0, 0xd2, 0xe1, 0x41, 0x65, 0x6e, 0x29, 0x97, 0x14, 0xee, 0xd1, 0x0c, 0xda, + 0x01, 0x44, 0xaf, 0xd2, 0x7a, 0xec, 0xb4, 0x48, 0xd2, 0xf8, 0xc8, 0xe0, 0x8d, 0x9f, 0x3f, 0x3c, + 0xa8, 0xa0, 0xf5, 0x2e, 0x12, 0x38, 0x83, 0x2c, 0x7a, 0x0f, 0xce, 0xd2, 0xd2, 0xae, 0x6f, 0x1d, + 0x1d, 0xbc, 0xb9, 0xd9, 0xc3, 0x83, 0xca, 0xd9, 0xf5, 0x0c, 0x22, 0x38, 0x93, 0xf4, 0xdc, 0x12, + 0x9c, 0xcb, 0x9c, 0x2a, 0x34, 0x0d, 0xc5, 0x1d, 0xc2, 0x59, 0x90, 0x32, 0xa6, 0x3f, 0xd1, 0x59, + 0x18, 0xda, 0x73, 0xbc, 0x8e, 0x58, 0xa5, 0x98, 0xff, 0xf9, 0x4c, 0xe1, 0x55, 0xcb, 0x6e, 0xc0, + 0xf8, 0x92, 0xd3, 0x76, 0x36, 0x5d, 0xcf, 0x8d, 0x5d, 0x12, 0xa1, 0xa7, 0xa1, 0xe8, 0x34, 0x9b, + 0xec, 0x8a, 0x2c, 0x2f, 0x9e, 0x3b, 0x3c, 0xa8, 0x14, 0x17, 0x9a, 0xf4, 0xac, 0x06, 0x85, 0xb5, + 0x8f, 0x29, 0x06, 0xfa, 0x24, 0x94, 0x9a, 0x61, 0xd0, 0x9e, 0x2d, 0x30, 0x4c, 0x3a, 0x54, 0xa5, + 0x6a, 0x18, 0xb4, 0x53, 0xa8, 0x0c, 0xc7, 0xfe, 0x8d, 0x02, 0x3c, 0xb1, 0x44, 0xda, 0xdb, 0x2b, + 0xf5, 0x9c, 0x4d, 0x77, 0x15, 0x46, 0x77, 0x03, 0xdf, 0x8d, 0x83, 0x30, 0x12, 0x4d, 0xb3, 0xdb, + 0x64, 0x4d, 0x94, 0x61, 0x05, 0x45, 0x97, 0xa1, 0xd4, 0x4e, 0x38, 0x81, 0x71, 0xc9, 0x45, 0x30, + 0x1e, 0x80, 0x41, 0x28, 0x46, 0x27, 0x22, 0xa1, 0xb8, 0x05, 0x15, 0xc6, 0xdd, 0x88, 0x84, 0x98, + 0x41, 0x92, 0xe3, 0x94, 0x1e, 0xb4, 0x62, 0x5b, 0xa5, 0x8e, 0x53, 0x0a, 0xc1, 0x1a, 0x16, 0xaa, + 0x41, 0x39, 0x52, 0x93, 0x3a, 0x34, 0xf8, 0xa4, 0x4e, 0xb0, 0xf3, 0x56, 0xcd, 0x64, 0x42, 0xc4, + 0x38, 0x06, 0x86, 0xfb, 0x9e, 0xb7, 0x5f, 0x2f, 0x00, 0xe2, 0x43, 0xf8, 0xe7, 0x6c, 0xe0, 0xee, + 0x76, 0x0f, 0x5c, 0x26, 0xe7, 0x75, 0x3b, 0x68, 0x38, 0x5e, 0xfa, 0x08, 0x3f, 0xa9, 0xd1, 0xfb, + 0xdf, 0x16, 0x3c, 0xb1, 0xe4, 0xfa, 0x4d, 0x12, 0xe6, 0x2c, 0xc0, 0x47, 0x23, 0x80, 0x1c, 0xef, + 0xa4, 0x37, 0x96, 0x58, 0xe9, 0x04, 0x96, 0x98, 0xfd, 0x3f, 0x2c, 0x40, 0xfc, 0xb3, 0x3f, 0x72, + 0x1f, 0x7b, 0xb7, 0xfb, 0x63, 0x4f, 0x60, 0x59, 0xd8, 0xb7, 0x61, 0x72, 0xc9, 0x73, 0x89, 0x1f, + 0xaf, 0xd6, 0x96, 0x02, 0x7f, 0xcb, 0x6d, 0xa1, 0xcf, 0xc0, 0x24, 0x95, 0x69, 0x83, 0x4e, 0x5c, + 0x27, 0x8d, 0xc0, 0x67, 0xec, 0x3f, 0x95, 0x04, 0xd1, 0xe1, 0x41, 0x65, 0x72, 0xc3, 0x80, 0xe0, + 0x14, 0xa6, 0xfd, 0xbb, 0x74, 0xfc, 0x82, 0xdd, 0x76, 0xe0, 0x13, 0x3f, 0x5e, 0x0a, 0xfc, 0x26, + 0x17, 0x13, 0x3f, 0x03, 0xa5, 0x98, 0x8e, 0x07, 0x1f, 0xbb, 0x2b, 0x72, 0xa3, 0xd0, 0x51, 0x38, + 0x3a, 0xa8, 0x9c, 0xef, 0xae, 0xc1, 0xc6, 0x89, 0xd5, 0x41, 0xdf, 0x06, 0xc3, 0x51, 0xec, 0xc4, + 0x9d, 0x48, 0x8c, 0xe6, 0x93, 0x72, 0x34, 0xeb, 0xac, 0xf4, 0xe8, 0xa0, 0x32, 0xa5, 0xaa, 0xf1, + 0x22, 0x2c, 0x2a, 0xa0, 0x67, 0x60, 0x64, 0x97, 0x44, 0x91, 0xd3, 0x92, 0x1c, 0xfe, 0x94, 0xa8, + 0x3b, 0xb2, 0xc6, 0x8b, 0xb1, 0x84, 0xa3, 0xa7, 0x60, 0x88, 0x84, 0x61, 0x10, 0x8a, 0x3d, 0x3a, + 0x21, 0x10, 0x87, 0x96, 0x69, 0x21, 0xe6, 0x30, 0xfb, 0xdf, 0x5a, 0x30, 0xa5, 0xfa, 0xca, 0xdb, + 0x3a, 0x05, 0x56, 0xee, 0x6d, 0x80, 0x86, 0xfc, 0xc0, 0x88, 0xdd, 0x1e, 0x63, 0xd7, 0xaf, 0x64, + 0x32, 0x28, 0x5d, 0xc3, 0x98, 0x50, 0x56, 0x45, 0x11, 0xd6, 0xa8, 0xd9, 0xbf, 0x6e, 0xc1, 0x99, + 0xd4, 0x17, 0xdd, 0x76, 0xa3, 0x18, 0xbd, 0xd3, 0xf5, 0x55, 0xf3, 0x83, 0x7d, 0x15, 0xad, 0xcd, + 0xbe, 0x49, 0x2d, 0x65, 0x59, 0xa2, 0x7d, 0xd1, 0x4d, 0x18, 0x72, 0x63, 0xb2, 0x2b, 0x3f, 0xe6, + 0xa9, 0x9e, 0x1f, 0xc3, 0x7b, 0x95, 0xcc, 0xc8, 0x2a, 0xad, 0x89, 0x39, 0x01, 0xfb, 0x47, 0x8a, + 0x50, 0xe6, 0xcb, 0x76, 0xcd, 0x69, 0x9f, 0xc2, 0x5c, 0xac, 0x42, 0x89, 0x51, 0xe7, 0x1d, 0x7f, + 0x3a, 0xbb, 0xe3, 0xa2, 0x3b, 0xf3, 0x54, 0x4e, 0xe3, 0xac, 0xa0, 0xba, 0x1a, 0x68, 0x11, 0x66, + 0x24, 0x90, 0x03, 0xb0, 0xe9, 0xfa, 0x4e, 0xb8, 0x4f, 0xcb, 0x66, 0x8b, 0x8c, 0xe0, 0xf3, 0xbd, + 0x09, 0x2e, 0x2a, 0x7c, 0x4e, 0x56, 0xf5, 0x35, 0x01, 0x60, 0x8d, 0xe8, 0xdc, 0x2b, 0x50, 0x56, + 0xc8, 0xc7, 0xe1, 0x71, 0xe6, 0x3e, 0x07, 0x53, 0xa9, 0xb6, 0xfa, 0x55, 0x1f, 0xd7, 0x59, 0xa4, + 0xaf, 0xb1, 0x53, 0x40, 0xf4, 0x7a, 0xd9, 0xdf, 0x13, 0xa7, 0xe8, 0xfb, 0x70, 0xd6, 0xcb, 0x38, + 0x9c, 0xc4, 0x54, 0x0d, 0x7e, 0x98, 0x3d, 0x21, 0x3e, 0xfb, 0x6c, 0x16, 0x14, 0x67, 0xb6, 0x41, + 0xaf, 0xfd, 0xa0, 0x4d, 0xd7, 0xbc, 0xe3, 0xb1, 0xfe, 0x0a, 0xe9, 0xfb, 0x8e, 0x28, 0xc3, 0x0a, + 0x4a, 0x8f, 0xb0, 0xb3, 0xaa, 0xf3, 0xb7, 0xc8, 0x7e, 0x9d, 0x78, 0xa4, 0x11, 0x07, 0xe1, 0x87, + 0xda, 0xfd, 0x8b, 0x7c, 0xf4, 0xf9, 0x09, 0x38, 0x26, 0x08, 0x14, 0x6f, 0x91, 0x7d, 0x3e, 0x15, + 0xfa, 0xd7, 0x15, 0x7b, 0x7e, 0xdd, 0x2f, 0x58, 0x30, 0xa1, 0xbe, 0xee, 0x14, 0xb6, 0xfa, 0xa2, + 0xb9, 0xd5, 0x2f, 0xf6, 0x5c, 0xe0, 0x39, 0x9b, 0xfc, 0xeb, 0x05, 0xb8, 0xa0, 0x70, 0x28, 0xbb, + 0xcf, 0xff, 0x88, 0x55, 0x75, 0x0d, 0xca, 0xbe, 0xd2, 0x1e, 0x58, 0xa6, 0xd8, 0x9e, 0xe8, 0x0e, + 0x12, 0x1c, 0xca, 0xb5, 0xf9, 0x89, 0x88, 0x3f, 0xae, 0xab, 0xd5, 0x84, 0x0a, 0x6d, 0x11, 0x8a, + 0x1d, 0xb7, 0x29, 0xee, 0x8c, 0x4f, 0xc9, 0xd1, 0xbe, 0xbb, 0x5a, 0x3d, 0x3a, 0xa8, 0x3c, 0x99, + 0xa7, 0xd2, 0xa5, 0x97, 0x55, 0x34, 0x7f, 0x77, 0xb5, 0x8a, 0x69, 0x65, 0xb4, 0x00, 0x53, 0x52, + 0x6b, 0x7d, 0x8f, 0x72, 0x50, 0x81, 0x2f, 0xae, 0x16, 0xa5, 0x1b, 0xc3, 0x26, 0x18, 0xa7, 0xf1, + 0x51, 0x15, 0xa6, 0x77, 0x3a, 0x9b, 0xc4, 0x23, 0x31, 0xff, 0xe0, 0x5b, 0x84, 0x6b, 0x8e, 0xca, + 0x89, 0x68, 0x79, 0x2b, 0x05, 0xc7, 0x5d, 0x35, 0xec, 0x3f, 0x63, 0x47, 0xbc, 0x18, 0xbd, 0x5a, + 0x18, 0xd0, 0x85, 0x45, 0xa9, 0x7f, 0x98, 0xcb, 0x79, 0x90, 0x55, 0x71, 0x8b, 0xec, 0x6f, 0x04, + 0x94, 0xd9, 0xce, 0x5e, 0x15, 0xc6, 0x9a, 0x2f, 0xf5, 0x5c, 0xf3, 0xbf, 0x54, 0x80, 0x73, 0x6a, + 0x04, 0x0c, 0xbe, 0xee, 0xcf, 0xfb, 0x18, 0xbc, 0x00, 0x63, 0x4d, 0xb2, 0xe5, 0x74, 0xbc, 0x58, + 0xa9, 0x31, 0x87, 0xb8, 0x2a, 0xbb, 0x9a, 0x14, 0x63, 0x1d, 0xe7, 0x18, 0xc3, 0xf6, 0xd3, 0x63, + 0xec, 0x6e, 0x8d, 0x1d, 0xba, 0xc6, 0xd5, 0xae, 0xb1, 0x72, 0x77, 0xcd, 0x53, 0x30, 0xe4, 0xee, + 0x52, 0x5e, 0xab, 0x60, 0xb2, 0x50, 0xab, 0xb4, 0x10, 0x73, 0x18, 0xfa, 0x04, 0x8c, 0x34, 0x82, + 0xdd, 0x5d, 0xc7, 0x6f, 0xb2, 0x2b, 0xaf, 0xbc, 0x38, 0x46, 0xd9, 0xb1, 0x25, 0x5e, 0x84, 0x25, + 0x0c, 0x3d, 0x01, 0x25, 0x27, 0x6c, 0x45, 0xb3, 0x25, 0x86, 0x33, 0x4a, 0x5b, 0x5a, 0x08, 0x5b, + 0x11, 0x66, 0xa5, 0x54, 0xaa, 0xba, 0x1f, 0x84, 0x3b, 0xae, 0xdf, 0xaa, 0xba, 0xa1, 0xd8, 0x12, + 0xea, 0x2e, 0x7c, 0x4b, 0x41, 0xb0, 0x86, 0x85, 0x56, 0x60, 0xa8, 0x1d, 0x84, 0x71, 0x34, 0x3b, + 0xcc, 0x86, 0xfb, 0xc9, 0x9c, 0x83, 0x88, 0x7f, 0x6d, 0x2d, 0x08, 0xe3, 0xe4, 0x03, 0xe8, 0xbf, + 0x08, 0xf3, 0xea, 0xe8, 0xdb, 0xa0, 0x48, 0xfc, 0xbd, 0xd9, 0x11, 0x46, 0x65, 0x2e, 0x8b, 0xca, + 0xb2, 0xbf, 0x77, 0xcf, 0x09, 0x93, 0x53, 0x7a, 0xd9, 0xdf, 0xc3, 0xb4, 0x0e, 0xfa, 0x02, 0x94, + 0xe5, 0x16, 0x8f, 0x84, 0x9a, 0x23, 0x73, 0x89, 0xc9, 0x83, 0x01, 0x93, 0xf7, 0x3a, 0x6e, 0x48, + 0x76, 0x89, 0x1f, 0x47, 0xc9, 0x99, 0x26, 0xa1, 0x11, 0x4e, 0xa8, 0xa1, 0x2f, 0x48, 0xdd, 0xda, + 0x5a, 0xd0, 0xf1, 0xe3, 0x68, 0xb6, 0xcc, 0xba, 0x97, 0xf9, 0xea, 0x71, 0x2f, 0xc1, 0x4b, 0x2b, + 0xdf, 0x78, 0x65, 0x6c, 0x90, 0x42, 0x18, 0x26, 0x3c, 0x77, 0x8f, 0xf8, 0x24, 0x8a, 0x6a, 0x61, + 0xb0, 0x49, 0x66, 0x81, 0xf5, 0xfc, 0x42, 0xf6, 0x63, 0x40, 0xb0, 0x49, 0x16, 0x67, 0x0e, 0x0f, + 0x2a, 0x13, 0xb7, 0xf5, 0x3a, 0xd8, 0x24, 0x81, 0xee, 0xc2, 0x24, 0x95, 0x6b, 0xdc, 0x84, 0xe8, + 0x58, 0x3f, 0xa2, 0x4c, 0xfa, 0xc0, 0x46, 0x25, 0x9c, 0x22, 0x82, 0xde, 0x80, 0xb2, 0xe7, 0x6e, + 0x91, 0xc6, 0x7e, 0xc3, 0x23, 0xb3, 0xe3, 0x8c, 0x62, 0xe6, 0xb6, 0xba, 0x2d, 0x91, 0xb8, 0x5c, + 0xa4, 0xfe, 0xe2, 0xa4, 0x3a, 0xba, 0x07, 0xe7, 0x63, 0x12, 0xee, 0xba, 0xbe, 0x43, 0xb7, 0x83, + 0x90, 0x17, 0xd8, 0x93, 0xca, 0x04, 0x5b, 0x6f, 0x97, 0xc4, 0xd0, 0x9d, 0xdf, 0xc8, 0xc4, 0xc2, + 0x39, 0xb5, 0xd1, 0x1d, 0x98, 0x62, 0x3b, 0xa1, 0xd6, 0xf1, 0xbc, 0x5a, 0xe0, 0xb9, 0x8d, 0xfd, + 0xd9, 0x49, 0x46, 0xf0, 0x13, 0xf2, 0x5e, 0x58, 0x35, 0xc1, 0x47, 0x07, 0x15, 0x48, 0xfe, 0xe1, + 0x74, 0x6d, 0xb4, 0xc9, 0x74, 0xe8, 0x9d, 0xd0, 0x8d, 0xf7, 0xe9, 0xfa, 0x25, 0x0f, 0xe2, 0xd9, + 0xa9, 0x9e, 0xa2, 0xb0, 0x8e, 0xaa, 0x14, 0xed, 0x7a, 0x21, 0x4e, 0x13, 0xa4, 0x5b, 0x3b, 0x8a, + 0x9b, 0xae, 0x3f, 0x3b, 0xcd, 0x4e, 0x0c, 0xb5, 0x33, 0xea, 0xb4, 0x10, 0x73, 0x18, 0xd3, 0x9f, + 0xd3, 0x1f, 0x77, 0xe8, 0x09, 0x3a, 0xc3, 0x10, 0x13, 0xfd, 0xb9, 0x04, 0xe0, 0x04, 0x87, 0x32, + 0x35, 0x71, 0xbc, 0x3f, 0x8b, 0x18, 0xaa, 0xda, 0x2e, 0x1b, 0x1b, 0x5f, 0xc0, 0xb4, 0x1c, 0xdd, + 0x86, 0x11, 0xe2, 0xef, 0xad, 0x84, 0xc1, 0xee, 0xec, 0x99, 0xfc, 0x3d, 0xbb, 0xcc, 0x51, 0xf8, + 0x81, 0x9e, 0x08, 0x78, 0xa2, 0x18, 0x4b, 0x12, 0xe8, 0x01, 0xcc, 0x66, 0xcc, 0x08, 0x9f, 0x80, + 0xb3, 0x6c, 0x02, 0x3e, 0x2b, 0xea, 0xce, 0x6e, 0xe4, 0xe0, 0x1d, 0xf5, 0x80, 0xe1, 0x5c, 0xea, + 0xe8, 0x8b, 0x30, 0xc1, 0x37, 0x14, 0x7f, 0x7c, 0x8b, 0x66, 0xcf, 0xb1, 0xaf, 0xb9, 0x9c, 0xbf, + 0x39, 0x39, 0xe2, 0xe2, 0x39, 0xd1, 0xa1, 0x09, 0xbd, 0x34, 0xc2, 0x26, 0x35, 0x7b, 0x13, 0x26, + 0xd5, 0xb9, 0xc5, 0x96, 0x0e, 0xaa, 0xc0, 0x10, 0xe3, 0x76, 0x84, 0x7e, 0xab, 0x4c, 0x67, 0x8a, + 0x71, 0x42, 0x98, 0x97, 0xb3, 0x99, 0x72, 0xdf, 0x27, 0x8b, 0xfb, 0x31, 0xe1, 0x52, 0x75, 0x51, + 0x9b, 0x29, 0x09, 0xc0, 0x09, 0x8e, 0xfd, 0x7f, 0x39, 0xd7, 0x98, 0x1c, 0x8e, 0x03, 0x5c, 0x07, + 0xcf, 0xc1, 0xe8, 0x76, 0x10, 0xc5, 0x14, 0x9b, 0xb5, 0x31, 0x94, 0xf0, 0x89, 0x37, 0x45, 0x39, + 0x56, 0x18, 0xe8, 0x35, 0x98, 0x68, 0xe8, 0x0d, 0x88, 0xbb, 0x4c, 0x0d, 0x81, 0xd1, 0x3a, 0x36, + 0x71, 0xd1, 0xab, 0x30, 0xca, 0x9e, 0xce, 0x1b, 0x81, 0x27, 0x98, 0x2c, 0x79, 0x21, 0x8f, 0xd6, + 0x44, 0xf9, 0x91, 0xf6, 0x1b, 0x2b, 0x6c, 0x74, 0x05, 0x86, 0x69, 0x17, 0x56, 0x6b, 0xe2, 0x16, + 0x51, 0xaa, 0x9a, 0x9b, 0xac, 0x14, 0x0b, 0xa8, 0xfd, 0xd7, 0x0b, 0xda, 0x28, 0x53, 0x89, 0x94, + 0xa0, 0x1a, 0x8c, 0xdc, 0x77, 0xdc, 0xd8, 0xf5, 0x5b, 0x82, 0x5d, 0x78, 0xa6, 0xe7, 0x95, 0xc2, + 0x2a, 0xbd, 0xc5, 0x2b, 0xf0, 0x4b, 0x4f, 0xfc, 0xc1, 0x92, 0x0c, 0xa5, 0x18, 0x76, 0x7c, 0x9f, + 0x52, 0x2c, 0x0c, 0x4a, 0x11, 0xf3, 0x0a, 0x9c, 0xa2, 0xf8, 0x83, 0x25, 0x19, 0xf4, 0x0e, 0x80, + 0x5c, 0x96, 0xa4, 0x29, 0x9e, 0xac, 0x9f, 0xeb, 0x4f, 0x74, 0x43, 0xd5, 0x59, 0x9c, 0xa4, 0x57, + 0x6a, 0xf2, 0x1f, 0x6b, 0xf4, 0xec, 0x98, 0xb1, 0x55, 0xdd, 0x9d, 0x41, 0xdf, 0x49, 0x4f, 0x02, + 0x27, 0x8c, 0x49, 0x73, 0x21, 0x16, 0x83, 0xf3, 0xc9, 0xc1, 0x64, 0x8a, 0x0d, 0x77, 0x97, 0xe8, + 0xa7, 0x86, 0x20, 0x82, 0x13, 0x7a, 0xf6, 0xaf, 0x14, 0x61, 0x36, 0xaf, 0xbb, 0x74, 0xd1, 0x91, + 0x07, 0x6e, 0xbc, 0x44, 0xb9, 0x21, 0xcb, 0x5c, 0x74, 0xcb, 0xa2, 0x1c, 0x2b, 0x0c, 0x3a, 0xfb, + 0x91, 0xdb, 0x92, 0x22, 0xe1, 0x50, 0x32, 0xfb, 0x75, 0x56, 0x8a, 0x05, 0x94, 0xe2, 0x85, 0xc4, + 0x89, 0x84, 0x4d, 0x84, 0xb6, 0x4a, 0x30, 0x2b, 0xc5, 0x02, 0xaa, 0xeb, 0x9b, 0x4a, 0x7d, 0xf4, + 0x4d, 0xc6, 0x10, 0x0d, 0x9d, 0xec, 0x10, 0xa1, 0x2f, 0x01, 0x6c, 0xb9, 0xbe, 0x1b, 0x6d, 0x33, + 0xea, 0xc3, 0xc7, 0xa6, 0xae, 0x78, 0xa9, 0x15, 0x45, 0x05, 0x6b, 0x14, 0xd1, 0xcb, 0x30, 0xa6, + 0x36, 0xe0, 0x6a, 0x95, 0x3d, 0x10, 0x69, 0x0f, 0xee, 0xc9, 0x69, 0x54, 0xc5, 0x3a, 0x9e, 0xfd, + 0x6e, 0x7a, 0xbd, 0x88, 0x1d, 0xa0, 0x8d, 0xaf, 0x35, 0xe8, 0xf8, 0x16, 0x7a, 0x8f, 0xaf, 0xfd, + 0x9b, 0x45, 0x98, 0x32, 0x1a, 0xeb, 0x44, 0x03, 0x9c, 0x59, 0x37, 0xe8, 0x3d, 0xe7, 0xc4, 0x44, + 0xec, 0x3f, 0xbb, 0xff, 0x56, 0xd1, 0xef, 0x42, 0xba, 0x03, 0x78, 0x7d, 0xf4, 0x25, 0x28, 0x7b, + 0x4e, 0xc4, 0x74, 0x57, 0x44, 0xec, 0xbb, 0x41, 0x88, 0x25, 0x72, 0x84, 0x13, 0xc5, 0xda, 0x55, + 0xc3, 0x69, 0x27, 0x24, 0xe9, 0x85, 0x4c, 0x79, 0x1f, 0x69, 0x74, 0xa3, 0x3a, 0x41, 0x19, 0xa4, + 0x7d, 0xcc, 0x61, 0xe8, 0x55, 0x18, 0x0f, 0x09, 0x5b, 0x15, 0x4b, 0x94, 0x95, 0x63, 0xcb, 0x6c, + 0x28, 0xe1, 0xf9, 0xb0, 0x06, 0xc3, 0x06, 0x66, 0xc2, 0xca, 0x0f, 0xf7, 0x60, 0xe5, 0x9f, 0x81, + 0x11, 0xf6, 0x43, 0xad, 0x00, 0x35, 0x1b, 0xab, 0xbc, 0x18, 0x4b, 0x78, 0x7a, 0xc1, 0x8c, 0x0e, + 0xb8, 0x60, 0x3e, 0x09, 0x93, 0x55, 0x87, 0xec, 0x06, 0xfe, 0xb2, 0xdf, 0x6c, 0x07, 0xae, 0x1f, + 0xa3, 0x59, 0x28, 0xb1, 0xdb, 0x81, 0xef, 0xed, 0x12, 0xa5, 0x80, 0x4b, 0x94, 0x31, 0xb7, 0x5b, + 0x70, 0xae, 0x1a, 0xdc, 0xf7, 0xef, 0x3b, 0x61, 0x73, 0xa1, 0xb6, 0xaa, 0xc9, 0xb9, 0xeb, 0x52, + 0xce, 0xe2, 0x46, 0x2c, 0x99, 0x67, 0xaa, 0x56, 0x93, 0xdf, 0xb5, 0x2b, 0xae, 0x47, 0x72, 0xb4, + 0x11, 0x7f, 0xb3, 0x60, 0xb4, 0x94, 0xe0, 0xab, 0x07, 0x23, 0x2b, 0xf7, 0xc1, 0xe8, 0x4d, 0x18, + 0xdd, 0x72, 0x89, 0xd7, 0xc4, 0x64, 0x4b, 0x2c, 0xb1, 0xa7, 0xf3, 0xdf, 0xe5, 0x57, 0x28, 0xa6, + 0xd4, 0x3e, 0x71, 0x29, 0x6d, 0x45, 0x54, 0xc6, 0x8a, 0x0c, 0xda, 0x81, 0x69, 0x29, 0x06, 0x48, + 0xa8, 0x58, 0x70, 0xcf, 0xf4, 0x92, 0x2d, 0x4c, 0xe2, 0x67, 0x0f, 0x0f, 0x2a, 0xd3, 0x38, 0x45, + 0x06, 0x77, 0x11, 0xa6, 0x62, 0xd9, 0x2e, 0x3d, 0x5a, 0x4b, 0x6c, 0xf8, 0x99, 0x58, 0xc6, 0x24, + 0x4c, 0x56, 0x6a, 0xff, 0x84, 0x05, 0x8f, 0x75, 0x8d, 0x8c, 0x90, 0xb4, 0x4f, 0x78, 0x16, 0xd2, + 0x92, 0x6f, 0xa1, 0xbf, 0xe4, 0x6b, 0xff, 0x03, 0x0b, 0xce, 0x2e, 0xef, 0xb6, 0xe3, 0xfd, 0xaa, + 0x6b, 0xbe, 0xee, 0xbc, 0x02, 0xc3, 0xbb, 0xa4, 0xe9, 0x76, 0x76, 0xc5, 0xcc, 0x55, 0xe4, 0xf1, + 0xb3, 0xc6, 0x4a, 0x8f, 0x0e, 0x2a, 0x13, 0xf5, 0x38, 0x08, 0x9d, 0x16, 0xe1, 0x05, 0x58, 0xa0, + 0xb3, 0x43, 0xdc, 0x7d, 0x9f, 0xdc, 0x76, 0x77, 0x5d, 0x69, 0x67, 0xd1, 0x53, 0x77, 0x36, 0x2f, + 0x07, 0x74, 0xfe, 0xcd, 0x8e, 0xe3, 0xc7, 0x6e, 0xbc, 0x2f, 0x1e, 0x66, 0x24, 0x11, 0x9c, 0xd0, + 0xb3, 0xbf, 0x69, 0xc1, 0x94, 0x5c, 0xf7, 0x0b, 0xcd, 0x66, 0x48, 0xa2, 0x08, 0xcd, 0x41, 0xc1, + 0x6d, 0x8b, 0x5e, 0x82, 0xe8, 0x65, 0x61, 0xb5, 0x86, 0x0b, 0x6e, 0x1b, 0xd5, 0xa0, 0xcc, 0xcd, + 0x35, 0x92, 0xc5, 0x35, 0x90, 0xd1, 0x07, 0xeb, 0xc1, 0x86, 0xac, 0x89, 0x13, 0x22, 0x92, 0x83, + 0x63, 0x67, 0x66, 0xd1, 0x7c, 0xf5, 0xba, 0x29, 0xca, 0xb1, 0xc2, 0x40, 0x57, 0x61, 0xd4, 0x0f, + 0x9a, 0xdc, 0x7a, 0x86, 0xdf, 0x7e, 0x6c, 0xc9, 0xae, 0x8b, 0x32, 0xac, 0xa0, 0xf6, 0x0f, 0x5b, + 0x30, 0x2e, 0xbf, 0x6c, 0x40, 0x66, 0x92, 0x6e, 0xad, 0x84, 0x91, 0x4c, 0xb6, 0x16, 0x65, 0x06, + 0x19, 0xc4, 0xe0, 0x01, 0x8b, 0xc7, 0xe1, 0x01, 0xed, 0x1f, 0x2f, 0xc0, 0xa4, 0xec, 0x4e, 0xbd, + 0xb3, 0x19, 0x91, 0x18, 0x6d, 0x40, 0xd9, 0xe1, 0x43, 0x4e, 0xe4, 0x8a, 0x7d, 0x2a, 0x5b, 0xf8, + 0x30, 0xe6, 0x27, 0xb9, 0x96, 0x17, 0x64, 0x6d, 0x9c, 0x10, 0x42, 0x1e, 0xcc, 0xf8, 0x41, 0xcc, + 0x8e, 0x68, 0x05, 0xef, 0xf5, 0x04, 0x92, 0xa6, 0x7e, 0x41, 0x50, 0x9f, 0x59, 0x4f, 0x53, 0xc1, + 0xdd, 0x84, 0xd1, 0xb2, 0x54, 0x78, 0x14, 0xf3, 0xc5, 0x0d, 0x7d, 0x16, 0xb2, 0xf5, 0x1d, 0xf6, + 0xaf, 0x59, 0x50, 0x96, 0x68, 0xa7, 0xf1, 0xda, 0xb5, 0x06, 0x23, 0x11, 0x9b, 0x04, 0x39, 0x34, + 0x76, 0xaf, 0x8e, 0xf3, 0xf9, 0x4a, 0x6e, 0x1e, 0xfe, 0x3f, 0xc2, 0x92, 0x06, 0xd3, 0x77, 0xab, + 0xee, 0x7f, 0x44, 0xf4, 0xdd, 0xaa, 0x3f, 0x39, 0x37, 0xcc, 0x7f, 0x65, 0x7d, 0xd6, 0xc4, 0x5a, + 0xca, 0x20, 0xb5, 0x43, 0xb2, 0xe5, 0x3e, 0x48, 0x33, 0x48, 0x35, 0x56, 0x8a, 0x05, 0x14, 0xbd, + 0x03, 0xe3, 0x0d, 0xa9, 0xe8, 0x4c, 0x8e, 0x81, 0x2b, 0x3d, 0x95, 0xee, 0xea, 0x7d, 0x86, 0x5b, + 0xd6, 0x2e, 0x69, 0xf5, 0xb1, 0x41, 0xcd, 0x7c, 0x6e, 0x2f, 0xf6, 0x7b, 0x6e, 0x4f, 0xe8, 0xe6, + 0x3f, 0x3e, 0xff, 0xa4, 0x05, 0xc3, 0x5c, 0x5d, 0x36, 0x98, 0x7e, 0x51, 0x7b, 0xae, 0x4a, 0xc6, + 0xee, 0x1e, 0x2d, 0x14, 0xcf, 0x4f, 0x68, 0x0d, 0xca, 0xec, 0x07, 0x53, 0x1b, 0x14, 0xf3, 0x4d, + 0x8a, 0x79, 0xab, 0x7a, 0x07, 0xef, 0xc9, 0x6a, 0x38, 0xa1, 0x60, 0xff, 0x68, 0x91, 0x1e, 0x55, + 0x09, 0xaa, 0x71, 0x83, 0x5b, 0x8f, 0xee, 0x06, 0x2f, 0x3c, 0xaa, 0x1b, 0xbc, 0x05, 0x53, 0x0d, + 0xed, 0x71, 0x2b, 0x99, 0xc9, 0xab, 0x3d, 0x17, 0x89, 0xf6, 0x0e, 0xc6, 0x55, 0x46, 0x4b, 0x26, + 0x11, 0x9c, 0xa6, 0x8a, 0xbe, 0x13, 0xc6, 0xf9, 0x3c, 0x8b, 0x56, 0xb8, 0xc5, 0xc2, 0x27, 0xf2, + 0xd7, 0x8b, 0xde, 0x04, 0x5b, 0x89, 0x75, 0xad, 0x3a, 0x36, 0x88, 0xd9, 0xbf, 0x32, 0x0a, 0x43, + 0xcb, 0x7b, 0xc4, 0x8f, 0x4f, 0xe1, 0x40, 0x6a, 0xc0, 0xa4, 0xeb, 0xef, 0x05, 0xde, 0x1e, 0x69, + 0x72, 0xf8, 0x71, 0x2e, 0xd7, 0xf3, 0x82, 0xf4, 0xe4, 0xaa, 0x41, 0x02, 0xa7, 0x48, 0x3e, 0x0a, + 0x09, 0xf3, 0x06, 0x0c, 0xf3, 0xb9, 0x17, 0xe2, 0x65, 0xa6, 0x32, 0x98, 0x0d, 0xa2, 0xd8, 0x05, + 0x89, 0xf4, 0xcb, 0xb5, 0xcf, 0xa2, 0x3a, 0x7a, 0x17, 0x26, 0xb7, 0xdc, 0x30, 0x8a, 0xa9, 0x68, + 0x18, 0xc5, 0xce, 0x6e, 0xfb, 0x21, 0x24, 0x4a, 0x35, 0x0e, 0x2b, 0x06, 0x25, 0x9c, 0xa2, 0x8c, + 0x5a, 0x30, 0x41, 0x85, 0x9c, 0xa4, 0xa9, 0x91, 0x63, 0x37, 0xa5, 0x54, 0x46, 0xb7, 0x75, 0x42, + 0xd8, 0xa4, 0x4b, 0x0f, 0x93, 0x06, 0x13, 0x8a, 0x46, 0x19, 0x47, 0xa1, 0x0e, 0x13, 0x2e, 0x0d, + 0x71, 0x18, 0x3d, 0x93, 0x98, 0xd9, 0x4a, 0xd9, 0x3c, 0x93, 0x34, 0xe3, 0x94, 0x2f, 0x43, 0x99, + 0xd0, 0x21, 0xa4, 0x84, 0x85, 0x62, 0xfc, 0xda, 0x60, 0x7d, 0x5d, 0x73, 0x1b, 0x61, 0x60, 0xca, + 0xf2, 0xcb, 0x92, 0x12, 0x4e, 0x88, 0xa2, 0x25, 0x18, 0x8e, 0x48, 0xe8, 0x92, 0x48, 0xa8, 0xc8, + 0x7b, 0x4c, 0x23, 0x43, 0xe3, 0xb6, 0xe7, 0xfc, 0x37, 0x16, 0x55, 0xe9, 0xf2, 0x72, 0x98, 0x34, + 0xc4, 0xb4, 0xe2, 0xda, 0xf2, 0x5a, 0x60, 0xa5, 0x58, 0x40, 0xd1, 0x1b, 0x30, 0x12, 0x12, 0x8f, + 0x29, 0x8b, 0x26, 0x06, 0x5f, 0xe4, 0x5c, 0xf7, 0xc4, 0xeb, 0x61, 0x49, 0x00, 0xdd, 0x02, 0x14, + 0x12, 0xca, 0x43, 0xb8, 0x7e, 0x4b, 0x19, 0x73, 0x08, 0x5d, 0xf7, 0xe3, 0xa2, 0xfd, 0x33, 0x38, + 0xc1, 0x90, 0x56, 0xa9, 0x38, 0xa3, 0x1a, 0xba, 0x01, 0x33, 0xaa, 0x74, 0xd5, 0x8f, 0x62, 0xc7, + 0x6f, 0x10, 0xa6, 0xe6, 0x2e, 0x27, 0x5c, 0x11, 0x4e, 0x23, 0xe0, 0xee, 0x3a, 0xf6, 0xcf, 0x51, + 0x76, 0x86, 0x8e, 0xd6, 0x29, 0xf0, 0x02, 0xaf, 0x9b, 0xbc, 0xc0, 0x85, 0xdc, 0x99, 0xcb, 0xe1, + 0x03, 0x0e, 0x2d, 0x18, 0xd3, 0x66, 0x36, 0x59, 0xb3, 0x56, 0x8f, 0x35, 0xdb, 0x81, 0x69, 0xba, + 0xd2, 0xef, 0x6c, 0x46, 0x24, 0xdc, 0x23, 0x4d, 0xb6, 0x30, 0x0b, 0x0f, 0xb7, 0x30, 0xd5, 0x2b, + 0xf3, 0xed, 0x14, 0x41, 0xdc, 0xd5, 0x04, 0x7a, 0x45, 0x6a, 0x4e, 0x8a, 0x86, 0x91, 0x16, 0xd7, + 0x8a, 0x1c, 0x1d, 0x54, 0xa6, 0xb5, 0x0f, 0xd1, 0x35, 0x25, 0xf6, 0x97, 0xe5, 0x37, 0xaa, 0xd7, + 0xfc, 0x86, 0x5a, 0x2c, 0xa9, 0xd7, 0x7c, 0xb5, 0x1c, 0x70, 0x82, 0x43, 0xf7, 0x28, 0x15, 0x41, + 0xd2, 0xaf, 0xf9, 0x54, 0x40, 0xc1, 0x0c, 0x62, 0xbf, 0x08, 0xb0, 0xfc, 0x80, 0x34, 0xf8, 0x52, + 0xd7, 0x1f, 0x20, 0xad, 0xfc, 0x07, 0x48, 0xfb, 0xdf, 0x5b, 0x30, 0xb9, 0xb2, 0x64, 0x88, 0x89, + 0xf3, 0x00, 0x5c, 0x36, 0x7a, 0xeb, 0xad, 0x75, 0xa9, 0x5b, 0xe7, 0xea, 0x51, 0x55, 0x8a, 0x35, + 0x0c, 0x74, 0x01, 0x8a, 0x5e, 0xc7, 0x17, 0x22, 0xcb, 0xc8, 0xe1, 0x41, 0xa5, 0x78, 0xbb, 0xe3, + 0x63, 0x5a, 0xa6, 0x59, 0x08, 0x16, 0x07, 0xb6, 0x10, 0xec, 0xeb, 0x5e, 0x85, 0x2a, 0x30, 0x74, + 0xff, 0xbe, 0xdb, 0xe4, 0x46, 0xec, 0x42, 0xef, 0xff, 0xd6, 0x5b, 0xab, 0xd5, 0x08, 0xf3, 0x72, + 0xfb, 0xab, 0x45, 0x98, 0x5b, 0xf1, 0xc8, 0x83, 0x0f, 0x68, 0xc8, 0x3f, 0xa8, 0x7d, 0xe3, 0xf1, + 0xf8, 0xc5, 0xe3, 0xda, 0xb0, 0xf6, 0x1f, 0x8f, 0x2d, 0x18, 0xe1, 0x8f, 0xd9, 0xd2, 0xac, 0xff, + 0xb5, 0xac, 0xd6, 0xf3, 0x07, 0x64, 0x9e, 0x3f, 0x8a, 0x0b, 0x73, 0x7e, 0x75, 0xd3, 0x8a, 0x52, + 0x2c, 0x89, 0xcf, 0x7d, 0x06, 0xc6, 0x75, 0xcc, 0x63, 0x59, 0x93, 0xff, 0xa5, 0x22, 0x4c, 0xd3, + 0x1e, 0x3c, 0xd2, 0x89, 0xb8, 0xdb, 0x3d, 0x11, 0x27, 0x6d, 0x51, 0xdc, 0x7f, 0x36, 0xde, 0x49, + 0xcf, 0xc6, 0x0b, 0x79, 0xb3, 0x71, 0xda, 0x73, 0xf0, 0xbd, 0x16, 0x9c, 0x59, 0xf1, 0x82, 0xc6, + 0x4e, 0xca, 0xea, 0xf7, 0x65, 0x18, 0xa3, 0xe7, 0x78, 0x64, 0x78, 0x11, 0x19, 0x7e, 0x65, 0x02, + 0x84, 0x75, 0x3c, 0xad, 0xda, 0xdd, 0xbb, 0xab, 0xd5, 0x2c, 0x77, 0x34, 0x01, 0xc2, 0x3a, 0x9e, + 0xfd, 0x0d, 0x0b, 0x2e, 0xde, 0x58, 0x5a, 0x4e, 0x96, 0x62, 0x97, 0x47, 0x1c, 0x95, 0x02, 0x9b, + 0x5a, 0x57, 0x12, 0x29, 0xb0, 0xca, 0x7a, 0x21, 0xa0, 0x1f, 0x15, 0x6f, 0xcf, 0x9f, 0xb5, 0xe0, + 0xcc, 0x0d, 0x37, 0xa6, 0xd7, 0x72, 0xda, 0x37, 0x8b, 0xde, 0xcb, 0x91, 0x1b, 0x07, 0xe1, 0x7e, + 0xda, 0x37, 0x0b, 0x2b, 0x08, 0xd6, 0xb0, 0x78, 0xcb, 0x7b, 0x2e, 0x33, 0xa3, 0x2a, 0x98, 0xaa, + 0x28, 0x2c, 0xca, 0xb1, 0xc2, 0xa0, 0x1f, 0xd6, 0x74, 0x43, 0x26, 0x4a, 0xec, 0x8b, 0x13, 0x56, + 0x7d, 0x58, 0x55, 0x02, 0x70, 0x82, 0x63, 0xff, 0x84, 0x05, 0xe7, 0x6e, 0x78, 0x9d, 0x28, 0x26, + 0xe1, 0x56, 0x64, 0x74, 0xf6, 0x45, 0x28, 0x13, 0x29, 0xae, 0x8b, 0xbe, 0x2a, 0x06, 0x53, 0xc9, + 0xf1, 0xdc, 0x31, 0x4c, 0xe1, 0x0d, 0xe0, 0x39, 0x70, 0x3c, 0xd7, 0xb1, 0x5f, 0x2c, 0xc0, 0xc4, + 0xcd, 0x8d, 0x8d, 0xda, 0x0d, 0x12, 0x8b, 0x5b, 0xac, 0xbf, 0xaa, 0x19, 0x6b, 0x1a, 0xb3, 0x5e, + 0x42, 0x51, 0x27, 0x76, 0xbd, 0x79, 0xee, 0x89, 0x3c, 0xbf, 0xea, 0xc7, 0x77, 0xc2, 0x7a, 0x1c, + 0xba, 0x7e, 0x2b, 0x53, 0xc7, 0x26, 0xef, 0xda, 0x62, 0xde, 0x5d, 0x8b, 0x5e, 0x84, 0x61, 0xe6, + 0x0a, 0x2d, 0xc5, 0x93, 0xc7, 0x95, 0x4c, 0xc1, 0x4a, 0x8f, 0x0e, 0x2a, 0xe5, 0xbb, 0x78, 0x95, + 0xff, 0xc1, 0x02, 0x15, 0xdd, 0x85, 0xb1, 0xed, 0x38, 0x6e, 0xdf, 0x24, 0x4e, 0x93, 0x84, 0xf2, + 0x74, 0xb8, 0x94, 0x75, 0x3a, 0xd0, 0x41, 0xe0, 0x68, 0xc9, 0x86, 0x4a, 0xca, 0x22, 0xac, 0xd3, + 0xb1, 0xeb, 0x00, 0x09, 0xec, 0x84, 0xf4, 0x0b, 0xf6, 0x1f, 0x58, 0x30, 0xc2, 0xbd, 0xd2, 0x42, + 0xf4, 0x59, 0x28, 0x91, 0x07, 0xa4, 0x21, 0x38, 0xc7, 0xcc, 0x0e, 0x27, 0x8c, 0x07, 0xd7, 0x96, + 0xd3, 0xff, 0x98, 0xd5, 0x42, 0x37, 0x61, 0x84, 0xf6, 0xf6, 0x86, 0x72, 0xd1, 0x7b, 0x32, 0xef, + 0x8b, 0xd5, 0xb4, 0x73, 0x5e, 0x45, 0x14, 0x61, 0x59, 0x9d, 0x69, 0x7e, 0x1b, 0xed, 0x3a, 0x3d, + 0xc0, 0xe2, 0x5e, 0xf7, 0xec, 0xc6, 0x52, 0x8d, 0x23, 0x09, 0x6a, 0x5c, 0xf3, 0x2b, 0x0b, 0x71, + 0x42, 0xc4, 0xde, 0x80, 0x32, 0x9d, 0xd4, 0x05, 0xcf, 0x75, 0x7a, 0x2b, 0x9d, 0x9f, 0x85, 0xb2, + 0x54, 0x00, 0x47, 0xc2, 0xb1, 0x89, 0x51, 0x95, 0xfa, 0xe1, 0x08, 0x27, 0x70, 0x7b, 0x0b, 0xce, + 0xb2, 0x97, 0x7f, 0x27, 0xde, 0x36, 0xf6, 0x58, 0xff, 0xc5, 0xfc, 0x9c, 0x10, 0xc4, 0xf8, 0xcc, + 0xcc, 0x6a, 0xbe, 0x03, 0xe3, 0x92, 0x62, 0x22, 0x94, 0xd9, 0x7f, 0x54, 0x82, 0xc7, 0x57, 0xeb, + 0xf9, 0x0e, 0x8b, 0xaf, 0xc2, 0x38, 0x67, 0xd3, 0xe8, 0xd2, 0x76, 0x3c, 0xd1, 0xae, 0x7a, 0x17, + 0xdb, 0xd0, 0x60, 0xd8, 0xc0, 0x44, 0x17, 0xa1, 0xe8, 0xbe, 0xe7, 0xa7, 0xcd, 0x70, 0x57, 0xdf, + 0x5c, 0xc7, 0xb4, 0x9c, 0x82, 0x29, 0xc7, 0xc7, 0x8f, 0x52, 0x05, 0x56, 0x5c, 0xdf, 0xeb, 0x30, + 0xe9, 0x46, 0x8d, 0xc8, 0x5d, 0xf5, 0xe9, 0x39, 0x93, 0x38, 0xbb, 0x26, 0x4a, 0x02, 0xda, 0x69, + 0x05, 0xc5, 0x29, 0x6c, 0xed, 0x5c, 0x1f, 0x1a, 0x98, 0x6b, 0xec, 0xeb, 0xe9, 0x43, 0x19, 0xe2, + 0x36, 0xfb, 0xba, 0x88, 0x19, 0xb5, 0x09, 0x86, 0x98, 0x7f, 0x70, 0x84, 0x25, 0x8c, 0x4a, 0x60, + 0x8d, 0x6d, 0xa7, 0xbd, 0xd0, 0x89, 0xb7, 0xab, 0x6e, 0xd4, 0x08, 0xf6, 0x48, 0xb8, 0xcf, 0x84, + 0xe7, 0xd1, 0x44, 0x02, 0x53, 0x80, 0xa5, 0x9b, 0x0b, 0x35, 0x8a, 0x89, 0xbb, 0xeb, 0x98, 0x5c, + 0x21, 0x9c, 0x04, 0x57, 0xb8, 0x00, 0x53, 0xb2, 0x99, 0x3a, 0x89, 0xd8, 0x1d, 0x31, 0xc6, 0x3a, + 0xa6, 0x4c, 0x6d, 0x45, 0xb1, 0xea, 0x56, 0x1a, 0x1f, 0xbd, 0x02, 0x13, 0xae, 0xef, 0xc6, 0xae, + 0x13, 0x07, 0x21, 0xbb, 0x61, 0xb9, 0x9c, 0xcc, 0x2c, 0xd9, 0x56, 0x75, 0x00, 0x36, 0xf1, 0xec, + 0x3f, 0x2c, 0xc1, 0x0c, 0x9b, 0xb6, 0x6f, 0xad, 0xb0, 0x8f, 0xcc, 0x0a, 0xbb, 0xdb, 0xbd, 0xc2, + 0x4e, 0x82, 0xdd, 0xfd, 0x30, 0x97, 0xd9, 0xbb, 0x50, 0x56, 0xb6, 0xc0, 0xd2, 0x19, 0xc0, 0xca, + 0x71, 0x06, 0xe8, 0xcf, 0x7d, 0xc8, 0x67, 0xdc, 0x62, 0xe6, 0x33, 0xee, 0xdf, 0xb6, 0x20, 0x31, + 0x89, 0x44, 0x37, 0xa1, 0xdc, 0x0e, 0x98, 0xd9, 0x41, 0x28, 0x6d, 0x79, 0x1e, 0xcf, 0xbc, 0xa8, + 0xf8, 0xa5, 0xc8, 0xc7, 0xaf, 0x26, 0x6b, 0xe0, 0xa4, 0x32, 0x5a, 0x84, 0x91, 0x76, 0x48, 0xea, + 0x31, 0x73, 0x81, 0xed, 0x4b, 0x87, 0xaf, 0x11, 0x8e, 0x8f, 0x65, 0x45, 0xfb, 0x97, 0x2c, 0x00, + 0xfe, 0x52, 0xea, 0xf8, 0x2d, 0x72, 0x0a, 0xda, 0xdf, 0x2a, 0x94, 0xa2, 0x36, 0x69, 0xf4, 0x32, + 0x08, 0x49, 0xfa, 0x53, 0x6f, 0x93, 0x46, 0x32, 0xe0, 0xf4, 0x1f, 0x66, 0xb5, 0xed, 0xef, 0x03, + 0x98, 0x4c, 0xd0, 0x56, 0x63, 0xb2, 0x8b, 0x9e, 0x37, 0x5c, 0xe2, 0x2e, 0xa4, 0x5c, 0xe2, 0xca, + 0x0c, 0x5b, 0x53, 0x34, 0xbe, 0x0b, 0xc5, 0x5d, 0xe7, 0x81, 0xd0, 0x24, 0x3d, 0xdb, 0xbb, 0x1b, + 0x94, 0xfe, 0xfc, 0x9a, 0xf3, 0x80, 0xcb, 0x4c, 0xcf, 0xca, 0x05, 0xb2, 0xe6, 0x3c, 0x38, 0xe2, + 0x66, 0x1f, 0xec, 0x90, 0xba, 0xed, 0x46, 0xf1, 0x57, 0xfe, 0x53, 0xf2, 0x9f, 0x2d, 0x3b, 0xda, + 0x08, 0x6b, 0xcb, 0xf5, 0xc5, 0xbb, 0xe1, 0x40, 0x6d, 0xb9, 0x7e, 0xba, 0x2d, 0xd7, 0x1f, 0xa0, + 0x2d, 0xd7, 0x47, 0xef, 0xc3, 0x88, 0x78, 0xa3, 0x67, 0xb6, 0xde, 0xa6, 0x96, 0x2a, 0xaf, 0x3d, + 0xf1, 0xc4, 0xcf, 0xdb, 0xbc, 0x26, 0x65, 0x42, 0x51, 0xda, 0xb7, 0x5d, 0xd9, 0x20, 0xfa, 0x1b, + 0x16, 0x4c, 0x8a, 0xdf, 0x98, 0xbc, 0xd7, 0x21, 0x51, 0x2c, 0x78, 0xcf, 0x4f, 0x0f, 0xde, 0x07, + 0x51, 0x91, 0x77, 0xe5, 0xd3, 0xf2, 0x98, 0x35, 0x81, 0x7d, 0x7b, 0x94, 0xea, 0x05, 0xfa, 0x47, + 0x16, 0x9c, 0xdd, 0x75, 0x1e, 0xf0, 0x16, 0x79, 0x19, 0x76, 0x62, 0x37, 0x10, 0xb6, 0xeb, 0x9f, + 0x1d, 0x6c, 0xfa, 0xbb, 0xaa, 0xf3, 0x4e, 0x4a, 0x33, 0xd7, 0xb3, 0x59, 0x28, 0x7d, 0xbb, 0x9a, + 0xd9, 0xaf, 0xb9, 0x2d, 0x18, 0x95, 0xeb, 0x2d, 0x43, 0xf2, 0xae, 0xea, 0x8c, 0xf5, 0xb1, 0x4d, + 0x24, 0x74, 0xbf, 0x34, 0xda, 0x8e, 0x58, 0x6b, 0x8f, 0xb4, 0x9d, 0x77, 0x61, 0x5c, 0x5f, 0x63, + 0x8f, 0xb4, 0xad, 0xf7, 0xe0, 0x4c, 0xc6, 0x5a, 0x7a, 0xa4, 0x4d, 0xde, 0x87, 0x0b, 0xb9, 0xeb, + 0xe3, 0x51, 0x36, 0x6c, 0xff, 0xa2, 0xa5, 0x9f, 0x83, 0xa7, 0xa0, 0x82, 0x5f, 0x32, 0x55, 0xf0, + 0x97, 0x7a, 0xef, 0x9c, 0x1c, 0x3d, 0xfc, 0x3b, 0x7a, 0xa7, 0xe9, 0xa9, 0x8e, 0xde, 0x80, 0x61, + 0x8f, 0x96, 0x48, 0xe3, 0x10, 0xbb, 0xff, 0x8e, 0x4c, 0x78, 0x29, 0x56, 0x1e, 0x61, 0x41, 0xc1, + 0xfe, 0x55, 0x0b, 0x4a, 0xa7, 0x30, 0x12, 0xd8, 0x1c, 0x89, 0xe7, 0x73, 0x49, 0x8b, 0x90, 0x66, + 0xf3, 0xd8, 0xb9, 0xbf, 0xfc, 0x20, 0x26, 0x7e, 0xc4, 0x44, 0xc5, 0xcc, 0x81, 0xf9, 0x2e, 0x38, + 0x73, 0x3b, 0x70, 0x9a, 0x8b, 0x8e, 0xe7, 0xf8, 0x0d, 0x12, 0xae, 0xfa, 0xad, 0xbe, 0x56, 0x4a, + 0xba, 0x4d, 0x51, 0xa1, 0x9f, 0x4d, 0x91, 0xbd, 0x0d, 0x48, 0x6f, 0x40, 0xd8, 0x71, 0x62, 0x18, + 0x71, 0x79, 0x53, 0x62, 0xf8, 0x9f, 0xce, 0xe6, 0xee, 0xba, 0x7a, 0xa6, 0x59, 0x28, 0xf2, 0x02, + 0x2c, 0x09, 0xd9, 0xaf, 0x42, 0xa6, 0xef, 0x56, 0x7f, 0xb5, 0x81, 0xfd, 0x32, 0xcc, 0xb0, 0x9a, + 0xc7, 0x13, 0x69, 0xed, 0x1f, 0xb0, 0x60, 0x6a, 0x3d, 0x15, 0x9b, 0xe2, 0x0a, 0x7b, 0xeb, 0xcb, + 0xd0, 0xfb, 0xd6, 0x59, 0x29, 0x16, 0xd0, 0x13, 0xd7, 0x2f, 0xfd, 0x99, 0x05, 0x89, 0xab, 0xe4, + 0x29, 0x30, 0x55, 0x4b, 0x06, 0x53, 0x95, 0xa9, 0xf7, 0x50, 0xdd, 0xc9, 0xe3, 0xa9, 0xd0, 0x2d, + 0x15, 0x17, 0xa0, 0x87, 0xca, 0x23, 0x21, 0xc3, 0xbd, 0xc8, 0x27, 0xcd, 0xe0, 0x01, 0x32, 0x52, + 0x00, 0x33, 0x13, 0x52, 0xb8, 0x1f, 0x11, 0x33, 0x21, 0xd5, 0x9f, 0x9c, 0xdd, 0x57, 0xd3, 0xba, + 0xcc, 0x4e, 0xa5, 0x6f, 0x67, 0x66, 0xdf, 0x8e, 0xe7, 0xbe, 0x4f, 0x54, 0x70, 0x93, 0x8a, 0x30, + 0xe3, 0x16, 0xa5, 0x47, 0x07, 0x95, 0x09, 0xf5, 0x8f, 0x47, 0xc0, 0x4a, 0xaa, 0xd8, 0x37, 0x61, + 0x2a, 0x35, 0x60, 0xe8, 0x65, 0x18, 0x6a, 0x6f, 0x3b, 0x11, 0x49, 0x99, 0x46, 0x0e, 0xd5, 0x68, + 0xe1, 0xd1, 0x41, 0x65, 0x52, 0x55, 0x60, 0x25, 0x98, 0x63, 0xdb, 0xff, 0xd3, 0x82, 0xd2, 0x7a, + 0xd0, 0x3c, 0x8d, 0xc5, 0xf4, 0xba, 0xb1, 0x98, 0x9e, 0xc8, 0x8b, 0x1f, 0x98, 0xbb, 0x8e, 0x56, + 0x52, 0xeb, 0xe8, 0x52, 0x2e, 0x85, 0xde, 0x4b, 0x68, 0x17, 0xc6, 0x58, 0x54, 0x42, 0x61, 0xaa, + 0xf9, 0xa2, 0xc1, 0xdf, 0x57, 0x52, 0xfc, 0xfd, 0x94, 0x86, 0xaa, 0x71, 0xf9, 0xcf, 0xc0, 0x88, + 0x30, 0x17, 0x4c, 0x1b, 0xb8, 0x0b, 0x5c, 0x2c, 0xe1, 0xf6, 0x4f, 0x16, 0xc1, 0x88, 0x82, 0x88, + 0x7e, 0xcd, 0x82, 0xf9, 0x90, 0x7b, 0x0c, 0x36, 0xab, 0x9d, 0xd0, 0xf5, 0x5b, 0xf5, 0xc6, 0x36, + 0x69, 0x76, 0x3c, 0xd7, 0x6f, 0xad, 0xb6, 0xfc, 0x40, 0x15, 0x2f, 0x3f, 0x20, 0x8d, 0x0e, 0xd3, + 0xf9, 0xf7, 0x09, 0xb9, 0xa8, 0xcc, 0x71, 0xae, 0x1f, 0x1e, 0x54, 0xe6, 0xf1, 0xb1, 0x68, 0xe3, + 0x63, 0xf6, 0x05, 0x7d, 0xc3, 0x82, 0x6b, 0x3c, 0x38, 0xe0, 0xe0, 0xfd, 0xef, 0x21, 0x0d, 0xd5, + 0x24, 0xa9, 0x84, 0xc8, 0x06, 0x09, 0x77, 0x17, 0x5f, 0x11, 0x03, 0x7a, 0xad, 0x76, 0xbc, 0xb6, + 0xf0, 0x71, 0x3b, 0x67, 0xff, 0xcb, 0x22, 0x4c, 0x08, 0x67, 0x75, 0x11, 0x05, 0xe5, 0x65, 0x63, + 0x49, 0x3c, 0x99, 0x5a, 0x12, 0x33, 0x06, 0xf2, 0xc9, 0x04, 0x40, 0x89, 0x60, 0xc6, 0x73, 0xa2, + 0xf8, 0x26, 0x71, 0xc2, 0x78, 0x93, 0x38, 0xdc, 0x4c, 0xa5, 0x78, 0x6c, 0x93, 0x1a, 0xa5, 0x7e, + 0xb9, 0x9d, 0x26, 0x86, 0xbb, 0xe9, 0xa3, 0x3d, 0x40, 0xcc, 0xd6, 0x26, 0x74, 0xfc, 0x88, 0x7f, + 0x8b, 0x2b, 0xde, 0x03, 0x8e, 0xd7, 0xea, 0x9c, 0x68, 0x15, 0xdd, 0xee, 0xa2, 0x86, 0x33, 0x5a, + 0xd0, 0x6c, 0xa8, 0x86, 0x06, 0xb5, 0xa1, 0x1a, 0xee, 0xe3, 0x45, 0xe2, 0xc3, 0x74, 0x57, 0xbc, + 0x81, 0xb7, 0xa1, 0xac, 0x6c, 0xdd, 0xc4, 0xa1, 0xd3, 0x3b, 0x6c, 0x47, 0x9a, 0x02, 0x57, 0x91, + 0x24, 0x76, 0x96, 0x09, 0x39, 0xfb, 0x1f, 0x17, 0x8c, 0x06, 0xf9, 0x24, 0xae, 0xc3, 0xa8, 0x13, + 0x45, 0x6e, 0xcb, 0x27, 0x4d, 0xb1, 0x63, 0x3f, 0x9e, 0xb7, 0x63, 0x8d, 0x66, 0x98, 0xbd, 0xe1, + 0x82, 0xa8, 0x89, 0x15, 0x0d, 0x74, 0x93, 0x1b, 0x03, 0xed, 0x49, 0x7e, 0x7e, 0x30, 0x6a, 0x20, + 0xcd, 0x85, 0xf6, 0x08, 0x16, 0xf5, 0xd1, 0x17, 0xb9, 0xb5, 0xd6, 0x2d, 0x3f, 0xb8, 0xef, 0xdf, + 0x08, 0x02, 0xe9, 0x61, 0x36, 0x18, 0xc1, 0x19, 0x69, 0xa3, 0xa5, 0xaa, 0x63, 0x93, 0xda, 0x60, + 0x31, 0x79, 0xbe, 0x1b, 0xce, 0x50, 0xd2, 0xa6, 0x9f, 0x48, 0x84, 0x08, 0x4c, 0x89, 0x48, 0x08, + 0xb2, 0x4c, 0x8c, 0x5d, 0x26, 0xab, 0x6e, 0xd6, 0x4e, 0x14, 0x7a, 0xb7, 0x4c, 0x12, 0x38, 0x4d, + 0xd3, 0xfe, 0x19, 0x0b, 0x98, 0x85, 0xfb, 0x29, 0xb0, 0x0c, 0x9f, 0x33, 0x59, 0x86, 0xd9, 0xbc, + 0x41, 0xce, 0xe1, 0x16, 0x5e, 0xe2, 0x2b, 0xab, 0x16, 0x06, 0x0f, 0xf6, 0xc5, 0x4b, 0xf9, 0x00, + 0x5c, 0xea, 0xff, 0xb1, 0xf8, 0x21, 0xa6, 0x9c, 0xce, 0xd1, 0xf7, 0xc0, 0x68, 0xc3, 0x69, 0x3b, + 0x0d, 0x1e, 0xb2, 0x37, 0x57, 0x63, 0x63, 0x54, 0x9a, 0x5f, 0x12, 0x35, 0xb8, 0x06, 0x42, 0x46, + 0xd4, 0x18, 0x95, 0xc5, 0x7d, 0xb5, 0x0e, 0xaa, 0xc9, 0xb9, 0x1d, 0x98, 0x30, 0x88, 0x3d, 0x52, + 0x71, 0xf5, 0x7b, 0xf8, 0x15, 0xab, 0x22, 0xc0, 0xec, 0xc2, 0x8c, 0xaf, 0xfd, 0xa7, 0x17, 0x8a, + 0x14, 0x41, 0x3e, 0xde, 0xef, 0x12, 0x65, 0xb7, 0x8f, 0x66, 0xc1, 0x9f, 0x22, 0x83, 0xbb, 0x29, + 0xdb, 0x3f, 0x65, 0xc1, 0x63, 0x3a, 0xa2, 0x16, 0x0f, 0xa0, 0x9f, 0x0e, 0xb8, 0x0a, 0xa3, 0x41, + 0x9b, 0x84, 0x4e, 0x1c, 0x84, 0xe2, 0xd6, 0xb8, 0x2a, 0x07, 0xfd, 0x8e, 0x28, 0x3f, 0x12, 0xb1, + 0x13, 0x25, 0x75, 0x59, 0x8e, 0x55, 0x4d, 0x64, 0xc3, 0x30, 0x1b, 0x8c, 0x48, 0xc4, 0x6a, 0x60, + 0x67, 0x00, 0x7b, 0x0e, 0x8d, 0xb0, 0x80, 0xd8, 0x7f, 0x64, 0xf1, 0x85, 0xa5, 0x77, 0x1d, 0xbd, + 0x07, 0xd3, 0xbb, 0x4e, 0xdc, 0xd8, 0x5e, 0x7e, 0xd0, 0x0e, 0xb9, 0xea, 0x5b, 0x8e, 0xd3, 0xb3, + 0xfd, 0xc6, 0x49, 0xfb, 0xc8, 0xc4, 0x00, 0x6d, 0x2d, 0x45, 0x0c, 0x77, 0x91, 0x47, 0x9b, 0x30, + 0xc6, 0xca, 0x98, 0xa5, 0x73, 0xd4, 0x8b, 0x35, 0xc8, 0x6b, 0x4d, 0xbd, 0x28, 0xaf, 0x25, 0x74, + 0xb0, 0x4e, 0xd4, 0xfe, 0x4a, 0x91, 0xef, 0x76, 0xc6, 0x6d, 0x3f, 0x03, 0x23, 0xed, 0xa0, 0xb9, + 0xb4, 0x5a, 0xc5, 0x62, 0x16, 0xd4, 0x35, 0x52, 0xe3, 0xc5, 0x58, 0xc2, 0xd1, 0x6b, 0x00, 0xe4, + 0x41, 0x4c, 0x42, 0xdf, 0xf1, 0x94, 0x41, 0x88, 0x32, 0x81, 0xac, 0x06, 0xeb, 0x41, 0x7c, 0x37, + 0x22, 0xdf, 0xb5, 0xac, 0x50, 0xb0, 0x86, 0x8e, 0xae, 0x03, 0xb4, 0xc3, 0x60, 0xcf, 0x6d, 0x32, + 0xd7, 0xb9, 0xa2, 0x69, 0x2e, 0x51, 0x53, 0x10, 0xac, 0x61, 0xa1, 0xd7, 0x60, 0xa2, 0xe3, 0x47, + 0x9c, 0x43, 0x71, 0x36, 0x45, 0xe4, 0xc1, 0xd1, 0xc4, 0x72, 0xe1, 0xae, 0x0e, 0xc4, 0x26, 0x2e, + 0x5a, 0x80, 0xe1, 0xd8, 0x61, 0xf6, 0x0e, 0x43, 0xf9, 0x76, 0x8b, 0x1b, 0x14, 0x43, 0x0f, 0x18, + 0x4b, 0x2b, 0x60, 0x51, 0x11, 0xbd, 0x2d, 0xfd, 0x10, 0xf8, 0x59, 0x2f, 0x0c, 0x86, 0x07, 0xbb, + 0x17, 0x34, 0x2f, 0x04, 0x61, 0x88, 0x6c, 0xd0, 0xb2, 0xbf, 0x51, 0x06, 0x48, 0xd8, 0x71, 0xf4, + 0x7e, 0xd7, 0x79, 0xf4, 0x5c, 0x6f, 0x06, 0xfe, 0xe4, 0x0e, 0x23, 0xf4, 0xfd, 0x16, 0x8c, 0x39, + 0x9e, 0x17, 0x34, 0x9c, 0x98, 0x8d, 0x72, 0xa1, 0xf7, 0x79, 0x28, 0xda, 0x5f, 0x48, 0x6a, 0xf0, + 0x2e, 0xbc, 0x28, 0x17, 0x9e, 0x06, 0xe9, 0xdb, 0x0b, 0xbd, 0x61, 0xf4, 0x29, 0x29, 0xa5, 0xf1, + 0xe5, 0x31, 0x97, 0x96, 0xd2, 0xca, 0xec, 0xe8, 0xd7, 0x04, 0x34, 0x74, 0xd7, 0x08, 0x2a, 0x57, + 0xca, 0x8f, 0xaf, 0x60, 0x70, 0xa5, 0xfd, 0xe2, 0xc9, 0xa1, 0x9a, 0xee, 0x38, 0x35, 0x94, 0x1f, + 0x84, 0x44, 0x13, 0x7f, 0xfa, 0x38, 0x4d, 0xbd, 0x0b, 0x53, 0x4d, 0xf3, 0x6e, 0x17, 0xab, 0xe9, + 0xe9, 0x3c, 0xba, 0x29, 0x56, 0x20, 0xb9, 0xcd, 0x53, 0x00, 0x9c, 0x26, 0x8c, 0x6a, 0xdc, 0x85, + 0x6d, 0xd5, 0xdf, 0x0a, 0x84, 0xe1, 0xb9, 0x9d, 0x3b, 0x97, 0xfb, 0x51, 0x4c, 0x76, 0x29, 0x66, + 0x72, 0x69, 0xaf, 0x8b, 0xba, 0x58, 0x51, 0x41, 0x6f, 0xc0, 0x30, 0xf3, 0x81, 0x8d, 0x66, 0x47, + 0xf3, 0x15, 0x85, 0x66, 0xf8, 0x86, 0x64, 0x53, 0xb1, 0xbf, 0x11, 0x16, 0x14, 0xd0, 0x4d, 0x19, + 0xe3, 0x25, 0x5a, 0xf5, 0xef, 0x46, 0x84, 0xc5, 0x78, 0x29, 0x2f, 0x7e, 0x3c, 0x09, 0xdf, 0xc2, + 0xcb, 0x33, 0x43, 0xc3, 0x1b, 0x35, 0x29, 0x73, 0x24, 0xfe, 0xcb, 0x88, 0xf3, 0xb3, 0x90, 0xdf, + 0x3d, 0x33, 0x2a, 0x7d, 0x32, 0x9c, 0xf7, 0x4c, 0x12, 0x38, 0x4d, 0x93, 0x32, 0x9a, 0x7c, 0xe7, + 0x0a, 0xd3, 0xf5, 0x7e, 0xfb, 0x9f, 0xcb, 0xd7, 0xec, 0x92, 0xe1, 0x25, 0x58, 0xd4, 0x3f, 0xd5, + 0x5b, 0x7f, 0xce, 0x87, 0xe9, 0xf4, 0x16, 0x7d, 0xa4, 0x5c, 0xc6, 0x1f, 0x94, 0x60, 0xd2, 0x5c, + 0x52, 0xe8, 0x1a, 0x94, 0x05, 0x11, 0x15, 0x70, 0x54, 0xed, 0x92, 0x35, 0x09, 0xc0, 0x09, 0x0e, + 0x8b, 0x33, 0xcb, 0xaa, 0x6b, 0x26, 0x87, 0x49, 0x9c, 0x59, 0x05, 0xc1, 0x1a, 0x16, 0x95, 0x97, + 0x36, 0x83, 0x20, 0x56, 0x97, 0x8a, 0x5a, 0x77, 0x8b, 0xac, 0x14, 0x0b, 0x28, 0xbd, 0x4c, 0x76, + 0x48, 0xe8, 0x13, 0xcf, 0x8c, 0x63, 0xa6, 0x2e, 0x93, 0x5b, 0x3a, 0x10, 0x9b, 0xb8, 0xf4, 0x96, + 0x0c, 0x22, 0xb6, 0x90, 0x85, 0x54, 0x96, 0x98, 0x70, 0xd6, 0xb9, 0x37, 0xb9, 0x84, 0xa3, 0x2f, + 0xc0, 0x63, 0xca, 0xf9, 0x1b, 0x73, 0x25, 0xb4, 0x6c, 0x71, 0xd8, 0x50, 0xa2, 0x3c, 0xb6, 0x94, + 0x8d, 0x86, 0xf3, 0xea, 0xa3, 0xd7, 0x61, 0x52, 0x70, 0xee, 0x92, 0xe2, 0x88, 0x69, 0x17, 0x71, + 0xcb, 0x80, 0xe2, 0x14, 0xb6, 0x8c, 0xc4, 0xc6, 0x98, 0x67, 0x49, 0x61, 0xb4, 0x3b, 0x12, 0x9b, + 0x0e, 0xc7, 0x5d, 0x35, 0xd0, 0x02, 0x4c, 0x71, 0xd6, 0xca, 0xf5, 0x5b, 0x7c, 0x4e, 0x84, 0x67, + 0x89, 0xda, 0x52, 0x77, 0x4c, 0x30, 0x4e, 0xe3, 0xa3, 0x57, 0x61, 0xdc, 0x09, 0x1b, 0xdb, 0x6e, + 0x4c, 0x1a, 0x71, 0x27, 0xe4, 0x2e, 0x27, 0x9a, 0x61, 0xc9, 0x82, 0x06, 0xc3, 0x06, 0xa6, 0xfd, + 0x3e, 0x9c, 0xc9, 0x70, 0x4a, 0xa3, 0x0b, 0xc7, 0x69, 0xbb, 0xf2, 0x9b, 0x52, 0xc6, 0x98, 0x0b, + 0xb5, 0x55, 0xf9, 0x35, 0x1a, 0x16, 0x5d, 0x9d, 0xcc, 0x79, 0x4d, 0x4b, 0x30, 0xa1, 0x56, 0xe7, + 0x8a, 0x04, 0xe0, 0x04, 0xc7, 0xfe, 0x5f, 0x05, 0x98, 0xca, 0x50, 0xac, 0xb3, 0x24, 0x07, 0x29, + 0xd9, 0x23, 0xc9, 0x69, 0x60, 0x06, 0xf6, 0x2b, 0x1c, 0x23, 0xb0, 0x5f, 0xb1, 0x5f, 0x60, 0xbf, + 0xd2, 0x07, 0x09, 0xec, 0x67, 0x8e, 0xd8, 0xd0, 0x40, 0x23, 0x96, 0x11, 0x0c, 0x70, 0xf8, 0x98, + 0xc1, 0x00, 0x8d, 0x41, 0x1f, 0x19, 0x60, 0xd0, 0x7f, 0xb4, 0x00, 0xd3, 0x69, 0x03, 0xb8, 0x53, + 0x50, 0xc7, 0xbe, 0x61, 0xa8, 0x63, 0xb3, 0x53, 0x86, 0xa4, 0xcd, 0xf2, 0xf2, 0x54, 0xb3, 0x38, + 0xa5, 0x9a, 0xfd, 0xe4, 0x40, 0xd4, 0x7a, 0xab, 0x69, 0xff, 0x6e, 0x01, 0xce, 0xa5, 0xab, 0x2c, + 0x79, 0x8e, 0xbb, 0x7b, 0x0a, 0x63, 0x73, 0xc7, 0x18, 0x9b, 0xe7, 0x07, 0xf9, 0x1a, 0xd6, 0xb5, + 0xdc, 0x01, 0x7a, 0x2b, 0x35, 0x40, 0xd7, 0x06, 0x27, 0xd9, 0x7b, 0x94, 0xbe, 0x59, 0x84, 0x4b, + 0x99, 0xf5, 0x12, 0x6d, 0xe6, 0x8a, 0xa1, 0xcd, 0xbc, 0x9e, 0xd2, 0x66, 0xda, 0xbd, 0x6b, 0x9f, + 0x8c, 0x7a, 0x53, 0x78, 0x0b, 0xb2, 0xe0, 0x6f, 0x0f, 0xa9, 0xda, 0x34, 0xbc, 0x05, 0x15, 0x21, + 0x6c, 0xd2, 0xfd, 0x8b, 0xa4, 0xd2, 0xfc, 0x37, 0x16, 0x5c, 0xc8, 0x9c, 0x9b, 0x53, 0x50, 0x61, + 0xad, 0x9b, 0x2a, 0xac, 0x67, 0x06, 0x5e, 0xad, 0x39, 0x3a, 0xad, 0x3f, 0x2c, 0xe6, 0x7c, 0x0b, + 0x13, 0xd0, 0xef, 0xc0, 0x98, 0xd3, 0x68, 0x90, 0x28, 0x5a, 0x0b, 0x9a, 0x2a, 0x18, 0xda, 0xf3, + 0x4c, 0xce, 0x4a, 0x8a, 0x8f, 0x0e, 0x2a, 0x73, 0x69, 0x12, 0x09, 0x18, 0xeb, 0x14, 0xcc, 0xf8, + 0x8d, 0x85, 0x13, 0x8d, 0xdf, 0x78, 0x1d, 0x60, 0x4f, 0x71, 0xeb, 0x69, 0x21, 0x5f, 0xe3, 0xe3, + 0x35, 0x2c, 0xf4, 0x45, 0x18, 0x8d, 0xc4, 0x35, 0x2e, 0x96, 0xe2, 0x8b, 0x03, 0xce, 0x95, 0xb3, + 0x49, 0x3c, 0xd3, 0x2d, 0x5d, 0xe9, 0x43, 0x14, 0x49, 0xf4, 0x1d, 0x30, 0x1d, 0xf1, 0xa8, 0x27, + 0x4b, 0x9e, 0x13, 0x31, 0x1f, 0x07, 0xb1, 0x0a, 0x99, 0xaf, 0x79, 0x3d, 0x05, 0xc3, 0x5d, 0xd8, + 0x68, 0x45, 0x7e, 0x14, 0x0b, 0xd1, 0xc2, 0x17, 0xe6, 0x95, 0xe4, 0x83, 0x44, 0x8a, 0xa5, 0xb3, + 0xe9, 0xe1, 0x67, 0x03, 0xaf, 0xd5, 0xb4, 0x7f, 0xb4, 0x04, 0x8f, 0xf7, 0x38, 0xc4, 0xd0, 0x82, + 0xf9, 0x46, 0xf9, 0x6c, 0x5a, 0xfa, 0x9d, 0xcb, 0xac, 0x6c, 0x88, 0xc3, 0xa9, 0xb5, 0x52, 0xf8, + 0xc0, 0x6b, 0xe5, 0x87, 0x2c, 0x4d, 0x2f, 0xc1, 0x2d, 0xe9, 0x3e, 0x77, 0xcc, 0xc3, 0xf9, 0x04, + 0x15, 0x15, 0x5b, 0x19, 0xd2, 0xfe, 0xf5, 0x81, 0xbb, 0x33, 0xb0, 0xf8, 0x7f, 0xba, 0xda, 0xd9, + 0xaf, 0x58, 0xf0, 0x64, 0x66, 0x7f, 0x0d, 0x9b, 0x8a, 0x6b, 0x50, 0x6e, 0xd0, 0x42, 0xcd, 0x6f, + 0x2a, 0x71, 0x28, 0x95, 0x00, 0x9c, 0xe0, 0x18, 0xa6, 0x13, 0x85, 0xbe, 0xa6, 0x13, 0xff, 0xc2, + 0x82, 0xae, 0x05, 0x7c, 0x0a, 0x27, 0xe9, 0xaa, 0x79, 0x92, 0x7e, 0x7c, 0x90, 0xb9, 0xcc, 0x39, + 0x44, 0xff, 0xf3, 0x14, 0x9c, 0xcf, 0x71, 0x94, 0xd8, 0x83, 0x99, 0x56, 0x83, 0x98, 0x1e, 0x69, + 0xe2, 0x63, 0x32, 0x9d, 0xf7, 0x7a, 0xba, 0xaf, 0xb1, 0xdc, 0x38, 0x33, 0x5d, 0x28, 0xb8, 0xbb, + 0x09, 0xf4, 0x15, 0x0b, 0xce, 0x3a, 0xf7, 0xa3, 0xae, 0x0c, 0x88, 0x62, 0xcd, 0xbc, 0x94, 0xa9, + 0xa5, 0xe8, 0x93, 0x31, 0x91, 0x27, 0x0b, 0xca, 0xc2, 0xc2, 0x99, 0x6d, 0x21, 0x2c, 0xe2, 0x57, + 0x52, 0x7e, 0xbb, 0x87, 0xcf, 0x64, 0x96, 0x47, 0x0b, 0x3f, 0x53, 0x25, 0x04, 0x2b, 0x3a, 0xe8, + 0x1e, 0x94, 0x5b, 0xd2, 0xcd, 0x4c, 0x9c, 0xd9, 0x99, 0x97, 0x60, 0xa6, 0x2f, 0x1a, 0x7f, 0x37, + 0x54, 0x20, 0x9c, 0x90, 0x42, 0xaf, 0x43, 0xd1, 0xdf, 0x8a, 0x7a, 0x65, 0xd9, 0x49, 0x99, 0x1a, + 0x71, 0x7f, 0xe4, 0xf5, 0x95, 0x3a, 0xa6, 0x15, 0xd1, 0x4d, 0x28, 0x86, 0x9b, 0x4d, 0xa1, 0x58, + 0xcb, 0xe4, 0x4b, 0xf1, 0x62, 0x35, 0x7b, 0x91, 0x70, 0x4a, 0x78, 0xb1, 0x8a, 0x29, 0x09, 0x54, + 0x83, 0x21, 0xe6, 0x53, 0x20, 0xf4, 0x67, 0x99, 0x0c, 0x69, 0x0f, 0xdf, 0x1c, 0xee, 0xb4, 0xcc, + 0x10, 0x30, 0x27, 0x84, 0x36, 0x60, 0xb8, 0xc1, 0x32, 0xb2, 0x88, 0x90, 0xc9, 0x9f, 0xca, 0x54, + 0xa1, 0xf5, 0x48, 0x55, 0x23, 0x34, 0x4a, 0x0c, 0x03, 0x0b, 0x5a, 0x8c, 0x2a, 0x69, 0x6f, 0x6f, + 0x45, 0x4c, 0x04, 0xcf, 0xa3, 0xda, 0x23, 0x03, 0x93, 0xa0, 0xca, 0x30, 0xb0, 0xa0, 0x85, 0x3e, + 0x03, 0x85, 0xad, 0x86, 0x70, 0x39, 0xc8, 0xd4, 0xa5, 0x99, 0x2e, 0xe5, 0x8b, 0xc3, 0x87, 0x07, + 0x95, 0xc2, 0xca, 0x12, 0x2e, 0x6c, 0x35, 0xd0, 0x3a, 0x8c, 0x6c, 0x71, 0x27, 0x54, 0xa1, 0x2e, + 0x7b, 0x3a, 0xdb, 0x3f, 0xb6, 0xcb, 0x4f, 0x95, 0x9b, 0xca, 0x0b, 0x00, 0x96, 0x44, 0x58, 0x10, + 0x48, 0xe5, 0x4c, 0x2b, 0xa2, 0x21, 0xcf, 0x1f, 0xcf, 0x01, 0x9a, 0xbb, 0xb7, 0x27, 0x2e, 0xb9, + 0x58, 0xa3, 0x88, 0xbe, 0x0c, 0x65, 0x47, 0xe6, 0xde, 0x13, 0xd1, 0x22, 0x5e, 0xcc, 0xdc, 0x98, + 0xbd, 0xd3, 0x12, 0xf2, 0x55, 0xad, 0x90, 0x70, 0x42, 0x14, 0xed, 0xc0, 0xc4, 0x5e, 0xd4, 0xde, + 0x26, 0x72, 0x23, 0xb3, 0xe0, 0x11, 0x39, 0x17, 0xd7, 0x3d, 0x81, 0xe8, 0x86, 0x71, 0xc7, 0xf1, + 0xba, 0xce, 0x1e, 0xf6, 0xd8, 0x7c, 0x4f, 0x27, 0x86, 0x4d, 0xda, 0x74, 0xf8, 0xdf, 0xeb, 0x04, + 0x9b, 0xfb, 0x31, 0x11, 0xe1, 0x93, 0x33, 0x87, 0xff, 0x4d, 0x8e, 0xd2, 0x3d, 0xfc, 0x02, 0x80, + 0x25, 0x11, 0xba, 0xd5, 0x1d, 0x99, 0xd7, 0x92, 0x85, 0x4d, 0xce, 0xd9, 0xea, 0x99, 0xc9, 0x2f, + 0xb5, 0x41, 0x61, 0x67, 0x64, 0x42, 0x8a, 0x9d, 0x8d, 0xed, 0xed, 0x20, 0x0e, 0xfc, 0xd4, 0xb9, + 0x3c, 0x93, 0x7f, 0x36, 0xd6, 0x32, 0xf0, 0xbb, 0xcf, 0xc6, 0x2c, 0x2c, 0x9c, 0xd9, 0x16, 0x6a, + 0xc2, 0x64, 0x3b, 0x08, 0xe3, 0xfb, 0x41, 0x28, 0xd7, 0x17, 0xea, 0x21, 0xee, 0x1b, 0x98, 0xa2, + 0x45, 0x16, 0xce, 0xdb, 0x84, 0xe0, 0x14, 0x4d, 0xf4, 0x79, 0x18, 0x89, 0x1a, 0x8e, 0x47, 0x56, + 0xef, 0xcc, 0x9e, 0xc9, 0xbf, 0x74, 0xea, 0x1c, 0x25, 0x67, 0x75, 0xb1, 0xc9, 0x11, 0x28, 0x58, + 0x92, 0x43, 0x2b, 0x30, 0xc4, 0x62, 0xf2, 0xb3, 0xc8, 0xcf, 0x39, 0x51, 0x89, 0xba, 0x8c, 0x3a, + 0xf9, 0xd9, 0xc4, 0x8a, 0x31, 0xaf, 0x4e, 0xf7, 0x80, 0xe0, 0x7a, 0x83, 0x68, 0xf6, 0x5c, 0xfe, + 0x1e, 0x10, 0xcc, 0xf2, 0x9d, 0x7a, 0xaf, 0x3d, 0xa0, 0x90, 0x70, 0x42, 0x94, 0x9e, 0xcc, 0xf4, + 0x34, 0x3d, 0xdf, 0xc3, 0xce, 0x24, 0xf7, 0x2c, 0x65, 0x27, 0x33, 0x3d, 0x49, 0x29, 0x09, 0xfb, + 0xf7, 0x46, 0xba, 0x39, 0x15, 0x26, 0x27, 0xfd, 0x65, 0xab, 0xeb, 0x09, 0xed, 0xd3, 0x83, 0xaa, + 0x6d, 0x4e, 0x90, 0x47, 0xfd, 0x8a, 0x05, 0xe7, 0xdb, 0x99, 0x1f, 0x22, 0xae, 0xfd, 0xc1, 0xb4, + 0x3f, 0xfc, 0xd3, 0x55, 0x74, 0xf6, 0x6c, 0x38, 0xce, 0x69, 0x29, 0x2d, 0x07, 0x14, 0x3f, 0xb0, + 0x1c, 0xb0, 0x06, 0xa3, 0x8c, 0xb5, 0xec, 0x93, 0xa1, 0x2c, 0xed, 0x85, 0xc6, 0x18, 0x88, 0x25, + 0x51, 0x11, 0x2b, 0x12, 0xe8, 0x87, 0x2d, 0xb8, 0x98, 0xee, 0x3a, 0x26, 0x0c, 0x2c, 0x62, 0x99, + 0x73, 0x11, 0x6d, 0x45, 0x7c, 0xff, 0xc5, 0x5a, 0x2f, 0xe4, 0xa3, 0x7e, 0x08, 0xb8, 0x77, 0x63, + 0xa8, 0x9a, 0x21, 0x23, 0x0e, 0x9b, 0x7a, 0xf1, 0x01, 0xe4, 0xc4, 0x97, 0x60, 0x7c, 0x37, 0xe8, + 0xf8, 0xb1, 0x30, 0x4b, 0x11, 0x4e, 0x82, 0xec, 0x1d, 0x78, 0x4d, 0x2b, 0xc7, 0x06, 0x56, 0x4a, + 0xba, 0x1c, 0x7d, 0x58, 0xe9, 0x12, 0xbd, 0x93, 0xca, 0x43, 0x5d, 0xce, 0x8f, 0x99, 0x27, 0x04, + 0xf1, 0x63, 0x64, 0xa3, 0x3e, 0x5d, 0x89, 0xe8, 0xe7, 0xac, 0x0c, 0x56, 0x9e, 0xcb, 0xc8, 0x9f, + 0x35, 0x65, 0xe4, 0x2b, 0x69, 0x19, 0xb9, 0x4b, 0x27, 0x6a, 0x88, 0xc7, 0x83, 0x07, 0x5e, 0x1e, + 0x34, 0x92, 0x99, 0xed, 0xc1, 0xe5, 0x7e, 0xd7, 0x12, 0xb3, 0x4f, 0x6a, 0xaa, 0x17, 0xb0, 0xc4, + 0x3e, 0xa9, 0xb9, 0x5a, 0xc5, 0x0c, 0x32, 0x68, 0xa8, 0x0b, 0xfb, 0xbf, 0x59, 0x50, 0xac, 0x05, + 0xcd, 0x53, 0xd0, 0xf1, 0x7e, 0xce, 0xd0, 0xf1, 0x3e, 0x9e, 0x93, 0x1f, 0x3c, 0x57, 0xa3, 0xbb, + 0x9c, 0xd2, 0xe8, 0x5e, 0xcc, 0x23, 0xd0, 0x5b, 0x7f, 0xfb, 0xd3, 0x45, 0xd0, 0xb3, 0x99, 0xa3, + 0x7f, 0xf5, 0x30, 0xc6, 0xc1, 0xc5, 0x5e, 0x09, 0xce, 0x05, 0x65, 0x66, 0xd6, 0x24, 0xfd, 0xde, + 0xfe, 0x9c, 0xd9, 0x08, 0xbf, 0x45, 0xdc, 0xd6, 0x76, 0x4c, 0x9a, 0xe9, 0xcf, 0x39, 0x3d, 0x1b, + 0xe1, 0xff, 0x62, 0xc1, 0x54, 0xaa, 0x75, 0xe4, 0xc1, 0x84, 0xa7, 0x2b, 0xe8, 0xc4, 0x3a, 0x7d, + 0x28, 0xdd, 0x9e, 0xb0, 0xb1, 0xd4, 0x8a, 0xb0, 0x49, 0x1c, 0xcd, 0x03, 0xa8, 0x07, 0x34, 0xa9, + 0xf7, 0x62, 0x5c, 0xbf, 0x7a, 0x61, 0x8b, 0xb0, 0x86, 0x81, 0x5e, 0x86, 0xb1, 0x38, 0x68, 0x07, + 0x5e, 0xd0, 0xda, 0xbf, 0x45, 0x64, 0x70, 0x15, 0x65, 0x39, 0xb5, 0x91, 0x80, 0xb0, 0x8e, 0x67, + 0xff, 0x6c, 0x11, 0xd2, 0x19, 0xf0, 0xbf, 0xb5, 0x26, 0x3f, 0x9a, 0x6b, 0xf2, 0x9b, 0x16, 0x4c, + 0xd3, 0xd6, 0x99, 0x15, 0x87, 0xbc, 0x6c, 0x55, 0x02, 0x18, 0xab, 0x47, 0x02, 0x98, 0x2b, 0xf4, + 0xec, 0x6a, 0x06, 0x9d, 0x58, 0xe8, 0xcd, 0xb4, 0xc3, 0x89, 0x96, 0x62, 0x01, 0x15, 0x78, 0x24, + 0x0c, 0x85, 0x6b, 0x92, 0x8e, 0x47, 0xc2, 0x10, 0x0b, 0xa8, 0xcc, 0x0f, 0x53, 0xca, 0xc9, 0x0f, + 0xc3, 0x42, 0xc5, 0x89, 0xf7, 0x7e, 0xc1, 0xf6, 0x68, 0xa1, 0xe2, 0xa4, 0x21, 0x40, 0x82, 0x63, + 0xff, 0x62, 0x11, 0xc6, 0x6b, 0x41, 0x33, 0x79, 0xc2, 0x7a, 0xc9, 0x78, 0xc2, 0xba, 0x9c, 0x7a, + 0xc2, 0x9a, 0xd6, 0x71, 0xbf, 0xf5, 0x60, 0xf5, 0x61, 0x3d, 0x58, 0xfd, 0x73, 0x8b, 0xcd, 0x5a, + 0x75, 0xbd, 0x2e, 0xf2, 0xd3, 0xbe, 0x00, 0x63, 0xec, 0x40, 0x62, 0xbe, 0x70, 0xf2, 0x5d, 0x87, + 0x85, 0x7e, 0x5f, 0x4f, 0x8a, 0xb1, 0x8e, 0x83, 0xae, 0xc2, 0x68, 0x44, 0x9c, 0xb0, 0xb1, 0xad, + 0xce, 0x38, 0xf1, 0xea, 0xc1, 0xcb, 0xb0, 0x82, 0xa2, 0x37, 0x93, 0x28, 0x65, 0xc5, 0xfc, 0x4c, + 0xab, 0x7a, 0x7f, 0xf8, 0x16, 0xc9, 0x0f, 0x4d, 0x66, 0xbf, 0x05, 0xa8, 0x1b, 0x7f, 0x80, 0x78, + 0x44, 0x15, 0x33, 0x1e, 0x51, 0xb9, 0x2b, 0x16, 0xd1, 0x9f, 0x5a, 0x30, 0x59, 0x0b, 0x9a, 0x74, + 0xeb, 0xfe, 0x45, 0xda, 0xa7, 0x7a, 0x88, 0xc6, 0xe1, 0x1e, 0x21, 0x1a, 0xff, 0x9e, 0x05, 0x23, + 0xb5, 0xa0, 0x79, 0x0a, 0xda, 0xf6, 0xcf, 0x9a, 0xda, 0xf6, 0xc7, 0x72, 0x96, 0x44, 0x8e, 0x82, + 0xfd, 0x97, 0x8b, 0x30, 0x41, 0xfb, 0x19, 0xb4, 0xe4, 0x2c, 0x19, 0x23, 0x62, 0x0d, 0x30, 0x22, + 0x94, 0xcd, 0x0d, 0x3c, 0x2f, 0xb8, 0x9f, 0x9e, 0xb1, 0x15, 0x56, 0x8a, 0x05, 0x14, 0x3d, 0x07, + 0xa3, 0xed, 0x90, 0xec, 0xb9, 0x81, 0xe0, 0x1f, 0xb5, 0xb7, 0x8b, 0x9a, 0x28, 0xc7, 0x0a, 0x83, + 0xca, 0x5d, 0x91, 0xeb, 0x37, 0x88, 0x4c, 0xf3, 0x5c, 0x62, 0x99, 0xa0, 0x78, 0xec, 0x65, 0xad, + 0x1c, 0x1b, 0x58, 0xe8, 0x2d, 0x28, 0xb3, 0xff, 0xec, 0x44, 0x39, 0x7e, 0xe6, 0x1a, 0x91, 0xf0, + 0x40, 0x10, 0xc0, 0x09, 0x2d, 0x74, 0x1d, 0x20, 0x96, 0xf1, 0x79, 0x23, 0x11, 0x56, 0x46, 0xf1, + 0xda, 0x2a, 0x72, 0x6f, 0x84, 0x35, 0x2c, 0xf4, 0x2c, 0x94, 0x63, 0xc7, 0xf5, 0x6e, 0xbb, 0x3e, + 0x89, 0x98, 0xca, 0xb9, 0x28, 0xf3, 0x19, 0x88, 0x42, 0x9c, 0xc0, 0x29, 0xaf, 0xc3, 0x7c, 0xae, + 0x79, 0xde, 0xab, 0x51, 0x86, 0xcd, 0x78, 0x9d, 0xdb, 0xaa, 0x14, 0x6b, 0x18, 0xf6, 0xab, 0x70, + 0xae, 0x16, 0x34, 0x6b, 0x41, 0x18, 0xaf, 0x04, 0xe1, 0x7d, 0x27, 0x6c, 0xca, 0xf9, 0xab, 0xc8, + 0xd0, 0xfa, 0xf4, 0xec, 0x19, 0xe2, 0x3b, 0xd3, 0x08, 0x9a, 0xff, 0x22, 0xe3, 0x76, 0x8e, 0xe9, + 0x6b, 0xd1, 0x60, 0xf7, 0xae, 0x4a, 0x71, 0x77, 0xc3, 0x89, 0x09, 0xba, 0xc3, 0xd2, 0x62, 0x25, + 0x57, 0x90, 0xa8, 0xfe, 0x8c, 0x96, 0x16, 0x2b, 0x01, 0x66, 0xde, 0x59, 0x66, 0x7d, 0xfb, 0xd7, + 0x8b, 0xec, 0x34, 0x4a, 0x65, 0x7c, 0x43, 0x5f, 0x82, 0xc9, 0x88, 0xdc, 0x76, 0xfd, 0xce, 0x03, + 0x29, 0x84, 0xf7, 0xf0, 0x96, 0xa9, 0x2f, 0xeb, 0x98, 0x5c, 0x95, 0x67, 0x96, 0xe1, 0x14, 0x35, + 0x3a, 0x4f, 0x61, 0xc7, 0x5f, 0x88, 0xee, 0x46, 0x24, 0x14, 0x19, 0xc7, 0xd8, 0x3c, 0x61, 0x59, + 0x88, 0x13, 0x38, 0x5d, 0x97, 0xec, 0xcf, 0x7a, 0xe0, 0xe3, 0x20, 0x88, 0xe5, 0x4a, 0x66, 0x39, + 0x6b, 0xb4, 0x72, 0x6c, 0x60, 0xa1, 0x15, 0x40, 0x51, 0xa7, 0xdd, 0xf6, 0xd8, 0x7b, 0xbb, 0xe3, + 0xdd, 0x08, 0x83, 0x4e, 0x9b, 0xbf, 0x75, 0x16, 0x17, 0xcf, 0xd3, 0x2b, 0xac, 0xde, 0x05, 0xc5, + 0x19, 0x35, 0xe8, 0xe9, 0xb3, 0x15, 0xb1, 0xdf, 0x6c, 0x75, 0x17, 0x85, 0x7a, 0xbd, 0xce, 0x8a, + 0xb0, 0x84, 0xd1, 0xc5, 0xc4, 0x9a, 0xe7, 0x98, 0xc3, 0xc9, 0x62, 0xc2, 0xaa, 0x14, 0x6b, 0x18, + 0x68, 0x19, 0x46, 0xa2, 0xfd, 0xa8, 0x11, 0x8b, 0x20, 0x48, 0x39, 0xb9, 0x23, 0xeb, 0x0c, 0x45, + 0xcb, 0x67, 0xc0, 0xab, 0x60, 0x59, 0xd7, 0xfe, 0x1e, 0x76, 0x19, 0xb2, 0xfc, 0x54, 0x71, 0x27, + 0x24, 0x68, 0x17, 0x26, 0xda, 0x6c, 0xca, 0x45, 0xf4, 0x64, 0x31, 0x6f, 0x2f, 0x0d, 0x28, 0xd5, + 0xde, 0xa7, 0x07, 0x8d, 0xd2, 0x3a, 0x31, 0x71, 0xa1, 0xa6, 0x93, 0xc3, 0x26, 0x75, 0xfb, 0x07, + 0x67, 0xd8, 0x99, 0x5b, 0xe7, 0xa2, 0xea, 0x88, 0xb0, 0xf8, 0x15, 0x7c, 0xf9, 0x5c, 0xbe, 0xce, + 0x24, 0xf9, 0x22, 0x61, 0x35, 0x8c, 0x65, 0x5d, 0xf4, 0x26, 0x7b, 0x9b, 0xe6, 0x07, 0x5d, 0xbf, + 0x34, 0xc1, 0x1c, 0xcb, 0x78, 0x86, 0x16, 0x15, 0xb1, 0x46, 0x04, 0xdd, 0x86, 0x09, 0x91, 0xce, + 0x48, 0x28, 0xc5, 0x8a, 0x86, 0xd2, 0x63, 0x02, 0xeb, 0xc0, 0xa3, 0x74, 0x01, 0x36, 0x2b, 0xa3, + 0x16, 0x5c, 0xd4, 0x72, 0xfb, 0xdd, 0x08, 0x1d, 0xf6, 0x5e, 0xe9, 0xb2, 0x4d, 0xa4, 0x9d, 0x9b, + 0x4f, 0x1e, 0x1e, 0x54, 0x2e, 0x6e, 0xf4, 0x42, 0xc4, 0xbd, 0xe9, 0xa0, 0x3b, 0x70, 0x8e, 0x3b, + 0xd6, 0x55, 0x89, 0xd3, 0xf4, 0x5c, 0x5f, 0x1d, 0xcc, 0x7c, 0x1d, 0x5e, 0x38, 0x3c, 0xa8, 0x9c, + 0x5b, 0xc8, 0x42, 0xc0, 0xd9, 0xf5, 0xd0, 0x67, 0xa1, 0xdc, 0xf4, 0x23, 0x31, 0x06, 0xc3, 0x46, + 0xda, 0xca, 0x72, 0x75, 0xbd, 0xae, 0xbe, 0x3f, 0xf9, 0x83, 0x93, 0x0a, 0xa8, 0xc5, 0x15, 0x63, + 0x4a, 0x0e, 0x1d, 0xc9, 0x4f, 0x51, 0x2e, 0x96, 0x84, 0xe1, 0x5a, 0xc3, 0x35, 0xc2, 0xca, 0x34, + 0xd5, 0xf0, 0xba, 0x31, 0x08, 0xa3, 0x37, 0x00, 0x51, 0x46, 0xcd, 0x6d, 0x90, 0x85, 0x06, 0x0b, + 0x62, 0xcd, 0xf4, 0x88, 0xa3, 0x86, 0x2b, 0x03, 0xaa, 0x77, 0x61, 0xe0, 0x8c, 0x5a, 0xe8, 0x26, + 0x3d, 0xc8, 0xf4, 0x52, 0x61, 0x62, 0x2b, 0x99, 0xfb, 0xd9, 0x2a, 0x69, 0x87, 0xa4, 0xe1, 0xc4, + 0xa4, 0x69, 0x52, 0xc4, 0xa9, 0x7a, 0xf4, 0x2e, 0x55, 0xf9, 0x6c, 0xc0, 0x8c, 0x54, 0xd1, 0x9d, + 0xd3, 0x86, 0xca, 0xc5, 0xdb, 0x41, 0x14, 0xaf, 0x93, 0xf8, 0x7e, 0x10, 0xee, 0x88, 0xc0, 0x60, + 0x49, 0x8c, 0xca, 0x04, 0x84, 0x75, 0x3c, 0xca, 0x07, 0xb3, 0xc7, 0xe1, 0xd5, 0x2a, 0x7b, 0xa1, + 0x1b, 0x4d, 0xf6, 0xc9, 0x4d, 0x5e, 0x8c, 0x25, 0x5c, 0xa2, 0xae, 0xd6, 0x96, 0xd8, 0x6b, 0x5b, + 0x0a, 0x75, 0xb5, 0xb6, 0x84, 0x25, 0x1c, 0x91, 0xee, 0x94, 0xa0, 0x93, 0xf9, 0x5a, 0xcd, 0xee, + 0xeb, 0x60, 0xc0, 0xac, 0xa0, 0x3e, 0x4c, 0xab, 0x64, 0xa4, 0x3c, 0x62, 0x5a, 0x34, 0x3b, 0xc5, + 0x16, 0xc9, 0xe0, 0xe1, 0xd6, 0x94, 0x9e, 0x78, 0x35, 0x45, 0x09, 0x77, 0xd1, 0x36, 0x62, 0x87, + 0x4c, 0xf7, 0xcd, 0x47, 0x74, 0x0d, 0xca, 0x51, 0x67, 0xb3, 0x19, 0xec, 0x3a, 0xae, 0xcf, 0x1e, + 0xc7, 0x34, 0x26, 0xab, 0x2e, 0x01, 0x38, 0xc1, 0x41, 0x2b, 0x30, 0xea, 0x48, 0x25, 0x30, 0xca, + 0x0f, 0x26, 0xa0, 0x54, 0xbf, 0xdc, 0xbf, 0x56, 0xaa, 0x7d, 0x55, 0x5d, 0xf4, 0x1a, 0x4c, 0x08, + 0x77, 0x2a, 0x1e, 0x62, 0x81, 0x3d, 0x5e, 0x69, 0xf6, 0xf2, 0x75, 0x1d, 0x88, 0x4d, 0x5c, 0xf4, + 0x45, 0x98, 0xa4, 0x54, 0x92, 0x83, 0x6d, 0xf6, 0xec, 0x20, 0x27, 0xa2, 0x96, 0x67, 0x42, 0xaf, + 0x8c, 0x53, 0xc4, 0x50, 0x13, 0x9e, 0x70, 0x3a, 0x71, 0xc0, 0x14, 0xe9, 0xe6, 0xfa, 0xdf, 0x08, + 0x76, 0x88, 0xcf, 0xde, 0xb0, 0x46, 0x17, 0x2f, 0x1f, 0x1e, 0x54, 0x9e, 0x58, 0xe8, 0x81, 0x87, + 0x7b, 0x52, 0x41, 0x77, 0x61, 0x2c, 0x0e, 0x3c, 0x66, 0xb9, 0x4e, 0x59, 0x89, 0xf3, 0xf9, 0xb1, + 0x77, 0x36, 0x14, 0x9a, 0xae, 0x44, 0x52, 0x55, 0xb1, 0x4e, 0x07, 0x6d, 0xf0, 0x3d, 0xc6, 0xa2, + 0x92, 0x92, 0x68, 0xf6, 0xb1, 0xfc, 0x81, 0x51, 0xc1, 0x4b, 0xcd, 0x2d, 0x28, 0x6a, 0x62, 0x9d, + 0x0c, 0xba, 0x01, 0x33, 0xed, 0xd0, 0x0d, 0xd8, 0xc2, 0x56, 0x8f, 0x18, 0xb3, 0x66, 0x6a, 0x81, + 0x5a, 0x1a, 0x01, 0x77, 0xd7, 0xa1, 0x42, 0xa6, 0x2c, 0x9c, 0xbd, 0xc0, 0xf3, 0x54, 0x71, 0xc6, + 0x9b, 0x97, 0x61, 0x05, 0x45, 0x6b, 0xec, 0x5c, 0xe6, 0xe2, 0xe0, 0xec, 0x5c, 0x7e, 0x10, 0x06, + 0x5d, 0x6c, 0xe4, 0xfc, 0x92, 0xfa, 0x8b, 0x13, 0x0a, 0xf4, 0xde, 0x88, 0xb6, 0x9d, 0x90, 0xd4, + 0xc2, 0xa0, 0x41, 0x78, 0x67, 0xb8, 0xd1, 0xfc, 0xe3, 0x3c, 0x78, 0x22, 0xbd, 0x37, 0xea, 0x59, + 0x08, 0x38, 0xbb, 0x1e, 0x6a, 0x6a, 0xe9, 0x99, 0x29, 0x1b, 0x1a, 0xcd, 0x3e, 0xd1, 0xc3, 0xcc, + 0x28, 0xc5, 0xb3, 0x26, 0x6b, 0xd1, 0x28, 0x8e, 0x70, 0x8a, 0xe6, 0xdc, 0xb7, 0xc3, 0x4c, 0xd7, + 0x7d, 0x71, 0xac, 0xb8, 0xdd, 0x7f, 0x32, 0x04, 0x65, 0xa5, 0x0a, 0x47, 0xd7, 0xcc, 0x17, 0x8e, + 0x0b, 0xe9, 0x17, 0x8e, 0x51, 0xca, 0x91, 0xeb, 0x8f, 0x1a, 0x1b, 0x86, 0x51, 0x5c, 0x21, 0x3f, + 0x4b, 0x96, 0xce, 0x53, 0xf7, 0xf5, 0x80, 0xd3, 0x34, 0x1b, 0xc5, 0x81, 0x9f, 0x4a, 0x4a, 0x3d, + 0x95, 0x25, 0x03, 0x26, 0xa9, 0xa5, 0xc2, 0x7f, 0x3b, 0x68, 0xae, 0xd6, 0xd2, 0x59, 0x1b, 0x6b, + 0xb4, 0x10, 0x73, 0x18, 0x13, 0xdf, 0x28, 0x73, 0xc3, 0xc4, 0xb7, 0x91, 0x87, 0x14, 0xdf, 0x24, + 0x01, 0x9c, 0xd0, 0x42, 0x1e, 0xcc, 0x34, 0xcc, 0x84, 0x9b, 0xca, 0xeb, 0xed, 0xa9, 0xbe, 0xa9, + 0x2f, 0x3b, 0x5a, 0x76, 0xb3, 0xa5, 0x34, 0x15, 0xdc, 0x4d, 0x18, 0xbd, 0x06, 0xa3, 0xef, 0x05, + 0x11, 0xdb, 0x7c, 0xe2, 0x86, 0x97, 0xde, 0x41, 0xa3, 0x6f, 0xde, 0xa9, 0xb3, 0xf2, 0xa3, 0x83, + 0xca, 0x58, 0x2d, 0x68, 0xca, 0xbf, 0x58, 0x55, 0x40, 0x0f, 0xe0, 0x9c, 0x71, 0x2e, 0xaa, 0xee, + 0xc2, 0xe0, 0xdd, 0xbd, 0x28, 0x9a, 0x3b, 0xb7, 0x9a, 0x45, 0x09, 0x67, 0x37, 0x40, 0x0f, 0x1b, + 0x3f, 0x10, 0xc9, 0x6a, 0x25, 0x17, 0xc1, 0x98, 0x85, 0xb2, 0xee, 0x1b, 0x9e, 0x42, 0xc0, 0xdd, + 0x75, 0xec, 0xaf, 0xf1, 0x97, 0x03, 0xa1, 0x5f, 0x24, 0x51, 0xc7, 0x3b, 0x8d, 0x5c, 0x48, 0xcb, + 0x86, 0xea, 0xf3, 0xa1, 0x5f, 0xa7, 0x7e, 0xd3, 0x62, 0xaf, 0x53, 0x1b, 0x64, 0xb7, 0xed, 0x51, + 0x29, 0xf7, 0xd1, 0x77, 0xfc, 0x4d, 0x18, 0x8d, 0x45, 0x6b, 0xbd, 0xd2, 0x37, 0x69, 0x9d, 0x62, + 0x2f, 0x74, 0x8a, 0xbf, 0x90, 0xa5, 0x58, 0x91, 0xb1, 0xff, 0x29, 0x9f, 0x01, 0x09, 0x39, 0x05, + 0x35, 0x54, 0xd5, 0x54, 0x43, 0x55, 0xfa, 0x7c, 0x41, 0x8e, 0x3a, 0xea, 0x9f, 0x98, 0xfd, 0x66, + 0xa2, 0xdc, 0x47, 0xfd, 0x59, 0xd4, 0xfe, 0x31, 0x0b, 0xce, 0x66, 0xd9, 0x11, 0x51, 0x9e, 0x90, + 0x0b, 0x92, 0xea, 0x99, 0x58, 0x8d, 0xe0, 0x3d, 0x51, 0x8e, 0x15, 0xc6, 0xc0, 0x99, 0x11, 0x8e, + 0x17, 0x3e, 0xed, 0x0e, 0x4c, 0xd4, 0x42, 0xa2, 0xdd, 0x01, 0xaf, 0x73, 0x37, 0x33, 0xde, 0x9f, + 0xe7, 0x8e, 0xed, 0x62, 0x66, 0xff, 0x7c, 0x01, 0xce, 0xf2, 0x77, 0x9e, 0x85, 0xbd, 0xc0, 0x6d, + 0xd6, 0x82, 0xa6, 0xc8, 0x6a, 0xf1, 0x36, 0x8c, 0xb7, 0x35, 0xe9, 0xbf, 0x57, 0x00, 0x27, 0x5d, + 0x4b, 0x90, 0x48, 0x61, 0x7a, 0x29, 0x36, 0x68, 0xa1, 0x26, 0x8c, 0x93, 0x3d, 0xb7, 0xa1, 0x1e, + 0x0b, 0x0a, 0xc7, 0xbe, 0x1b, 0x54, 0x2b, 0xcb, 0x1a, 0x1d, 0x6c, 0x50, 0x7d, 0x04, 0x89, 0xce, + 0xec, 0x1f, 0xb7, 0xe0, 0xb1, 0x9c, 0x70, 0x4f, 0xb4, 0xb9, 0xfb, 0xec, 0x45, 0x4d, 0xe4, 0x4c, + 0x52, 0xcd, 0xf1, 0x77, 0x36, 0x2c, 0xa0, 0xe8, 0xf3, 0x00, 0xfc, 0x9d, 0x8c, 0x0a, 0x25, 0xfd, + 0xe2, 0xe2, 0x18, 0x21, 0x3d, 0xb4, 0x50, 0x0c, 0xb2, 0x3e, 0xd6, 0x68, 0xd9, 0x3f, 0x53, 0x84, + 0x21, 0xf6, 0x2e, 0x83, 0x56, 0x60, 0x64, 0x9b, 0x07, 0x37, 0x1e, 0x24, 0x8e, 0x72, 0x22, 0xdd, + 0xf1, 0x02, 0x2c, 0x2b, 0xa3, 0x35, 0x38, 0xc3, 0x83, 0x43, 0x7b, 0x55, 0xe2, 0x39, 0xfb, 0x52, + 0x49, 0xc0, 0xf3, 0x0c, 0xa9, 0xb0, 0x12, 0xab, 0xdd, 0x28, 0x38, 0xab, 0x1e, 0x7a, 0x1d, 0x26, + 0x63, 0x77, 0x97, 0x04, 0x9d, 0x58, 0x52, 0xe2, 0x61, 0xa1, 0x15, 0x1b, 0xb7, 0x61, 0x40, 0x71, + 0x0a, 0x9b, 0x8a, 0x3b, 0xed, 0x2e, 0x75, 0x88, 0x96, 0xb9, 0xdf, 0x54, 0x81, 0x98, 0xb8, 0xcc, + 0x80, 0xa8, 0xc3, 0xcc, 0xa5, 0x36, 0xb6, 0x43, 0x12, 0x6d, 0x07, 0x5e, 0x53, 0xa4, 0xa9, 0x4e, + 0x0c, 0x88, 0x52, 0x70, 0xdc, 0x55, 0x83, 0x52, 0xd9, 0x72, 0x5c, 0xaf, 0x13, 0x92, 0x84, 0xca, + 0xb0, 0x49, 0x65, 0x25, 0x05, 0xc7, 0x5d, 0x35, 0xe8, 0x3a, 0x3a, 0x27, 0xf2, 0x46, 0x4b, 0x67, + 0x77, 0x65, 0x15, 0x36, 0x22, 0xdd, 0x7e, 0x7a, 0x44, 0x7b, 0x11, 0x76, 0x33, 0x2a, 0xf3, 0xb4, + 0xa6, 0xc5, 0x13, 0x0e, 0x3f, 0x92, 0xca, 0xc3, 0x64, 0x2f, 0xfe, 0x3d, 0x0b, 0xce, 0x64, 0x58, + 0x9f, 0xf2, 0xa3, 0xaa, 0xe5, 0x46, 0xb1, 0xca, 0xa5, 0xa2, 0x1d, 0x55, 0xbc, 0x1c, 0x2b, 0x0c, + 0xba, 0x1f, 0xf8, 0x61, 0x98, 0x3e, 0x00, 0x85, 0x75, 0x97, 0x80, 0x1e, 0xef, 0x00, 0x44, 0x97, + 0xa1, 0xd4, 0x89, 0x88, 0x8c, 0xd3, 0xa4, 0xce, 0x6f, 0xa6, 0xd7, 0x65, 0x10, 0xca, 0x9a, 0xb6, + 0x94, 0x4a, 0x55, 0x63, 0x4d, 0xb9, 0x9e, 0x94, 0xc3, 0xec, 0xaf, 0x16, 0xe1, 0x42, 0xae, 0x9d, + 0x39, 0xed, 0xd2, 0x6e, 0xe0, 0xbb, 0x71, 0xa0, 0xde, 0xfc, 0x78, 0xa4, 0x10, 0xd2, 0xde, 0x5e, + 0x13, 0xe5, 0x58, 0x61, 0xa0, 0x2b, 0x32, 0x83, 0x79, 0x3a, 0x5b, 0xcc, 0x62, 0xd5, 0x48, 0x62, + 0x3e, 0x68, 0x26, 0xae, 0xa7, 0xa0, 0xd4, 0x0e, 0x02, 0x2f, 0x7d, 0x18, 0xd1, 0xee, 0x06, 0x81, + 0x87, 0x19, 0x10, 0x7d, 0x42, 0x8c, 0x43, 0xea, 0x91, 0x0b, 0x3b, 0xcd, 0x20, 0xd2, 0x06, 0xe3, + 0x19, 0x18, 0xd9, 0x21, 0xfb, 0xa1, 0xeb, 0xb7, 0xd2, 0x8f, 0x9f, 0xb7, 0x78, 0x31, 0x96, 0x70, + 0x33, 0x59, 0xc2, 0xc8, 0x49, 0xa7, 0xd0, 0x1a, 0xed, 0x7b, 0xb5, 0xfd, 0x50, 0x11, 0xa6, 0xf0, + 0x62, 0xf5, 0x5b, 0x13, 0x71, 0xb7, 0x7b, 0x22, 0x4e, 0x3a, 0x85, 0x56, 0xff, 0xd9, 0xf8, 0x65, + 0x0b, 0xa6, 0x58, 0x40, 0x61, 0x11, 0x9f, 0xc2, 0x0d, 0xfc, 0x53, 0x60, 0xdd, 0x9e, 0x82, 0xa1, + 0x90, 0x36, 0x9a, 0xce, 0x8b, 0xc3, 0x7a, 0x82, 0x39, 0x0c, 0x3d, 0x01, 0x25, 0xd6, 0x05, 0x3a, + 0x79, 0xe3, 0x3c, 0xa5, 0x40, 0xd5, 0x89, 0x1d, 0xcc, 0x4a, 0x99, 0xd3, 0x35, 0x26, 0x6d, 0xcf, + 0xe5, 0x9d, 0x4e, 0x1e, 0x14, 0x3e, 0x1a, 0x4e, 0xd7, 0x99, 0x5d, 0xfb, 0x60, 0x4e, 0xd7, 0xd9, + 0x24, 0x7b, 0x8b, 0x45, 0xff, 0xbd, 0x00, 0x97, 0x32, 0xeb, 0x0d, 0xec, 0x74, 0xdd, 0xbb, 0xf6, + 0xc9, 0xd8, 0xb0, 0x64, 0x9b, 0x96, 0x14, 0x4f, 0xd1, 0xb4, 0xa4, 0x34, 0x28, 0xe7, 0x38, 0x34, + 0x80, 0x2f, 0x74, 0xe6, 0x90, 0x7d, 0x44, 0x7c, 0xa1, 0x33, 0xfb, 0x96, 0x23, 0xd6, 0xfd, 0x59, + 0x21, 0xe7, 0x5b, 0x98, 0x80, 0x77, 0x95, 0x9e, 0x33, 0x0c, 0x18, 0x09, 0x4e, 0x78, 0x9c, 0x9f, + 0x31, 0xbc, 0x0c, 0x2b, 0x28, 0x72, 0x35, 0xaf, 0xe2, 0x42, 0x7e, 0xd6, 0xc4, 0xdc, 0xa6, 0xe6, + 0xcd, 0xf7, 0x1f, 0x35, 0x04, 0x19, 0x1e, 0xc6, 0x6b, 0x9a, 0x50, 0x5e, 0x1c, 0x5c, 0x28, 0x1f, + 0xcf, 0x16, 0xc8, 0xd1, 0x02, 0x4c, 0xed, 0xba, 0x3e, 0xcb, 0x82, 0x6f, 0xb2, 0xa2, 0x2a, 0xc8, + 0xc6, 0x9a, 0x09, 0xc6, 0x69, 0xfc, 0xb9, 0xd7, 0x60, 0xe2, 0xe1, 0xd5, 0x91, 0xdf, 0x2c, 0xc2, + 0xe3, 0x3d, 0xb6, 0x3d, 0x3f, 0xeb, 0x8d, 0x39, 0xd0, 0xce, 0xfa, 0xae, 0x79, 0xa8, 0xc1, 0xd9, + 0xad, 0x8e, 0xe7, 0xed, 0x33, 0xeb, 0x4d, 0xd2, 0x94, 0x18, 0x82, 0x57, 0x7c, 0x42, 0x26, 0x71, + 0x58, 0xc9, 0xc0, 0xc1, 0x99, 0x35, 0xd1, 0x1b, 0x80, 0x02, 0x91, 0xb2, 0xf5, 0x06, 0xf1, 0x85, + 0x56, 0x9d, 0x0d, 0x7c, 0x31, 0xd9, 0x8c, 0x77, 0xba, 0x30, 0x70, 0x46, 0x2d, 0xca, 0xf4, 0xd3, + 0x5b, 0x69, 0x5f, 0x75, 0x2b, 0xc5, 0xf4, 0x63, 0x1d, 0x88, 0x4d, 0x5c, 0x74, 0x03, 0x66, 0x9c, + 0x3d, 0xc7, 0xe5, 0xc1, 0xe7, 0x24, 0x01, 0xce, 0xf5, 0x2b, 0x25, 0xd8, 0x42, 0x1a, 0x01, 0x77, + 0xd7, 0x49, 0xb9, 0x35, 0x0f, 0xe7, 0xbb, 0x35, 0xf7, 0x3e, 0x17, 0xfb, 0xe9, 0x74, 0xed, 0xff, + 0x68, 0xd1, 0xeb, 0x2b, 0x23, 0xed, 0x3a, 0x1d, 0x07, 0xa5, 0x9b, 0xd4, 0x3c, 0x8c, 0xcf, 0x69, + 0xf6, 0x19, 0x09, 0x10, 0x9b, 0xb8, 0x7c, 0x41, 0x44, 0x89, 0x8b, 0x8b, 0xc1, 0xba, 0x8b, 0x10, + 0x02, 0x0a, 0x03, 0x7d, 0x01, 0x46, 0x9a, 0xee, 0x9e, 0x1b, 0x05, 0xa1, 0xd8, 0x2c, 0xc7, 0x74, + 0x14, 0x48, 0xce, 0xc1, 0x2a, 0x27, 0x83, 0x25, 0x3d, 0xfb, 0x87, 0x0a, 0x30, 0x21, 0x5b, 0x7c, + 0xb3, 0x13, 0xc4, 0xce, 0x29, 0x5c, 0xcb, 0x37, 0x8c, 0x6b, 0xf9, 0x13, 0xbd, 0xe2, 0x28, 0xb0, + 0x2e, 0xe5, 0x5e, 0xc7, 0x77, 0x52, 0xd7, 0xf1, 0xd3, 0xfd, 0x49, 0xf5, 0xbe, 0x86, 0xff, 0x99, + 0x05, 0x33, 0x06, 0xfe, 0x29, 0xdc, 0x06, 0x2b, 0xe6, 0x6d, 0xf0, 0x64, 0xdf, 0x6f, 0xc8, 0xb9, + 0x05, 0xbe, 0xaf, 0x98, 0xea, 0x3b, 0x3b, 0xfd, 0xdf, 0x83, 0xd2, 0xb6, 0x13, 0x36, 0x7b, 0xc5, + 0x6b, 0xed, 0xaa, 0x34, 0x7f, 0xd3, 0x09, 0x9b, 0xfc, 0x0c, 0x7f, 0x4e, 0x25, 0x7a, 0x74, 0xc2, + 0x66, 0x5f, 0x8f, 0x2e, 0xd6, 0x14, 0x7a, 0x15, 0x86, 0xa3, 0x46, 0xd0, 0x56, 0xf6, 0x96, 0x97, + 0x79, 0x12, 0x48, 0x5a, 0x72, 0x74, 0x50, 0x41, 0x66, 0x73, 0xb4, 0x18, 0x0b, 0x7c, 0xf4, 0x36, + 0x4c, 0xb0, 0x5f, 0xca, 0xee, 0xa0, 0x98, 0x9f, 0x25, 0xa0, 0xae, 0x23, 0x72, 0xf3, 0x15, 0xa3, + 0x08, 0x9b, 0xa4, 0xe6, 0x5a, 0x50, 0x56, 0x9f, 0xf5, 0x48, 0x3d, 0x71, 0xfe, 0x5d, 0x11, 0xce, + 0x64, 0xac, 0x39, 0x14, 0x19, 0x33, 0xf1, 0xc2, 0x80, 0x4b, 0xf5, 0x03, 0xce, 0x45, 0xc4, 0xa4, + 0xa1, 0xa6, 0x58, 0x5b, 0x03, 0x37, 0x7a, 0x37, 0x22, 0xe9, 0x46, 0x69, 0x51, 0xff, 0x46, 0x69, + 0x63, 0xa7, 0x36, 0xd4, 0xb4, 0x21, 0xd5, 0xd3, 0x47, 0x3a, 0xa7, 0x7f, 0x5c, 0x84, 0xb3, 0x59, + 0xa1, 0x5d, 0xd0, 0x77, 0xa7, 0xb2, 0xc1, 0xbc, 0x34, 0x68, 0x50, 0x18, 0x9e, 0x22, 0x46, 0xe4, + 0x36, 0x9e, 0x37, 0xf3, 0xc3, 0xf4, 0x1d, 0x66, 0xd1, 0x26, 0x73, 0xdf, 0x0c, 0x79, 0x16, 0x1f, + 0x79, 0x7c, 0x7c, 0x7a, 0xe0, 0x0e, 0x88, 0xf4, 0x3f, 0x51, 0xca, 0x7d, 0x53, 0x16, 0xf7, 0x77, + 0xdf, 0x94, 0x2d, 0xcf, 0xb9, 0x30, 0xa6, 0x7d, 0xcd, 0x23, 0x9d, 0xf1, 0x1d, 0x7a, 0x5b, 0x69, + 0xfd, 0x7e, 0xa4, 0xb3, 0xfe, 0xe3, 0x16, 0xa4, 0x8c, 0x1b, 0x95, 0xba, 0xcb, 0xca, 0x55, 0x77, + 0x5d, 0x86, 0x52, 0x18, 0x78, 0x24, 0x9d, 0xa0, 0x05, 0x07, 0x1e, 0xc1, 0x0c, 0x42, 0x31, 0xe2, + 0x44, 0xd9, 0x31, 0xae, 0x0b, 0x72, 0x42, 0x44, 0x7b, 0x0a, 0x86, 0x3c, 0xb2, 0x47, 0xbc, 0x74, + 0xf4, 0xf3, 0xdb, 0xb4, 0x10, 0x73, 0x98, 0xfd, 0xcb, 0x25, 0xb8, 0xd8, 0xd3, 0x01, 0x9a, 0x8a, + 0x43, 0x2d, 0x27, 0x26, 0xf7, 0x9d, 0xfd, 0x74, 0x98, 0xe2, 0x1b, 0xbc, 0x18, 0x4b, 0x38, 0xb3, + 0xf7, 0xe6, 0x61, 0x09, 0x53, 0xca, 0x41, 0x11, 0x8d, 0x50, 0x40, 0x1f, 0x41, 0x5e, 0xf7, 0xeb, + 0x00, 0x51, 0xe4, 0x2d, 0xfb, 0x94, 0xbb, 0x6b, 0x0a, 0x43, 0xf2, 0x24, 0x7c, 0x65, 0xfd, 0xb6, + 0x80, 0x60, 0x0d, 0x0b, 0x55, 0x61, 0xba, 0x1d, 0x06, 0x31, 0xd7, 0xb5, 0x56, 0xb9, 0x99, 0xcf, + 0x90, 0xe9, 0x7b, 0x5a, 0x4b, 0xc1, 0x71, 0x57, 0x0d, 0xf4, 0x32, 0x8c, 0x09, 0x7f, 0xd4, 0x5a, + 0x10, 0x78, 0x42, 0x0d, 0xa4, 0x8c, 0x46, 0xea, 0x09, 0x08, 0xeb, 0x78, 0x5a, 0x35, 0xa6, 0xc0, + 0x1d, 0xc9, 0xac, 0xc6, 0x95, 0xb8, 0x1a, 0x5e, 0x2a, 0xcc, 0xd3, 0xe8, 0x40, 0x61, 0x9e, 0x12, + 0xc5, 0x58, 0x79, 0xe0, 0x37, 0x2b, 0xe8, 0xab, 0x4a, 0xfa, 0x85, 0x12, 0x9c, 0x11, 0x0b, 0xe7, + 0x51, 0x2f, 0x97, 0x47, 0x94, 0x7d, 0xfe, 0x5b, 0x6b, 0xe6, 0xb4, 0xd7, 0xcc, 0x0f, 0x5b, 0x60, + 0xb2, 0x57, 0xe8, 0xff, 0xcb, 0x8d, 0xf3, 0xfe, 0x72, 0x2e, 0xbb, 0xd6, 0x94, 0x17, 0xc8, 0x07, + 0x8c, 0xf8, 0x6e, 0xff, 0x07, 0x0b, 0x9e, 0xec, 0x4b, 0x11, 0x2d, 0x43, 0x99, 0xf1, 0x80, 0x9a, + 0x74, 0xf6, 0xb4, 0x32, 0x03, 0x94, 0x80, 0x1c, 0x96, 0x34, 0xa9, 0x89, 0x96, 0xbb, 0x02, 0xea, + 0x3f, 0x93, 0x11, 0x50, 0xff, 0x9c, 0x31, 0x3c, 0x0f, 0x19, 0x51, 0xff, 0x6b, 0x45, 0x18, 0xe6, + 0x2b, 0xfe, 0x14, 0xc4, 0xb0, 0x15, 0xa1, 0xb7, 0xed, 0x11, 0x47, 0x8a, 0xf7, 0x65, 0xbe, 0xea, + 0xc4, 0x0e, 0x67, 0x13, 0xd4, 0x6d, 0x95, 0x68, 0x78, 0xd1, 0xbc, 0x71, 0x9f, 0xcd, 0xa5, 0x14, + 0x93, 0xc0, 0x69, 0x68, 0xb7, 0xdb, 0x97, 0x00, 0x22, 0x96, 0x68, 0x9e, 0xd2, 0x10, 0x11, 0xc9, + 0x3e, 0xd9, 0xa3, 0xf5, 0xba, 0x42, 0xe6, 0x7d, 0x48, 0x76, 0xba, 0x02, 0x60, 0x8d, 0xe2, 0xdc, + 0x2b, 0x50, 0x56, 0xc8, 0xfd, 0xb4, 0x38, 0xe3, 0x3a, 0x73, 0xf1, 0x39, 0x98, 0x4a, 0xb5, 0x75, + 0x2c, 0x25, 0xd0, 0xaf, 0x58, 0x30, 0xc5, 0xbb, 0xbc, 0xec, 0xef, 0x89, 0x33, 0xf5, 0x7d, 0x38, + 0xeb, 0x65, 0x9c, 0x6d, 0x62, 0x46, 0x07, 0x3f, 0x0b, 0x95, 0xd2, 0x27, 0x0b, 0x8a, 0x33, 0xdb, + 0x40, 0x57, 0xe9, 0xba, 0xa5, 0x67, 0x97, 0xe3, 0x09, 0xdf, 0xa1, 0x71, 0xbe, 0x66, 0x79, 0x19, + 0x56, 0x50, 0xfb, 0x77, 0x2c, 0x98, 0xe1, 0x3d, 0xbf, 0x45, 0xf6, 0xd5, 0x0e, 0xff, 0x30, 0xfb, + 0x2e, 0x72, 0x5c, 0x14, 0x72, 0x72, 0x5c, 0xe8, 0x9f, 0x56, 0xec, 0xf9, 0x69, 0x3f, 0x6f, 0x81, + 0x58, 0x81, 0xa7, 0x20, 0xca, 0x7f, 0xbb, 0x29, 0xca, 0xcf, 0xe5, 0x2f, 0xea, 0x1c, 0x19, 0xfe, + 0x4f, 0x2d, 0x98, 0xe6, 0x08, 0xc9, 0x5b, 0xf2, 0x87, 0x3a, 0x0f, 0x83, 0x24, 0xab, 0x53, 0xd9, + 0xa9, 0xb3, 0x3f, 0xca, 0x98, 0xac, 0x52, 0xcf, 0xc9, 0x6a, 0xca, 0x0d, 0x74, 0x8c, 0x24, 0x8c, + 0xc7, 0x8e, 0x15, 0x6d, 0xff, 0x91, 0x05, 0x88, 0x37, 0x63, 0xb0, 0x3f, 0x94, 0xa9, 0x60, 0xa5, + 0xda, 0x75, 0x91, 0x1c, 0x35, 0x0a, 0x82, 0x35, 0xac, 0x13, 0x19, 0x9e, 0x94, 0x41, 0x40, 0xb1, + 0xbf, 0x41, 0xc0, 0x31, 0x46, 0xf4, 0x6b, 0x25, 0x48, 0x1b, 0xf3, 0xa3, 0x7b, 0x30, 0xde, 0x70, + 0xda, 0xce, 0xa6, 0xeb, 0xb9, 0xb1, 0x4b, 0xa2, 0x5e, 0x96, 0x44, 0x4b, 0x1a, 0x9e, 0x78, 0xea, + 0xd5, 0x4a, 0xb0, 0x41, 0x07, 0xcd, 0x03, 0xb4, 0x43, 0x77, 0xcf, 0xf5, 0x48, 0x8b, 0x69, 0x1c, + 0x98, 0xb7, 0x22, 0x37, 0x8f, 0x91, 0xa5, 0x58, 0xc3, 0xc8, 0x70, 0x3c, 0x2b, 0x3e, 0x3a, 0xc7, + 0xb3, 0xd2, 0x31, 0x1d, 0xcf, 0x86, 0x06, 0x72, 0x3c, 0xc3, 0x70, 0x5e, 0xb2, 0x48, 0xf4, 0xff, + 0x8a, 0xeb, 0x11, 0xc1, 0x17, 0x73, 0x1f, 0xc6, 0xb9, 0xc3, 0x83, 0xca, 0x79, 0x9c, 0x89, 0x81, + 0x73, 0x6a, 0xa2, 0xcf, 0xc3, 0xac, 0xe3, 0x79, 0xc1, 0x7d, 0x35, 0x6a, 0xcb, 0x51, 0xc3, 0xf1, + 0xb8, 0xc6, 0x7e, 0x84, 0x51, 0x7d, 0xe2, 0xf0, 0xa0, 0x32, 0xbb, 0x90, 0x83, 0x83, 0x73, 0x6b, + 0xa7, 0xfc, 0xd6, 0x46, 0xfb, 0xf9, 0xad, 0xd9, 0x3b, 0x70, 0xa6, 0x4e, 0x42, 0x97, 0xa5, 0x88, + 0x6c, 0x26, 0x5b, 0x72, 0x03, 0xca, 0x61, 0xea, 0x10, 0x1a, 0x28, 0xb0, 0x91, 0x16, 0x06, 0x57, + 0x1e, 0x3a, 0x09, 0x21, 0xfb, 0x4f, 0x2c, 0x18, 0x11, 0x0e, 0x05, 0xa7, 0xc0, 0xfb, 0x2c, 0x18, + 0x2a, 0xe8, 0x4a, 0xf6, 0x41, 0xcd, 0x3a, 0x93, 0xab, 0x7c, 0x5e, 0x4d, 0x29, 0x9f, 0x9f, 0xec, + 0x45, 0xa4, 0xb7, 0xda, 0xf9, 0x6f, 0x15, 0x61, 0xd2, 0x74, 0xa6, 0x38, 0x85, 0x21, 0x58, 0x87, + 0x91, 0x48, 0x78, 0xee, 0x14, 0xf2, 0x6d, 0x9f, 0xd3, 0x93, 0x98, 0x18, 0x36, 0x09, 0x5f, 0x1d, + 0x49, 0x24, 0xd3, 0x25, 0xa8, 0xf8, 0x08, 0x5d, 0x82, 0xfa, 0xf9, 0xb3, 0x94, 0x4e, 0xc2, 0x9f, + 0xc5, 0xfe, 0x3a, 0xbb, 0x2c, 0xf4, 0xf2, 0x53, 0xe0, 0x23, 0x6e, 0x98, 0xd7, 0x8a, 0xdd, 0x63, + 0x65, 0x89, 0x4e, 0xe5, 0xf0, 0x13, 0xbf, 0x64, 0xc1, 0xc5, 0x8c, 0xaf, 0xd2, 0x98, 0x8b, 0xe7, + 0x60, 0xd4, 0xe9, 0x34, 0x5d, 0xb5, 0x97, 0xb5, 0x87, 0xa8, 0x05, 0x51, 0x8e, 0x15, 0x06, 0x5a, + 0x82, 0x19, 0xf2, 0xa0, 0xed, 0xf2, 0x97, 0x40, 0xdd, 0xfa, 0xb0, 0xc8, 0x43, 0xbc, 0x2e, 0xa7, + 0x81, 0xb8, 0x1b, 0x5f, 0xb9, 0x43, 0x17, 0x73, 0xdd, 0xa1, 0xff, 0xa1, 0x05, 0x63, 0xa2, 0xdb, + 0xa7, 0x30, 0xda, 0xdf, 0x61, 0x8e, 0xf6, 0xe3, 0x3d, 0x46, 0x3b, 0x67, 0x98, 0xff, 0x4e, 0x41, + 0xf5, 0xb7, 0x16, 0x84, 0xf1, 0x00, 0x4c, 0xcb, 0xab, 0x30, 0xda, 0x0e, 0x83, 0x38, 0x68, 0x04, + 0x9e, 0xe0, 0x59, 0x9e, 0x48, 0xbc, 0xf5, 0x79, 0xf9, 0x91, 0xf6, 0x1b, 0x2b, 0x6c, 0x36, 0x7a, + 0x41, 0x18, 0x0b, 0x3e, 0x21, 0x19, 0xbd, 0x20, 0x8c, 0x31, 0x83, 0xa0, 0x26, 0x40, 0xec, 0x84, + 0x2d, 0x12, 0xd3, 0x32, 0x11, 0xf8, 0x23, 0xff, 0xf0, 0xe8, 0xc4, 0xae, 0x37, 0xef, 0xfa, 0x71, + 0x14, 0x87, 0xf3, 0xab, 0x7e, 0x7c, 0x27, 0xe4, 0x22, 0x90, 0xe6, 0x7e, 0xaf, 0x68, 0x61, 0x8d, + 0xae, 0xf4, 0x91, 0x64, 0x6d, 0x0c, 0x99, 0x4f, 0xda, 0xeb, 0xa2, 0x1c, 0x2b, 0x0c, 0xfb, 0x15, + 0x76, 0x95, 0xb0, 0x01, 0x3a, 0x9e, 0x67, 0xfc, 0x37, 0x46, 0xd5, 0xd0, 0xb2, 0xf7, 0xac, 0xaa, + 0xee, 0x7f, 0xdf, 0xfb, 0xe4, 0xa6, 0x0d, 0xeb, 0x9e, 0x30, 0x89, 0x93, 0x3e, 0xfa, 0xce, 0x2e, + 0x4b, 0x87, 0xe7, 0xfb, 0x5c, 0x01, 0xc7, 0xb0, 0x6d, 0x60, 0x61, 0xa7, 0x59, 0x78, 0xde, 0xd5, + 0x9a, 0x58, 0xe4, 0x5a, 0xd8, 0x69, 0x01, 0xc0, 0x09, 0x0e, 0xba, 0x26, 0x04, 0xe8, 0x92, 0x91, + 0x1d, 0x4e, 0x0a, 0xd0, 0xf2, 0xf3, 0x35, 0x09, 0xfa, 0x05, 0x18, 0x53, 0x59, 0xe2, 0x6a, 0x3c, + 0xd9, 0x96, 0x08, 0x83, 0xb2, 0x9c, 0x14, 0x63, 0x1d, 0x07, 0x6d, 0xc0, 0x54, 0xc4, 0xb5, 0x27, + 0x2a, 0xda, 0x1d, 0xd7, 0x42, 0x7d, 0x52, 0x5a, 0x48, 0xd4, 0x4d, 0xf0, 0x11, 0x2b, 0xe2, 0x47, + 0x87, 0x74, 0x74, 0x4c, 0x93, 0x40, 0xaf, 0xc3, 0xa4, 0xa7, 0xe7, 0x5a, 0xaf, 0x09, 0x25, 0x95, + 0x32, 0x20, 0x36, 0x32, 0xb1, 0xd7, 0x70, 0x0a, 0x9b, 0xf2, 0x3a, 0x7a, 0x89, 0x88, 0xd0, 0xe8, + 0xf8, 0x2d, 0x12, 0x89, 0x1c, 0x57, 0x8c, 0xd7, 0xb9, 0x9d, 0x83, 0x83, 0x73, 0x6b, 0xa3, 0x57, + 0x61, 0x5c, 0x7e, 0xbe, 0xe6, 0xc6, 0x9b, 0x98, 0xa9, 0x6b, 0x30, 0x6c, 0x60, 0xa2, 0xfb, 0x70, + 0x4e, 0xfe, 0xdf, 0x08, 0x9d, 0xad, 0x2d, 0xb7, 0x21, 0xbc, 0xa8, 0xb9, 0xaf, 0xce, 0x82, 0x74, + 0xfe, 0x59, 0xce, 0x42, 0x3a, 0x3a, 0xa8, 0x5c, 0x16, 0xa3, 0x96, 0x09, 0x67, 0x93, 0x98, 0x4d, + 0x1f, 0xad, 0xc1, 0x99, 0x6d, 0xe2, 0x78, 0xf1, 0xf6, 0xd2, 0x36, 0x69, 0xec, 0xc8, 0x4d, 0xc4, + 0x9c, 0x83, 0x35, 0xe3, 0xee, 0x9b, 0xdd, 0x28, 0x38, 0xab, 0x1e, 0x7a, 0x07, 0x66, 0xdb, 0x9d, + 0x4d, 0xcf, 0x8d, 0xb6, 0xd7, 0x83, 0x98, 0x19, 0x65, 0xa8, 0x24, 0x6b, 0xc2, 0x8b, 0x58, 0x39, + 0x46, 0xd7, 0x72, 0xf0, 0x70, 0x2e, 0x05, 0xf4, 0x3e, 0x9c, 0x4b, 0x2d, 0x06, 0xe1, 0xd3, 0x38, + 0x99, 0x1f, 0xef, 0xb6, 0x9e, 0x55, 0x41, 0xf8, 0x28, 0x66, 0x81, 0x70, 0x76, 0x13, 0x1f, 0xcc, + 0x54, 0xe7, 0x3d, 0x5a, 0x59, 0x63, 0xca, 0xd0, 0x97, 0x61, 0x5c, 0x5f, 0x45, 0xe2, 0x82, 0xb9, + 0x92, 0xcd, 0xb3, 0x68, 0xab, 0x8d, 0xb3, 0x74, 0x6a, 0x45, 0xe9, 0x30, 0x6c, 0x50, 0xb4, 0x09, + 0x64, 0x7f, 0x1f, 0xba, 0x0d, 0xa3, 0x0d, 0xcf, 0x25, 0x7e, 0xbc, 0x5a, 0xeb, 0x15, 0x74, 0x63, + 0x49, 0xe0, 0x88, 0x01, 0x13, 0x01, 0x42, 0x79, 0x19, 0x56, 0x14, 0xec, 0xdf, 0x28, 0x40, 0xa5, + 0x4f, 0xb4, 0xd9, 0x94, 0x46, 0xd9, 0x1a, 0x48, 0xa3, 0xbc, 0x20, 0x53, 0xc6, 0xad, 0xa7, 0xc4, + 0xec, 0x54, 0x3a, 0xb8, 0x44, 0xd8, 0x4e, 0xe3, 0x0f, 0x6c, 0xe1, 0xab, 0x2b, 0xa5, 0x4b, 0x7d, + 0x6d, 0xcf, 0x8d, 0xc7, 0xa8, 0xa1, 0xc1, 0x05, 0x91, 0xdc, 0x87, 0x05, 0xfb, 0xeb, 0x05, 0x38, + 0xa7, 0x86, 0xf0, 0x2f, 0xee, 0xc0, 0xdd, 0xed, 0x1e, 0xb8, 0x13, 0x78, 0x96, 0xb1, 0xef, 0xc0, + 0x30, 0x0f, 0x5a, 0x32, 0x00, 0x03, 0xf4, 0x94, 0x19, 0xe1, 0x4a, 0x5d, 0xd3, 0x46, 0x94, 0xab, + 0xbf, 0x62, 0xc1, 0xd4, 0xc6, 0x52, 0xad, 0x1e, 0x34, 0x76, 0x48, 0xbc, 0xc0, 0x19, 0x56, 0x2c, + 0xf8, 0x1f, 0xeb, 0x21, 0xf9, 0x9a, 0x2c, 0x8e, 0xe9, 0x32, 0x94, 0xb6, 0x83, 0x28, 0x4e, 0xbf, + 0xd9, 0xde, 0x0c, 0xa2, 0x18, 0x33, 0x88, 0xfd, 0xbb, 0x16, 0x0c, 0xb1, 0x44, 0xa7, 0xfd, 0xb2, + 0xef, 0x0e, 0xf2, 0x5d, 0xe8, 0x65, 0x18, 0x26, 0x5b, 0x5b, 0xa4, 0x11, 0x8b, 0x59, 0x95, 0x0e, + 0xa5, 0xc3, 0xcb, 0xac, 0x94, 0x5e, 0xfa, 0xac, 0x31, 0xfe, 0x17, 0x0b, 0x64, 0xf4, 0x16, 0x94, + 0x63, 0x77, 0x97, 0x2c, 0x34, 0x9b, 0xe2, 0xd5, 0xeb, 0x21, 0xfc, 0x77, 0x37, 0x24, 0x01, 0x9c, + 0xd0, 0xb2, 0xbf, 0x5a, 0x00, 0x48, 0x5c, 0xef, 0xfb, 0x7d, 0xe2, 0x62, 0xd7, 0x7b, 0xc8, 0x95, + 0x8c, 0xf7, 0x10, 0x94, 0x10, 0xcc, 0x78, 0x0c, 0x51, 0xc3, 0x54, 0x1c, 0x68, 0x98, 0x4a, 0xc7, + 0x19, 0xa6, 0x25, 0x98, 0x49, 0x42, 0x07, 0x98, 0x71, 0x54, 0x98, 0x90, 0xb2, 0x91, 0x06, 0xe2, + 0x6e, 0x7c, 0x9b, 0xc0, 0x65, 0x19, 0xd1, 0x52, 0xde, 0x35, 0xcc, 0xa8, 0xf2, 0x18, 0x89, 0x98, + 0x93, 0x07, 0x9f, 0x42, 0xee, 0x83, 0xcf, 0x4f, 0x59, 0x70, 0x36, 0xdd, 0x0e, 0xf3, 0x5e, 0xfb, + 0x01, 0x0b, 0xce, 0xb1, 0x67, 0x2f, 0xd6, 0x6a, 0xf7, 0x23, 0xdb, 0x4b, 0xd9, 0x21, 0x15, 0x7a, + 0xf7, 0x38, 0xf1, 0x5c, 0x5e, 0xcb, 0x22, 0x8d, 0xb3, 0x5b, 0xb4, 0xbf, 0xdf, 0x02, 0xe1, 0x24, + 0x34, 0xc0, 0xc6, 0x7e, 0x5b, 0xa6, 0x2a, 0x35, 0x02, 0x78, 0x5f, 0xce, 0xf7, 0x9a, 0x12, 0x61, + 0xbb, 0xd5, 0x45, 0x6a, 0x04, 0xeb, 0x36, 0x68, 0xd9, 0x4d, 0x10, 0xd0, 0x2a, 0x61, 0x7a, 0xa2, + 0xfe, 0xbd, 0xb9, 0x0e, 0xd0, 0x64, 0xb8, 0x5a, 0xc2, 0x42, 0x75, 0x6c, 0x57, 0x15, 0x04, 0x6b, + 0x58, 0xf6, 0x8f, 0x14, 0x60, 0x4c, 0x06, 0x8c, 0xee, 0xf8, 0x83, 0x48, 0x73, 0xc7, 0xca, 0x1b, + 0xc3, 0x32, 0x7c, 0x52, 0xc2, 0xb5, 0x44, 0x08, 0x4e, 0x32, 0x7c, 0x4a, 0x00, 0x4e, 0x70, 0xd0, + 0x33, 0x30, 0x12, 0x75, 0x36, 0x19, 0x7a, 0xca, 0xf5, 0xa5, 0xce, 0x8b, 0xb1, 0x84, 0xa3, 0xcf, + 0xc3, 0x34, 0xaf, 0x17, 0x06, 0x6d, 0xa7, 0xc5, 0x95, 0x86, 0x43, 0xca, 0x17, 0x75, 0x7a, 0x2d, + 0x05, 0x3b, 0x3a, 0xa8, 0x9c, 0x4d, 0x97, 0x31, 0x75, 0x73, 0x17, 0x15, 0xfb, 0xcb, 0x80, 0xba, + 0x63, 0x60, 0xa3, 0x37, 0xb8, 0x01, 0x92, 0x1b, 0x92, 0x66, 0x2f, 0x3d, 0xb2, 0xee, 0x3a, 0x29, + 0xcd, 0xcf, 0x79, 0x2d, 0xac, 0xea, 0xdb, 0x7f, 0xad, 0x08, 0xd3, 0x69, 0x47, 0x3a, 0x74, 0x13, + 0x86, 0xf9, 0x05, 0x23, 0xc8, 0xf7, 0x78, 0xa6, 0xd4, 0xdc, 0xef, 0xd8, 0x56, 0x13, 0x77, 0x94, + 0xa8, 0x8f, 0xde, 0x81, 0xb1, 0x66, 0x70, 0xdf, 0xbf, 0xef, 0x84, 0xcd, 0x85, 0xda, 0xaa, 0x58, + 0x97, 0x99, 0x7c, 0x6a, 0x35, 0x41, 0xd3, 0x5d, 0xfa, 0x98, 0x4a, 0x3e, 0x01, 0x61, 0x9d, 0x1c, + 0xda, 0x60, 0x71, 0xfd, 0xb6, 0xdc, 0xd6, 0x9a, 0xd3, 0xee, 0x65, 0x8d, 0xba, 0x24, 0x91, 0x34, + 0xca, 0x13, 0x22, 0xf8, 0x1f, 0x07, 0xe0, 0x84, 0x10, 0xfa, 0x6e, 0x38, 0x13, 0xe5, 0xa8, 0xb6, + 0xf2, 0x52, 0x22, 0xf4, 0xd2, 0xf6, 0x2c, 0x3e, 0x46, 0x25, 0x88, 0x2c, 0x25, 0x58, 0x56, 0x33, + 0xf6, 0x57, 0xce, 0x80, 0xb1, 0x1b, 0x8d, 0xbc, 0x38, 0xd6, 0x09, 0xe5, 0xc5, 0xc1, 0x30, 0x4a, + 0x76, 0xdb, 0xf1, 0x7e, 0xd5, 0x0d, 0x7b, 0x25, 0x56, 0x5b, 0x16, 0x38, 0xdd, 0x34, 0x25, 0x04, + 0x2b, 0x3a, 0xd9, 0xc9, 0x8b, 0x8a, 0x1f, 0x62, 0xf2, 0xa2, 0xd2, 0x29, 0x26, 0x2f, 0x5a, 0x87, + 0x91, 0x96, 0x1b, 0x63, 0xd2, 0x0e, 0x04, 0x6b, 0x97, 0xb9, 0x0e, 0x6f, 0x70, 0x94, 0xee, 0x84, + 0x19, 0x02, 0x80, 0x25, 0x11, 0xf4, 0x86, 0xda, 0x81, 0xc3, 0xf9, 0x92, 0x51, 0xf7, 0x7b, 0x5a, + 0xe6, 0x1e, 0x14, 0xc9, 0x8a, 0x46, 0x1e, 0x36, 0x59, 0xd1, 0x8a, 0x4c, 0x31, 0x34, 0x9a, 0x6f, + 0x3a, 0xce, 0x32, 0x08, 0xf5, 0x49, 0x2c, 0x64, 0x24, 0x63, 0x2a, 0x9f, 0x5c, 0x32, 0xa6, 0xef, + 0xb7, 0xe0, 0x5c, 0x3b, 0x2b, 0x2f, 0x99, 0x48, 0x0c, 0xf4, 0xf2, 0xc0, 0x89, 0xd7, 0x8c, 0x06, + 0x99, 0x88, 0x9c, 0x89, 0x86, 0xb3, 0x9b, 0xa3, 0x03, 0x1d, 0x6e, 0x36, 0x45, 0x36, 0xa1, 0xa7, + 0x72, 0xb2, 0x3a, 0xf5, 0xc8, 0xe5, 0xb4, 0x91, 0x91, 0x41, 0xe8, 0xe3, 0x79, 0x19, 0x84, 0x06, + 0xce, 0x1b, 0xf4, 0x86, 0xca, 0xe7, 0x34, 0x91, 0xbf, 0x94, 0x78, 0xb6, 0xa6, 0xbe, 0x59, 0x9c, + 0xde, 0x50, 0x59, 0x9c, 0x7a, 0xc4, 0x37, 0xe3, 0x39, 0x9a, 0xfa, 0xe6, 0x6e, 0xd2, 0xf2, 0x2f, + 0x4d, 0x9d, 0x4c, 0xfe, 0x25, 0xe3, 0xaa, 0xe1, 0x29, 0x80, 0x9e, 0xed, 0x73, 0xd5, 0x18, 0x74, + 0x7b, 0x5f, 0x36, 0x3c, 0xd7, 0xd4, 0xcc, 0x43, 0xe5, 0x9a, 0xba, 0xa7, 0xe7, 0x6e, 0x42, 0x7d, + 0x92, 0x13, 0x51, 0xa4, 0x01, 0x33, 0x36, 0xdd, 0xd3, 0x2f, 0xc0, 0x33, 0xf9, 0x74, 0xd5, 0x3d, + 0xd7, 0x4d, 0x37, 0xf3, 0x0a, 0xec, 0xca, 0x04, 0x75, 0xf6, 0x74, 0x32, 0x41, 0x9d, 0x3b, 0xf1, + 0x4c, 0x50, 0xe7, 0x4f, 0x21, 0x13, 0xd4, 0x63, 0x1f, 0x6a, 0x26, 0xa8, 0xd9, 0x47, 0x90, 0x09, + 0x6a, 0x3d, 0xc9, 0x04, 0x75, 0x21, 0x7f, 0x4a, 0x32, 0xec, 0x59, 0x73, 0xf2, 0x3f, 0xdd, 0x83, + 0x72, 0x5b, 0x46, 0x7a, 0x10, 0x01, 0xd8, 0xb2, 0x93, 0xd1, 0x66, 0x85, 0x83, 0xe0, 0x53, 0xa2, + 0x40, 0x38, 0x21, 0x45, 0xe9, 0x26, 0xf9, 0xa0, 0x1e, 0xef, 0xa1, 0x04, 0xcd, 0x52, 0x2f, 0xe5, + 0x67, 0x81, 0xb2, 0xff, 0x6a, 0x01, 0x2e, 0xf5, 0x5e, 0xd7, 0x89, 0x6e, 0xaa, 0x96, 0xbc, 0xa5, + 0xa4, 0x74, 0x53, 0x5c, 0xc8, 0x49, 0xb0, 0x06, 0x0e, 0x87, 0x73, 0x03, 0x66, 0x94, 0x21, 0xab, + 0xe7, 0x36, 0xf6, 0xb5, 0x24, 0xb5, 0xca, 0x61, 0xaf, 0x9e, 0x46, 0xc0, 0xdd, 0x75, 0xd0, 0x02, + 0x4c, 0x19, 0x85, 0xab, 0x55, 0x21, 0xcc, 0x28, 0x65, 0x58, 0xdd, 0x04, 0xe3, 0x34, 0xbe, 0xfd, + 0x73, 0x16, 0x3c, 0x96, 0x93, 0x24, 0x61, 0xe0, 0x68, 0x2f, 0x5b, 0x30, 0xd5, 0x36, 0xab, 0xf6, + 0x09, 0x0a, 0x65, 0xa4, 0x62, 0x50, 0x7d, 0x4d, 0x01, 0x70, 0x9a, 0xe8, 0xe2, 0xd5, 0xdf, 0xfa, + 0xfd, 0x4b, 0x1f, 0xfb, 0xed, 0xdf, 0xbf, 0xf4, 0xb1, 0xdf, 0xf9, 0xfd, 0x4b, 0x1f, 0xfb, 0xff, + 0x0f, 0x2f, 0x59, 0xbf, 0x75, 0x78, 0xc9, 0xfa, 0xed, 0xc3, 0x4b, 0xd6, 0xef, 0x1c, 0x5e, 0xb2, + 0x7e, 0xef, 0xf0, 0x92, 0xf5, 0xd5, 0x3f, 0xb8, 0xf4, 0xb1, 0xb7, 0x0b, 0x7b, 0x2f, 0xfc, 0xbf, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x41, 0x99, 0x07, 0x31, 0x7e, 0xe5, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/core/v1/generated.proto b/vendor/k8s.io/api/core/v1/generated.proto index f0029a8d8b..9efa196212 100644 --- a/vendor/k8s.io/api/core/v1/generated.proto +++ b/vendor/k8s.io/api/core/v1/generated.proto @@ -21,7 +21,6 @@ syntax = 'proto2'; package k8s.io.api.core.v1; -import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto"; import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; @@ -3733,7 +3732,6 @@ message ScaleIOPersistentVolumeSource { optional string storagePool = 6; // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. - // Default is ThinProvisioned. // +optional optional string storageMode = 7; @@ -3743,8 +3741,7 @@ message ScaleIOPersistentVolumeSource { // Filesystem type to mount. // Must be a filesystem type supported by the host operating system. - // Ex. "ext4", "xfs", "ntfs". - // Default is "xfs" + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. // +optional optional string fsType = 9; @@ -3779,7 +3776,6 @@ message ScaleIOVolumeSource { optional string storagePool = 6; // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. - // Default is ThinProvisioned. // +optional optional string storageMode = 7; @@ -3789,8 +3785,7 @@ message ScaleIOVolumeSource { // Filesystem type to mount. // Must be a filesystem type supported by the host operating system. - // Ex. "ext4", "xfs", "ntfs". - // Default is "xfs". + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. // +optional optional string fsType = 9; diff --git a/vendor/k8s.io/api/core/v1/types.go b/vendor/k8s.io/api/core/v1/types.go index c877726099..d9f4869fbc 100644 --- a/vendor/k8s.io/api/core/v1/types.go +++ b/vendor/k8s.io/api/core/v1/types.go @@ -1339,7 +1339,6 @@ type ScaleIOVolumeSource struct { // +optional StoragePool string `json:"storagePool,omitempty" protobuf:"bytes,6,opt,name=storagePool"` // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. - // Default is ThinProvisioned. // +optional StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"` // The name of a volume already created in the ScaleIO system @@ -1347,8 +1346,7 @@ type ScaleIOVolumeSource struct { VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,8,opt,name=volumeName"` // Filesystem type to mount. // Must be a filesystem type supported by the host operating system. - // Ex. "ext4", "xfs", "ntfs". - // Default is "xfs". + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. // +optional FSType string `json:"fsType,omitempty" protobuf:"bytes,9,opt,name=fsType"` // Defaults to false (read/write). ReadOnly here will force @@ -1376,7 +1374,6 @@ type ScaleIOPersistentVolumeSource struct { // +optional StoragePool string `json:"storagePool,omitempty" protobuf:"bytes,6,opt,name=storagePool"` // Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. - // Default is ThinProvisioned. // +optional StorageMode string `json:"storageMode,omitempty" protobuf:"bytes,7,opt,name=storageMode"` // The name of a volume already created in the ScaleIO system @@ -1384,8 +1381,7 @@ type ScaleIOPersistentVolumeSource struct { VolumeName string `json:"volumeName,omitempty" protobuf:"bytes,8,opt,name=volumeName"` // Filesystem type to mount. // Must be a filesystem type supported by the host operating system. - // Ex. "ext4", "xfs", "ntfs". - // Default is "xfs" + // Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. // +optional FSType string `json:"fsType,omitempty" protobuf:"bytes,9,opt,name=fsType"` // Defaults to false (read/write). ReadOnly here will force diff --git a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go index dcff6a1f47..59f1d1e7d4 100644 --- a/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go +++ b/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go @@ -1854,9 +1854,9 @@ var map_ScaleIOPersistentVolumeSource = map[string]string{ "sslEnabled": "Flag to enable/disable SSL communication with Gateway, default false", "protectionDomain": "The name of the ScaleIO Protection Domain for the configured storage.", "storagePool": "The ScaleIO Storage Pool associated with the protection domain.", - "storageMode": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.", + "storageMode": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.", "volumeName": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", - "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\"", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", } @@ -1872,9 +1872,9 @@ var map_ScaleIOVolumeSource = map[string]string{ "sslEnabled": "Flag to enable/disable SSL communication with Gateway, default false", "protectionDomain": "The name of the ScaleIO Protection Domain for the configured storage.", "storagePool": "The ScaleIO Storage Pool associated with the protection domain.", - "storageMode": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.", + "storageMode": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.", "volumeName": "The name of a volume already created in the ScaleIO system that is associated with this volume source.", - "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\".", + "fsType": "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", "readOnly": "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", } diff --git a/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go index 5add0a7ec2..0501bbcb50 100644 --- a/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1 import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" types "k8s.io/apimachinery/pkg/types" ) @@ -47,18 +47,30 @@ func (in *Affinity) DeepCopyInto(out *Affinity) { *out = *in if in.NodeAffinity != nil { in, out := &in.NodeAffinity, &out.NodeAffinity - *out = new(NodeAffinity) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(NodeAffinity) + (*in).DeepCopyInto(*out) + } } if in.PodAffinity != nil { in, out := &in.PodAffinity, &out.PodAffinity - *out = new(PodAffinity) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(PodAffinity) + (*in).DeepCopyInto(*out) + } } if in.PodAntiAffinity != nil { in, out := &in.PodAntiAffinity, &out.PodAntiAffinity - *out = new(PodAntiAffinity) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(PodAntiAffinity) + (*in).DeepCopyInto(*out) + } } return } @@ -117,23 +129,39 @@ func (in *AzureDiskVolumeSource) DeepCopyInto(out *AzureDiskVolumeSource) { *out = *in if in.CachingMode != nil { in, out := &in.CachingMode, &out.CachingMode - *out = new(AzureDataDiskCachingMode) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(AzureDataDiskCachingMode) + **out = **in + } } if in.FSType != nil { in, out := &in.FSType, &out.FSType - *out = new(string) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } } if in.ReadOnly != nil { in, out := &in.ReadOnly, &out.ReadOnly - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.Kind != nil { in, out := &in.Kind, &out.Kind - *out = new(AzureDataDiskKind) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(AzureDataDiskKind) + **out = **in + } } return } @@ -153,8 +181,12 @@ func (in *AzureFilePersistentVolumeSource) DeepCopyInto(out *AzureFilePersistent *out = *in if in.SecretNamespace != nil { in, out := &in.SecretNamespace, &out.SecretNamespace - *out = new(string) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } } return } @@ -224,18 +256,30 @@ func (in *CSIPersistentVolumeSource) DeepCopyInto(out *CSIPersistentVolumeSource } if in.ControllerPublishSecretRef != nil { in, out := &in.ControllerPublishSecretRef, &out.ControllerPublishSecretRef - *out = new(SecretReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } } if in.NodeStageSecretRef != nil { in, out := &in.NodeStageSecretRef, &out.NodeStageSecretRef - *out = new(SecretReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } } if in.NodePublishSecretRef != nil { in, out := &in.NodePublishSecretRef, &out.NodePublishSecretRef - *out = new(SecretReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } } return } @@ -286,8 +330,12 @@ func (in *CephFSPersistentVolumeSource) DeepCopyInto(out *CephFSPersistentVolume } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(SecretReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } } return } @@ -312,8 +360,12 @@ func (in *CephFSVolumeSource) DeepCopyInto(out *CephFSVolumeSource) { } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(LocalObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } } return } @@ -333,8 +385,12 @@ func (in *CinderPersistentVolumeSource) DeepCopyInto(out *CinderPersistentVolume *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(SecretReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } } return } @@ -354,8 +410,12 @@ func (in *CinderVolumeSource) DeepCopyInto(out *CinderVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(LocalObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } } return } @@ -375,8 +435,12 @@ func (in *ClientIPConfig) DeepCopyInto(out *ClientIPConfig) { *out = *in if in.TimeoutSeconds != nil { in, out := &in.TimeoutSeconds, &out.TimeoutSeconds - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -487,15 +551,12 @@ func (in *ConfigMap) DeepCopyInto(out *ConfigMap) { in, out := &in.BinaryData, &out.BinaryData *out = make(map[string][]byte, len(*in)) for key, val := range *in { - var outVal []byte if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal - *out = make([]byte, len(*in)) - copy(*out, *in) + (*out)[key] = make([]byte, len(val)) + copy((*out)[key], val) } - (*out)[key] = outVal } } return @@ -525,8 +586,12 @@ func (in *ConfigMapEnvSource) DeepCopyInto(out *ConfigMapEnvSource) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } return } @@ -547,8 +612,12 @@ func (in *ConfigMapKeySelector) DeepCopyInto(out *ConfigMapKeySelector) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } return } @@ -625,8 +694,12 @@ func (in *ConfigMapProjection) DeepCopyInto(out *ConfigMapProjection) { } if in.Optional != nil { in, out := &in.Optional, &out.Optional - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } return } @@ -654,13 +727,21 @@ func (in *ConfigMapVolumeSource) DeepCopyInto(out *ConfigMapVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Optional != nil { in, out := &in.Optional, &out.Optional - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } return } @@ -722,23 +803,39 @@ func (in *Container) DeepCopyInto(out *Container) { } if in.LivenessProbe != nil { in, out := &in.LivenessProbe, &out.LivenessProbe - *out = new(Probe) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(Probe) + (*in).DeepCopyInto(*out) + } } if in.ReadinessProbe != nil { in, out := &in.ReadinessProbe, &out.ReadinessProbe - *out = new(Probe) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(Probe) + (*in).DeepCopyInto(*out) + } } if in.Lifecycle != nil { in, out := &in.Lifecycle, &out.Lifecycle - *out = new(Lifecycle) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(Lifecycle) + (*in).DeepCopyInto(*out) + } } if in.SecurityContext != nil { in, out := &in.SecurityContext, &out.SecurityContext - *out = new(SecurityContext) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(SecurityContext) + (*in).DeepCopyInto(*out) + } } return } @@ -795,18 +892,30 @@ func (in *ContainerState) DeepCopyInto(out *ContainerState) { *out = *in if in.Waiting != nil { in, out := &in.Waiting, &out.Waiting - *out = new(ContainerStateWaiting) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ContainerStateWaiting) + **out = **in + } } if in.Running != nil { in, out := &in.Running, &out.Running - *out = new(ContainerStateRunning) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ContainerStateRunning) + (*in).DeepCopyInto(*out) + } } if in.Terminated != nil { in, out := &in.Terminated, &out.Terminated - *out = new(ContainerStateTerminated) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ContainerStateTerminated) + (*in).DeepCopyInto(*out) + } } return } @@ -934,18 +1043,30 @@ func (in *DownwardAPIVolumeFile) DeepCopyInto(out *DownwardAPIVolumeFile) { *out = *in if in.FieldRef != nil { in, out := &in.FieldRef, &out.FieldRef - *out = new(ObjectFieldSelector) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ObjectFieldSelector) + **out = **in + } } if in.ResourceFieldRef != nil { in, out := &in.ResourceFieldRef, &out.ResourceFieldRef - *out = new(ResourceFieldSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ResourceFieldSelector) + (*in).DeepCopyInto(*out) + } } if in.Mode != nil { in, out := &in.Mode, &out.Mode - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -972,8 +1093,12 @@ func (in *DownwardAPIVolumeSource) DeepCopyInto(out *DownwardAPIVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -993,8 +1118,12 @@ func (in *EmptyDirVolumeSource) DeepCopyInto(out *EmptyDirVolumeSource) { *out = *in if in.SizeLimit != nil { in, out := &in.SizeLimit, &out.SizeLimit - x := (*in).DeepCopy() - *out = &x + if *in == nil { + *out = nil + } else { + x := (*in).DeepCopy() + *out = &x + } } return } @@ -1014,13 +1143,21 @@ func (in *EndpointAddress) DeepCopyInto(out *EndpointAddress) { *out = *in if in.NodeName != nil { in, out := &in.NodeName, &out.NodeName - *out = new(string) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } } if in.TargetRef != nil { in, out := &in.TargetRef, &out.TargetRef - *out = new(ObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ObjectReference) + **out = **in + } } return } @@ -1157,13 +1294,21 @@ func (in *EnvFromSource) DeepCopyInto(out *EnvFromSource) { *out = *in if in.ConfigMapRef != nil { in, out := &in.ConfigMapRef, &out.ConfigMapRef - *out = new(ConfigMapEnvSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ConfigMapEnvSource) + (*in).DeepCopyInto(*out) + } } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(SecretEnvSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(SecretEnvSource) + (*in).DeepCopyInto(*out) + } } return } @@ -1183,8 +1328,12 @@ func (in *EnvVar) DeepCopyInto(out *EnvVar) { *out = *in if in.ValueFrom != nil { in, out := &in.ValueFrom, &out.ValueFrom - *out = new(EnvVarSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(EnvVarSource) + (*in).DeepCopyInto(*out) + } } return } @@ -1204,23 +1353,39 @@ func (in *EnvVarSource) DeepCopyInto(out *EnvVarSource) { *out = *in if in.FieldRef != nil { in, out := &in.FieldRef, &out.FieldRef - *out = new(ObjectFieldSelector) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ObjectFieldSelector) + **out = **in + } } if in.ResourceFieldRef != nil { in, out := &in.ResourceFieldRef, &out.ResourceFieldRef - *out = new(ResourceFieldSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ResourceFieldSelector) + (*in).DeepCopyInto(*out) + } } if in.ConfigMapKeyRef != nil { in, out := &in.ConfigMapKeyRef, &out.ConfigMapKeyRef - *out = new(ConfigMapKeySelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ConfigMapKeySelector) + (*in).DeepCopyInto(*out) + } } if in.SecretKeyRef != nil { in, out := &in.SecretKeyRef, &out.SecretKeyRef - *out = new(SecretKeySelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(SecretKeySelector) + (*in).DeepCopyInto(*out) + } } return } @@ -1247,13 +1412,21 @@ func (in *Event) DeepCopyInto(out *Event) { in.EventTime.DeepCopyInto(&out.EventTime) if in.Series != nil { in, out := &in.Series, &out.Series - *out = new(EventSeries) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(EventSeries) + (*in).DeepCopyInto(*out) + } } if in.Related != nil { in, out := &in.Related, &out.Related - *out = new(ObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ObjectReference) + **out = **in + } } return } @@ -1373,8 +1546,12 @@ func (in *FCVolumeSource) DeepCopyInto(out *FCVolumeSource) { } if in.Lun != nil { in, out := &in.Lun, &out.Lun - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.WWIDs != nil { in, out := &in.WWIDs, &out.WWIDs @@ -1399,8 +1576,12 @@ func (in *FlexPersistentVolumeSource) DeepCopyInto(out *FlexPersistentVolumeSour *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(SecretReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } } if in.Options != nil { in, out := &in.Options, &out.Options @@ -1427,8 +1608,12 @@ func (in *FlexVolumeSource) DeepCopyInto(out *FlexVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(LocalObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } } if in.Options != nil { in, out := &in.Options, &out.Options @@ -1557,18 +1742,30 @@ func (in *Handler) DeepCopyInto(out *Handler) { *out = *in if in.Exec != nil { in, out := &in.Exec, &out.Exec - *out = new(ExecAction) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ExecAction) + (*in).DeepCopyInto(*out) + } } if in.HTTPGet != nil { in, out := &in.HTTPGet, &out.HTTPGet - *out = new(HTTPGetAction) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(HTTPGetAction) + (*in).DeepCopyInto(*out) + } } if in.TCPSocket != nil { in, out := &in.TCPSocket, &out.TCPSocket - *out = new(TCPSocketAction) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(TCPSocketAction) + **out = **in + } } return } @@ -1609,8 +1806,12 @@ func (in *HostPathVolumeSource) DeepCopyInto(out *HostPathVolumeSource) { *out = *in if in.Type != nil { in, out := &in.Type, &out.Type - *out = new(HostPathType) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(HostPathType) + **out = **in + } } return } @@ -1635,13 +1836,21 @@ func (in *ISCSIPersistentVolumeSource) DeepCopyInto(out *ISCSIPersistentVolumeSo } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(SecretReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } } if in.InitiatorName != nil { in, out := &in.InitiatorName, &out.InitiatorName - *out = new(string) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } } return } @@ -1666,13 +1875,21 @@ func (in *ISCSIVolumeSource) DeepCopyInto(out *ISCSIVolumeSource) { } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(LocalObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } } if in.InitiatorName != nil { in, out := &in.InitiatorName, &out.InitiatorName - *out = new(string) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } } return } @@ -1692,8 +1909,12 @@ func (in *KeyToPath) DeepCopyInto(out *KeyToPath) { *out = *in if in.Mode != nil { in, out := &in.Mode, &out.Mode - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -1713,13 +1934,21 @@ func (in *Lifecycle) DeepCopyInto(out *Lifecycle) { *out = *in if in.PostStart != nil { in, out := &in.PostStart, &out.PostStart - *out = new(Handler) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(Handler) + (*in).DeepCopyInto(*out) + } } if in.PreStop != nil { in, out := &in.PreStop, &out.PreStop - *out = new(Handler) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(Handler) + (*in).DeepCopyInto(*out) + } } return } @@ -2133,8 +2362,12 @@ func (in *NodeAffinity) DeepCopyInto(out *NodeAffinity) { *out = *in if in.RequiredDuringSchedulingIgnoredDuringExecution != nil { in, out := &in.RequiredDuringSchedulingIgnoredDuringExecution, &out.RequiredDuringSchedulingIgnoredDuringExecution - *out = new(NodeSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(NodeSelector) + (*in).DeepCopyInto(*out) + } } if in.PreferredDuringSchedulingIgnoredDuringExecution != nil { in, out := &in.PreferredDuringSchedulingIgnoredDuringExecution, &out.PreferredDuringSchedulingIgnoredDuringExecution @@ -2179,8 +2412,12 @@ func (in *NodeConfigSource) DeepCopyInto(out *NodeConfigSource) { *out = *in if in.ConfigMap != nil { in, out := &in.ConfigMap, &out.ConfigMap - *out = new(ConfigMapNodeConfigSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ConfigMapNodeConfigSource) + **out = **in + } } return } @@ -2200,18 +2437,30 @@ func (in *NodeConfigStatus) DeepCopyInto(out *NodeConfigStatus) { *out = *in if in.Assigned != nil { in, out := &in.Assigned, &out.Assigned - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) + } } if in.Active != nil { in, out := &in.Active, &out.Active - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) + } } if in.LastKnownGood != nil { in, out := &in.LastKnownGood, &out.LastKnownGood - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) + } } return } @@ -2410,8 +2659,12 @@ func (in *NodeSpec) DeepCopyInto(out *NodeSpec) { } if in.ConfigSource != nil { in, out := &in.ConfigSource, &out.ConfigSource - *out = new(NodeConfigSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(NodeConfigSource) + (*in).DeepCopyInto(*out) + } } return } @@ -2476,8 +2729,12 @@ func (in *NodeStatus) DeepCopyInto(out *NodeStatus) { } if in.Config != nil { in, out := &in.Config, &out.Config - *out = new(NodeConfigStatus) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(NodeConfigStatus) + (*in).DeepCopyInto(*out) + } } return } @@ -2665,19 +2922,31 @@ func (in *PersistentVolumeClaimSpec) DeepCopyInto(out *PersistentVolumeClaimSpec } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(metav1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Resources.DeepCopyInto(&out.Resources) if in.StorageClassName != nil { in, out := &in.StorageClassName, &out.StorageClassName - *out = new(string) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } } if in.VolumeMode != nil { in, out := &in.VolumeMode, &out.VolumeMode - *out = new(PersistentVolumeMode) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(PersistentVolumeMode) + **out = **in + } } return } @@ -2781,113 +3050,201 @@ func (in *PersistentVolumeSource) DeepCopyInto(out *PersistentVolumeSource) { *out = *in if in.GCEPersistentDisk != nil { in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk - *out = new(GCEPersistentDiskVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } } if in.AWSElasticBlockStore != nil { in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore - *out = new(AWSElasticBlockStoreVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } } if in.HostPath != nil { in, out := &in.HostPath, &out.HostPath - *out = new(HostPathVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(HostPathVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.Glusterfs != nil { in, out := &in.Glusterfs, &out.Glusterfs - *out = new(GlusterfsVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(GlusterfsVolumeSource) + **out = **in + } } if in.NFS != nil { in, out := &in.NFS, &out.NFS - *out = new(NFSVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(NFSVolumeSource) + **out = **in + } } if in.RBD != nil { in, out := &in.RBD, &out.RBD - *out = new(RBDPersistentVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RBDPersistentVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.ISCSI != nil { in, out := &in.ISCSI, &out.ISCSI - *out = new(ISCSIPersistentVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ISCSIPersistentVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.Cinder != nil { in, out := &in.Cinder, &out.Cinder - *out = new(CinderPersistentVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(CinderPersistentVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.CephFS != nil { in, out := &in.CephFS, &out.CephFS - *out = new(CephFSPersistentVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(CephFSPersistentVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.FC != nil { in, out := &in.FC, &out.FC - *out = new(FCVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(FCVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.Flocker != nil { in, out := &in.Flocker, &out.Flocker - *out = new(FlockerVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(FlockerVolumeSource) + **out = **in + } } if in.FlexVolume != nil { in, out := &in.FlexVolume, &out.FlexVolume - *out = new(FlexPersistentVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(FlexPersistentVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.AzureFile != nil { in, out := &in.AzureFile, &out.AzureFile - *out = new(AzureFilePersistentVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(AzureFilePersistentVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.VsphereVolume != nil { in, out := &in.VsphereVolume, &out.VsphereVolume - *out = new(VsphereVirtualDiskVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } } if in.Quobyte != nil { in, out := &in.Quobyte, &out.Quobyte - *out = new(QuobyteVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(QuobyteVolumeSource) + **out = **in + } } if in.AzureDisk != nil { in, out := &in.AzureDisk, &out.AzureDisk - *out = new(AzureDiskVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(AzureDiskVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.PhotonPersistentDisk != nil { in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk - *out = new(PhotonPersistentDiskVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in + } } if in.PortworxVolume != nil { in, out := &in.PortworxVolume, &out.PortworxVolume - *out = new(PortworxVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(PortworxVolumeSource) + **out = **in + } } if in.ScaleIO != nil { in, out := &in.ScaleIO, &out.ScaleIO - *out = new(ScaleIOPersistentVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ScaleIOPersistentVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.Local != nil { in, out := &in.Local, &out.Local - *out = new(LocalVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(LocalVolumeSource) + **out = **in + } } if in.StorageOS != nil { in, out := &in.StorageOS, &out.StorageOS - *out = new(StorageOSPersistentVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(StorageOSPersistentVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.CSI != nil { in, out := &in.CSI, &out.CSI - *out = new(CSIPersistentVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(CSIPersistentVolumeSource) + (*in).DeepCopyInto(*out) + } } return } @@ -2920,8 +3277,12 @@ func (in *PersistentVolumeSpec) DeepCopyInto(out *PersistentVolumeSpec) { } if in.ClaimRef != nil { in, out := &in.ClaimRef, &out.ClaimRef - *out = new(ObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ObjectReference) + **out = **in + } } if in.MountOptions != nil { in, out := &in.MountOptions, &out.MountOptions @@ -2930,13 +3291,21 @@ func (in *PersistentVolumeSpec) DeepCopyInto(out *PersistentVolumeSpec) { } if in.VolumeMode != nil { in, out := &in.VolumeMode, &out.VolumeMode - *out = new(PersistentVolumeMode) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(PersistentVolumeMode) + **out = **in + } } if in.NodeAffinity != nil { in, out := &in.NodeAffinity, &out.NodeAffinity - *out = new(VolumeNodeAffinity) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(VolumeNodeAffinity) + (*in).DeepCopyInto(*out) + } } return } @@ -3046,8 +3415,12 @@ func (in *PodAffinityTerm) DeepCopyInto(out *PodAffinityTerm) { *out = *in if in.LabelSelector != nil { in, out := &in.LabelSelector, &out.LabelSelector - *out = new(metav1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } if in.Namespaces != nil { in, out := &in.Namespaces, &out.Namespaces @@ -3178,8 +3551,12 @@ func (in *PodDNSConfigOption) DeepCopyInto(out *PodDNSConfigOption) { *out = *in if in.Value != nil { in, out := &in.Value, &out.Value - *out = new(string) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } } return } @@ -3263,22 +3640,38 @@ func (in *PodLogOptions) DeepCopyInto(out *PodLogOptions) { out.TypeMeta = in.TypeMeta if in.SinceSeconds != nil { in, out := &in.SinceSeconds, &out.SinceSeconds - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.SinceTime != nil { in, out := &in.SinceTime, &out.SinceTime - *out = (*in).DeepCopy() + if *in == nil { + *out = nil + } else { + *out = (*in).DeepCopy() + } } if in.TailLines != nil { in, out := &in.TailLines, &out.TailLines - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.LimitBytes != nil { in, out := &in.LimitBytes, &out.LimitBytes - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } return } @@ -3377,23 +3770,39 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { *out = *in if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions - *out = new(SELinuxOptions) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(SELinuxOptions) + **out = **in + } } if in.RunAsUser != nil { in, out := &in.RunAsUser, &out.RunAsUser - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.RunAsGroup != nil { in, out := &in.RunAsGroup, &out.RunAsGroup - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.RunAsNonRoot != nil { in, out := &in.RunAsNonRoot, &out.RunAsNonRoot - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.SupplementalGroups != nil { in, out := &in.SupplementalGroups, &out.SupplementalGroups @@ -3402,8 +3811,12 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { } if in.FSGroup != nil { in, out := &in.FSGroup, &out.FSGroup - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.Sysctls != nil { in, out := &in.Sysctls, &out.Sysctls @@ -3428,8 +3841,12 @@ func (in *PodSignature) DeepCopyInto(out *PodSignature) { *out = *in if in.PodController != nil { in, out := &in.PodController, &out.PodController - *out = new(metav1.OwnerReference) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.OwnerReference) + (*in).DeepCopyInto(*out) + } } return } @@ -3470,13 +3887,21 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.TerminationGracePeriodSeconds != nil { in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.ActiveDeadlineSeconds != nil { in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.NodeSelector != nil { in, out := &in.NodeSelector, &out.NodeSelector @@ -3487,18 +3912,30 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.AutomountServiceAccountToken != nil { in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.ShareProcessNamespace != nil { in, out := &in.ShareProcessNamespace, &out.ShareProcessNamespace - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.SecurityContext != nil { in, out := &in.SecurityContext, &out.SecurityContext - *out = new(PodSecurityContext) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(PodSecurityContext) + (*in).DeepCopyInto(*out) + } } if in.ImagePullSecrets != nil { in, out := &in.ImagePullSecrets, &out.ImagePullSecrets @@ -3507,8 +3944,12 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.Affinity != nil { in, out := &in.Affinity, &out.Affinity - *out = new(Affinity) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(Affinity) + (*in).DeepCopyInto(*out) + } } if in.Tolerations != nil { in, out := &in.Tolerations, &out.Tolerations @@ -3526,13 +3967,21 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { } if in.Priority != nil { in, out := &in.Priority, &out.Priority - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.DNSConfig != nil { in, out := &in.DNSConfig, &out.DNSConfig - *out = new(PodDNSConfig) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(PodDNSConfig) + (*in).DeepCopyInto(*out) + } } if in.ReadinessGates != nil { in, out := &in.ReadinessGates, &out.ReadinessGates @@ -3564,7 +4013,11 @@ func (in *PodStatus) DeepCopyInto(out *PodStatus) { } if in.StartTime != nil { in, out := &in.StartTime, &out.StartTime - *out = (*in).DeepCopy() + if *in == nil { + *out = nil + } else { + *out = (*in).DeepCopy() + } } if in.InitContainerStatuses != nil { in, out := &in.InitContainerStatuses, &out.InitContainerStatuses @@ -3719,8 +4172,12 @@ func (in *Preconditions) DeepCopyInto(out *Preconditions) { *out = *in if in.UID != nil { in, out := &in.UID, &out.UID - *out = new(types.UID) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(types.UID) + **out = **in + } } return } @@ -3799,8 +4256,12 @@ func (in *ProjectedVolumeSource) DeepCopyInto(out *ProjectedVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -3841,8 +4302,12 @@ func (in *RBDPersistentVolumeSource) DeepCopyInto(out *RBDPersistentVolumeSource } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(SecretReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } } return } @@ -3867,8 +4332,12 @@ func (in *RBDVolumeSource) DeepCopyInto(out *RBDVolumeSource) { } if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(LocalObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } } return } @@ -3997,8 +4466,12 @@ func (in *ReplicationControllerSpec) DeepCopyInto(out *ReplicationControllerSpec *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector @@ -4009,8 +4482,12 @@ func (in *ReplicationControllerSpec) DeepCopyInto(out *ReplicationControllerSpec } if in.Template != nil { in, out := &in.Template, &out.Template - *out = new(PodTemplateSpec) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(PodTemplateSpec) + (*in).DeepCopyInto(*out) + } } return } @@ -4165,8 +4642,12 @@ func (in *ResourceQuotaSpec) DeepCopyInto(out *ResourceQuotaSpec) { } if in.ScopeSelector != nil { in, out := &in.ScopeSelector, &out.ScopeSelector - *out = new(ScopeSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ScopeSelector) + (*in).DeepCopyInto(*out) + } } return } @@ -4262,8 +4743,12 @@ func (in *ScaleIOPersistentVolumeSource) DeepCopyInto(out *ScaleIOPersistentVolu *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(SecretReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(SecretReference) + **out = **in + } } return } @@ -4283,8 +4768,12 @@ func (in *ScaleIOVolumeSource) DeepCopyInto(out *ScaleIOVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(LocalObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } } return } @@ -4352,15 +4841,12 @@ func (in *Secret) DeepCopyInto(out *Secret) { in, out := &in.Data, &out.Data *out = make(map[string][]byte, len(*in)) for key, val := range *in { - var outVal []byte if val == nil { (*out)[key] = nil } else { - in, out := &val, &outVal - *out = make([]byte, len(*in)) - copy(*out, *in) + (*out)[key] = make([]byte, len(val)) + copy((*out)[key], val) } - (*out)[key] = outVal } } if in.StringData != nil { @@ -4397,8 +4883,12 @@ func (in *SecretEnvSource) DeepCopyInto(out *SecretEnvSource) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } return } @@ -4419,8 +4909,12 @@ func (in *SecretKeySelector) DeepCopyInto(out *SecretKeySelector) { out.LocalObjectReference = in.LocalObjectReference if in.Optional != nil { in, out := &in.Optional, &out.Optional - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } return } @@ -4481,8 +4975,12 @@ func (in *SecretProjection) DeepCopyInto(out *SecretProjection) { } if in.Optional != nil { in, out := &in.Optional, &out.Optional - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } return } @@ -4525,13 +5023,21 @@ func (in *SecretVolumeSource) DeepCopyInto(out *SecretVolumeSource) { } if in.DefaultMode != nil { in, out := &in.DefaultMode, &out.DefaultMode - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Optional != nil { in, out := &in.Optional, &out.Optional - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } return } @@ -4551,43 +5057,75 @@ func (in *SecurityContext) DeepCopyInto(out *SecurityContext) { *out = *in if in.Capabilities != nil { in, out := &in.Capabilities, &out.Capabilities - *out = new(Capabilities) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(Capabilities) + (*in).DeepCopyInto(*out) + } } if in.Privileged != nil { in, out := &in.Privileged, &out.Privileged - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions - *out = new(SELinuxOptions) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(SELinuxOptions) + **out = **in + } } if in.RunAsUser != nil { in, out := &in.RunAsUser, &out.RunAsUser - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.RunAsGroup != nil { in, out := &in.RunAsGroup, &out.RunAsGroup - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } if in.RunAsNonRoot != nil { in, out := &in.RunAsNonRoot, &out.RunAsNonRoot - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.ReadOnlyRootFilesystem != nil { in, out := &in.ReadOnlyRootFilesystem, &out.ReadOnlyRootFilesystem - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.AllowPrivilegeEscalation != nil { in, out := &in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } return } @@ -4673,8 +5211,12 @@ func (in *ServiceAccount) DeepCopyInto(out *ServiceAccount) { } if in.AutomountServiceAccountToken != nil { in, out := &in.AutomountServiceAccountToken, &out.AutomountServiceAccountToken - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } return } @@ -4735,8 +5277,12 @@ func (in *ServiceAccountTokenProjection) DeepCopyInto(out *ServiceAccountTokenPr *out = *in if in.ExpirationSeconds != nil { in, out := &in.ExpirationSeconds, &out.ExpirationSeconds - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } return } @@ -4853,8 +5399,12 @@ func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) { } if in.SessionAffinityConfig != nil { in, out := &in.SessionAffinityConfig, &out.SessionAffinityConfig - *out = new(SessionAffinityConfig) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(SessionAffinityConfig) + (*in).DeepCopyInto(*out) + } } return } @@ -4891,8 +5441,12 @@ func (in *SessionAffinityConfig) DeepCopyInto(out *SessionAffinityConfig) { *out = *in if in.ClientIP != nil { in, out := &in.ClientIP, &out.ClientIP - *out = new(ClientIPConfig) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ClientIPConfig) + (*in).DeepCopyInto(*out) + } } return } @@ -4912,8 +5466,12 @@ func (in *StorageOSPersistentVolumeSource) DeepCopyInto(out *StorageOSPersistent *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(ObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(ObjectReference) + **out = **in + } } return } @@ -4933,8 +5491,12 @@ func (in *StorageOSVolumeSource) DeepCopyInto(out *StorageOSVolumeSource) { *out = *in if in.SecretRef != nil { in, out := &in.SecretRef, &out.SecretRef - *out = new(LocalObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(LocalObjectReference) + **out = **in + } } return } @@ -4987,7 +5549,11 @@ func (in *Taint) DeepCopyInto(out *Taint) { *out = *in if in.TimeAdded != nil { in, out := &in.TimeAdded, &out.TimeAdded - *out = (*in).DeepCopy() + if *in == nil { + *out = nil + } else { + *out = (*in).DeepCopy() + } } return } @@ -5007,8 +5573,12 @@ func (in *Toleration) DeepCopyInto(out *Toleration) { *out = *in if in.TolerationSeconds != nil { in, out := &in.TolerationSeconds, &out.TolerationSeconds - *out = new(int64) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int64) + **out = **in + } } return } @@ -5105,8 +5675,12 @@ func (in *VolumeMount) DeepCopyInto(out *VolumeMount) { *out = *in if in.MountPropagation != nil { in, out := &in.MountPropagation, &out.MountPropagation - *out = new(MountPropagationMode) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(MountPropagationMode) + **out = **in + } } return } @@ -5126,8 +5700,12 @@ func (in *VolumeNodeAffinity) DeepCopyInto(out *VolumeNodeAffinity) { *out = *in if in.Required != nil { in, out := &in.Required, &out.Required - *out = new(NodeSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(NodeSelector) + (*in).DeepCopyInto(*out) + } } return } @@ -5147,23 +5725,39 @@ func (in *VolumeProjection) DeepCopyInto(out *VolumeProjection) { *out = *in if in.Secret != nil { in, out := &in.Secret, &out.Secret - *out = new(SecretProjection) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(SecretProjection) + (*in).DeepCopyInto(*out) + } } if in.DownwardAPI != nil { in, out := &in.DownwardAPI, &out.DownwardAPI - *out = new(DownwardAPIProjection) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(DownwardAPIProjection) + (*in).DeepCopyInto(*out) + } } if in.ConfigMap != nil { in, out := &in.ConfigMap, &out.ConfigMap - *out = new(ConfigMapProjection) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ConfigMapProjection) + (*in).DeepCopyInto(*out) + } } if in.ServiceAccountToken != nil { in, out := &in.ServiceAccountToken, &out.ServiceAccountToken - *out = new(ServiceAccountTokenProjection) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ServiceAccountTokenProjection) + (*in).DeepCopyInto(*out) + } } return } @@ -5183,138 +5777,246 @@ func (in *VolumeSource) DeepCopyInto(out *VolumeSource) { *out = *in if in.HostPath != nil { in, out := &in.HostPath, &out.HostPath - *out = new(HostPathVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(HostPathVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.EmptyDir != nil { in, out := &in.EmptyDir, &out.EmptyDir - *out = new(EmptyDirVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(EmptyDirVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.GCEPersistentDisk != nil { in, out := &in.GCEPersistentDisk, &out.GCEPersistentDisk - *out = new(GCEPersistentDiskVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(GCEPersistentDiskVolumeSource) + **out = **in + } } if in.AWSElasticBlockStore != nil { in, out := &in.AWSElasticBlockStore, &out.AWSElasticBlockStore - *out = new(AWSElasticBlockStoreVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(AWSElasticBlockStoreVolumeSource) + **out = **in + } } if in.GitRepo != nil { in, out := &in.GitRepo, &out.GitRepo - *out = new(GitRepoVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(GitRepoVolumeSource) + **out = **in + } } if in.Secret != nil { in, out := &in.Secret, &out.Secret - *out = new(SecretVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(SecretVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.NFS != nil { in, out := &in.NFS, &out.NFS - *out = new(NFSVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(NFSVolumeSource) + **out = **in + } } if in.ISCSI != nil { in, out := &in.ISCSI, &out.ISCSI - *out = new(ISCSIVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ISCSIVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.Glusterfs != nil { in, out := &in.Glusterfs, &out.Glusterfs - *out = new(GlusterfsVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(GlusterfsVolumeSource) + **out = **in + } } if in.PersistentVolumeClaim != nil { in, out := &in.PersistentVolumeClaim, &out.PersistentVolumeClaim - *out = new(PersistentVolumeClaimVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(PersistentVolumeClaimVolumeSource) + **out = **in + } } if in.RBD != nil { in, out := &in.RBD, &out.RBD - *out = new(RBDVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RBDVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.FlexVolume != nil { in, out := &in.FlexVolume, &out.FlexVolume - *out = new(FlexVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(FlexVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.Cinder != nil { in, out := &in.Cinder, &out.Cinder - *out = new(CinderVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(CinderVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.CephFS != nil { in, out := &in.CephFS, &out.CephFS - *out = new(CephFSVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(CephFSVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.Flocker != nil { in, out := &in.Flocker, &out.Flocker - *out = new(FlockerVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(FlockerVolumeSource) + **out = **in + } } if in.DownwardAPI != nil { in, out := &in.DownwardAPI, &out.DownwardAPI - *out = new(DownwardAPIVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(DownwardAPIVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.FC != nil { in, out := &in.FC, &out.FC - *out = new(FCVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(FCVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.AzureFile != nil { in, out := &in.AzureFile, &out.AzureFile - *out = new(AzureFileVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(AzureFileVolumeSource) + **out = **in + } } if in.ConfigMap != nil { in, out := &in.ConfigMap, &out.ConfigMap - *out = new(ConfigMapVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ConfigMapVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.VsphereVolume != nil { in, out := &in.VsphereVolume, &out.VsphereVolume - *out = new(VsphereVirtualDiskVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(VsphereVirtualDiskVolumeSource) + **out = **in + } } if in.Quobyte != nil { in, out := &in.Quobyte, &out.Quobyte - *out = new(QuobyteVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(QuobyteVolumeSource) + **out = **in + } } if in.AzureDisk != nil { in, out := &in.AzureDisk, &out.AzureDisk - *out = new(AzureDiskVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(AzureDiskVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.PhotonPersistentDisk != nil { in, out := &in.PhotonPersistentDisk, &out.PhotonPersistentDisk - *out = new(PhotonPersistentDiskVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(PhotonPersistentDiskVolumeSource) + **out = **in + } } if in.Projected != nil { in, out := &in.Projected, &out.Projected - *out = new(ProjectedVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ProjectedVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.PortworxVolume != nil { in, out := &in.PortworxVolume, &out.PortworxVolume - *out = new(PortworxVolumeSource) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(PortworxVolumeSource) + **out = **in + } } if in.ScaleIO != nil { in, out := &in.ScaleIO, &out.ScaleIO - *out = new(ScaleIOVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(ScaleIOVolumeSource) + (*in).DeepCopyInto(*out) + } } if in.StorageOS != nil { in, out := &in.StorageOS, &out.StorageOS - *out = new(StorageOSVolumeSource) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(StorageOSVolumeSource) + (*in).DeepCopyInto(*out) + } } return } diff --git a/vendor/k8s.io/api/events/v1beta1/generated.pb.go b/vendor/k8s.io/api/events/v1beta1/generated.pb.go index b0e313c4b3..e24a82ab18 100644 --- a/vendor/k8s.io/api/events/v1beta1/generated.pb.go +++ b/vendor/k8s.io/api/events/v1beta1/generated.pb.go @@ -1251,56 +1251,56 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 814 bytes of a gzipped FileDescriptorProto + // 801 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xcd, 0x6e, 0xdb, 0x46, - 0x10, 0x16, 0x13, 0x4b, 0xb6, 0x56, 0x49, 0x2c, 0x6f, 0x0e, 0xde, 0xb8, 0x00, 0xa5, 0x3a, 0x40, - 0x60, 0x14, 0x08, 0x59, 0xa7, 0x45, 0xdb, 0x6b, 0x18, 0xbb, 0x45, 0x02, 0xbb, 0x01, 0xd6, 0x3e, - 0x15, 0x3d, 0x64, 0x45, 0x4d, 0xe8, 0xad, 0xa5, 0x5d, 0x62, 0x77, 0x29, 0xc0, 0xb7, 0x5e, 0x0a, - 0xf4, 0xd8, 0x67, 0xe8, 0x13, 0xf4, 0x31, 0x7c, 0xcc, 0x31, 0x27, 0xa1, 0x66, 0xdf, 0xa2, 0xa7, - 0x82, 0xcb, 0x95, 0x28, 0x8b, 0x16, 0xec, 0x22, 0x37, 0x72, 0xe6, 0xfb, 0x99, 0x19, 0x0e, 0x07, - 0x45, 0xe7, 0xdf, 0xe9, 0x80, 0xcb, 0xf0, 0x3c, 0x1b, 0x80, 0x12, 0x60, 0x40, 0x87, 0x13, 0x10, - 0x43, 0xa9, 0x42, 0x97, 0x60, 0x29, 0x0f, 0x61, 0x02, 0xc2, 0xe8, 0x70, 0xb2, 0x3f, 0x00, 0xc3, - 0xf6, 0xc3, 0x04, 0x04, 0x28, 0x66, 0x60, 0x18, 0xa4, 0x4a, 0x1a, 0x89, 0x9f, 0x94, 0xd0, 0x80, - 0xa5, 0x3c, 0x28, 0xa1, 0x81, 0x83, 0xee, 0x3c, 0x4f, 0xb8, 0x39, 0xcb, 0x06, 0x41, 0x2c, 0xc7, - 0x61, 0x22, 0x13, 0x19, 0x5a, 0xc6, 0x20, 0x7b, 0x6f, 0xdf, 0xec, 0x8b, 0x7d, 0x2a, 0x95, 0x76, - 0x76, 0x17, 0x4c, 0x63, 0xa9, 0x20, 0x9c, 0xd4, 0xdc, 0x76, 0xbe, 0xae, 0x30, 0x63, 0x16, 0x9f, - 0x71, 0x01, 0xea, 0x22, 0x4c, 0xcf, 0x93, 0x22, 0xa0, 0xc3, 0x31, 0x18, 0x76, 0x13, 0x2b, 0x5c, - 0xc5, 0x52, 0x99, 0x30, 0x7c, 0x0c, 0x35, 0xc2, 0x37, 0xb7, 0x11, 0x74, 0x7c, 0x06, 0x63, 0x56, - 0xe3, 0x7d, 0xb5, 0x8a, 0x97, 0x19, 0x3e, 0x0a, 0xb9, 0x30, 0xda, 0xa8, 0x65, 0xd2, 0xee, 0x9f, - 0x6d, 0xd4, 0x3c, 0x2c, 0x26, 0x87, 0xdf, 0xa1, 0x8d, 0xa2, 0x85, 0x21, 0x33, 0x8c, 0x78, 0x7d, - 0x6f, 0xaf, 0xf3, 0xe2, 0xcb, 0xa0, 0x1a, 0xef, 0x5c, 0x31, 0x48, 0xcf, 0x93, 0x22, 0xa0, 0x83, - 0x02, 0x1d, 0x4c, 0xf6, 0x83, 0xb7, 0x83, 0x5f, 0x20, 0x36, 0xc7, 0x60, 0x58, 0x84, 0x2f, 0xa7, - 0xbd, 0x46, 0x3e, 0xed, 0xa1, 0x2a, 0x46, 0xe7, 0xaa, 0xf8, 0x1d, 0x6a, 0xdb, 0x8f, 0x74, 0xca, - 0xc7, 0x40, 0xee, 0x59, 0x8b, 0xf0, 0x6e, 0x16, 0xc7, 0x3c, 0x56, 0xb2, 0xa0, 0x45, 0x5b, 0xce, - 0xa1, 0x7d, 0x38, 0x53, 0xa2, 0x95, 0x28, 0x7e, 0x83, 0x5a, 0x1a, 0x14, 0x07, 0x4d, 0xee, 0x5b, - 0xf9, 0x67, 0xc1, 0xca, 0x05, 0x09, 0xac, 0xc0, 0x89, 0x45, 0x47, 0x28, 0x9f, 0xf6, 0x5a, 0xe5, - 0x33, 0x75, 0x0a, 0xf8, 0x18, 0x3d, 0x56, 0x90, 0x4a, 0x65, 0xb8, 0x48, 0x5e, 0x49, 0x61, 0x94, - 0x1c, 0x8d, 0x40, 0x91, 0xb5, 0xbe, 0xb7, 0xd7, 0x8e, 0x3e, 0x73, 0x65, 0x3c, 0xa6, 0x75, 0x08, - 0xbd, 0x89, 0x87, 0x7f, 0x40, 0x5b, 0xf3, 0xf0, 0x6b, 0xa1, 0x0d, 0x13, 0x31, 0x90, 0xa6, 0x15, - 0x7b, 0xe2, 0xc4, 0xb6, 0xe8, 0x32, 0x80, 0xd6, 0x39, 0xf8, 0x19, 0x6a, 0xb1, 0xd8, 0x70, 0x29, - 0x48, 0xcb, 0xb2, 0x1f, 0x39, 0x76, 0xeb, 0xa5, 0x8d, 0x52, 0x97, 0x2d, 0x70, 0x0a, 0x98, 0x96, - 0x82, 0xac, 0x5f, 0xc7, 0x51, 0x1b, 0xa5, 0x2e, 0x8b, 0x4f, 0x51, 0x5b, 0x41, 0xc2, 0xd4, 0x90, - 0x8b, 0x84, 0x6c, 0xd8, 0xb1, 0x3d, 0x5d, 0x1c, 0x5b, 0xf1, 0x37, 0x54, 0x9f, 0x99, 0xc2, 0x7b, - 0x50, 0x20, 0xe2, 0x85, 0x2f, 0x41, 0x67, 0x6c, 0x5a, 0x09, 0xe1, 0x37, 0x68, 0x5d, 0xc1, 0xa8, - 0x58, 0x34, 0xd2, 0xbe, 0xbb, 0x66, 0x27, 0x9f, 0xf6, 0xd6, 0x69, 0xc9, 0xa3, 0x33, 0x01, 0xdc, - 0x47, 0x6b, 0x42, 0x1a, 0x20, 0xc8, 0xf6, 0xf1, 0xc0, 0xf9, 0xae, 0xfd, 0x28, 0x0d, 0x50, 0x9b, - 0x29, 0x10, 0xe6, 0x22, 0x05, 0xd2, 0xb9, 0x8e, 0x38, 0xbd, 0x48, 0x81, 0xda, 0x0c, 0x06, 0xd4, - 0x1d, 0x42, 0xaa, 0x20, 0x2e, 0x14, 0x4f, 0x64, 0xa6, 0x62, 0x20, 0x0f, 0x6c, 0x61, 0xbd, 0x9b, - 0x0a, 0x2b, 0x97, 0xc3, 0xc2, 0x22, 0xe2, 0xe4, 0xba, 0x07, 0x4b, 0x02, 0xb4, 0x26, 0x89, 0x7f, - 0xf7, 0x10, 0xa9, 0x82, 0xdf, 0x73, 0xa5, 0xed, 0x62, 0x6a, 0xc3, 0xc6, 0x29, 0x79, 0x68, 0xfd, - 0xbe, 0xb8, 0xdb, 0xca, 0xdb, 0x6d, 0xef, 0x3b, 0x6b, 0x72, 0xb0, 0x42, 0x93, 0xae, 0x74, 0xc3, - 0xbf, 0x79, 0x68, 0xbb, 0x4a, 0x1e, 0xb1, 0xc5, 0x4a, 0x1e, 0xfd, 0xef, 0x4a, 0x7a, 0xae, 0x92, - 0xed, 0x83, 0x9b, 0x25, 0xe9, 0x2a, 0x2f, 0xfc, 0x12, 0x6d, 0x56, 0xa9, 0x57, 0x32, 0x13, 0x86, - 0x6c, 0xf6, 0xbd, 0xbd, 0x66, 0xb4, 0xed, 0x24, 0x37, 0x0f, 0xae, 0xa7, 0xe9, 0x32, 0x7e, 0xf7, - 0x2f, 0x0f, 0x95, 0xff, 0xfb, 0x11, 0xd7, 0x06, 0xff, 0x5c, 0x3b, 0x54, 0xc1, 0xdd, 0x1a, 0x29, - 0xd8, 0xf6, 0x4c, 0x75, 0x9d, 0xf3, 0xc6, 0x2c, 0xb2, 0x70, 0xa4, 0x0e, 0x51, 0x93, 0x1b, 0x18, - 0x6b, 0x72, 0xaf, 0x7f, 0x7f, 0xaf, 0xf3, 0xa2, 0x7f, 0xdb, 0x05, 0x89, 0x1e, 0x3a, 0xb1, 0xe6, - 0xeb, 0x82, 0x46, 0x4b, 0xf6, 0x6e, 0xee, 0xa1, 0xce, 0xc2, 0x85, 0xc1, 0x4f, 0x51, 0x33, 0xb6, - 0xbd, 0x7b, 0xb6, 0xf7, 0x39, 0xa9, 0xec, 0xb8, 0xcc, 0xe1, 0x0c, 0x75, 0x47, 0x4c, 0x9b, 0xb7, - 0x03, 0x0d, 0x6a, 0x02, 0xc3, 0x4f, 0xb9, 0x93, 0xf3, 0xa5, 0x3d, 0x5a, 0x12, 0xa4, 0x35, 0x0b, - 0xfc, 0x2d, 0x6a, 0x6a, 0xc3, 0x0c, 0xd8, 0xa3, 0xd9, 0x8e, 0x3e, 0x9f, 0xd5, 0x76, 0x52, 0x04, - 0xff, 0x9d, 0xf6, 0xba, 0x0b, 0x8d, 0xd8, 0x18, 0x2d, 0xf1, 0xd1, 0xf3, 0xcb, 0x2b, 0xbf, 0xf1, - 0xe1, 0xca, 0x6f, 0x7c, 0xbc, 0xf2, 0x1b, 0xbf, 0xe6, 0xbe, 0x77, 0x99, 0xfb, 0xde, 0x87, 0xdc, - 0xf7, 0x3e, 0xe6, 0xbe, 0xf7, 0x77, 0xee, 0x7b, 0x7f, 0xfc, 0xe3, 0x37, 0x7e, 0x5a, 0x77, 0xf3, - 0xfa, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x69, 0xa9, 0x7b, 0x6e, 0xf2, 0x07, 0x00, 0x00, + 0x10, 0x16, 0x13, 0x4b, 0xb2, 0x56, 0x49, 0x2c, 0x6f, 0x0e, 0xde, 0xb8, 0x00, 0xa5, 0x2a, 0x40, + 0x20, 0x14, 0x08, 0x59, 0x07, 0x45, 0xdb, 0x6b, 0x18, 0xb9, 0x45, 0x02, 0xbb, 0x01, 0xd6, 0x3e, + 0x15, 0x3d, 0x64, 0x45, 0x4d, 0x68, 0x56, 0xe2, 0x2e, 0xb1, 0xbb, 0x12, 0xe0, 0x5b, 0x2f, 0x05, + 0x7a, 0xec, 0x33, 0xf4, 0x09, 0xfa, 0x18, 0x3e, 0xe6, 0x98, 0x93, 0x50, 0xb3, 0x6f, 0xd1, 0x53, + 0xc1, 0xe5, 0x4a, 0x94, 0xf5, 0x83, 0xa8, 0xe8, 0x4d, 0x9c, 0xf9, 0x7e, 0x66, 0x66, 0x47, 0x83, + 0x82, 0xd1, 0xb7, 0xca, 0x8b, 0x85, 0x3f, 0x9a, 0x0c, 0x40, 0x72, 0xd0, 0xa0, 0xfc, 0x29, 0xf0, + 0xa1, 0x90, 0xbe, 0x4d, 0xb0, 0x34, 0xf6, 0x61, 0x0a, 0x5c, 0x2b, 0x7f, 0x7a, 0x32, 0x00, 0xcd, + 0x4e, 0xfc, 0x08, 0x38, 0x48, 0xa6, 0x61, 0xe8, 0xa5, 0x52, 0x68, 0x81, 0x9f, 0x14, 0x50, 0x8f, + 0xa5, 0xb1, 0x57, 0x40, 0x3d, 0x0b, 0x3d, 0x7e, 0x1e, 0xc5, 0xfa, 0x6a, 0x32, 0xf0, 0x42, 0x91, + 0xf8, 0x91, 0x88, 0x84, 0x6f, 0x18, 0x83, 0xc9, 0x7b, 0xf3, 0x65, 0x3e, 0xcc, 0xaf, 0x42, 0xe9, + 0xb8, 0xbb, 0x64, 0x1a, 0x0a, 0x09, 0xfe, 0x74, 0xcd, 0xed, 0xf8, 0xab, 0x12, 0x93, 0xb0, 0xf0, + 0x2a, 0xe6, 0x20, 0xaf, 0xfd, 0x74, 0x14, 0xe5, 0x01, 0xe5, 0x27, 0xa0, 0xd9, 0x26, 0x96, 0xbf, + 0x8d, 0x25, 0x27, 0x5c, 0xc7, 0x09, 0xac, 0x11, 0xbe, 0xfe, 0x14, 0x41, 0x85, 0x57, 0x90, 0xb0, + 0x55, 0x5e, 0xf7, 0x8f, 0x06, 0xaa, 0x9e, 0xe6, 0x43, 0xc0, 0xef, 0xd0, 0x7e, 0x5e, 0xcd, 0x90, + 0x69, 0x46, 0x9c, 0x8e, 0xd3, 0x6b, 0xbe, 0xf8, 0xd2, 0x2b, 0x27, 0xb5, 0x10, 0xf5, 0xd2, 0x51, + 0x94, 0x07, 0x94, 0x97, 0xa3, 0xbd, 0xe9, 0x89, 0xf7, 0x76, 0xf0, 0x33, 0x84, 0xfa, 0x1c, 0x34, + 0x0b, 0xf0, 0xcd, 0xac, 0x5d, 0xc9, 0x66, 0x6d, 0x54, 0xc6, 0xe8, 0x42, 0x15, 0xbf, 0x43, 0x0d, + 0x33, 0xef, 0xcb, 0x38, 0x01, 0x72, 0xcf, 0x58, 0xf8, 0xbb, 0x59, 0x9c, 0xc7, 0xa1, 0x14, 0x39, + 0x2d, 0x38, 0xb4, 0x0e, 0x8d, 0xd3, 0xb9, 0x12, 0x2d, 0x45, 0xf1, 0x1b, 0x54, 0x53, 0x20, 0x63, + 0x50, 0xe4, 0xbe, 0x91, 0x7f, 0xe6, 0x6d, 0x7d, 0x6b, 0xcf, 0x08, 0x5c, 0x18, 0x74, 0x80, 0xb2, + 0x59, 0xbb, 0x56, 0xfc, 0xa6, 0x56, 0x01, 0x9f, 0xa3, 0xc7, 0x12, 0x52, 0x21, 0x75, 0xcc, 0xa3, + 0x57, 0x82, 0x6b, 0x29, 0xc6, 0x63, 0x90, 0x64, 0xaf, 0xe3, 0xf4, 0x1a, 0xc1, 0x67, 0xb6, 0x8c, + 0xc7, 0x74, 0x1d, 0x42, 0x37, 0xf1, 0xf0, 0xf7, 0xe8, 0x70, 0x11, 0x7e, 0xcd, 0x95, 0x66, 0x3c, + 0x04, 0x52, 0x35, 0x62, 0x4f, 0xac, 0xd8, 0x21, 0x5d, 0x05, 0xd0, 0x75, 0x0e, 0x7e, 0x86, 0x6a, + 0x2c, 0xd4, 0xb1, 0xe0, 0xa4, 0x66, 0xd8, 0x8f, 0x2c, 0xbb, 0xf6, 0xd2, 0x44, 0xa9, 0xcd, 0xe6, + 0x38, 0x09, 0x4c, 0x09, 0x4e, 0xea, 0x77, 0x71, 0xd4, 0x44, 0xa9, 0xcd, 0xe2, 0x4b, 0xd4, 0x90, + 0x10, 0x31, 0x39, 0x8c, 0x79, 0x44, 0xf6, 0xcd, 0xd8, 0x9e, 0x2e, 0x8f, 0x2d, 0x5f, 0xec, 0xf2, + 0x99, 0x29, 0xbc, 0x07, 0x09, 0x3c, 0x5c, 0x7a, 0x09, 0x3a, 0x67, 0xd3, 0x52, 0x08, 0xbf, 0x41, + 0x75, 0x09, 0xe3, 0x7c, 0xd1, 0x48, 0x63, 0x77, 0xcd, 0x66, 0x36, 0x6b, 0xd7, 0x69, 0xc1, 0xa3, + 0x73, 0x01, 0xdc, 0x41, 0x7b, 0x5c, 0x68, 0x20, 0xc8, 0xf4, 0xf1, 0xc0, 0xfa, 0xee, 0xfd, 0x20, + 0x34, 0x50, 0x93, 0xc9, 0x11, 0xfa, 0x3a, 0x05, 0xd2, 0xbc, 0x8b, 0xb8, 0xbc, 0x4e, 0x81, 0x9a, + 0x0c, 0x06, 0xd4, 0x1a, 0x42, 0x2a, 0x21, 0xcc, 0x15, 0x2f, 0xc4, 0x44, 0x86, 0x40, 0x1e, 0x98, + 0xc2, 0xda, 0x9b, 0x0a, 0x2b, 0x96, 0xc3, 0xc0, 0x02, 0x62, 0xe5, 0x5a, 0xfd, 0x15, 0x01, 0xba, + 0x26, 0x89, 0x7f, 0x73, 0x10, 0x29, 0x83, 0xdf, 0xc5, 0x52, 0x99, 0xc5, 0x54, 0x9a, 0x25, 0x29, + 0x79, 0x68, 0xfc, 0xbe, 0xd8, 0x6d, 0xe5, 0xcd, 0xb6, 0x77, 0xac, 0x35, 0xe9, 0x6f, 0xd1, 0xa4, + 0x5b, 0xdd, 0xf0, 0xaf, 0x0e, 0x3a, 0x2a, 0x93, 0x67, 0x6c, 0xb9, 0x92, 0x47, 0xff, 0xb9, 0x92, + 0xb6, 0xad, 0xe4, 0xa8, 0xbf, 0x59, 0x92, 0x6e, 0xf3, 0xc2, 0x2f, 0xd1, 0x41, 0x99, 0x7a, 0x25, + 0x26, 0x5c, 0x93, 0x83, 0x8e, 0xd3, 0xab, 0x06, 0x47, 0x56, 0xf2, 0xa0, 0x7f, 0x37, 0x4d, 0x57, + 0xf1, 0xdd, 0x3f, 0x1d, 0x54, 0xfc, 0xdf, 0xcf, 0x62, 0xa5, 0xf1, 0x4f, 0x6b, 0x87, 0xca, 0xdb, + 0xad, 0x91, 0x9c, 0x6d, 0xce, 0x54, 0xcb, 0x3a, 0xef, 0xcf, 0x23, 0x4b, 0x47, 0xea, 0x14, 0x55, + 0x63, 0x0d, 0x89, 0x22, 0xf7, 0x3a, 0xf7, 0x7b, 0xcd, 0x17, 0x9d, 0x4f, 0x5d, 0x90, 0xe0, 0xa1, + 0x15, 0xab, 0xbe, 0xce, 0x69, 0xb4, 0x60, 0x77, 0x33, 0x07, 0x35, 0x97, 0x2e, 0x0c, 0x7e, 0x8a, + 0xaa, 0xa1, 0xe9, 0xdd, 0x31, 0xbd, 0x2f, 0x48, 0x45, 0xc7, 0x45, 0x0e, 0x4f, 0x50, 0x6b, 0xcc, + 0x94, 0x7e, 0x3b, 0x50, 0x20, 0xa7, 0x30, 0xfc, 0x3f, 0x77, 0x72, 0xb1, 0xb4, 0x67, 0x2b, 0x82, + 0x74, 0xcd, 0x02, 0x7f, 0x83, 0xaa, 0x4a, 0x33, 0x0d, 0xe6, 0x68, 0x36, 0x82, 0xcf, 0xe7, 0xb5, + 0x5d, 0xe4, 0xc1, 0x7f, 0x66, 0xed, 0xd6, 0x52, 0x23, 0x26, 0x46, 0x0b, 0x7c, 0xf0, 0xfc, 0xe6, + 0xd6, 0xad, 0x7c, 0xb8, 0x75, 0x2b, 0x1f, 0x6f, 0xdd, 0xca, 0x2f, 0x99, 0xeb, 0xdc, 0x64, 0xae, + 0xf3, 0x21, 0x73, 0x9d, 0x8f, 0x99, 0xeb, 0xfc, 0x95, 0xb9, 0xce, 0xef, 0x7f, 0xbb, 0x95, 0x1f, + 0xeb, 0x76, 0x5e, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x25, 0x9b, 0x14, 0x4d, 0xbd, 0x07, 0x00, + 0x00, } diff --git a/vendor/k8s.io/api/events/v1beta1/generated.proto b/vendor/k8s.io/api/events/v1beta1/generated.proto index 60ee899ba0..b3e565e674 100644 --- a/vendor/k8s.io/api/events/v1beta1/generated.proto +++ b/vendor/k8s.io/api/events/v1beta1/generated.proto @@ -25,7 +25,6 @@ import "k8s.io/api/core/v1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1beta1"; diff --git a/vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go index e52e142c60..9652044b3b 100644 --- a/vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/events/v1beta1/zz_generated.deepcopy.go @@ -33,14 +33,22 @@ func (in *Event) DeepCopyInto(out *Event) { in.EventTime.DeepCopyInto(&out.EventTime) if in.Series != nil { in, out := &in.Series, &out.Series - *out = new(EventSeries) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(EventSeries) + (*in).DeepCopyInto(*out) + } } out.Regarding = in.Regarding if in.Related != nil { in, out := &in.Related, &out.Related - *out = new(v1.ObjectReference) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(v1.ObjectReference) + **out = **in + } } out.DeprecatedSource = in.DeprecatedSource in.DeprecatedFirstTimestamp.DeepCopyInto(&out.DeprecatedFirstTimestamp) diff --git a/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go b/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go index 0604fb9578..9d76a5b938 100644 --- a/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go +++ b/vendor/k8s.io/api/extensions/v1beta1/generated.pb.go @@ -12421,233 +12421,232 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 3637 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcb, 0x6f, 0x1c, 0x47, - 0x73, 0xd7, 0xec, 0x2e, 0xb9, 0xcb, 0xa2, 0xf8, 0x6a, 0xd2, 0xe4, 0x7e, 0x94, 0xc5, 0xd5, 0x37, - 0x06, 0x14, 0xc9, 0x91, 0x76, 0x2d, 0xd9, 0xd2, 0xa7, 0x58, 0x88, 0x6d, 0x2e, 0x29, 0x4a, 0x74, - 0xf8, 0x52, 0x2f, 0xa9, 0x38, 0x46, 0xe4, 0x78, 0xb8, 0xdb, 0x5c, 0x8e, 0x38, 0x3b, 0x33, 0x9e, - 0xe9, 0xa1, 0xb9, 0x40, 0x10, 0xe4, 0x10, 0x04, 0x08, 0x90, 0x20, 0xc9, 0xc1, 0x79, 0xdc, 0xe2, - 0x4b, 0x4e, 0x09, 0x92, 0x5b, 0x72, 0x30, 0x0c, 0x04, 0x70, 0x00, 0x21, 0x70, 0x00, 0xdf, 0xe2, - 0x13, 0x11, 0xd3, 0xa7, 0x20, 0xff, 0x40, 0xa0, 0x43, 0x10, 0x74, 0x4f, 0xcf, 0x7b, 0x86, 0xbb, - 0x4b, 0x4b, 0x44, 0x10, 0xe4, 0xc6, 0xed, 0xaa, 0xfa, 0x55, 0x75, 0x75, 0x75, 0x55, 0x4d, 0x77, - 0x13, 0x56, 0x0e, 0xee, 0xd9, 0x55, 0xd5, 0xa8, 0x1d, 0x38, 0xbb, 0xc4, 0xd2, 0x09, 0x25, 0x76, - 0xed, 0x90, 0xe8, 0x2d, 0xc3, 0xaa, 0x09, 0x82, 0x62, 0xaa, 0x35, 0x72, 0x44, 0x89, 0x6e, 0xab, - 0x86, 0x6e, 0xd7, 0x0e, 0x6f, 0xed, 0x12, 0xaa, 0xdc, 0xaa, 0xb5, 0x89, 0x4e, 0x2c, 0x85, 0x92, - 0x56, 0xd5, 0xb4, 0x0c, 0x6a, 0xa0, 0xcb, 0x2e, 0x7b, 0x55, 0x31, 0xd5, 0x6a, 0xc0, 0x5e, 0x15, - 0xec, 0xf3, 0x37, 0xdb, 0x2a, 0xdd, 0x77, 0x76, 0xab, 0x4d, 0xa3, 0x53, 0x6b, 0x1b, 0x6d, 0xa3, - 0xc6, 0xa5, 0x76, 0x9d, 0x3d, 0xfe, 0x8b, 0xff, 0xe0, 0x7f, 0xb9, 0x68, 0xf3, 0x72, 0x48, 0x79, - 0xd3, 0xb0, 0x48, 0xed, 0x30, 0xa1, 0x71, 0xfe, 0x7a, 0x88, 0xc7, 0x34, 0x34, 0xb5, 0xd9, 0xcd, - 0x32, 0x6e, 0xfe, 0x9d, 0x80, 0xb5, 0xa3, 0x34, 0xf7, 0x55, 0x9d, 0x58, 0xdd, 0x9a, 0x79, 0xd0, - 0xe6, 0xb2, 0x16, 0xb1, 0x0d, 0xc7, 0x6a, 0x92, 0x81, 0xa4, 0xec, 0x5a, 0x87, 0x50, 0x25, 0xcd, - 0xac, 0x5a, 0x96, 0x94, 0xe5, 0xe8, 0x54, 0xed, 0x24, 0xd5, 0xdc, 0xed, 0x25, 0x60, 0x37, 0xf7, - 0x49, 0x47, 0x49, 0xc8, 0xbd, 0x9d, 0x25, 0xe7, 0x50, 0x55, 0xab, 0xa9, 0x3a, 0xb5, 0xa9, 0x15, - 0x17, 0x92, 0xef, 0xc3, 0xd4, 0xa2, 0xa6, 0x19, 0x9f, 0x93, 0xd6, 0x8a, 0x46, 0x8e, 0x9e, 0x18, - 0x9a, 0xd3, 0x21, 0xe8, 0x2a, 0x0c, 0xb7, 0x2c, 0xf5, 0x90, 0x58, 0x65, 0xe9, 0x8a, 0x74, 0x6d, - 0xa4, 0x3e, 0xfe, 0xfc, 0xb8, 0x72, 0xe1, 0xe4, 0xb8, 0x32, 0xbc, 0xcc, 0x47, 0xb1, 0xa0, 0xca, - 0x36, 0x4c, 0x08, 0xe1, 0x47, 0x86, 0x4d, 0xb7, 0x14, 0xba, 0x8f, 0x6e, 0x03, 0x98, 0x0a, 0xdd, - 0xdf, 0xb2, 0xc8, 0x9e, 0x7a, 0x24, 0xc4, 0x91, 0x10, 0x87, 0x2d, 0x9f, 0x82, 0x43, 0x5c, 0xe8, - 0x06, 0x94, 0x2c, 0xa2, 0xb4, 0x36, 0x75, 0xad, 0x5b, 0xce, 0x5d, 0x91, 0xae, 0x95, 0xea, 0x93, - 0x42, 0xa2, 0x84, 0xc5, 0x38, 0xf6, 0x39, 0xe4, 0xbf, 0x94, 0xe0, 0x67, 0x4b, 0x8e, 0x4d, 0x8d, - 0xce, 0x3a, 0xa1, 0x96, 0xda, 0x5c, 0x72, 0x2c, 0x8b, 0xe8, 0xb4, 0x41, 0x15, 0xea, 0xd8, 0xe8, - 0x0a, 0x14, 0x74, 0xa5, 0x43, 0x84, 0xe6, 0x8b, 0x02, 0xa7, 0xb0, 0xa1, 0x74, 0x08, 0xe6, 0x14, - 0xf4, 0x31, 0x0c, 0x1d, 0x2a, 0x9a, 0x43, 0xb8, 0xaa, 0xd1, 0xdb, 0xd5, 0x6a, 0x10, 0xa8, 0xbe, - 0xdb, 0xaa, 0xe6, 0x41, 0x9b, 0x47, 0xae, 0x17, 0x0b, 0xd5, 0xc7, 0x8e, 0xa2, 0x53, 0x95, 0x76, - 0xeb, 0x33, 0x02, 0xf2, 0xa2, 0xd0, 0xfb, 0x84, 0x61, 0x61, 0x17, 0x52, 0xfe, 0x1d, 0xb8, 0x9c, - 0x69, 0xda, 0x9a, 0x6a, 0x53, 0xf4, 0x14, 0x86, 0x54, 0x4a, 0x3a, 0x76, 0x59, 0xba, 0x92, 0xbf, - 0x36, 0x7a, 0xfb, 0x5e, 0xf5, 0xd4, 0x5d, 0x52, 0xcd, 0x04, 0xab, 0x8f, 0x09, 0x33, 0x86, 0x56, - 0x19, 0x1c, 0x76, 0x51, 0xe5, 0x3f, 0x95, 0x00, 0x85, 0x65, 0xb6, 0x15, 0xab, 0x4d, 0x68, 0x1f, - 0x4e, 0xf9, 0x8d, 0x9f, 0xe6, 0x94, 0x69, 0x01, 0x39, 0xea, 0x2a, 0x8c, 0xf8, 0xc4, 0x84, 0xd9, - 0xa4, 0x49, 0xdc, 0x19, 0x4f, 0xa2, 0xce, 0xb8, 0x35, 0x80, 0x33, 0x5c, 0x94, 0x0c, 0x2f, 0x7c, - 0x91, 0x83, 0x91, 0x65, 0x85, 0x74, 0x0c, 0xbd, 0x41, 0x28, 0xfa, 0x14, 0x4a, 0x6c, 0x6b, 0xb6, - 0x14, 0xaa, 0x70, 0x07, 0x8c, 0xde, 0x7e, 0xeb, 0xb4, 0xd9, 0xd9, 0x55, 0xc6, 0x5d, 0x3d, 0xbc, - 0x55, 0xdd, 0xdc, 0x7d, 0x46, 0x9a, 0x74, 0x9d, 0x50, 0x25, 0x88, 0xe0, 0x60, 0x0c, 0xfb, 0xa8, - 0x68, 0x03, 0x0a, 0xb6, 0x49, 0x9a, 0xc2, 0x77, 0x37, 0x7a, 0x4c, 0xc3, 0xb7, 0xac, 0x61, 0x92, - 0x66, 0xb0, 0x18, 0xec, 0x17, 0xe6, 0x38, 0xe8, 0x09, 0x0c, 0xdb, 0x7c, 0x95, 0xcb, 0xf9, 0xc4, - 0x6a, 0x9c, 0x8e, 0xe8, 0xc6, 0x86, 0xbf, 0x5d, 0xdd, 0xdf, 0x58, 0xa0, 0xc9, 0xff, 0x91, 0x03, - 0xe4, 0xf3, 0x2e, 0x19, 0x7a, 0x4b, 0xa5, 0xaa, 0xa1, 0xa3, 0x77, 0xa1, 0x40, 0xbb, 0xa6, 0x17, - 0x1d, 0x57, 0x3d, 0x83, 0xb6, 0xbb, 0x26, 0x79, 0x71, 0x5c, 0x99, 0x4d, 0x4a, 0x30, 0x0a, 0xe6, - 0x32, 0x68, 0xcd, 0x37, 0x35, 0xc7, 0xa5, 0xdf, 0x89, 0xaa, 0x7e, 0x71, 0x5c, 0x49, 0xc9, 0xdc, - 0x55, 0x1f, 0x29, 0x6a, 0x20, 0x3a, 0x04, 0xa4, 0x29, 0x36, 0xdd, 0xb6, 0x14, 0xdd, 0x76, 0x35, - 0xa9, 0x1d, 0x22, 0x9c, 0xf0, 0x66, 0x7f, 0x8b, 0xc6, 0x24, 0xea, 0xf3, 0xc2, 0x0a, 0xb4, 0x96, - 0x40, 0xc3, 0x29, 0x1a, 0x58, 0xbe, 0xb3, 0x88, 0x62, 0x1b, 0x7a, 0xb9, 0x10, 0xcd, 0x77, 0x98, - 0x8f, 0x62, 0x41, 0x45, 0xd7, 0xa1, 0xd8, 0x21, 0xb6, 0xad, 0xb4, 0x49, 0x79, 0x88, 0x33, 0x4e, - 0x08, 0xc6, 0xe2, 0xba, 0x3b, 0x8c, 0x3d, 0xba, 0xfc, 0x95, 0x04, 0x63, 0xbe, 0xe7, 0x78, 0xb4, - 0xff, 0x66, 0x22, 0x0e, 0xab, 0xfd, 0x4d, 0x89, 0x49, 0xf3, 0x28, 0xf4, 0xb3, 0xa2, 0x37, 0x12, - 0x8a, 0xc1, 0x75, 0x6f, 0x2f, 0xe5, 0xf8, 0x5e, 0xba, 0xd6, 0x6f, 0xc8, 0x64, 0x6c, 0xa1, 0x3f, - 0x2b, 0x84, 0xcc, 0x67, 0xa1, 0x89, 0x9e, 0x42, 0xc9, 0x26, 0x1a, 0x69, 0x52, 0xc3, 0x12, 0xe6, - 0xbf, 0xdd, 0xa7, 0xf9, 0xca, 0x2e, 0xd1, 0x1a, 0x42, 0xb4, 0x7e, 0x91, 0xd9, 0xef, 0xfd, 0xc2, - 0x3e, 0x24, 0x7a, 0x0c, 0x25, 0x4a, 0x3a, 0xa6, 0xa6, 0x50, 0x2f, 0x07, 0xbd, 0x11, 0x9e, 0x02, - 0x8b, 0x1c, 0x06, 0xb6, 0x65, 0xb4, 0xb6, 0x05, 0x1b, 0xdf, 0x3e, 0xbe, 0x4b, 0xbc, 0x51, 0xec, - 0xc3, 0xa0, 0x43, 0x18, 0x77, 0xcc, 0x16, 0xe3, 0xa4, 0xac, 0xe2, 0xb5, 0xbb, 0x22, 0x92, 0xee, - 0xf6, 0xeb, 0x9b, 0x9d, 0x88, 0x74, 0x7d, 0x56, 0xe8, 0x1a, 0x8f, 0x8e, 0xe3, 0x98, 0x16, 0xb4, - 0x08, 0x13, 0x1d, 0x55, 0x67, 0x95, 0xab, 0xdb, 0x20, 0x4d, 0x43, 0x6f, 0xd9, 0x3c, 0xac, 0x86, - 0xea, 0x73, 0x02, 0x60, 0x62, 0x3d, 0x4a, 0xc6, 0x71, 0x7e, 0xf4, 0x21, 0x20, 0x6f, 0x1a, 0x0f, - 0xdd, 0x82, 0xad, 0x1a, 0x3a, 0x8f, 0xb9, 0x7c, 0x10, 0xdc, 0xdb, 0x09, 0x0e, 0x9c, 0x22, 0x85, - 0xd6, 0x60, 0xc6, 0x22, 0x87, 0x2a, 0x9b, 0xe3, 0x23, 0xd5, 0xa6, 0x86, 0xd5, 0x5d, 0x53, 0x3b, - 0x2a, 0x2d, 0x0f, 0x73, 0x9b, 0xca, 0x27, 0xc7, 0x95, 0x19, 0x9c, 0x42, 0xc7, 0xa9, 0x52, 0xf2, - 0x9f, 0x0f, 0xc3, 0x44, 0x2c, 0xdf, 0xa0, 0x27, 0x30, 0xdb, 0x74, 0x8b, 0xd3, 0x86, 0xd3, 0xd9, - 0x25, 0x56, 0xa3, 0xb9, 0x4f, 0x5a, 0x8e, 0x46, 0x5a, 0x3c, 0x50, 0x86, 0xea, 0x0b, 0xc2, 0xe2, - 0xd9, 0xa5, 0x54, 0x2e, 0x9c, 0x21, 0xcd, 0xbc, 0xa0, 0xf3, 0xa1, 0x75, 0xd5, 0xb6, 0x7d, 0xcc, - 0x1c, 0xc7, 0xf4, 0xbd, 0xb0, 0x91, 0xe0, 0xc0, 0x29, 0x52, 0xcc, 0xc6, 0x16, 0xb1, 0x55, 0x8b, - 0xb4, 0xe2, 0x36, 0xe6, 0xa3, 0x36, 0x2e, 0xa7, 0x72, 0xe1, 0x0c, 0x69, 0x74, 0x07, 0x46, 0x5d, - 0x6d, 0x7c, 0xfd, 0xc4, 0x42, 0xfb, 0xe5, 0x70, 0x23, 0x20, 0xe1, 0x30, 0x1f, 0x9b, 0x9a, 0xb1, - 0x6b, 0x13, 0xeb, 0x90, 0xb4, 0xb2, 0x17, 0x78, 0x33, 0xc1, 0x81, 0x53, 0xa4, 0xd8, 0xd4, 0xdc, - 0x08, 0x4c, 0x4c, 0x6d, 0x38, 0x3a, 0xb5, 0x9d, 0x54, 0x2e, 0x9c, 0x21, 0xcd, 0xe2, 0xd8, 0x35, - 0x79, 0xf1, 0x50, 0x51, 0x35, 0x65, 0x57, 0x23, 0xe5, 0x62, 0x34, 0x8e, 0x37, 0xa2, 0x64, 0x1c, - 0xe7, 0x47, 0x0f, 0x61, 0xca, 0x1d, 0xda, 0xd1, 0x15, 0x1f, 0xa4, 0xc4, 0x41, 0x7e, 0x26, 0x40, - 0xa6, 0x36, 0xe2, 0x0c, 0x38, 0x29, 0x83, 0xde, 0x85, 0xf1, 0xa6, 0xa1, 0x69, 0x3c, 0x1e, 0x97, - 0x0c, 0x47, 0xa7, 0xe5, 0x11, 0x8e, 0x82, 0xd8, 0x7e, 0x5c, 0x8a, 0x50, 0x70, 0x8c, 0x13, 0x11, - 0x80, 0xa6, 0x57, 0x70, 0xec, 0x32, 0xf4, 0xd5, 0x6b, 0x24, 0x8b, 0x5e, 0xd0, 0x03, 0xf8, 0x43, - 0x36, 0x0e, 0x01, 0xcb, 0xff, 0x22, 0xc1, 0x5c, 0x46, 0xea, 0x40, 0xef, 0x47, 0x4a, 0xec, 0x2f, - 0xc7, 0x4a, 0xec, 0xa5, 0x0c, 0xb1, 0x50, 0x9d, 0xd5, 0x61, 0xcc, 0x62, 0xb3, 0xd2, 0xdb, 0x2e, - 0x8b, 0xc8, 0x91, 0x77, 0x7a, 0x4c, 0x03, 0x87, 0x65, 0x82, 0x9c, 0x3f, 0x75, 0x72, 0x5c, 0x19, - 0x8b, 0xd0, 0x70, 0x14, 0x5e, 0xfe, 0x8b, 0x1c, 0xc0, 0x32, 0x31, 0x35, 0xa3, 0xdb, 0x21, 0xfa, - 0x79, 0xf4, 0x50, 0x9b, 0x91, 0x1e, 0xea, 0x66, 0xaf, 0xe5, 0xf1, 0x4d, 0xcb, 0x6c, 0xa2, 0x7e, - 0x3d, 0xd6, 0x44, 0xd5, 0xfa, 0x87, 0x3c, 0xbd, 0x8b, 0xfa, 0xb7, 0x3c, 0x4c, 0x07, 0xcc, 0x41, - 0x1b, 0x75, 0x3f, 0xb2, 0xc6, 0xbf, 0x14, 0x5b, 0xe3, 0xb9, 0x14, 0x91, 0x57, 0xd6, 0x47, 0xbd, - 0xfc, 0x7e, 0x06, 0x3d, 0x83, 0x71, 0xd6, 0x38, 0xb9, 0xe1, 0xc1, 0xdb, 0xb2, 0xe1, 0x81, 0xdb, - 0x32, 0xbf, 0x80, 0xae, 0x45, 0x90, 0x70, 0x0c, 0x39, 0xa3, 0x0d, 0x2c, 0xbe, 0xea, 0x36, 0x50, - 0xfe, 0x5a, 0x82, 0xf1, 0x60, 0x99, 0xce, 0xa1, 0x69, 0xdb, 0x88, 0x36, 0x6d, 0xd7, 0xfb, 0x0e, - 0xd1, 0x8c, 0xae, 0xed, 0xbf, 0x58, 0x83, 0xef, 0x33, 0xb1, 0x0d, 0xbe, 0xab, 0x34, 0x0f, 0xfa, - 0xf8, 0xfc, 0xfb, 0x42, 0x02, 0x24, 0xaa, 0xc0, 0xa2, 0xae, 0x1b, 0x54, 0x71, 0x73, 0xa5, 0x6b, - 0xd6, 0x6a, 0xdf, 0x66, 0x79, 0x1a, 0xab, 0x3b, 0x09, 0xac, 0x07, 0x3a, 0xb5, 0xba, 0xc1, 0x8a, - 0x24, 0x19, 0x70, 0x8a, 0x01, 0x48, 0x01, 0xb0, 0x04, 0xe6, 0xb6, 0x21, 0x36, 0xf2, 0xcd, 0x3e, - 0x72, 0x1e, 0x13, 0x58, 0x32, 0xf4, 0x3d, 0xb5, 0x1d, 0xa4, 0x1d, 0xec, 0x03, 0xe1, 0x10, 0xe8, - 0xfc, 0x03, 0x98, 0xcb, 0xb0, 0x16, 0x4d, 0x42, 0xfe, 0x80, 0x74, 0x5d, 0xb7, 0x61, 0xf6, 0x27, - 0x9a, 0x09, 0x7f, 0x26, 0x8f, 0x88, 0x2f, 0xdc, 0x77, 0x73, 0xf7, 0x24, 0xf9, 0xab, 0xa1, 0x70, - 0xec, 0xf0, 0x8e, 0xf9, 0x1a, 0x94, 0x2c, 0x62, 0x6a, 0x6a, 0x53, 0xb1, 0x45, 0x23, 0x74, 0xd1, - 0x3d, 0xd2, 0x70, 0xc7, 0xb0, 0x4f, 0x8d, 0xf4, 0xd6, 0xb9, 0x57, 0xdb, 0x5b, 0xe7, 0x5f, 0x4e, - 0x6f, 0xfd, 0x5b, 0x50, 0xb2, 0xbd, 0xae, 0xba, 0xc0, 0x21, 0x6f, 0x0d, 0x90, 0x5f, 0x45, 0x43, - 0xed, 0x2b, 0xf0, 0x5b, 0x69, 0x1f, 0x34, 0xad, 0x89, 0x1e, 0x1a, 0xb0, 0x89, 0x7e, 0xa9, 0x8d, - 0x2f, 0xcb, 0xa9, 0xa6, 0xe2, 0xd8, 0xa4, 0xc5, 0x13, 0x51, 0x29, 0xc8, 0xa9, 0x5b, 0x7c, 0x14, - 0x0b, 0x2a, 0x7a, 0x1a, 0x09, 0xd9, 0xd2, 0x59, 0x42, 0x76, 0x3c, 0x3b, 0x5c, 0xd1, 0x0e, 0xcc, - 0x99, 0x96, 0xd1, 0xb6, 0x88, 0x6d, 0x2f, 0x13, 0xa5, 0xa5, 0xa9, 0x3a, 0xf1, 0xfc, 0xe3, 0x76, - 0x44, 0x97, 0x4e, 0x8e, 0x2b, 0x73, 0x5b, 0xe9, 0x2c, 0x38, 0x4b, 0x56, 0x7e, 0x5e, 0x80, 0xc9, - 0x78, 0x05, 0xcc, 0x68, 0x52, 0xa5, 0x33, 0x35, 0xa9, 0x37, 0x42, 0x9b, 0xc1, 0xed, 0xe0, 0x43, - 0x67, 0x7c, 0x89, 0x0d, 0xb1, 0x08, 0x13, 0x22, 0x1b, 0x78, 0x44, 0xd1, 0xa6, 0xfb, 0xab, 0xbf, - 0x13, 0x25, 0xe3, 0x38, 0x3f, 0x6b, 0x3d, 0x83, 0x8e, 0xd2, 0x03, 0x29, 0x44, 0x5b, 0xcf, 0xc5, - 0x38, 0x03, 0x4e, 0xca, 0xa0, 0x75, 0x98, 0x76, 0xf4, 0x24, 0x94, 0x1b, 0x8d, 0x97, 0x04, 0xd4, - 0xf4, 0x4e, 0x92, 0x05, 0xa7, 0xc9, 0xa1, 0xbd, 0x48, 0x37, 0x3a, 0xcc, 0x33, 0xec, 0xed, 0xbe, - 0xf7, 0x4e, 0xdf, 0xed, 0x28, 0xba, 0x0f, 0x63, 0x16, 0xff, 0xee, 0xf0, 0x0c, 0x76, 0x7b, 0xf7, - 0xd7, 0x84, 0xd8, 0x18, 0x0e, 0x13, 0x71, 0x94, 0x37, 0xa5, 0xdd, 0x2e, 0xf5, 0xdb, 0x6e, 0xcb, - 0xff, 0x24, 0x85, 0x8b, 0x90, 0xdf, 0x02, 0xf7, 0x3a, 0x65, 0x4a, 0x48, 0x84, 0xba, 0x23, 0x23, - 0xbd, 0xfb, 0xbd, 0x3b, 0x50, 0xf7, 0x1b, 0x14, 0xcf, 0xde, 0xed, 0xef, 0x97, 0x12, 0xcc, 0xae, - 0x34, 0x1e, 0x5a, 0x86, 0x63, 0x7a, 0xe6, 0x6c, 0x9a, 0xae, 0x5f, 0x7f, 0x01, 0x05, 0xcb, 0xd1, - 0xbc, 0x79, 0xbc, 0xe1, 0xcd, 0x03, 0x3b, 0x1a, 0x9b, 0xc7, 0x74, 0x4c, 0xca, 0x9d, 0x04, 0x13, - 0x40, 0x1b, 0x30, 0x6c, 0x29, 0x7a, 0x9b, 0x78, 0x65, 0xf5, 0x6a, 0x0f, 0xeb, 0x57, 0x97, 0x31, - 0x63, 0x0f, 0x35, 0x6f, 0x5c, 0x1a, 0x0b, 0x14, 0xf9, 0x8f, 0x24, 0x98, 0x78, 0xb4, 0xbd, 0xbd, - 0xb5, 0xaa, 0xf3, 0x1d, 0xcd, 0x4f, 0xdf, 0xaf, 0x40, 0xc1, 0x54, 0xe8, 0x7e, 0xbc, 0xd2, 0x33, - 0x1a, 0xe6, 0x14, 0xf4, 0x11, 0x14, 0x59, 0x26, 0x21, 0x7a, 0xab, 0xcf, 0x56, 0x5b, 0xc0, 0xd7, - 0x5d, 0xa1, 0xa0, 0x43, 0x14, 0x03, 0xd8, 0x83, 0x93, 0x0f, 0x60, 0x26, 0x64, 0x0e, 0xf3, 0x07, - 0x3f, 0x06, 0x46, 0x0d, 0x18, 0x62, 0x9a, 0xbd, 0x53, 0xde, 0x5e, 0x87, 0x99, 0xb1, 0x29, 0x05, - 0x9d, 0x0e, 0xfb, 0x65, 0x63, 0x17, 0x4b, 0x5e, 0x87, 0x31, 0x7e, 0xe5, 0x60, 0x58, 0x94, 0xbb, - 0x05, 0x5d, 0x86, 0x7c, 0x47, 0xd5, 0x45, 0x9d, 0x1d, 0x15, 0x32, 0x79, 0x56, 0x23, 0xd8, 0x38, - 0x27, 0x2b, 0x47, 0x22, 0xf3, 0x04, 0x64, 0xe5, 0x08, 0xb3, 0x71, 0xf9, 0x21, 0x14, 0x85, 0xbb, - 0xc3, 0x40, 0xf9, 0xd3, 0x81, 0xf2, 0x29, 0x40, 0x9b, 0x50, 0x5c, 0xdd, 0xaa, 0x6b, 0x86, 0xdb, - 0x75, 0x35, 0xd5, 0x96, 0x15, 0x5f, 0x8b, 0xa5, 0xd5, 0x65, 0x8c, 0x39, 0x05, 0xc9, 0x30, 0x4c, - 0x8e, 0x9a, 0xc4, 0xa4, 0x3c, 0x22, 0x46, 0xea, 0xc0, 0x56, 0xf9, 0x01, 0x1f, 0xc1, 0x82, 0x22, - 0xff, 0x71, 0x0e, 0x8a, 0xc2, 0x1d, 0xe7, 0xf0, 0x15, 0xb6, 0x16, 0xf9, 0x0a, 0x7b, 0xb3, 0xbf, - 0xd0, 0xc8, 0xfc, 0x04, 0xdb, 0x8e, 0x7d, 0x82, 0xdd, 0xe8, 0x13, 0xef, 0xf4, 0xef, 0xaf, 0xbf, - 0x97, 0x60, 0x3c, 0x1a, 0x94, 0xe8, 0x0e, 0x8c, 0xb2, 0x82, 0xa3, 0x36, 0xc9, 0x46, 0xd0, 0xe7, - 0xfa, 0x87, 0x30, 0x8d, 0x80, 0x84, 0xc3, 0x7c, 0xa8, 0xed, 0x8b, 0xb1, 0x38, 0x12, 0x93, 0xce, - 0x76, 0xa9, 0x43, 0x55, 0xad, 0xea, 0x5e, 0xa3, 0x55, 0x57, 0x75, 0xba, 0x69, 0x35, 0xa8, 0xa5, - 0xea, 0xed, 0x84, 0x22, 0x1e, 0x94, 0x61, 0x64, 0xf9, 0x1f, 0x25, 0x18, 0x15, 0x26, 0x9f, 0xc3, - 0x57, 0xc5, 0xaf, 0x45, 0xbf, 0x2a, 0xae, 0xf6, 0xb9, 0xc1, 0xd3, 0x3f, 0x29, 0xfe, 0x3a, 0x30, - 0x9d, 0x6d, 0x69, 0x16, 0xd5, 0xfb, 0x86, 0x4d, 0xe3, 0x51, 0xcd, 0x36, 0x23, 0xe6, 0x14, 0xe4, - 0xc0, 0xa4, 0x1a, 0xcb, 0x01, 0xc2, 0xb5, 0xb5, 0xfe, 0x2c, 0xf1, 0xc5, 0xea, 0x65, 0x01, 0x3f, - 0x19, 0xa7, 0xe0, 0x84, 0x0a, 0x99, 0x40, 0x82, 0x0b, 0x3d, 0x86, 0xc2, 0x3e, 0xa5, 0x66, 0xca, - 0x79, 0x75, 0x8f, 0xcc, 0x13, 0x98, 0x50, 0xe2, 0xb3, 0xdb, 0xde, 0xde, 0xc2, 0x1c, 0x4a, 0xfe, - 0xef, 0xc0, 0x1f, 0x0d, 0x37, 0xc6, 0xfd, 0x7c, 0x2a, 0x9d, 0x25, 0x9f, 0x8e, 0xa6, 0xe5, 0x52, - 0xf4, 0x08, 0xf2, 0x54, 0xeb, 0xf7, 0xb3, 0x50, 0x20, 0x6e, 0xaf, 0x35, 0x82, 0x84, 0xb4, 0xbd, - 0xd6, 0xc0, 0x0c, 0x02, 0x6d, 0xc2, 0x10, 0xab, 0x3e, 0x6c, 0x0b, 0xe6, 0xfb, 0xdf, 0xd2, 0x6c, - 0xfe, 0x41, 0x40, 0xb0, 0x5f, 0x36, 0x76, 0x71, 0xe4, 0xcf, 0x60, 0x2c, 0xb2, 0x4f, 0xd1, 0xa7, - 0x70, 0x51, 0x33, 0x94, 0x56, 0x5d, 0xd1, 0x14, 0xbd, 0x49, 0xbc, 0xcb, 0x81, 0xab, 0x69, 0x5f, - 0x18, 0x6b, 0x21, 0x3e, 0xb1, 0xcb, 0xfd, 0xeb, 0xd4, 0x30, 0x0d, 0x47, 0x10, 0x65, 0x05, 0x20, - 0x98, 0x23, 0xaa, 0xc0, 0x10, 0x8b, 0x33, 0xb7, 0x9e, 0x8c, 0xd4, 0x47, 0x98, 0x85, 0x2c, 0xfc, - 0x6c, 0xec, 0x8e, 0xa3, 0xdb, 0x00, 0x36, 0x69, 0x5a, 0x84, 0xf2, 0x64, 0x90, 0x8b, 0x5e, 0x41, - 0x37, 0x7c, 0x0a, 0x0e, 0x71, 0xc9, 0xff, 0x2c, 0xc1, 0xd8, 0x06, 0xa1, 0x9f, 0x1b, 0xd6, 0xc1, - 0x16, 0x7f, 0x3a, 0x70, 0x0e, 0xc9, 0x16, 0x47, 0x92, 0xed, 0x5b, 0x3d, 0x56, 0x26, 0x62, 0x5d, - 0x56, 0xca, 0x95, 0xbf, 0x96, 0x60, 0x2e, 0xc2, 0xf9, 0x20, 0xd8, 0xba, 0x3b, 0x30, 0x64, 0x1a, - 0x16, 0xf5, 0x0a, 0xf1, 0x40, 0x0a, 0x59, 0x1a, 0x0b, 0x95, 0x62, 0x06, 0x83, 0x5d, 0x34, 0xb4, - 0x06, 0x39, 0x6a, 0x88, 0x50, 0x1d, 0x0c, 0x93, 0x10, 0xab, 0x0e, 0x02, 0x33, 0xb7, 0x6d, 0xe0, - 0x1c, 0x35, 0xd8, 0x42, 0x94, 0x23, 0x5c, 0xe1, 0xe4, 0xf3, 0x8a, 0x66, 0x80, 0xa1, 0xb0, 0x67, - 0x19, 0x9d, 0x33, 0xcf, 0xc1, 0x5f, 0x88, 0x15, 0xcb, 0xe8, 0x60, 0x8e, 0x25, 0x7f, 0x23, 0xc1, - 0x54, 0x84, 0xf3, 0x1c, 0x12, 0xff, 0xe3, 0x68, 0xe2, 0xbf, 0x31, 0xc8, 0x44, 0x32, 0xd2, 0xff, - 0x37, 0xb9, 0xd8, 0x34, 0xd8, 0x84, 0xd1, 0x1e, 0x8c, 0x9a, 0x46, 0xab, 0xf1, 0x12, 0xae, 0x03, - 0x27, 0x58, 0xdd, 0xdc, 0x0a, 0xb0, 0x70, 0x18, 0x18, 0x1d, 0xc1, 0x94, 0xae, 0x74, 0x88, 0x6d, - 0x2a, 0x4d, 0xd2, 0x78, 0x09, 0x07, 0x24, 0xaf, 0xf1, 0xfb, 0x86, 0x38, 0x22, 0x4e, 0x2a, 0x41, - 0xeb, 0x50, 0x54, 0x4d, 0xde, 0xc7, 0x89, 0xde, 0xa5, 0x67, 0x15, 0x75, 0xbb, 0x3e, 0x37, 0x9f, - 0x8b, 0x1f, 0xd8, 0xc3, 0x90, 0xff, 0x26, 0x1e, 0x0d, 0x2c, 0xfe, 0xd0, 0x43, 0x28, 0xf1, 0x47, - 0x38, 0x4d, 0x43, 0xf3, 0x6e, 0x06, 0xd8, 0xca, 0x6e, 0x89, 0xb1, 0x17, 0xc7, 0x95, 0x4b, 0x29, - 0x87, 0xbe, 0x1e, 0x19, 0xfb, 0xc2, 0x68, 0x03, 0x0a, 0xe6, 0x4f, 0xe9, 0x60, 0x78, 0x91, 0xe3, - 0x6d, 0x0b, 0xc7, 0x91, 0x7f, 0x2f, 0x1f, 0x33, 0x97, 0x97, 0xba, 0x67, 0x2f, 0x6d, 0xd5, 0xfd, - 0x8e, 0x29, 0x73, 0xe5, 0x77, 0xa1, 0x28, 0x2a, 0xbc, 0x08, 0xe6, 0x5f, 0x0c, 0x12, 0xcc, 0xe1, - 0x2a, 0xe6, 0x7f, 0xb0, 0x78, 0x83, 0x1e, 0x30, 0xfa, 0x04, 0x86, 0x89, 0xab, 0xc2, 0xad, 0x8d, - 0x77, 0x07, 0x51, 0x11, 0xe4, 0xd5, 0xa0, 0x51, 0x15, 0x63, 0x02, 0x15, 0xbd, 0xcf, 0xfc, 0xc5, - 0x78, 0xd9, 0x47, 0xa0, 0x5d, 0x2e, 0xf0, 0x72, 0x75, 0xd9, 0x9d, 0xb6, 0x3f, 0xfc, 0xe2, 0xb8, - 0x02, 0xc1, 0x4f, 0x1c, 0x96, 0x90, 0xff, 0x55, 0x82, 0x29, 0xee, 0xa1, 0xa6, 0x63, 0xa9, 0xb4, - 0x7b, 0x6e, 0x85, 0xe9, 0x49, 0xa4, 0x30, 0xbd, 0xd3, 0xc3, 0x2d, 0x09, 0x0b, 0x33, 0x8b, 0xd3, - 0xb7, 0x12, 0xbc, 0x96, 0xe0, 0x3e, 0x87, 0xbc, 0xb8, 0x13, 0xcd, 0x8b, 0x6f, 0x0d, 0x3a, 0xa1, - 0xac, 0xd6, 0x78, 0x3c, 0x65, 0x3a, 0x7c, 0xa7, 0xdc, 0x06, 0x30, 0x2d, 0xf5, 0x50, 0xd5, 0x48, - 0x5b, 0x5c, 0x82, 0x97, 0x42, 0x8f, 0xe0, 0x7c, 0x0a, 0x0e, 0x71, 0x21, 0x1b, 0x66, 0x5b, 0x64, - 0x4f, 0x71, 0x34, 0xba, 0xd8, 0x6a, 0x2d, 0x29, 0xa6, 0xb2, 0xab, 0x6a, 0x2a, 0x55, 0xc5, 0x71, - 0xc1, 0x48, 0xfd, 0xbe, 0x7b, 0x39, 0x9d, 0xc6, 0xf1, 0xe2, 0xb8, 0x72, 0x39, 0xed, 0x76, 0xc8, - 0x63, 0xe9, 0xe2, 0x0c, 0x68, 0xd4, 0x85, 0xb2, 0x45, 0x3e, 0x73, 0x54, 0x8b, 0xb4, 0x96, 0x2d, - 0xc3, 0x8c, 0xa8, 0xcd, 0x73, 0xb5, 0xbf, 0x7a, 0x72, 0x5c, 0x29, 0xe3, 0x0c, 0x9e, 0xde, 0x8a, - 0x33, 0xe1, 0xd1, 0x33, 0x98, 0x56, 0xdc, 0xb7, 0x83, 0x11, 0xad, 0xee, 0x2e, 0xb9, 0x77, 0x72, - 0x5c, 0x99, 0x5e, 0x4c, 0x92, 0x7b, 0x2b, 0x4c, 0x03, 0x45, 0x35, 0x28, 0x1e, 0xf2, 0x97, 0x8d, - 0x76, 0x79, 0x88, 0xe3, 0xb3, 0x42, 0x50, 0x74, 0x1f, 0x3b, 0x32, 0xcc, 0xe1, 0x95, 0x06, 0xdf, - 0x7d, 0x1e, 0x17, 0xfb, 0xa0, 0x64, 0xbd, 0xa4, 0xd8, 0xf1, 0xfc, 0xc4, 0xb8, 0x14, 0x64, 0xad, - 0x47, 0x01, 0x09, 0x87, 0xf9, 0xd0, 0x53, 0x18, 0xd9, 0x17, 0xa7, 0x12, 0x76, 0xb9, 0xd8, 0x57, - 0x11, 0x8e, 0x9c, 0x62, 0xd4, 0xa7, 0x84, 0x8a, 0x11, 0x6f, 0xd8, 0xc6, 0x01, 0x22, 0xba, 0x0e, - 0x45, 0xfe, 0x63, 0x75, 0x99, 0x1f, 0xc7, 0x95, 0x82, 0xdc, 0xf6, 0xc8, 0x1d, 0xc6, 0x1e, 0xdd, - 0x63, 0x5d, 0xdd, 0x5a, 0xe2, 0xc7, 0xc2, 0x31, 0xd6, 0xd5, 0xad, 0x25, 0xec, 0xd1, 0xd1, 0xa7, - 0x50, 0xb4, 0xc9, 0x9a, 0xaa, 0x3b, 0x47, 0x65, 0xe8, 0xeb, 0x52, 0xb9, 0xf1, 0x80, 0x73, 0xc7, - 0x0e, 0xc6, 0x02, 0x0d, 0x82, 0x8e, 0x3d, 0x58, 0xb4, 0x0f, 0x23, 0x96, 0xa3, 0x2f, 0xda, 0x3b, - 0x36, 0xb1, 0xca, 0xa3, 0x5c, 0x47, 0xaf, 0x74, 0x8e, 0x3d, 0xfe, 0xb8, 0x16, 0xdf, 0x43, 0x3e, - 0x07, 0x0e, 0xc0, 0xd1, 0x1f, 0x4a, 0x80, 0x6c, 0xc7, 0x34, 0x35, 0xd2, 0x21, 0x3a, 0x55, 0x34, - 0x7e, 0x16, 0x67, 0x97, 0x2f, 0x72, 0x9d, 0x1f, 0xf4, 0x9a, 0x57, 0x42, 0x30, 0xae, 0xdc, 0x3f, - 0xf4, 0x4e, 0xb2, 0xe2, 0x14, 0xbd, 0xcc, 0xb5, 0x7b, 0x36, 0xff, 0xbb, 0x3c, 0xd6, 0x97, 0x6b, - 0xd3, 0xcf, 0x1c, 0x03, 0xd7, 0x0a, 0x3a, 0xf6, 0x60, 0xd1, 0x13, 0x98, 0xf5, 0x1e, 0xc6, 0x62, - 0xc3, 0xa0, 0x2b, 0xaa, 0x46, 0xec, 0xae, 0x4d, 0x49, 0xa7, 0x3c, 0xce, 0x97, 0xdd, 0x7f, 0xfb, - 0x81, 0x53, 0xb9, 0x70, 0x86, 0x34, 0xea, 0x40, 0xc5, 0x4b, 0x19, 0x6c, 0x3f, 0xf9, 0x39, 0xeb, - 0x81, 0xdd, 0x54, 0x34, 0xf7, 0x1e, 0x60, 0x82, 0x2b, 0x78, 0xe3, 0xe4, 0xb8, 0x52, 0x59, 0x3e, - 0x9d, 0x15, 0xf7, 0xc2, 0x42, 0x1f, 0x41, 0x59, 0xc9, 0xd2, 0x33, 0xc9, 0xf5, 0xbc, 0xce, 0xf2, - 0x50, 0xa6, 0x82, 0x4c, 0x69, 0x44, 0x61, 0x52, 0x89, 0x3e, 0x51, 0xb6, 0xcb, 0x53, 0x7d, 0x1d, - 0x44, 0xc6, 0x5e, 0x36, 0x07, 0x87, 0x11, 0x31, 0x82, 0x8d, 0x13, 0x1a, 0xd0, 0x6f, 0x03, 0x52, - 0xe2, 0xaf, 0xaa, 0xed, 0x32, 0xea, 0xab, 0xfc, 0x24, 0x9e, 0x63, 0x07, 0x61, 0x97, 0x20, 0xd9, - 0x38, 0x45, 0x0f, 0x5a, 0x83, 0x19, 0x31, 0xba, 0xa3, 0xdb, 0xca, 0x1e, 0x69, 0x74, 0xed, 0x26, - 0xd5, 0xec, 0xf2, 0x34, 0xcf, 0x7d, 0xfc, 0xe2, 0x6b, 0x31, 0x85, 0x8e, 0x53, 0xa5, 0xd0, 0x07, - 0x30, 0xb9, 0x67, 0x58, 0xbb, 0x6a, 0xab, 0x45, 0x74, 0x0f, 0x69, 0x86, 0x23, 0xcd, 0x30, 0x6f, - 0xac, 0xc4, 0x68, 0x38, 0xc1, 0xcd, 0x1f, 0x93, 0x88, 0xab, 0x85, 0xf3, 0x79, 0x90, 0x3b, 0xd8, - 0x63, 0x92, 0xc0, 0xb4, 0x97, 0xf6, 0x98, 0x24, 0x04, 0x79, 0xfa, 0x61, 0xe6, 0x7f, 0xe6, 0x60, - 0x3a, 0x60, 0xee, 0xfb, 0x31, 0x49, 0x8a, 0xc8, 0xff, 0x3f, 0xca, 0xed, 0xfd, 0x28, 0xf7, 0x6b, - 0x09, 0xc6, 0x03, 0xd7, 0xfd, 0xef, 0x7b, 0xe0, 0x11, 0xd8, 0x96, 0xd1, 0x72, 0xfe, 0x5d, 0x2e, - 0x3c, 0x81, 0xff, 0xf3, 0xaf, 0x0c, 0x7e, 0xfa, 0x4b, 0x5a, 0xf9, 0xdb, 0x3c, 0x4c, 0xc6, 0x77, - 0x63, 0xe4, 0x32, 0x5a, 0xea, 0x79, 0x19, 0xbd, 0x05, 0x33, 0x7b, 0x8e, 0xa6, 0x75, 0xb9, 0x1b, - 0x42, 0x37, 0xd2, 0xee, 0x65, 0xd2, 0xeb, 0x42, 0x72, 0x66, 0x25, 0x85, 0x07, 0xa7, 0x4a, 0x66, - 0x5c, 0xac, 0xe7, 0xcf, 0x74, 0xb1, 0x9e, 0xb8, 0xe7, 0x2d, 0x0c, 0x70, 0xcf, 0x9b, 0x7a, 0x49, - 0x3e, 0x74, 0x86, 0x4b, 0xf2, 0xb3, 0xdc, 0x6a, 0xa7, 0x24, 0xb1, 0x9e, 0x8f, 0x2c, 0x5f, 0x87, - 0x79, 0x21, 0x46, 0xf9, 0x85, 0xb3, 0x4e, 0x2d, 0x43, 0xd3, 0x88, 0xb5, 0xec, 0x74, 0x3a, 0x5d, - 0xf9, 0x3d, 0x18, 0x8f, 0x3e, 0xa5, 0x70, 0x57, 0xda, 0x7d, 0xcd, 0x21, 0xae, 0xf4, 0x42, 0x2b, - 0xed, 0x8e, 0x63, 0x9f, 0x43, 0xfe, 0x7d, 0x09, 0x66, 0xd3, 0x9f, 0x4c, 0x22, 0x0d, 0xc6, 0x3b, - 0xca, 0x51, 0xf8, 0x19, 0xab, 0x74, 0xc6, 0xc3, 0x16, 0x7e, 0x87, 0xbe, 0x1e, 0xc1, 0xc2, 0x31, - 0x6c, 0xf9, 0x47, 0x09, 0xe6, 0x32, 0x6e, 0xaf, 0xcf, 0xd7, 0x12, 0xf4, 0x31, 0x94, 0x3a, 0xca, - 0x51, 0xc3, 0xb1, 0xda, 0xe4, 0xcc, 0xc7, 0x4b, 0x3c, 0x63, 0xac, 0x0b, 0x14, 0xec, 0xe3, 0xc9, - 0x5f, 0x4a, 0x50, 0xce, 0x6a, 0xf4, 0xd1, 0x9d, 0xc8, 0x3d, 0xfb, 0xcf, 0x63, 0xf7, 0xec, 0x53, - 0x09, 0xb9, 0x57, 0x74, 0xcb, 0xfe, 0xb7, 0x12, 0xcc, 0xa6, 0x7f, 0xf0, 0xa0, 0xb7, 0x23, 0x16, - 0x56, 0x62, 0x16, 0x4e, 0xc4, 0xa4, 0x84, 0x7d, 0x9f, 0xc0, 0xb8, 0xf8, 0x2c, 0x12, 0x30, 0xc2, - 0xab, 0x72, 0x5a, 0xae, 0x14, 0x10, 0xde, 0x67, 0x00, 0x5f, 0xaf, 0xe8, 0x18, 0x8e, 0xa1, 0xc9, - 0x7f, 0x90, 0x83, 0xa1, 0x46, 0x53, 0xd1, 0xc8, 0x39, 0xb4, 0x59, 0x1f, 0x46, 0xda, 0xac, 0x5e, - 0xff, 0x72, 0xc2, 0xad, 0xca, 0xec, 0xb0, 0x70, 0xac, 0xc3, 0x7a, 0xb3, 0x2f, 0xb4, 0xd3, 0x9b, - 0xab, 0x5f, 0x81, 0x11, 0x5f, 0xe9, 0x60, 0x39, 0x5f, 0xfe, 0xab, 0x1c, 0x8c, 0x86, 0x54, 0x0c, - 0x58, 0x31, 0xf6, 0x22, 0x95, 0xb6, 0x9f, 0x7f, 0xf4, 0x0b, 0xe9, 0xaa, 0x7a, 0xb5, 0xd5, 0x7d, - 0x32, 0x19, 0x3c, 0x92, 0x4b, 0x96, 0xdc, 0xf7, 0x60, 0x9c, 0xf2, 0x7f, 0x84, 0xf3, 0x0f, 0x65, - 0xf3, 0x3c, 0x16, 0xfd, 0x87, 0xb6, 0xdb, 0x11, 0x2a, 0x8e, 0x71, 0xcf, 0xdf, 0x87, 0xb1, 0x88, - 0xb2, 0x81, 0x5e, 0x3c, 0xfe, 0x83, 0x04, 0x3f, 0xef, 0xf9, 0xc9, 0x8c, 0xea, 0x91, 0x4d, 0x52, - 0x8d, 0x6d, 0x92, 0x85, 0x6c, 0x80, 0x57, 0xf7, 0x72, 0xa6, 0x7e, 0xf3, 0xf9, 0x0f, 0x0b, 0x17, - 0xbe, 0xfb, 0x61, 0xe1, 0xc2, 0xf7, 0x3f, 0x2c, 0x5c, 0xf8, 0xdd, 0x93, 0x05, 0xe9, 0xf9, 0xc9, - 0x82, 0xf4, 0xdd, 0xc9, 0x82, 0xf4, 0xfd, 0xc9, 0x82, 0xf4, 0xef, 0x27, 0x0b, 0xd2, 0x9f, 0xfc, - 0xb8, 0x70, 0xe1, 0xe3, 0xa2, 0x80, 0xfb, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7b, 0xc2, 0x4a, - 0x40, 0x12, 0x3d, 0x00, 0x00, + // 3627 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0xcd, 0x6f, 0x1c, 0xc7, + 0x72, 0xd7, 0xec, 0x2e, 0xb9, 0xcb, 0xa2, 0xf8, 0xd5, 0xa4, 0xc9, 0xb5, 0x64, 0x71, 0xe5, 0x31, + 0xa0, 0xc8, 0x8e, 0xb4, 0x6b, 0xc9, 0x96, 0xac, 0x58, 0x88, 0x6d, 0x2e, 0x29, 0x4a, 0x74, 0xf8, + 0xa5, 0x5e, 0x52, 0x71, 0x8c, 0xc8, 0xf1, 0x70, 0xb7, 0xb9, 0x1c, 0x71, 0x76, 0x66, 0x3c, 0xd3, + 0x43, 0x73, 0x81, 0x20, 0xc8, 0x21, 0x08, 0x10, 0x20, 0x41, 0x92, 0x83, 0xf3, 0x71, 0x8b, 0x2f, + 0x39, 0x25, 0x48, 0x6e, 0xc9, 0xc1, 0x30, 0x10, 0xc0, 0x01, 0x84, 0xc0, 0x01, 0x7c, 0x8b, 0x4f, + 0x44, 0x4c, 0x9f, 0x82, 0xfc, 0x03, 0x0f, 0x3a, 0x3c, 0x3c, 0x74, 0x4f, 0xcf, 0xf7, 0x0c, 0x77, + 0x97, 0x96, 0x88, 0x87, 0x87, 0x77, 0xe3, 0x76, 0x55, 0xfd, 0xaa, 0xba, 0xba, 0xba, 0xaa, 0xa6, + 0xbb, 0x09, 0xcb, 0xfb, 0x77, 0xec, 0xaa, 0x6a, 0xd4, 0xf6, 0x9d, 0x1d, 0x62, 0xe9, 0x84, 0x12, + 0xbb, 0x76, 0x40, 0xf4, 0x96, 0x61, 0xd5, 0x04, 0x41, 0x31, 0xd5, 0x1a, 0x39, 0xa4, 0x44, 0xb7, + 0x55, 0x43, 0xb7, 0x6b, 0x07, 0x37, 0x76, 0x08, 0x55, 0x6e, 0xd4, 0xda, 0x44, 0x27, 0x96, 0x42, + 0x49, 0xab, 0x6a, 0x5a, 0x06, 0x35, 0xd0, 0x25, 0x97, 0xbd, 0xaa, 0x98, 0x6a, 0x35, 0x60, 0xaf, + 0x0a, 0xf6, 0x0b, 0xd7, 0xdb, 0x2a, 0xdd, 0x73, 0x76, 0xaa, 0x4d, 0xa3, 0x53, 0x6b, 0x1b, 0x6d, + 0xa3, 0xc6, 0xa5, 0x76, 0x9c, 0x5d, 0xfe, 0x8b, 0xff, 0xe0, 0x7f, 0xb9, 0x68, 0x17, 0xe4, 0x90, + 0xf2, 0xa6, 0x61, 0x91, 0xda, 0x41, 0x42, 0xe3, 0x85, 0xb7, 0x03, 0x9e, 0x8e, 0xd2, 0xdc, 0x53, + 0x75, 0x62, 0x75, 0x6b, 0xe6, 0x7e, 0x9b, 0x0b, 0x59, 0xc4, 0x36, 0x1c, 0xab, 0x49, 0x06, 0x92, + 0xb2, 0x6b, 0x1d, 0x42, 0x95, 0x34, 0x5d, 0xb5, 0x2c, 0x29, 0xcb, 0xd1, 0xa9, 0xda, 0x49, 0xaa, + 0xb9, 0xdd, 0x4b, 0xc0, 0x6e, 0xee, 0x91, 0x8e, 0x92, 0x90, 0x7b, 0x2b, 0x4b, 0xce, 0xa1, 0xaa, + 0x56, 0x53, 0x75, 0x6a, 0x53, 0x2b, 0x2e, 0x24, 0xdf, 0x85, 0xa9, 0x05, 0x4d, 0x33, 0x3e, 0x27, + 0xad, 0x65, 0x8d, 0x1c, 0x3e, 0x32, 0x34, 0xa7, 0x43, 0xd0, 0x15, 0x18, 0x6e, 0x59, 0xea, 0x01, + 0xb1, 0xca, 0xd2, 0x65, 0xe9, 0xea, 0x48, 0x7d, 0xfc, 0xe9, 0x51, 0xe5, 0xdc, 0xf1, 0x51, 0x65, + 0x78, 0x89, 0x8f, 0x62, 0x41, 0x95, 0x6d, 0x98, 0x10, 0xc2, 0x0f, 0x0c, 0x9b, 0x6e, 0x2a, 0x74, + 0x0f, 0xdd, 0x04, 0x30, 0x15, 0xba, 0xb7, 0x69, 0x91, 0x5d, 0xf5, 0x50, 0x88, 0x23, 0x21, 0x0e, + 0x9b, 0x3e, 0x05, 0x87, 0xb8, 0xd0, 0x35, 0x28, 0x59, 0x44, 0x69, 0x6d, 0xe8, 0x5a, 0xb7, 0x9c, + 0xbb, 0x2c, 0x5d, 0x2d, 0xd5, 0x27, 0x85, 0x44, 0x09, 0x8b, 0x71, 0xec, 0x73, 0xc8, 0x7f, 0x2f, + 0xc1, 0xcb, 0x8b, 0x8e, 0x4d, 0x8d, 0xce, 0x1a, 0xa1, 0x96, 0xda, 0x5c, 0x74, 0x2c, 0x8b, 0xe8, + 0xb4, 0x41, 0x15, 0xea, 0xd8, 0xe8, 0x32, 0x14, 0x74, 0xa5, 0x43, 0x84, 0xe6, 0xf3, 0x02, 0xa7, + 0xb0, 0xae, 0x74, 0x08, 0xe6, 0x14, 0xf4, 0x31, 0x0c, 0x1d, 0x28, 0x9a, 0x43, 0xb8, 0xaa, 0xd1, + 0x9b, 0xd5, 0x6a, 0x10, 0x7d, 0xbe, 0xdb, 0xaa, 0xe6, 0x7e, 0x9b, 0x87, 0xa3, 0x17, 0x0b, 0xd5, + 0x87, 0x8e, 0xa2, 0x53, 0x95, 0x76, 0xeb, 0x33, 0x02, 0xf2, 0xbc, 0xd0, 0xfb, 0x88, 0x61, 0x61, + 0x17, 0x52, 0xfe, 0x23, 0xb8, 0x94, 0x69, 0xda, 0xaa, 0x6a, 0x53, 0xf4, 0x18, 0x86, 0x54, 0x4a, + 0x3a, 0x76, 0x59, 0xba, 0x9c, 0xbf, 0x3a, 0x7a, 0xf3, 0x4e, 0xf5, 0xc4, 0xd0, 0xaf, 0x66, 0x82, + 0xd5, 0xc7, 0x84, 0x19, 0x43, 0x2b, 0x0c, 0x0e, 0xbb, 0xa8, 0xf2, 0x5f, 0x4b, 0x80, 0xc2, 0x32, + 0x5b, 0x8a, 0xd5, 0x26, 0xb4, 0x0f, 0xa7, 0xfc, 0xde, 0x4f, 0x73, 0xca, 0xb4, 0x80, 0x1c, 0x75, + 0x15, 0x46, 0x7c, 0x62, 0xc2, 0x6c, 0xd2, 0x24, 0xee, 0x8c, 0x47, 0x51, 0x67, 0xdc, 0x18, 0xc0, + 0x19, 0x2e, 0x4a, 0x86, 0x17, 0xbe, 0xc8, 0xc1, 0xc8, 0x92, 0x42, 0x3a, 0x86, 0xde, 0x20, 0x14, + 0x7d, 0x0a, 0x25, 0xb6, 0x35, 0x5b, 0x0a, 0x55, 0xb8, 0x03, 0x46, 0x6f, 0xbe, 0x79, 0xd2, 0xec, + 0xec, 0x2a, 0xe3, 0xae, 0x1e, 0xdc, 0xa8, 0x6e, 0xec, 0x3c, 0x21, 0x4d, 0xba, 0x46, 0xa8, 0x12, + 0x44, 0x70, 0x30, 0x86, 0x7d, 0x54, 0xb4, 0x0e, 0x05, 0xdb, 0x24, 0x4d, 0xe1, 0xbb, 0x6b, 0x3d, + 0xa6, 0xe1, 0x5b, 0xd6, 0x30, 0x49, 0x33, 0x58, 0x0c, 0xf6, 0x0b, 0x73, 0x1c, 0xf4, 0x08, 0x86, + 0x6d, 0xbe, 0xca, 0xe5, 0x7c, 0x62, 0x35, 0x4e, 0x46, 0x74, 0x63, 0xc3, 0xdf, 0xae, 0xee, 0x6f, + 0x2c, 0xd0, 0xe4, 0xff, 0xcb, 0x01, 0xf2, 0x79, 0x17, 0x0d, 0xbd, 0xa5, 0x52, 0xd5, 0xd0, 0xd1, + 0xbb, 0x50, 0xa0, 0x5d, 0xd3, 0x8b, 0x8e, 0x2b, 0x9e, 0x41, 0x5b, 0x5d, 0x93, 0x3c, 0x3b, 0xaa, + 0xcc, 0x26, 0x25, 0x18, 0x05, 0x73, 0x19, 0xb4, 0xea, 0x9b, 0x9a, 0xe3, 0xd2, 0x6f, 0x47, 0x55, + 0x3f, 0x3b, 0xaa, 0xa4, 0xa4, 0xe3, 0xaa, 0x8f, 0x14, 0x35, 0x10, 0x1d, 0x00, 0xd2, 0x14, 0x9b, + 0x6e, 0x59, 0x8a, 0x6e, 0xbb, 0x9a, 0xd4, 0x0e, 0x11, 0x4e, 0x78, 0xa3, 0xbf, 0x45, 0x63, 0x12, + 0xf5, 0x0b, 0xc2, 0x0a, 0xb4, 0x9a, 0x40, 0xc3, 0x29, 0x1a, 0x58, 0xbe, 0xb3, 0x88, 0x62, 0x1b, + 0x7a, 0xb9, 0x10, 0xcd, 0x77, 0x98, 0x8f, 0x62, 0x41, 0x45, 0xaf, 0x43, 0xb1, 0x43, 0x6c, 0x5b, + 0x69, 0x93, 0xf2, 0x10, 0x67, 0x9c, 0x10, 0x8c, 0xc5, 0x35, 0x77, 0x18, 0x7b, 0x74, 0xf9, 0x2b, + 0x09, 0xc6, 0x7c, 0xcf, 0xf1, 0x68, 0xff, 0xfd, 0x44, 0x1c, 0x56, 0xfb, 0x9b, 0x12, 0x93, 0xe6, + 0x51, 0xe8, 0x67, 0x45, 0x6f, 0x24, 0x14, 0x83, 0x6b, 0xde, 0x5e, 0xca, 0xf1, 0xbd, 0x74, 0xb5, + 0xdf, 0x90, 0xc9, 0xd8, 0x42, 0x7f, 0x53, 0x08, 0x99, 0xcf, 0x42, 0x13, 0x3d, 0x86, 0x92, 0x4d, + 0x34, 0xd2, 0xa4, 0x86, 0x25, 0xcc, 0x7f, 0xab, 0x4f, 0xf3, 0x95, 0x1d, 0xa2, 0x35, 0x84, 0x68, + 0xfd, 0x3c, 0xb3, 0xdf, 0xfb, 0x85, 0x7d, 0x48, 0xf4, 0x10, 0x4a, 0x94, 0x74, 0x4c, 0x4d, 0xa1, + 0x5e, 0x0e, 0x7a, 0x2d, 0x3c, 0x05, 0x16, 0x39, 0x0c, 0x6c, 0xd3, 0x68, 0x6d, 0x09, 0x36, 0xbe, + 0x7d, 0x7c, 0x97, 0x78, 0xa3, 0xd8, 0x87, 0x41, 0x07, 0x30, 0xee, 0x98, 0x2d, 0xc6, 0x49, 0x59, + 0xc5, 0x6b, 0x77, 0x45, 0x24, 0xdd, 0xee, 0xd7, 0x37, 0xdb, 0x11, 0xe9, 0xfa, 0xac, 0xd0, 0x35, + 0x1e, 0x1d, 0xc7, 0x31, 0x2d, 0x68, 0x01, 0x26, 0x3a, 0xaa, 0xce, 0x2a, 0x57, 0xb7, 0x41, 0x9a, + 0x86, 0xde, 0xb2, 0x79, 0x58, 0x0d, 0xd5, 0xe7, 0x04, 0xc0, 0xc4, 0x5a, 0x94, 0x8c, 0xe3, 0xfc, + 0xe8, 0x43, 0x40, 0xde, 0x34, 0xee, 0xbb, 0x05, 0x5b, 0x35, 0x74, 0x1e, 0x73, 0xf9, 0x20, 0xb8, + 0xb7, 0x12, 0x1c, 0x38, 0x45, 0x0a, 0xad, 0xc2, 0x8c, 0x45, 0x0e, 0x54, 0x36, 0xc7, 0x07, 0xaa, + 0x4d, 0x0d, 0xab, 0xbb, 0xaa, 0x76, 0x54, 0x5a, 0x1e, 0xe6, 0x36, 0x95, 0x8f, 0x8f, 0x2a, 0x33, + 0x38, 0x85, 0x8e, 0x53, 0xa5, 0xe4, 0xbf, 0x1d, 0x86, 0x89, 0x58, 0xbe, 0x41, 0x8f, 0x60, 0xb6, + 0xe9, 0x16, 0xa7, 0x75, 0xa7, 0xb3, 0x43, 0xac, 0x46, 0x73, 0x8f, 0xb4, 0x1c, 0x8d, 0xb4, 0x78, + 0xa0, 0x0c, 0xd5, 0xe7, 0x85, 0xc5, 0xb3, 0x8b, 0xa9, 0x5c, 0x38, 0x43, 0x9a, 0x79, 0x41, 0xe7, + 0x43, 0x6b, 0xaa, 0x6d, 0xfb, 0x98, 0x39, 0x8e, 0xe9, 0x7b, 0x61, 0x3d, 0xc1, 0x81, 0x53, 0xa4, + 0x98, 0x8d, 0x2d, 0x62, 0xab, 0x16, 0x69, 0xc5, 0x6d, 0xcc, 0x47, 0x6d, 0x5c, 0x4a, 0xe5, 0xc2, + 0x19, 0xd2, 0xe8, 0x16, 0x8c, 0xba, 0xda, 0xf8, 0xfa, 0x89, 0x85, 0xf6, 0xcb, 0xe1, 0x7a, 0x40, + 0xc2, 0x61, 0x3e, 0x36, 0x35, 0x63, 0xc7, 0x26, 0xd6, 0x01, 0x69, 0x65, 0x2f, 0xf0, 0x46, 0x82, + 0x03, 0xa7, 0x48, 0xb1, 0xa9, 0xb9, 0x11, 0x98, 0x98, 0xda, 0x70, 0x74, 0x6a, 0xdb, 0xa9, 0x5c, + 0x38, 0x43, 0x9a, 0xc5, 0xb1, 0x6b, 0xf2, 0xc2, 0x81, 0xa2, 0x6a, 0xca, 0x8e, 0x46, 0xca, 0xc5, + 0x68, 0x1c, 0xaf, 0x47, 0xc9, 0x38, 0xce, 0x8f, 0xee, 0xc3, 0x94, 0x3b, 0xb4, 0xad, 0x2b, 0x3e, + 0x48, 0x89, 0x83, 0xbc, 0x2c, 0x40, 0xa6, 0xd6, 0xe3, 0x0c, 0x38, 0x29, 0x83, 0xde, 0x85, 0xf1, + 0xa6, 0xa1, 0x69, 0x3c, 0x1e, 0x17, 0x0d, 0x47, 0xa7, 0xe5, 0x11, 0x8e, 0x82, 0xd8, 0x7e, 0x5c, + 0x8c, 0x50, 0x70, 0x8c, 0x13, 0x11, 0x80, 0xa6, 0x57, 0x70, 0xec, 0x32, 0xf4, 0xd5, 0x6b, 0x24, + 0x8b, 0x5e, 0xd0, 0x03, 0xf8, 0x43, 0x36, 0x0e, 0x01, 0xcb, 0xff, 0x25, 0xc1, 0x5c, 0x46, 0xea, + 0x40, 0xef, 0x47, 0x4a, 0xec, 0x6f, 0xc6, 0x4a, 0xec, 0xc5, 0x0c, 0xb1, 0x50, 0x9d, 0xd5, 0x61, + 0xcc, 0x62, 0xb3, 0xd2, 0xdb, 0x2e, 0x8b, 0xc8, 0x91, 0xb7, 0x7a, 0x4c, 0x03, 0x87, 0x65, 0x82, + 0x9c, 0x3f, 0x75, 0x7c, 0x54, 0x19, 0x8b, 0xd0, 0x70, 0x14, 0x5e, 0xfe, 0xbb, 0x1c, 0xc0, 0x12, + 0x31, 0x35, 0xa3, 0xdb, 0x21, 0xfa, 0x59, 0xf4, 0x50, 0x1b, 0x91, 0x1e, 0xea, 0x7a, 0xaf, 0xe5, + 0xf1, 0x4d, 0xcb, 0x6c, 0xa2, 0x7e, 0x37, 0xd6, 0x44, 0xd5, 0xfa, 0x87, 0x3c, 0xb9, 0x8b, 0xfa, + 0x9f, 0x3c, 0x4c, 0x07, 0xcc, 0x41, 0x1b, 0x75, 0x37, 0xb2, 0xc6, 0xbf, 0x11, 0x5b, 0xe3, 0xb9, + 0x14, 0x91, 0x17, 0xd6, 0x47, 0x3d, 0xff, 0x7e, 0x06, 0x3d, 0x81, 0x71, 0xd6, 0x38, 0xb9, 0xe1, + 0xc1, 0xdb, 0xb2, 0xe1, 0x81, 0xdb, 0x32, 0xbf, 0x80, 0xae, 0x46, 0x90, 0x70, 0x0c, 0x39, 0xa3, + 0x0d, 0x2c, 0xbe, 0xe8, 0x36, 0x50, 0xfe, 0x5a, 0x82, 0xf1, 0x60, 0x99, 0xce, 0xa0, 0x69, 0x5b, + 0x8f, 0x36, 0x6d, 0xaf, 0xf7, 0x1d, 0xa2, 0x19, 0x5d, 0xdb, 0xcf, 0x58, 0x83, 0xef, 0x33, 0xb1, + 0x0d, 0xbe, 0xa3, 0x34, 0xf7, 0xfb, 0xf8, 0xfc, 0xfb, 0x42, 0x02, 0x24, 0xaa, 0xc0, 0x82, 0xae, + 0x1b, 0x54, 0x71, 0x73, 0xa5, 0x6b, 0xd6, 0x4a, 0xdf, 0x66, 0x79, 0x1a, 0xab, 0xdb, 0x09, 0xac, + 0x7b, 0x3a, 0xb5, 0xba, 0xc1, 0x8a, 0x24, 0x19, 0x70, 0x8a, 0x01, 0x48, 0x01, 0xb0, 0x04, 0xe6, + 0x96, 0x21, 0x36, 0xf2, 0xf5, 0x3e, 0x72, 0x1e, 0x13, 0x58, 0x34, 0xf4, 0x5d, 0xb5, 0x1d, 0xa4, + 0x1d, 0xec, 0x03, 0xe1, 0x10, 0xe8, 0x85, 0x7b, 0x30, 0x97, 0x61, 0x2d, 0x9a, 0x84, 0xfc, 0x3e, + 0xe9, 0xba, 0x6e, 0xc3, 0xec, 0x4f, 0x34, 0x13, 0xfe, 0x4c, 0x1e, 0x11, 0x5f, 0xb8, 0xef, 0xe6, + 0xee, 0x48, 0xf2, 0x57, 0x43, 0xe1, 0xd8, 0xe1, 0x1d, 0xf3, 0x55, 0x28, 0x59, 0xc4, 0xd4, 0xd4, + 0xa6, 0x62, 0x8b, 0x46, 0xe8, 0xbc, 0x7b, 0xa4, 0xe1, 0x8e, 0x61, 0x9f, 0x1a, 0xe9, 0xad, 0x73, + 0x2f, 0xb6, 0xb7, 0xce, 0x3f, 0x9f, 0xde, 0xfa, 0x0f, 0xa0, 0x64, 0x7b, 0x5d, 0x75, 0x81, 0x43, + 0xde, 0x18, 0x20, 0xbf, 0x8a, 0x86, 0xda, 0x57, 0xe0, 0xb7, 0xd2, 0x3e, 0x68, 0x5a, 0x13, 0x3d, + 0x34, 0x60, 0x13, 0xfd, 0x5c, 0x1b, 0x5f, 0x96, 0x53, 0x4d, 0xc5, 0xb1, 0x49, 0x8b, 0x27, 0xa2, + 0x52, 0x90, 0x53, 0x37, 0xf9, 0x28, 0x16, 0x54, 0xf4, 0x38, 0x12, 0xb2, 0xa5, 0xd3, 0x84, 0xec, + 0x78, 0x76, 0xb8, 0xa2, 0x6d, 0x98, 0x33, 0x2d, 0xa3, 0x6d, 0x11, 0xdb, 0x5e, 0x22, 0x4a, 0x4b, + 0x53, 0x75, 0xe2, 0xf9, 0xc7, 0xed, 0x88, 0x2e, 0x1e, 0x1f, 0x55, 0xe6, 0x36, 0xd3, 0x59, 0x70, + 0x96, 0xac, 0xfc, 0xb4, 0x00, 0x93, 0xf1, 0x0a, 0x98, 0xd1, 0xa4, 0x4a, 0xa7, 0x6a, 0x52, 0xaf, + 0x85, 0x36, 0x83, 0xdb, 0xc1, 0x87, 0xce, 0xf8, 0x12, 0x1b, 0x62, 0x01, 0x26, 0x44, 0x36, 0xf0, + 0x88, 0xa2, 0x4d, 0xf7, 0x57, 0x7f, 0x3b, 0x4a, 0xc6, 0x71, 0x7e, 0xd6, 0x7a, 0x06, 0x1d, 0xa5, + 0x07, 0x52, 0x88, 0xb6, 0x9e, 0x0b, 0x71, 0x06, 0x9c, 0x94, 0x41, 0x6b, 0x30, 0xed, 0xe8, 0x49, + 0x28, 0x37, 0x1a, 0x2f, 0x0a, 0xa8, 0xe9, 0xed, 0x24, 0x0b, 0x4e, 0x93, 0x43, 0xbb, 0x91, 0x6e, + 0x74, 0x98, 0x67, 0xd8, 0x9b, 0x7d, 0xef, 0x9d, 0xbe, 0xdb, 0x51, 0x74, 0x17, 0xc6, 0x2c, 0xfe, + 0xdd, 0xe1, 0x19, 0xec, 0xf6, 0xee, 0x2f, 0x09, 0xb1, 0x31, 0x1c, 0x26, 0xe2, 0x28, 0x6f, 0x4a, + 0xbb, 0x5d, 0xea, 0xb7, 0xdd, 0x96, 0xff, 0x43, 0x0a, 0x17, 0x21, 0xbf, 0x05, 0xee, 0x75, 0xca, + 0x94, 0x90, 0x08, 0x75, 0x47, 0x46, 0x7a, 0xf7, 0x7b, 0x7b, 0xa0, 0xee, 0x37, 0x28, 0x9e, 0xbd, + 0xdb, 0xdf, 0x2f, 0x25, 0x98, 0x5d, 0x6e, 0xdc, 0xb7, 0x0c, 0xc7, 0xf4, 0xcc, 0xd9, 0x30, 0x5d, + 0xbf, 0xbe, 0x03, 0x05, 0xcb, 0xd1, 0xbc, 0x79, 0xbc, 0xe6, 0xcd, 0x03, 0x3b, 0x1a, 0x9b, 0xc7, + 0x74, 0x4c, 0xca, 0x9d, 0x04, 0x13, 0x40, 0xeb, 0x30, 0x6c, 0x29, 0x7a, 0x9b, 0x78, 0x65, 0xf5, + 0x4a, 0x0f, 0xeb, 0x57, 0x96, 0x30, 0x63, 0x0f, 0x35, 0x6f, 0x5c, 0x1a, 0x0b, 0x14, 0xf9, 0x2f, + 0x24, 0x98, 0x78, 0xb0, 0xb5, 0xb5, 0xb9, 0xa2, 0xf3, 0x1d, 0xcd, 0x4f, 0xdf, 0x2f, 0x43, 0xc1, + 0x54, 0xe8, 0x5e, 0xbc, 0xd2, 0x33, 0x1a, 0xe6, 0x14, 0xf4, 0x11, 0x14, 0x59, 0x26, 0x21, 0x7a, + 0xab, 0xcf, 0x56, 0x5b, 0xc0, 0xd7, 0x5d, 0xa1, 0xa0, 0x43, 0x14, 0x03, 0xd8, 0x83, 0x93, 0xf7, + 0x61, 0x26, 0x64, 0x0e, 0xf3, 0x07, 0x3f, 0x06, 0x46, 0x0d, 0x18, 0x62, 0x9a, 0xbd, 0x53, 0xde, + 0x5e, 0x87, 0x99, 0xb1, 0x29, 0x05, 0x9d, 0x0e, 0xfb, 0x65, 0x63, 0x17, 0x4b, 0x5e, 0x83, 0x31, + 0x7e, 0xe5, 0x60, 0x58, 0x94, 0xbb, 0x05, 0x5d, 0x82, 0x7c, 0x47, 0xd5, 0x45, 0x9d, 0x1d, 0x15, + 0x32, 0x79, 0x56, 0x23, 0xd8, 0x38, 0x27, 0x2b, 0x87, 0x22, 0xf3, 0x04, 0x64, 0xe5, 0x10, 0xb3, + 0x71, 0xf9, 0x3e, 0x14, 0x85, 0xbb, 0xc3, 0x40, 0xf9, 0x93, 0x81, 0xf2, 0x29, 0x40, 0x1b, 0x50, + 0x5c, 0xd9, 0xac, 0x6b, 0x86, 0xdb, 0x75, 0x35, 0xd5, 0x96, 0x15, 0x5f, 0x8b, 0xc5, 0x95, 0x25, + 0x8c, 0x39, 0x05, 0xc9, 0x30, 0x4c, 0x0e, 0x9b, 0xc4, 0xa4, 0x3c, 0x22, 0x46, 0xea, 0xc0, 0x56, + 0xf9, 0x1e, 0x1f, 0xc1, 0x82, 0x22, 0xff, 0x65, 0x0e, 0x8a, 0xc2, 0x1d, 0x67, 0xf0, 0x15, 0xb6, + 0x1a, 0xf9, 0x0a, 0x7b, 0xa3, 0xbf, 0xd0, 0xc8, 0xfc, 0x04, 0xdb, 0x8a, 0x7d, 0x82, 0x5d, 0xeb, + 0x13, 0xef, 0xe4, 0xef, 0xaf, 0x7f, 0x95, 0x60, 0x3c, 0x1a, 0x94, 0xe8, 0x16, 0x8c, 0xb2, 0x82, + 0xa3, 0x36, 0xc9, 0x7a, 0xd0, 0xe7, 0xfa, 0x87, 0x30, 0x8d, 0x80, 0x84, 0xc3, 0x7c, 0xa8, 0xed, + 0x8b, 0xb1, 0x38, 0x12, 0x93, 0xce, 0x76, 0xa9, 0x43, 0x55, 0xad, 0xea, 0x5e, 0xa3, 0x55, 0x57, + 0x74, 0xba, 0x61, 0x35, 0xa8, 0xa5, 0xea, 0xed, 0x84, 0x22, 0x1e, 0x94, 0x61, 0x64, 0xf9, 0xdf, + 0x25, 0x18, 0x15, 0x26, 0x9f, 0xc1, 0x57, 0xc5, 0xef, 0x44, 0xbf, 0x2a, 0xae, 0xf4, 0xb9, 0xc1, + 0xd3, 0x3f, 0x29, 0xfe, 0x31, 0x30, 0x9d, 0x6d, 0x69, 0x16, 0xd5, 0x7b, 0x86, 0x4d, 0xe3, 0x51, + 0xcd, 0x36, 0x23, 0xe6, 0x14, 0xe4, 0xc0, 0xa4, 0x1a, 0xcb, 0x01, 0xc2, 0xb5, 0xb5, 0xfe, 0x2c, + 0xf1, 0xc5, 0xea, 0x65, 0x01, 0x3f, 0x19, 0xa7, 0xe0, 0x84, 0x0a, 0x99, 0x40, 0x82, 0x0b, 0x3d, + 0x84, 0xc2, 0x1e, 0xa5, 0x66, 0xca, 0x79, 0x75, 0x8f, 0xcc, 0x13, 0x98, 0x50, 0xe2, 0xb3, 0xdb, + 0xda, 0xda, 0xc4, 0x1c, 0x4a, 0xfe, 0x79, 0xe0, 0x8f, 0x86, 0x1b, 0xe3, 0x7e, 0x3e, 0x95, 0x4e, + 0x93, 0x4f, 0x47, 0xd3, 0x72, 0x29, 0x7a, 0x00, 0x79, 0xaa, 0xf5, 0xfb, 0x59, 0x28, 0x10, 0xb7, + 0x56, 0x1b, 0x41, 0x42, 0xda, 0x5a, 0x6d, 0x60, 0x06, 0x81, 0x36, 0x60, 0x88, 0x55, 0x1f, 0xb6, + 0x05, 0xf3, 0xfd, 0x6f, 0x69, 0x36, 0xff, 0x20, 0x20, 0xd8, 0x2f, 0x1b, 0xbb, 0x38, 0xf2, 0x67, + 0x30, 0x16, 0xd9, 0xa7, 0xe8, 0x53, 0x38, 0xaf, 0x19, 0x4a, 0xab, 0xae, 0x68, 0x8a, 0xde, 0x24, + 0xde, 0xe5, 0xc0, 0x95, 0xb4, 0x2f, 0x8c, 0xd5, 0x10, 0x9f, 0xd8, 0xe5, 0xfe, 0x75, 0x6a, 0x98, + 0x86, 0x23, 0x88, 0xb2, 0x02, 0x10, 0xcc, 0x11, 0x55, 0x60, 0x88, 0xc5, 0x99, 0x5b, 0x4f, 0x46, + 0xea, 0x23, 0xcc, 0x42, 0x16, 0x7e, 0x36, 0x76, 0xc7, 0xd1, 0x4d, 0x00, 0x9b, 0x34, 0x2d, 0x42, + 0x79, 0x32, 0xc8, 0x45, 0xaf, 0xa0, 0x1b, 0x3e, 0x05, 0x87, 0xb8, 0xe4, 0xff, 0x94, 0x60, 0x6c, + 0x9d, 0xd0, 0xcf, 0x0d, 0x6b, 0x7f, 0xd3, 0xd0, 0xd4, 0x66, 0xf7, 0x0c, 0x92, 0x2d, 0x8e, 0x24, + 0xdb, 0x37, 0x7b, 0xac, 0x4c, 0xc4, 0xba, 0xac, 0x94, 0x2b, 0x7f, 0x2d, 0xc1, 0x5c, 0x84, 0xf3, + 0x5e, 0xb0, 0x75, 0xb7, 0x61, 0xc8, 0x34, 0x2c, 0xea, 0x15, 0xe2, 0x81, 0x14, 0xb2, 0x34, 0x16, + 0x2a, 0xc5, 0x0c, 0x06, 0xbb, 0x68, 0x68, 0x15, 0x72, 0xd4, 0x10, 0xa1, 0x3a, 0x18, 0x26, 0x21, + 0x56, 0x1d, 0x04, 0x66, 0x6e, 0xcb, 0xc0, 0x39, 0x6a, 0xb0, 0x85, 0x28, 0x47, 0xb8, 0xc2, 0xc9, + 0xe7, 0x05, 0xcd, 0x00, 0x43, 0x61, 0xd7, 0x32, 0x3a, 0xa7, 0x9e, 0x83, 0xbf, 0x10, 0xcb, 0x96, + 0xd1, 0xc1, 0x1c, 0x4b, 0xfe, 0x46, 0x82, 0xa9, 0x08, 0xe7, 0x19, 0x24, 0xfe, 0x87, 0xd1, 0xc4, + 0x7f, 0x6d, 0x90, 0x89, 0x64, 0xa4, 0xff, 0x6f, 0x72, 0xb1, 0x69, 0xb0, 0x09, 0xa3, 0x5d, 0x18, + 0x35, 0x8d, 0x56, 0xe3, 0x39, 0x5c, 0x07, 0x4e, 0xb0, 0xba, 0xb9, 0x19, 0x60, 0xe1, 0x30, 0x30, + 0x3a, 0x84, 0x29, 0x5d, 0xe9, 0x10, 0xdb, 0x54, 0x9a, 0xa4, 0xf1, 0x1c, 0x0e, 0x48, 0x5e, 0xe2, + 0xf7, 0x0d, 0x71, 0x44, 0x9c, 0x54, 0x82, 0xd6, 0xa0, 0xa8, 0x9a, 0xbc, 0x8f, 0x13, 0xbd, 0x4b, + 0xcf, 0x2a, 0xea, 0x76, 0x7d, 0x6e, 0x3e, 0x17, 0x3f, 0xb0, 0x87, 0x21, 0xff, 0x53, 0x3c, 0x1a, + 0x58, 0xfc, 0xa1, 0xfb, 0x50, 0xe2, 0x8f, 0x70, 0x9a, 0x86, 0xe6, 0xdd, 0x0c, 0xb0, 0x95, 0xdd, + 0x14, 0x63, 0xcf, 0x8e, 0x2a, 0x17, 0x53, 0x0e, 0x7d, 0x3d, 0x32, 0xf6, 0x85, 0xd1, 0x3a, 0x14, + 0xcc, 0x9f, 0xd2, 0xc1, 0xf0, 0x22, 0xc7, 0xdb, 0x16, 0x8e, 0x23, 0xff, 0x49, 0x3e, 0x66, 0x2e, + 0x2f, 0x75, 0x4f, 0x9e, 0xdb, 0xaa, 0xfb, 0x1d, 0x53, 0xe6, 0xca, 0xef, 0x40, 0x51, 0x54, 0x78, + 0x11, 0xcc, 0xef, 0x0c, 0x12, 0xcc, 0xe1, 0x2a, 0xe6, 0x7f, 0xb0, 0x78, 0x83, 0x1e, 0x30, 0xfa, + 0x04, 0x86, 0x89, 0xab, 0xc2, 0xad, 0x8d, 0xb7, 0x07, 0x51, 0x11, 0xe4, 0xd5, 0xa0, 0x51, 0x15, + 0x63, 0x02, 0x15, 0xbd, 0xcf, 0xfc, 0xc5, 0x78, 0xd9, 0x47, 0xa0, 0x5d, 0x2e, 0xf0, 0x72, 0x75, + 0xc9, 0x9d, 0xb6, 0x3f, 0xfc, 0xec, 0xa8, 0x02, 0xc1, 0x4f, 0x1c, 0x96, 0x90, 0xff, 0x5b, 0x82, + 0x29, 0xee, 0xa1, 0xa6, 0x63, 0xa9, 0xb4, 0x7b, 0x66, 0x85, 0xe9, 0x51, 0xa4, 0x30, 0xbd, 0xdd, + 0xc3, 0x2d, 0x09, 0x0b, 0x33, 0x8b, 0xd3, 0xb7, 0x12, 0xbc, 0x94, 0xe0, 0x3e, 0x83, 0xbc, 0xb8, + 0x1d, 0xcd, 0x8b, 0x6f, 0x0e, 0x3a, 0xa1, 0xac, 0xd6, 0x78, 0x3c, 0x65, 0x3a, 0x7c, 0xa7, 0xdc, + 0x04, 0x30, 0x2d, 0xf5, 0x40, 0xd5, 0x48, 0x5b, 0x5c, 0x82, 0x97, 0x42, 0x8f, 0xe0, 0x7c, 0x0a, + 0x0e, 0x71, 0x21, 0x1b, 0x66, 0x5b, 0x64, 0x57, 0x71, 0x34, 0xba, 0xd0, 0x6a, 0x2d, 0x2a, 0xa6, + 0xb2, 0xa3, 0x6a, 0x2a, 0x55, 0xc5, 0x71, 0xc1, 0x48, 0xfd, 0xae, 0x7b, 0x39, 0x9d, 0xc6, 0xf1, + 0xec, 0xa8, 0x72, 0x29, 0xed, 0x76, 0xc8, 0x63, 0xe9, 0xe2, 0x0c, 0x68, 0xd4, 0x85, 0xb2, 0x45, + 0x3e, 0x73, 0x54, 0x8b, 0xb4, 0x96, 0x2c, 0xc3, 0x8c, 0xa8, 0xcd, 0x73, 0xb5, 0xbf, 0x7d, 0x7c, + 0x54, 0x29, 0xe3, 0x0c, 0x9e, 0xde, 0x8a, 0x33, 0xe1, 0xd1, 0x13, 0x98, 0x56, 0xdc, 0xb7, 0x83, + 0x11, 0xad, 0xee, 0x2e, 0xb9, 0x73, 0x7c, 0x54, 0x99, 0x5e, 0x48, 0x92, 0x7b, 0x2b, 0x4c, 0x03, + 0x45, 0x35, 0x28, 0x1e, 0xf0, 0x97, 0x8d, 0x76, 0x79, 0x88, 0xe3, 0xb3, 0x42, 0x50, 0x74, 0x1f, + 0x3b, 0x32, 0xcc, 0xe1, 0xe5, 0x06, 0xdf, 0x7d, 0x1e, 0x17, 0xfb, 0xa0, 0x64, 0xbd, 0xa4, 0xd8, + 0xf1, 0xfc, 0xc4, 0xb8, 0x14, 0x64, 0xad, 0x07, 0x01, 0x09, 0x87, 0xf9, 0xd0, 0x63, 0x18, 0xd9, + 0x13, 0xa7, 0x12, 0x76, 0xb9, 0xd8, 0x57, 0x11, 0x8e, 0x9c, 0x62, 0xd4, 0xa7, 0x84, 0x8a, 0x11, + 0x6f, 0xd8, 0xc6, 0x01, 0x22, 0x7a, 0x1d, 0x8a, 0xfc, 0xc7, 0xca, 0x12, 0x3f, 0x8e, 0x2b, 0x05, + 0xb9, 0xed, 0x81, 0x3b, 0x8c, 0x3d, 0xba, 0xc7, 0xba, 0xb2, 0xb9, 0xc8, 0x8f, 0x85, 0x63, 0xac, + 0x2b, 0x9b, 0x8b, 0xd8, 0xa3, 0xa3, 0x4f, 0xa1, 0x68, 0x93, 0x55, 0x55, 0x77, 0x0e, 0xcb, 0xd0, + 0xd7, 0xa5, 0x72, 0xe3, 0x1e, 0xe7, 0x8e, 0x1d, 0x8c, 0x05, 0x1a, 0x04, 0x1d, 0x7b, 0xb0, 0x68, + 0x0f, 0x46, 0x2c, 0x47, 0x5f, 0xb0, 0xb7, 0x6d, 0x62, 0x95, 0x47, 0xb9, 0x8e, 0x5e, 0xe9, 0x1c, + 0x7b, 0xfc, 0x71, 0x2d, 0xbe, 0x87, 0x7c, 0x0e, 0x1c, 0x80, 0xa3, 0x3f, 0x97, 0x00, 0xd9, 0x8e, + 0x69, 0x6a, 0xa4, 0x43, 0x74, 0xaa, 0x68, 0xfc, 0x2c, 0xce, 0x2e, 0x9f, 0xe7, 0x3a, 0x3f, 0xe8, + 0x35, 0xaf, 0x84, 0x60, 0x5c, 0xb9, 0x7f, 0xe8, 0x9d, 0x64, 0xc5, 0x29, 0x7a, 0x99, 0x6b, 0x77, + 0x6d, 0xfe, 0x77, 0x79, 0xac, 0x2f, 0xd7, 0xa6, 0x9f, 0x39, 0x06, 0xae, 0x15, 0x74, 0xec, 0xc1, + 0xa2, 0x47, 0x30, 0xeb, 0x3d, 0x8c, 0xc5, 0x86, 0x41, 0x97, 0x55, 0x8d, 0xd8, 0x5d, 0x9b, 0x92, + 0x4e, 0x79, 0x9c, 0x2f, 0xbb, 0xff, 0xf6, 0x03, 0xa7, 0x72, 0xe1, 0x0c, 0x69, 0xd4, 0x81, 0x8a, + 0x97, 0x32, 0xd8, 0x7e, 0xf2, 0x73, 0xd6, 0x3d, 0xbb, 0xa9, 0x68, 0xee, 0x3d, 0xc0, 0x04, 0x57, + 0xf0, 0xda, 0xf1, 0x51, 0xa5, 0xb2, 0x74, 0x32, 0x2b, 0xee, 0x85, 0x85, 0x3e, 0x82, 0xb2, 0x92, + 0xa5, 0x67, 0x92, 0xeb, 0x79, 0x85, 0xe5, 0xa1, 0x4c, 0x05, 0x99, 0xd2, 0x88, 0xc2, 0xa4, 0x12, + 0x7d, 0xa2, 0x6c, 0x97, 0xa7, 0xfa, 0x3a, 0x88, 0x8c, 0xbd, 0x6c, 0x0e, 0x0e, 0x23, 0x62, 0x04, + 0x1b, 0x27, 0x34, 0xa0, 0x3f, 0x04, 0xa4, 0xc4, 0x5f, 0x55, 0xdb, 0x65, 0xd4, 0x57, 0xf9, 0x49, + 0x3c, 0xc7, 0x0e, 0xc2, 0x2e, 0x41, 0xb2, 0x71, 0x8a, 0x1e, 0xb4, 0x0a, 0x33, 0x62, 0x74, 0x5b, + 0xb7, 0x95, 0x5d, 0xd2, 0xe8, 0xda, 0x4d, 0xaa, 0xd9, 0xe5, 0x69, 0x9e, 0xfb, 0xf8, 0xc5, 0xd7, + 0x42, 0x0a, 0x1d, 0xa7, 0x4a, 0xa1, 0x0f, 0x60, 0x72, 0xd7, 0xb0, 0x76, 0xd4, 0x56, 0x8b, 0xe8, + 0x1e, 0xd2, 0x0c, 0x47, 0x9a, 0x61, 0xde, 0x58, 0x8e, 0xd1, 0x70, 0x82, 0x9b, 0x3f, 0x26, 0x11, + 0x57, 0x0b, 0x67, 0xf3, 0x20, 0x77, 0xb0, 0xc7, 0x24, 0x81, 0x69, 0xcf, 0xed, 0x31, 0x49, 0x08, + 0xf2, 0xe4, 0xc3, 0xcc, 0xff, 0xcf, 0xc1, 0x74, 0xc0, 0xdc, 0xf7, 0x63, 0x92, 0x14, 0x91, 0x5f, + 0x3f, 0xca, 0xed, 0xfd, 0x28, 0xf7, 0x6b, 0x09, 0xc6, 0x03, 0xd7, 0xfd, 0xf2, 0x3d, 0xf0, 0x08, + 0x6c, 0xcb, 0x68, 0x39, 0xff, 0x25, 0x17, 0x9e, 0xc0, 0xaf, 0xfc, 0x2b, 0x83, 0x9f, 0xfe, 0x92, + 0x56, 0xfe, 0x36, 0x0f, 0x93, 0xf1, 0xdd, 0x18, 0xb9, 0x8c, 0x96, 0x7a, 0x5e, 0x46, 0x6f, 0xc2, + 0xcc, 0xae, 0xa3, 0x69, 0x5d, 0xee, 0x86, 0xd0, 0x8d, 0xb4, 0x7b, 0x99, 0xf4, 0x8a, 0x90, 0x9c, + 0x59, 0x4e, 0xe1, 0xc1, 0xa9, 0x92, 0x19, 0x17, 0xeb, 0xf9, 0x53, 0x5d, 0xac, 0x27, 0xee, 0x79, + 0x0b, 0x03, 0xdc, 0xf3, 0xa6, 0x5e, 0x92, 0x0f, 0x9d, 0xe2, 0x92, 0xfc, 0x34, 0xb7, 0xda, 0x29, + 0x49, 0xac, 0xe7, 0x23, 0xcb, 0x57, 0xe0, 0x82, 0x10, 0xa3, 0xfc, 0xc2, 0x59, 0xa7, 0x96, 0xa1, + 0x69, 0xc4, 0x5a, 0x72, 0x3a, 0x9d, 0xae, 0xfc, 0x1e, 0x8c, 0x47, 0x9f, 0x52, 0xb8, 0x2b, 0xed, + 0xbe, 0xe6, 0x10, 0x57, 0x7a, 0xa1, 0x95, 0x76, 0xc7, 0xb1, 0xcf, 0x21, 0xff, 0xa9, 0x04, 0xb3, + 0xe9, 0x4f, 0x26, 0x91, 0x06, 0xe3, 0x1d, 0xe5, 0x30, 0xfc, 0x8c, 0x55, 0x3a, 0xe5, 0x61, 0x0b, + 0xbf, 0x43, 0x5f, 0x8b, 0x60, 0xe1, 0x18, 0xb6, 0xfc, 0xa3, 0x04, 0x73, 0x19, 0xb7, 0xd7, 0x67, + 0x6b, 0x09, 0xfa, 0x18, 0x4a, 0x1d, 0xe5, 0xb0, 0xe1, 0x58, 0x6d, 0x72, 0xea, 0xe3, 0x25, 0x9e, + 0x31, 0xd6, 0x04, 0x0a, 0xf6, 0xf1, 0xe4, 0x2f, 0x25, 0x28, 0x67, 0x35, 0xfa, 0xe8, 0x56, 0xe4, + 0x9e, 0xfd, 0xd5, 0xd8, 0x3d, 0xfb, 0x54, 0x42, 0xee, 0x05, 0xdd, 0xb2, 0xff, 0xb3, 0x04, 0xb3, + 0xe9, 0x1f, 0x3c, 0xe8, 0xad, 0x88, 0x85, 0x95, 0x98, 0x85, 0x13, 0x31, 0x29, 0x61, 0xdf, 0x27, + 0x30, 0x2e, 0x3e, 0x8b, 0x04, 0x8c, 0xf0, 0xaa, 0x9c, 0x96, 0x2b, 0x05, 0x84, 0xf7, 0x19, 0xc0, + 0xd7, 0x2b, 0x3a, 0x86, 0x63, 0x68, 0xf2, 0x9f, 0xe5, 0x60, 0xa8, 0xd1, 0x54, 0x34, 0x72, 0x06, + 0x6d, 0xd6, 0x87, 0x91, 0x36, 0xab, 0xd7, 0xbf, 0x9c, 0x70, 0xab, 0x32, 0x3b, 0x2c, 0x1c, 0xeb, + 0xb0, 0xde, 0xe8, 0x0b, 0xed, 0xe4, 0xe6, 0xea, 0xb7, 0x60, 0xc4, 0x57, 0x3a, 0x58, 0xce, 0x97, + 0xff, 0x21, 0x07, 0xa3, 0x21, 0x15, 0x03, 0x56, 0x8c, 0xdd, 0x48, 0xa5, 0xed, 0xe7, 0x1f, 0xfd, + 0x42, 0xba, 0xaa, 0x5e, 0x6d, 0x75, 0x9f, 0x4c, 0x06, 0x8f, 0xe4, 0x92, 0x25, 0xf7, 0x3d, 0x18, + 0xa7, 0xfc, 0x1f, 0xe1, 0xfc, 0x43, 0xd9, 0x3c, 0x8f, 0x45, 0xff, 0xa1, 0xed, 0x56, 0x84, 0x8a, + 0x63, 0xdc, 0x17, 0xee, 0xc2, 0x58, 0x44, 0xd9, 0x40, 0x2f, 0x1e, 0xff, 0x4d, 0x82, 0x57, 0x7b, + 0x7e, 0x32, 0xa3, 0x7a, 0x64, 0x93, 0x54, 0x63, 0x9b, 0x64, 0x3e, 0x1b, 0xe0, 0xc5, 0xbd, 0x9c, + 0xa9, 0x5f, 0x7f, 0xfa, 0xc3, 0xfc, 0xb9, 0xef, 0x7e, 0x98, 0x3f, 0xf7, 0xfd, 0x0f, 0xf3, 0xe7, + 0xfe, 0xf8, 0x78, 0x5e, 0x7a, 0x7a, 0x3c, 0x2f, 0x7d, 0x77, 0x3c, 0x2f, 0x7d, 0x7f, 0x3c, 0x2f, + 0xfd, 0xef, 0xf1, 0xbc, 0xf4, 0x57, 0x3f, 0xce, 0x9f, 0xfb, 0xb8, 0x28, 0xe0, 0x7e, 0x11, 0x00, + 0x00, 0xff, 0xff, 0x26, 0xef, 0x73, 0xa6, 0xe7, 0x3c, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/extensions/v1beta1/generated.proto b/vendor/k8s.io/api/extensions/v1beta1/generated.proto index 3a87fbe5ec..1e0769f586 100644 --- a/vendor/k8s.io/api/extensions/v1beta1/generated.proto +++ b/vendor/k8s.io/api/extensions/v1beta1/generated.proto @@ -22,7 +22,6 @@ syntax = 'proto2'; package k8s.io.api.extensions.v1beta1; import "k8s.io/api/core/v1/generated.proto"; -import "k8s.io/api/policy/v1beta1/generated.proto"; import "k8s.io/apimachinery/pkg/api/resource/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; diff --git a/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go index 0e94ab1fb4..8ec2b1ff7c 100644 --- a/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/extensions/v1beta1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1beta1 import ( - corev1 "k8s.io/api/core/v1" + core_v1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -222,15 +222,23 @@ func (in *DaemonSetSpec) DeepCopyInto(out *DaemonSetSpec) { *out = *in if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -250,8 +258,12 @@ func (in *DaemonSetStatus) DeepCopyInto(out *DaemonSetStatus) { *out = *in if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Conditions != nil { in, out := &in.Conditions, &out.Conditions @@ -278,8 +290,12 @@ func (in *DaemonSetUpdateStrategy) DeepCopyInto(out *DaemonSetUpdateStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - *out = new(RollingUpdateDaemonSet) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDaemonSet) + (*in).DeepCopyInto(*out) + } } return } @@ -411,30 +427,50 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) in.Strategy.DeepCopyInto(&out.Strategy) if in.RevisionHistoryLimit != nil { in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.RollbackTo != nil { in, out := &in.RollbackTo, &out.RollbackTo - *out = new(RollbackConfig) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(RollbackConfig) + **out = **in + } } if in.ProgressDeadlineSeconds != nil { in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -461,8 +497,12 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) { } if in.CollisionCount != nil { in, out := &in.CollisionCount, &out.CollisionCount - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } return } @@ -482,8 +522,12 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) { *out = *in if in.RollingUpdate != nil { in, out := &in.RollingUpdate, &out.RollingUpdate - *out = new(RollingUpdateDeployment) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(RollingUpdateDeployment) + (*in).DeepCopyInto(*out) + } } return } @@ -710,8 +754,12 @@ func (in *IngressRuleValue) DeepCopyInto(out *IngressRuleValue) { *out = *in if in.HTTP != nil { in, out := &in.HTTP, &out.HTTP - *out = new(HTTPIngressRuleValue) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(HTTPIngressRuleValue) + (*in).DeepCopyInto(*out) + } } return } @@ -731,8 +779,12 @@ func (in *IngressSpec) DeepCopyInto(out *IngressSpec) { *out = *in if in.Backend != nil { in, out := &in.Backend, &out.Backend - *out = new(IngressBackend) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(IngressBackend) + **out = **in + } } if in.TLS != nil { in, out := &in.TLS, &out.TLS @@ -924,18 +976,30 @@ func (in *NetworkPolicyPeer) DeepCopyInto(out *NetworkPolicyPeer) { *out = *in if in.PodSelector != nil { in, out := &in.PodSelector, &out.PodSelector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } if in.NamespaceSelector != nil { in, out := &in.NamespaceSelector, &out.NamespaceSelector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } if in.IPBlock != nil { in, out := &in.IPBlock, &out.IPBlock - *out = new(IPBlock) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(IPBlock) + (*in).DeepCopyInto(*out) + } } return } @@ -955,13 +1019,21 @@ func (in *NetworkPolicyPort) DeepCopyInto(out *NetworkPolicyPort) { *out = *in if in.Protocol != nil { in, out := &in.Protocol, &out.Protocol - *out = new(corev1.Protocol) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(core_v1.Protocol) + **out = **in + } } if in.Port != nil { in, out := &in.Port, &out.Port - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } return } @@ -1077,17 +1149,17 @@ func (in *PodSecurityPolicySpec) DeepCopyInto(out *PodSecurityPolicySpec) { *out = *in if in.DefaultAddCapabilities != nil { in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities - *out = make([]corev1.Capability, len(*in)) + *out = make([]core_v1.Capability, len(*in)) copy(*out, *in) } if in.RequiredDropCapabilities != nil { in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities - *out = make([]corev1.Capability, len(*in)) + *out = make([]core_v1.Capability, len(*in)) copy(*out, *in) } if in.AllowedCapabilities != nil { in, out := &in.AllowedCapabilities, &out.AllowedCapabilities - *out = make([]corev1.Capability, len(*in)) + *out = make([]core_v1.Capability, len(*in)) copy(*out, *in) } if in.Volumes != nil { @@ -1106,13 +1178,21 @@ func (in *PodSecurityPolicySpec) DeepCopyInto(out *PodSecurityPolicySpec) { in.FSGroup.DeepCopyInto(&out.FSGroup) if in.DefaultAllowPrivilegeEscalation != nil { in, out := &in.DefaultAllowPrivilegeEscalation, &out.DefaultAllowPrivilegeEscalation - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.AllowPrivilegeEscalation != nil { in, out := &in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.AllowedHostPaths != nil { in, out := &in.AllowedHostPaths, &out.AllowedHostPaths @@ -1230,13 +1310,21 @@ func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) { *out = *in if in.Replicas != nil { in, out := &in.Replicas, &out.Replicas - *out = new(int32) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(int32) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } in.Template.DeepCopyInto(&out.Template) return @@ -1321,8 +1409,12 @@ func (in *RollingUpdateDaemonSet) DeepCopyInto(out *RollingUpdateDaemonSet) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } return } @@ -1342,13 +1434,21 @@ func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) { *out = *in if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } if in.MaxSurge != nil { in, out := &in.MaxSurge, &out.MaxSurge - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } return } @@ -1389,8 +1489,12 @@ func (in *SELinuxStrategyOptions) DeepCopyInto(out *SELinuxStrategyOptions) { *out = *in if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions - *out = new(corev1.SELinuxOptions) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(core_v1.SELinuxOptions) + **out = **in + } } return } diff --git a/vendor/k8s.io/api/networking/v1/generated.pb.go b/vendor/k8s.io/api/networking/v1/generated.pb.go index 089d319639..7b1c04b29a 100644 --- a/vendor/k8s.io/api/networking/v1/generated.pb.go +++ b/vendor/k8s.io/api/networking/v1/generated.pb.go @@ -1813,57 +1813,56 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 829 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xf6, 0x3a, 0xce, 0x47, 0x27, 0x94, 0x92, 0x41, 0x08, 0x2b, 0x88, 0x75, 0xd8, 0x0b, 0x41, - 0x55, 0x67, 0x71, 0x8b, 0x10, 0x37, 0xc4, 0x42, 0x29, 0x96, 0x9a, 0xc4, 0x9a, 0xf4, 0x02, 0x02, - 0x89, 0xf5, 0xfa, 0xcd, 0x66, 0x6a, 0xef, 0xce, 0x6a, 0x66, 0x6c, 0x92, 0x1b, 0x3f, 0x81, 0x1f, - 0xc2, 0x91, 0x1b, 0x87, 0x72, 0xcc, 0xb1, 0xc7, 0x9e, 0x56, 0x64, 0xf9, 0x17, 0x39, 0xa1, 0x99, - 0x1d, 0x7b, 0xfd, 0x51, 0x0b, 0xb7, 0xa2, 0x37, 0xcf, 0x3b, 0xcf, 0xf3, 0xbc, 0x1f, 0xf3, 0xf8, - 0x5d, 0xf4, 0xd5, 0xe0, 0x0b, 0x49, 0x18, 0xf7, 0x07, 0xa3, 0x1e, 0x88, 0x14, 0x14, 0x48, 0x7f, - 0x0c, 0x69, 0x9f, 0x0b, 0xdf, 0x5e, 0x84, 0x19, 0xf3, 0x53, 0x50, 0xbf, 0x70, 0x31, 0x60, 0x69, - 0xec, 0x8f, 0xdb, 0x7e, 0x0c, 0x29, 0x88, 0x50, 0x41, 0x9f, 0x64, 0x82, 0x2b, 0x8e, 0x9b, 0x25, - 0x92, 0x84, 0x19, 0x23, 0x15, 0x92, 0x8c, 0xdb, 0xfb, 0xf7, 0x62, 0xa6, 0xce, 0x47, 0x3d, 0x12, - 0xf1, 0xc4, 0x8f, 0x79, 0xcc, 0x7d, 0x43, 0xe8, 0x8d, 0xce, 0xcc, 0xc9, 0x1c, 0xcc, 0xaf, 0x52, - 0x68, 0xdf, 0x9b, 0x49, 0x19, 0x71, 0x01, 0x2f, 0x49, 0xb6, 0x7f, 0x6f, 0x06, 0x03, 0x17, 0x0a, - 0x52, 0xc9, 0x78, 0x2a, 0xfd, 0x71, 0xbb, 0x07, 0x2a, 0x5c, 0x86, 0x7f, 0x32, 0x03, 0xcf, 0xf8, - 0x90, 0x45, 0x97, 0x2b, 0xa1, 0x9f, 0x55, 0xd0, 0x24, 0x8c, 0xce, 0x59, 0x0a, 0xe2, 0xd2, 0xcf, - 0x06, 0xb1, 0x0e, 0x48, 0x3f, 0x01, 0x15, 0xbe, 0xac, 0x1e, 0x7f, 0x15, 0x4b, 0x8c, 0x52, 0xc5, - 0x12, 0x58, 0x22, 0x7c, 0xfe, 0x5f, 0x04, 0x19, 0x9d, 0x43, 0x12, 0x2e, 0xf1, 0x1e, 0xac, 0xe2, - 0x8d, 0x14, 0x1b, 0xfa, 0x2c, 0x55, 0x52, 0x89, 0x45, 0x92, 0x77, 0x82, 0xb6, 0x3b, 0xdd, 0x60, - 0xc8, 0xa3, 0x01, 0x3e, 0x40, 0x8d, 0x88, 0xf5, 0x45, 0xd3, 0x39, 0x70, 0x0e, 0x6f, 0x05, 0x6f, - 0x5d, 0xe5, 0xad, 0x5a, 0x91, 0xb7, 0x1a, 0x5f, 0x77, 0xbe, 0xa1, 0xd4, 0xdc, 0x60, 0x0f, 0x6d, - 0xc1, 0x45, 0x04, 0x99, 0x6a, 0xd6, 0x0f, 0x36, 0x0e, 0x6f, 0x05, 0xa8, 0xc8, 0x5b, 0x5b, 0x0f, - 0x4d, 0x84, 0xda, 0x1b, 0xef, 0x2f, 0x07, 0xdd, 0x3e, 0x2e, 0xdf, 0xb8, 0x6b, 0xc6, 0x89, 0x7f, - 0x46, 0x3b, 0x7a, 0x36, 0xfd, 0x50, 0x85, 0x46, 0x7b, 0xf7, 0xfe, 0xa7, 0xa4, 0x32, 0xc4, 0xb4, - 0x54, 0x92, 0x0d, 0x62, 0x1d, 0x90, 0x44, 0xa3, 0xc9, 0xb8, 0x4d, 0x4e, 0x7a, 0x4f, 0x21, 0x52, - 0x47, 0xa0, 0xc2, 0x00, 0xdb, 0x6a, 0x50, 0x15, 0xa3, 0x53, 0x55, 0x7c, 0x84, 0x1a, 0x32, 0x83, - 0xa8, 0x59, 0x37, 0xea, 0x77, 0xc9, 0x2a, 0xbb, 0x91, 0xb9, 0xc2, 0x4e, 0x33, 0x88, 0xaa, 0x36, - 0xf5, 0x89, 0x1a, 0x19, 0xef, 0x0f, 0x07, 0xbd, 0x3f, 0x87, 0x7c, 0x18, 0x0b, 0x90, 0x92, 0x8e, - 0x86, 0x80, 0xbb, 0x68, 0x33, 0xe3, 0x42, 0xc9, 0xa6, 0x73, 0xb0, 0xf1, 0x0a, 0xb9, 0xba, 0x5c, - 0xa8, 0xe0, 0xb6, 0xcd, 0xb5, 0xa9, 0x4f, 0x92, 0x96, 0x42, 0xf8, 0x11, 0xaa, 0x2b, 0x6e, 0x06, - 0xfa, 0x0a, 0x72, 0x00, 0x22, 0x40, 0x56, 0xae, 0xfe, 0x84, 0xd3, 0xba, 0xe2, 0xde, 0x9f, 0x0e, - 0x6a, 0xce, 0xa1, 0x3a, 0xe9, 0x9b, 0xac, 0xfb, 0x08, 0x35, 0xce, 0x04, 0x4f, 0x5e, 0xa7, 0xf2, - 0xe9, 0xd0, 0xbf, 0x15, 0x3c, 0xa1, 0x46, 0xc6, 0x7b, 0xe6, 0xa0, 0xbd, 0x39, 0xe4, 0x63, 0x26, - 0x15, 0xfe, 0x71, 0xc9, 0x3b, 0x64, 0x3d, 0xef, 0x68, 0xb6, 0x71, 0xce, 0x3b, 0x36, 0xd7, 0xce, - 0x24, 0x32, 0xe3, 0x9b, 0xc7, 0x68, 0x93, 0x29, 0x48, 0xa4, 0xed, 0xe1, 0xe3, 0x35, 0x7b, 0xa8, - 0x06, 0xd2, 0xd1, 0x6c, 0x5a, 0x8a, 0x78, 0xcf, 0xea, 0x0b, 0x1d, 0xe8, 0x5e, 0xf1, 0x19, 0xda, - 0xcd, 0x78, 0xff, 0x14, 0x86, 0x10, 0x29, 0x2e, 0x6c, 0x13, 0x0f, 0xd6, 0x6c, 0x22, 0xec, 0xc1, - 0x70, 0x42, 0x0d, 0xee, 0x14, 0x79, 0x6b, 0xb7, 0x5b, 0x69, 0xd1, 0x59, 0x61, 0x7c, 0x81, 0xf6, - 0xd2, 0x30, 0x01, 0x99, 0x85, 0x11, 0x4c, 0xb3, 0xd5, 0x5f, 0x3f, 0xdb, 0x7b, 0x45, 0xde, 0xda, - 0x3b, 0x5e, 0x54, 0xa4, 0xcb, 0x49, 0xf0, 0x77, 0x68, 0x9b, 0x65, 0x66, 0x85, 0x34, 0x37, 0x4c, - 0xbe, 0x8f, 0x56, 0xcf, 0xd1, 0xee, 0x9a, 0x60, 0xb7, 0xc8, 0x5b, 0x93, 0xc5, 0x43, 0x27, 0x74, - 0xef, 0xf7, 0x45, 0x0f, 0x68, 0xc3, 0xe1, 0x47, 0x68, 0xc7, 0xec, 0xaa, 0x88, 0x0f, 0xed, 0x6e, - 0xba, 0xab, 0xdf, 0xb3, 0x6b, 0x63, 0x37, 0x79, 0xeb, 0x83, 0xe5, 0xcf, 0x02, 0x99, 0x5c, 0xd3, - 0x29, 0x19, 0x1f, 0xa3, 0x86, 0xb6, 0xae, 0x9d, 0xca, 0xea, 0x25, 0xa4, 0xf7, 0x25, 0x29, 0xf7, - 0x25, 0xe9, 0xa4, 0xea, 0x44, 0x9c, 0x2a, 0xc1, 0xd2, 0x38, 0xd8, 0xd1, 0x96, 0xd5, 0x25, 0x51, - 0xa3, 0xe3, 0xdd, 0x2c, 0x3e, 0xb8, 0xde, 0x21, 0xf8, 0xe9, 0xff, 0xf6, 0xe0, 0xef, 0x5a, 0x9b, - 0xad, 0x7e, 0xf4, 0x9f, 0xd0, 0x36, 0x2b, 0xff, 0xe4, 0xd6, 0xc2, 0xf7, 0xd7, 0xb4, 0xf0, 0xcc, - 0x6a, 0x08, 0xee, 0xd8, 0x34, 0xdb, 0x93, 0xe0, 0x44, 0x13, 0x7f, 0x8f, 0xb6, 0xa0, 0x54, 0xdf, - 0x30, 0xea, 0xed, 0x35, 0xd5, 0xab, 0x7d, 0x19, 0xbc, 0x6d, 0xc5, 0xb7, 0x6c, 0xcc, 0x0a, 0xe2, - 0x2f, 0xf5, 0x94, 0x34, 0xf6, 0xc9, 0x65, 0x06, 0xb2, 0xd9, 0x30, 0xdf, 0x93, 0x0f, 0xcb, 0x66, - 0xa7, 0xe1, 0x9b, 0xbc, 0x85, 0xaa, 0x23, 0x9d, 0x65, 0x04, 0x87, 0x57, 0xd7, 0x6e, 0xed, 0xf9, - 0xb5, 0x5b, 0x7b, 0x71, 0xed, 0xd6, 0x7e, 0x2d, 0x5c, 0xe7, 0xaa, 0x70, 0x9d, 0xe7, 0x85, 0xeb, - 0xbc, 0x28, 0x5c, 0xe7, 0xef, 0xc2, 0x75, 0x7e, 0xfb, 0xc7, 0xad, 0xfd, 0x50, 0x1f, 0xb7, 0xff, - 0x0d, 0x00, 0x00, 0xff, 0xff, 0x48, 0x47, 0x24, 0xc9, 0xc1, 0x08, 0x00, 0x00, + // 804 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0xcf, 0x8f, 0xdb, 0x44, + 0x14, 0x8e, 0x9d, 0x6c, 0x92, 0x4e, 0x28, 0x65, 0x07, 0x21, 0xac, 0x45, 0xd8, 0xc1, 0x17, 0x56, + 0xaa, 0x18, 0x93, 0x16, 0x21, 0x6e, 0x08, 0x43, 0x29, 0x91, 0xba, 0xbb, 0xd1, 0x6c, 0x2f, 0x20, + 0x90, 0x70, 0x9c, 0x59, 0xef, 0x34, 0xb1, 0xc7, 0x1a, 0x4f, 0x42, 0xf7, 0xc6, 0x9f, 0xc0, 0x1f, + 0xc2, 0x91, 0x1b, 0x87, 0x72, 0xdc, 0x63, 0x8f, 0x3d, 0x59, 0xac, 0xf9, 0x2f, 0xf6, 0x84, 0x66, + 0x3c, 0x89, 0xf3, 0xa3, 0x11, 0xd9, 0x15, 0xbd, 0x65, 0xde, 0xbc, 0xef, 0x7b, 0xf3, 0xde, 0xfb, + 0xf2, 0x19, 0x7c, 0x35, 0xfe, 0x22, 0x43, 0x94, 0x79, 0xe3, 0xe9, 0x90, 0xf0, 0x84, 0x08, 0x92, + 0x79, 0x33, 0x92, 0x8c, 0x18, 0xf7, 0xf4, 0x45, 0x90, 0x52, 0x2f, 0x21, 0xe2, 0x17, 0xc6, 0xc7, + 0x34, 0x89, 0xbc, 0x59, 0xcf, 0x8b, 0x48, 0x42, 0x78, 0x20, 0xc8, 0x08, 0xa5, 0x9c, 0x09, 0x06, + 0xad, 0x32, 0x13, 0x05, 0x29, 0x45, 0x55, 0x26, 0x9a, 0xf5, 0x0e, 0x3e, 0x89, 0xa8, 0x38, 0x9f, + 0x0e, 0x51, 0xc8, 0x62, 0x2f, 0x62, 0x11, 0xf3, 0x14, 0x60, 0x38, 0x3d, 0x53, 0x27, 0x75, 0x50, + 0xbf, 0x4a, 0xa2, 0x03, 0x77, 0xa9, 0x64, 0xc8, 0x38, 0x79, 0x4d, 0xb1, 0x83, 0xcf, 0xaa, 0x9c, + 0x38, 0x08, 0xcf, 0x69, 0x42, 0xf8, 0x85, 0x97, 0x8e, 0x23, 0x19, 0xc8, 0xbc, 0x98, 0x88, 0xe0, + 0x75, 0x28, 0x6f, 0x1b, 0x8a, 0x4f, 0x13, 0x41, 0x63, 0xb2, 0x01, 0xf8, 0xfc, 0xbf, 0x00, 0x59, + 0x78, 0x4e, 0xe2, 0x60, 0x03, 0xf7, 0x70, 0x1b, 0x6e, 0x2a, 0xe8, 0xc4, 0xa3, 0x89, 0xc8, 0x04, + 0x5f, 0x07, 0xb9, 0x27, 0xa0, 0xd5, 0x1f, 0xf8, 0x13, 0x16, 0x8e, 0x61, 0x17, 0x34, 0x42, 0x3a, + 0xe2, 0x96, 0xd1, 0x35, 0x0e, 0xef, 0xf8, 0x6f, 0x5d, 0xe6, 0x4e, 0xad, 0xc8, 0x9d, 0xc6, 0xd7, + 0xfd, 0x6f, 0x30, 0x56, 0x37, 0xd0, 0x05, 0x4d, 0xf2, 0x3c, 0x24, 0xa9, 0xb0, 0xcc, 0x6e, 0xfd, + 0xf0, 0x8e, 0x0f, 0x8a, 0xdc, 0x69, 0x3e, 0x52, 0x11, 0xac, 0x6f, 0xdc, 0xbf, 0x0c, 0x70, 0xf7, + 0xb8, 0xdc, 0xc4, 0x80, 0x4d, 0x68, 0x78, 0x01, 0x7f, 0x06, 0x6d, 0x39, 0x9b, 0x51, 0x20, 0x02, + 0xc5, 0xdd, 0x79, 0xf0, 0x29, 0xaa, 0xd6, 0xb6, 0x78, 0x2a, 0x4a, 0xc7, 0x91, 0x0c, 0x64, 0x48, + 0x66, 0xa3, 0x59, 0x0f, 0x9d, 0x0c, 0x9f, 0x91, 0x50, 0x1c, 0x11, 0x11, 0xf8, 0x50, 0xbf, 0x06, + 0x54, 0x31, 0xbc, 0x60, 0x85, 0x47, 0xa0, 0x91, 0xa5, 0x24, 0xb4, 0x4c, 0xc5, 0x7e, 0x1f, 0x6d, + 0x13, 0x05, 0x5a, 0x79, 0xd8, 0x69, 0x4a, 0xc2, 0xaa, 0x4d, 0x79, 0xc2, 0x8a, 0xc6, 0xfd, 0xc3, + 0x00, 0xef, 0xaf, 0x64, 0x3e, 0x8a, 0x38, 0xc9, 0x32, 0x3c, 0x9d, 0x10, 0x38, 0x00, 0x7b, 0x29, + 0xe3, 0x22, 0xb3, 0x8c, 0x6e, 0xfd, 0x06, 0xb5, 0x06, 0x8c, 0x0b, 0xff, 0xae, 0xae, 0xb5, 0x27, + 0x4f, 0x19, 0x2e, 0x89, 0xe0, 0x63, 0x60, 0x0a, 0xa6, 0x06, 0x7a, 0x03, 0x3a, 0x42, 0xb8, 0x0f, + 0x34, 0x9d, 0xf9, 0x94, 0x61, 0x53, 0x30, 0xf7, 0x4f, 0x03, 0x58, 0x2b, 0x59, 0xfd, 0xe4, 0x4d, + 0xbe, 0xfb, 0x08, 0x34, 0xce, 0x38, 0x8b, 0x6f, 0xf3, 0xf2, 0xc5, 0xd0, 0xbf, 0xe5, 0x2c, 0xc6, + 0x8a, 0xc6, 0x7d, 0x61, 0x80, 0xfd, 0x95, 0xcc, 0x27, 0x34, 0x13, 0xf0, 0xc7, 0x0d, 0xed, 0xa0, + 0xdd, 0xb4, 0x23, 0xd1, 0x4a, 0x39, 0xef, 0xe8, 0x5a, 0xed, 0x79, 0x64, 0x49, 0x37, 0x4f, 0xc0, + 0x1e, 0x15, 0x24, 0xce, 0x74, 0x0f, 0x1f, 0xef, 0xd8, 0x43, 0x35, 0x90, 0xbe, 0x44, 0xe3, 0x92, + 0xc4, 0x7d, 0x61, 0xae, 0x75, 0x20, 0x7b, 0x85, 0x67, 0xa0, 0x93, 0xb2, 0xd1, 0x29, 0x99, 0x90, + 0x50, 0x30, 0xae, 0x9b, 0x78, 0xb8, 0x63, 0x13, 0xc1, 0x90, 0x4c, 0xe6, 0x50, 0xff, 0x5e, 0x91, + 0x3b, 0x9d, 0x41, 0xc5, 0x85, 0x97, 0x89, 0xe1, 0x73, 0xb0, 0x9f, 0x04, 0x31, 0xc9, 0xd2, 0x20, + 0x24, 0x8b, 0x6a, 0xe6, 0xed, 0xab, 0xbd, 0x57, 0xe4, 0xce, 0xfe, 0xf1, 0x3a, 0x23, 0xde, 0x2c, + 0x02, 0xbf, 0x03, 0x2d, 0x9a, 0x2a, 0x0b, 0xb1, 0xea, 0xaa, 0xde, 0x47, 0xdb, 0xe7, 0xa8, 0xbd, + 0xc6, 0xef, 0x14, 0xb9, 0x33, 0x37, 0x1e, 0x3c, 0x87, 0xbb, 0xbf, 0xaf, 0x6b, 0x40, 0x0a, 0x0e, + 0x3e, 0x06, 0x6d, 0xe5, 0x55, 0x21, 0x9b, 0x68, 0x6f, 0xba, 0x2f, 0xf7, 0x39, 0xd0, 0xb1, 0xeb, + 0xdc, 0xf9, 0x60, 0xd3, 0xbc, 0xd1, 0xfc, 0x1a, 0x2f, 0xc0, 0xf0, 0x18, 0x34, 0xa4, 0x74, 0xf5, + 0x54, 0xb6, 0x9b, 0x90, 0xf4, 0x4b, 0x54, 0xfa, 0x25, 0xea, 0x27, 0xe2, 0x84, 0x9f, 0x0a, 0x4e, + 0x93, 0xc8, 0x6f, 0x4b, 0xc9, 0xca, 0x27, 0x61, 0xc5, 0xe3, 0x5e, 0xaf, 0x2f, 0x5c, 0x7a, 0x08, + 0x7c, 0xf6, 0xbf, 0x2d, 0xfc, 0x5d, 0x2d, 0xb3, 0xed, 0x4b, 0xff, 0x09, 0xb4, 0x68, 0xf9, 0x27, + 0xd7, 0x12, 0x7e, 0xb0, 0xa3, 0x84, 0x97, 0xac, 0xc1, 0xbf, 0xa7, 0xcb, 0xb4, 0xe6, 0xc1, 0x39, + 0x27, 0xfc, 0x1e, 0x34, 0x49, 0xc9, 0x5e, 0x57, 0xec, 0xbd, 0x1d, 0xd9, 0x2b, 0xbf, 0xf4, 0xdf, + 0xd6, 0xe4, 0x4d, 0x1d, 0xd3, 0x84, 0xf0, 0x4b, 0x39, 0x25, 0x99, 0xfb, 0xf4, 0x22, 0x25, 0x99, + 0xd5, 0x50, 0xdf, 0x93, 0x0f, 0xcb, 0x66, 0x17, 0xe1, 0xeb, 0xdc, 0x01, 0xd5, 0x11, 0x2f, 0x23, + 0xfc, 0xc3, 0xcb, 0x2b, 0xbb, 0xf6, 0xf2, 0xca, 0xae, 0xbd, 0xba, 0xb2, 0x6b, 0xbf, 0x16, 0xb6, + 0x71, 0x59, 0xd8, 0xc6, 0xcb, 0xc2, 0x36, 0x5e, 0x15, 0xb6, 0xf1, 0x77, 0x61, 0x1b, 0xbf, 0xfd, + 0x63, 0xd7, 0x7e, 0x30, 0x67, 0xbd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x7b, 0xc9, 0x59, + 0x67, 0x08, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/networking/v1/generated.proto b/vendor/k8s.io/api/networking/v1/generated.proto index f52343cf6a..eacf0ed90e 100644 --- a/vendor/k8s.io/api/networking/v1/generated.proto +++ b/vendor/k8s.io/api/networking/v1/generated.proto @@ -22,8 +22,6 @@ syntax = 'proto2'; package k8s.io.api.networking.v1; import "k8s.io/api/core/v1/generated.proto"; -import "k8s.io/api/extensions/v1beta1/generated.proto"; -import "k8s.io/api/policy/v1beta1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; diff --git a/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go index d1e4e88451..0037638a8d 100644 --- a/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/networking/v1/zz_generated.deepcopy.go @@ -21,8 +21,8 @@ limitations under the License. package v1 import ( - corev1 "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core_v1 "k8s.io/api/core/v1" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" ) @@ -173,18 +173,30 @@ func (in *NetworkPolicyPeer) DeepCopyInto(out *NetworkPolicyPeer) { *out = *in if in.PodSelector != nil { in, out := &in.PodSelector, &out.PodSelector - *out = new(metav1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } if in.NamespaceSelector != nil { in, out := &in.NamespaceSelector, &out.NamespaceSelector - *out = new(metav1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(meta_v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } if in.IPBlock != nil { in, out := &in.IPBlock, &out.IPBlock - *out = new(IPBlock) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(IPBlock) + (*in).DeepCopyInto(*out) + } } return } @@ -204,13 +216,21 @@ func (in *NetworkPolicyPort) DeepCopyInto(out *NetworkPolicyPort) { *out = *in if in.Protocol != nil { in, out := &in.Protocol, &out.Protocol - *out = new(corev1.Protocol) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(core_v1.Protocol) + **out = **in + } } if in.Port != nil { in, out := &in.Port, &out.Port - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } return } diff --git a/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go index 96e350967b..1980bd1611 100644 --- a/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/policy/v1beta1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1beta1 import ( - corev1 "k8s.io/api/core/v1" + core_v1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" intstr "k8s.io/apimachinery/pkg/util/intstr" @@ -66,8 +66,12 @@ func (in *Eviction) DeepCopyInto(out *Eviction) { in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) if in.DeleteOptions != nil { in, out := &in.DeleteOptions, &out.DeleteOptions - *out = new(v1.DeleteOptions) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.DeleteOptions) + (*in).DeepCopyInto(*out) + } } return } @@ -209,18 +213,30 @@ func (in *PodDisruptionBudgetSpec) DeepCopyInto(out *PodDisruptionBudgetSpec) { *out = *in if in.MinAvailable != nil { in, out := &in.MinAvailable, &out.MinAvailable - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } if in.Selector != nil { in, out := &in.Selector, &out.Selector - *out = new(v1.LabelSelector) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(v1.LabelSelector) + (*in).DeepCopyInto(*out) + } } if in.MaxUnavailable != nil { in, out := &in.MaxUnavailable, &out.MaxUnavailable - *out = new(intstr.IntOrString) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(intstr.IntOrString) + **out = **in + } } return } @@ -323,17 +339,17 @@ func (in *PodSecurityPolicySpec) DeepCopyInto(out *PodSecurityPolicySpec) { *out = *in if in.DefaultAddCapabilities != nil { in, out := &in.DefaultAddCapabilities, &out.DefaultAddCapabilities - *out = make([]corev1.Capability, len(*in)) + *out = make([]core_v1.Capability, len(*in)) copy(*out, *in) } if in.RequiredDropCapabilities != nil { in, out := &in.RequiredDropCapabilities, &out.RequiredDropCapabilities - *out = make([]corev1.Capability, len(*in)) + *out = make([]core_v1.Capability, len(*in)) copy(*out, *in) } if in.AllowedCapabilities != nil { in, out := &in.AllowedCapabilities, &out.AllowedCapabilities - *out = make([]corev1.Capability, len(*in)) + *out = make([]core_v1.Capability, len(*in)) copy(*out, *in) } if in.Volumes != nil { @@ -352,13 +368,21 @@ func (in *PodSecurityPolicySpec) DeepCopyInto(out *PodSecurityPolicySpec) { in.FSGroup.DeepCopyInto(&out.FSGroup) if in.DefaultAllowPrivilegeEscalation != nil { in, out := &in.DefaultAllowPrivilegeEscalation, &out.DefaultAllowPrivilegeEscalation - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.AllowPrivilegeEscalation != nil { in, out := &in.AllowPrivilegeEscalation, &out.AllowPrivilegeEscalation - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.AllowedHostPaths != nil { in, out := &in.AllowedHostPaths, &out.AllowedHostPaths @@ -419,8 +443,12 @@ func (in *SELinuxStrategyOptions) DeepCopyInto(out *SELinuxStrategyOptions) { *out = *in if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions - *out = new(corev1.SELinuxOptions) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(core_v1.SELinuxOptions) + **out = **in + } } return } diff --git a/vendor/k8s.io/api/rbac/v1/generated.pb.go b/vendor/k8s.io/api/rbac/v1/generated.pb.go index 6dd7d727bb..21010fbeea 100644 --- a/vendor/k8s.io/api/rbac/v1/generated.pb.go +++ b/vendor/k8s.io/api/rbac/v1/generated.pb.go @@ -2693,57 +2693,56 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 827 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x55, 0xcf, 0x8b, 0x23, 0x45, - 0x18, 0x4d, 0x65, 0x12, 0x26, 0x5d, 0x31, 0xc4, 0x2d, 0x17, 0x69, 0xa2, 0x74, 0x86, 0x16, 0x24, - 0xa0, 0x76, 0x9b, 0x5d, 0x51, 0x41, 0xf6, 0xb0, 0xbd, 0xa2, 0x0c, 0x3b, 0x8e, 0x4b, 0x2d, 0x7a, - 0x10, 0x0f, 0x56, 0x77, 0x6a, 0x3b, 0x65, 0xfa, 0x17, 0x55, 0xd5, 0x81, 0xc5, 0x8b, 0x08, 0x1e, - 0xbc, 0x79, 0xd4, 0xbf, 0xc0, 0x8b, 0x1e, 0xfd, 0x0b, 0xbc, 0xcc, 0x71, 0x8f, 0x7b, 0x0a, 0x4e, - 0xfb, 0x87, 0x28, 0xfd, 0x2b, 0x9d, 0xa4, 0x3b, 0x4e, 0x4e, 0x01, 0xf1, 0x34, 0x53, 0xdf, 0xf7, - 0xde, 0xfb, 0x5e, 0xbf, 0xa9, 0xaf, 0x06, 0x7e, 0xb0, 0x78, 0x5f, 0x18, 0x2c, 0x34, 0x17, 0xb1, - 0x4d, 0x79, 0x40, 0x25, 0x15, 0xe6, 0x92, 0x06, 0xb3, 0x90, 0x9b, 0x45, 0x83, 0x44, 0xcc, 0xe4, - 0x36, 0x71, 0xcc, 0xe5, 0xd4, 0x74, 0x69, 0x40, 0x39, 0x91, 0x74, 0x66, 0x44, 0x3c, 0x94, 0x21, - 0x42, 0x39, 0xc6, 0x20, 0x11, 0x33, 0x52, 0x8c, 0xb1, 0x9c, 0x8e, 0xde, 0x72, 0x99, 0x9c, 0xc7, - 0xb6, 0xe1, 0x84, 0xbe, 0xe9, 0x86, 0x6e, 0x68, 0x66, 0x50, 0x3b, 0x7e, 0x92, 0x9d, 0xb2, 0x43, - 0xf6, 0x5b, 0x2e, 0x31, 0x9a, 0xd4, 0xc7, 0x10, 0x2f, 0x9a, 0x93, 0xda, 0xb0, 0xd1, 0x3b, 0x15, - 0xd2, 0x27, 0xce, 0x9c, 0x05, 0x94, 0x3f, 0x35, 0xa3, 0x85, 0x9b, 0x16, 0x84, 0xe9, 0x53, 0x49, - 0x1a, 0x2c, 0x8e, 0xcc, 0x7d, 0x2c, 0x1e, 0x07, 0x92, 0xf9, 0xb4, 0x46, 0x78, 0xf7, 0x26, 0x82, - 0x70, 0xe6, 0xd4, 0x27, 0x35, 0xde, 0xdd, 0x7d, 0xbc, 0x58, 0x32, 0xcf, 0x64, 0x81, 0x14, 0x92, - 0xef, 0x92, 0xf4, 0x9f, 0x01, 0x1c, 0xde, 0x77, 0x5d, 0x4e, 0x5d, 0x22, 0x59, 0x18, 0xe0, 0xd8, - 0xa3, 0xe8, 0x7b, 0x00, 0x6f, 0x3b, 0x5e, 0x2c, 0x24, 0xe5, 0x38, 0xf4, 0xe8, 0x63, 0xea, 0x51, - 0x47, 0x86, 0x5c, 0xa8, 0xe0, 0xec, 0x64, 0xd2, 0xbf, 0x73, 0xd7, 0xa8, 0x42, 0x5f, 0x0f, 0x32, - 0xa2, 0x85, 0x9b, 0x16, 0x84, 0x91, 0xe6, 0x60, 0x2c, 0xa7, 0xc6, 0x05, 0xb1, 0xa9, 0x57, 0x72, - 0xad, 0x57, 0xaf, 0x56, 0xe3, 0x56, 0xb2, 0x1a, 0xdf, 0x7e, 0xd0, 0x20, 0x8c, 0x1b, 0xc7, 0xe9, - 0x3f, 0xb5, 0x61, 0x7f, 0x03, 0x8e, 0xbe, 0x82, 0xbd, 0x54, 0x7c, 0x46, 0x24, 0x51, 0xc1, 0x19, - 0x98, 0xf4, 0xef, 0xbc, 0x7d, 0x98, 0x95, 0x4f, 0xed, 0xaf, 0xa9, 0x23, 0x3f, 0xa1, 0x92, 0x58, - 0xa8, 0xf0, 0x01, 0xab, 0x1a, 0x5e, 0xab, 0xa2, 0x07, 0xb0, 0xcb, 0x63, 0x8f, 0x0a, 0xb5, 0x9d, - 0x7d, 0xa9, 0x66, 0xd4, 0xaf, 0x97, 0xf1, 0x28, 0xf4, 0x98, 0xf3, 0x34, 0x0d, 0xca, 0x1a, 0x14, - 0x62, 0xdd, 0xf4, 0x24, 0x70, 0xce, 0x45, 0x36, 0x1c, 0x92, 0xed, 0x44, 0xd5, 0x93, 0xcc, 0xed, - 0x6b, 0x4d, 0x72, 0x3b, 0xe1, 0x5b, 0x2f, 0x25, 0xab, 0xf1, 0xee, 0x5f, 0x04, 0xef, 0x0a, 0xea, - 0x3f, 0xb4, 0x21, 0xda, 0x88, 0xc6, 0x62, 0xc1, 0x8c, 0x05, 0xee, 0x11, 0x12, 0x3a, 0x87, 0x3d, - 0x11, 0x67, 0x8d, 0x32, 0xa4, 0x57, 0x9a, 0xbe, 0xea, 0x71, 0x8e, 0xb1, 0x5e, 0x2c, 0xc4, 0x7a, - 0x45, 0x41, 0xe0, 0x35, 0x1d, 0x7d, 0x04, 0x4f, 0x79, 0xe8, 0x51, 0x4c, 0x9f, 0x14, 0xf9, 0x34, - 0x2a, 0xe1, 0x1c, 0x62, 0x0d, 0x0b, 0xa5, 0xd3, 0xa2, 0x80, 0x4b, 0xb2, 0xfe, 0x07, 0x80, 0x2f, - 0xd7, 0xb3, 0xb8, 0x60, 0x42, 0xa2, 0x2f, 0x6b, 0x79, 0x18, 0x07, 0x5e, 0x5e, 0x26, 0xf2, 0x34, - 0xd6, 0x1f, 0x50, 0x56, 0x36, 0xb2, 0x78, 0x08, 0xbb, 0x4c, 0x52, 0xbf, 0x0c, 0xe2, 0xf5, 0x26, - 0xfb, 0x75, 0x63, 0xd5, 0xad, 0x39, 0x4f, 0xc9, 0x38, 0xd7, 0xd0, 0x7f, 0x07, 0x70, 0xb8, 0x01, - 0x3e, 0x82, 0xfd, 0x0f, 0xb7, 0xed, 0x8f, 0x6f, 0xb2, 0xdf, 0xec, 0xfb, 0x6f, 0x00, 0x61, 0xb5, - 0x12, 0x68, 0x0c, 0xbb, 0x4b, 0xca, 0xed, 0xfc, 0xad, 0x50, 0x2c, 0x25, 0xc5, 0x7f, 0x9e, 0x16, - 0x70, 0x5e, 0x47, 0x6f, 0x40, 0x85, 0x44, 0xec, 0x63, 0x1e, 0xc6, 0x51, 0x3e, 0x59, 0xb1, 0x06, - 0xc9, 0x6a, 0xac, 0xdc, 0x7f, 0x74, 0x9e, 0x17, 0x71, 0xd5, 0x4f, 0xc1, 0x9c, 0x8a, 0x30, 0xe6, - 0x0e, 0x15, 0xea, 0x49, 0x05, 0xc6, 0x65, 0x11, 0x57, 0x7d, 0xf4, 0x1e, 0x1c, 0x94, 0x87, 0x4b, - 0xe2, 0x53, 0xa1, 0x76, 0x32, 0xc2, 0xad, 0x64, 0x35, 0x1e, 0xe0, 0xcd, 0x06, 0xde, 0xc6, 0xa1, - 0x7b, 0x70, 0x18, 0x84, 0x41, 0x09, 0xf9, 0x0c, 0x5f, 0x08, 0xb5, 0x9b, 0x51, 0xb3, 0x5d, 0xbc, - 0xdc, 0x6e, 0xe1, 0x5d, 0xac, 0xfe, 0x1b, 0x80, 0x9d, 0xff, 0xd0, 0xfb, 0xa4, 0x7f, 0xd7, 0x86, - 0xfd, 0xff, 0xfd, 0xa3, 0x91, 0xae, 0xdb, 0x71, 0x5f, 0x8b, 0x43, 0xd6, 0xed, 0xe6, 0x67, 0xe2, - 0x17, 0x00, 0x7b, 0x47, 0x7a, 0x1f, 0xee, 0x6d, 0x1b, 0x56, 0xf7, 0x1a, 0x6e, 0x76, 0xfa, 0x0d, - 0x2c, 0x53, 0x47, 0x6f, 0xc2, 0x5e, 0xb9, 0xd3, 0x99, 0x4f, 0xa5, 0x9a, 0x5b, 0xae, 0x3d, 0x5e, - 0x23, 0xd0, 0x19, 0xec, 0x2c, 0x58, 0x30, 0x53, 0xdb, 0x19, 0xf2, 0x85, 0x02, 0xd9, 0x79, 0xc8, - 0x82, 0x19, 0xce, 0x3a, 0x29, 0x22, 0x20, 0x7e, 0xfe, 0x6f, 0x75, 0x03, 0x91, 0x6e, 0x33, 0xce, - 0x3a, 0xfa, 0xaf, 0x00, 0x9e, 0x16, 0xb7, 0x67, 0xad, 0x07, 0xf6, 0xea, 0x6d, 0xfa, 0x6b, 0x1f, - 0xe2, 0xef, 0xdf, 0xa7, 0x23, 0x13, 0x2a, 0xe9, 0x4f, 0x11, 0x11, 0x87, 0xaa, 0x9d, 0x0c, 0x76, - 0xab, 0x80, 0x29, 0x97, 0x65, 0x03, 0x57, 0x18, 0x6b, 0x72, 0x75, 0xad, 0xb5, 0x9e, 0x5d, 0x6b, - 0xad, 0xe7, 0xd7, 0x5a, 0xeb, 0xdb, 0x44, 0x03, 0x57, 0x89, 0x06, 0x9e, 0x25, 0x1a, 0x78, 0x9e, - 0x68, 0xe0, 0xcf, 0x44, 0x03, 0x3f, 0xfe, 0xa5, 0xb5, 0xbe, 0x68, 0x2f, 0xa7, 0xff, 0x04, 0x00, - 0x00, 0xff, 0xff, 0x32, 0xe3, 0x23, 0xf8, 0x2e, 0x0b, 0x00, 0x00, + // 807 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x55, 0xcf, 0x6f, 0xe3, 0x44, + 0x14, 0xce, 0xa4, 0x89, 0x1a, 0x4f, 0x88, 0x42, 0x87, 0x0a, 0x59, 0x05, 0x39, 0x95, 0x91, 0x50, + 0x25, 0xc0, 0x26, 0x05, 0x01, 0x12, 0xea, 0xa1, 0x2e, 0x02, 0x55, 0x2d, 0xa5, 0x9a, 0x0a, 0x0e, + 0x88, 0x03, 0x63, 0x67, 0xea, 0x0e, 0xf1, 0x2f, 0xcd, 0xd8, 0x91, 0x2a, 0x2e, 0x08, 0x89, 0x03, + 0xb7, 0x3d, 0xee, 0xfe, 0x05, 0x7b, 0xd9, 0x3d, 0xee, 0x5f, 0xb0, 0x97, 0x1e, 0x7b, 0xec, 0x29, + 0xda, 0x7a, 0xff, 0x90, 0x5d, 0xf9, 0x57, 0x9c, 0x1f, 0xee, 0x36, 0xa7, 0x48, 0xab, 0x3d, 0xb5, + 0xf3, 0xde, 0xf7, 0xbe, 0xf7, 0xcd, 0xe7, 0x79, 0x2f, 0xf0, 0xfb, 0xe1, 0x77, 0x42, 0x63, 0xbe, + 0x3e, 0x8c, 0x4c, 0xca, 0x3d, 0x1a, 0x52, 0xa1, 0x8f, 0xa8, 0x37, 0xf0, 0xb9, 0x9e, 0x27, 0x48, + 0xc0, 0x74, 0x6e, 0x12, 0x4b, 0x1f, 0xf5, 0x75, 0x9b, 0x7a, 0x94, 0x93, 0x90, 0x0e, 0xb4, 0x80, + 0xfb, 0xa1, 0x8f, 0x50, 0x86, 0xd1, 0x48, 0xc0, 0xb4, 0x04, 0xa3, 0x8d, 0xfa, 0x5b, 0x5f, 0xd8, + 0x2c, 0xbc, 0x88, 0x4c, 0xcd, 0xf2, 0x5d, 0xdd, 0xf6, 0x6d, 0x5f, 0x4f, 0xa1, 0x66, 0x74, 0x9e, + 0x9e, 0xd2, 0x43, 0xfa, 0x5f, 0x46, 0xb1, 0xf5, 0x75, 0xd9, 0xc6, 0x25, 0xd6, 0x05, 0xf3, 0x28, + 0xbf, 0xd4, 0x83, 0xa1, 0x9d, 0x04, 0x84, 0xee, 0xd2, 0x90, 0x54, 0x34, 0xde, 0xd2, 0xef, 0xaa, + 0xe2, 0x91, 0x17, 0x32, 0x97, 0x2e, 0x14, 0x7c, 0x73, 0x5f, 0x81, 0xb0, 0x2e, 0xa8, 0x4b, 0xe6, + 0xeb, 0xd4, 0x47, 0x00, 0x76, 0xf7, 0x6d, 0x9b, 0x53, 0x9b, 0x84, 0xcc, 0xf7, 0x70, 0xe4, 0x50, + 0xf4, 0x1f, 0x80, 0x9b, 0x96, 0x13, 0x89, 0x90, 0x72, 0xec, 0x3b, 0xf4, 0x8c, 0x3a, 0xd4, 0x0a, + 0x7d, 0x2e, 0x64, 0xb0, 0xbd, 0xb6, 0xd3, 0xde, 0xfd, 0x4a, 0x2b, 0x5d, 0x99, 0xf4, 0xd2, 0x82, + 0xa1, 0x9d, 0x04, 0x84, 0x96, 0x5c, 0x49, 0x1b, 0xf5, 0xb5, 0x63, 0x62, 0x52, 0xa7, 0xa8, 0x35, + 0x3e, 0xbe, 0x1a, 0xf7, 0x6a, 0xf1, 0xb8, 0xb7, 0x79, 0x50, 0x41, 0x8c, 0x2b, 0xdb, 0xa9, 0x0f, + 0xeb, 0xb0, 0x3d, 0x05, 0x47, 0x7f, 0xc2, 0x56, 0x42, 0x3e, 0x20, 0x21, 0x91, 0xc1, 0x36, 0xd8, + 0x69, 0xef, 0x7e, 0xb9, 0x9c, 0x94, 0x5f, 0xcc, 0xbf, 0xa8, 0x15, 0xfe, 0x4c, 0x43, 0x62, 0xa0, + 0x5c, 0x07, 0x2c, 0x63, 0x78, 0xc2, 0x8a, 0x0e, 0x60, 0x93, 0x47, 0x0e, 0x15, 0x72, 0x3d, 0xbd, + 0xa9, 0xa2, 0x2d, 0x7e, 0x7f, 0xed, 0xd4, 0x77, 0x98, 0x75, 0x99, 0x18, 0x65, 0x74, 0x72, 0xb2, + 0x66, 0x72, 0x12, 0x38, 0xab, 0x45, 0x26, 0xec, 0x92, 0x59, 0x47, 0xe5, 0xb5, 0x54, 0xed, 0x27, + 0x55, 0x74, 0x73, 0xe6, 0x1b, 0x1f, 0xc4, 0xe3, 0xde, 0xfc, 0x17, 0xc1, 0xf3, 0x84, 0xea, 0xff, + 0x75, 0x88, 0xa6, 0xac, 0x31, 0x98, 0x37, 0x60, 0x9e, 0xbd, 0x02, 0x87, 0x0e, 0x61, 0x4b, 0x44, + 0x69, 0xa2, 0x30, 0xe9, 0xa3, 0xaa, 0x5b, 0x9d, 0x65, 0x18, 0xe3, 0xfd, 0x9c, 0xac, 0x95, 0x07, + 0x04, 0x9e, 0x94, 0xa3, 0x1f, 0xe1, 0x3a, 0xf7, 0x1d, 0x8a, 0xe9, 0x79, 0xee, 0x4f, 0x25, 0x13, + 0xce, 0x20, 0x46, 0x37, 0x67, 0x5a, 0xcf, 0x03, 0xb8, 0x28, 0x56, 0x9f, 0x03, 0xf8, 0xe1, 0xa2, + 0x17, 0xc7, 0x4c, 0x84, 0xe8, 0x8f, 0x05, 0x3f, 0xb4, 0x25, 0x1f, 0x2f, 0x13, 0x99, 0x1b, 0x93, + 0x0b, 0x14, 0x91, 0x29, 0x2f, 0x8e, 0x60, 0x93, 0x85, 0xd4, 0x2d, 0x8c, 0xf8, 0xb4, 0x4a, 0xfe, + 0xa2, 0xb0, 0xf2, 0xd5, 0x1c, 0x26, 0xc5, 0x38, 0xe3, 0x50, 0x9f, 0x01, 0xd8, 0x9d, 0x02, 0xaf, + 0x40, 0xfe, 0x0f, 0xb3, 0xf2, 0x7b, 0xf7, 0xc9, 0xaf, 0xd6, 0xfd, 0x0a, 0x40, 0x58, 0x8e, 0x04, + 0xea, 0xc1, 0xe6, 0x88, 0x72, 0x33, 0xdb, 0x15, 0x92, 0x21, 0x25, 0xf8, 0xdf, 0x92, 0x00, 0xce, + 0xe2, 0xe8, 0x33, 0x28, 0x91, 0x80, 0xfd, 0xc4, 0xfd, 0x28, 0xc8, 0x3a, 0x4b, 0x46, 0x27, 0x1e, + 0xf7, 0xa4, 0xfd, 0xd3, 0xc3, 0x2c, 0x88, 0xcb, 0x7c, 0x02, 0xe6, 0x54, 0xf8, 0x11, 0xb7, 0xa8, + 0x90, 0xd7, 0x4a, 0x30, 0x2e, 0x82, 0xb8, 0xcc, 0xa3, 0x6f, 0x61, 0xa7, 0x38, 0x9c, 0x10, 0x97, + 0x0a, 0xb9, 0x91, 0x16, 0x6c, 0xc4, 0xe3, 0x5e, 0x07, 0x4f, 0x27, 0xf0, 0x2c, 0x0e, 0xed, 0xc1, + 0xae, 0xe7, 0x7b, 0x05, 0xe4, 0x57, 0x7c, 0x2c, 0xe4, 0x66, 0x5a, 0x9a, 0xce, 0xe2, 0xc9, 0x6c, + 0x0a, 0xcf, 0x63, 0xd5, 0xa7, 0x00, 0x36, 0xde, 0xa2, 0xfd, 0xa4, 0xfe, 0x5b, 0x87, 0xed, 0x77, + 0x7e, 0x69, 0x24, 0xe3, 0xb6, 0xda, 0x6d, 0xb1, 0xcc, 0xb8, 0xdd, 0xbf, 0x26, 0x1e, 0x03, 0xd8, + 0x5a, 0xd1, 0x7e, 0xd8, 0x9b, 0x15, 0x2c, 0xdf, 0x29, 0xb8, 0x5a, 0xe9, 0xdf, 0xb0, 0x70, 0x1d, + 0x7d, 0x0e, 0x5b, 0xc5, 0x4c, 0xa7, 0x3a, 0xa5, 0xb2, 0x6f, 0x31, 0xf6, 0x78, 0x82, 0x40, 0xdb, + 0xb0, 0x31, 0x64, 0xde, 0x40, 0xae, 0xa7, 0xc8, 0xf7, 0x72, 0x64, 0xe3, 0x88, 0x79, 0x03, 0x9c, + 0x66, 0x12, 0x84, 0x47, 0xdc, 0xec, 0x67, 0x75, 0x0a, 0x91, 0x4c, 0x33, 0x4e, 0x33, 0xea, 0x13, + 0x00, 0xd7, 0xf3, 0xd7, 0x33, 0xe1, 0x03, 0x77, 0xf2, 0x4d, 0xeb, 0xab, 0x2f, 0xa3, 0xef, 0xcd, + 0xdd, 0x91, 0x0e, 0xa5, 0xe4, 0xaf, 0x08, 0x88, 0x45, 0xe5, 0x46, 0x0a, 0xdb, 0xc8, 0x61, 0xd2, + 0x49, 0x91, 0xc0, 0x25, 0xc6, 0xd8, 0xb9, 0xba, 0x55, 0x6a, 0xd7, 0xb7, 0x4a, 0xed, 0xe6, 0x56, + 0xa9, 0xfd, 0x13, 0x2b, 0xe0, 0x2a, 0x56, 0xc0, 0x75, 0xac, 0x80, 0x9b, 0x58, 0x01, 0x2f, 0x62, + 0x05, 0x3c, 0x78, 0xa9, 0xd4, 0x7e, 0xaf, 0x8f, 0xfa, 0xaf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x24, + 0xa1, 0x47, 0x98, 0xcf, 0x0a, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/rbac/v1/generated.proto b/vendor/k8s.io/api/rbac/v1/generated.proto index 78aca15bce..4b321a7c24 100644 --- a/vendor/k8s.io/api/rbac/v1/generated.proto +++ b/vendor/k8s.io/api/rbac/v1/generated.proto @@ -21,11 +21,9 @@ syntax = 'proto2'; package k8s.io.api.rbac.v1; -import "k8s.io/api/rbac/v1alpha1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1"; diff --git a/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go index 07eb321eab..be1592f77e 100644 --- a/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/rbac/v1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1 import ( - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -30,7 +30,7 @@ func (in *AggregationRule) DeepCopyInto(out *AggregationRule) { *out = *in if in.ClusterRoleSelectors != nil { in, out := &in.ClusterRoleSelectors, &out.ClusterRoleSelectors - *out = make([]metav1.LabelSelector, len(*in)) + *out = make([]meta_v1.LabelSelector, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -62,8 +62,12 @@ func (in *ClusterRole) DeepCopyInto(out *ClusterRole) { } if in.AggregationRule != nil { in, out := &in.AggregationRule, &out.AggregationRule - *out = new(AggregationRule) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(AggregationRule) + (*in).DeepCopyInto(*out) + } } return } diff --git a/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go b/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go index b8cf5431a1..71eced8d4e 100644 --- a/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go +++ b/vendor/k8s.io/api/rbac/v1alpha1/generated.pb.go @@ -2693,58 +2693,57 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 844 bytes of a gzipped FileDescriptorProto + // 830 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x55, 0xbf, 0x8f, 0xe3, 0x44, - 0x14, 0xce, 0x64, 0x13, 0x36, 0x99, 0x65, 0x15, 0x6e, 0x38, 0x21, 0x6b, 0x85, 0x9c, 0xc5, 0x02, - 0xe9, 0x10, 0x87, 0xcd, 0xee, 0x21, 0xa0, 0xa1, 0x58, 0x5f, 0x81, 0x16, 0x96, 0xbd, 0x65, 0x4e, - 0x5c, 0x81, 0x28, 0x98, 0x38, 0x73, 0xce, 0x10, 0xdb, 0x63, 0xcd, 0x8c, 0x23, 0x9d, 0x68, 0x68, - 0x68, 0x11, 0x0d, 0x05, 0x3d, 0x2d, 0x0d, 0x94, 0xfc, 0x03, 0x4b, 0x77, 0xe5, 0x56, 0x11, 0x6b, - 0xfe, 0x10, 0x90, 0xc7, 0x76, 0xec, 0xfc, 0x22, 0xa9, 0x22, 0x21, 0x51, 0x25, 0xf3, 0xde, 0xf7, - 0xbe, 0xf7, 0xde, 0x37, 0xf3, 0x9e, 0xe1, 0xd9, 0xf8, 0x03, 0x69, 0x33, 0xee, 0x8c, 0x93, 0x01, - 0x15, 0x11, 0x55, 0x54, 0x3a, 0x13, 0x1a, 0x0d, 0xb9, 0x70, 0x0a, 0x07, 0x89, 0x99, 0x23, 0x06, - 0xc4, 0x73, 0x26, 0x27, 0x24, 0x88, 0x47, 0xe4, 0xc4, 0xf1, 0x69, 0x44, 0x05, 0x51, 0x74, 0x68, - 0xc7, 0x82, 0x2b, 0x8e, 0x8c, 0x1c, 0x69, 0x93, 0x98, 0xd9, 0x19, 0xd2, 0x2e, 0x91, 0x47, 0x6f, - 0xfb, 0x4c, 0x8d, 0x92, 0x81, 0xed, 0xf1, 0xd0, 0xf1, 0xb9, 0xcf, 0x1d, 0x1d, 0x30, 0x48, 0x9e, - 0xea, 0x93, 0x3e, 0xe8, 0x7f, 0x39, 0xd1, 0xd1, 0xbb, 0x55, 0xca, 0x90, 0x78, 0x23, 0x16, 0x51, - 0xf1, 0xcc, 0x89, 0xc7, 0x7e, 0x66, 0x90, 0x4e, 0x48, 0x15, 0x71, 0x26, 0x4b, 0xe9, 0x8f, 0x9c, - 0x75, 0x51, 0x22, 0x89, 0x14, 0x0b, 0xe9, 0x52, 0xc0, 0x7b, 0x9b, 0x02, 0xa4, 0x37, 0xa2, 0x21, - 0x59, 0x8a, 0x7b, 0xb0, 0x2e, 0x2e, 0x51, 0x2c, 0x70, 0x58, 0xa4, 0xa4, 0x12, 0x8b, 0x41, 0xd6, - 0x4f, 0x00, 0xf6, 0xce, 0x7c, 0x5f, 0x50, 0x9f, 0x28, 0xc6, 0x23, 0x9c, 0x04, 0x14, 0x7d, 0x07, - 0xe0, 0x5d, 0x2f, 0x48, 0xa4, 0xa2, 0x02, 0xf3, 0x80, 0x3e, 0xa6, 0x01, 0xf5, 0x14, 0x17, 0xd2, - 0x00, 0xc7, 0x7b, 0xf7, 0x0e, 0x4e, 0x1f, 0xd8, 0x95, 0xa0, 0xb3, 0x44, 0x76, 0x3c, 0xf6, 0x33, - 0x83, 0xb4, 0x33, 0x1d, 0xec, 0xc9, 0x89, 0x7d, 0x41, 0x06, 0x34, 0x28, 0x63, 0xdd, 0x57, 0xaf, - 0xa7, 0xfd, 0x46, 0x3a, 0xed, 0xdf, 0x7d, 0xb8, 0x82, 0x18, 0xaf, 0x4c, 0x67, 0xfd, 0xdc, 0x84, - 0x07, 0x35, 0x38, 0xfa, 0x0a, 0x76, 0x32, 0xf2, 0x21, 0x51, 0xc4, 0x00, 0xc7, 0xe0, 0xde, 0xc1, - 0xe9, 0x3b, 0xdb, 0x95, 0xf2, 0x68, 0xf0, 0x35, 0xf5, 0xd4, 0xa7, 0x54, 0x11, 0x17, 0x15, 0x75, - 0xc0, 0xca, 0x86, 0x67, 0xac, 0xe8, 0x1c, 0xb6, 0x45, 0x12, 0x50, 0x69, 0x34, 0x75, 0xa7, 0xaf, - 0xdb, 0xeb, 0x9e, 0x8e, 0x7d, 0xc5, 0x03, 0xe6, 0x3d, 0xcb, 0xe4, 0x72, 0x0f, 0x0b, 0xca, 0x76, - 0x76, 0x92, 0x38, 0x67, 0x40, 0x23, 0xd8, 0x23, 0xf3, 0xba, 0x1a, 0x7b, 0xba, 0xe6, 0x37, 0xd7, - 0x93, 0x2e, 0x5c, 0x84, 0xfb, 0x72, 0x3a, 0xed, 0x2f, 0xde, 0x0e, 0x5e, 0xa4, 0xb5, 0x7e, 0x6c, - 0x42, 0x54, 0x93, 0xc9, 0x65, 0xd1, 0x90, 0x45, 0xfe, 0x0e, 0xd4, 0x7a, 0x04, 0x3b, 0x32, 0xd1, - 0x8e, 0x52, 0xb0, 0xd7, 0xd6, 0xf7, 0xf6, 0x38, 0x47, 0xba, 0x2f, 0x15, 0x94, 0x9d, 0xc2, 0x20, - 0xf1, 0x8c, 0x04, 0x5d, 0xc0, 0x7d, 0xc1, 0x03, 0x8a, 0xe9, 0xd3, 0x42, 0xab, 0x7f, 0xe1, 0xc3, - 0x39, 0xd0, 0xed, 0x15, 0x7c, 0xfb, 0x85, 0x01, 0x97, 0x14, 0xd6, 0x1f, 0x00, 0xbe, 0xb2, 0xac, - 0xcb, 0x05, 0x93, 0x0a, 0x7d, 0xb9, 0xa4, 0x8d, 0xbd, 0xe5, 0xa3, 0x66, 0x32, 0x57, 0x66, 0xd6, - 0x46, 0x69, 0xa9, 0xe9, 0xf2, 0x19, 0x6c, 0x33, 0x45, 0xc3, 0x52, 0x94, 0xfb, 0xeb, 0x9b, 0x58, - 0x2e, 0xaf, 0x7a, 0x4d, 0xe7, 0x19, 0x05, 0xce, 0x99, 0xac, 0xdf, 0x01, 0xec, 0xd5, 0xc0, 0x3b, - 0x68, 0xe2, 0xe3, 0xf9, 0x26, 0xde, 0xd8, 0xae, 0x89, 0xd5, 0xd5, 0xff, 0x0d, 0x20, 0xac, 0x06, - 0x06, 0xf5, 0x61, 0x7b, 0x42, 0xc5, 0x20, 0xdf, 0x27, 0x5d, 0xb7, 0x9b, 0xe1, 0x9f, 0x64, 0x06, - 0x9c, 0xdb, 0xd1, 0x5b, 0xb0, 0x4b, 0x62, 0xf6, 0x91, 0xe0, 0x49, 0x2c, 0x8d, 0x3d, 0x0d, 0x3a, - 0x4c, 0xa7, 0xfd, 0xee, 0xd9, 0xd5, 0x79, 0x6e, 0xc4, 0x95, 0x3f, 0x03, 0x0b, 0x2a, 0x79, 0x22, - 0x3c, 0x2a, 0x8d, 0x56, 0x05, 0xc6, 0xa5, 0x11, 0x57, 0x7e, 0xf4, 0x3e, 0x3c, 0x2c, 0x0f, 0x97, - 0x24, 0xa4, 0xd2, 0x68, 0xeb, 0x80, 0x3b, 0xe9, 0xb4, 0x7f, 0x88, 0xeb, 0x0e, 0x3c, 0x8f, 0x43, - 0x1f, 0xc2, 0x5e, 0xc4, 0xa3, 0x12, 0xf2, 0x39, 0xbe, 0x90, 0xc6, 0x0b, 0x3a, 0x54, 0xcf, 0xe8, - 0xe5, 0xbc, 0x0b, 0x2f, 0x62, 0xad, 0xdf, 0x00, 0x6c, 0xfd, 0xe7, 0x76, 0x98, 0xf5, 0x7d, 0x13, - 0x1e, 0xfc, 0xbf, 0x52, 0x6a, 0x2b, 0x25, 0x1b, 0xc3, 0xdd, 0xee, 0x92, 0xed, 0xc7, 0x70, 0xf3, - 0x12, 0xf9, 0x05, 0xc0, 0xce, 0x8e, 0xb6, 0xc7, 0xc3, 0xf9, 0xb2, 0xcd, 0x0d, 0x65, 0xaf, 0xae, - 0xf7, 0x1b, 0x58, 0xde, 0x00, 0xba, 0x0f, 0x3b, 0xe5, 0xc4, 0xeb, 0x6a, 0xbb, 0x55, 0xf6, 0x72, - 0x29, 0xe0, 0x19, 0x02, 0x1d, 0xc3, 0xd6, 0x98, 0x45, 0x43, 0xa3, 0xa9, 0x91, 0x2f, 0x16, 0xc8, - 0xd6, 0x27, 0x2c, 0x1a, 0x62, 0xed, 0xc9, 0x10, 0x11, 0x09, 0xf3, 0x4f, 0x72, 0x0d, 0x91, 0xcd, - 0x3a, 0xd6, 0x1e, 0xeb, 0x57, 0x00, 0xf7, 0x8b, 0xf7, 0x34, 0xe3, 0x03, 0x6b, 0xf9, 0x4e, 0x21, - 0x24, 0x31, 0x7b, 0x42, 0x85, 0x64, 0x3c, 0x2a, 0xf2, 0xce, 0x5e, 0xfa, 0xd9, 0xd5, 0x79, 0xe1, - 0xc1, 0x35, 0xd4, 0xe6, 0x1a, 0x90, 0x03, 0xbb, 0xd9, 0xaf, 0x8c, 0x89, 0x47, 0x8d, 0x96, 0x86, - 0xdd, 0x29, 0x60, 0xdd, 0xcb, 0xd2, 0x81, 0x2b, 0x8c, 0x6b, 0x5f, 0xdf, 0x9a, 0x8d, 0xe7, 0xb7, - 0x66, 0xe3, 0xe6, 0xd6, 0x6c, 0x7c, 0x9b, 0x9a, 0xe0, 0x3a, 0x35, 0xc1, 0xf3, 0xd4, 0x04, 0x37, - 0xa9, 0x09, 0xfe, 0x4c, 0x4d, 0xf0, 0xc3, 0x5f, 0x66, 0xe3, 0x8b, 0x4e, 0x29, 0xfe, 0x3f, 0x01, - 0x00, 0x00, 0xff, 0xff, 0xeb, 0xcc, 0xe2, 0x61, 0x5e, 0x0b, 0x00, 0x00, + 0x14, 0xce, 0x64, 0x13, 0x36, 0x99, 0x25, 0x0a, 0x37, 0x9c, 0x90, 0xb5, 0x42, 0xce, 0x62, 0x81, + 0x74, 0x88, 0xc3, 0x66, 0x17, 0x04, 0x34, 0x14, 0xf1, 0x15, 0x28, 0x10, 0xf6, 0x96, 0x39, 0x71, + 0x05, 0xa2, 0x60, 0xe2, 0xcc, 0x39, 0x43, 0x6c, 0x8f, 0x35, 0x63, 0x47, 0x3a, 0xd1, 0xd0, 0xd0, + 0x22, 0x1a, 0x0a, 0x7a, 0x5a, 0x1a, 0x28, 0xf9, 0x07, 0x96, 0xee, 0xca, 0xad, 0x22, 0xd6, 0xfc, + 0x21, 0x20, 0x8f, 0xed, 0xd8, 0xf9, 0x45, 0x52, 0x45, 0x42, 0xba, 0x2a, 0x99, 0xf7, 0xbe, 0xf7, + 0xbd, 0xf7, 0xbe, 0x99, 0xf7, 0x0c, 0xfb, 0xd3, 0x0f, 0xa5, 0xc9, 0xb8, 0x35, 0x8d, 0x47, 0x54, + 0x04, 0x34, 0xa2, 0xd2, 0x9a, 0xd1, 0x60, 0xcc, 0x85, 0x95, 0x3b, 0x48, 0xc8, 0x2c, 0x31, 0x22, + 0x8e, 0x35, 0x3b, 0x27, 0x5e, 0x38, 0x21, 0xe7, 0x96, 0x4b, 0x03, 0x2a, 0x48, 0x44, 0xc7, 0x66, + 0x28, 0x78, 0xc4, 0x91, 0x96, 0x21, 0x4d, 0x12, 0x32, 0x33, 0x45, 0x9a, 0x05, 0xf2, 0xf4, 0x6d, + 0x97, 0x45, 0x93, 0x78, 0x64, 0x3a, 0xdc, 0xb7, 0x5c, 0xee, 0x72, 0x4b, 0x05, 0x8c, 0xe2, 0x27, + 0xea, 0xa4, 0x0e, 0xea, 0x5f, 0x46, 0x74, 0xfa, 0x5e, 0x99, 0xd2, 0x27, 0xce, 0x84, 0x05, 0x54, + 0x3c, 0xb5, 0xc2, 0xa9, 0x9b, 0x1a, 0xa4, 0xe5, 0xd3, 0x88, 0x58, 0xb3, 0xb5, 0xf4, 0xa7, 0xd6, + 0xb6, 0x28, 0x11, 0x07, 0x11, 0xf3, 0xe9, 0x5a, 0xc0, 0xfb, 0xbb, 0x02, 0xa4, 0x33, 0xa1, 0x3e, + 0x59, 0x8d, 0x33, 0x7e, 0x06, 0xb0, 0xdb, 0x77, 0x5d, 0x41, 0x5d, 0x12, 0x31, 0x1e, 0xe0, 0xd8, + 0xa3, 0xe8, 0x7b, 0x00, 0xef, 0x3a, 0x5e, 0x2c, 0x23, 0x2a, 0x30, 0xf7, 0xe8, 0x23, 0xea, 0x51, + 0x27, 0xe2, 0x42, 0x6a, 0xe0, 0xec, 0xe8, 0xde, 0xc9, 0xc5, 0xbb, 0x66, 0xa9, 0xcd, 0x22, 0x97, + 0x19, 0x4e, 0xdd, 0xd4, 0x20, 0xcd, 0xb4, 0x25, 0x73, 0x76, 0x6e, 0x0e, 0xc9, 0x88, 0x7a, 0x45, + 0xac, 0xfd, 0xea, 0xf5, 0xbc, 0x57, 0x4b, 0xe6, 0xbd, 0xbb, 0x0f, 0x36, 0x10, 0xe3, 0x8d, 0xe9, + 0x8c, 0x5f, 0xea, 0xf0, 0xa4, 0x02, 0x47, 0x5f, 0xc3, 0x56, 0x4a, 0x3e, 0x26, 0x11, 0xd1, 0xc0, + 0x19, 0xb8, 0x77, 0x72, 0xf1, 0xce, 0x7e, 0xa5, 0x3c, 0x1c, 0x7d, 0x43, 0x9d, 0xe8, 0x33, 0x1a, + 0x11, 0x1b, 0xe5, 0x75, 0xc0, 0xd2, 0x86, 0x17, 0xac, 0x68, 0x00, 0x9b, 0x22, 0xf6, 0xa8, 0xd4, + 0xea, 0xaa, 0xd3, 0xd7, 0xcd, 0x6d, 0xaf, 0xc0, 0xbc, 0xe2, 0x1e, 0x73, 0x9e, 0xa6, 0x72, 0xd9, + 0x9d, 0x9c, 0xb2, 0x99, 0x9e, 0x24, 0xce, 0x18, 0xd0, 0x04, 0x76, 0xc9, 0xb2, 0xae, 0xda, 0x91, + 0xaa, 0xf9, 0xcd, 0xed, 0xa4, 0x2b, 0x17, 0x61, 0xbf, 0x9c, 0xcc, 0x7b, 0xab, 0xb7, 0x83, 0x57, + 0x69, 0x8d, 0x9f, 0xea, 0x10, 0x55, 0x64, 0xb2, 0x59, 0x30, 0x66, 0x81, 0x7b, 0x00, 0xb5, 0x1e, + 0xc2, 0x96, 0x8c, 0x95, 0xa3, 0x10, 0xec, 0xb5, 0xed, 0xbd, 0x3d, 0xca, 0x90, 0xf6, 0x4b, 0x39, + 0x65, 0x2b, 0x37, 0x48, 0xbc, 0x20, 0x41, 0x43, 0x78, 0x2c, 0xb8, 0x47, 0x31, 0x7d, 0x92, 0x6b, + 0xf5, 0x1f, 0x7c, 0x38, 0x03, 0xda, 0xdd, 0x9c, 0xef, 0x38, 0x37, 0xe0, 0x82, 0xc2, 0xf8, 0x13, + 0xc0, 0x57, 0xd6, 0x75, 0x19, 0x32, 0x19, 0xa1, 0xaf, 0xd6, 0xb4, 0x31, 0xf7, 0x7c, 0xd4, 0x4c, + 0x66, 0xca, 0x2c, 0xda, 0x28, 0x2c, 0x15, 0x5d, 0x3e, 0x87, 0x4d, 0x16, 0x51, 0xbf, 0x10, 0xe5, + 0xfe, 0xf6, 0x26, 0xd6, 0xcb, 0x2b, 0x5f, 0xd3, 0x20, 0xa5, 0xc0, 0x19, 0x93, 0xf1, 0x07, 0x80, + 0xdd, 0x0a, 0xf8, 0x00, 0x4d, 0x7c, 0xb2, 0xdc, 0xc4, 0x1b, 0xfb, 0x35, 0xb1, 0xb9, 0xfa, 0x7f, + 0x00, 0x84, 0xe5, 0xc0, 0xa0, 0x1e, 0x6c, 0xce, 0xa8, 0x18, 0x65, 0xfb, 0xa4, 0x6d, 0xb7, 0x53, + 0xfc, 0xe3, 0xd4, 0x80, 0x33, 0x3b, 0x7a, 0x0b, 0xb6, 0x49, 0xc8, 0x3e, 0x16, 0x3c, 0x0e, 0xa5, + 0x76, 0xa4, 0x40, 0x9d, 0x64, 0xde, 0x6b, 0xf7, 0xaf, 0x06, 0x99, 0x11, 0x97, 0xfe, 0x14, 0x2c, + 0xa8, 0xe4, 0xb1, 0x70, 0xa8, 0xd4, 0x1a, 0x25, 0x18, 0x17, 0x46, 0x5c, 0xfa, 0xd1, 0x07, 0xb0, + 0x53, 0x1c, 0x2e, 0x89, 0x4f, 0xa5, 0xd6, 0x54, 0x01, 0x77, 0x92, 0x79, 0xaf, 0x83, 0xab, 0x0e, + 0xbc, 0x8c, 0x43, 0x1f, 0xc1, 0x6e, 0xc0, 0x83, 0x02, 0xf2, 0x05, 0x1e, 0x4a, 0xed, 0x05, 0x15, + 0xaa, 0x66, 0xf4, 0x72, 0xd9, 0x85, 0x57, 0xb1, 0xc6, 0xef, 0x00, 0x36, 0xfe, 0x77, 0x3b, 0xcc, + 0xf8, 0xa1, 0x0e, 0x4f, 0x9e, 0xaf, 0x94, 0xca, 0x4a, 0x49, 0xc7, 0xf0, 0xb0, 0xbb, 0x64, 0xff, + 0x31, 0xdc, 0xbd, 0x44, 0x7e, 0x05, 0xb0, 0x75, 0xa0, 0xed, 0xf1, 0x60, 0xb9, 0x6c, 0x7d, 0x47, + 0xd9, 0x9b, 0xeb, 0xfd, 0x16, 0x16, 0x37, 0x80, 0xee, 0xc3, 0x56, 0x31, 0xf1, 0xaa, 0xda, 0x76, + 0x99, 0xbd, 0x58, 0x0a, 0x78, 0x81, 0x40, 0x67, 0xb0, 0x31, 0x65, 0xc1, 0x58, 0xab, 0x2b, 0xe4, + 0x8b, 0x39, 0xb2, 0xf1, 0x29, 0x0b, 0xc6, 0x58, 0x79, 0x52, 0x44, 0x40, 0xfc, 0xec, 0x93, 0x5c, + 0x41, 0xa4, 0xb3, 0x8e, 0x95, 0xc7, 0xf8, 0x0d, 0xc0, 0xe3, 0xfc, 0x3d, 0x2d, 0xf8, 0xc0, 0x56, + 0xbe, 0x0b, 0x08, 0x49, 0xc8, 0x1e, 0x53, 0x21, 0x19, 0x0f, 0xf2, 0xbc, 0x8b, 0x97, 0xde, 0xbf, + 0x1a, 0xe4, 0x1e, 0x5c, 0x41, 0xed, 0xae, 0x01, 0x59, 0xb0, 0x9d, 0xfe, 0xca, 0x90, 0x38, 0x54, + 0x6b, 0x28, 0xd8, 0x9d, 0x1c, 0xd6, 0xbe, 0x2c, 0x1c, 0xb8, 0xc4, 0xd8, 0xe6, 0xf5, 0xad, 0x5e, + 0x7b, 0x76, 0xab, 0xd7, 0x6e, 0x6e, 0xf5, 0xda, 0x77, 0x89, 0x0e, 0xae, 0x13, 0x1d, 0x3c, 0x4b, + 0x74, 0x70, 0x93, 0xe8, 0xe0, 0xaf, 0x44, 0x07, 0x3f, 0xfe, 0xad, 0xd7, 0xbe, 0x6c, 0x15, 0xe2, + 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x73, 0x15, 0x10, 0x29, 0x0b, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/rbac/v1alpha1/generated.proto b/vendor/k8s.io/api/rbac/v1alpha1/generated.proto index d7b2948636..cde3aaac98 100644 --- a/vendor/k8s.io/api/rbac/v1alpha1/generated.proto +++ b/vendor/k8s.io/api/rbac/v1alpha1/generated.proto @@ -24,7 +24,6 @@ package k8s.io.api.rbac.v1alpha1; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1alpha1"; diff --git a/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go index 97f63331ea..1d29acff34 100644 --- a/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/rbac/v1alpha1/zz_generated.deepcopy.go @@ -62,8 +62,12 @@ func (in *ClusterRole) DeepCopyInto(out *ClusterRole) { } if in.AggregationRule != nil { in, out := &in.AggregationRule, &out.AggregationRule - *out = new(AggregationRule) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(AggregationRule) + (*in).DeepCopyInto(*out) + } } return } diff --git a/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go b/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go index e4ddbcde3a..71e5799e3e 100644 --- a/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go +++ b/vendor/k8s.io/api/rbac/v1beta1/generated.pb.go @@ -2693,58 +2693,56 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 833 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x55, 0xbf, 0x8f, 0xe3, 0x44, - 0x14, 0xce, 0x64, 0x13, 0x6d, 0x3c, 0xcb, 0x2a, 0xdc, 0x70, 0x02, 0x6b, 0x05, 0xce, 0x2a, 0x50, - 0x44, 0x3a, 0xce, 0x66, 0xef, 0x10, 0xd0, 0x20, 0x71, 0xa6, 0x80, 0xd5, 0x2d, 0x61, 0x35, 0x27, - 0x28, 0x10, 0x05, 0x63, 0x67, 0xce, 0x19, 0xe2, 0x5f, 0x9a, 0x19, 0x47, 0x3a, 0xd1, 0xd0, 0xd0, - 0x51, 0x20, 0x51, 0xd1, 0x52, 0x53, 0x51, 0xf2, 0x17, 0xa4, 0xbc, 0xf2, 0xaa, 0x88, 0x35, 0x7f, - 0x08, 0x68, 0xfc, 0x23, 0x4e, 0xe2, 0xf8, 0x2e, 0x55, 0x24, 0xa4, 0xab, 0x76, 0xe7, 0xbd, 0xef, - 0x7d, 0xef, 0x7b, 0x9f, 0x67, 0x5e, 0xe0, 0x27, 0xb3, 0x8f, 0x84, 0xc9, 0x22, 0x6b, 0x96, 0x38, - 0x94, 0x87, 0x54, 0x52, 0x61, 0xcd, 0x69, 0x38, 0x89, 0xb8, 0x55, 0x24, 0x48, 0xcc, 0x2c, 0xee, - 0x10, 0xd7, 0x9a, 0x5f, 0x38, 0x54, 0x92, 0x0b, 0xcb, 0xa3, 0x21, 0xe5, 0x44, 0xd2, 0x89, 0x19, - 0xf3, 0x48, 0x46, 0xe8, 0x8d, 0x1c, 0x68, 0x92, 0x98, 0x99, 0x0a, 0x68, 0x16, 0xc0, 0xb3, 0xbb, - 0x1e, 0x93, 0xd3, 0xc4, 0x31, 0xdd, 0x28, 0xb0, 0xbc, 0xc8, 0x8b, 0xac, 0x0c, 0xef, 0x24, 0x8f, - 0xb3, 0x53, 0x76, 0xc8, 0xfe, 0xcb, 0x79, 0xce, 0x46, 0xf5, 0x86, 0xc4, 0x8f, 0xa7, 0xf5, 0x8e, - 0x67, 0xef, 0x57, 0xc8, 0x80, 0xb8, 0x53, 0x16, 0x52, 0xfe, 0xc4, 0x8a, 0x67, 0x9e, 0x0a, 0x08, - 0x2b, 0xa0, 0x92, 0x58, 0xf3, 0x7a, 0x95, 0xd5, 0x54, 0xc5, 0x93, 0x50, 0xb2, 0x80, 0xd6, 0x0a, - 0x3e, 0x78, 0x51, 0x81, 0x70, 0xa7, 0x34, 0x20, 0xb5, 0xba, 0xfb, 0x4d, 0x75, 0x89, 0x64, 0xbe, - 0xc5, 0x42, 0x29, 0x24, 0xdf, 0x2e, 0x1a, 0xfe, 0x06, 0x60, 0xff, 0x81, 0xe7, 0x71, 0xea, 0x11, - 0xc9, 0xa2, 0x10, 0x27, 0x3e, 0x45, 0x3f, 0x01, 0x78, 0xdb, 0xf5, 0x13, 0x21, 0x29, 0xc7, 0x91, - 0x4f, 0x1f, 0x51, 0x9f, 0xba, 0x32, 0xe2, 0x42, 0x07, 0xe7, 0x47, 0xa3, 0x93, 0x7b, 0xf7, 0xcd, - 0xca, 0xf9, 0x55, 0x23, 0x33, 0x9e, 0x79, 0x2a, 0x20, 0x4c, 0xe5, 0x83, 0x39, 0xbf, 0x30, 0xaf, - 0x88, 0x43, 0xfd, 0xb2, 0xd6, 0x7e, 0x73, 0xb1, 0x1c, 0xb4, 0xd2, 0xe5, 0xe0, 0xf6, 0xa7, 0x3b, - 0x88, 0xf1, 0xce, 0x76, 0xc3, 0xdf, 0xdb, 0xf0, 0x64, 0x0d, 0x8e, 0xbe, 0x83, 0x3d, 0x45, 0x3e, - 0x21, 0x92, 0xe8, 0xe0, 0x1c, 0x8c, 0x4e, 0xee, 0xbd, 0xb7, 0x9f, 0x94, 0x2f, 0x9d, 0xef, 0xa9, - 0x2b, 0xbf, 0xa0, 0x92, 0xd8, 0xa8, 0xd0, 0x01, 0xab, 0x18, 0x5e, 0xb1, 0xa2, 0xcf, 0x61, 0x97, - 0x27, 0x3e, 0x15, 0x7a, 0x3b, 0x9b, 0xf4, 0x6d, 0xb3, 0xe1, 0x8e, 0x99, 0xd7, 0x91, 0xcf, 0xdc, - 0x27, 0xca, 0x2d, 0xfb, 0xb4, 0x60, 0xec, 0xaa, 0x93, 0xc0, 0x39, 0x01, 0xf2, 0x60, 0x9f, 0x6c, - 0xda, 0xaa, 0x1f, 0x65, 0x92, 0x47, 0x8d, 0x9c, 0x5b, 0x9f, 0xc1, 0x7e, 0x2d, 0x5d, 0x0e, 0xb6, - 0xbf, 0x0d, 0xde, 0x66, 0x1d, 0xfe, 0xda, 0x86, 0x68, 0xcd, 0x24, 0x9b, 0x85, 0x13, 0x16, 0x7a, - 0x07, 0xf0, 0x6a, 0x0c, 0x7b, 0x22, 0xc9, 0x12, 0xa5, 0x5d, 0xe7, 0x8d, 0xa3, 0x3d, 0xca, 0x81, - 0xf6, 0xab, 0x05, 0x63, 0xaf, 0x08, 0x08, 0xbc, 0xe2, 0x40, 0x0f, 0xe1, 0x31, 0x8f, 0x7c, 0x8a, - 0xe9, 0xe3, 0xc2, 0xa9, 0x66, 0x3a, 0x9c, 0xe3, 0xec, 0x7e, 0x41, 0x77, 0x5c, 0x04, 0x70, 0xc9, - 0x30, 0x5c, 0x00, 0xf8, 0x7a, 0xdd, 0x95, 0x2b, 0x26, 0x24, 0xfa, 0xb6, 0xe6, 0x8c, 0xb9, 0xe7, - 0x85, 0x66, 0x22, 0xf7, 0x65, 0x35, 0x45, 0x19, 0x59, 0x73, 0xe5, 0x1a, 0x76, 0x99, 0xa4, 0x41, - 0x69, 0xc9, 0x9d, 0xc6, 0x19, 0xea, 0xea, 0xaa, 0x9b, 0x74, 0xa9, 0x18, 0x70, 0x4e, 0x34, 0xfc, - 0x0b, 0xc0, 0xfe, 0x1a, 0xf8, 0x00, 0x33, 0x5c, 0x6e, 0xce, 0xf0, 0xce, 0x5e, 0x33, 0xec, 0x16, - 0xff, 0x2f, 0x80, 0xb0, 0x7a, 0x2b, 0x68, 0x00, 0xbb, 0x73, 0xca, 0x9d, 0x7c, 0x93, 0x68, 0xb6, - 0xa6, 0xf0, 0x5f, 0xab, 0x00, 0xce, 0xe3, 0xe8, 0x0e, 0xd4, 0x48, 0xcc, 0x3e, 0xe3, 0x51, 0x12, - 0xe7, 0xed, 0x35, 0xfb, 0x34, 0x5d, 0x0e, 0xb4, 0x07, 0xd7, 0x97, 0x79, 0x10, 0x57, 0x79, 0x05, - 0xe6, 0x54, 0x44, 0x09, 0x77, 0xa9, 0xd0, 0x8f, 0x2a, 0x30, 0x2e, 0x83, 0xb8, 0xca, 0xa3, 0x0f, - 0xe1, 0x69, 0x79, 0x18, 0x93, 0x80, 0x0a, 0xbd, 0x93, 0x15, 0xdc, 0x4a, 0x97, 0x83, 0x53, 0xbc, - 0x9e, 0xc0, 0x9b, 0x38, 0xf4, 0x31, 0xec, 0x87, 0x51, 0x58, 0x42, 0xbe, 0xc2, 0x57, 0x42, 0xef, - 0x66, 0xa5, 0xd9, 0xfb, 0x1c, 0x6f, 0xa6, 0xf0, 0x36, 0x76, 0xf8, 0x27, 0x80, 0x9d, 0xff, 0xdb, - 0xf6, 0x1a, 0xfe, 0xdc, 0x86, 0x27, 0x2f, 0xb7, 0xc9, 0x6a, 0x9b, 0xa8, 0x27, 0x78, 0xd8, 0x35, - 0xb2, 0xf7, 0x13, 0x7c, 0xf1, 0xfe, 0xf8, 0x03, 0xc0, 0xde, 0x81, 0x16, 0x87, 0xbd, 0xa9, 0xfa, - 0xad, 0xe7, 0xab, 0xde, 0x2d, 0xf7, 0x07, 0x58, 0xfa, 0x8f, 0xde, 0x85, 0xbd, 0xf2, 0xb1, 0x67, - 0x62, 0xb5, 0xaa, 0x79, 0xb9, 0x0f, 0xf0, 0x0a, 0x81, 0xce, 0x61, 0x67, 0xc6, 0xc2, 0x89, 0xde, - 0xce, 0x90, 0xaf, 0x14, 0xc8, 0xce, 0x43, 0x16, 0x4e, 0x70, 0x96, 0x51, 0x88, 0x90, 0x04, 0xf9, - 0x0f, 0xf1, 0x1a, 0x42, 0x3d, 0x73, 0x9c, 0x65, 0x94, 0x57, 0xc7, 0xc5, 0x65, 0x5a, 0xf1, 0x81, - 0x46, 0xbe, 0x75, 0x7d, 0xed, 0x7d, 0xf4, 0x3d, 0xbf, 0x3b, 0xb2, 0xa0, 0xa6, 0xfe, 0x8a, 0x98, - 0xb8, 0x54, 0xef, 0x64, 0xb0, 0x5b, 0x05, 0x4c, 0x1b, 0x97, 0x09, 0x5c, 0x61, 0xec, 0xbb, 0x8b, - 0x1b, 0xa3, 0xf5, 0xf4, 0xc6, 0x68, 0x3d, 0xbb, 0x31, 0x5a, 0x3f, 0xa6, 0x06, 0x58, 0xa4, 0x06, - 0x78, 0x9a, 0x1a, 0xe0, 0x59, 0x6a, 0x80, 0xbf, 0x53, 0x03, 0xfc, 0xf2, 0x8f, 0xd1, 0xfa, 0xe6, - 0xb8, 0x70, 0xfd, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x99, 0xaf, 0xff, 0x74, 0x0b, 0x00, - 0x00, + // 808 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x55, 0xbd, 0x6f, 0xfb, 0x44, + 0x18, 0xce, 0xa5, 0x89, 0x12, 0x5f, 0x88, 0xc2, 0xef, 0xa8, 0xc0, 0xaa, 0xc0, 0x89, 0x02, 0x43, + 0xa5, 0x52, 0x9b, 0x16, 0x04, 0x2c, 0x48, 0xd4, 0x0c, 0x50, 0xb5, 0x84, 0xea, 0x2a, 0x18, 0x10, + 0x03, 0x67, 0xe7, 0xea, 0x1e, 0xf1, 0x97, 0xee, 0xec, 0x48, 0x15, 0x0b, 0x0b, 0x1b, 0x03, 0x12, + 0x13, 0x2b, 0x33, 0x13, 0x23, 0x7f, 0x41, 0xc6, 0x8e, 0x9d, 0x22, 0x6a, 0xfe, 0x10, 0xd0, 0xf9, + 0x23, 0xce, 0x67, 0x9b, 0x29, 0x12, 0x12, 0x53, 0x7b, 0xef, 0xfb, 0xbc, 0xcf, 0xfb, 0xbc, 0x8f, + 0xef, 0xde, 0xc0, 0x8f, 0x47, 0x1f, 0x0a, 0x9d, 0x05, 0xc6, 0x28, 0xb6, 0x28, 0xf7, 0x69, 0x44, + 0x85, 0x31, 0xa6, 0xfe, 0x30, 0xe0, 0x46, 0x9e, 0x20, 0x21, 0x33, 0xb8, 0x45, 0x6c, 0x63, 0x7c, + 0x62, 0xd1, 0x88, 0x9c, 0x18, 0x0e, 0xf5, 0x29, 0x27, 0x11, 0x1d, 0xea, 0x21, 0x0f, 0xa2, 0x00, + 0xbd, 0x96, 0x01, 0x75, 0x12, 0x32, 0x5d, 0x02, 0xf5, 0x1c, 0x78, 0x70, 0xec, 0xb0, 0xe8, 0x36, + 0xb6, 0x74, 0x3b, 0xf0, 0x0c, 0x27, 0x70, 0x02, 0x23, 0xc5, 0x5b, 0xf1, 0x4d, 0x7a, 0x4a, 0x0f, + 0xe9, 0x7f, 0x19, 0xcf, 0xc1, 0x7b, 0x65, 0x43, 0x8f, 0xd8, 0xb7, 0xcc, 0xa7, 0xfc, 0xce, 0x08, + 0x47, 0x8e, 0x0c, 0x08, 0xc3, 0xa3, 0x11, 0x31, 0xc6, 0x2b, 0xdd, 0x0f, 0x8c, 0x4d, 0x55, 0x3c, + 0xf6, 0x23, 0xe6, 0xd1, 0x95, 0x82, 0xf7, 0x9f, 0x2b, 0x10, 0xf6, 0x2d, 0xf5, 0xc8, 0x72, 0x5d, + 0xff, 0x57, 0x00, 0x3b, 0x67, 0x8e, 0xc3, 0xa9, 0x43, 0x22, 0x16, 0xf8, 0x38, 0x76, 0x29, 0xfa, + 0x11, 0xc0, 0x7d, 0xdb, 0x8d, 0x45, 0x44, 0x39, 0x0e, 0x5c, 0x7a, 0x4d, 0x5d, 0x6a, 0x47, 0x01, + 0x17, 0x2a, 0xe8, 0xed, 0x1d, 0xb6, 0x4e, 0xdf, 0xd5, 0x4b, 0x6b, 0x66, 0xbd, 0xf4, 0x70, 0xe4, + 0xc8, 0x80, 0xd0, 0xe5, 0x48, 0xfa, 0xf8, 0x44, 0xbf, 0x24, 0x16, 0x75, 0x8b, 0x5a, 0xf3, 0xf5, + 0xc9, 0xb4, 0x5b, 0x49, 0xa6, 0xdd, 0xfd, 0x4f, 0xd6, 0x10, 0xe3, 0xb5, 0xed, 0xfa, 0xbf, 0x55, + 0x61, 0x6b, 0x0e, 0x8e, 0xbe, 0x85, 0x4d, 0x49, 0x3e, 0x24, 0x11, 0x51, 0x41, 0x0f, 0x1c, 0xb6, + 0x4e, 0xdf, 0xd9, 0x4e, 0xca, 0x17, 0xd6, 0x77, 0xd4, 0x8e, 0x3e, 0xa7, 0x11, 0x31, 0x51, 0xae, + 0x03, 0x96, 0x31, 0x3c, 0x63, 0x45, 0x9f, 0xc1, 0x3a, 0x8f, 0x5d, 0x2a, 0xd4, 0x6a, 0x3a, 0xe9, + 0x9b, 0xfa, 0x86, 0x4b, 0xa0, 0x5f, 0x05, 0x2e, 0xb3, 0xef, 0xa4, 0x5b, 0x66, 0x3b, 0x67, 0xac, + 0xcb, 0x93, 0xc0, 0x19, 0x01, 0x72, 0x60, 0x87, 0x2c, 0xda, 0xaa, 0xee, 0xa5, 0x92, 0x0f, 0x37, + 0x72, 0x2e, 0x7d, 0x06, 0xf3, 0x95, 0x64, 0xda, 0x5d, 0xfe, 0x36, 0x78, 0x99, 0xb5, 0xff, 0x4b, + 0x15, 0xa2, 0x39, 0x93, 0x4c, 0xe6, 0x0f, 0x99, 0xef, 0xec, 0xc0, 0xab, 0x01, 0x6c, 0x8a, 0x38, + 0x4d, 0x14, 0x76, 0xf5, 0x36, 0x8e, 0x76, 0x9d, 0x01, 0xcd, 0x97, 0x73, 0xc6, 0x66, 0x1e, 0x10, + 0x78, 0xc6, 0x81, 0x2e, 0x60, 0x83, 0x07, 0x2e, 0xc5, 0xf4, 0x26, 0x77, 0x6a, 0x33, 0x1d, 0xce, + 0x70, 0x66, 0x27, 0xa7, 0x6b, 0xe4, 0x01, 0x5c, 0x30, 0xf4, 0x27, 0x00, 0xbe, 0xba, 0xea, 0xca, + 0x25, 0x13, 0x11, 0xfa, 0x66, 0xc5, 0x19, 0x7d, 0xcb, 0x0b, 0xcd, 0x44, 0xe6, 0xcb, 0x6c, 0x8a, + 0x22, 0x32, 0xe7, 0xca, 0x15, 0xac, 0xb3, 0x88, 0x7a, 0x85, 0x25, 0x47, 0x1b, 0x67, 0x58, 0x55, + 0x57, 0xde, 0xa4, 0x73, 0xc9, 0x80, 0x33, 0xa2, 0xfe, 0x9f, 0x00, 0x76, 0xe6, 0xc0, 0x3b, 0x98, + 0xe1, 0x7c, 0x71, 0x86, 0xb7, 0xb6, 0x9a, 0x61, 0xbd, 0xf8, 0x7f, 0x00, 0x84, 0xe5, 0x5b, 0x41, + 0x5d, 0x58, 0x1f, 0x53, 0x6e, 0x65, 0x9b, 0x44, 0x31, 0x15, 0x89, 0xff, 0x4a, 0x06, 0x70, 0x16, + 0x47, 0x47, 0x50, 0x21, 0x21, 0xfb, 0x94, 0x07, 0x71, 0x98, 0xb5, 0x57, 0xcc, 0x76, 0x32, 0xed, + 0x2a, 0x67, 0x57, 0xe7, 0x59, 0x10, 0x97, 0x79, 0x09, 0xe6, 0x54, 0x04, 0x31, 0xb7, 0xa9, 0x50, + 0xf7, 0x4a, 0x30, 0x2e, 0x82, 0xb8, 0xcc, 0xa3, 0x0f, 0x60, 0xbb, 0x38, 0x0c, 0x88, 0x47, 0x85, + 0x5a, 0x4b, 0x0b, 0x5e, 0x24, 0xd3, 0x6e, 0x1b, 0xcf, 0x27, 0xf0, 0x22, 0x0e, 0x7d, 0x04, 0x3b, + 0x7e, 0xe0, 0x17, 0x90, 0x2f, 0xf1, 0xa5, 0x50, 0xeb, 0x69, 0x69, 0xfa, 0x3e, 0x07, 0x8b, 0x29, + 0xbc, 0x8c, 0xed, 0xff, 0x01, 0x60, 0xed, 0xbf, 0xb6, 0xbd, 0xfa, 0x3f, 0x55, 0x61, 0xeb, 0xff, + 0x6d, 0x32, 0xdb, 0x26, 0xf2, 0x09, 0xee, 0x76, 0x8d, 0x6c, 0xfd, 0x04, 0x9f, 0xdf, 0x1f, 0xbf, + 0x03, 0xd8, 0xdc, 0xd1, 0xe2, 0x30, 0x17, 0x55, 0xbf, 0xf1, 0xb4, 0xea, 0xf5, 0x72, 0xbf, 0x87, + 0x85, 0xff, 0xe8, 0x6d, 0xd8, 0x2c, 0x1e, 0x7b, 0x2a, 0x56, 0x29, 0x9b, 0x17, 0xfb, 0x00, 0xcf, + 0x10, 0xa8, 0x07, 0x6b, 0x23, 0xe6, 0x0f, 0xd5, 0x6a, 0x8a, 0x7c, 0x29, 0x47, 0xd6, 0x2e, 0x98, + 0x3f, 0xc4, 0x69, 0x46, 0x22, 0x7c, 0xe2, 0x65, 0x3f, 0xc4, 0x73, 0x08, 0xf9, 0xcc, 0x71, 0x9a, + 0x91, 0x5e, 0x35, 0xf2, 0xcb, 0x34, 0xe3, 0x03, 0x1b, 0xf9, 0xe6, 0xf5, 0x55, 0xb7, 0xd1, 0xf7, + 0x74, 0x77, 0x64, 0x40, 0x45, 0xfe, 0x15, 0x21, 0xb1, 0xa9, 0x5a, 0x4b, 0x61, 0x2f, 0x72, 0x98, + 0x32, 0x28, 0x12, 0xb8, 0xc4, 0x98, 0xc7, 0x93, 0x47, 0xad, 0x72, 0xff, 0xa8, 0x55, 0x1e, 0x1e, + 0xb5, 0xca, 0x0f, 0x89, 0x06, 0x26, 0x89, 0x06, 0xee, 0x13, 0x0d, 0x3c, 0x24, 0x1a, 0xf8, 0x2b, + 0xd1, 0xc0, 0xcf, 0x7f, 0x6b, 0x95, 0xaf, 0x1b, 0xb9, 0xeb, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, + 0x37, 0x8f, 0x77, 0xcd, 0x15, 0x0b, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/rbac/v1beta1/generated.proto b/vendor/k8s.io/api/rbac/v1beta1/generated.proto index 494aff8b39..27bd30ce9f 100644 --- a/vendor/k8s.io/api/rbac/v1beta1/generated.proto +++ b/vendor/k8s.io/api/rbac/v1beta1/generated.proto @@ -21,11 +21,9 @@ syntax = 'proto2'; package k8s.io.api.rbac.v1beta1; -import "k8s.io/api/rbac/v1alpha1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1beta1"; diff --git a/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go index c085c90b12..86fadd1708 100644 --- a/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/rbac/v1beta1/zz_generated.deepcopy.go @@ -62,8 +62,12 @@ func (in *ClusterRole) DeepCopyInto(out *ClusterRole) { } if in.AggregationRule != nil { in, out := &in.AggregationRule, &out.AggregationRule - *out = new(AggregationRule) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(AggregationRule) + (*in).DeepCopyInto(*out) + } } return } diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go b/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go index 1f79d7f882..97c07c9841 100644 --- a/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go +++ b/vendor/k8s.io/api/scheduling/v1alpha1/generated.pb.go @@ -608,34 +608,33 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 460 bytes of a gzipped FileDescriptorProto + // 447 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x8b, 0xd3, 0x40, 0x18, 0xc6, 0x33, 0x5d, 0x0b, 0x75, 0x4a, 0x41, 0x23, 0x42, 0xe8, 0x61, 0x36, 0xac, 0x97, 0x5c, - 0x76, 0xc6, 0xae, 0x7f, 0x10, 0xbc, 0xc5, 0x85, 0x45, 0x50, 0x94, 0x1c, 0x3c, 0x88, 0x07, 0x27, - 0xc9, 0x6c, 0x3a, 0x36, 0xc9, 0x84, 0x99, 0x37, 0x81, 0xbd, 0x79, 0xf6, 0xe4, 0x97, 0x12, 0x7a, - 0xdc, 0xe3, 0x9e, 0x16, 0x1b, 0xbf, 0x88, 0x24, 0x4d, 0x37, 0xad, 0x65, 0xd5, 0x5b, 0xe6, 0x79, - 0x9f, 0xdf, 0x33, 0xf3, 0x3e, 0x04, 0x9f, 0x2d, 0x5e, 0x18, 0x2a, 0x15, 0x5b, 0x94, 0xa1, 0xd0, - 0xb9, 0x00, 0x61, 0x58, 0x25, 0xf2, 0x58, 0x69, 0xd6, 0x0d, 0x78, 0x21, 0x99, 0x89, 0xe6, 0x22, - 0x2e, 0x53, 0x99, 0x27, 0xac, 0x9a, 0xf1, 0xb4, 0x98, 0xf3, 0x19, 0x4b, 0x44, 0x2e, 0x34, 0x07, - 0x11, 0xd3, 0x42, 0x2b, 0x50, 0x36, 0x59, 0xfb, 0x29, 0x2f, 0x24, 0xed, 0xfd, 0x74, 0xe3, 0x9f, - 0x1e, 0x27, 0x12, 0xe6, 0x65, 0x48, 0x23, 0x95, 0xb1, 0x44, 0x25, 0x8a, 0xb5, 0x58, 0x58, 0x9e, - 0xb7, 0xa7, 0xf6, 0xd0, 0x7e, 0xad, 0xe3, 0xa6, 0x4f, 0xfb, 0xeb, 0x33, 0x1e, 0xcd, 0x65, 0x2e, - 0xf4, 0x05, 0x2b, 0x16, 0x49, 0x23, 0x18, 0x96, 0x09, 0xe0, 0xac, 0xda, 0x7b, 0xc4, 0x94, 0xdd, - 0x46, 0xe9, 0x32, 0x07, 0x99, 0x89, 0x3d, 0xe0, 0xf9, 0xbf, 0x80, 0x66, 0x95, 0x8c, 0xef, 0x71, - 0x4f, 0x6e, 0xe3, 0x4a, 0x90, 0x29, 0x93, 0x39, 0x18, 0xd0, 0x7f, 0x42, 0x47, 0xdf, 0x06, 0x78, - 0xf2, 0x5e, 0x4b, 0xa5, 0x25, 0x5c, 0xbc, 0x4a, 0xb9, 0x31, 0xf6, 0x67, 0x3c, 0x6a, 0x56, 0x89, - 0x39, 0x70, 0x07, 0xb9, 0xc8, 0x1b, 0x9f, 0x3c, 0xa6, 0x7d, 0x8f, 0x37, 0xc9, 0xb4, 0x58, 0x24, - 0x8d, 0x60, 0x68, 0xe3, 0xa6, 0xd5, 0x8c, 0xbe, 0x0b, 0xbf, 0x88, 0x08, 0xde, 0x0a, 0xe0, 0xbe, - 0xbd, 0xbc, 0x3e, 0xb4, 0xea, 0xeb, 0x43, 0xdc, 0x6b, 0xc1, 0x4d, 0xaa, 0xfd, 0x08, 0x0f, 0x2b, - 0x9e, 0x96, 0xc2, 0x19, 0xb8, 0xc8, 0x1b, 0xfa, 0x93, 0xce, 0x3c, 0xfc, 0xd0, 0x88, 0xc1, 0x7a, - 0x66, 0xbf, 0xc4, 0x93, 0x24, 0x55, 0x21, 0x4f, 0x4f, 0xc5, 0x39, 0x2f, 0x53, 0x70, 0x0e, 0x5c, - 0xe4, 0x8d, 0xfc, 0x87, 0x9d, 0x79, 0x72, 0xb6, 0x3d, 0x0c, 0x76, 0xbd, 0xf6, 0x33, 0x3c, 0x8e, - 0x85, 0x89, 0xb4, 0x2c, 0x40, 0xaa, 0xdc, 0xb9, 0xe3, 0x22, 0xef, 0xae, 0xff, 0xa0, 0x43, 0xc7, - 0xa7, 0xfd, 0x28, 0xd8, 0xf6, 0x1d, 0xfd, 0x40, 0xf8, 0xfe, 0x4e, 0x19, 0x6f, 0xa4, 0x01, 0xfb, - 0xd3, 0x5e, 0x21, 0xf4, 0xff, 0x0a, 0x69, 0xe8, 0xb6, 0x8e, 0x7b, 0xdd, 0xcd, 0xa3, 0x8d, 0xb2, - 0x55, 0x46, 0x80, 0x87, 0x12, 0x44, 0x66, 0x9c, 0x81, 0x7b, 0xe0, 0x8d, 0x4f, 0x8e, 0xe9, 0xdf, - 0xff, 0x59, 0xba, 0xf3, 0xbe, 0xbe, 0xbb, 0xd7, 0x4d, 0x46, 0xb0, 0x8e, 0xf2, 0xe9, 0x72, 0x45, - 0xac, 0xcb, 0x15, 0xb1, 0xae, 0x56, 0xc4, 0xfa, 0x5a, 0x13, 0xb4, 0xac, 0x09, 0xba, 0xac, 0x09, - 0xba, 0xaa, 0x09, 0xfa, 0x59, 0x13, 0xf4, 0xfd, 0x17, 0xb1, 0x3e, 0x8e, 0x36, 0x99, 0xbf, 0x03, - 0x00, 0x00, 0xff, 0xff, 0x44, 0x05, 0xba, 0x7b, 0x71, 0x03, 0x00, 0x00, + 0x76, 0xc6, 0x2e, 0x2a, 0x82, 0xb7, 0xb8, 0xb0, 0x08, 0x8a, 0x92, 0x83, 0x07, 0xf1, 0xe0, 0x24, + 0x79, 0x37, 0x1d, 0x9b, 0x64, 0xc2, 0xcc, 0x24, 0xb0, 0x37, 0xcf, 0x9e, 0xfc, 0x52, 0x42, 0x8f, + 0x7b, 0xdc, 0xd3, 0x62, 0xe3, 0x17, 0x91, 0xa4, 0x69, 0xd3, 0x5a, 0xfc, 0x73, 0xcb, 0x3c, 0xef, + 0xef, 0x79, 0xe6, 0xcd, 0xc3, 0xe0, 0x8b, 0xc5, 0x73, 0x4d, 0x85, 0x64, 0x8b, 0x32, 0x04, 0x95, + 0x83, 0x01, 0xcd, 0x2a, 0xc8, 0x63, 0xa9, 0x58, 0x37, 0xe0, 0x85, 0x60, 0x3a, 0x9a, 0x43, 0x5c, + 0xa6, 0x22, 0x4f, 0x58, 0x35, 0xe3, 0x69, 0x31, 0xe7, 0x33, 0x96, 0x40, 0x0e, 0x8a, 0x1b, 0x88, + 0x69, 0xa1, 0xa4, 0x91, 0x36, 0x59, 0xf3, 0x94, 0x17, 0x82, 0xf6, 0x3c, 0xdd, 0xf0, 0xd3, 0xd3, + 0x44, 0x98, 0x79, 0x19, 0xd2, 0x48, 0x66, 0x2c, 0x91, 0x89, 0x64, 0xad, 0x2d, 0x2c, 0x2f, 0xdb, + 0x53, 0x7b, 0x68, 0xbf, 0xd6, 0x71, 0xd3, 0x27, 0xfd, 0xf5, 0x19, 0x8f, 0xe6, 0x22, 0x07, 0x75, + 0xc5, 0x8a, 0x45, 0xd2, 0x08, 0x9a, 0x65, 0x60, 0x38, 0xab, 0x0e, 0x96, 0x98, 0xb2, 0x3f, 0xb9, + 0x54, 0x99, 0x1b, 0x91, 0xc1, 0x81, 0xe1, 0xd9, 0xbf, 0x0c, 0xcd, 0xaf, 0x64, 0xfc, 0x77, 0xdf, + 0xc9, 0xd7, 0x01, 0x9e, 0xbc, 0x53, 0x42, 0x2a, 0x61, 0xae, 0x5e, 0xa6, 0x5c, 0x6b, 0xfb, 0x13, + 0x1e, 0x35, 0x5b, 0xc5, 0xdc, 0x70, 0x07, 0xb9, 0xc8, 0x1b, 0x9f, 0x3d, 0xa6, 0x7d, 0x25, 0xdb, + 0x70, 0x5a, 0x2c, 0x92, 0x46, 0xd0, 0xb4, 0xa1, 0x69, 0x35, 0xa3, 0x6f, 0xc3, 0xcf, 0x10, 0x99, + 0x37, 0x60, 0xb8, 0x6f, 0x2f, 0x6f, 0x8f, 0xad, 0xfa, 0xf6, 0x18, 0xf7, 0x5a, 0xb0, 0x4d, 0xb5, + 0x1f, 0xe1, 0x61, 0xc5, 0xd3, 0x12, 0x9c, 0x81, 0x8b, 0xbc, 0xa1, 0x3f, 0xe9, 0xe0, 0xe1, 0xfb, + 0x46, 0x0c, 0xd6, 0x33, 0xfb, 0x05, 0x9e, 0x24, 0xa9, 0x0c, 0x79, 0x7a, 0x0e, 0x97, 0xbc, 0x4c, + 0x8d, 0x73, 0xe4, 0x22, 0x6f, 0xe4, 0x3f, 0xec, 0xe0, 0xc9, 0xc5, 0xee, 0x30, 0xd8, 0x67, 0xed, + 0xa7, 0x78, 0x1c, 0x83, 0x8e, 0x94, 0x28, 0x8c, 0x90, 0xb9, 0x73, 0xc7, 0x45, 0xde, 0x5d, 0xff, + 0x41, 0x67, 0x1d, 0x9f, 0xf7, 0xa3, 0x60, 0x97, 0x3b, 0xf9, 0x8e, 0xf0, 0xfd, 0xbd, 0x32, 0x5e, + 0x0b, 0x6d, 0xec, 0x8f, 0x07, 0x85, 0xd0, 0xff, 0x2b, 0xa4, 0x71, 0xb7, 0x75, 0xdc, 0xeb, 0x6e, + 0x1e, 0x6d, 0x94, 0x9d, 0x32, 0x02, 0x3c, 0x14, 0x06, 0x32, 0xed, 0x0c, 0xdc, 0x23, 0x6f, 0x7c, + 0x76, 0x4a, 0xff, 0xfe, 0xfc, 0xe8, 0xde, 0x7e, 0x7d, 0x77, 0xaf, 0x9a, 0x8c, 0x60, 0x1d, 0xe5, + 0xd3, 0xe5, 0x8a, 0x58, 0xd7, 0x2b, 0x62, 0xdd, 0xac, 0x88, 0xf5, 0xa5, 0x26, 0x68, 0x59, 0x13, + 0x74, 0x5d, 0x13, 0x74, 0x53, 0x13, 0xf4, 0xa3, 0x26, 0xe8, 0xdb, 0x4f, 0x62, 0x7d, 0x18, 0x6d, + 0x32, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0xab, 0x20, 0x12, 0x63, 0x3c, 0x03, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto b/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto index 7dc5cc841b..5fb5472116 100644 --- a/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto +++ b/vendor/k8s.io/api/scheduling/v1alpha1/generated.proto @@ -24,7 +24,6 @@ package k8s.io.api.scheduling.v1alpha1; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1alpha1"; diff --git a/vendor/k8s.io/api/scheduling/v1beta1/generated.pb.go b/vendor/k8s.io/api/scheduling/v1beta1/generated.pb.go index c4fe85fe98..ea8f8d5e6e 100644 --- a/vendor/k8s.io/api/scheduling/v1beta1/generated.pb.go +++ b/vendor/k8s.io/api/scheduling/v1beta1/generated.pb.go @@ -608,34 +608,33 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 462 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xbf, 0x8e, 0xd3, 0x4c, - 0x14, 0xc5, 0x3d, 0xd9, 0x2f, 0xfa, 0x82, 0xa3, 0x48, 0x60, 0x84, 0x64, 0x45, 0xc2, 0x6b, 0x2d, - 0x8d, 0x0b, 0x76, 0x86, 0x2c, 0x7f, 0x84, 0x44, 0x67, 0x56, 0x20, 0x24, 0x10, 0xe0, 0x82, 0x02, - 0x51, 0x30, 0xb6, 0xef, 0x3a, 0x43, 0x6c, 0x8f, 0x35, 0x73, 0x6d, 0x69, 0x3b, 0x6a, 0x2a, 0x1e, - 0x8a, 0x22, 0xe5, 0x96, 0x5b, 0xad, 0x88, 0x79, 0x11, 0x64, 0xc7, 0xac, 0x13, 0xa2, 0x05, 0x3a, - 0xcf, 0xb9, 0xe7, 0x77, 0x66, 0xee, 0x91, 0xcd, 0x67, 0x8b, 0xc7, 0x9a, 0x0a, 0xc9, 0x16, 0x65, - 0x08, 0x2a, 0x07, 0x04, 0xcd, 0x2a, 0xc8, 0x63, 0xa9, 0x58, 0x37, 0xe0, 0x85, 0x60, 0x3a, 0x9a, - 0x43, 0x5c, 0xa6, 0x22, 0x4f, 0x58, 0x35, 0x0b, 0x01, 0xf9, 0x8c, 0x25, 0x90, 0x83, 0xe2, 0x08, - 0x31, 0x2d, 0x94, 0x44, 0x69, 0xdd, 0x5e, 0xdb, 0x29, 0x2f, 0x04, 0xed, 0xed, 0xb4, 0xb3, 0x4f, - 0x0f, 0x13, 0x81, 0xf3, 0x32, 0xa4, 0x91, 0xcc, 0x58, 0x22, 0x13, 0xc9, 0x5a, 0x2a, 0x2c, 0x4f, - 0xda, 0x53, 0x7b, 0x68, 0xbf, 0xd6, 0x69, 0xd3, 0x07, 0xfd, 0xe5, 0x19, 0x8f, 0xe6, 0x22, 0x07, - 0x75, 0xca, 0x8a, 0x45, 0xd2, 0x08, 0x9a, 0x65, 0x80, 0x9c, 0x55, 0x3b, 0x6f, 0x98, 0xb2, 0xab, - 0x28, 0x55, 0xe6, 0x28, 0x32, 0xd8, 0x01, 0x1e, 0xfd, 0x0d, 0x68, 0x36, 0xc9, 0xf8, 0x0e, 0x77, - 0xff, 0x2a, 0xae, 0x44, 0x91, 0x32, 0x91, 0xa3, 0x46, 0xf5, 0x3b, 0x74, 0xf0, 0x65, 0x60, 0x4e, - 0xde, 0x28, 0x21, 0x95, 0xc0, 0xd3, 0xa7, 0x29, 0xd7, 0xda, 0xfa, 0x68, 0x8e, 0x9a, 0x55, 0x62, - 0x8e, 0xdc, 0x26, 0x2e, 0xf1, 0xc6, 0x47, 0xf7, 0x68, 0x5f, 0xe3, 0x65, 0x32, 0x2d, 0x16, 0x49, - 0x23, 0x68, 0xda, 0xb8, 0x69, 0x35, 0xa3, 0xaf, 0xc3, 0x4f, 0x10, 0xe1, 0x2b, 0x40, 0xee, 0x5b, - 0xcb, 0x8b, 0x7d, 0xa3, 0xbe, 0xd8, 0x37, 0x7b, 0x2d, 0xb8, 0x4c, 0xb5, 0xee, 0x98, 0xc3, 0x8a, - 0xa7, 0x25, 0xd8, 0x03, 0x97, 0x78, 0x43, 0x7f, 0xd2, 0x99, 0x87, 0xef, 0x1a, 0x31, 0x58, 0xcf, - 0xac, 0x27, 0xe6, 0x24, 0x49, 0x65, 0xc8, 0xd3, 0x63, 0x38, 0xe1, 0x65, 0x8a, 0xf6, 0x9e, 0x4b, - 0xbc, 0x91, 0x7f, 0xab, 0x33, 0x4f, 0x9e, 0x6f, 0x0e, 0x83, 0x6d, 0xaf, 0xf5, 0xd0, 0x1c, 0xc7, - 0xa0, 0x23, 0x25, 0x0a, 0x14, 0x32, 0xb7, 0xff, 0x73, 0x89, 0x77, 0xcd, 0xbf, 0xd9, 0xa1, 0xe3, - 0xe3, 0x7e, 0x14, 0x6c, 0xfa, 0x0e, 0xbe, 0x11, 0xf3, 0xc6, 0x56, 0x19, 0x2f, 0x85, 0x46, 0xeb, - 0xc3, 0x4e, 0x21, 0xf4, 0xdf, 0x0a, 0x69, 0xe8, 0xb6, 0x8e, 0xeb, 0xdd, 0xcd, 0xa3, 0x5f, 0xca, - 0x46, 0x19, 0x6f, 0xcd, 0xa1, 0x40, 0xc8, 0xb4, 0x3d, 0x70, 0xf7, 0xbc, 0xf1, 0xd1, 0x5d, 0xfa, - 0xc7, 0x5f, 0x96, 0x6e, 0x3d, 0xaf, 0xaf, 0xee, 0x45, 0x13, 0x11, 0xac, 0x93, 0xfc, 0xc3, 0xe5, - 0xca, 0x31, 0xce, 0x56, 0x8e, 0x71, 0xbe, 0x72, 0x8c, 0xcf, 0xb5, 0x43, 0x96, 0xb5, 0x43, 0xce, - 0x6a, 0x87, 0x9c, 0xd7, 0x0e, 0xf9, 0x5e, 0x3b, 0xe4, 0xeb, 0x0f, 0xc7, 0x78, 0xff, 0x7f, 0x17, - 0xf9, 0x33, 0x00, 0x00, 0xff, 0xff, 0x1b, 0xb3, 0xc6, 0x7a, 0x6d, 0x03, 0x00, 0x00, + // 448 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x8b, 0xd3, 0x40, + 0x18, 0xc5, 0x33, 0x5d, 0x8b, 0x75, 0x4a, 0x41, 0x23, 0x42, 0x28, 0x38, 0x1b, 0xd6, 0x4b, 0x0e, + 0xee, 0x8c, 0x5d, 0x54, 0x04, 0x6f, 0x71, 0x51, 0x04, 0x45, 0xcd, 0xc1, 0x83, 0x78, 0x70, 0x92, + 0x7c, 0x9b, 0x8e, 0x4d, 0x32, 0x61, 0x66, 0x12, 0xd8, 0x9b, 0x67, 0x4f, 0xfe, 0x51, 0x1e, 0x7a, + 0xdc, 0xe3, 0x9e, 0x16, 0x1b, 0xff, 0x11, 0x49, 0x1a, 0x37, 0xad, 0x45, 0xdd, 0x5b, 0xe6, 0x7d, + 0xbf, 0xf7, 0xe6, 0xcb, 0x63, 0xf0, 0xf3, 0xc5, 0x13, 0x4d, 0x85, 0x64, 0x8b, 0x32, 0x04, 0x95, + 0x83, 0x01, 0xcd, 0x2a, 0xc8, 0x63, 0xa9, 0x58, 0x37, 0xe0, 0x85, 0x60, 0x3a, 0x9a, 0x43, 0x5c, + 0xa6, 0x22, 0x4f, 0x58, 0x35, 0x0b, 0xc1, 0xf0, 0x19, 0x4b, 0x20, 0x07, 0xc5, 0x0d, 0xc4, 0xb4, + 0x50, 0xd2, 0x48, 0xfb, 0xee, 0x1a, 0xa7, 0xbc, 0x10, 0xb4, 0xc7, 0x69, 0x87, 0x4f, 0x0f, 0x13, + 0x61, 0xe6, 0x65, 0x48, 0x23, 0x99, 0xb1, 0x44, 0x26, 0x92, 0xb5, 0xae, 0xb0, 0x3c, 0x69, 0x4f, + 0xed, 0xa1, 0xfd, 0x5a, 0xa7, 0x4d, 0x1f, 0xf6, 0x97, 0x67, 0x3c, 0x9a, 0x8b, 0x1c, 0xd4, 0x29, + 0x2b, 0x16, 0x49, 0x23, 0x68, 0x96, 0x81, 0xe1, 0xac, 0xda, 0xd9, 0x61, 0xca, 0xfe, 0xe6, 0x52, + 0x65, 0x6e, 0x44, 0x06, 0x3b, 0x86, 0xc7, 0xff, 0x33, 0x34, 0x7f, 0x92, 0xf1, 0x3f, 0x7d, 0x07, + 0x5f, 0x07, 0x78, 0xf2, 0x56, 0x09, 0xa9, 0x84, 0x39, 0x7d, 0x96, 0x72, 0xad, 0xed, 0x4f, 0x78, + 0xd4, 0x6c, 0x15, 0x73, 0xc3, 0x1d, 0xe4, 0x22, 0x6f, 0x7c, 0xf4, 0x80, 0xf6, 0x8d, 0x5c, 0x86, + 0xd3, 0x62, 0x91, 0x34, 0x82, 0xa6, 0x0d, 0x4d, 0xab, 0x19, 0x7d, 0x13, 0x7e, 0x86, 0xc8, 0xbc, + 0x06, 0xc3, 0x7d, 0x7b, 0x79, 0xb1, 0x6f, 0xd5, 0x17, 0xfb, 0xb8, 0xd7, 0x82, 0xcb, 0x54, 0xfb, + 0x1e, 0x1e, 0x56, 0x3c, 0x2d, 0xc1, 0x19, 0xb8, 0xc8, 0x1b, 0xfa, 0x93, 0x0e, 0x1e, 0xbe, 0x6f, + 0xc4, 0x60, 0x3d, 0xb3, 0x9f, 0xe2, 0x49, 0x92, 0xca, 0x90, 0xa7, 0xc7, 0x70, 0xc2, 0xcb, 0xd4, + 0x38, 0x7b, 0x2e, 0xf2, 0x46, 0xfe, 0x9d, 0x0e, 0x9e, 0xbc, 0xd8, 0x1c, 0x06, 0xdb, 0xac, 0xfd, + 0x08, 0x8f, 0x63, 0xd0, 0x91, 0x12, 0x85, 0x11, 0x32, 0x77, 0xae, 0xb9, 0xc8, 0xbb, 0xe1, 0xdf, + 0xee, 0xac, 0xe3, 0xe3, 0x7e, 0x14, 0x6c, 0x72, 0x07, 0xdf, 0x11, 0xbe, 0xb5, 0x55, 0xc6, 0x2b, + 0xa1, 0x8d, 0xfd, 0x71, 0xa7, 0x10, 0x7a, 0xb5, 0x42, 0x1a, 0x77, 0x5b, 0xc7, 0xcd, 0xee, 0xe6, + 0xd1, 0x6f, 0x65, 0xa3, 0x8c, 0x77, 0x78, 0x28, 0x0c, 0x64, 0xda, 0x19, 0xb8, 0x7b, 0xde, 0xf8, + 0xe8, 0x3e, 0xfd, 0xe7, 0xeb, 0xa3, 0x5b, 0xeb, 0xf5, 0xd5, 0xbd, 0x6c, 0x22, 0x82, 0x75, 0x92, + 0x7f, 0xb8, 0x5c, 0x11, 0xeb, 0x6c, 0x45, 0xac, 0xf3, 0x15, 0xb1, 0xbe, 0xd4, 0x04, 0x2d, 0x6b, + 0x82, 0xce, 0x6a, 0x82, 0xce, 0x6b, 0x82, 0x7e, 0xd4, 0x04, 0x7d, 0xfb, 0x49, 0xac, 0x0f, 0xd7, + 0xbb, 0xc8, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x41, 0x74, 0x8a, 0x60, 0x38, 0x03, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/scheduling/v1beta1/generated.proto b/vendor/k8s.io/api/scheduling/v1beta1/generated.proto index fe7f21de8f..0a95755032 100644 --- a/vendor/k8s.io/api/scheduling/v1beta1/generated.proto +++ b/vendor/k8s.io/api/scheduling/v1beta1/generated.proto @@ -24,7 +24,6 @@ package k8s.io.api.scheduling.v1beta1; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1beta1"; diff --git a/vendor/k8s.io/api/settings/v1alpha1/generated.pb.go b/vendor/k8s.io/api/settings/v1alpha1/generated.pb.go index 86a7f89a57..15285bae50 100644 --- a/vendor/k8s.io/api/settings/v1alpha1/generated.pb.go +++ b/vendor/k8s.io/api/settings/v1alpha1/generated.pb.go @@ -891,40 +891,39 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 556 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x8e, 0xd2, 0x4e, - 0x1c, 0xc7, 0xe9, 0xb2, 0x04, 0xfe, 0x03, 0x9b, 0xbf, 0x69, 0x3c, 0x34, 0xc4, 0x94, 0x95, 0x8b, - 0x9b, 0x18, 0x67, 0x64, 0xd7, 0x18, 0xbd, 0x36, 0xc1, 0xc4, 0x04, 0xe2, 0xa6, 0x24, 0x9b, 0x68, - 0x3c, 0x38, 0x94, 0x9f, 0xa5, 0x42, 0x67, 0x9a, 0x99, 0x69, 0x13, 0x6f, 0x3e, 0x82, 0x2f, 0xe0, - 0x93, 0xe8, 0x03, 0x70, 0xdc, 0xe3, 0x9e, 0x36, 0x52, 0x5f, 0xc4, 0x4c, 0x99, 0x02, 0x8a, 0x28, - 0xb7, 0xce, 0x8f, 0xef, 0xe7, 0x33, 0xbf, 0x2f, 0x2d, 0xea, 0xcf, 0x9e, 0x49, 0x1c, 0x71, 0x32, - 0x4b, 0xc7, 0x20, 0x18, 0x28, 0x90, 0x24, 0x03, 0x36, 0xe1, 0x82, 0x98, 0x1f, 0x68, 0x12, 0x11, - 0x09, 0x4a, 0x45, 0x2c, 0x94, 0x24, 0xeb, 0xd1, 0x79, 0x32, 0xa5, 0x3d, 0x12, 0x02, 0x03, 0x41, - 0x15, 0x4c, 0x70, 0x22, 0xb8, 0xe2, 0xf6, 0xbd, 0x55, 0x1a, 0xd3, 0x24, 0xc2, 0x65, 0x1a, 0x97, - 0xe9, 0xf6, 0xa3, 0x30, 0x52, 0xd3, 0x74, 0x8c, 0x03, 0x1e, 0x93, 0x90, 0x87, 0x9c, 0x14, 0xd0, - 0x38, 0x7d, 0x5f, 0x9c, 0x8a, 0x43, 0xf1, 0xb4, 0x92, 0xb5, 0xbb, 0x5b, 0x57, 0x07, 0x5c, 0x00, - 0xc9, 0x76, 0x2e, 0x6c, 0x3f, 0xd9, 0x64, 0x62, 0x1a, 0x4c, 0x23, 0x06, 0xe2, 0x23, 0x49, 0x66, - 0xa1, 0x1e, 0x48, 0x12, 0x83, 0xa2, 0x7f, 0xa2, 0xc8, 0x3e, 0x4a, 0xa4, 0x4c, 0x45, 0x31, 0xec, - 0x00, 0x4f, 0xff, 0x05, 0xc8, 0x60, 0x0a, 0x31, 0xdd, 0xe1, 0x2e, 0xf6, 0x71, 0xa9, 0x8a, 0xe6, - 0x24, 0x62, 0x4a, 0x2a, 0xf1, 0x3b, 0xd4, 0xfd, 0x66, 0xa1, 0xff, 0x2e, 0xf9, 0xe4, 0x52, 0x80, - 0x04, 0x65, 0xbf, 0x43, 0x0d, 0x5d, 0x63, 0x42, 0x15, 0x75, 0xac, 0x53, 0xeb, 0xac, 0x79, 0xfe, - 0x18, 0x6f, 0xfe, 0xe5, 0xb5, 0x15, 0x27, 0xb3, 0x50, 0x0f, 0x24, 0xd6, 0x69, 0x9c, 0xf5, 0xf0, - 0xab, 0xf1, 0x07, 0x08, 0xd4, 0x10, 0x14, 0xf5, 0xec, 0xc5, 0x6d, 0xa7, 0x92, 0xdf, 0x76, 0xd0, - 0x66, 0xe6, 0xaf, 0xad, 0xf6, 0x10, 0x1d, 0xcb, 0x04, 0x02, 0xe7, 0xa8, 0xb0, 0x3f, 0xc4, 0x7f, - 0x7b, 0x87, 0x78, 0xbd, 0xd8, 0x28, 0x81, 0xc0, 0x6b, 0x19, 0xf1, 0xb1, 0x3e, 0xf9, 0x85, 0xa6, - 0xfb, 0xd5, 0x42, 0x27, 0xeb, 0xd4, 0x20, 0x92, 0xca, 0x7e, 0xbb, 0x53, 0x01, 0x1f, 0x56, 0x41, - 0xd3, 0x45, 0x81, 0x3b, 0xe6, 0x9e, 0x46, 0x39, 0xd9, 0x5a, 0x7f, 0x80, 0x6a, 0x91, 0x82, 0x58, - 0x3a, 0x47, 0xa7, 0xd5, 0xb3, 0xe6, 0xf9, 0x83, 0x03, 0xf7, 0xf7, 0x4e, 0x8c, 0xb3, 0xf6, 0x52, - 0xd3, 0xfe, 0x4a, 0xd2, 0xfd, 0x52, 0xdd, 0xda, 0x5e, 0xb7, 0xb2, 0x29, 0x6a, 0x48, 0x98, 0x43, - 0xa0, 0xb8, 0x30, 0xdb, 0x5f, 0x1c, 0xb8, 0x3d, 0x1d, 0xc3, 0x7c, 0x64, 0xd0, 0x4d, 0x85, 0x72, - 0xe2, 0xaf, 0xb5, 0xf6, 0x73, 0x54, 0x05, 0x96, 0x99, 0x02, 0xed, 0xed, 0x02, 0xfa, 0xbb, 0xd7, - 0xae, 0x3e, 0xcb, 0xae, 0xa8, 0xf0, 0x9a, 0x46, 0x52, 0xed, 0xb3, 0xcc, 0xd7, 0x8c, 0x3d, 0x40, - 0x75, 0x60, 0xd9, 0x0b, 0xc1, 0x63, 0xa7, 0x5a, 0xe0, 0xf7, 0xf7, 0xe0, 0x3a, 0x32, 0xe2, 0xa9, - 0x08, 0xc0, 0xfb, 0xdf, 0x58, 0xea, 0x66, 0xec, 0x97, 0x0a, 0xbb, 0x8f, 0xea, 0x19, 0x9f, 0xa7, - 0x31, 0x48, 0xe7, 0x78, 0xff, 0x32, 0x57, 0x45, 0x64, 0xa3, 0x59, 0x9d, 0xa5, 0x5f, 0xb2, 0xf6, - 0x6b, 0xd4, 0x5a, 0x3d, 0x0e, 0x79, 0xca, 0x94, 0x74, 0x6a, 0x85, 0xab, 0xb3, 0xdf, 0x55, 0xe4, - 0xbc, 0xbb, 0x46, 0xd8, 0xda, 0x1a, 0x4a, 0xff, 0x17, 0x95, 0x87, 0x17, 0x4b, 0xb7, 0x72, 0xbd, - 0x74, 0x2b, 0x37, 0x4b, 0xb7, 0xf2, 0x29, 0x77, 0xad, 0x45, 0xee, 0x5a, 0xd7, 0xb9, 0x6b, 0xdd, - 0xe4, 0xae, 0xf5, 0x3d, 0x77, 0xad, 0xcf, 0x3f, 0xdc, 0xca, 0x9b, 0x46, 0xf9, 0xbe, 0x7f, 0x06, - 0x00, 0x00, 0xff, 0xff, 0x0e, 0x35, 0x98, 0xb5, 0xd9, 0x04, 0x00, 0x00, + // 542 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xc1, 0x8e, 0xd2, 0x40, + 0x1c, 0xc6, 0xe9, 0xb2, 0x04, 0x1c, 0xd8, 0x68, 0x1a, 0x0f, 0x0d, 0x31, 0x65, 0xe5, 0xe2, 0x26, + 0xc6, 0x19, 0x59, 0x8d, 0xd1, 0x6b, 0x13, 0x4c, 0x4c, 0x20, 0x6e, 0x4a, 0xb2, 0x89, 0xc6, 0x83, + 0x43, 0xf9, 0x5b, 0x2a, 0xb4, 0xd3, 0xcc, 0x4c, 0x9b, 0x78, 0xf3, 0x11, 0x7c, 0x01, 0x9f, 0x44, + 0x1f, 0x80, 0xe3, 0x1e, 0xf7, 0xb4, 0x91, 0xfa, 0x22, 0x66, 0x86, 0x29, 0xa0, 0x88, 0x72, 0x9b, + 0xff, 0x9f, 0xef, 0xfb, 0xcd, 0xf7, 0x31, 0x45, 0xfd, 0xd9, 0x73, 0x81, 0x23, 0x46, 0x66, 0xd9, + 0x18, 0x78, 0x02, 0x12, 0x04, 0xc9, 0x21, 0x99, 0x30, 0x4e, 0xcc, 0x0f, 0x34, 0x8d, 0x88, 0x00, + 0x29, 0xa3, 0x24, 0x14, 0x24, 0xef, 0xd1, 0x79, 0x3a, 0xa5, 0x3d, 0x12, 0x42, 0x02, 0x9c, 0x4a, + 0x98, 0xe0, 0x94, 0x33, 0xc9, 0xec, 0x7b, 0x2b, 0x35, 0xa6, 0x69, 0x84, 0x4b, 0x35, 0x2e, 0xd5, + 0xed, 0x47, 0x61, 0x24, 0xa7, 0xd9, 0x18, 0x07, 0x2c, 0x26, 0x21, 0x0b, 0x19, 0xd1, 0xa6, 0x71, + 0xf6, 0x41, 0x4f, 0x7a, 0xd0, 0xa7, 0x15, 0xac, 0xdd, 0xdd, 0xba, 0x3a, 0x60, 0x1c, 0x48, 0xbe, + 0x73, 0x61, 0xfb, 0xe9, 0x46, 0x13, 0xd3, 0x60, 0x1a, 0x25, 0xc0, 0x3f, 0x91, 0x74, 0x16, 0xaa, + 0x85, 0x20, 0x31, 0x48, 0xfa, 0x37, 0x17, 0xd9, 0xe7, 0xe2, 0x59, 0x22, 0xa3, 0x18, 0x76, 0x0c, + 0xcf, 0xfe, 0x67, 0x10, 0xc1, 0x14, 0x62, 0xfa, 0xa7, 0xaf, 0xfb, 0xdd, 0x42, 0xb7, 0x2e, 0xd8, + 0xe4, 0x82, 0x83, 0x00, 0x69, 0xbf, 0x47, 0x0d, 0x95, 0x68, 0x42, 0x25, 0x75, 0xac, 0x53, 0xeb, + 0xac, 0x79, 0xfe, 0x18, 0x6f, 0xfe, 0xb0, 0x35, 0x18, 0xa7, 0xb3, 0x50, 0x2d, 0x04, 0x56, 0x6a, + 0x9c, 0xf7, 0xf0, 0xeb, 0xf1, 0x47, 0x08, 0xe4, 0x10, 0x24, 0xf5, 0xec, 0xc5, 0x4d, 0xa7, 0x52, + 0xdc, 0x74, 0xd0, 0x66, 0xe7, 0xaf, 0xa9, 0xf6, 0x10, 0x1d, 0x8b, 0x14, 0x02, 0xe7, 0x48, 0xd3, + 0x1f, 0xe2, 0x7f, 0x3d, 0x07, 0x5e, 0x07, 0x1b, 0xa5, 0x10, 0x78, 0x2d, 0x03, 0x3e, 0x56, 0x93, + 0xaf, 0x31, 0xdd, 0x6f, 0x16, 0x3a, 0x59, 0xab, 0x06, 0x91, 0x90, 0xf6, 0xbb, 0x9d, 0x0a, 0xf8, + 0xb0, 0x0a, 0xca, 0xad, 0x0b, 0xdc, 0x31, 0xf7, 0x34, 0xca, 0xcd, 0x56, 0xfc, 0x01, 0xaa, 0x45, + 0x12, 0x62, 0xe1, 0x1c, 0x9d, 0x56, 0xcf, 0x9a, 0xe7, 0x0f, 0x0e, 0xcc, 0xef, 0x9d, 0x18, 0x66, + 0xed, 0x95, 0x72, 0xfb, 0x2b, 0x48, 0xf7, 0x6b, 0x75, 0x2b, 0xbd, 0x6a, 0x65, 0x53, 0xd4, 0x10, + 0x30, 0x87, 0x40, 0x32, 0x6e, 0xd2, 0x3f, 0x39, 0x30, 0x3d, 0x1d, 0xc3, 0x7c, 0x64, 0xac, 0x9b, + 0x0a, 0xe5, 0xc6, 0x5f, 0x63, 0xed, 0x17, 0xa8, 0x0a, 0x49, 0x6e, 0x0a, 0xb4, 0xb7, 0x0b, 0xa8, + 0x4f, 0x58, 0xb1, 0xfa, 0x49, 0x7e, 0x49, 0xb9, 0xd7, 0x34, 0x90, 0x6a, 0x3f, 0xc9, 0x7d, 0xe5, + 0xb1, 0x07, 0xa8, 0x0e, 0x49, 0xfe, 0x92, 0xb3, 0xd8, 0xa9, 0x6a, 0xfb, 0xfd, 0x3d, 0x76, 0x25, + 0x19, 0xb1, 0x8c, 0x07, 0xe0, 0xdd, 0x36, 0x94, 0xba, 0x59, 0xfb, 0x25, 0xc2, 0xee, 0xa3, 0x7a, + 0xce, 0xe6, 0x59, 0x0c, 0xc2, 0x39, 0xde, 0x1f, 0xe6, 0x52, 0x4b, 0x36, 0x98, 0xd5, 0x2c, 0xfc, + 0xd2, 0x6b, 0xbf, 0x41, 0xad, 0xd5, 0x71, 0xc8, 0xb2, 0x44, 0x0a, 0xa7, 0xa6, 0x59, 0x9d, 0xfd, + 0x2c, 0xad, 0xf3, 0xee, 0x1a, 0x60, 0x6b, 0x6b, 0x29, 0xfc, 0xdf, 0x50, 0x1e, 0x5e, 0x2c, 0xdd, + 0xca, 0xd5, 0xd2, 0xad, 0x5c, 0x2f, 0xdd, 0xca, 0xe7, 0xc2, 0xb5, 0x16, 0x85, 0x6b, 0x5d, 0x15, + 0xae, 0x75, 0x5d, 0xb8, 0xd6, 0x8f, 0xc2, 0xb5, 0xbe, 0xfc, 0x74, 0x2b, 0x6f, 0x1b, 0xe5, 0x7b, + 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x46, 0x15, 0xf2, 0x97, 0xa4, 0x04, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/settings/v1alpha1/generated.proto b/vendor/k8s.io/api/settings/v1alpha1/generated.proto index 887d2fa1b2..d5534c4de9 100644 --- a/vendor/k8s.io/api/settings/v1alpha1/generated.proto +++ b/vendor/k8s.io/api/settings/v1alpha1/generated.proto @@ -25,7 +25,6 @@ import "k8s.io/api/core/v1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1alpha1"; diff --git a/vendor/k8s.io/api/storage/v1/generated.pb.go b/vendor/k8s.io/api/storage/v1/generated.pb.go index b13b03fc73..d43a982981 100644 --- a/vendor/k8s.io/api/storage/v1/generated.pb.go +++ b/vendor/k8s.io/api/storage/v1/generated.pb.go @@ -933,48 +933,46 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 677 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xc1, 0x6e, 0xd3, 0x4a, - 0x14, 0x8d, 0x93, 0x97, 0xbe, 0x74, 0xd2, 0xea, 0x25, 0x7e, 0x45, 0x32, 0x59, 0x38, 0x51, 0xd9, - 0x44, 0x95, 0x18, 0x37, 0x6d, 0x41, 0x15, 0x12, 0x48, 0x35, 0xaa, 0x04, 0x52, 0xab, 0x46, 0x6e, - 0x55, 0x21, 0xc4, 0x82, 0x89, 0x73, 0x71, 0x87, 0xd8, 0x33, 0x66, 0x66, 0x6c, 0xc8, 0x8e, 0x1f, - 0x40, 0xe2, 0x7b, 0xf8, 0x82, 0x2e, 0xbb, 0xec, 0x2a, 0xa2, 0xe6, 0x2f, 0xba, 0x42, 0x76, 0x42, - 0xe3, 0x26, 0xa9, 0xe8, 0x6e, 0xe6, 0xdc, 0x73, 0xce, 0x9d, 0x3b, 0xf7, 0x5e, 0xf4, 0x62, 0xb0, - 0x2b, 0x31, 0xe5, 0xd6, 0x20, 0xea, 0x81, 0x60, 0xa0, 0x40, 0x5a, 0x31, 0xb0, 0x3e, 0x17, 0xd6, - 0x24, 0x40, 0x42, 0x6a, 0x49, 0xc5, 0x05, 0xf1, 0xc0, 0x8a, 0x3b, 0x96, 0x07, 0x0c, 0x04, 0x51, - 0xd0, 0xc7, 0xa1, 0xe0, 0x8a, 0xeb, 0x0f, 0xc6, 0x34, 0x4c, 0x42, 0x8a, 0x27, 0x34, 0x1c, 0x77, - 0x1a, 0x8f, 0x3d, 0xaa, 0xce, 0xa2, 0x1e, 0x76, 0x79, 0x60, 0x79, 0xdc, 0xe3, 0x56, 0xc6, 0xee, - 0x45, 0x1f, 0xb2, 0x5b, 0x76, 0xc9, 0x4e, 0x63, 0x97, 0xc6, 0x7a, 0x2e, 0x99, 0xcb, 0xc5, 0xa2, - 0x4c, 0x8d, 0x8d, 0x85, 0x0f, 0xea, 0x81, 0x22, 0xf3, 0xdc, 0x9d, 0x29, 0x37, 0x20, 0xee, 0x19, - 0x65, 0x20, 0x86, 0x56, 0x38, 0xf0, 0x52, 0x40, 0x5a, 0x01, 0x28, 0xb2, 0x28, 0x83, 0x75, 0x97, - 0x4a, 0x44, 0x4c, 0xd1, 0x00, 0xe6, 0x04, 0x4f, 0xff, 0x26, 0x90, 0xee, 0x19, 0x04, 0x64, 0x4e, - 0xb7, 0x7d, 0x97, 0x2e, 0x52, 0xd4, 0xb7, 0x28, 0x53, 0x52, 0x89, 0x59, 0xd1, 0xfa, 0xb7, 0x25, - 0xb4, 0x72, 0x3c, 0xae, 0xfb, 0xa5, 0x4f, 0xa4, 0xd4, 0xdf, 0xa3, 0x4a, 0x5a, 0x49, 0x9f, 0x28, - 0x62, 0x68, 0x2d, 0xad, 0x5d, 0xdd, 0xda, 0xc4, 0xd3, 0x6e, 0xdc, 0x18, 0xe3, 0x70, 0xe0, 0xa5, - 0x80, 0xc4, 0x29, 0x1b, 0xc7, 0x1d, 0x7c, 0xd4, 0xfb, 0x08, 0xae, 0x3a, 0x04, 0x45, 0x6c, 0xfd, - 0x7c, 0xd4, 0x2c, 0x24, 0xa3, 0x26, 0x9a, 0x62, 0xce, 0x8d, 0xab, 0xfe, 0x04, 0x55, 0x43, 0xc1, - 0x63, 0x2a, 0x29, 0x67, 0x20, 0x8c, 0x62, 0x4b, 0x6b, 0x2f, 0xdb, 0xff, 0x4f, 0x24, 0xd5, 0xee, - 0x34, 0xe4, 0xe4, 0x79, 0xba, 0x87, 0x50, 0x48, 0x04, 0x09, 0x40, 0x81, 0x90, 0x46, 0xa9, 0x55, - 0x6a, 0x57, 0xb7, 0xb6, 0xf1, 0xc2, 0x41, 0xc1, 0xf9, 0x8a, 0x70, 0xf7, 0x46, 0xb5, 0xcf, 0x94, - 0x18, 0x4e, 0x5f, 0x37, 0x0d, 0x38, 0x39, 0x6b, 0x7d, 0x80, 0x56, 0x05, 0xb8, 0x3e, 0xa1, 0x41, - 0x97, 0xfb, 0xd4, 0x1d, 0x1a, 0xff, 0x64, 0x2f, 0xdc, 0x4f, 0x46, 0xcd, 0x55, 0x27, 0x1f, 0xb8, - 0x1e, 0x35, 0x37, 0xe7, 0x47, 0x0c, 0x77, 0x41, 0x48, 0x2a, 0x15, 0x30, 0x75, 0xca, 0xfd, 0x28, - 0x80, 0x5b, 0x1a, 0xe7, 0xb6, 0xb7, 0xbe, 0x83, 0x56, 0x02, 0x1e, 0x31, 0x75, 0x14, 0x2a, 0xca, - 0x99, 0x34, 0xca, 0xad, 0x52, 0x7b, 0xd9, 0xae, 0x25, 0xa3, 0xe6, 0xca, 0x61, 0x0e, 0x77, 0x6e, - 0xb1, 0xf4, 0x03, 0xb4, 0x46, 0x7c, 0x9f, 0x7f, 0x1e, 0x27, 0xd8, 0xff, 0x12, 0x12, 0x96, 0xfe, - 0x92, 0xb1, 0xd4, 0xd2, 0xda, 0x15, 0xdb, 0x48, 0x46, 0xcd, 0xb5, 0xbd, 0x05, 0x71, 0x67, 0xa1, - 0x4a, 0x7f, 0x83, 0xea, 0x71, 0x06, 0xd9, 0x94, 0xf5, 0x29, 0xf3, 0x0e, 0x79, 0x1f, 0x8c, 0x7f, - 0xb3, 0xa2, 0x37, 0x92, 0x51, 0xb3, 0x7e, 0x3a, 0x1b, 0xbc, 0x5e, 0x04, 0x3a, 0xf3, 0x26, 0xfa, - 0x27, 0x54, 0xcf, 0x32, 0x42, 0xff, 0x84, 0x87, 0xdc, 0xe7, 0x1e, 0x05, 0x69, 0x54, 0xb2, 0xd6, - 0xb5, 0xf3, 0xad, 0x4b, 0xbf, 0x2e, 0xed, 0xdb, 0x84, 0x35, 0x3c, 0x06, 0x1f, 0x5c, 0xc5, 0xc5, - 0x09, 0x88, 0xc0, 0x7e, 0x38, 0xe9, 0x57, 0x7d, 0x6f, 0xd6, 0xca, 0x99, 0x77, 0x6f, 0x3c, 0x47, - 0xff, 0xcd, 0x34, 0x5c, 0xaf, 0xa1, 0xd2, 0x00, 0x86, 0xd9, 0x34, 0x2f, 0x3b, 0xe9, 0x51, 0x5f, - 0x43, 0xe5, 0x98, 0xf8, 0x11, 0x8c, 0x87, 0xcf, 0x19, 0x5f, 0x9e, 0x15, 0x77, 0xb5, 0xf5, 0x1f, - 0x1a, 0xaa, 0xe5, 0xa7, 0xe7, 0x80, 0x4a, 0xa5, 0xbf, 0x9b, 0xdb, 0x09, 0x7c, 0xbf, 0x9d, 0x48, - 0xd5, 0xd9, 0x46, 0xd4, 0x26, 0x35, 0x54, 0xfe, 0x20, 0xb9, 0x7d, 0x78, 0x85, 0xca, 0x54, 0x41, - 0x20, 0x8d, 0x62, 0xf6, 0x31, 0x8f, 0xee, 0x31, 0xd3, 0xf6, 0xea, 0xc4, 0xaf, 0xfc, 0x3a, 0x55, - 0x3a, 0x63, 0x03, 0xbb, 0x7d, 0x7e, 0x65, 0x16, 0x2e, 0xae, 0xcc, 0xc2, 0xe5, 0x95, 0x59, 0xf8, - 0x9a, 0x98, 0xda, 0x79, 0x62, 0x6a, 0x17, 0x89, 0xa9, 0x5d, 0x26, 0xa6, 0xf6, 0x33, 0x31, 0xb5, - 0xef, 0xbf, 0xcc, 0xc2, 0xdb, 0x62, 0xdc, 0xf9, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x0e, 0x67, 0x74, - 0x30, 0xa1, 0x05, 0x00, 0x00, + // 656 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0xcd, 0x6e, 0xd3, 0x4a, + 0x14, 0x8e, 0x93, 0x9b, 0xde, 0x74, 0xd2, 0xea, 0x26, 0xbe, 0xbd, 0x92, 0x6f, 0x16, 0x4e, 0x54, + 0x36, 0x11, 0x12, 0xe3, 0xa6, 0x14, 0x54, 0x21, 0x81, 0x54, 0xa3, 0x4a, 0x20, 0xb5, 0x6a, 0xe4, + 0x56, 0x15, 0x42, 0x2c, 0x98, 0x38, 0x07, 0x77, 0x88, 0xed, 0x31, 0x33, 0x63, 0x43, 0x76, 0xbc, + 0x00, 0x12, 0xcf, 0xc3, 0x13, 0x74, 0xd9, 0x65, 0x57, 0x16, 0x35, 0x6f, 0xd1, 0x15, 0xf2, 0x0f, + 0x8d, 0x9b, 0x04, 0xd1, 0xdd, 0xcc, 0x77, 0xbe, 0xef, 0x3b, 0x33, 0xe7, 0x07, 0x3d, 0x9b, 0xec, + 0x0a, 0x4c, 0x99, 0x31, 0x09, 0x47, 0xc0, 0x7d, 0x90, 0x20, 0x8c, 0x08, 0xfc, 0x31, 0xe3, 0x46, + 0x11, 0x20, 0x01, 0x35, 0x84, 0x64, 0x9c, 0x38, 0x60, 0x44, 0x03, 0xc3, 0x01, 0x1f, 0x38, 0x91, + 0x30, 0xc6, 0x01, 0x67, 0x92, 0xa9, 0xff, 0xe5, 0x34, 0x4c, 0x02, 0x8a, 0x0b, 0x1a, 0x8e, 0x06, + 0x9d, 0x07, 0x0e, 0x95, 0x67, 0xe1, 0x08, 0xdb, 0xcc, 0x33, 0x1c, 0xe6, 0x30, 0x23, 0x63, 0x8f, + 0xc2, 0x77, 0xd9, 0x2d, 0xbb, 0x64, 0xa7, 0xdc, 0xa5, 0xb3, 0x59, 0x4a, 0x66, 0x33, 0xbe, 0x2c, + 0x53, 0x67, 0x67, 0xc6, 0xf1, 0x88, 0x7d, 0x46, 0x7d, 0xe0, 0x53, 0x23, 0x98, 0x38, 0x29, 0x20, + 0x0c, 0x0f, 0x24, 0x59, 0xa6, 0x32, 0x7e, 0xa7, 0xe2, 0xa1, 0x2f, 0xa9, 0x07, 0x0b, 0x82, 0xc7, + 0x7f, 0x12, 0x08, 0xfb, 0x0c, 0x3c, 0x32, 0xaf, 0xdb, 0xfc, 0xb2, 0x82, 0xd6, 0x8e, 0xf3, 0x02, + 0x3c, 0x77, 0x89, 0x10, 0xea, 0x5b, 0xd4, 0x48, 0x1f, 0x35, 0x26, 0x92, 0x68, 0x4a, 0x4f, 0xe9, + 0x37, 0xb7, 0xb7, 0xf0, 0xac, 0x58, 0x37, 0xde, 0x38, 0x98, 0x38, 0x29, 0x20, 0x70, 0xca, 0xc6, + 0xd1, 0x00, 0x1f, 0x8d, 0xde, 0x83, 0x2d, 0x0f, 0x41, 0x12, 0x53, 0x3d, 0x8f, 0xbb, 0x95, 0x24, + 0xee, 0xa2, 0x19, 0x66, 0xdd, 0xb8, 0xaa, 0x8f, 0x50, 0x33, 0xe0, 0x2c, 0xa2, 0x82, 0x32, 0x1f, + 0xb8, 0x56, 0xed, 0x29, 0xfd, 0x55, 0xf3, 0xdf, 0x42, 0xd2, 0x1c, 0xce, 0x42, 0x56, 0x99, 0xa7, + 0x3a, 0x08, 0x05, 0x84, 0x13, 0x0f, 0x24, 0x70, 0xa1, 0xd5, 0x7a, 0xb5, 0x7e, 0x73, 0xfb, 0x21, + 0x5e, 0xda, 0x47, 0x5c, 0xfe, 0x11, 0x1e, 0xde, 0xa8, 0xf6, 0x7d, 0xc9, 0xa7, 0xb3, 0xd7, 0xcd, + 0x02, 0x56, 0xc9, 0x5a, 0x9d, 0xa0, 0x75, 0x0e, 0xb6, 0x4b, 0xa8, 0x37, 0x64, 0x2e, 0xb5, 0xa7, + 0xda, 0x5f, 0xd9, 0x0b, 0xf7, 0x93, 0xb8, 0xbb, 0x6e, 0x95, 0x03, 0xd7, 0x71, 0x77, 0x6b, 0x71, + 0x02, 0xf0, 0x10, 0xb8, 0xa0, 0x42, 0x82, 0x2f, 0x4f, 0x99, 0x1b, 0x7a, 0x70, 0x4b, 0x63, 0xdd, + 0xf6, 0x56, 0x77, 0xd0, 0x9a, 0xc7, 0x42, 0x5f, 0x1e, 0x05, 0x92, 0x32, 0x5f, 0x68, 0xf5, 0x5e, + 0xad, 0xbf, 0x6a, 0xb6, 0x92, 0xb8, 0xbb, 0x76, 0x58, 0xc2, 0xad, 0x5b, 0x2c, 0xf5, 0x00, 0x6d, + 0x10, 0xd7, 0x65, 0x1f, 0xf3, 0x04, 0xfb, 0x9f, 0x02, 0xe2, 0xa7, 0x55, 0xd2, 0x56, 0x7a, 0x4a, + 0xbf, 0x61, 0x6a, 0x49, 0xdc, 0xdd, 0xd8, 0x5b, 0x12, 0xb7, 0x96, 0xaa, 0xd4, 0x57, 0xa8, 0x1d, + 0x65, 0x90, 0x49, 0xfd, 0x31, 0xf5, 0x9d, 0x43, 0x36, 0x06, 0xed, 0xef, 0xec, 0xd3, 0xf7, 0x93, + 0xb8, 0xdb, 0x3e, 0x9d, 0x0f, 0x5e, 0x2f, 0x03, 0xad, 0x45, 0x13, 0xf5, 0x03, 0x6a, 0x67, 0x19, + 0x61, 0x7c, 0xc2, 0x02, 0xe6, 0x32, 0x87, 0x82, 0xd0, 0x1a, 0x59, 0xeb, 0xfa, 0xe5, 0xd6, 0xa5, + 0xa5, 0x4b, 0xfb, 0x56, 0xb0, 0xa6, 0xc7, 0xe0, 0x82, 0x2d, 0x19, 0x3f, 0x01, 0xee, 0x99, 0xff, + 0x17, 0xfd, 0x6a, 0xef, 0xcd, 0x5b, 0x59, 0x8b, 0xee, 0x9d, 0xa7, 0xe8, 0x9f, 0xb9, 0x86, 0xab, + 0x2d, 0x54, 0x9b, 0xc0, 0x34, 0x9b, 0xe6, 0x55, 0x2b, 0x3d, 0xaa, 0x1b, 0xa8, 0x1e, 0x11, 0x37, + 0x84, 0x7c, 0xf8, 0xac, 0xfc, 0xf2, 0xa4, 0xba, 0xab, 0x6c, 0x7e, 0x53, 0x50, 0xab, 0x3c, 0x3d, + 0x07, 0x54, 0x48, 0xf5, 0xcd, 0xc2, 0x4e, 0xe0, 0xbb, 0xed, 0x44, 0xaa, 0xce, 0x36, 0xa2, 0x55, + 0xfc, 0xa1, 0xf1, 0x0b, 0x29, 0xed, 0xc3, 0x0b, 0x54, 0xa7, 0x12, 0x3c, 0xa1, 0x55, 0xb3, 0xc2, + 0xdc, 0xbb, 0xc3, 0x4c, 0x9b, 0xeb, 0x85, 0x5f, 0xfd, 0x65, 0xaa, 0xb4, 0x72, 0x03, 0xb3, 0x7f, + 0x7e, 0xa5, 0x57, 0x2e, 0xae, 0xf4, 0xca, 0xe5, 0x95, 0x5e, 0xf9, 0x9c, 0xe8, 0xca, 0x79, 0xa2, + 0x2b, 0x17, 0x89, 0xae, 0x5c, 0x26, 0xba, 0xf2, 0x3d, 0xd1, 0x95, 0xaf, 0x3f, 0xf4, 0xca, 0xeb, + 0x6a, 0x34, 0xf8, 0x19, 0x00, 0x00, 0xff, 0xff, 0x0d, 0x64, 0x41, 0x83, 0x40, 0x05, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/storage/v1/generated.proto b/vendor/k8s.io/api/storage/v1/generated.proto index cff642211d..df9f1dc458 100644 --- a/vendor/k8s.io/api/storage/v1/generated.proto +++ b/vendor/k8s.io/api/storage/v1/generated.proto @@ -22,11 +22,9 @@ syntax = 'proto2'; package k8s.io.api.storage.v1; import "k8s.io/api/core/v1/generated.proto"; -import "k8s.io/api/storage/v1beta1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1"; diff --git a/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go b/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go index 0e850dc34f..a1050134c0 100644 --- a/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go @@ -21,7 +21,7 @@ limitations under the License. package v1 import ( - corev1 "k8s.io/api/core/v1" + core_v1 "k8s.io/api/core/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -39,8 +39,12 @@ func (in *StorageClass) DeepCopyInto(out *StorageClass) { } if in.ReclaimPolicy != nil { in, out := &in.ReclaimPolicy, &out.ReclaimPolicy - *out = new(corev1.PersistentVolumeReclaimPolicy) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(core_v1.PersistentVolumeReclaimPolicy) + **out = **in + } } if in.MountOptions != nil { in, out := &in.MountOptions, &out.MountOptions @@ -49,17 +53,25 @@ func (in *StorageClass) DeepCopyInto(out *StorageClass) { } if in.AllowVolumeExpansion != nil { in, out := &in.AllowVolumeExpansion, &out.AllowVolumeExpansion - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.VolumeBindingMode != nil { in, out := &in.VolumeBindingMode, &out.VolumeBindingMode - *out = new(VolumeBindingMode) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(VolumeBindingMode) + **out = **in + } } if in.AllowedTopologies != nil { in, out := &in.AllowedTopologies, &out.AllowedTopologies - *out = make([]corev1.TopologySelectorTerm, len(*in)) + *out = make([]core_v1.TopologySelectorTerm, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } diff --git a/vendor/k8s.io/api/storage/v1alpha1/generated.pb.go b/vendor/k8s.io/api/storage/v1alpha1/generated.pb.go index e1d5a3aac2..507b5c1d5e 100644 --- a/vendor/k8s.io/api/storage/v1alpha1/generated.pb.go +++ b/vendor/k8s.io/api/storage/v1alpha1/generated.pb.go @@ -1472,52 +1472,49 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 745 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x3d, 0x6f, 0xdb, 0x46, - 0x18, 0xc7, 0x45, 0x49, 0xb6, 0xe5, 0x53, 0x5f, 0x8c, 0x83, 0xd0, 0x0a, 0x2a, 0x40, 0x19, 0x9a, - 0xdc, 0xa2, 0x3e, 0x56, 0x76, 0x51, 0x18, 0xdd, 0x44, 0xd8, 0x43, 0x51, 0xcb, 0x2d, 0xe8, 0xa2, - 0x43, 0xdb, 0xa1, 0x27, 0xf2, 0x31, 0x45, 0x4b, 0x7c, 0xc1, 0xdd, 0x51, 0x88, 0xb7, 0x4c, 0x99, - 0xb3, 0xe5, 0x1b, 0xe4, 0xb3, 0x68, 0x8b, 0x47, 0x4f, 0x42, 0xcc, 0x7c, 0x8b, 0x2c, 0x09, 0x78, - 0x3c, 0x89, 0xb2, 0x29, 0x25, 0xb6, 0x37, 0x3e, 0xcf, 0x3d, 0xff, 0xdf, 0xf3, 0x76, 0x47, 0x74, - 0x3c, 0x3a, 0xe2, 0xc4, 0x0b, 0x8d, 0x51, 0x3c, 0x00, 0x16, 0x80, 0x00, 0x6e, 0x4c, 0x20, 0x70, - 0x42, 0x66, 0xa8, 0x03, 0x1a, 0x79, 0x06, 0x17, 0x21, 0xa3, 0x2e, 0x18, 0x93, 0x2e, 0x1d, 0x47, - 0x43, 0xda, 0x35, 0x5c, 0x08, 0x80, 0x51, 0x01, 0x0e, 0x89, 0x58, 0x28, 0x42, 0xfc, 0x5d, 0x16, - 0x4c, 0x68, 0xe4, 0x11, 0x15, 0x4c, 0xe6, 0xc1, 0xad, 0x7d, 0xd7, 0x13, 0xc3, 0x78, 0x40, 0xec, - 0xd0, 0x37, 0xdc, 0xd0, 0x0d, 0x0d, 0xa9, 0x19, 0xc4, 0x17, 0xd2, 0x92, 0x86, 0xfc, 0xca, 0x58, - 0xad, 0x7e, 0x9e, 0x18, 0x9e, 0x09, 0x08, 0xb8, 0x17, 0x06, 0x7c, 0x9f, 0x46, 0x1e, 0x07, 0x36, - 0x01, 0x66, 0x44, 0x23, 0x37, 0x3d, 0xe3, 0x77, 0x03, 0x8c, 0x49, 0x77, 0x00, 0xa2, 0x58, 0x5a, - 0xeb, 0xe7, 0x1c, 0xe7, 0x53, 0x7b, 0xe8, 0x05, 0xc0, 0xae, 0x72, 0x86, 0x0f, 0x82, 0x1a, 0x93, - 0xa2, 0xca, 0x58, 0xa7, 0x62, 0x71, 0x20, 0x3c, 0x1f, 0x0a, 0x82, 0x5f, 0x3e, 0x27, 0xe0, 0xf6, - 0x10, 0x7c, 0x5a, 0xd0, 0x1d, 0xae, 0xd3, 0xc5, 0xc2, 0x1b, 0x1b, 0x5e, 0x20, 0xb8, 0x60, 0xf7, - 0x45, 0x9d, 0xd7, 0x65, 0xb4, 0xf3, 0x77, 0x38, 0x8e, 0x7d, 0xe8, 0x09, 0x41, 0xed, 0xa1, 0x0f, - 0x81, 0xc0, 0xff, 0xa3, 0x5a, 0xda, 0x8d, 0x43, 0x05, 0x6d, 0x6a, 0xbb, 0xda, 0x5e, 0xfd, 0xe0, - 0x27, 0x92, 0xaf, 0x65, 0x01, 0x27, 0xd1, 0xc8, 0x4d, 0x1d, 0x9c, 0xa4, 0xd1, 0x64, 0xd2, 0x25, - 0x7f, 0x0c, 0x2e, 0xc1, 0x16, 0x7d, 0x10, 0xd4, 0xc4, 0xd3, 0x59, 0xbb, 0x94, 0xcc, 0xda, 0x28, - 0xf7, 0x59, 0x0b, 0x2a, 0x3e, 0x47, 0x55, 0x1e, 0x81, 0xdd, 0x2c, 0x4b, 0x7a, 0x97, 0x7c, 0x62, - 0xe9, 0xe4, 0x7e, 0x79, 0xe7, 0x11, 0xd8, 0xe6, 0x17, 0x0a, 0x5f, 0x4d, 0x2d, 0x4b, 0xc2, 0xf0, - 0xbf, 0x68, 0x93, 0x0b, 0x2a, 0x62, 0xde, 0xac, 0x48, 0xec, 0xe1, 0xe3, 0xb0, 0x52, 0x6a, 0x7e, - 0xa5, 0xc0, 0x9b, 0x99, 0x6d, 0x29, 0x64, 0x67, 0xaa, 0xa1, 0xc6, 0x7d, 0xc9, 0xa9, 0xc7, 0x05, - 0xfe, 0xaf, 0x30, 0x2c, 0xf2, 0xb0, 0x61, 0xa5, 0x6a, 0x39, 0xaa, 0x1d, 0x95, 0xb2, 0x36, 0xf7, - 0x2c, 0x0d, 0xca, 0x42, 0x1b, 0x9e, 0x00, 0x9f, 0x37, 0xcb, 0xbb, 0x95, 0xbd, 0xfa, 0xc1, 0xfe, - 0xa3, 0x5a, 0x32, 0xbf, 0x54, 0xe4, 0x8d, 0xdf, 0x52, 0x86, 0x95, 0xa1, 0x3a, 0x17, 0xe8, 0x9b, - 0x42, 0xf3, 0x61, 0xcc, 0x6c, 0xc0, 0xa7, 0xa8, 0x11, 0x01, 0xe3, 0x1e, 0x17, 0x10, 0x88, 0x2c, - 0xe6, 0x8c, 0xfa, 0x20, 0xfb, 0xda, 0x36, 0x9b, 0xc9, 0xac, 0xdd, 0xf8, 0x73, 0xc5, 0xb9, 0xb5, - 0x52, 0xd5, 0x79, 0xb3, 0x62, 0x64, 0xe9, 0xba, 0xf0, 0x8f, 0xa8, 0x46, 0xa5, 0x07, 0x98, 0x42, - 0x2f, 0x46, 0xd0, 0x53, 0x7e, 0x6b, 0x11, 0x21, 0xd7, 0x2a, 0xcb, 0x53, 0xb7, 0xe5, 0x91, 0x6b, - 0x95, 0xd2, 0xa5, 0xb5, 0x4a, 0xdb, 0x52, 0xc8, 0xb4, 0x94, 0x20, 0x74, 0xb2, 0x2e, 0x2b, 0x77, - 0x4b, 0x39, 0x53, 0x7e, 0x6b, 0x11, 0xd1, 0xf9, 0x50, 0x59, 0x31, 0x3a, 0x79, 0x3f, 0x96, 0x7a, - 0x72, 0x64, 0x4f, 0xb5, 0x42, 0x4f, 0xce, 0xa2, 0x27, 0x07, 0xbf, 0xd2, 0x10, 0xa6, 0x0b, 0x44, - 0x7f, 0x7e, 0x7f, 0xb2, 0x25, 0xff, 0xfe, 0x84, 0x7b, 0x4b, 0x7a, 0x05, 0xda, 0x49, 0x20, 0xd8, - 0x95, 0xd9, 0x52, 0x55, 0xe0, 0x62, 0x80, 0xb5, 0xa2, 0x04, 0x7c, 0x89, 0xea, 0x99, 0xf7, 0x84, - 0xb1, 0x90, 0xa9, 0x97, 0xb4, 0xf7, 0x80, 0x8a, 0x64, 0xbc, 0xa9, 0x27, 0xb3, 0x76, 0xbd, 0x97, - 0x03, 0xde, 0xcf, 0xda, 0xf5, 0xa5, 0x73, 0x6b, 0x19, 0x9e, 0xe6, 0x72, 0x20, 0xcf, 0x55, 0x7d, - 0x4a, 0xae, 0x63, 0x58, 0x9f, 0x6b, 0x09, 0xde, 0x3a, 0x41, 0xdf, 0xae, 0x19, 0x11, 0xde, 0x41, - 0x95, 0x11, 0x5c, 0x65, 0x37, 0xd1, 0x4a, 0x3f, 0x71, 0x03, 0x6d, 0x4c, 0xe8, 0x38, 0xce, 0x6e, - 0xdc, 0xb6, 0x95, 0x19, 0xbf, 0x96, 0x8f, 0xb4, 0xce, 0x0b, 0x0d, 0x2d, 0xe7, 0xc0, 0xa7, 0xa8, - 0x9a, 0xfe, 0x93, 0xd5, 0xcb, 0xff, 0xe1, 0x61, 0x2f, 0xff, 0x2f, 0xcf, 0x87, 0xfc, 0x0f, 0x96, - 0x5a, 0x96, 0xa4, 0xe0, 0xef, 0xd1, 0x96, 0x0f, 0x9c, 0x53, 0x57, 0x65, 0x36, 0xbf, 0x56, 0x41, - 0x5b, 0xfd, 0xcc, 0x6d, 0xcd, 0xcf, 0x4d, 0x32, 0xbd, 0xd5, 0x4b, 0xd7, 0xb7, 0x7a, 0xe9, 0xe6, - 0x56, 0x2f, 0x3d, 0x4f, 0x74, 0x6d, 0x9a, 0xe8, 0xda, 0x75, 0xa2, 0x6b, 0x37, 0x89, 0xae, 0xbd, - 0x4d, 0x74, 0xed, 0xe5, 0x3b, 0xbd, 0xf4, 0x4f, 0x6d, 0x3e, 0xb8, 0x8f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x68, 0x82, 0x7b, 0x73, 0x9e, 0x07, 0x00, 0x00, + // 704 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x94, 0x4d, 0x6f, 0xd3, 0x4c, + 0x10, 0xc7, 0xe3, 0x24, 0x6d, 0xd3, 0xcd, 0xf3, 0x52, 0xad, 0xa2, 0xe7, 0x89, 0x82, 0xe4, 0x54, + 0x39, 0x15, 0x44, 0xd7, 0xa4, 0x20, 0x54, 0x71, 0x8b, 0xd5, 0x1e, 0x10, 0x6d, 0x41, 0x5b, 0xc4, + 0x01, 0x38, 0xb0, 0xb1, 0xa7, 0x8e, 0x9b, 0xfa, 0x45, 0xbb, 0xeb, 0x48, 0xbd, 0x71, 0xe2, 0xcc, + 0x8d, 0x6f, 0xc0, 0x67, 0xc9, 0x8d, 0x1e, 0x7b, 0x8a, 0xa8, 0xf9, 0x16, 0x5c, 0x40, 0x5e, 0x6f, + 0x5e, 0x68, 0x52, 0x68, 0x7b, 0xf3, 0xcc, 0xce, 0xfc, 0x66, 0xe6, 0xbf, 0xb3, 0x46, 0x3b, 0xfd, + 0x6d, 0x41, 0xfc, 0xc8, 0xea, 0x27, 0x5d, 0xe0, 0x21, 0x48, 0x10, 0xd6, 0x00, 0x42, 0x37, 0xe2, + 0x96, 0x3e, 0x60, 0xb1, 0x6f, 0x09, 0x19, 0x71, 0xe6, 0x81, 0x35, 0x68, 0xb3, 0x93, 0xb8, 0xc7, + 0xda, 0x96, 0x07, 0x21, 0x70, 0x26, 0xc1, 0x25, 0x31, 0x8f, 0x64, 0x84, 0xef, 0xe4, 0xc1, 0x84, + 0xc5, 0x3e, 0xd1, 0xc1, 0x64, 0x1c, 0xdc, 0xd8, 0xf4, 0x7c, 0xd9, 0x4b, 0xba, 0xc4, 0x89, 0x02, + 0xcb, 0x8b, 0xbc, 0xc8, 0x52, 0x39, 0xdd, 0xe4, 0x48, 0x59, 0xca, 0x50, 0x5f, 0x39, 0xab, 0xf1, + 0x68, 0x5a, 0x38, 0x60, 0x4e, 0xcf, 0x0f, 0x81, 0x9f, 0x5a, 0x71, 0xdf, 0xcb, 0x1c, 0xc2, 0x0a, + 0x40, 0x32, 0x6b, 0x30, 0xd7, 0x41, 0xc3, 0xba, 0x2a, 0x8b, 0x27, 0xa1, 0xf4, 0x03, 0x98, 0x4b, + 0x78, 0xfc, 0xa7, 0x04, 0xe1, 0xf4, 0x20, 0x60, 0x97, 0xf3, 0x5a, 0x9f, 0x8b, 0x68, 0xed, 0x55, + 0x74, 0x92, 0x04, 0xd0, 0x91, 0x92, 0x39, 0xbd, 0x00, 0x42, 0x89, 0xdf, 0xa1, 0x4a, 0xd6, 0x98, + 0xcb, 0x24, 0xab, 0x1b, 0xeb, 0xc6, 0x46, 0x75, 0xeb, 0x01, 0x99, 0x4a, 0x32, 0xe1, 0x93, 0xb8, + 0xef, 0x65, 0x0e, 0x41, 0xb2, 0x68, 0x32, 0x68, 0x93, 0xe7, 0xdd, 0x63, 0x70, 0xe4, 0x3e, 0x48, + 0x66, 0xe3, 0xe1, 0xa8, 0x59, 0x48, 0x47, 0x4d, 0x34, 0xf5, 0xd1, 0x09, 0x15, 0x1f, 0xa2, 0xb2, + 0x88, 0xc1, 0xa9, 0x17, 0x15, 0xbd, 0x4d, 0x7e, 0x23, 0x38, 0xb9, 0xdc, 0xde, 0x61, 0x0c, 0x8e, + 0xfd, 0x97, 0xc6, 0x97, 0x33, 0x8b, 0x2a, 0x18, 0x7e, 0x83, 0x96, 0x85, 0x64, 0x32, 0x11, 0xf5, + 0x92, 0xc2, 0x3e, 0xbc, 0x19, 0x56, 0xa5, 0xda, 0xff, 0x68, 0xf0, 0x72, 0x6e, 0x53, 0x8d, 0x6c, + 0x0d, 0x0d, 0x54, 0xbb, 0x9c, 0xb2, 0xe7, 0x0b, 0x89, 0xdf, 0xce, 0x89, 0x45, 0xae, 0x27, 0x56, + 0x96, 0xad, 0xa4, 0x5a, 0xd3, 0x25, 0x2b, 0x63, 0xcf, 0x8c, 0x50, 0x14, 0x2d, 0xf9, 0x12, 0x02, + 0x51, 0x2f, 0xae, 0x97, 0x36, 0xaa, 0x5b, 0x9b, 0x37, 0x1a, 0xc9, 0xfe, 0x5b, 0x93, 0x97, 0x9e, + 0x66, 0x0c, 0x9a, 0xa3, 0x5a, 0x47, 0xe8, 0xbf, 0xb9, 0xe1, 0xa3, 0x84, 0x3b, 0x80, 0xf7, 0x50, + 0x2d, 0x06, 0x2e, 0x7c, 0x21, 0x21, 0x94, 0x79, 0xcc, 0x01, 0x0b, 0x40, 0xcd, 0xb5, 0x6a, 0xd7, + 0xd3, 0x51, 0xb3, 0xf6, 0x62, 0xc1, 0x39, 0x5d, 0x98, 0xd5, 0xfa, 0xb2, 0x40, 0xb2, 0xec, 0xba, + 0xf0, 0x7d, 0x54, 0x61, 0xca, 0x03, 0x5c, 0xa3, 0x27, 0x12, 0x74, 0xb4, 0x9f, 0x4e, 0x22, 0xd4, + 0xb5, 0xaa, 0xf6, 0xf4, 0xb6, 0xdc, 0xf0, 0x5a, 0x55, 0xea, 0xcc, 0xb5, 0x2a, 0x9b, 0x6a, 0x64, + 0xd6, 0x4a, 0x18, 0xb9, 0xf9, 0x94, 0xa5, 0x5f, 0x5b, 0x39, 0xd0, 0x7e, 0x3a, 0x89, 0x68, 0xfd, + 0x28, 0x2d, 0x90, 0x4e, 0xed, 0xc7, 0xcc, 0x4c, 0xae, 0x9a, 0xa9, 0x32, 0x37, 0x93, 0x3b, 0x99, + 0xc9, 0xc5, 0x9f, 0x0c, 0x84, 0xd9, 0x04, 0xb1, 0x3f, 0xde, 0x9f, 0xfc, 0x92, 0x9f, 0xdd, 0x62, + 0x6f, 0x49, 0x67, 0x8e, 0xb6, 0x1b, 0x4a, 0x7e, 0x6a, 0x37, 0x74, 0x17, 0x78, 0x3e, 0x80, 0x2e, + 0x68, 0x01, 0x1f, 0xa3, 0x6a, 0xee, 0xdd, 0xe5, 0x3c, 0xe2, 0xfa, 0x25, 0x6d, 0x5c, 0xa3, 0x23, + 0x15, 0x6f, 0x9b, 0xe9, 0xa8, 0x59, 0xed, 0x4c, 0x01, 0xdf, 0x47, 0xcd, 0xea, 0xcc, 0x39, 0x9d, + 0x85, 0x67, 0xb5, 0x5c, 0x98, 0xd6, 0x2a, 0xdf, 0xa6, 0xd6, 0x0e, 0x5c, 0x5d, 0x6b, 0x06, 0xde, + 0xd8, 0x45, 0xff, 0x5f, 0x21, 0x11, 0x5e, 0x43, 0xa5, 0x3e, 0x9c, 0xe6, 0x9b, 0x48, 0xb3, 0x4f, + 0x5c, 0x43, 0x4b, 0x03, 0x76, 0x92, 0xe4, 0x1b, 0xb7, 0x4a, 0x73, 0xe3, 0x49, 0x71, 0xdb, 0x68, + 0x7d, 0x30, 0xd0, 0x6c, 0x0d, 0xbc, 0x87, 0xca, 0xd9, 0xef, 0x55, 0xbf, 0xfc, 0x7b, 0xd7, 0x7b, + 0xf9, 0x2f, 0xfd, 0x00, 0xa6, 0x7f, 0xb0, 0xcc, 0xa2, 0x8a, 0x82, 0xef, 0xa2, 0x95, 0x00, 0x84, + 0x60, 0x9e, 0xae, 0x6c, 0xff, 0xab, 0x83, 0x56, 0xf6, 0x73, 0x37, 0x1d, 0x9f, 0xdb, 0x64, 0x78, + 0x61, 0x16, 0xce, 0x2e, 0xcc, 0xc2, 0xf9, 0x85, 0x59, 0x78, 0x9f, 0x9a, 0xc6, 0x30, 0x35, 0x8d, + 0xb3, 0xd4, 0x34, 0xce, 0x53, 0xd3, 0xf8, 0x9a, 0x9a, 0xc6, 0xc7, 0x6f, 0x66, 0xe1, 0x75, 0x65, + 0x2c, 0xdc, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0xba, 0xdb, 0x12, 0x1a, 0x07, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/storage/v1alpha1/generated.proto b/vendor/k8s.io/api/storage/v1alpha1/generated.proto index 2f792a06c5..ccb947540f 100644 --- a/vendor/k8s.io/api/storage/v1alpha1/generated.proto +++ b/vendor/k8s.io/api/storage/v1alpha1/generated.proto @@ -21,11 +21,9 @@ syntax = 'proto2'; package k8s.io.api.storage.v1alpha1; -import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1alpha1"; diff --git a/vendor/k8s.io/api/storage/v1alpha1/zz_generated.deepcopy.go b/vendor/k8s.io/api/storage/v1alpha1/zz_generated.deepcopy.go index e27c6ff3fa..d1a53755b1 100644 --- a/vendor/k8s.io/api/storage/v1alpha1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/storage/v1alpha1/zz_generated.deepcopy.go @@ -90,8 +90,12 @@ func (in *VolumeAttachmentSource) DeepCopyInto(out *VolumeAttachmentSource) { *out = *in if in.PersistentVolumeName != nil { in, out := &in.PersistentVolumeName, &out.PersistentVolumeName - *out = new(string) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } } return } @@ -135,13 +139,21 @@ func (in *VolumeAttachmentStatus) DeepCopyInto(out *VolumeAttachmentStatus) { } if in.AttachError != nil { in, out := &in.AttachError, &out.AttachError - *out = new(VolumeError) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(VolumeError) + (*in).DeepCopyInto(*out) + } } if in.DetachError != nil { in, out := &in.DetachError, &out.DetachError - *out = new(VolumeError) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(VolumeError) + (*in).DeepCopyInto(*out) + } } return } diff --git a/vendor/k8s.io/api/storage/v1beta1/generated.pb.go b/vendor/k8s.io/api/storage/v1beta1/generated.pb.go index 058702593e..fed8c7a630 100644 --- a/vendor/k8s.io/api/storage/v1beta1/generated.pb.go +++ b/vendor/k8s.io/api/storage/v1beta1/generated.pb.go @@ -2195,69 +2195,67 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 1022 bytes of a gzipped FileDescriptorProto + // 988 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4d, 0x6f, 0x1b, 0x45, - 0x18, 0xce, 0xc6, 0xf9, 0x70, 0xc6, 0x09, 0x4d, 0x96, 0x08, 0x8c, 0x0f, 0x76, 0xe4, 0x0b, 0xa6, - 0x6a, 0x76, 0x9b, 0x50, 0x50, 0x84, 0xc4, 0xc1, 0x5b, 0x72, 0x00, 0xc5, 0x6d, 0x98, 0x44, 0x15, - 0xaa, 0x38, 0x30, 0xd9, 0x7d, 0xeb, 0x0c, 0xde, 0xdd, 0x59, 0x66, 0xc6, 0xa6, 0xb9, 0x71, 0xe2, - 0x8c, 0x38, 0xf0, 0x0b, 0xf8, 0x1f, 0x1c, 0xc9, 0x09, 0xf5, 0xd8, 0x93, 0x45, 0xcc, 0xbf, 0x88, - 0x38, 0xa0, 0x99, 0x9d, 0x78, 0xd7, 0x5e, 0x9b, 0x36, 0x3d, 0xf4, 0xe6, 0xf7, 0xe3, 0x79, 0xde, - 0xef, 0x59, 0xa3, 0x87, 0xbd, 0x03, 0xe1, 0x50, 0xe6, 0xf6, 0xfa, 0x67, 0xc0, 0x63, 0x90, 0x20, - 0xdc, 0x01, 0xc4, 0x01, 0xe3, 0xae, 0x31, 0x90, 0x84, 0xba, 0x42, 0x32, 0x4e, 0xba, 0xe0, 0x0e, - 0xf6, 0xce, 0x40, 0x92, 0x3d, 0xb7, 0x0b, 0x31, 0x70, 0x22, 0x21, 0x70, 0x12, 0xce, 0x24, 0xb3, - 0x6b, 0xa9, 0xaf, 0x43, 0x12, 0xea, 0x18, 0x5f, 0xc7, 0xf8, 0xd6, 0x76, 0xbb, 0x54, 0x9e, 0xf7, - 0xcf, 0x1c, 0x9f, 0x45, 0x6e, 0x97, 0x75, 0x99, 0xab, 0x21, 0x67, 0xfd, 0x67, 0x5a, 0xd2, 0x82, - 0xfe, 0x95, 0x52, 0xd5, 0x9a, 0xb9, 0xb0, 0x3e, 0xe3, 0x2a, 0xe6, 0x74, 0xb8, 0x5a, 0x27, 0xf3, - 0x81, 0xe7, 0x12, 0x62, 0x41, 0x59, 0x2c, 0x76, 0x49, 0x42, 0x05, 0xf0, 0x01, 0x70, 0x37, 0xe9, - 0x75, 0x95, 0x4d, 0x4c, 0x3a, 0xcc, 0xcb, 0xbe, 0xf6, 0x20, 0xa3, 0x8b, 0x88, 0x7f, 0x4e, 0x63, - 0xe0, 0x17, 0x19, 0x47, 0x04, 0x92, 0xcc, 0x4a, 0xc2, 0x9d, 0x87, 0xe2, 0xfd, 0x58, 0xd2, 0x08, - 0x0a, 0x80, 0x4f, 0x5f, 0x05, 0x10, 0xfe, 0x39, 0x44, 0xa4, 0x80, 0xfb, 0x78, 0x1e, 0xae, 0x2f, - 0x69, 0xe8, 0xd2, 0x58, 0x0a, 0xc9, 0xa7, 0x41, 0xcd, 0x5f, 0x57, 0xd0, 0xfa, 0x49, 0x3a, 0x89, - 0x87, 0x21, 0x11, 0xc2, 0xfe, 0x0e, 0x95, 0x55, 0x25, 0x01, 0x91, 0xa4, 0x6a, 0xed, 0x58, 0xad, - 0xca, 0xfe, 0x7d, 0x27, 0x9b, 0xda, 0x98, 0xd8, 0x49, 0x7a, 0x5d, 0xa5, 0x10, 0x8e, 0xf2, 0x76, - 0x06, 0x7b, 0xce, 0xe3, 0xb3, 0xef, 0xc1, 0x97, 0x1d, 0x90, 0xc4, 0xb3, 0x2f, 0x87, 0x8d, 0x85, - 0xd1, 0xb0, 0x81, 0x32, 0x1d, 0x1e, 0xb3, 0xda, 0x9f, 0xa0, 0x4a, 0xc2, 0xd9, 0x80, 0xaa, 0x66, - 0x03, 0xaf, 0x2e, 0xee, 0x58, 0xad, 0x35, 0xef, 0x5d, 0x03, 0xa9, 0x1c, 0x67, 0x26, 0x9c, 0xf7, - 0xb3, 0x43, 0x84, 0x12, 0xc2, 0x49, 0x04, 0x12, 0xb8, 0xa8, 0x96, 0x76, 0x4a, 0xad, 0xca, 0xfe, - 0x81, 0x33, 0x7f, 0xa1, 0x9c, 0x7c, 0x59, 0xce, 0xf1, 0x18, 0x7a, 0x18, 0x4b, 0x7e, 0x91, 0xa5, - 0x98, 0x19, 0x70, 0x8e, 0xdf, 0xee, 0xa1, 0x0d, 0x0e, 0x7e, 0x48, 0x68, 0x74, 0xcc, 0x42, 0xea, - 0x5f, 0x54, 0x97, 0x74, 0x9a, 0x87, 0xa3, 0x61, 0x63, 0x03, 0xe7, 0x0d, 0xd7, 0xc3, 0xc6, 0xfd, - 0xe2, 0x2a, 0x3a, 0xc7, 0xc0, 0x05, 0x15, 0x12, 0x62, 0xf9, 0x84, 0x85, 0xfd, 0x08, 0x26, 0x30, - 0x78, 0x92, 0xdb, 0x7e, 0x80, 0xd6, 0x23, 0xd6, 0x8f, 0xe5, 0xe3, 0x44, 0xaa, 0x05, 0xac, 0x2e, - 0xef, 0x94, 0x5a, 0x6b, 0xde, 0xe6, 0x68, 0xd8, 0x58, 0xef, 0xe4, 0xf4, 0x78, 0xc2, 0xcb, 0x3e, - 0x42, 0xdb, 0x24, 0x0c, 0xd9, 0x8f, 0x69, 0x80, 0xc3, 0xe7, 0x09, 0xd1, 0xfb, 0x5b, 0x5d, 0xd9, - 0xb1, 0x5a, 0x65, 0xaf, 0x3a, 0x1a, 0x36, 0xb6, 0xdb, 0x33, 0xec, 0x78, 0x26, 0xca, 0xfe, 0x06, - 0x6d, 0x0d, 0xb4, 0xca, 0xa3, 0x71, 0x40, 0xe3, 0x6e, 0x87, 0x05, 0x50, 0x5d, 0xd5, 0x45, 0xdf, - 0x1d, 0x0d, 0x1b, 0x5b, 0x4f, 0xa6, 0x8d, 0xd7, 0xb3, 0x94, 0xb8, 0x48, 0x62, 0xff, 0x80, 0xb6, - 0x74, 0x44, 0x08, 0x4e, 0x59, 0xc2, 0x42, 0xd6, 0xa5, 0x20, 0xaa, 0x65, 0x3d, 0xbf, 0x56, 0x7e, - 0x7e, 0xaa, 0x75, 0x6a, 0x91, 0x8c, 0xd7, 0xc5, 0x09, 0x84, 0xe0, 0x4b, 0xc6, 0x4f, 0x81, 0x47, - 0xde, 0x07, 0x66, 0x5e, 0x5b, 0xed, 0x69, 0x2a, 0x5c, 0x64, 0xaf, 0x7d, 0x8e, 0xee, 0x4c, 0x0d, - 0xdc, 0xde, 0x44, 0xa5, 0x1e, 0x5c, 0xe8, 0x95, 0x5e, 0xc3, 0xea, 0xa7, 0xbd, 0x8d, 0x96, 0x07, - 0x24, 0xec, 0x43, 0xba, 0x81, 0x38, 0x15, 0x3e, 0x5b, 0x3c, 0xb0, 0x9a, 0x7f, 0x58, 0x68, 0x33, - 0xbf, 0x3d, 0x47, 0x54, 0x48, 0xfb, 0xdb, 0xc2, 0x61, 0x38, 0xaf, 0x77, 0x18, 0x0a, 0xad, 0xcf, - 0x62, 0xd3, 0xd4, 0x50, 0xbe, 0xd1, 0xe4, 0x8e, 0xa2, 0x83, 0x96, 0xa9, 0x84, 0x48, 0x54, 0x17, - 0x8b, 0x8d, 0xf9, 0xbf, 0xc5, 0xf6, 0x36, 0x0c, 0xe9, 0xf2, 0x97, 0x0a, 0x8e, 0x53, 0x96, 0xe6, - 0xef, 0x8b, 0x68, 0x33, 0x1d, 0x4e, 0x5b, 0x4a, 0xe2, 0x9f, 0x47, 0x10, 0xcb, 0xb7, 0x70, 0xda, - 0x18, 0x2d, 0x89, 0x04, 0x7c, 0xdd, 0xd1, 0x49, 0xf6, 0x42, 0x11, 0xd3, 0xd9, 0x9d, 0x24, 0xe0, - 0x7b, 0xeb, 0x86, 0x7d, 0x49, 0x49, 0x58, 0x73, 0xd9, 0x4f, 0xd1, 0x8a, 0x90, 0x44, 0xf6, 0xd5, - 0xcd, 0x2b, 0xd6, 0xfd, 0x5b, 0xb1, 0x6a, 0xa4, 0xf7, 0x8e, 0xe1, 0x5d, 0x49, 0x65, 0x6c, 0x18, - 0x9b, 0x7f, 0x5a, 0x68, 0x7b, 0x1a, 0xf2, 0x16, 0x86, 0xfd, 0xf5, 0xe4, 0xb0, 0xef, 0xdd, 0xa6, - 0xa2, 0x39, 0x03, 0x7f, 0x86, 0xde, 0x2b, 0xd4, 0xce, 0xfa, 0xdc, 0x07, 0xf5, 0x4c, 0x24, 0x53, - 0x8f, 0xd1, 0x23, 0x12, 0x41, 0x7a, 0x09, 0xe9, 0x33, 0x71, 0x3c, 0xc3, 0x8e, 0x67, 0xa2, 0x9a, - 0x7f, 0xcd, 0xe8, 0x98, 0x1a, 0x96, 0x7d, 0x0f, 0x95, 0x89, 0xd6, 0x00, 0x37, 0xd4, 0xe3, 0x0e, - 0xb4, 0x8d, 0x1e, 0x8f, 0x3d, 0xf4, 0x50, 0x75, 0x7a, 0x66, 0x55, 0x6e, 0x37, 0x54, 0x8d, 0xcc, - 0x0d, 0x55, 0xcb, 0xd8, 0x30, 0xaa, 0x4c, 0x62, 0x16, 0xa4, 0x45, 0x96, 0x26, 0x33, 0x79, 0x64, - 0xf4, 0x78, 0xec, 0xd1, 0xfc, 0xb7, 0x34, 0xa3, 0x73, 0x7a, 0x3b, 0x72, 0x25, 0x05, 0xba, 0xa4, - 0x72, 0xa1, 0xa4, 0x60, 0x5c, 0x52, 0x60, 0xff, 0x66, 0x21, 0x9b, 0x8c, 0x29, 0x3a, 0x37, 0xdb, - 0x93, 0x8e, 0xf8, 0xab, 0xdb, 0x2f, 0xad, 0xd3, 0x2e, 0x90, 0xa5, 0x9f, 0xae, 0x9a, 0x49, 0xc2, - 0x2e, 0x3a, 0xe0, 0x19, 0x19, 0xd8, 0x14, 0x55, 0x52, 0xed, 0x21, 0xe7, 0x8c, 0x9b, 0x2b, 0xfa, - 0xf0, 0xd5, 0x09, 0x69, 0x77, 0xaf, 0xae, 0x3e, 0xca, 0xed, 0x0c, 0x7f, 0x3d, 0x6c, 0x54, 0x72, - 0x76, 0x9c, 0xe7, 0x56, 0xa1, 0x02, 0xc8, 0x42, 0x2d, 0xbd, 0x41, 0xa8, 0x2f, 0x60, 0x7e, 0xa8, - 0x1c, 0x77, 0xed, 0x10, 0xbd, 0x3f, 0xa7, 0x41, 0xb7, 0x7a, 0xea, 0x7f, 0xb6, 0x50, 0x3e, 0x86, - 0x7d, 0x84, 0x96, 0xd4, 0x7f, 0x2c, 0x73, 0xf4, 0x77, 0x5f, 0xef, 0xe8, 0x4f, 0x69, 0x04, 0xd9, - 0xdb, 0xa5, 0x24, 0xac, 0x59, 0xec, 0x8f, 0xd0, 0x6a, 0x04, 0x42, 0x90, 0xae, 0x89, 0xec, 0xdd, - 0x31, 0x4e, 0xab, 0x9d, 0x54, 0x8d, 0x6f, 0xec, 0xde, 0xee, 0xe5, 0x55, 0x7d, 0xe1, 0xc5, 0x55, - 0x7d, 0xe1, 0xe5, 0x55, 0x7d, 0xe1, 0xa7, 0x51, 0xdd, 0xba, 0x1c, 0xd5, 0xad, 0x17, 0xa3, 0xba, - 0xf5, 0x72, 0x54, 0xb7, 0xfe, 0x1e, 0xd5, 0xad, 0x5f, 0xfe, 0xa9, 0x2f, 0x3c, 0x5d, 0x35, 0x7d, - 0xfb, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xd8, 0xa9, 0x81, 0xd5, 0x8f, 0x0b, 0x00, 0x00, + 0x18, 0xce, 0xc6, 0xf9, 0x70, 0xc6, 0x09, 0x4d, 0x86, 0x08, 0x8c, 0x0f, 0x76, 0xe4, 0x0b, 0xa6, + 0x6a, 0x77, 0x9b, 0xa8, 0xa0, 0x08, 0x89, 0x83, 0xb7, 0xe4, 0x00, 0x8a, 0xdb, 0x30, 0x89, 0x2a, + 0x54, 0x71, 0x60, 0xb2, 0xfb, 0x76, 0xb3, 0x78, 0x77, 0x67, 0x99, 0x19, 0x1b, 0x72, 0xe3, 0xc4, + 0x19, 0x71, 0xe0, 0x17, 0xf0, 0x3f, 0x38, 0x92, 0x13, 0xea, 0xb1, 0x27, 0x8b, 0x2c, 0xff, 0x22, + 0xe2, 0x80, 0x66, 0x76, 0x62, 0xaf, 0xbd, 0x0e, 0x6d, 0x7a, 0xe8, 0xcd, 0xef, 0xc7, 0xf3, 0xbc, + 0xdf, 0xb3, 0x46, 0x8f, 0xfa, 0xfb, 0xc2, 0x0e, 0x99, 0xd3, 0x1f, 0x9c, 0x02, 0x4f, 0x40, 0x82, + 0x70, 0x86, 0x90, 0xf8, 0x8c, 0x3b, 0xc6, 0x40, 0xd3, 0xd0, 0x11, 0x92, 0x71, 0x1a, 0x80, 0x33, + 0xdc, 0x3d, 0x05, 0x49, 0x77, 0x9d, 0x00, 0x12, 0xe0, 0x54, 0x82, 0x6f, 0xa7, 0x9c, 0x49, 0x86, + 0x1b, 0xb9, 0xaf, 0x4d, 0xd3, 0xd0, 0x36, 0xbe, 0xb6, 0xf1, 0x6d, 0xdc, 0x0f, 0x42, 0x79, 0x36, + 0x38, 0xb5, 0x3d, 0x16, 0x3b, 0x01, 0x0b, 0x98, 0xa3, 0x21, 0xa7, 0x83, 0xe7, 0x5a, 0xd2, 0x82, + 0xfe, 0x95, 0x53, 0x35, 0xda, 0x85, 0xb0, 0x1e, 0xe3, 0x2a, 0xe6, 0x6c, 0xb8, 0xc6, 0xc3, 0x89, + 0x4f, 0x4c, 0xbd, 0xb3, 0x30, 0x01, 0x7e, 0xee, 0xa4, 0xfd, 0x40, 0x29, 0x84, 0x13, 0x83, 0xa4, + 0xf3, 0x50, 0xce, 0x4d, 0x28, 0x3e, 0x48, 0x64, 0x18, 0x43, 0x09, 0xf0, 0xc9, 0xab, 0x00, 0xc2, + 0x3b, 0x83, 0x98, 0xce, 0xe2, 0xda, 0xbf, 0xae, 0xa0, 0xf5, 0xe3, 0xbc, 0x0b, 0x8f, 0x22, 0x2a, + 0x04, 0xfe, 0x16, 0x55, 0x55, 0x52, 0x3e, 0x95, 0xb4, 0x6e, 0xed, 0x58, 0x9d, 0xda, 0xde, 0x03, + 0x7b, 0xd2, 0xb1, 0x31, 0xb7, 0x9d, 0xf6, 0x03, 0xa5, 0x10, 0xb6, 0xf2, 0xb6, 0x87, 0xbb, 0xf6, + 0x93, 0xd3, 0xef, 0xc0, 0x93, 0x3d, 0x90, 0xd4, 0xc5, 0x17, 0xa3, 0xd6, 0x42, 0x36, 0x6a, 0xa1, + 0x89, 0x8e, 0x8c, 0x59, 0xf1, 0xc7, 0xa8, 0x96, 0x72, 0x36, 0x0c, 0x45, 0xc8, 0x12, 0xe0, 0xf5, + 0xc5, 0x1d, 0xab, 0xb3, 0xe6, 0xbe, 0x6b, 0x20, 0xb5, 0xa3, 0x89, 0x89, 0x14, 0xfd, 0x70, 0x84, + 0x50, 0x4a, 0x39, 0x8d, 0x41, 0x02, 0x17, 0xf5, 0xca, 0x4e, 0xa5, 0x53, 0xdb, 0xdb, 0xb7, 0x6f, + 0x1e, 0xa6, 0x5d, 0x2c, 0xcb, 0x3e, 0x1a, 0x43, 0x0f, 0x12, 0xc9, 0xcf, 0x27, 0x29, 0x4e, 0x0c, + 0xa4, 0xc0, 0x8f, 0xfb, 0x68, 0x83, 0x83, 0x17, 0xd1, 0x30, 0x3e, 0x62, 0x51, 0xe8, 0x9d, 0xd7, + 0x97, 0x74, 0x9a, 0x07, 0xd9, 0xa8, 0xb5, 0x41, 0x8a, 0x86, 0xab, 0x51, 0xeb, 0x41, 0x79, 0x0d, + 0xec, 0x23, 0xe0, 0x22, 0x14, 0x12, 0x12, 0xf9, 0x94, 0x45, 0x83, 0x18, 0xa6, 0x30, 0x64, 0x9a, + 0x1b, 0x3f, 0x44, 0xeb, 0x31, 0x1b, 0x24, 0xf2, 0x49, 0x2a, 0x43, 0x96, 0x88, 0xfa, 0xf2, 0x4e, + 0xa5, 0xb3, 0xe6, 0x6e, 0x66, 0xa3, 0xd6, 0x7a, 0xaf, 0xa0, 0x27, 0x53, 0x5e, 0xf8, 0x10, 0x6d, + 0xd3, 0x28, 0x62, 0x3f, 0xe4, 0x01, 0x0e, 0x7e, 0x4c, 0x69, 0xa2, 0x5a, 0x55, 0x5f, 0xd9, 0xb1, + 0x3a, 0x55, 0xb7, 0x9e, 0x8d, 0x5a, 0xdb, 0xdd, 0x39, 0x76, 0x32, 0x17, 0x85, 0xbf, 0x46, 0x5b, + 0x43, 0xad, 0x72, 0xc3, 0xc4, 0x0f, 0x93, 0xa0, 0xc7, 0x7c, 0xa8, 0xaf, 0xea, 0xa2, 0xef, 0x66, + 0xa3, 0xd6, 0xd6, 0xd3, 0x59, 0xe3, 0xd5, 0x3c, 0x25, 0x29, 0x93, 0xe0, 0xef, 0xd1, 0x96, 0x8e, + 0x08, 0xfe, 0x09, 0x4b, 0x59, 0xc4, 0x82, 0x10, 0x44, 0xbd, 0xaa, 0xe7, 0xd7, 0x29, 0xce, 0x4f, + 0xb5, 0x4e, 0x2d, 0x92, 0xf1, 0x3a, 0x3f, 0x86, 0x08, 0x3c, 0xc9, 0xf8, 0x09, 0xf0, 0xd8, 0xfd, + 0xc0, 0xcc, 0x6b, 0xab, 0x3b, 0x4b, 0x45, 0xca, 0xec, 0x8d, 0xcf, 0xd0, 0x9d, 0x99, 0x81, 0xe3, + 0x4d, 0x54, 0xe9, 0xc3, 0xb9, 0x5e, 0xe9, 0x35, 0xa2, 0x7e, 0xe2, 0x6d, 0xb4, 0x3c, 0xa4, 0xd1, + 0x00, 0xf2, 0x0d, 0x24, 0xb9, 0xf0, 0xe9, 0xe2, 0xbe, 0xd5, 0xfe, 0xc3, 0x42, 0x9b, 0xc5, 0xed, + 0x39, 0x0c, 0x85, 0xc4, 0xdf, 0x94, 0x0e, 0xc3, 0x7e, 0xbd, 0xc3, 0x50, 0x68, 0x7d, 0x16, 0x9b, + 0xa6, 0x86, 0xea, 0xb5, 0xa6, 0x70, 0x14, 0x3d, 0xb4, 0x1c, 0x4a, 0x88, 0x45, 0x7d, 0xb1, 0xdc, + 0x98, 0xff, 0x5b, 0x6c, 0x77, 0xc3, 0x90, 0x2e, 0x7f, 0xa1, 0xe0, 0x24, 0x67, 0x69, 0xff, 0xbe, + 0x88, 0x36, 0xf3, 0xe1, 0x74, 0xa5, 0xa4, 0xde, 0x59, 0x0c, 0x89, 0x7c, 0x0b, 0xa7, 0x4d, 0xd0, + 0x92, 0x48, 0xc1, 0xd3, 0x1d, 0x9d, 0x66, 0x2f, 0x15, 0x31, 0x9b, 0xdd, 0x71, 0x0a, 0x9e, 0xbb, + 0x6e, 0xd8, 0x97, 0x94, 0x44, 0x34, 0x17, 0x7e, 0x86, 0x56, 0x84, 0xa4, 0x72, 0xa0, 0x6e, 0x5e, + 0xb1, 0xee, 0xdd, 0x8a, 0x55, 0x23, 0xdd, 0x77, 0x0c, 0xef, 0x4a, 0x2e, 0x13, 0xc3, 0xd8, 0xfe, + 0xd3, 0x42, 0xdb, 0xb3, 0x90, 0xb7, 0x30, 0xec, 0xaf, 0xa6, 0x87, 0x7d, 0xef, 0x36, 0x15, 0xdd, + 0x30, 0xf0, 0xe7, 0xe8, 0xbd, 0x52, 0xed, 0x6c, 0xc0, 0x3d, 0x50, 0xcf, 0x44, 0x3a, 0xf3, 0x18, + 0x3d, 0xa6, 0x31, 0xe4, 0x97, 0x90, 0x3f, 0x13, 0x47, 0x73, 0xec, 0x64, 0x2e, 0xaa, 0xfd, 0xd7, + 0x9c, 0x8e, 0xa9, 0x61, 0xe1, 0x7b, 0xa8, 0x4a, 0xb5, 0x06, 0xb8, 0xa1, 0x1e, 0x77, 0xa0, 0x6b, + 0xf4, 0x64, 0xec, 0xa1, 0x87, 0xaa, 0xd3, 0x33, 0xab, 0x72, 0xbb, 0xa1, 0x6a, 0x64, 0x61, 0xa8, + 0x5a, 0x26, 0x86, 0x51, 0x65, 0x92, 0x30, 0x3f, 0x2f, 0xb2, 0x32, 0x9d, 0xc9, 0x63, 0xa3, 0x27, + 0x63, 0x8f, 0xf6, 0xbf, 0x95, 0x39, 0x9d, 0xd3, 0xdb, 0x51, 0x28, 0xc9, 0xd7, 0x25, 0x55, 0x4b, + 0x25, 0xf9, 0xe3, 0x92, 0x7c, 0xfc, 0x9b, 0x85, 0x30, 0x1d, 0x53, 0xf4, 0xae, 0xb7, 0x27, 0x1f, + 0xf1, 0x97, 0xb7, 0x5f, 0x5a, 0xbb, 0x5b, 0x22, 0xcb, 0x3f, 0x5d, 0x0d, 0x93, 0x04, 0x2e, 0x3b, + 0x90, 0x39, 0x19, 0xe0, 0x10, 0xd5, 0x72, 0xed, 0x01, 0xe7, 0x8c, 0x9b, 0x2b, 0xfa, 0xf0, 0xd5, + 0x09, 0x69, 0x77, 0xb7, 0xa9, 0x3e, 0xca, 0xdd, 0x09, 0xfe, 0x6a, 0xd4, 0xaa, 0x15, 0xec, 0xa4, + 0xc8, 0xad, 0x42, 0xf9, 0x30, 0x09, 0xb5, 0xf4, 0x06, 0xa1, 0x3e, 0x87, 0x9b, 0x43, 0x15, 0xb8, + 0x1b, 0x07, 0xe8, 0xfd, 0x1b, 0x1a, 0x74, 0xab, 0xa7, 0xfe, 0x67, 0x0b, 0x15, 0x63, 0xe0, 0x43, + 0xb4, 0xa4, 0xfe, 0x2e, 0x99, 0xa3, 0xbf, 0xfb, 0x7a, 0x47, 0x7f, 0x12, 0xc6, 0x30, 0x79, 0xbb, + 0x94, 0x44, 0x34, 0x0b, 0xfe, 0x08, 0xad, 0xc6, 0x20, 0x04, 0x0d, 0x4c, 0x64, 0xf7, 0x8e, 0x71, + 0x5a, 0xed, 0xe5, 0x6a, 0x72, 0x6d, 0x77, 0xef, 0x5f, 0x5c, 0x36, 0x17, 0x5e, 0x5c, 0x36, 0x17, + 0x5e, 0x5e, 0x36, 0x17, 0x7e, 0xca, 0x9a, 0xd6, 0x45, 0xd6, 0xb4, 0x5e, 0x64, 0x4d, 0xeb, 0x65, + 0xd6, 0xb4, 0xfe, 0xce, 0x9a, 0xd6, 0x2f, 0xff, 0x34, 0x17, 0x9e, 0xad, 0x9a, 0xbe, 0xfd, 0x17, + 0x00, 0x00, 0xff, 0xff, 0xb4, 0x63, 0x7e, 0xa7, 0x0b, 0x0b, 0x00, 0x00, } diff --git a/vendor/k8s.io/api/storage/v1beta1/generated.proto b/vendor/k8s.io/api/storage/v1beta1/generated.proto index 32032b1a32..359b68634d 100644 --- a/vendor/k8s.io/api/storage/v1beta1/generated.proto +++ b/vendor/k8s.io/api/storage/v1beta1/generated.proto @@ -22,11 +22,9 @@ syntax = 'proto2'; package k8s.io.api.storage.v1beta1; import "k8s.io/api/core/v1/generated.proto"; -import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto"; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1beta1"; diff --git a/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go b/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go index 8096dba9be..7c7c8fde5d 100644 --- a/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go +++ b/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go @@ -39,8 +39,12 @@ func (in *StorageClass) DeepCopyInto(out *StorageClass) { } if in.ReclaimPolicy != nil { in, out := &in.ReclaimPolicy, &out.ReclaimPolicy - *out = new(v1.PersistentVolumeReclaimPolicy) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(v1.PersistentVolumeReclaimPolicy) + **out = **in + } } if in.MountOptions != nil { in, out := &in.MountOptions, &out.MountOptions @@ -49,13 +53,21 @@ func (in *StorageClass) DeepCopyInto(out *StorageClass) { } if in.AllowVolumeExpansion != nil { in, out := &in.AllowVolumeExpansion, &out.AllowVolumeExpansion - *out = new(bool) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(bool) + **out = **in + } } if in.VolumeBindingMode != nil { in, out := &in.VolumeBindingMode, &out.VolumeBindingMode - *out = new(VolumeBindingMode) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(VolumeBindingMode) + **out = **in + } } if in.AllowedTopologies != nil { in, out := &in.AllowedTopologies, &out.AllowedTopologies @@ -184,8 +196,12 @@ func (in *VolumeAttachmentSource) DeepCopyInto(out *VolumeAttachmentSource) { *out = *in if in.PersistentVolumeName != nil { in, out := &in.PersistentVolumeName, &out.PersistentVolumeName - *out = new(string) - **out = **in + if *in == nil { + *out = nil + } else { + *out = new(string) + **out = **in + } } return } @@ -229,13 +245,21 @@ func (in *VolumeAttachmentStatus) DeepCopyInto(out *VolumeAttachmentStatus) { } if in.AttachError != nil { in, out := &in.AttachError, &out.AttachError - *out = new(VolumeError) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(VolumeError) + (*in).DeepCopyInto(*out) + } } if in.DetachError != nil { in, out := &in.DetachError, &out.DetachError - *out = new(VolumeError) - (*in).DeepCopyInto(*out) + if *in == nil { + *out = nil + } else { + *out = new(VolumeError) + (*in).DeepCopyInto(*out) + } } return } diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go index 083c82256b..802f22a63f 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.pb.go @@ -19,13 +19,13 @@ limitations under the License. // DO NOT EDIT! /* - Package resource is a generated protocol buffer package. +Package resource is a generated protocol buffer package. - It is generated from these files: - k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto +It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto - It has these top-level messages: - Quantity +It has these top-level messages: + Quantity */ package resource @@ -57,21 +57,20 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 255 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x8f, 0xa1, 0x4e, 0x03, 0x41, - 0x10, 0x86, 0x77, 0x0d, 0x29, 0x95, 0x0d, 0x21, 0xa4, 0x62, 0xaf, 0x21, 0x08, 0x0c, 0x3b, 0x02, - 0xd3, 0x20, 0xf1, 0x08, 0x90, 0xb8, 0xbb, 0xeb, 0xb0, 0xdd, 0x1c, 0xdd, 0xbd, 0xcc, 0xce, 0x92, - 0xd4, 0x55, 0x22, 0x2b, 0x91, 0xbd, 0xb7, 0xa9, 0xac, 0xac, 0x40, 0x70, 0xcb, 0x8b, 0x90, 0x5e, - 0xdb, 0x84, 0x90, 0xe0, 0xe6, 0xfb, 0x27, 0xdf, 0xe4, 0x9f, 0xfe, 0x43, 0x35, 0x0e, 0xda, 0x7a, - 0xa8, 0x62, 0x81, 0xe4, 0x90, 0x31, 0xc0, 0x1b, 0xba, 0x89, 0x27, 0x38, 0x2c, 0xf2, 0xda, 0xce, - 0xf2, 0x72, 0x6a, 0x1d, 0xd2, 0x1c, 0xea, 0xca, 0xec, 0x02, 0x20, 0x0c, 0x3e, 0x52, 0x89, 0x60, - 0xd0, 0x21, 0xe5, 0x8c, 0x13, 0x5d, 0x93, 0x67, 0x3f, 0xb8, 0xda, 0x5b, 0xfa, 0xb7, 0xa5, 0xeb, - 0xca, 0xec, 0x02, 0x7d, 0xb4, 0x86, 0x37, 0xc6, 0xf2, 0x34, 0x16, 0xba, 0xf4, 0x33, 0x30, 0xde, - 0x78, 0xe8, 0xe4, 0x22, 0xbe, 0x74, 0xd4, 0x41, 0x37, 0xed, 0x8f, 0x0e, 0x6f, 0xff, 0xab, 0x12, - 0xd9, 0xbe, 0x82, 0x75, 0x1c, 0x98, 0xfe, 0x36, 0xb9, 0x1c, 0xf7, 0x7b, 0x8f, 0x31, 0x77, 0x6c, - 0x79, 0x3e, 0x38, 0xef, 0x9f, 0x04, 0x26, 0xeb, 0xcc, 0x85, 0x1c, 0xc9, 0xeb, 0xd3, 0xa7, 0x03, - 0xdd, 0x9d, 0x7d, 0xac, 0x32, 0xf1, 0xde, 0x64, 0x62, 0xd9, 0x64, 0x62, 0xd5, 0x64, 0x62, 0xf1, - 0x39, 0x12, 0xf7, 0x7a, 0xdd, 0x2a, 0xb1, 0x69, 0x95, 0xd8, 0xb6, 0x4a, 0x2c, 0x92, 0x92, 0xeb, - 0xa4, 0xe4, 0x26, 0x29, 0xb9, 0x4d, 0x4a, 0x7e, 0x25, 0x25, 0x97, 0xdf, 0x4a, 0x3c, 0xf7, 0x8e, - 0xdf, 0xfc, 0x04, 0x00, 0x00, 0xff, 0xff, 0x5f, 0x5e, 0xda, 0xf9, 0x43, 0x01, 0x00, 0x00, + // 237 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0x8e, 0xb1, 0x4e, 0xc3, 0x30, + 0x10, 0x40, 0xcf, 0x0b, 0x2a, 0x19, 0x2b, 0x84, 0x10, 0xc3, 0xa5, 0x42, 0x0c, 0x2c, 0xd8, 0x6b, + 0xc5, 0xc8, 0xce, 0x00, 0x23, 0x5b, 0x92, 0x1e, 0xae, 0x15, 0xd5, 0x8e, 0x2e, 0x36, 0x52, 0xb7, + 0x8e, 0x8c, 0x1d, 0x19, 0x9b, 0xbf, 0xe9, 0xd8, 0xb1, 0x03, 0x03, 0x31, 0x3f, 0x82, 0xea, 0x36, + 0x52, 0xb7, 0x7b, 0xef, 0xf4, 0x4e, 0x97, 0xbd, 0xd4, 0xd3, 0x56, 0x1a, 0xa7, 0xea, 0x50, 0x12, + 0x5b, 0xf2, 0xd4, 0xaa, 0x4f, 0xb2, 0x33, 0xc7, 0xea, 0xb4, 0x28, 0x1a, 0xb3, 0x28, 0xaa, 0xb9, + 0xb1, 0xc4, 0x4b, 0xd5, 0xd4, 0xfa, 0x20, 0x14, 0x53, 0xeb, 0x02, 0x57, 0xa4, 0x34, 0x59, 0xe2, + 0xc2, 0xd3, 0x4c, 0x36, 0xec, 0xbc, 0x1b, 0xdf, 0x1f, 0x2b, 0x79, 0x5e, 0xc9, 0xa6, 0xd6, 0x07, + 0x21, 0x87, 0xea, 0xf6, 0x51, 0x1b, 0x3f, 0x0f, 0xa5, 0xac, 0xdc, 0x42, 0x69, 0xa7, 0x9d, 0x4a, + 0x71, 0x19, 0x3e, 0x12, 0x25, 0x48, 0xd3, 0xf1, 0xe8, 0xdd, 0x34, 0x1b, 0xbd, 0x86, 0xc2, 0x7a, + 0xe3, 0x97, 0xe3, 0xeb, 0xec, 0xa2, 0xf5, 0x6c, 0xac, 0xbe, 0x11, 0x13, 0xf1, 0x70, 0xf9, 0x76, + 0xa2, 0xa7, 0xab, 0xef, 0x4d, 0x0e, 0x5f, 0x5d, 0x0e, 0xeb, 0x2e, 0x87, 0x4d, 0x97, 0xc3, 0xea, + 0x67, 0x02, 0xcf, 0x72, 0xdb, 0x23, 0xec, 0x7a, 0x84, 0x7d, 0x8f, 0xb0, 0x8a, 0x28, 0xb6, 0x11, + 0xc5, 0x2e, 0xa2, 0xd8, 0x47, 0x14, 0xbf, 0x11, 0xc5, 0xfa, 0x0f, 0xe1, 0x7d, 0x34, 0x3c, 0xf6, + 0x1f, 0x00, 0x00, 0xff, 0xff, 0x3c, 0x08, 0x88, 0x49, 0x0e, 0x01, 0x00, 0x00, } diff --git a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto index 31a46a6d30..2c0aaa45b5 100644 --- a/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto @@ -21,8 +21,6 @@ syntax = 'proto2'; package k8s.io.apimachinery.pkg.api.resource; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; - // Package-wide variables from generator "generated". option go_package = "resource"; diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go index febace5005..d987058eff 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.pb.go @@ -7804,158 +7804,157 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 2435 bytes of a gzipped FileDescriptorProto + // 2422 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4d, 0x6c, 0x23, 0x49, 0x15, 0x4e, 0xdb, 0xb1, 0x63, 0x3f, 0xc7, 0xf9, 0xa9, 0xcd, 0x80, 0x37, 0x02, 0x3b, 0xdb, 0x8b, - 0x56, 0x59, 0x98, 0xb5, 0x49, 0x16, 0x56, 0xc3, 0x00, 0x03, 0xe9, 0x38, 0x33, 0x8a, 0x76, 0x32, - 0x63, 0x55, 0x76, 0x06, 0x31, 0x8c, 0x10, 0x9d, 0x76, 0xc5, 0x69, 0xd2, 0xee, 0xf6, 0x56, 0x95, - 0x33, 0x09, 0x1c, 0xd8, 0x03, 0x48, 0x1c, 0x10, 0x9a, 0x23, 0x27, 0xb4, 0x23, 0xb8, 0x70, 0xe5, - 0xc4, 0x05, 0x4e, 0x48, 0xcc, 0x71, 0x24, 0x2e, 0x7b, 0x40, 0xd6, 0x8e, 0xf7, 0xc0, 0x09, 0x71, - 0xcf, 0x09, 0x55, 0x75, 0xf5, 0x9f, 0x1d, 0x4f, 0xda, 0x3b, 0x0b, 0xe2, 0x14, 0xf7, 0xfb, 0xf9, - 0xde, 0xab, 0x57, 0xaf, 0x5e, 0xbd, 0x7a, 0x81, 0xbd, 0xe3, 0x6b, 0xac, 0x6e, 0x7b, 0x8d, 0xe3, - 0xfe, 0x01, 0xa1, 0x2e, 0xe1, 0x84, 0x35, 0x4e, 0x88, 0xdb, 0xf6, 0x68, 0x43, 0x31, 0xcc, 0x9e, - 0xdd, 0x35, 0xad, 0x23, 0xdb, 0x25, 0xf4, 0xac, 0xd1, 0x3b, 0xee, 0x08, 0x02, 0x6b, 0x74, 0x09, - 0x37, 0x1b, 0x27, 0x1b, 0x8d, 0x0e, 0x71, 0x09, 0x35, 0x39, 0x69, 0xd7, 0x7b, 0xd4, 0xe3, 0x1e, - 0xfa, 0x92, 0xaf, 0x55, 0x8f, 0x6b, 0xd5, 0x7b, 0xc7, 0x1d, 0x41, 0x60, 0x75, 0xa1, 0x55, 0x3f, - 0xd9, 0x58, 0x7d, 0xab, 0x63, 0xf3, 0xa3, 0xfe, 0x41, 0xdd, 0xf2, 0xba, 0x8d, 0x8e, 0xd7, 0xf1, - 0x1a, 0x52, 0xf9, 0xa0, 0x7f, 0x28, 0xbf, 0xe4, 0x87, 0xfc, 0xe5, 0x83, 0xae, 0x4e, 0x74, 0x85, - 0xf6, 0x5d, 0x6e, 0x77, 0xc9, 0xa8, 0x17, 0xab, 0xef, 0x5c, 0xa6, 0xc0, 0xac, 0x23, 0xd2, 0x35, - 0xc7, 0xf4, 0xde, 0x9e, 0xa4, 0xd7, 0xe7, 0xb6, 0xd3, 0xb0, 0x5d, 0xce, 0x38, 0x1d, 0x55, 0xd2, - 0xff, 0x96, 0x85, 0xc2, 0x56, 0x6b, 0xf7, 0x16, 0xf5, 0xfa, 0x3d, 0xb4, 0x06, 0xb3, 0xae, 0xd9, - 0x25, 0x15, 0x6d, 0x4d, 0x5b, 0x2f, 0x1a, 0xf3, 0x4f, 0x07, 0xb5, 0x99, 0xe1, 0xa0, 0x36, 0x7b, - 0xc7, 0xec, 0x12, 0x2c, 0x39, 0xc8, 0x81, 0xc2, 0x09, 0xa1, 0xcc, 0xf6, 0x5c, 0x56, 0xc9, 0xac, - 0x65, 0xd7, 0x4b, 0x9b, 0x37, 0xea, 0x69, 0x82, 0x56, 0x97, 0x06, 0xee, 0xfb, 0xaa, 0x37, 0x3d, - 0xda, 0xb4, 0x99, 0xe5, 0x9d, 0x10, 0x7a, 0x66, 0x2c, 0x29, 0x2b, 0x05, 0xc5, 0x64, 0x38, 0xb4, - 0x80, 0x7e, 0xae, 0xc1, 0x52, 0x8f, 0x92, 0x43, 0x42, 0x29, 0x69, 0x2b, 0x7e, 0x25, 0xbb, 0xa6, - 0x7d, 0x06, 0x66, 0x2b, 0xca, 0xec, 0x52, 0x6b, 0x04, 0x1f, 0x8f, 0x59, 0x44, 0xbf, 0xd3, 0x60, - 0x95, 0x11, 0x7a, 0x42, 0xe8, 0x56, 0xbb, 0x4d, 0x09, 0x63, 0xc6, 0xd9, 0xb6, 0x63, 0x13, 0x97, - 0x6f, 0xef, 0x36, 0x31, 0xab, 0xcc, 0xca, 0x38, 0x7c, 0x27, 0x9d, 0x43, 0xfb, 0x93, 0x70, 0x0c, - 0x5d, 0x79, 0xb4, 0x3a, 0x51, 0x84, 0xe1, 0x17, 0xb8, 0xa1, 0x1f, 0xc2, 0x7c, 0xb0, 0x91, 0xb7, - 0x6d, 0xc6, 0xd1, 0x7d, 0xc8, 0x77, 0xc4, 0x07, 0xab, 0x68, 0xd2, 0xc1, 0x7a, 0x3a, 0x07, 0x03, - 0x0c, 0x63, 0x41, 0xf9, 0x93, 0x97, 0x9f, 0x0c, 0x2b, 0x34, 0xfd, 0xcf, 0x59, 0x28, 0x6d, 0xb5, - 0x76, 0x31, 0x61, 0x5e, 0x9f, 0x5a, 0x24, 0x45, 0xd2, 0x6c, 0x02, 0x88, 0xbf, 0xac, 0x67, 0x5a, - 0xa4, 0x5d, 0xc9, 0xac, 0x69, 0xeb, 0x05, 0x03, 0x29, 0x39, 0xb8, 0x13, 0x72, 0x70, 0x4c, 0x4a, - 0xa0, 0x1e, 0xdb, 0x6e, 0x5b, 0xee, 0x76, 0x0c, 0xf5, 0x5d, 0xdb, 0x6d, 0x63, 0xc9, 0x41, 0xb7, - 0x21, 0x77, 0x42, 0xe8, 0x81, 0x88, 0xbf, 0x48, 0x88, 0xaf, 0xa4, 0x5b, 0xde, 0x7d, 0xa1, 0x62, - 0x14, 0x87, 0x83, 0x5a, 0x4e, 0xfe, 0xc4, 0x3e, 0x08, 0xaa, 0x03, 0xb0, 0x23, 0x8f, 0x72, 0xe9, - 0x4e, 0x25, 0xb7, 0x96, 0x5d, 0x2f, 0x1a, 0x0b, 0xc2, 0xbf, 0xfd, 0x90, 0x8a, 0x63, 0x12, 0xe8, - 0x1a, 0xcc, 0x33, 0xdb, 0xed, 0xf4, 0x1d, 0x93, 0x0a, 0x42, 0x25, 0x2f, 0xfd, 0x5c, 0x51, 0x7e, - 0xce, 0xef, 0xc7, 0x78, 0x38, 0x21, 0x29, 0x2c, 0x59, 0x26, 0x27, 0x1d, 0x8f, 0xda, 0x84, 0x55, - 0xe6, 0x22, 0x4b, 0xdb, 0x21, 0x15, 0xc7, 0x24, 0xd0, 0xeb, 0x90, 0x93, 0x91, 0xaf, 0x14, 0xa4, - 0x89, 0xb2, 0x32, 0x91, 0x93, 0xdb, 0x82, 0x7d, 0x1e, 0x7a, 0x13, 0xe6, 0xd4, 0xa9, 0xa9, 0x14, - 0xa5, 0xd8, 0xa2, 0x12, 0x9b, 0x0b, 0xd2, 0x3a, 0xe0, 0xeb, 0x7f, 0xd4, 0x60, 0x31, 0xb6, 0x7f, - 0x32, 0x57, 0xae, 0xc1, 0x7c, 0x27, 0x76, 0x52, 0xd4, 0x5e, 0x86, 0xab, 0x89, 0x9f, 0x22, 0x9c, - 0x90, 0x44, 0x04, 0x8a, 0x54, 0x21, 0x05, 0x15, 0x61, 0x23, 0x75, 0xa2, 0x05, 0x3e, 0x44, 0x96, - 0x62, 0x44, 0x86, 0x23, 0x64, 0xfd, 0x9f, 0x9a, 0x4c, 0xba, 0xa0, 0x46, 0xa0, 0xf5, 0x58, 0x1d, - 0xd2, 0x64, 0x08, 0xe7, 0x27, 0xd4, 0x90, 0x4b, 0x0e, 0x6f, 0xe6, 0xff, 0xe2, 0xf0, 0x5e, 0x2f, - 0xfc, 0xe6, 0xc3, 0xda, 0xcc, 0x07, 0xff, 0x58, 0x9b, 0xd1, 0x3f, 0xc9, 0x40, 0xb9, 0x49, 0x1c, - 0xc2, 0xc9, 0xdd, 0x1e, 0x97, 0x2b, 0xb8, 0x09, 0xa8, 0x43, 0x4d, 0x8b, 0xb4, 0x08, 0xb5, 0xbd, - 0xf6, 0x3e, 0xb1, 0x3c, 0xb7, 0xcd, 0xe4, 0x16, 0x65, 0x8d, 0xcf, 0x0d, 0x07, 0x35, 0x74, 0x6b, - 0x8c, 0x8b, 0x2f, 0xd0, 0x40, 0x0e, 0x94, 0x7b, 0x54, 0xfe, 0xb6, 0xb9, 0x2a, 0xe0, 0xe2, 0xe0, - 0xbc, 0x9d, 0x6e, 0xed, 0xad, 0xb8, 0xaa, 0xb1, 0x3c, 0x1c, 0xd4, 0xca, 0x09, 0x12, 0x4e, 0x82, - 0xa3, 0xef, 0xc2, 0x92, 0x47, 0x7b, 0x47, 0xa6, 0xdb, 0x24, 0x3d, 0xe2, 0xb6, 0x89, 0xcb, 0x99, - 0x3c, 0xcc, 0x05, 0x63, 0x45, 0x94, 0xdd, 0xbb, 0x23, 0x3c, 0x3c, 0x26, 0x8d, 0x1e, 0xc0, 0x72, - 0x8f, 0x7a, 0x3d, 0xb3, 0x63, 0x0a, 0xc4, 0x96, 0xe7, 0xd8, 0xd6, 0x99, 0x3c, 0xec, 0x45, 0xe3, - 0xea, 0x70, 0x50, 0x5b, 0x6e, 0x8d, 0x32, 0xcf, 0x07, 0xb5, 0x57, 0x64, 0xe8, 0x04, 0x25, 0x62, - 0xe2, 0x71, 0x18, 0x7d, 0x17, 0x0a, 0xcd, 0x3e, 0x95, 0x14, 0xf4, 0x6d, 0x28, 0xb4, 0xd5, 0x6f, - 0x15, 0xd5, 0xd7, 0x82, 0x3b, 0x29, 0x90, 0x39, 0x1f, 0xd4, 0xca, 0xe2, 0xea, 0xad, 0x07, 0x04, - 0x1c, 0xaa, 0xe8, 0x0f, 0xa1, 0xbc, 0x73, 0xda, 0xf3, 0x28, 0x0f, 0xf6, 0xeb, 0x0d, 0xc8, 0x13, - 0x49, 0x90, 0x68, 0x85, 0xa8, 0x90, 0xfa, 0x62, 0x58, 0x71, 0xc5, 0xc1, 0x26, 0xa7, 0xa6, 0xc5, - 0x55, 0x45, 0x0c, 0x0f, 0xf6, 0x8e, 0x20, 0x62, 0x9f, 0xa7, 0x3f, 0xd1, 0x00, 0x6e, 0x91, 0x10, - 0x7b, 0x0b, 0x16, 0x83, 0x43, 0x91, 0x3c, 0xab, 0x9f, 0x57, 0xda, 0x8b, 0x38, 0xc9, 0xc6, 0xa3, - 0xf2, 0xa8, 0x05, 0x2b, 0xb6, 0x6b, 0x39, 0xfd, 0x36, 0xb9, 0xe7, 0xda, 0xae, 0xcd, 0x6d, 0xd3, - 0xb1, 0x7f, 0x12, 0xd6, 0xe5, 0x2f, 0x28, 0x9c, 0x95, 0xdd, 0x0b, 0x64, 0xf0, 0x85, 0x9a, 0xfa, - 0x43, 0x28, 0xca, 0x0a, 0x21, 0x8a, 0x73, 0x54, 0xae, 0xb4, 0x17, 0x94, 0xab, 0xa0, 0xba, 0x67, - 0x26, 0x55, 0xf7, 0xd8, 0x81, 0x70, 0xa0, 0xec, 0xeb, 0x06, 0x17, 0x4e, 0x2a, 0x0b, 0x57, 0xa1, - 0x10, 0x2c, 0x5c, 0x59, 0x09, 0x1b, 0x8d, 0x00, 0x08, 0x87, 0x12, 0x31, 0x6b, 0x47, 0x90, 0xa8, - 0x76, 0xe9, 0x8c, 0xc5, 0xaa, 0x6f, 0xe6, 0xc5, 0xd5, 0x37, 0x66, 0xe9, 0x67, 0x50, 0x99, 0xd4, - 0x9d, 0xbc, 0x44, 0x3d, 0x4e, 0xef, 0x8a, 0xfe, 0x6b, 0x0d, 0x96, 0xe2, 0x48, 0xe9, 0xb7, 0x2f, - 0xbd, 0x91, 0xcb, 0xef, 0xf1, 0x58, 0x44, 0x7e, 0xab, 0xc1, 0x4a, 0x62, 0x69, 0x53, 0xed, 0xf8, - 0x14, 0x4e, 0xc5, 0x93, 0x23, 0x3b, 0x45, 0x72, 0x34, 0xa0, 0xb4, 0x1b, 0xe6, 0x3d, 0xbd, 0xbc, - 0xf3, 0xd1, 0xff, 0xa2, 0xc1, 0x7c, 0x4c, 0x83, 0xa1, 0x87, 0x30, 0x27, 0xea, 0x9b, 0xed, 0x76, - 0x54, 0x57, 0x96, 0xf2, 0xb2, 0x8c, 0x81, 0x44, 0xeb, 0x6a, 0xf9, 0x48, 0x38, 0x80, 0x44, 0x2d, - 0xc8, 0x53, 0xc2, 0xfa, 0x0e, 0x57, 0xa5, 0xfd, 0x6a, 0xca, 0x6b, 0x8d, 0x9b, 0xbc, 0xcf, 0x0c, - 0x10, 0x35, 0x0a, 0x4b, 0x7d, 0xac, 0x70, 0xf4, 0xbf, 0x67, 0xa0, 0x7c, 0xdb, 0x3c, 0x20, 0xce, - 0x3e, 0x71, 0x88, 0xc5, 0x3d, 0x8a, 0x7e, 0x0a, 0xa5, 0xae, 0xc9, 0xad, 0x23, 0x49, 0x0d, 0x7a, - 0xcb, 0x66, 0x3a, 0x43, 0x09, 0xa4, 0xfa, 0x5e, 0x04, 0xb3, 0xe3, 0x72, 0x7a, 0x66, 0xbc, 0xa2, - 0x16, 0x56, 0x8a, 0x71, 0x70, 0xdc, 0x9a, 0x7c, 0x10, 0xc8, 0xef, 0x9d, 0xd3, 0x9e, 0xb8, 0x44, - 0xa7, 0x7f, 0x87, 0x24, 0x5c, 0xc0, 0xe4, 0xfd, 0xbe, 0x4d, 0x49, 0x97, 0xb8, 0x3c, 0x7a, 0x10, - 0xec, 0x8d, 0xe0, 0xe3, 0x31, 0x8b, 0xab, 0x37, 0x60, 0x69, 0xd4, 0x79, 0xb4, 0x04, 0xd9, 0x63, - 0x72, 0xe6, 0xe7, 0x02, 0x16, 0x3f, 0xd1, 0x0a, 0xe4, 0x4e, 0x4c, 0xa7, 0xaf, 0xea, 0x0f, 0xf6, - 0x3f, 0xae, 0x67, 0xae, 0x69, 0xfa, 0xef, 0x35, 0xa8, 0x4c, 0x72, 0x04, 0x7d, 0x31, 0x06, 0x64, - 0x94, 0x94, 0x57, 0xd9, 0x77, 0xc9, 0x99, 0x8f, 0xba, 0x03, 0x05, 0xaf, 0x27, 0x9e, 0x70, 0x1e, - 0x55, 0x79, 0xfe, 0x66, 0x90, 0xbb, 0x77, 0x15, 0xfd, 0x7c, 0x50, 0xbb, 0x92, 0x80, 0x0f, 0x18, - 0x38, 0x54, 0x45, 0x3a, 0xe4, 0xa5, 0x3f, 0xe2, 0x52, 0x16, 0xed, 0x93, 0xdc, 0xfc, 0xfb, 0x92, - 0x82, 0x15, 0x47, 0xff, 0x93, 0x06, 0xb3, 0xb2, 0x3d, 0x7c, 0x08, 0x05, 0x11, 0xbf, 0xb6, 0xc9, - 0x4d, 0xe9, 0x57, 0xea, 0xc7, 0x84, 0xd0, 0xde, 0x23, 0xdc, 0x8c, 0xce, 0x57, 0x40, 0xc1, 0x21, - 0x22, 0xc2, 0x90, 0xb3, 0x39, 0xe9, 0x06, 0x1b, 0xf9, 0xd6, 0x44, 0x68, 0xf5, 0xfe, 0xad, 0x63, - 0xf3, 0xd1, 0xce, 0x29, 0x27, 0xae, 0xd8, 0x8c, 0xa8, 0x18, 0xec, 0x0a, 0x0c, 0xec, 0x43, 0xe9, - 0x7f, 0xd0, 0x20, 0x34, 0x25, 0x8e, 0x3b, 0x23, 0xce, 0xe1, 0x6d, 0xdb, 0x3d, 0x56, 0x61, 0x0d, - 0xdd, 0xd9, 0x57, 0x74, 0x1c, 0x4a, 0x5c, 0x74, 0xc5, 0x66, 0xa6, 0xbc, 0x62, 0xaf, 0x42, 0xc1, - 0xf2, 0x5c, 0x6e, 0xbb, 0xfd, 0xb1, 0xfa, 0xb2, 0xad, 0xe8, 0x38, 0x94, 0xd0, 0x9f, 0x65, 0xa1, - 0x24, 0x7c, 0x0d, 0xee, 0xf8, 0x6f, 0x42, 0xd9, 0x89, 0xef, 0x9e, 0xf2, 0xf9, 0x8a, 0x82, 0x48, - 0x9e, 0x47, 0x9c, 0x94, 0x15, 0xca, 0x87, 0x36, 0x71, 0xda, 0xa1, 0x72, 0x26, 0xa9, 0x7c, 0x33, - 0xce, 0xc4, 0x49, 0x59, 0x51, 0x67, 0x1f, 0x89, 0xbc, 0x56, 0x8d, 0x5a, 0x18, 0xda, 0xef, 0x09, - 0x22, 0xf6, 0x79, 0x17, 0xc5, 0x67, 0x76, 0xca, 0xf8, 0x5c, 0x87, 0x05, 0xb1, 0x91, 0x5e, 0x9f, - 0x07, 0xdd, 0x6c, 0x4e, 0xf6, 0x5d, 0x68, 0x38, 0xa8, 0x2d, 0xbc, 0x97, 0xe0, 0xe0, 0x11, 0xc9, - 0x89, 0xed, 0x4b, 0xfe, 0xd3, 0xb6, 0x2f, 0x62, 0xd5, 0x8e, 0xdd, 0xb5, 0x79, 0x65, 0x4e, 0x3a, - 0x11, 0xae, 0xfa, 0xb6, 0x20, 0x62, 0x9f, 0x97, 0xd8, 0xd2, 0xc2, 0xa5, 0x5b, 0xfa, 0x3e, 0x14, - 0xf7, 0x6c, 0x8b, 0x7a, 0x62, 0x2d, 0xe2, 0x62, 0x62, 0x89, 0xa6, 0x3d, 0x2c, 0xe0, 0xc1, 0x1a, - 0x03, 0xbe, 0x70, 0xc5, 0x35, 0x5d, 0xcf, 0x6f, 0xcd, 0x73, 0x91, 0x2b, 0x77, 0x04, 0x11, 0xfb, - 0xbc, 0xeb, 0x2b, 0xe2, 0x3e, 0xfa, 0xe5, 0x93, 0xda, 0xcc, 0xe3, 0x27, 0xb5, 0x99, 0x0f, 0x9f, - 0xa8, 0xbb, 0xe9, 0x5f, 0x00, 0x70, 0xf7, 0xe0, 0xc7, 0xc4, 0xf2, 0x73, 0xfe, 0xf2, 0x57, 0xb9, - 0xe8, 0x31, 0xd4, 0x30, 0x48, 0xbe, 0x60, 0x33, 0x23, 0x3d, 0x46, 0x8c, 0x87, 0x13, 0x92, 0xa8, - 0x01, 0xc5, 0xf0, 0xa5, 0xae, 0xf2, 0x7b, 0x59, 0xa9, 0x15, 0xc3, 0xe7, 0x3c, 0x8e, 0x64, 0x12, - 0x07, 0x70, 0xf6, 0xd2, 0x03, 0x68, 0x40, 0xb6, 0x6f, 0xb7, 0x65, 0x4a, 0x14, 0x8d, 0xaf, 0x06, - 0x05, 0xf0, 0xde, 0x6e, 0xf3, 0x7c, 0x50, 0x7b, 0x6d, 0xd2, 0x8c, 0x8b, 0x9f, 0xf5, 0x08, 0xab, - 0xdf, 0xdb, 0x6d, 0x62, 0xa1, 0x7c, 0x51, 0x92, 0xe6, 0xa7, 0x4c, 0xd2, 0x4d, 0x00, 0xb5, 0x6a, - 0xa1, 0xed, 0xe7, 0x46, 0x38, 0xb5, 0xb8, 0x15, 0x72, 0x70, 0x4c, 0x0a, 0x31, 0x58, 0xb6, 0x28, - 0x91, 0xbf, 0xc5, 0xd6, 0x33, 0x6e, 0x76, 0xfd, 0x77, 0x7b, 0x69, 0xf3, 0xcb, 0xe9, 0x2a, 0xa6, - 0x50, 0x33, 0x5e, 0x55, 0x66, 0x96, 0xb7, 0x47, 0xc1, 0xf0, 0x38, 0x3e, 0xf2, 0x60, 0xb9, 0xad, - 0x5e, 0x3d, 0x91, 0xd1, 0xe2, 0xd4, 0x46, 0xaf, 0x08, 0x83, 0xcd, 0x51, 0x20, 0x3c, 0x8e, 0x8d, - 0x7e, 0x08, 0xab, 0x01, 0x71, 0xfc, 0xe9, 0x59, 0x01, 0x19, 0xa9, 0xaa, 0x78, 0x0c, 0x37, 0x27, - 0x4a, 0xe1, 0x17, 0x20, 0xa0, 0x36, 0xe4, 0x1d, 0xbf, 0xbb, 0x28, 0xc9, 0x1b, 0xe1, 0x5b, 0xe9, - 0x56, 0x11, 0x65, 0x7f, 0x3d, 0xde, 0x55, 0x84, 0xcf, 0x2f, 0xd5, 0x50, 0x28, 0x6c, 0x74, 0x0a, - 0x25, 0xd3, 0x75, 0x3d, 0x6e, 0xfa, 0x8f, 0xe1, 0x79, 0x69, 0x6a, 0x6b, 0x6a, 0x53, 0x5b, 0x11, - 0xc6, 0x48, 0x17, 0x13, 0xe3, 0xe0, 0xb8, 0x29, 0xf4, 0x08, 0x16, 0xbd, 0x47, 0x2e, 0xa1, 0x98, - 0x1c, 0x12, 0x4a, 0x5c, 0x8b, 0xb0, 0x4a, 0x59, 0x5a, 0xff, 0x5a, 0x4a, 0xeb, 0x09, 0xe5, 0x28, - 0xa5, 0x93, 0x74, 0x86, 0x47, 0xad, 0xa0, 0x3a, 0xc0, 0xa1, 0xed, 0xaa, 0x5e, 0xb4, 0xb2, 0x10, - 0x8d, 0x9e, 0x6e, 0x86, 0x54, 0x1c, 0x93, 0x40, 0x5f, 0x87, 0x92, 0xe5, 0xf4, 0x19, 0x27, 0xfe, - 0x8c, 0x6b, 0x51, 0x9e, 0xa0, 0x70, 0x7d, 0xdb, 0x11, 0x0b, 0xc7, 0xe5, 0xd0, 0x11, 0xcc, 0xdb, - 0xb1, 0xa6, 0xb7, 0xb2, 0x24, 0x73, 0x71, 0x73, 0xea, 0x4e, 0x97, 0x19, 0x4b, 0xa2, 0x12, 0xc5, - 0x29, 0x38, 0x81, 0xbc, 0xfa, 0x0d, 0x28, 0x7d, 0xca, 0x1e, 0x4c, 0xf4, 0x70, 0xa3, 0x5b, 0x37, - 0x55, 0x0f, 0xf7, 0xd7, 0x0c, 0x2c, 0x24, 0x03, 0x1e, 0xbe, 0x75, 0xb4, 0x89, 0x33, 0xcb, 0xa0, - 0x2a, 0x67, 0x27, 0x56, 0x65, 0x55, 0xfc, 0x66, 0x5f, 0xa6, 0xf8, 0x6d, 0x02, 0x98, 0x3d, 0x3b, - 0xa8, 0x7b, 0x7e, 0x1d, 0x0d, 0x2b, 0x57, 0x34, 0x45, 0xc3, 0x31, 0x29, 0x39, 0x95, 0xf4, 0x5c, - 0x4e, 0x3d, 0xc7, 0x21, 0x54, 0x5d, 0xa6, 0xfe, 0x54, 0x32, 0xa4, 0xe2, 0x98, 0x04, 0xba, 0x09, - 0xe8, 0xc0, 0xf1, 0xac, 0x63, 0x19, 0x82, 0xe0, 0x9c, 0xcb, 0x2a, 0x59, 0xf0, 0x87, 0x52, 0xc6, - 0x18, 0x17, 0x5f, 0xa0, 0xa1, 0xcf, 0x41, 0xae, 0x25, 0xda, 0x0a, 0xfd, 0x2e, 0x24, 0xe7, 0x49, - 0xe8, 0x86, 0x1f, 0x09, 0x2d, 0x1c, 0xf8, 0x4c, 0x17, 0x05, 0xfd, 0x2a, 0x14, 0xb1, 0xe7, 0xf1, - 0x96, 0xc9, 0x8f, 0x18, 0xaa, 0x41, 0xae, 0x27, 0x7e, 0xa8, 0x61, 0xa1, 0x9c, 0xff, 0x4a, 0x0e, - 0xf6, 0xe9, 0xfa, 0xaf, 0x34, 0x78, 0x75, 0xe2, 0xec, 0x4e, 0x44, 0xd4, 0x0a, 0xbf, 0x94, 0x4b, - 0x61, 0x44, 0x23, 0x39, 0x1c, 0x93, 0x12, 0x9d, 0x58, 0x62, 0xe0, 0x37, 0xda, 0x89, 0x25, 0xac, - 0xe1, 0xa4, 0xac, 0xfe, 0xef, 0x0c, 0xe4, 0xfd, 0x67, 0xd9, 0x7f, 0xb9, 0xf9, 0x7e, 0x03, 0xf2, - 0x4c, 0xda, 0x51, 0xee, 0x85, 0xd5, 0xd2, 0xb7, 0x8e, 0x15, 0x57, 0x34, 0x31, 0x5d, 0xc2, 0x98, - 0xd9, 0x09, 0x92, 0x37, 0x6c, 0x62, 0xf6, 0x7c, 0x32, 0x0e, 0xf8, 0xe8, 0x1d, 0xf1, 0x0a, 0x35, - 0x59, 0xd8, 0x17, 0x56, 0x03, 0x48, 0x2c, 0xa9, 0xe7, 0x83, 0xda, 0xbc, 0x02, 0x97, 0xdf, 0x58, - 0x49, 0xa3, 0x07, 0x30, 0xd7, 0x26, 0xdc, 0xb4, 0x1d, 0xbf, 0x1d, 0x4c, 0x3d, 0x99, 0xf4, 0xc1, - 0x9a, 0xbe, 0xaa, 0x51, 0x12, 0x3e, 0xa9, 0x0f, 0x1c, 0x00, 0x8a, 0x83, 0x67, 0x79, 0x6d, 0x7f, - 0x4c, 0x9f, 0x8b, 0x0e, 0xde, 0xb6, 0xd7, 0x26, 0x58, 0x72, 0xf4, 0xc7, 0x1a, 0x94, 0x7c, 0xa4, - 0x6d, 0xb3, 0xcf, 0x08, 0xda, 0x08, 0x57, 0xe1, 0x6f, 0x77, 0x70, 0x27, 0xcf, 0xbe, 0x77, 0xd6, - 0x23, 0xe7, 0x83, 0x5a, 0x51, 0x8a, 0x89, 0x8f, 0x70, 0x01, 0xb1, 0x18, 0x65, 0x2e, 0x89, 0xd1, - 0xeb, 0x90, 0x93, 0xad, 0xb7, 0x0a, 0x66, 0xd8, 0xe8, 0xc9, 0xf6, 0x1c, 0xfb, 0x3c, 0xfd, 0xe3, - 0x0c, 0x94, 0x13, 0x8b, 0x4b, 0xd1, 0xd5, 0x85, 0xa3, 0x92, 0x4c, 0x8a, 0xf1, 0xdb, 0xe4, 0x7f, - 0xae, 0x7c, 0x1f, 0xf2, 0x96, 0x58, 0x5f, 0xf0, 0xdf, 0xad, 0x8d, 0x69, 0xb6, 0x42, 0x46, 0x26, - 0xca, 0x24, 0xf9, 0xc9, 0xb0, 0x02, 0x44, 0xb7, 0x60, 0x99, 0x12, 0x4e, 0xcf, 0xb6, 0x0e, 0x39, - 0xa1, 0xf1, 0xfe, 0x3f, 0x17, 0xf5, 0x3d, 0x78, 0x54, 0x00, 0x8f, 0xeb, 0x04, 0xa5, 0x32, 0xff, - 0x12, 0xa5, 0x52, 0x77, 0x60, 0xf6, 0x7f, 0xd8, 0xa3, 0xff, 0x00, 0x8a, 0x51, 0x17, 0xf5, 0x19, - 0x9b, 0xd4, 0x7f, 0x04, 0x05, 0x91, 0x8d, 0x41, 0xf7, 0x7f, 0xc9, 0x4d, 0x94, 0xbc, 0x23, 0x32, - 0x69, 0xee, 0x08, 0x7d, 0x13, 0xfc, 0xff, 0x99, 0x89, 0x6a, 0xea, 0xbf, 0xd8, 0x63, 0xd5, 0x34, - 0xfe, 0xfc, 0x8e, 0x8d, 0xcc, 0x7e, 0xa1, 0x01, 0xc8, 0xe7, 0xe3, 0xce, 0x09, 0x71, 0xb9, 0x70, - 0x4c, 0xec, 0xc0, 0xa8, 0x63, 0xf2, 0x18, 0x49, 0x0e, 0xba, 0x07, 0x79, 0x4f, 0x76, 0x57, 0x6a, - 0x86, 0x35, 0xe5, 0x38, 0x20, 0xcc, 0x3a, 0xbf, 0x45, 0xc3, 0x0a, 0xcc, 0x58, 0x7f, 0xfa, 0xbc, - 0x3a, 0xf3, 0xec, 0x79, 0x75, 0xe6, 0xa3, 0xe7, 0xd5, 0x99, 0x0f, 0x86, 0x55, 0xed, 0xe9, 0xb0, - 0xaa, 0x3d, 0x1b, 0x56, 0xb5, 0x8f, 0x86, 0x55, 0xed, 0xe3, 0x61, 0x55, 0x7b, 0xfc, 0x49, 0x75, - 0xe6, 0x41, 0xe6, 0x64, 0xe3, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6c, 0xc5, 0x28, 0xb2, 0x54, - 0x20, 0x00, 0x00, + 0x56, 0x59, 0x98, 0xb5, 0x49, 0x80, 0xd5, 0x30, 0xc0, 0x40, 0x3a, 0xce, 0x8c, 0xa2, 0x9d, 0xcc, + 0x58, 0x95, 0x9d, 0x41, 0x0c, 0x23, 0x44, 0xa7, 0x5d, 0x71, 0x9a, 0xb4, 0xbb, 0xbd, 0x55, 0xed, + 0x4c, 0x02, 0x07, 0xf6, 0x00, 0x12, 0x07, 0x84, 0xe6, 0xc8, 0x09, 0xed, 0x08, 0x2e, 0x5c, 0x39, + 0x71, 0x81, 0x13, 0x12, 0x73, 0x1c, 0x89, 0xcb, 0x1e, 0x90, 0xb5, 0xe3, 0x3d, 0x70, 0x42, 0xdc, + 0x73, 0x42, 0x55, 0x5d, 0xdd, 0x5d, 0x6d, 0xc7, 0x93, 0xf6, 0xce, 0x82, 0xf6, 0x14, 0xf7, 0xfb, + 0xf9, 0xde, 0xab, 0xaa, 0xf7, 0x5e, 0xbd, 0x7a, 0x81, 0xbd, 0xe3, 0x6b, 0xac, 0x6e, 0x7b, 0x8d, + 0xe3, 0xfe, 0x01, 0xa1, 0x2e, 0xf1, 0x09, 0x6b, 0x9c, 0x10, 0xb7, 0xed, 0xd1, 0x86, 0x64, 0x98, + 0x3d, 0xbb, 0x6b, 0x5a, 0x47, 0xb6, 0x4b, 0xe8, 0x59, 0xa3, 0x77, 0xdc, 0xe1, 0x04, 0xd6, 0xe8, + 0x12, 0xdf, 0x6c, 0x9c, 0x6c, 0x34, 0x3a, 0xc4, 0x25, 0xd4, 0xf4, 0x49, 0xbb, 0xde, 0xa3, 0x9e, + 0xef, 0xa1, 0x2f, 0x05, 0x5a, 0x75, 0x55, 0xab, 0xde, 0x3b, 0xee, 0x70, 0x02, 0xab, 0x73, 0xad, + 0xfa, 0xc9, 0xc6, 0xea, 0x5b, 0x1d, 0xdb, 0x3f, 0xea, 0x1f, 0xd4, 0x2d, 0xaf, 0xdb, 0xe8, 0x78, + 0x1d, 0xaf, 0x21, 0x94, 0x0f, 0xfa, 0x87, 0xe2, 0x4b, 0x7c, 0x88, 0x5f, 0x01, 0xe8, 0xea, 0x44, + 0x57, 0x68, 0xdf, 0xf5, 0xed, 0x2e, 0x19, 0xf5, 0x62, 0xf5, 0xed, 0xcb, 0x14, 0x98, 0x75, 0x44, + 0xba, 0xe6, 0xa8, 0x9e, 0xfe, 0xf7, 0x2c, 0x14, 0xb6, 0x5a, 0xbb, 0xb7, 0xa8, 0xd7, 0xef, 0xa1, + 0x35, 0x98, 0x75, 0xcd, 0x2e, 0xa9, 0x68, 0x6b, 0xda, 0x7a, 0xd1, 0x98, 0x7f, 0x3a, 0xa8, 0xcd, + 0x0c, 0x07, 0xb5, 0xd9, 0x3b, 0x66, 0x97, 0x60, 0xc1, 0x41, 0x0e, 0x14, 0x4e, 0x08, 0x65, 0xb6, + 0xe7, 0xb2, 0x4a, 0x66, 0x2d, 0xbb, 0x5e, 0xda, 0xbc, 0x51, 0x4f, 0xb3, 0xfe, 0xba, 0x30, 0x70, + 0x3f, 0x50, 0xbd, 0xe9, 0xd1, 0xa6, 0xcd, 0x2c, 0xef, 0x84, 0xd0, 0x33, 0x63, 0x49, 0x5a, 0x29, + 0x48, 0x26, 0xc3, 0x91, 0x05, 0xf4, 0x0b, 0x0d, 0x96, 0x7a, 0x94, 0x1c, 0x12, 0x4a, 0x49, 0x5b, + 0xf2, 0x2b, 0xd9, 0x35, 0xed, 0x53, 0x30, 0x5b, 0x91, 0x66, 0x97, 0x5a, 0x23, 0xf8, 0x78, 0xcc, + 0x22, 0xfa, 0xbd, 0x06, 0xab, 0x8c, 0xd0, 0x13, 0x42, 0xb7, 0xda, 0x6d, 0x4a, 0x18, 0x33, 0xce, + 0xb6, 0x1d, 0x9b, 0xb8, 0xfe, 0xf6, 0x6e, 0x13, 0xb3, 0xca, 0xac, 0xd8, 0x87, 0xef, 0xa6, 0x73, + 0x68, 0x7f, 0x12, 0x8e, 0xa1, 0x4b, 0x8f, 0x56, 0x27, 0x8a, 0x30, 0xfc, 0x02, 0x37, 0xf4, 0x43, + 0x98, 0x0f, 0x0f, 0xf2, 0xb6, 0xcd, 0x7c, 0x74, 0x1f, 0xf2, 0x1d, 0xfe, 0xc1, 0x2a, 0x9a, 0x70, + 0xb0, 0x9e, 0xce, 0xc1, 0x10, 0xc3, 0x58, 0x90, 0xfe, 0xe4, 0xc5, 0x27, 0xc3, 0x12, 0x4d, 0xff, + 0x4b, 0x16, 0x4a, 0x5b, 0xad, 0x5d, 0x4c, 0x98, 0xd7, 0xa7, 0x16, 0x49, 0x11, 0x34, 0x9b, 0x00, + 0xfc, 0x2f, 0xeb, 0x99, 0x16, 0x69, 0x57, 0x32, 0x6b, 0xda, 0x7a, 0xc1, 0x40, 0x52, 0x0e, 0xee, + 0x44, 0x1c, 0xac, 0x48, 0x71, 0xd4, 0x63, 0xdb, 0x6d, 0x8b, 0xd3, 0x56, 0x50, 0xdf, 0xb1, 0xdd, + 0x36, 0x16, 0x1c, 0x74, 0x1b, 0x72, 0x27, 0x84, 0x1e, 0xf0, 0xfd, 0xe7, 0x01, 0xf1, 0x95, 0x74, + 0xcb, 0xbb, 0xcf, 0x55, 0x8c, 0xe2, 0x70, 0x50, 0xcb, 0x89, 0x9f, 0x38, 0x00, 0x41, 0x75, 0x00, + 0x76, 0xe4, 0x51, 0x5f, 0xb8, 0x53, 0xc9, 0xad, 0x65, 0xd7, 0x8b, 0xc6, 0x02, 0xf7, 0x6f, 0x3f, + 0xa2, 0x62, 0x45, 0x02, 0x5d, 0x83, 0x79, 0x66, 0xbb, 0x9d, 0xbe, 0x63, 0x52, 0x4e, 0xa8, 0xe4, + 0x85, 0x9f, 0x2b, 0xd2, 0xcf, 0xf9, 0x7d, 0x85, 0x87, 0x13, 0x92, 0xdc, 0x92, 0x65, 0xfa, 0xa4, + 0xe3, 0x51, 0x9b, 0xb0, 0xca, 0x5c, 0x6c, 0x69, 0x3b, 0xa2, 0x62, 0x45, 0x02, 0xbd, 0x0e, 0x39, + 0xb1, 0xf3, 0x95, 0x82, 0x30, 0x51, 0x96, 0x26, 0x72, 0xe2, 0x58, 0x70, 0xc0, 0x43, 0x6f, 0xc2, + 0x9c, 0xcc, 0x9a, 0x4a, 0x51, 0x88, 0x2d, 0x4a, 0xb1, 0xb9, 0x30, 0xac, 0x43, 0xbe, 0xfe, 0x27, + 0x0d, 0x16, 0x95, 0xf3, 0x13, 0xb1, 0x72, 0x0d, 0xe6, 0x3b, 0x4a, 0xa6, 0xc8, 0xb3, 0x8c, 0x56, + 0xa3, 0x66, 0x11, 0x4e, 0x48, 0x22, 0x02, 0x45, 0x2a, 0x91, 0xc2, 0x8a, 0xb0, 0x91, 0x3a, 0xd0, + 0x42, 0x1f, 0x62, 0x4b, 0x0a, 0x91, 0xe1, 0x18, 0x59, 0xff, 0x97, 0x26, 0x82, 0x2e, 0xac, 0x11, + 0x68, 0x5d, 0xa9, 0x43, 0x9a, 0xd8, 0xc2, 0xf9, 0x09, 0x35, 0xe4, 0x92, 0xe4, 0xcd, 0x7c, 0x26, + 0x92, 0xf7, 0x7a, 0xe1, 0xb7, 0x1f, 0xd4, 0x66, 0xde, 0xff, 0xe7, 0xda, 0x8c, 0xfe, 0x71, 0x06, + 0xca, 0x4d, 0xe2, 0x10, 0x9f, 0xdc, 0xed, 0xf9, 0x62, 0x05, 0x37, 0x01, 0x75, 0xa8, 0x69, 0x91, + 0x16, 0xa1, 0xb6, 0xd7, 0xde, 0x27, 0x96, 0xe7, 0xb6, 0x99, 0x38, 0xa2, 0xac, 0xf1, 0xb9, 0xe1, + 0xa0, 0x86, 0x6e, 0x8d, 0x71, 0xf1, 0x05, 0x1a, 0xc8, 0x81, 0x72, 0x8f, 0x8a, 0xdf, 0xb6, 0x2f, + 0x0b, 0x38, 0x4f, 0x9c, 0xaf, 0xa5, 0x5b, 0x7b, 0x4b, 0x55, 0x35, 0x96, 0x87, 0x83, 0x5a, 0x39, + 0x41, 0xc2, 0x49, 0x70, 0xf4, 0x3d, 0x58, 0xf2, 0x68, 0xef, 0xc8, 0x74, 0x9b, 0xa4, 0x47, 0xdc, + 0x36, 0x71, 0x7d, 0x26, 0x92, 0xb9, 0x60, 0xac, 0xf0, 0xb2, 0x7b, 0x77, 0x84, 0x87, 0xc7, 0xa4, + 0xd1, 0x03, 0x58, 0xee, 0x51, 0xaf, 0x67, 0x76, 0x4c, 0x8e, 0xd8, 0xf2, 0x1c, 0xdb, 0x3a, 0x13, + 0xc9, 0x5e, 0x34, 0xae, 0x0e, 0x07, 0xb5, 0xe5, 0xd6, 0x28, 0xf3, 0x7c, 0x50, 0x7b, 0x45, 0x6c, + 0x1d, 0xa7, 0xc4, 0x4c, 0x3c, 0x0e, 0xa3, 0xef, 0x42, 0xa1, 0xd9, 0xa7, 0x82, 0x82, 0xbe, 0x03, + 0x85, 0xb6, 0xfc, 0x2d, 0x77, 0xf5, 0xb5, 0xf0, 0x4e, 0x0a, 0x65, 0xce, 0x07, 0xb5, 0x32, 0xbf, + 0x45, 0xeb, 0x21, 0x01, 0x47, 0x2a, 0xfa, 0x43, 0x28, 0xef, 0x9c, 0xf6, 0x3c, 0xea, 0x87, 0xe7, + 0xf5, 0x06, 0xe4, 0x89, 0x20, 0x08, 0xb4, 0x42, 0x5c, 0x48, 0x03, 0x31, 0x2c, 0xb9, 0x3c, 0xb1, + 0xc9, 0xa9, 0x69, 0xf9, 0xb2, 0x22, 0x46, 0x89, 0xbd, 0xc3, 0x89, 0x38, 0xe0, 0xe9, 0x4f, 0x34, + 0x80, 0x5b, 0x24, 0xc2, 0xde, 0x82, 0xc5, 0x30, 0x29, 0x92, 0xb9, 0xfa, 0x79, 0xa9, 0xbd, 0x88, + 0x93, 0x6c, 0x3c, 0x2a, 0x8f, 0x5a, 0xb0, 0x62, 0xbb, 0x96, 0xd3, 0x6f, 0x93, 0x7b, 0xae, 0xed, + 0xda, 0xbe, 0x6d, 0x3a, 0xf6, 0x4f, 0xa3, 0xba, 0xfc, 0x05, 0x89, 0xb3, 0xb2, 0x7b, 0x81, 0x0c, + 0xbe, 0x50, 0x53, 0x7f, 0x08, 0x45, 0x51, 0x21, 0x78, 0x71, 0x8e, 0xcb, 0x95, 0xf6, 0x82, 0x72, + 0x15, 0x56, 0xf7, 0xcc, 0xa4, 0xea, 0xae, 0x24, 0x84, 0x03, 0xe5, 0x40, 0x37, 0xbc, 0x70, 0x52, + 0x59, 0xb8, 0x0a, 0x85, 0x70, 0xe1, 0xd2, 0x4a, 0xd4, 0x68, 0x84, 0x40, 0x38, 0x92, 0x50, 0xac, + 0x1d, 0x41, 0xa2, 0xda, 0xa5, 0x33, 0xa6, 0x54, 0xdf, 0xcc, 0x8b, 0xab, 0xaf, 0x62, 0xe9, 0xe7, + 0x50, 0x99, 0xd4, 0x9d, 0xbc, 0x44, 0x3d, 0x4e, 0xef, 0x8a, 0xfe, 0x1b, 0x0d, 0x96, 0x54, 0xa4, + 0xf4, 0xc7, 0x97, 0xde, 0xc8, 0xe5, 0xf7, 0xb8, 0xb2, 0x23, 0xbf, 0xd3, 0x60, 0x25, 0xb1, 0xb4, + 0xa9, 0x4e, 0x7c, 0x0a, 0xa7, 0xd4, 0xe0, 0xc8, 0x4e, 0x11, 0x1c, 0x0d, 0x28, 0xed, 0x46, 0x71, + 0x4f, 0x2f, 0xef, 0x7c, 0xf4, 0xbf, 0x6a, 0x30, 0xaf, 0x68, 0x30, 0xf4, 0x10, 0xe6, 0x78, 0x7d, + 0xb3, 0xdd, 0x8e, 0xec, 0xca, 0x52, 0x5e, 0x96, 0x0a, 0x48, 0xbc, 0xae, 0x56, 0x80, 0x84, 0x43, + 0x48, 0xd4, 0x82, 0x3c, 0x25, 0xac, 0xef, 0xf8, 0xb2, 0xb4, 0x5f, 0x4d, 0x79, 0xad, 0xf9, 0xa6, + 0xdf, 0x67, 0x06, 0xf0, 0x1a, 0x85, 0x85, 0x3e, 0x96, 0x38, 0xfa, 0x3f, 0x32, 0x50, 0xbe, 0x6d, + 0x1e, 0x10, 0x67, 0x9f, 0x38, 0xc4, 0xf2, 0x3d, 0x8a, 0x7e, 0x06, 0xa5, 0xae, 0xe9, 0x5b, 0x47, + 0x82, 0x1a, 0xf6, 0x96, 0xcd, 0x74, 0x86, 0x12, 0x48, 0xf5, 0xbd, 0x18, 0x66, 0xc7, 0xf5, 0xe9, + 0x99, 0xf1, 0x8a, 0x5c, 0x58, 0x49, 0xe1, 0x60, 0xd5, 0x9a, 0x78, 0x10, 0x88, 0xef, 0x9d, 0xd3, + 0x1e, 0xbf, 0x44, 0xa7, 0x7f, 0x87, 0x24, 0x5c, 0xc0, 0xe4, 0xbd, 0xbe, 0x4d, 0x49, 0x97, 0xb8, + 0x7e, 0xfc, 0x20, 0xd8, 0x1b, 0xc1, 0xc7, 0x63, 0x16, 0x57, 0x6f, 0xc0, 0xd2, 0xa8, 0xf3, 0x68, + 0x09, 0xb2, 0xc7, 0xe4, 0x2c, 0x88, 0x05, 0xcc, 0x7f, 0xa2, 0x15, 0xc8, 0x9d, 0x98, 0x4e, 0x5f, + 0xd6, 0x1f, 0x1c, 0x7c, 0x5c, 0xcf, 0x5c, 0xd3, 0xf4, 0x3f, 0x68, 0x50, 0x99, 0xe4, 0x08, 0xfa, + 0xa2, 0x02, 0x64, 0x94, 0xa4, 0x57, 0xd9, 0x77, 0xc8, 0x59, 0x80, 0xba, 0x03, 0x05, 0xaf, 0xc7, + 0x9f, 0x70, 0x1e, 0x95, 0x71, 0xfe, 0x66, 0x18, 0xbb, 0x77, 0x25, 0xfd, 0x7c, 0x50, 0xbb, 0x92, + 0x80, 0x0f, 0x19, 0x38, 0x52, 0x45, 0x3a, 0xe4, 0x85, 0x3f, 0xfc, 0x52, 0xe6, 0xed, 0x93, 0x38, + 0xfc, 0xfb, 0x82, 0x82, 0x25, 0x47, 0xff, 0xb3, 0x06, 0xb3, 0xa2, 0x3d, 0x7c, 0x08, 0x05, 0xbe, + 0x7f, 0x6d, 0xd3, 0x37, 0x85, 0x5f, 0xa9, 0x1f, 0x13, 0x5c, 0x7b, 0x8f, 0xf8, 0x66, 0x9c, 0x5f, + 0x21, 0x05, 0x47, 0x88, 0x08, 0x43, 0xce, 0xf6, 0x49, 0x37, 0x3c, 0xc8, 0xb7, 0x26, 0x42, 0xcb, + 0xa7, 0x6c, 0x1d, 0x9b, 0x8f, 0x76, 0x4e, 0x7d, 0xe2, 0xf2, 0xc3, 0x88, 0x8b, 0xc1, 0x2e, 0xc7, + 0xc0, 0x01, 0x94, 0xfe, 0x47, 0x0d, 0x22, 0x53, 0x3c, 0xdd, 0x19, 0x71, 0x0e, 0x6f, 0xdb, 0xee, + 0xb1, 0xdc, 0xd6, 0xc8, 0x9d, 0x7d, 0x49, 0xc7, 0x91, 0xc4, 0x45, 0x57, 0x6c, 0x66, 0xca, 0x2b, + 0xf6, 0x2a, 0x14, 0x2c, 0xcf, 0xf5, 0x6d, 0xb7, 0x3f, 0x56, 0x5f, 0xb6, 0x25, 0x1d, 0x47, 0x12, + 0xfa, 0xb3, 0x2c, 0x94, 0xb8, 0xaf, 0xe1, 0x1d, 0xff, 0x2d, 0x28, 0x3b, 0xea, 0xe9, 0x49, 0x9f, + 0xaf, 0x48, 0x88, 0x64, 0x3e, 0xe2, 0xa4, 0x2c, 0x57, 0x3e, 0xb4, 0x89, 0xd3, 0x8e, 0x94, 0x33, + 0x49, 0xe5, 0x9b, 0x2a, 0x13, 0x27, 0x65, 0x79, 0x9d, 0x7d, 0xc4, 0xe3, 0x5a, 0x36, 0x6a, 0xd1, + 0xd6, 0x7e, 0x9f, 0x13, 0x71, 0xc0, 0xbb, 0x68, 0x7f, 0x66, 0xa7, 0xdc, 0x9f, 0xeb, 0xb0, 0xc0, + 0x0f, 0xd2, 0xeb, 0xfb, 0x61, 0x37, 0x9b, 0x13, 0x7d, 0x17, 0x1a, 0x0e, 0x6a, 0x0b, 0xef, 0x26, + 0x38, 0x78, 0x44, 0x72, 0x62, 0xfb, 0x92, 0xff, 0xa4, 0xed, 0x0b, 0x5f, 0xb5, 0x63, 0x77, 0x6d, + 0xbf, 0x32, 0x27, 0x9c, 0x88, 0x56, 0x7d, 0x9b, 0x13, 0x71, 0xc0, 0x4b, 0x1c, 0x69, 0xe1, 0xd2, + 0x23, 0x7d, 0x0f, 0x8a, 0x7b, 0xb6, 0x45, 0x3d, 0xbe, 0x16, 0x7e, 0x31, 0xb1, 0x44, 0xd3, 0x1e, + 0x15, 0xf0, 0x70, 0x8d, 0x21, 0x9f, 0xbb, 0xe2, 0x9a, 0xae, 0x17, 0xb4, 0xe6, 0xb9, 0xd8, 0x95, + 0x3b, 0x9c, 0x88, 0x03, 0xde, 0xf5, 0x15, 0x7e, 0x1f, 0xfd, 0xea, 0x49, 0x6d, 0xe6, 0xf1, 0x93, + 0xda, 0xcc, 0x07, 0x4f, 0xe4, 0xdd, 0xf4, 0x6f, 0x00, 0xb8, 0x7b, 0xf0, 0x13, 0x62, 0x05, 0x31, + 0x7f, 0xf9, 0xab, 0x9c, 0xf7, 0x18, 0x72, 0x18, 0x24, 0x5e, 0xb0, 0x99, 0x91, 0x1e, 0x43, 0xe1, + 0xe1, 0x84, 0x24, 0x6a, 0x40, 0x31, 0x7a, 0xa9, 0xcb, 0xf8, 0x5e, 0x96, 0x6a, 0xc5, 0xe8, 0x39, + 0x8f, 0x63, 0x99, 0x44, 0x02, 0xce, 0x5e, 0x9a, 0x80, 0x06, 0x64, 0xfb, 0x76, 0x5b, 0x84, 0x44, + 0xd1, 0xf8, 0x6a, 0x58, 0x00, 0xef, 0xed, 0x36, 0xcf, 0x07, 0xb5, 0xd7, 0x26, 0x8d, 0xb9, 0xfc, + 0xb3, 0x1e, 0x61, 0xf5, 0x7b, 0xbb, 0x4d, 0xcc, 0x95, 0x2f, 0x0a, 0xd2, 0xfc, 0x94, 0x41, 0xba, + 0x09, 0x20, 0x57, 0xcd, 0xb5, 0x83, 0xd8, 0x88, 0xa6, 0x16, 0xb7, 0x22, 0x0e, 0x56, 0xa4, 0x10, + 0x83, 0x65, 0x8b, 0x12, 0xf1, 0x9b, 0x1f, 0x3d, 0xf3, 0xcd, 0x6e, 0xf0, 0x6e, 0x2f, 0x6d, 0x7e, + 0x39, 0x5d, 0xc5, 0xe4, 0x6a, 0xc6, 0xab, 0xd2, 0xcc, 0xf2, 0xf6, 0x28, 0x18, 0x1e, 0xc7, 0x47, + 0x1e, 0x2c, 0xb7, 0xe5, 0xab, 0x27, 0x36, 0x5a, 0x9c, 0xda, 0xe8, 0x15, 0x6e, 0xb0, 0x39, 0x0a, + 0x84, 0xc7, 0xb1, 0xd1, 0x8f, 0x60, 0x35, 0x24, 0x8e, 0x3f, 0x3d, 0x2b, 0x20, 0x76, 0xaa, 0xca, + 0x1f, 0xc3, 0xcd, 0x89, 0x52, 0xf8, 0x05, 0x08, 0xa8, 0x0d, 0x79, 0x27, 0xe8, 0x2e, 0x4a, 0xe2, + 0x46, 0xf8, 0x76, 0xba, 0x55, 0xc4, 0xd1, 0x5f, 0x57, 0xbb, 0x8a, 0xe8, 0xf9, 0x25, 0x1b, 0x0a, + 0x89, 0x8d, 0x4e, 0xa1, 0x64, 0xba, 0xae, 0xe7, 0x9b, 0xc1, 0x63, 0x78, 0x5e, 0x98, 0xda, 0x9a, + 0xda, 0xd4, 0x56, 0x8c, 0x31, 0xd2, 0xc5, 0x28, 0x1c, 0xac, 0x9a, 0x42, 0x8f, 0x60, 0xd1, 0x7b, + 0xe4, 0x12, 0x8a, 0xc9, 0x21, 0xa1, 0xc4, 0xb5, 0x08, 0xab, 0x94, 0x85, 0xf5, 0xaf, 0xa7, 0xb4, + 0x9e, 0x50, 0x8e, 0x43, 0x3a, 0x49, 0x67, 0x78, 0xd4, 0x0a, 0xaa, 0x03, 0x1c, 0xda, 0xae, 0xec, + 0x45, 0x2b, 0x0b, 0xf1, 0xe8, 0xe9, 0x66, 0x44, 0xc5, 0x8a, 0x04, 0xfa, 0x06, 0x94, 0x2c, 0xa7, + 0xcf, 0x7c, 0x12, 0xcc, 0xb8, 0x16, 0x45, 0x06, 0x45, 0xeb, 0xdb, 0x8e, 0x59, 0x58, 0x95, 0x43, + 0x47, 0x30, 0x6f, 0x2b, 0x4d, 0x6f, 0x65, 0x49, 0xc4, 0xe2, 0xe6, 0xd4, 0x9d, 0x2e, 0x33, 0x96, + 0x78, 0x25, 0x52, 0x29, 0x38, 0x81, 0xbc, 0xfa, 0x4d, 0x28, 0x7d, 0xc2, 0x1e, 0x8c, 0xf7, 0x70, + 0xa3, 0x47, 0x37, 0x55, 0x0f, 0xf7, 0xb7, 0x0c, 0x2c, 0x24, 0x37, 0x3c, 0x7a, 0xeb, 0x68, 0x13, + 0x67, 0x96, 0x61, 0x55, 0xce, 0x4e, 0xac, 0xca, 0xb2, 0xf8, 0xcd, 0xbe, 0x4c, 0xf1, 0xdb, 0x04, + 0x30, 0x7b, 0x76, 0x58, 0xf7, 0x82, 0x3a, 0x1a, 0x55, 0xae, 0x78, 0x8a, 0x86, 0x15, 0x29, 0x31, + 0x95, 0xf4, 0x5c, 0x9f, 0x7a, 0x8e, 0x43, 0xa8, 0xbc, 0x4c, 0x83, 0xa9, 0x64, 0x44, 0xc5, 0x8a, + 0x04, 0xba, 0x09, 0xe8, 0xc0, 0xf1, 0xac, 0x63, 0xb1, 0x05, 0x61, 0x9e, 0x8b, 0x2a, 0x59, 0x08, + 0x86, 0x52, 0xc6, 0x18, 0x17, 0x5f, 0xa0, 0xa1, 0xcf, 0x41, 0xae, 0xc5, 0xdb, 0x0a, 0xfd, 0x2e, + 0x24, 0xe7, 0x49, 0xe8, 0x46, 0xb0, 0x13, 0x5a, 0x34, 0xf0, 0x99, 0x6e, 0x17, 0xf4, 0xab, 0x50, + 0xc4, 0x9e, 0xe7, 0xb7, 0x4c, 0xff, 0x88, 0xa1, 0x1a, 0xe4, 0x7a, 0xfc, 0x87, 0x1c, 0x16, 0x8a, + 0xf9, 0xaf, 0xe0, 0xe0, 0x80, 0xae, 0xff, 0x5a, 0x83, 0x57, 0x27, 0xce, 0xee, 0xf8, 0x8e, 0x5a, + 0xd1, 0x97, 0x74, 0x29, 0xda, 0xd1, 0x58, 0x0e, 0x2b, 0x52, 0xbc, 0x13, 0x4b, 0x0c, 0xfc, 0x46, + 0x3b, 0xb1, 0x84, 0x35, 0x9c, 0x94, 0xd5, 0xff, 0x93, 0x81, 0x7c, 0xf0, 0x2c, 0xfb, 0x1f, 0x37, + 0xdf, 0x6f, 0x40, 0x9e, 0x09, 0x3b, 0xd2, 0xbd, 0xa8, 0x5a, 0x06, 0xd6, 0xb1, 0xe4, 0xf2, 0x26, + 0xa6, 0x4b, 0x18, 0x33, 0x3b, 0x61, 0xf0, 0x46, 0x4d, 0xcc, 0x5e, 0x40, 0xc6, 0x21, 0x1f, 0xbd, + 0xcd, 0x5f, 0xa1, 0x26, 0x8b, 0xfa, 0xc2, 0x6a, 0x08, 0x89, 0x05, 0xf5, 0x7c, 0x50, 0x9b, 0x97, + 0xe0, 0xe2, 0x1b, 0x4b, 0x69, 0xf4, 0x00, 0xe6, 0xda, 0xc4, 0x37, 0x6d, 0x27, 0x68, 0x07, 0x53, + 0x4f, 0x26, 0x03, 0xb0, 0x66, 0xa0, 0x6a, 0x94, 0xb8, 0x4f, 0xf2, 0x03, 0x87, 0x80, 0x3c, 0xf1, + 0x2c, 0xaf, 0x1d, 0x8c, 0xe9, 0x73, 0x71, 0xe2, 0x6d, 0x7b, 0x6d, 0x82, 0x05, 0x47, 0x7f, 0xac, + 0x41, 0x29, 0x40, 0xda, 0x36, 0xfb, 0x8c, 0xa0, 0x8d, 0x68, 0x15, 0xc1, 0x71, 0x87, 0x77, 0xf2, + 0xec, 0xbb, 0x67, 0x3d, 0x72, 0x3e, 0xa8, 0x15, 0x85, 0x18, 0xff, 0x88, 0x16, 0xa0, 0xec, 0x51, + 0xe6, 0x92, 0x3d, 0x7a, 0x1d, 0x72, 0xa2, 0xf5, 0x96, 0x9b, 0x19, 0x35, 0x7a, 0xa2, 0x3d, 0xc7, + 0x01, 0x4f, 0xff, 0x28, 0x03, 0xe5, 0xc4, 0xe2, 0x52, 0x74, 0x75, 0xd1, 0xa8, 0x24, 0x93, 0x62, + 0xfc, 0x36, 0xf9, 0x9f, 0x2b, 0x3f, 0x80, 0xbc, 0xc5, 0xd7, 0x17, 0xfe, 0x77, 0x6b, 0x63, 0x9a, + 0xa3, 0x10, 0x3b, 0x13, 0x47, 0x92, 0xf8, 0x64, 0x58, 0x02, 0xa2, 0x5b, 0xb0, 0x4c, 0x89, 0x4f, + 0xcf, 0xb6, 0x0e, 0x7d, 0x42, 0xd5, 0xfe, 0x3f, 0x17, 0xf7, 0x3d, 0x78, 0x54, 0x00, 0x8f, 0xeb, + 0x84, 0xa5, 0x32, 0xff, 0x12, 0xa5, 0x52, 0x77, 0x60, 0xf6, 0xff, 0xd8, 0xa3, 0xff, 0x10, 0x8a, + 0x71, 0x17, 0xf5, 0x29, 0x9b, 0xd4, 0x7f, 0x0c, 0x05, 0x1e, 0x8d, 0x61, 0xf7, 0x7f, 0xc9, 0x4d, + 0x94, 0xbc, 0x23, 0x32, 0x69, 0xee, 0x08, 0x7d, 0x13, 0x82, 0xff, 0x99, 0xf1, 0x6a, 0x1a, 0xbc, + 0xd8, 0x95, 0x6a, 0xaa, 0x3e, 0xbf, 0x95, 0x91, 0xd9, 0x2f, 0x35, 0x00, 0xf1, 0x7c, 0xdc, 0x39, + 0x21, 0xae, 0xcf, 0x1d, 0xe3, 0x27, 0x30, 0xea, 0x98, 0x48, 0x23, 0xc1, 0x41, 0xf7, 0x20, 0xef, + 0x89, 0xee, 0x4a, 0xce, 0xb0, 0xa6, 0x1c, 0x07, 0x44, 0x51, 0x17, 0xb4, 0x68, 0x58, 0x82, 0x19, + 0xeb, 0x4f, 0x9f, 0x57, 0x67, 0x9e, 0x3d, 0xaf, 0xce, 0x7c, 0xf8, 0xbc, 0x3a, 0xf3, 0xfe, 0xb0, + 0xaa, 0x3d, 0x1d, 0x56, 0xb5, 0x67, 0xc3, 0xaa, 0xf6, 0xe1, 0xb0, 0xaa, 0x7d, 0x34, 0xac, 0x6a, + 0x8f, 0x3f, 0xae, 0xce, 0x3c, 0xc8, 0x9c, 0x6c, 0xfc, 0x37, 0x00, 0x00, 0xff, 0xff, 0x0e, 0xc8, + 0x1d, 0xca, 0x1f, 0x20, 0x00, 0x00, } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto index 4baf44f3de..df386bc9a1 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto @@ -23,7 +23,6 @@ package k8s.io.apimachinery.pkg.apis.meta.v1; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1"; diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go index 4e427b3b3a..fe3df6916b 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.pb.go @@ -604,30 +604,29 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 391 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x91, 0xbd, 0x6e, 0xd4, 0x40, - 0x10, 0xc7, 0xbd, 0x42, 0x11, 0x64, 0x43, 0x1a, 0x23, 0xa4, 0x70, 0xc5, 0x3a, 0xba, 0x2a, 0x48, - 0x64, 0x97, 0x04, 0x84, 0x28, 0x91, 0xbb, 0x48, 0xa0, 0x44, 0x16, 0x15, 0x15, 0x6b, 0x7b, 0xf0, - 0x2d, 0xb6, 0x77, 0xad, 0xdd, 0x71, 0xa4, 0x6b, 0x10, 0x8f, 0xc0, 0x63, 0x5d, 0x99, 0x32, 0x95, - 0xc5, 0x99, 0xb7, 0xa0, 0x42, 0xfe, 0x10, 0xf9, 0xb8, 0x3b, 0xe5, 0xba, 0x99, 0xff, 0xe8, 0xf7, - 0xf3, 0x8c, 0x97, 0x46, 0xf9, 0x7b, 0xc7, 0x95, 0x11, 0x79, 0x1d, 0x83, 0xd5, 0x80, 0xe0, 0xc4, - 0x25, 0xe8, 0xd4, 0x58, 0x31, 0x0e, 0x64, 0xa5, 0x4a, 0x99, 0xcc, 0x94, 0x06, 0x3b, 0x17, 0x55, - 0x9e, 0x75, 0x81, 0x13, 0x25, 0xa0, 0x14, 0x97, 0x27, 0x31, 0xa0, 0x3c, 0x11, 0x19, 0x68, 0xb0, - 0x12, 0x21, 0xe5, 0x95, 0x35, 0x68, 0xfc, 0x97, 0x03, 0xca, 0x6f, 0xa3, 0xbc, 0xca, 0xb3, 0x2e, - 0x70, 0xbc, 0x43, 0xf9, 0x88, 0x4e, 0x8e, 0x33, 0x85, 0xb3, 0x3a, 0xe6, 0x89, 0x29, 0x45, 0x66, - 0x32, 0x23, 0x7a, 0x43, 0x5c, 0x7f, 0xeb, 0xbb, 0xbe, 0xe9, 0xab, 0xc1, 0x3c, 0x79, 0xbb, 0xcd, - 0x52, 0xf7, 0xf7, 0x99, 0x6c, 0x3c, 0xc5, 0xd6, 0x1a, 0x55, 0x09, 0x2b, 0xc0, 0xbb, 0x87, 0x00, - 0x97, 0xcc, 0xa0, 0x94, 0x2b, 0xdc, 0x9b, 0x4d, 0x5c, 0x8d, 0xaa, 0x10, 0x4a, 0xa3, 0x43, 0x7b, - 0x1f, 0x9a, 0xce, 0xe9, 0xf3, 0x0b, 0x69, 0x51, 0xc9, 0xe2, 0x3c, 0xfe, 0x0e, 0x09, 0x7e, 0x02, - 0x94, 0xa9, 0x44, 0xe9, 0x7f, 0xa5, 0x4f, 0xca, 0xb1, 0x3e, 0x20, 0x87, 0xe4, 0x68, 0xef, 0xf4, - 0x35, 0xdf, 0xe6, 0xcf, 0xf2, 0x1b, 0x4f, 0xe8, 0x2f, 0x9a, 0xc0, 0x6b, 0x9b, 0x80, 0xde, 0x64, - 0xd1, 0x7f, 0xeb, 0xf4, 0x07, 0x7d, 0xb1, 0xf6, 0xd3, 0x1f, 0x95, 0x43, 0x5f, 0xd2, 0x1d, 0x85, - 0x50, 0xba, 0x03, 0x72, 0xf8, 0xe8, 0x68, 0xef, 0xf4, 0x03, 0xdf, 0xfa, 0x55, 0xf9, 0x5a, 0x69, - 0xb8, 0xdb, 0x36, 0xc1, 0xce, 0x59, 0xa7, 0x8c, 0x06, 0xf3, 0x34, 0xa6, 0x4f, 0x3f, 0xcb, 0xb8, - 0x80, 0xf3, 0x0a, 0x95, 0xd1, 0xce, 0x8f, 0xe8, 0xbe, 0xd2, 0x49, 0x51, 0xa7, 0x30, 0xa0, 0xfd, - 0xd9, 0xbb, 0xe1, 0xab, 0xf1, 0x88, 0xfd, 0xb3, 0xdb, 0xc3, 0xbf, 0x4d, 0xf0, 0xec, 0x4e, 0x70, - 0x61, 0x0a, 0x95, 0xcc, 0xa3, 0xbb, 0x8a, 0xf0, 0x78, 0xb1, 0x64, 0xde, 0xd5, 0x92, 0x79, 0xd7, - 0x4b, 0xe6, 0xfd, 0x6c, 0x19, 0x59, 0xb4, 0x8c, 0x5c, 0xb5, 0x8c, 0x5c, 0xb7, 0x8c, 0xfc, 0x6e, - 0x19, 0xf9, 0xf5, 0x87, 0x79, 0x5f, 0x1e, 0x8f, 0xab, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x73, - 0xdf, 0x3a, 0x0c, 0x10, 0x03, 0x00, 0x00, + // 375 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x91, 0xcd, 0x0a, 0xd3, 0x40, + 0x10, 0xc7, 0xb3, 0x48, 0xd1, 0x6e, 0xed, 0x25, 0x22, 0xd4, 0x1e, 0x36, 0xa5, 0xa7, 0x0a, 0x76, + 0xd7, 0x16, 0x11, 0x8f, 0x92, 0x5b, 0x41, 0x69, 0x09, 0x9e, 0x3c, 0xb9, 0x49, 0xc6, 0x74, 0xcd, + 0xc7, 0x86, 0xec, 0xa6, 0xd0, 0x8b, 0xf8, 0x08, 0x3e, 0x56, 0x8f, 0x3d, 0xf6, 0x14, 0x6c, 0x7c, + 0x0b, 0x4f, 0x92, 0x0f, 0xec, 0x87, 0x15, 0x7b, 0x9b, 0xf9, 0x0f, 0xbf, 0x5f, 0x66, 0xb2, 0xd8, + 0x09, 0xdf, 0x28, 0x2a, 0x24, 0x0b, 0x73, 0x17, 0xb2, 0x04, 0x34, 0x28, 0xb6, 0x81, 0xc4, 0x97, + 0x19, 0x6b, 0x07, 0x3c, 0x15, 0x31, 0xf7, 0xd6, 0x22, 0x81, 0x6c, 0xcb, 0xd2, 0x30, 0xa8, 0x02, + 0xc5, 0x62, 0xd0, 0x9c, 0x6d, 0x66, 0x2e, 0x68, 0x3e, 0x63, 0x01, 0x24, 0x90, 0x71, 0x0d, 0x3e, + 0x4d, 0x33, 0xa9, 0xa5, 0xf9, 0xbc, 0x41, 0xe9, 0x39, 0x4a, 0xd3, 0x30, 0xa8, 0x02, 0x45, 0x2b, + 0x94, 0xb6, 0xe8, 0x70, 0x1a, 0x08, 0xbd, 0xce, 0x5d, 0xea, 0xc9, 0x98, 0x05, 0x32, 0x90, 0xac, + 0x36, 0xb8, 0xf9, 0xe7, 0xba, 0xab, 0x9b, 0xba, 0x6a, 0xcc, 0xc3, 0x57, 0xf7, 0x2c, 0x75, 0xbd, + 0xcf, 0xf0, 0x9f, 0xa7, 0x64, 0x79, 0xa2, 0x45, 0x0c, 0x7f, 0x01, 0xaf, 0xff, 0x07, 0x28, 0x6f, + 0x0d, 0x31, 0xbf, 0xe6, 0xc6, 0x5b, 0xfc, 0x74, 0xc5, 0x33, 0x2d, 0x78, 0xb4, 0x74, 0xbf, 0x80, + 0xa7, 0xdf, 0x83, 0xe6, 0x3e, 0xd7, 0xdc, 0xfc, 0x84, 0x1f, 0xc5, 0x6d, 0x3d, 0x40, 0x23, 0x34, + 0xe9, 0xcd, 0x5f, 0xd2, 0x7b, 0x7e, 0x12, 0x3d, 0x79, 0x6c, 0x73, 0x57, 0x58, 0x46, 0x59, 0x58, + 0xf8, 0x94, 0x39, 0x7f, 0xac, 0xe3, 0xaf, 0xf8, 0xd9, 0xcd, 0x4f, 0xbf, 0x13, 0x4a, 0x9b, 0x1c, + 0x77, 0x84, 0x86, 0x58, 0x0d, 0xd0, 0xe8, 0xc1, 0xa4, 0x37, 0x7f, 0x4b, 0xef, 0x7e, 0x20, 0x7a, + 0x53, 0x6a, 0x77, 0xcb, 0xc2, 0xea, 0x2c, 0x2a, 0xa5, 0xd3, 0x98, 0xc7, 0x2e, 0x7e, 0xfc, 0x81, + 0xbb, 0x11, 0x2c, 0x53, 0x2d, 0x64, 0xa2, 0x4c, 0x07, 0xf7, 0x45, 0xe2, 0x45, 0xb9, 0x0f, 0x0d, + 0x5a, 0x9f, 0xdd, 0xb5, 0x5f, 0xb4, 0x47, 0xf4, 0x17, 0xe7, 0xc3, 0x5f, 0x85, 0xf5, 0xe4, 0x22, + 0x58, 0xc9, 0x48, 0x78, 0x5b, 0xe7, 0x52, 0x61, 0x4f, 0x77, 0x47, 0x62, 0xec, 0x8f, 0xc4, 0x38, + 0x1c, 0x89, 0xf1, 0xad, 0x24, 0x68, 0x57, 0x12, 0xb4, 0x2f, 0x09, 0x3a, 0x94, 0x04, 0xfd, 0x28, + 0x09, 0xfa, 0xfe, 0x93, 0x18, 0x1f, 0x1f, 0xb6, 0xab, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xf3, + 0xe1, 0xde, 0x86, 0xdb, 0x02, 0x00, 0x00, } diff --git a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto index 472902ad36..83be997904 100644 --- a/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto @@ -24,7 +24,6 @@ package k8s.io.apimachinery.pkg.apis.meta.v1beta1; import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/generated.proto"; import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1beta1"; diff --git a/vendor/k8s.io/apimachinery/pkg/labels/selector.go b/vendor/k8s.io/apimachinery/pkg/labels/selector.go index b301b42840..374d2ef137 100644 --- a/vendor/k8s.io/apimachinery/pkg/labels/selector.go +++ b/vendor/k8s.io/apimachinery/pkg/labels/selector.go @@ -166,7 +166,6 @@ func NewRequirement(key string, op selection.Operator, vals []string) (*Requirem return nil, err } } - sort.Strings(vals) return &Requirement{key: key, operator: op, strValues: vals}, nil } @@ -299,7 +298,9 @@ func (r *Requirement) String() string { if len(r.strValues) == 1 { buffer.WriteString(r.strValues[0]) } else { // only > 1 since == 0 prohibited by NewRequirement - buffer.WriteString(strings.Join(r.strValues, ",")) + // normalizes value order on output, without mutating the in-memory selector representation + // also avoids normalization when it is not required, and ensures we do not mutate shared data + buffer.WriteString(strings.Join(safeSort(r.strValues), ",")) } switch r.operator { @@ -309,6 +310,17 @@ func (r *Requirement) String() string { return buffer.String() } +// safeSort sort input strings without modification +func safeSort(in []string) []string { + if sort.StringsAreSorted(in) { + return in + } + out := make([]string, len(in)) + copy(out, in) + sort.Strings(out) + return out +} + // Add adds requirements to the selector. It copies the current selector returning a new one func (lsel internalSelector) Add(reqs ...Requirement) Selector { var sel internalSelector diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go index 9bcbd72264..967e0f530a 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/generated.pb.go @@ -744,30 +744,29 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 395 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0x4f, 0x6f, 0xd3, 0x30, - 0x18, 0xc6, 0xe3, 0xb5, 0x52, 0x87, 0x5b, 0x69, 0xc8, 0x1c, 0x08, 0x3b, 0x38, 0x53, 0x4f, 0xec, - 0x30, 0x5b, 0x1a, 0x42, 0xe2, 0xba, 0x4c, 0x93, 0x40, 0x08, 0x09, 0x59, 0xfc, 0x91, 0x38, 0xe1, - 0x26, 0x26, 0xb3, 0x42, 0x5f, 0x47, 0x8e, 0x43, 0xd8, 0x8d, 0x8f, 0xc0, 0xc7, 0xea, 0x71, 0xc7, - 0x9e, 0x2a, 0x1a, 0x3e, 0x04, 0x57, 0x54, 0xd7, 0x2d, 0xa5, 0x08, 0xed, 0x16, 0xbf, 0xcf, 0xf3, - 0x7b, 0xde, 0xe7, 0x0d, 0x7e, 0x5e, 0x3e, 0xab, 0x99, 0x36, 0xbc, 0x6c, 0x26, 0xca, 0x82, 0x72, - 0xaa, 0xe6, 0x5f, 0x14, 0xe4, 0xc6, 0xf2, 0x20, 0xc8, 0x4a, 0x4f, 0x65, 0x76, 0xad, 0x41, 0xd9, - 0x1b, 0x5e, 0x95, 0x05, 0xb7, 0x0d, 0x38, 0x3d, 0x55, 0xbc, 0x50, 0xa0, 0xac, 0x74, 0x2a, 0x67, - 0x95, 0x35, 0xce, 0x90, 0x64, 0x0d, 0xb0, 0x5d, 0x80, 0x55, 0x65, 0xc1, 0x02, 0x70, 0x7c, 0x56, - 0x68, 0x77, 0xdd, 0x4c, 0x58, 0x66, 0xa6, 0xbc, 0x30, 0x85, 0xe1, 0x9e, 0x9b, 0x34, 0x9f, 0xfc, - 0xcb, 0x3f, 0xfc, 0xd7, 0x3a, 0xef, 0xf8, 0xc9, 0xff, 0x0a, 0x34, 0x4e, 0x7f, 0xe6, 0x1a, 0x5c, - 0xed, 0xec, 0x7e, 0x89, 0xf1, 0x29, 0x1e, 0x09, 0xd9, 0x5e, 0x7d, 0x75, 0x0a, 0x6a, 0x6d, 0x80, - 0x3c, 0xc2, 0x3d, 0x2b, 0xdb, 0x18, 0x9d, 0xa0, 0xc7, 0xa3, 0x74, 0xd0, 0x2d, 0x92, 0x9e, 0x90, - 0xad, 0x58, 0xcd, 0xc6, 0x1f, 0xf1, 0xe1, 0x9b, 0x9b, 0x4a, 0xbd, 0x52, 0x4e, 0x92, 0x73, 0x8c, - 0x65, 0xa5, 0xdf, 0x29, 0xbb, 0x82, 0xbc, 0xfb, 0x5e, 0x4a, 0x66, 0x8b, 0x24, 0xea, 0x16, 0x09, - 0xbe, 0x78, 0xfd, 0x22, 0x28, 0x62, 0xc7, 0x45, 0x4e, 0x70, 0xbf, 0xd4, 0x90, 0xc7, 0x07, 0xde, - 0x3d, 0x0a, 0xee, 0xfe, 0x4b, 0x0d, 0xb9, 0xf0, 0xca, 0xf8, 0x17, 0xc2, 0x83, 0xb7, 0x50, 0x82, - 0x69, 0x81, 0xbc, 0xc7, 0x87, 0x2e, 0x6c, 0xf3, 0xf9, 0xc3, 0xf3, 0x53, 0x76, 0xc7, 0x0f, 0x63, - 0x9b, 0x7a, 0xe9, 0xfd, 0x10, 0xbe, 0x2d, 0x2c, 0xb6, 0x61, 0x9b, 0x0b, 0x0f, 0xfe, 0xbd, 0x90, - 0x5c, 0xe0, 0xa3, 0xcc, 0x80, 0x53, 0xe0, 0xae, 0x20, 0x33, 0xb9, 0x86, 0x22, 0xee, 0xf9, 0xb2, - 0x0f, 0x43, 0xde, 0xd1, 0xe5, 0xdf, 0xb2, 0xd8, 0xf7, 0x93, 0xa7, 0x78, 0x18, 0x46, 0xab, 0xd5, - 0x71, 0xdf, 0xe3, 0x0f, 0x02, 0x3e, 0xbc, 0xfc, 0x23, 0x89, 0x5d, 0x5f, 0x7a, 0x36, 0x5b, 0xd2, - 0xe8, 0x76, 0x49, 0xa3, 0xf9, 0x92, 0x46, 0xdf, 0x3a, 0x8a, 0x66, 0x1d, 0x45, 0xb7, 0x1d, 0x45, - 0xf3, 0x8e, 0xa2, 0x1f, 0x1d, 0x45, 0xdf, 0x7f, 0xd2, 0xe8, 0xc3, 0x20, 0x1c, 0xfa, 0x3b, 0x00, - 0x00, 0xff, 0xff, 0x3f, 0x1e, 0x24, 0x09, 0x85, 0x02, 0x00, 0x00, + // 378 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x8f, 0x4f, 0xab, 0x13, 0x31, + 0x14, 0xc5, 0x27, 0xaf, 0x85, 0x3e, 0xd3, 0xc2, 0x93, 0xb8, 0x70, 0x74, 0x91, 0x79, 0x74, 0xe5, + 0x5b, 0xbc, 0x04, 0x1e, 0x08, 0x6e, 0x3b, 0xa5, 0xa0, 0x88, 0x20, 0xc1, 0x3f, 0xe0, 0xca, 0x74, + 0x26, 0x4e, 0xc3, 0xd0, 0x9b, 0x21, 0xcd, 0x38, 0x76, 0xe7, 0x47, 0xf0, 0x63, 0x75, 0xd9, 0x65, + 0x57, 0xc5, 0x8e, 0x1f, 0xc2, 0xad, 0x34, 0x4d, 0x6b, 0xd5, 0x85, 0xbb, 0xe4, 0x9e, 0xf3, 0x3b, + 0xf7, 0x1e, 0xfc, 0xbc, 0x7c, 0xb6, 0x60, 0xda, 0xf0, 0xb2, 0x9e, 0x2a, 0x0b, 0xca, 0xa9, 0x05, + 0xff, 0xac, 0x20, 0x37, 0x96, 0x07, 0x41, 0x56, 0x7a, 0x2e, 0xb3, 0x99, 0x06, 0x65, 0x97, 0xbc, + 0x2a, 0x0b, 0x6e, 0x6b, 0x70, 0x7a, 0xae, 0x78, 0xa1, 0x40, 0x59, 0xe9, 0x54, 0xce, 0x2a, 0x6b, + 0x9c, 0x21, 0xc9, 0x01, 0x60, 0xe7, 0x00, 0xab, 0xca, 0x82, 0x05, 0xe0, 0xf1, 0x6d, 0xa1, 0xdd, + 0xac, 0x9e, 0xb2, 0xcc, 0xcc, 0x79, 0x61, 0x0a, 0xc3, 0x3d, 0x37, 0xad, 0x3f, 0xf9, 0x9f, 0xff, + 0xf8, 0xd7, 0x21, 0x6f, 0x78, 0x83, 0x07, 0x42, 0x36, 0x93, 0x2f, 0x4e, 0xc1, 0x42, 0x1b, 0x20, + 0x8f, 0x70, 0xc7, 0xca, 0x26, 0x46, 0xd7, 0xe8, 0xc9, 0x20, 0xed, 0xb5, 0xdb, 0xa4, 0x23, 0x64, + 0x23, 0xf6, 0xb3, 0xe1, 0x47, 0x7c, 0xf9, 0x66, 0x59, 0xa9, 0x57, 0xca, 0x49, 0x72, 0x87, 0xb1, + 0xac, 0xf4, 0x3b, 0x65, 0xf7, 0x90, 0x77, 0xdf, 0x4b, 0xc9, 0x6a, 0x9b, 0x44, 0xed, 0x36, 0xc1, + 0xa3, 0xd7, 0x2f, 0x82, 0x22, 0xce, 0x5c, 0xe4, 0x1a, 0x77, 0x4b, 0x0d, 0x79, 0x7c, 0xe1, 0xdd, + 0x83, 0xe0, 0xee, 0xbe, 0xd4, 0x90, 0x0b, 0xaf, 0x0c, 0x7f, 0x22, 0xdc, 0x7b, 0x0b, 0x25, 0x98, + 0x06, 0xc8, 0x7b, 0x7c, 0xe9, 0xc2, 0x36, 0x9f, 0xdf, 0xbf, 0xbb, 0x61, 0xff, 0xe9, 0xce, 0x8e, + 0xe7, 0xa5, 0xf7, 0x43, 0xf8, 0xe9, 0x60, 0x71, 0x0a, 0x3b, 0x36, 0xbc, 0xf8, 0xb7, 0x21, 0x19, + 0xe1, 0xab, 0xcc, 0x80, 0x53, 0xe0, 0x26, 0x90, 0x99, 0x5c, 0x43, 0x11, 0x77, 0xfc, 0xb1, 0x0f, + 0x43, 0xde, 0xd5, 0xf8, 0x4f, 0x59, 0xfc, 0xed, 0x27, 0x4f, 0x71, 0x3f, 0x8c, 0xf6, 0xab, 0xe3, + 0xae, 0xc7, 0x1f, 0x04, 0xbc, 0x3f, 0xfe, 0x2d, 0x89, 0x73, 0x5f, 0x7a, 0xbb, 0xda, 0xd1, 0x68, + 0xbd, 0xa3, 0xd1, 0x66, 0x47, 0xa3, 0xaf, 0x2d, 0x45, 0xab, 0x96, 0xa2, 0x75, 0x4b, 0xd1, 0xa6, + 0xa5, 0xe8, 0x7b, 0x4b, 0xd1, 0xb7, 0x1f, 0x34, 0xfa, 0xd0, 0x0b, 0x45, 0x7f, 0x05, 0x00, 0x00, + 0xff, 0xff, 0xe3, 0x33, 0x18, 0x0b, 0x50, 0x02, 0x00, 0x00, } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto b/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto index 2ff3839159..fb61ac96a9 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto @@ -21,8 +21,6 @@ syntax = 'proto2'; package k8s.io.apimachinery.pkg.runtime; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; - // Package-wide variables from generator "generated". option go_package = "runtime"; diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go index 46c8536611..5c9934c739 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.pb.go @@ -19,12 +19,12 @@ limitations under the License. // DO NOT EDIT! /* - Package schema is a generated protocol buffer package. +Package schema is a generated protocol buffer package. - It is generated from these files: - k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto +It is generated from these files: + k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto - It has these top-level messages: +It has these top-level messages: */ package schema @@ -48,18 +48,17 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 202 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0xce, 0xaf, 0x4e, 0x04, 0x31, - 0x10, 0xc7, 0xf1, 0xd6, 0x20, 0x90, 0xc8, 0x13, 0x23, 0x51, 0xd0, 0x11, 0x18, 0x34, 0x2f, 0x80, - 0xc7, 0x75, 0xf7, 0x86, 0x6e, 0x53, 0xfa, 0x27, 0xed, 0x94, 0x04, 0xc7, 0x23, 0xf0, 0x58, 0x27, - 0x4f, 0xae, 0x64, 0xcb, 0x8b, 0x90, 0xb4, 0x2b, 0x08, 0xc9, 0xb9, 0xfe, 0xd2, 0x7c, 0x26, 0xdf, - 0xeb, 0x67, 0xf7, 0x58, 0x94, 0x8d, 0xe8, 0xea, 0x44, 0x39, 0x10, 0x53, 0xc1, 0x77, 0x0a, 0xc7, - 0x98, 0x71, 0xff, 0xd0, 0xc9, 0x7a, 0x3d, 0x2f, 0x36, 0x50, 0xfe, 0xc0, 0xe4, 0x0c, 0xe6, 0x1a, - 0xd8, 0x7a, 0xc2, 0x32, 0x2f, 0xe4, 0x35, 0x1a, 0x0a, 0x94, 0x35, 0xd3, 0x51, 0xa5, 0x1c, 0x39, - 0xde, 0xdc, 0x0e, 0xa7, 0xfe, 0x3a, 0x95, 0x9c, 0x51, 0xbb, 0x53, 0xc3, 0x1d, 0xee, 0x8d, 0xe5, - 0xa5, 0x4e, 0x6a, 0x8e, 0x1e, 0x4d, 0x34, 0x11, 0x3b, 0x9f, 0xea, 0x6b, 0x5f, 0x7d, 0xf4, 0xd7, - 0x38, 0x7b, 0x78, 0xb8, 0x94, 0x53, 0xd9, 0xbe, 0xa1, 0x0d, 0x5c, 0x38, 0xff, 0x6f, 0x79, 0xba, - 0x3b, 0x6d, 0x20, 0xce, 0x1b, 0x88, 0x75, 0x03, 0xf1, 0xd9, 0x40, 0x9e, 0x1a, 0xc8, 0x73, 0x03, - 0xb9, 0x36, 0x90, 0xdf, 0x0d, 0xe4, 0xd7, 0x0f, 0x88, 0x97, 0xab, 0x51, 0xf4, 0x1b, 0x00, 0x00, - 0xff, 0xff, 0xfd, 0x59, 0x57, 0x93, 0x0b, 0x01, 0x00, 0x00, + // 185 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0xcc, 0xaf, 0x6e, 0xc3, 0x30, + 0x10, 0xc7, 0x71, 0x9b, 0x0c, 0x0c, 0x0e, 0x0e, 0x1c, 0x1c, 0xda, 0x7c, 0x74, 0xb8, 0x2f, 0x50, + 0x5e, 0xe6, 0x24, 0x57, 0xc7, 0xb2, 0xfc, 0x47, 0x8e, 0x5d, 0xa9, 0xac, 0x8f, 0xd0, 0xc7, 0x0a, + 0x0c, 0x0c, 0x6c, 0xdc, 0x17, 0xa9, 0x64, 0x07, 0x94, 0xdd, 0x4f, 0xa7, 0xcf, 0xf7, 0xf3, 0x68, + 0xfe, 0x27, 0xa1, 0x3d, 0x9a, 0xdc, 0x51, 0x74, 0x94, 0x68, 0xc2, 0x0b, 0xb9, 0xc1, 0x47, 0xdc, + 0x1f, 0x32, 0x68, 0x2b, 0xfb, 0x51, 0x3b, 0x8a, 0x57, 0x0c, 0x46, 0x61, 0xcc, 0x2e, 0x69, 0x4b, + 0x38, 0xf5, 0x23, 0x59, 0x89, 0x8a, 0x1c, 0x45, 0x99, 0x68, 0x10, 0x21, 0xfa, 0xe4, 0xbf, 0x7e, + 0x9a, 0x13, 0xef, 0x4e, 0x04, 0xa3, 0xc4, 0xee, 0x44, 0x73, 0xdf, 0x7f, 0x4a, 0xa7, 0x31, 0x77, + 0xa2, 0xf7, 0x16, 0x95, 0x57, 0x1e, 0x2b, 0xef, 0xf2, 0xb9, 0xae, 0x3a, 0xea, 0xd5, 0xb2, 0x87, + 0xdf, 0x79, 0x03, 0xb6, 0x6c, 0xc0, 0xd6, 0x0d, 0xd8, 0xad, 0x00, 0x9f, 0x0b, 0xf0, 0xa5, 0x00, + 0x5f, 0x0b, 0xf0, 0x47, 0x01, 0x7e, 0x7f, 0x02, 0x3b, 0x7d, 0xb4, 0xf8, 0x2b, 0x00, 0x00, 0xff, + 0xff, 0xba, 0x7e, 0x65, 0xf4, 0xd6, 0x00, 0x00, 0x00, } diff --git a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto index 8655f4818b..5aeeaa100a 100644 --- a/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto +++ b/vendor/k8s.io/apimachinery/pkg/runtime/schema/generated.proto @@ -21,8 +21,6 @@ syntax = 'proto2'; package k8s.io.apimachinery.pkg.runtime.schema; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; - // Package-wide variables from generator "generated". option go_package = "schema"; diff --git a/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/azure_credentials.go b/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/azure_credentials.go index 7f698beacd..256dcc7f2e 100644 --- a/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/azure_credentials.go +++ b/vendor/k8s.io/kubernetes/pkg/credentialprovider/azure/azure_credentials.go @@ -40,6 +40,8 @@ var flagConfigFile = pflag.String("azure-container-registry-config", "", const dummyRegistryEmail = "name@contoso.com" +var containerRegistryUrls = []string{"*.azurecr.io", "*.azurecr.cn", "*.azurecr.de", "*.azurecr.us"} + // init registers the various means by which credentials may // be resolved on Azure. func init() { @@ -176,31 +178,40 @@ func (a *acrProvider) Provide() credentialprovider.DockerConfig { ctx, cancel := getContextWithCancel() defer cancel() - glog.V(4).Infof("listing registries") - result, err := a.registryClient.List(ctx) - if err != nil { - glog.Errorf("Failed to list registries: %v", err) - return cfg - } - - for ix := range result { - loginServer := getLoginServer(result[ix]) - var cred *credentialprovider.DockerConfigEntry + if a.config.UseManagedIdentityExtension { + glog.V(4).Infof("listing registries") + result, err := a.registryClient.List(ctx) + if err != nil { + glog.Errorf("Failed to list registries: %v", err) + return cfg + } - if a.config.UseManagedIdentityExtension { - cred, err = getACRDockerEntryFromARMToken(a, loginServer) + for ix := range result { + loginServer := getLoginServer(result[ix]) + glog.V(2).Infof("loginServer: %s", loginServer) + cred, err := getACRDockerEntryFromARMToken(a, loginServer) if err != nil { continue } - } else { - cred = &credentialprovider.DockerConfigEntry{ + cfg[loginServer] = *cred + } + } else { + // Add our entry for each of the supported container registry URLs + for _, url := range containerRegistryUrls { + cred := &credentialprovider.DockerConfigEntry{ Username: a.config.AADClientID, Password: a.config.AADClientSecret, Email: dummyRegistryEmail, } + cfg[url] = *cred } + } - cfg[loginServer] = *cred + // add ACR anonymous repo support: use empty username and password for anonymous access + cfg["*.azurecr.*"] = credentialprovider.DockerConfigEntry{ + Username: "", + Password: "", + Email: dummyRegistryEmail, } return cfg } diff --git a/vendor/modules.txt b/vendor/modules.txt index 88f938565a..d8704fce8b 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,4 +1,4 @@ -# cloud.google.com/go v0.25.0 +# cloud.google.com/go v0.26.0 cloud.google.com/go/compute/metadata cloud.google.com/go/iam cloud.google.com/go/internal @@ -8,7 +8,7 @@ cloud.google.com/go/internal/version cloud.google.com/go/storage # github.com/Azure/azure-pipeline-go v0.2.2 github.com/Azure/azure-pipeline-go/pipeline -# github.com/Azure/azure-sdk-for-go v19.1.0+incompatible +# github.com/Azure/azure-sdk-for-go v19.1.1+incompatible github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2017-10-01/containerregistry github.com/Azure/azure-sdk-for-go/version # github.com/Azure/azure-storage-blob-go v0.8.0 @@ -16,7 +16,7 @@ github.com/Azure/azure-storage-blob-go/azblob # github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 github.com/Azure/go-ansiterm github.com/Azure/go-ansiterm/winterm -# github.com/Azure/go-autorest v10.15.0+incompatible +# github.com/Azure/go-autorest v10.15.5+incompatible github.com/Azure/go-autorest/autorest github.com/Azure/go-autorest/autorest/adal github.com/Azure/go-autorest/autorest/azure @@ -25,10 +25,9 @@ github.com/Azure/go-autorest/autorest/to github.com/Azure/go-autorest/autorest/validation github.com/Azure/go-autorest/logger github.com/Azure/go-autorest/version -# github.com/Microsoft/go-winio v0.4.9 +# github.com/Microsoft/go-winio v0.4.14 github.com/Microsoft/go-winio -# github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 -github.com/Nvveen/Gotty +github.com/Microsoft/go-winio/pkg/guid # github.com/aws/aws-sdk-go v1.25.19 github.com/aws/aws-sdk-go/aws github.com/aws/aws-sdk-go/aws/awserr @@ -73,30 +72,36 @@ github.com/aws/aws-sdk-go/service/sts github.com/aws/aws-sdk-go/service/sts/stsiface # github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 github.com/beorn7/perks/quantile -# github.com/boltdb/bolt v1.3.1 -github.com/boltdb/bolt -# github.com/containerd/containerd v1.1.2 +# github.com/containerd/containerd v1.4.0-0.20191014053712-acdcf13d5eaf => github.com/containerd/containerd v0.0.0-20191014053712-acdcf13d5eaf github.com/containerd/containerd/cio github.com/containerd/containerd/defaults +github.com/containerd/containerd/errdefs github.com/containerd/containerd/log -# github.com/containerd/continuity v0.0.0-20180712174259-0377f7d76720 +github.com/containerd/containerd/platforms +# github.com/containerd/continuity v0.0.0-20190827140505-75bee3e2ccb6 github.com/containerd/continuity/devices github.com/containerd/continuity/driver github.com/containerd/continuity/fs github.com/containerd/continuity/pathdriver github.com/containerd/continuity/syscallx github.com/containerd/continuity/sysx -# github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260 +# github.com/containerd/fifo v0.0.0-20190816180239-bda0ff6ed73c github.com/containerd/fifo -# github.com/coreos/etcd v3.3.9+incompatible +# github.com/coreos/etcd v3.3.10+incompatible github.com/coreos/etcd/raft/raftpb # github.com/dgrijalva/jwt-go v3.2.0+incompatible github.com/dgrijalva/jwt-go -# github.com/docker/distribution v2.6.0-rc.1.0.20180720172123-0dae0957e5fe+incompatible +# github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017 +github.com/docker/cli/cli/config +github.com/docker/cli/cli/config/configfile +github.com/docker/cli/cli/config/credentials +github.com/docker/cli/cli/config/types +# github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible github.com/docker/distribution github.com/docker/distribution/digestset github.com/docker/distribution/reference -# github.com/docker/docker v1.4.2-0.20180531152204-71cd53e4a197 +github.com/docker/distribution/registry/api/errcode +# github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker v0.0.0-20190319215453-e7b5f7dbe98c github.com/docker/docker/api github.com/docker/docker/api/types github.com/docker/docker/api/types/backend @@ -117,10 +122,6 @@ github.com/docker/docker/api/types/versions github.com/docker/docker/api/types/volume github.com/docker/docker/builder github.com/docker/docker/builder/dockerfile -github.com/docker/docker/builder/dockerfile/command -github.com/docker/docker/builder/dockerfile/instructions -github.com/docker/docker/builder/dockerfile/parser -github.com/docker/docker/builder/dockerfile/shell github.com/docker/docker/builder/dockerignore github.com/docker/docker/builder/fscache github.com/docker/docker/builder/remotecontext @@ -134,8 +135,8 @@ github.com/docker/docker/daemon/graphdriver github.com/docker/docker/daemon/logger github.com/docker/docker/daemon/logger/jsonfilelog github.com/docker/docker/daemon/logger/jsonfilelog/jsonlog +github.com/docker/docker/daemon/logger/local github.com/docker/docker/daemon/logger/loggerutils -github.com/docker/docker/daemon/logger/loggerutils/multireader github.com/docker/docker/daemon/logger/templates github.com/docker/docker/daemon/network github.com/docker/docker/dockerversion @@ -150,11 +151,13 @@ github.com/docker/docker/pkg/containerfs github.com/docker/docker/pkg/directory github.com/docker/docker/pkg/filenotify github.com/docker/docker/pkg/fileutils +github.com/docker/docker/pkg/homedir github.com/docker/docker/pkg/idtools github.com/docker/docker/pkg/ioutils github.com/docker/docker/pkg/jsonmessage github.com/docker/docker/pkg/longpath github.com/docker/docker/pkg/mount +github.com/docker/docker/pkg/parsers github.com/docker/docker/pkg/parsers/kernel github.com/docker/docker/pkg/plugingetter github.com/docker/docker/pkg/plugins @@ -167,6 +170,7 @@ github.com/docker/docker/pkg/signal github.com/docker/docker/pkg/streamformatter github.com/docker/docker/pkg/stringid github.com/docker/docker/pkg/symlink +github.com/docker/docker/pkg/sysinfo github.com/docker/docker/pkg/system github.com/docker/docker/pkg/tailfile github.com/docker/docker/pkg/tarsum @@ -176,9 +180,13 @@ github.com/docker/docker/pkg/urlutil github.com/docker/docker/pkg/useragent github.com/docker/docker/plugin/v2 github.com/docker/docker/restartmanager +github.com/docker/docker/runconfig github.com/docker/docker/runconfig/opts github.com/docker/docker/volume github.com/docker/docker/volume/mounts +# github.com/docker/docker-credential-helpers v0.6.3 +github.com/docker/docker-credential-helpers/client +github.com/docker/docker-credential-helpers/credentials # github.com/docker/go-connections v0.4.0 github.com/docker/go-connections/nat github.com/docker/go-connections/sockets @@ -187,7 +195,7 @@ github.com/docker/go-connections/tlsconfig github.com/docker/go-events # github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916 github.com/docker/go-metrics -# github.com/docker/go-units v0.3.3 +# github.com/docker/go-units v0.4.0 github.com/docker/go-units # github.com/docker/swarmkit v1.12.1-0.20180726190244-7567d47988d8 github.com/docker/swarmkit/agent/exec @@ -211,7 +219,7 @@ github.com/fsnotify/fsnotify github.com/genuinetools/amicontained/container # github.com/ghodss/yaml v1.0.0 github.com/ghodss/yaml -# github.com/gogo/protobuf v1.1.1 +# github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d github.com/gogo/protobuf/gogoproto github.com/gogo/protobuf/proto github.com/gogo/protobuf/protoc-gen-gogo/descriptor @@ -221,7 +229,7 @@ github.com/gogo/protobuf/types github.com/golang/glog # github.com/golang/mock v1.3.1 github.com/golang/mock/gomock -# github.com/golang/protobuf v1.1.0 +# github.com/golang/protobuf v1.3.2 github.com/golang/protobuf/proto github.com/golang/protobuf/protoc-gen-go/descriptor github.com/golang/protobuf/ptypes @@ -230,15 +238,17 @@ github.com/golang/protobuf/ptypes/duration github.com/golang/protobuf/ptypes/timestamp # github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a github.com/google/btree -# github.com/google/go-cmp v0.2.0 +# github.com/google/go-cmp v0.3.0 github.com/google/go-cmp/cmp github.com/google/go-cmp/cmp/internal/diff +github.com/google/go-cmp/cmp/internal/flags github.com/google/go-cmp/cmp/internal/function github.com/google/go-cmp/cmp/internal/value -# github.com/google/go-containerregistry v0.0.0-20190820205713-31e00cede111 +# github.com/google/go-containerregistry v0.0.0-20191218175032-34fb8ff33bed github.com/google/go-containerregistry/pkg/authn github.com/google/go-containerregistry/pkg/authn/k8schain github.com/google/go-containerregistry/pkg/internal/retry +github.com/google/go-containerregistry/pkg/internal/retry/wait github.com/google/go-containerregistry/pkg/logs github.com/google/go-containerregistry/pkg/name github.com/google/go-containerregistry/pkg/v1 @@ -259,11 +269,11 @@ github.com/google/go-containerregistry/pkg/v1/validate github.com/google/go-github/github # github.com/google/go-querystring v1.0.0 github.com/google/go-querystring/query -# github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf +# github.com/google/gofuzz v1.0.0 github.com/google/gofuzz # github.com/googleapis/gax-go v2.0.0+incompatible github.com/googleapis/gax-go -# github.com/googleapis/gnostic v0.2.0 +# github.com/googleapis/gnostic v0.2.2 github.com/googleapis/gnostic/OpenAPIv2 github.com/googleapis/gnostic/compiler github.com/googleapis/gnostic/extensions @@ -272,11 +282,11 @@ github.com/gregjones/httpcache github.com/gregjones/httpcache/diskcache # github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc -# github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa +# github.com/hashicorp/go-immutable-radix v1.0.0 github.com/hashicorp/go-immutable-radix # github.com/hashicorp/go-memdb v0.0.0-20180223233045-1289e7fffe71 github.com/hashicorp/go-memdb -# github.com/hashicorp/golang-lru v0.0.0-20180201235237-0fb14efe8c47 +# github.com/hashicorp/golang-lru v0.5.0 github.com/hashicorp/golang-lru/simplelru # github.com/inconshreveable/mousetrap v1.0.0 github.com/inconshreveable/mousetrap @@ -284,13 +294,13 @@ github.com/inconshreveable/mousetrap github.com/jbenet/go-context/io # github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af github.com/jmespath/go-jmespath -# github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be +# github.com/json-iterator/go v1.1.8 github.com/json-iterator/go # github.com/karrick/godirwalk v1.7.7 github.com/karrick/godirwalk # github.com/kevinburke/ssh_config v0.0.0-20180830205328-81db2a75821e github.com/kevinburke/ssh_config -# github.com/konsorten/go-windows-terminal-sequences v1.0.1 +# github.com/konsorten/go-windows-terminal-sequences v1.0.2 github.com/konsorten/go-windows-terminal-sequences # github.com/mattn/go-ieproxy v0.0.0-20190805055040-f9202b1cfdeb github.com/mattn/go-ieproxy @@ -300,9 +310,9 @@ github.com/mattn/go-shellwords github.com/matttproud/golang_protobuf_extensions/pbutil # github.com/minio/highwayhash v1.0.0 github.com/minio/highwayhash -# github.com/mitchellh/go-homedir v1.0.0 +# github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/go-homedir -# github.com/moby/buildkit v0.0.0-20180731175856-e57eed420c75 +# github.com/moby/buildkit v0.0.0-20191111154543-00bfbab0390c github.com/moby/buildkit/frontend/dockerfile/command github.com/moby/buildkit/frontend/dockerfile/instructions github.com/moby/buildkit/frontend/dockerfile/parser @@ -312,14 +322,17 @@ github.com/moby/buildkit/session github.com/moby/buildkit/session/filesync # github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd github.com/modern-go/concurrent -# github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 +# github.com/modern-go/reflect2 v1.0.1 github.com/modern-go/reflect2 +# github.com/morikuni/aec v1.0.0 +github.com/morikuni/aec # github.com/opencontainers/go-digest v1.0.0-rc1 github.com/opencontainers/go-digest # github.com/opencontainers/image-spec v1.0.1 github.com/opencontainers/image-spec/specs-go github.com/opencontainers/image-spec/specs-go/v1 -# github.com/opencontainers/runc v1.0.0-rc5 +# github.com/opencontainers/runc v1.0.0-rc8.0.20190621203724-f4982d86f7fd +github.com/opencontainers/runc/libcontainer/cgroups github.com/opencontainers/runc/libcontainer/configs github.com/opencontainers/runc/libcontainer/devices github.com/opencontainers/runc/libcontainer/system @@ -339,7 +352,7 @@ github.com/otiai10/copy github.com/pelletier/go-buffruneio # github.com/peterbourgon/diskv v2.0.1+incompatible github.com/peterbourgon/diskv -# github.com/pkg/errors v0.8.0 +# github.com/pkg/errors v0.8.1 github.com/pkg/errors # github.com/prometheus/client_golang v0.9.0-pre1.0.20180210140205-a40133b69fbd github.com/prometheus/client_golang/prometheus @@ -350,11 +363,9 @@ github.com/prometheus/client_model/go github.com/prometheus/common/expfmt github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg github.com/prometheus/common/model -# github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273 +# github.com/prometheus/procfs v0.0.3 github.com/prometheus/procfs -github.com/prometheus/procfs/internal/util -github.com/prometheus/procfs/nfs -github.com/prometheus/procfs/xfs +github.com/prometheus/procfs/internal/fs # github.com/sergi/go-diff v1.0.0 github.com/sergi/go-diff/diffmatchpatch # github.com/sirupsen/logrus v1.4.2 @@ -362,25 +373,28 @@ github.com/sirupsen/logrus # github.com/spf13/afero v1.2.1 github.com/spf13/afero github.com/spf13/afero/mem -# github.com/spf13/cobra v0.0.3 +# github.com/spf13/cobra v0.0.5 github.com/spf13/cobra -# github.com/spf13/pflag v1.0.1 +# github.com/spf13/pflag v1.0.5 github.com/spf13/pflag # github.com/src-d/gcfg v1.3.0 github.com/src-d/gcfg github.com/src-d/gcfg/scanner github.com/src-d/gcfg/token github.com/src-d/gcfg/types -# github.com/syndtr/gocapability v0.0.0-20180223013746-33e07d32887e +# github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2 github.com/syndtr/gocapability/capability -# github.com/tonistiigi/fsutil v0.0.0-20180725061210-b19464cd1b6a +# github.com/tonistiigi/fsutil v0.0.0-20191018213012-0f039a052ca1 github.com/tonistiigi/fsutil +github.com/tonistiigi/fsutil/types # github.com/vbatts/tar-split v0.10.2 github.com/vbatts/tar-split/archive/tar github.com/vbatts/tar-split/tar/asm github.com/vbatts/tar-split/tar/storage # github.com/xanzy/ssh-agent v0.2.0 github.com/xanzy/ssh-agent +# go.etcd.io/bbolt v1.3.3 +go.etcd.io/bbolt # go.opencensus.io v0.14.0 go.opencensus.io go.opencensus.io/exporter/stackdriver/propagation @@ -395,7 +409,7 @@ go.opencensus.io/tag go.opencensus.io/trace go.opencensus.io/trace/internal go.opencensus.io/trace/propagation -# golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 +# golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 golang.org/x/crypto/cast5 golang.org/x/crypto/curve25519 golang.org/x/crypto/ed25519 @@ -415,7 +429,7 @@ golang.org/x/crypto/ssh golang.org/x/crypto/ssh/agent golang.org/x/crypto/ssh/knownhosts golang.org/x/crypto/ssh/terminal -# golang.org/x/net v0.0.0-20190311183353-d8887717615a +# golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 golang.org/x/net/context golang.org/x/net/context/ctxhttp golang.org/x/net/http/httpguts @@ -427,7 +441,7 @@ golang.org/x/net/internal/socks golang.org/x/net/internal/timeseries golang.org/x/net/proxy golang.org/x/net/trace -# golang.org/x/oauth2 v0.0.0-20180724155351-3d292e4d0cdc +# golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be golang.org/x/oauth2 golang.org/x/oauth2/google golang.org/x/oauth2/internal @@ -437,12 +451,12 @@ golang.org/x/oauth2/jwt golang.org/x/sync/errgroup golang.org/x/sync/singleflight golang.org/x/sync/syncmap -# golang.org/x/sys v0.0.0-20190422165155-953cdadca894 +# golang.org/x/sys v0.0.0-20191010194322-b09406accb47 golang.org/x/sys/cpu golang.org/x/sys/unix golang.org/x/sys/windows golang.org/x/sys/windows/registry -# golang.org/x/text v0.3.0 +# golang.org/x/text v0.3.2 golang.org/x/text/secure/bidirule golang.org/x/text/transform golang.org/x/text/unicode/bidi @@ -470,26 +484,36 @@ google.golang.org/appengine/internal/modules google.golang.org/appengine/internal/remote_api google.golang.org/appengine/internal/urlfetch google.golang.org/appengine/urlfetch -# google.golang.org/genproto v0.0.0-20180731170733-daca94659cb5 +# google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 google.golang.org/genproto/googleapis/api/annotations google.golang.org/genproto/googleapis/iam/v1 google.golang.org/genproto/googleapis/rpc/code google.golang.org/genproto/googleapis/rpc/status -# google.golang.org/grpc v1.2.1-0.20180320012744-8124abf74e76 +# google.golang.org/grpc v1.24.0 google.golang.org/grpc google.golang.org/grpc/balancer google.golang.org/grpc/balancer/base google.golang.org/grpc/balancer/roundrobin +google.golang.org/grpc/binarylog/grpc_binarylog_v1 google.golang.org/grpc/codes google.golang.org/grpc/connectivity google.golang.org/grpc/credentials +google.golang.org/grpc/credentials/internal google.golang.org/grpc/encoding google.golang.org/grpc/encoding/proto -google.golang.org/grpc/grpclb/grpc_lb_v1/messages google.golang.org/grpc/grpclog google.golang.org/grpc/health google.golang.org/grpc/health/grpc_health_v1 google.golang.org/grpc/internal +google.golang.org/grpc/internal/backoff +google.golang.org/grpc/internal/balancerload +google.golang.org/grpc/internal/binarylog +google.golang.org/grpc/internal/channelz +google.golang.org/grpc/internal/envconfig +google.golang.org/grpc/internal/grpcrand +google.golang.org/grpc/internal/grpcsync +google.golang.org/grpc/internal/syscall +google.golang.org/grpc/internal/transport google.golang.org/grpc/keepalive google.golang.org/grpc/metadata google.golang.org/grpc/naming @@ -497,10 +521,10 @@ google.golang.org/grpc/peer google.golang.org/grpc/resolver google.golang.org/grpc/resolver/dns google.golang.org/grpc/resolver/passthrough +google.golang.org/grpc/serviceconfig google.golang.org/grpc/stats google.golang.org/grpc/status google.golang.org/grpc/tap -google.golang.org/grpc/transport # gopkg.in/inf.v0 v0.9.1 gopkg.in/inf.v0 # gopkg.in/src-d/go-billy.v4 v4.2.0 @@ -552,9 +576,9 @@ gopkg.in/src-d/go-git.v4/utils/merkletrie/internal/frame gopkg.in/src-d/go-git.v4/utils/merkletrie/noder # gopkg.in/warnings.v0 v0.1.2 gopkg.in/warnings.v0 -# gopkg.in/yaml.v2 v2.2.2 +# gopkg.in/yaml.v2 v2.2.4 gopkg.in/yaml.v2 -# k8s.io/api v0.0.0-20180711052118-183f3326a935 +# k8s.io/api v0.0.0-20180904230853-4e7be11eab3f k8s.io/api/admissionregistration/v1alpha1 k8s.io/api/admissionregistration/v1beta1 k8s.io/api/apps/v1 @@ -584,7 +608,7 @@ k8s.io/api/settings/v1alpha1 k8s.io/api/storage/v1 k8s.io/api/storage/v1alpha1 k8s.io/api/storage/v1beta1 -# k8s.io/apimachinery v0.0.0-20180621070125-103fd098999d +# k8s.io/apimachinery v0.0.0-20180904193909-def12e63c512 k8s.io/apimachinery/pkg/api/errors k8s.io/apimachinery/pkg/api/meta k8s.io/apimachinery/pkg/api/resource @@ -668,7 +692,7 @@ k8s.io/client-go/util/cert k8s.io/client-go/util/connrotation k8s.io/client-go/util/flowcontrol k8s.io/client-go/util/integer -# k8s.io/kubernetes v1.11.1 +# k8s.io/kubernetes v1.11.10 k8s.io/kubernetes/pkg/cloudprovider/providers/azure/auth k8s.io/kubernetes/pkg/credentialprovider k8s.io/kubernetes/pkg/credentialprovider/aws